計量經濟學

Python vs R(vs Stata):重溫舊戰

  • January 20, 2022

我是一個狂熱的 Python 使用者。我知道Stata,但我不是專業人士。我不知道 R。我做計量經濟學(主要是時間序列,但也有橫截面和麵板)和統計數據,Python 似乎足以滿足我的需求。

我知道經濟學家(至少是老學生)主要使用 Stata,而統計學家主要使用 R。

我在這里和那裡讀到 1)R 的庫優於 Python 的,2)在視覺化方面,沒有什麼能比 R 的 ggplot 更好。

我的問題是:

a) 哪些經濟計量/統計分析的例子可以在 R 中輕鬆完成,但在 Python 中卻不能(那麼容易或根本沒有)?

b) R 中的視覺化真的優於 Python 嗎?在什麼意義上:更少的編碼、易於編碼、更直覺,還是最終輸出的質量?

c) 在這個比較中,你會將 Stata 放在哪裡?

我使用所有三個程序。

Python 能做 R 能做的一切,R 也能做 Python 能做的一切,但我必須說 R 在包方面優於 Python。出於這個原因,對於大多數計量經濟分析,我通常預設使用 R。我發現使用 R 生成漂亮的標準統計圖形也更容易(但對於地圖,我更喜歡 Python)。

然而,Python 在網路抓取、數值分析和情感文本分析方面要優越得多(儘管 R 也有一些很好的包)。此外,當我需要設置自己的程序時,我更喜歡使用 Python,因為在 Python 中程式比在 R 中更自然(如果這有意義的話),除非程序可以從各種包中的現成函式輕鬆建構。

我總是建議我周圍的人同時學習 Python 和 R——它們之間的區別並沒有那麼大,並且使用 R,您實際上不需要大量投資於程式技能,而只是基礎知識,然後使用包。

此外,可以同時容納 R 和 Python 的 Jupyter Notebook 使兩者的使用更加容易。

談到 Stata,我僅將其用於教育目的(我在大學教授計量經濟學教程)。老實說,我不喜歡 stata 有幾個原因:

  1. Stata 不是免費軟體,我認為價格標籤不合理,因為與 R 和 Python 等免費軟體程序相比,它是劣質產品。如果您可以從 uni 免費獲得它,那麼您可能不在乎這一點,但仍然需要牢記這一點。
  2. Stata 是一個程序而不是一種語言,所以如果你想創建一個新的複雜函式,你需要單獨獲取和學習 Mata(statas 程式語言)。
  3. 即使在最昂貴的版本中,Stata 對矩陣 6 也有一些嚴重的限制,最大矩陣大小為 11000,當您使用面板數據並且必須執行一些具有大量變數的迭代模型時,這是一個嚴重的限制。即使使用最昂貴的版本,您也會經常被迫對隨機子樣本執行例如面板 LR 異變異數性檢驗。
  4. 在 Stata 中創建漂亮的圖形幾乎是不可能的 - 現在不要誤會我的意思,您可以在 Stata 中製作一些不錯的圖形,但與您可以使用 Python 或 R 做的相比,它相形見絀。
  5. Stata 在時間序列分析方面很笨拙。如果您正在尋找易於使用的時間序列分析程序,那就是 EViews。例如,如果您有以日期格式表示的季度,Stata 無法處理,它會認為您的時間序列中有間隙,並且在您創建新的時間序列變數之前不會讓您執行基本的時間序列命令。此外,時間序列模型的報價非常低,自己程式很痛苦。
  6. 雖然在 Stata 中技術上可行的網路抓取或數值分析是地獄——如果您的工作需要,請不要使用它。

但是,Stata 也有幾個優點:

  1. 它比 R 或 Python 更加使用者友好,甚至可以在不通過介面編碼的情況下使用(這就是為什麼我們將它用作學生的教程作為他們看到的第一個程序,這樣他們就不會不知所措)。
  2. 與 Python 或 R 相比,對創建虛擬變數等的數據集進行一些調整更容易,但這主要是因為在 Python 和 R 中,您可以擁有各種類型的數據、列表、數據框等。
  3. 通過購買 Stata,您可以訪問 Stata 論壇 - 這有點像堆棧交換,但他們實際上會支付專業人員在那里為您提供答案,而且通常除了支持之外,即使在計量經濟學方面,您也可以獲得非常好的建議,而且您通常會很快得到建議。

我個人不會將 Stata 用於我自己的科學工作。Python 和 R 優於 Stata 的各個方面——但它對學生來說是非常好的入門程序。

我大量使用 Stata 和 Python。我已經涉足 R,但不會假裝我對它足夠了解來評論它。Stata 和 Python 很好地互補,我是兩者的忠實粉絲。您可以在 Stata 和來自 Python 的 Stata 中執行 Python 程式碼。關鍵區別在於 Stata 是專門為數據管理和回歸而建構的,它專注於因果推理,並且它的所有命令都得到了維護。Python 可以做得更多,但如果你的重點是因果推理,它就沒有那麼好了。無論哪種方式,您都必須捲起袖子並學習該語言才能使其實用。

Python

  • 自由
  • 物件導向的語言。如果你習慣它並理解類,它會給你很大的力量。
  • 你可以用 Python 做更多的事情。我主要將它用於機器學習、GIS 操作(geopandas/folium)、建構互動式分析站點(Flask/Django)、處理 API 請求、網路抓取和使用數據庫(SQL Alchemy)。
  • 用 Python 編寫函式非常直覺。
  • 沒有圖形使用者界面。
  • 大量的網路範例和教程
  • 包的文件差異很大。
  • 您必須記住要使用的每個包的名稱。
  • 您必須擔心軟體包和版本的兼容性。該語言不向後兼容。整個環境需要完美對齊。
  • 沒有 GUI 或下拉菜單(雙刃劍)
  • 處理多個數據框、變數、列表等的能力。
  • 更好地處理多個數據框、變數、列表等。
  • 支持更多資料結構(JSON、GeoJSON 等)
  • 更適合機器學習。
  • 對於因果推理和標準錯誤不太好。公平地說,它的主要包 statsmodels 一直在迎頭趕上。但是大多數人在 Scikit learn 中學習做回歸,它甚至不會給你標準錯誤。
  • 很多視覺化包。Seaborn 令人印象深刻,但袖扣、情節等互動式視覺效果確實很流行,可以載入到任何網站。
  • 它是一種生產語言。這意味著我可以啟動安裝了 Python 的伺服器並讓它接收請求(通過網站、API)並根據需要無休止地執行作業。
  • 許多可以幫助編碼的IDE。大多數人在 Juyter Notebooks 中學習它,但如果你真的想使用 PYthon,你最終會使用 Spyder、Atom 或 VS 程式碼之類的東西。

曾是

  • 不是免費的
  • 函式式程式。它遵循語法結構。一旦你學會了關鍵動詞(命令),它就會變得非常直覺,但你必須花時間學習語言。
  • 更適合表中數據的數據管理。我讓一些本地 Python 分析師從內到外學習了 Stata,他們現在在 Stata 中進行大部分數據管理,並切換到 Python 來做 Python 最擅長的事情。
  • 它有一個圖形使用者界面。您可以使用下拉菜單查找您想要執行的操作,它會為您列印出程式碼。這是一個優點和缺點,因為它允許人們在沒有真正學習編碼的情況下使用 Stata。
  • 更好的數據瀏覽能力。
  • 它是向後兼容的。無需擔心版本、不推薦使用的命令或兩個包是否可以一起工作。
  • 無需記住和載入包。如果您鍵入命令,Stata 會載入程式碼。
  • 程式碼在 Stata 中往往更簡潔,它有很多內置的輔助函式。我用 Python 寫的任何東西,我都可以在 Stata 中寫出 1/2 到 1/3 的行。
  • 它是受支持的(相對於完全由使用者編寫的)。這意味著您擁有標準化的文件、方程式和引文。使用者編寫的語言文件可能會因包的不同而有很大差異,並且很少包含方程式和引用。但是,該文件位於程序中或隨附的一系列非常冗長(但可搜尋)的 PDF 卷中。
  • 令人驚訝的糟糕的網路文件和更少的線上教程
  • 如果您專注於因果推理並希望確保您的標準錯誤是正確的,那麼它就是事實上的語言。對於面板回歸,我嘗試過的任何東西都無法擊敗 Stata。相比之下,在 Python 中,一些最常見和流行的數據科學包 - scikit learn 和 keras - 不會產生標準錯誤,因為它們專注於預測。
  • 編寫函式(程序)不太直覺和笨拙。然而,一旦你學得好,你就可以在 Stata 中編寫非常強大的使用者編寫的命令(函式)。如果它們很好,它們通常會在 Stata Journal 上發布並最終成為基本程式碼的一部分。
  • 在處理多個數據集(數據幀)、變數和數組時,它會更加笨拙。
  • 圖形很簡單,但開箱即用的預設選項看起來非常基本。您可以編寫自己的方案來使視覺效果流行,但很少有人這樣做。
  • 非常好的自動生成 Word、PDF 和 Excel 報告的能力。
  • 機器學習尚未完全整合。具體來說,它目前缺乏集成方法(隨機森林回歸器、XGBoost)和神經網路。
  • 它不是生產語言,這意味著我無法使用 Stata 啟動伺服器並用於接收請求和生成分析/報告。如果您只在內部和組織中使用它,那很好,但如果您需要分析以與網站互動,那麼祝您好運(有解決方法,但很痛苦)。

引用自:https://economics.stackexchange.com/questions/35800