[教學] 計量軟體Stata:入門篇

因應2010年春季在台大經濟系接下的統計學助教工作,而製作了一系列計量軟體相關的教學文件,想說物盡其用,或許還有其他網路上的使用者也能透過關鍵字來取得這樣(我認為很少見的)資源,就決定分享上來了。

文件在此

(PDF格式,目前原作者還沒有中文化的意願。XD)

關於數學軟體的學習,其實我自己是有蠻多心得的。光是接觸過而有印象的就有Matlab、Maple、Gauss、EViews、SPSS、Stata、R......等等,其中又以後兩者理解較為深入。嗯,至少是深入到趕站在講台上班門弄斧的程度就是了啦。

在2009年夏季學期其實我也嘗試寫了一些R的教材,但對於大學二年級的學生來講或許還是太沉重(即便我不這麼認為!),加上誘因不足,所以成效不是很好。由於「R」是比較偏programming導向的環境,對於沒有學過程式語言的使用者來說,入門門檻確實較高。我還記得當初為了寫出生平的第一個雙迴圈而花費了整個禮拜的時間沒事就在那邊左思右想,一坐到電腦前就是試了又試,最後終於領悟的感覺真的很棒。(笑)

但這樣畢竟是比較沒有效率的。在過去學習這些數學軟體的經驗,讓我發現有一個好的教材資源可以參考對初學者而言會是一件相當幸福的事情。也是基於這樣的心情,所以才會寫下一系列關於R與Stata的教材,除了自己可以備忘之外,或許也還能幫助其他有志於此的初學者更快進入狀況,何樂而不為。

Stata與R不同的地方在於,它有GUI介面以及比較親切的指令概念。當然它真正比R強大之處在於對於龐大資料的處理速度,非常令人滿意。一般而言,對於個體經濟的計量實證問題,比起使用R我會更傾向於使用Stata的理由就在此。

本文所附教學文件是根據課程進度會不斷更新的版本,最終涵蓋範圍預計能幫助使用者解決以下問題:

  • 各種資料處理
  • 資料的敘述統計(descriptive statistics)
  • 普通最小平方法(OLS)迴歸模型
  • 線性機率迴歸模型(LPM)、Probit/Logit迴歸模型
  • 代理變數(instrument variable, IV)迴歸模型:兩階段最小平方法
  • 固定效果(individual- and time- fixed effects)迴歸模型:追蹤資料(panel data)的應用

教學文件內容主要是Stata的實作,對於方法背後的計量理論著墨不多,主要是考量到會打算使用專門計量軟體的人應該都對理論的部分有所接觸。事實是,即便是沒學過線性代數、完全不懂矩陣的語言,也不意味著你無法進行迴歸分析的實證研究。

最後還是要強調一下我個人的觀點:Microsoft Excel並不是統計軟體,更無法支撐專業計量用途,要學習使用電腦解決統計(與計量)問題的人,請忽略這套軟體。

36 comment(s):

Anonymous | 16 March, 2010 15:34

助教您好:

我是在職專班的學生,能否請教您有沒有詳細介紹stata的書,最好是中文的,如果能有一步一步解題步驟的書,那是最好的,如果您的回答是沒有,那有沒有可能您來發行一本,不然初學者完全不知怎用,還蠻沮喪與灰心的,畢竟我們要學的是將理論用在實務上,卻在一開始就被工具給打敗了,那遑論後續的學習,您覺得呢?抱歉,打擾您了

許頡益 敬上( sunny@mail.post.gov.tw )

EverDark | 16 March, 2010 22:23

目前就我所看過的,個體計量領域比較完整、同時結合理論與實作而且易讀的書就是我在講義中reference的這本《An Introduction to Modern Econometrics Using Stata》(Christopher F. Baum 2006, Stata Press.)。因為這本國內沒有代理,所以是天價,可以去圖書館借借看。

中文書的部分,老實說我還沒看過一本完整的STATA操作導向的計量教學書(這個部分「R」其實也是一樣的)。這也是為什麼我會想要自己寫講義的理由,雖然我是用英文寫,不過這純粹是因為我目前最常使用的數學文書處理軟體不支援中文輸出的關係。(倒) 我自己覺得我寫的講義是可以讓初學者快速入門、而且比目前我能用Google蒐尋到的任何免費教學資源都寫得更好的講義。←自我感覺良好!?

但是如果是因為英文的關係所以不易讀的話,也是可以考慮把它中文化啦。但是目前這份講義還沒完全完成,仍在跟隨教學進度更新,我也還沒有那個時間精力把它一點一點地翻成中文版本,雖然未來不排除有這樣的動作,可是我無法做出任何保證就是了。畢竟這個講義本身也不是授課教師要求製作的~

建議你也可以和其它同儕討論看看,應該有些人更能快速吸收這份講義、甚至是幫忙翻成中文的,這我都無所謂。開放資源。至於你提到的「有教導一步一步解題步驟」的書,我想是十分困難的。畢竟經濟計量學在實證上的應用,並不是如同一般考卷上的題目死板,一切都是隨機應變,所以從理論學到的東西究竟能夠發揮多少%到實證研究的問題,這要還是要看自己的吸收理解與融會貫通。一個捷徑是,多聽能夠啟發問題思考的教授的課,以及多讀頂級期刊的實證研究paper揣摩研究者對問題處理的模式。關於這點,我自己也還在學習摸索中。

希望以上能有些許幫助。共勉之。

雪豆 | 12 April, 2010 17:01

您好,看到您的文章很感興趣,想請教您在Stata可以放入矩陣來跑回歸嗎?
以及,在panel data資料處理的方面能否請您給我一些提點?
期待收到您的回覆,謝謝^^

EverDark | 13 April, 2010 14:21

To #3(雪豆):

不好意思,我不太懂你的「放入矩陣來跑迴歸」的意思是什麼耶。當然,STATA本身是可以用來作為矩陣運算的工具這沒有問題。事實上,我們讀入STATA的資料都可以說是以矩陣的形式存在的,所以任何regress的指令都是在利用矩陣運算迴歸結果。

關於panel data的部分,你的提問很廣泛,所以我也不太確定要提供怎麼樣程度的答案比較適合你。
一般而言在個體實證上,panel data的好處在於提供你一個處理遺漏變數問題的環境。比方說對於「不隨時間變動的遺漏變數」只要透過簡單的時間差分就能將之去除,避免估計式的偏誤與不一致。利用類似的概念我們最後可以推廣到個體固定與時間固定效果的模型估計。在這之中特別需要注意的是對於誤差項的假設,由於panel data每一個觀察個體都對應一串時間數列,時間數列通常具有自我相關(autocorrelation)之問題,所以我們會透過所謂的HAC(Heteroskedasticity-and-Autocorrelation-Consistent)估計式來建構OLS點估計的標準誤,確保它是在較合理的假設下計算而來。

關於panel data應用,Stock and Watson的《Introduction to Econometrics》第十章有深入淺出的教學,值得參考。但如果是要更深入數學理論的部分,可能要找Hayashi的書來啃會有較多的收穫。

雪豆 | 20 April, 2010 11:38

To #4(版主):

您好,謝謝您詳盡的回覆,真的讓我受益良多^^

關於「放入矩陣來跑迴歸」的部分,是我誤會我同學的意思,這一點很抱歉,請不要理我(汗)

不知可否再請教您,我在進行panel data的回歸分析時,依循下列的步驟是否正確?
1.定義panel 變數(xtset)
2.進行panel的線性回歸(xtreg y x, re or xtreg y x, fe)

另外我還有一個提問,在檢測自我相關方面可否用Stata 10中的Statistics/ Longitudinal/panel data /linear models/linear regression with AR(1) disturbance(FE,RE)來做運算,或者該下什麼指令才對?(不好意思,因為我翻了很多原文的參考書+網路參考文章還是看不懂>"<)

以上,期待收到您的回覆,謝謝^^

EverDark | 23 April, 2010 17:26

To #5(雪豆):

就我自己閱讀paper的經驗,random effect model(以下簡稱RE)通常不是很能說服讀者。它在談的是如果你的個體固定效果與既存的迴歸變數無關,則可以想像成它們不過是模型中的一個特別設定的(外生)隨機衝擊。這在個體實證領域通常無法被認為是可信的,換言之,我們總是會面臨個體效果與迴歸變數相關的情況--也就是內生性的問題(endogeniety)。

撇開上述的觀點不談,關於fixed effect model(FE)v.s. RE,標準程序是起碼要再用一個名為Hausman test的統計檢定來看看RE是不是更合理。(通常不是......)或許也可以這麼說:當我們想要用追蹤資料的目的就是為了解決內生性議題時,就很難以想像RE的採用是合理的了。

在STATA中,如果要把個體固定效果和時間固定效果都納入模型,建議的command是:

xi: areg Y X i.T, absorb(S) cluster(S)

其中Y為被解釋變數,X為解釋變數,T為時間面向的dummy,S是個體固定效果的變數,cluster()則容許自我相關,以計算HAC標準誤。這個指令的好處是將我們不關心的個體固定效果係數從regression table中直接忽略,讓結果在解讀時比較乾淨。

當然,FE還是有它的限制。如果你要研究的變數本身不隨時間改變,那麼FE就無助於幫助你解決內生性問題,因為FE背後的原理在於一個不同時間資料demean(去除平均)的動作,當欲研究變數不隨時間改變,它的效果就會跟內生性問題一同被消除!

最後,檢測自我相關這件事情我沒有特別在STATA裡面做過耶。一個最直覺的想法就是去算它的K階自我相關係數,如果是一階的話當然就是AR(1)模型的概念。但我覺得應該先問一個問題:「為什麼要檢測自我相關?」一般來說使用HAC標準誤來做統計推論就是容許自我相關,那麼似乎沒有必要特別關注自我相關的有無?(因為HAC就是"ROBUST to autocorrelation...")

Yi-fang | 26 May, 2010 11:50

您好,謝謝您如此無私給予詳盡的回覆,讓我對RE和FE的意涵有更進一步的了解。

不過,這一回我又有新的問題要提問了,希望您不要覺得我很煩(汗)

1.T-test 和Robust T-test是否有差異?在stata的處理方式是否相同?我只有找到T-test的指令以及Robust regression的指令,找不到Robust T-test的指令

2.stata可以作敏感度分析(Sensitivity analysis)嗎?我有找到一個指令叫做"metainf",但不太明白要如何操作其後的變數?

以上,期待收到您的回覆,謝謝^_^

EverDark | 26 May, 2010 15:00

To #7(Yi-fang):

不太確定你所謂的「Robust T-test」是指什麼?另外,你的T-test是指檢定兩群樣本平均數差異的檢定嗎?(我很少用所以要確認一下......)

如果是的話,因為T-test可以完全使用迴歸分析來取代,所以通常我不會去研究它的內容。我只知道STATA中的T-test指令是「ttest」,另外可以透過「equal / uneqaul」之選項來設定你對兩群樣本的變異數的假設--假設變異數相同或不相同(前者雖然沒什麼道理可言,但實證上結論跟後者往往沒有什麼差異就是了--樣本夠大的話)。

換言之,與其採用

ttest X, by(I) unequal

其中變數I是用來區隔兩樣本的indicator,我的想法是不如使用

regress X I, r

要來得乾淨俐落。



至於第二個問題,很抱歉我不知道「Sensitivity analysis」的細節。除了表皮的概念之外不曾深入研究過。所以就幫不上忙了~

Anonymous | 01 June, 2010 12:55

看了您的回帖,受益良多,谢谢!
老师能否讲讲 Dynamic panel data 的STATA 使用方法和注意事项?谢谢!

EverDark | 04 June, 2010 01:25

To #9(匿名さん):

抱歉,dynamic panel data我目前沒有操作過的經驗。
你可以去看我講義cite的《An Introduction to Modern Econometrics Using Stata》(Christopher F. Baum 2006, Stata Press.)這本書,裡面有專章介紹。

Anonymous | 03 July, 2010 19:31

你好,
有個問題想請教你.
就是如果我們跑了分量迴歸,不是會有多條迴歸式子嗎?
若只要其中一個變數的每個分量畫出一個圖形和OLS的迴歸圖形放在一起比較.
要如何下這樣的指令??

EverDark | 04 July, 2010 14:29

To #11(匿名さん):

呃,你的意思是比方說跑了一條

sqreg Y X1 X2, q(.25 .5 .75) reps(100)

之後,只取X1的三個分量估計畫出三個迴歸線和同一模型對應的OLS回歸線比較?
聽起來似乎不太可行。一般來說要畫出迴歸線都是一個二元(Y-X)的概觀而已,兩個解釋變數以上要畫X1對Y的迴歸線(條件於X2)似乎不是那麼有意義,除非你改用三元立體的圖。(可以想像三個解釋變數就完全沒輒了...)

一般來說我遇到要畫迴歸線出來都只是呈現一個single regression相關性的概觀而已。同理,要畫分量迴歸模型的「迴歸線」,應該也是在single regression的情況才有意義。所以如果是只看X1,我們可以分別畫出reg Y X1,r以及qreg Y X1, q(.25)、qreg Y X1, q(.5)、qreg Y X1, q(.75)共四張迴歸線的圖形在同一個Y-X1平面上。


...我不確定我有沒有誤會你的意思。(因為說實話我對quantile regression不熟)

Anonymous | 20 August, 2010 21:26

站長你好,
因為我現在在學stata,除了你介紹的An Introduction to Modern Econometrics Using Stata》(Christopher F. Baum 2006, Stata Press,還有沒有比較推薦的書籍?
因為學校這本書都被借光了,有點苦惱喔!
謝謝

EverDark | 21 August, 2010 19:52

To #13:

這本:

Microeconometrics Using Stata (Colin Cameron and Pravin K. Trivedi)
http://www.stata.com/news/mus.html

內容比較廣泛,涉及的理論也比較多和深。
很新的一本書。

Anonymous | 24 August, 2010 14:21

你好,我想請問有關於計量及STATA的問題:
抱歉,因為我是打在word上,可是貼上來就怪怪的

請問我要用simultaneous equations model:
Y1=α0+α1Y2+α2X1+α3X2+α4X3+ε1
Y2=β0+β1Y1+β2X1+β3X2+β4X4+ε2

where α and β are paremeters, Y1 and Y2 are endogenous variables.
如果我要以2sls來test model,如何使用stata?我的問題是在於,我參考的書籍是"Using Stata for Principles of Econometrics",書中是說stata has built in command for 2SLS estimation called "ivregress" and which is also available through the pull-down menus, Statisitics > Endogenous covariates > Single-euation instrumental-variables regression.
我的疑問是我有兩個equation為何它說是Single-euation instrumental-variables regression?
再來是開出來的window中,有dependent variable, independent variables(explanatory variables that are not endogenous variable go here),endogenous variable (explanatory variables that are endogenous variables go here), instrument variable(exogenous shift variables not in this equation go here),我不明白的是我要在各自的欄位填入甚麼??

另外我想做的是,幫兩個equation各自run equation,我可以 run regression of Y2 on all predetermined varaibles and get
Y2=θ0+θ1X1+θ2X2+θ3X3+θ4X4+ε2hat
將此式代入第一式,得到
Y1=ω0+ω1Y2hat+ω2X1+ω3X2+ω4X3+v

(hat代表estimaor,抱歉,在這裏我不會用出那個像房子屋頂的符號)
這樣的話我是否需要個子幫兩個式子回歸?

還有一個問題,我這是time series的data,
我想要用AR(1)應該如何跟這上上一起進行呢??
謝謝
PS.若是你看不懂,是否願意寄到你信箱呢??因為我是在WORD上打,貼到這裡怪怪的,我就沒有貼上來了,謝謝

EverDark | 09 September, 2010 14:36

To #15

抱歉這麼晚才回應你,希望還有時效性。

首先,我沒有在使用STATA的GUI介面功能,所以不確定它那些選單的意義是什麼。STATA對各專有名詞(endogenous or instrumental variable等)有它獨特的定義,跟一般text book上不見得吻合,這邊我沒去作確認,因為不是很重要。(除非你需要使用那個menu,就不得不搞懂它要你放哪些東西在哪裡)

你的問題我看了一下,就是Y1、Y2互為因果,而他們分別擁有X3與X4兩個外生於對方(X3外生於Y2、X4外生於Y1)的解釋變數沒錯吧?
那麼就很單純了。
看你下文的意思是要以Y2=θ0+θ1X1+θ2X2+θ3X3+θ4X4+ε2hat這條式子作為第一階段迴歸,然後跑Y1=ω0+ω1Y2hat+ω2X1+ω3X2+ω4X3+v這條作為第二階段對吧?

操作方法如下。
在STATA指令中輸入:

ivregress 2sls Y1 (Y2=X4) X1 X2 X3, r
(note:Y_和X_是你資料中實際的變數名稱,這邊僅以Y_和X_代表)

即可。

Anonymous | 23 October, 2010 22:14

您好
我現在是大學生要趕專題論文
但我們遇到瓶頸了
我想請問如何用spss跑panel data
我們的資料是有很多不同家公司及各家公司的不同時間
就是縱斷面跟橫斷面都有

我已經翻過坊間好多本書都無法解決我的問題
之前有看人發文回答說很容易只需要轉置資料就好了
但也沒回答是如何轉置的
所以想請問您是否知道該如何轉置資料
或是有其他方法可以讓spss跑panel data?
那步驟又是什麼呢?
謝謝您喔!麻煩幫我解決問題:)

EverDark | 23 October, 2010 23:27

To #17(Anonymous):

不好意思,我SPSS摸得很淺,沒用它跑過追蹤資料。
我的建議是,你們可以改用STATA!(畢竟這一篇是STATA教學。)

Anonymous | 24 October, 2010 22:31

那如果我們改用STATA該怎麼做?
可以請你講解一下過程和步驟嗎拜託!
因為學校還沒有教過這個軟體

EverDark | 06 November, 2010 20:35

To #19(Anonymous):

抱歉,我不知道你們的模型設定為何,所以無法給予指導。

Anonymous | 11 April, 2011 21:48

你好!!我是初學stata的碩士生!!我想請問
也是要用panel data
Y是WP
X有Payroll,Gini,Nop,ydummy,tdummy
我想請問隨績效果模型跟固定效果模型我要怎麼打指令呢?
F 檢定(F-test)、LM 檢定(Largange Multiplier test)以及Hausman 檢定(Hausman test),這些我又該怎麼打呢
還是你能跟我說一下信箱呢我有點急!!很對不起

Anonymous | 11 April, 2011 21:51

對不起我先給你我的信箱xtzxtzkevin@yahoo.com.tw

h1207226 | 17 May, 2011 22:29

不好意思,想請問Stata的一些問題,我有數百筆迴歸要一起跑,其自變數跟應變數都依樣,因為我要取其係數。現在指令不知道如何下手,可以麻煩板大說明一下嗎? 非常感謝您

Anonymous | 22 June, 2011 14:26

可以問一個很簡單的問題嗎 我是stata的初學者 我連基本匯入資料都不太會 我知道可以直接剪貼
但是想問 我把excel 存成 csv檔和txt檔後 我首先在stata的command裡打 cd C:\Users\kuinn\Desktop
又打insheet using s&p500 index.csv 為什麼都讀不到 一直寫invalid 'index.csv'
想請問一下 我的步驟是否有錯 還是有更簡單的方法可以直接將excel匯入資料 感激不盡

EverDark | 24 June, 2011 00:09

> #24

Excel檔先轉存成csv檔,然後使用

insheet using filename.csv

這道指令即可。
(在文中連結的講義裡第三項Data Import裡面有更多相關細節說明)

EverDark | 24 June, 2011 00:10

> #24

呃,我回得太快。
我懷疑是你的檔名有空格所以讀不出來。試試看把檔名改成"s&p500_index.csv"吧!

Anonymous | 15 August, 2011 20:54

可以請問一個簡單的問題嗎?
STATA的全名是甚麼呢?

EverDark | 15 August, 2011 20:59

> #27

你.問.倒.我.了。

Anonymous | 15 August, 2011 21:06

論文被要求要寫出全名Orz
還在大海撈針中><

EverDark | 15 August, 2011 21:18

呃,這是什麼奇怪的要求。
Stata就是全名了吧?我不記得它是縮寫。

Anonymous | 15 September, 2011 14:25

請問使用stata跑panel data跑虛擬變數要如何跑??

f.wunew | 25 March, 2012 19:44

站长你好啊,我是大陆的学生,在英国修的硕士,写论文过程中对Stata和R真是又爱又恨……虽然不确定将来还会不会继续进修,再用Stata和R的机会也比较渺茫了,但是看到这篇文章还是果断收下,还没开始研读,但先说声谢谢喽~

永遠黑 | 05 April, 2012 17:29

> f.wunew

你好你好。
STATA真的是很棒的工具,我最近因為工作需要又繼續精進了一翻。有機會或可切磋切磋~

Anonymous | 02 May, 2012 10:32

你好

想請問一下,stata有沒有可以直接算出logit迴歸中,自變數發生機率的語法

Anonymous | 15 April, 2015 16:29

您好!!我是初學stata的碩士生!!我想請問
我是要用panel data
Y是p
X有beta average f mv
我想請問隨績效果模型跟固定效果模型我要怎麼打指令呢?
F 檢定(F-test)、LM 檢定(Largange Multiplier test)以及Hausman 檢定,這些我該怎麼打??
還有老師還要我做pool檢定 想請問這些指令我該怎麼打呢?????
請問可以跟您要您的信箱嗎 我很急 不好意思欸

小朱 | 13 May, 2015 00:30

不好意思,想請教您一個問題!
因為我的論文要跑movestay和oaxaca ,但不知道要如何將movestay的mills ratio 放進oaxaca裡><
也就是因為movestay會跑出兩個mills ratio,但不知道要如何設定當D=0時,oaxaca代進mills1;然後當D=1時,oaxaca代進mills2 呢~

Post a Comment

回應文章前請注意下列三勿原則:

1)勿拍照;(→會有靈異的照片從你的相機裡跑出來...
2)勿餵食;(→會有飢渴的猛獸從我的網誌裡跑出來...
3)勿告白。(→會有奇怪的東西從站長體內裡跑出來...

謝謝大家的配合。
( > ー <)b