作為一名研究生,日常研究主要用到的工具就是stata了,本科畢業論文就是用stata完成的。從一名stata小白到可以利用它完成大部分的實證研究工作,也進行了很多探索,雖然直到現在也不敢說自己對stata有多精通,但還是有一些經驗可以寫下來分享給完全不會stata,但又需要用到stata的萌新們。

【1】安裝軟體是第一步,下面這張圖是stata的介面,主要包括選單欄、工具欄、歷史視窗、命令視窗、結果顯示視窗、變數視窗、屬性視窗。工具欄有一個紅圓圈圈起來的功能,是do檔案編輯器,do檔案可以說是stata做實證分析的精髓了,所有的分析程式碼都可以放在一個do檔案中。當你不知道工具欄某個功能是什麼的時候,只需要把滑鼠移到對應功能附件,就會顯示出該功能名稱。do檔案編輯器的右邊的兩個功能是資料編輯器和資料瀏覽器,當你匯入資料到stata的工作空間時,就可以在這兩個地方看到資料了。命令視窗可以書寫單句的stata程式碼,然後歷史視窗會記錄每次在命令視窗輸入的程式碼,有時候想重新執行之前輸過的程式碼,就可以在歷史視窗點選對應的程式碼。

手把手教你用stata完成實證分析

stata介面

【2】匯入資料,軟體安裝好後,就可以開始資料處理了。匯入資料的第一步要確定工作環境,把stata的工作環境轉換到資料檔案所在的路徑下,比如說我的資料檔案在桌面data資料夾下,只需要cd+路徑,就可以完成。這句語句既可以寫在命令視窗下,點選enter執行,也可以寫在do檔案編輯器中,然後選中執行,執行按鈕就是點選do檔案工具欄最右邊被我圈紅的按鈕。stata程式碼中兩個反斜槓//或者星星*可以進行單行註釋,當需要多行註釋時,可以這樣 /*……。。。。*/。

手把手教你用stata完成實證分析

do檔案編輯器介面

stata的資料檔案都是以。dta結尾的資料檔案,然後也支援匯入常見的資料檔案比如Excel、csv以及spss檔案等,這裡我介紹一下匯入。dta資料和Excel資料的程式碼,其他格式資料匯入可自行百度。每次匯入資料使用clear 語句是為了清除當前stata中開啟的資料,如果沒有clear語句,已經開啟其他資料了,再次開啟就會報錯,所以務必每次加上clear語句,而在匯入Excel檔案時,sheet(“工作表”)語句是為了選擇工作表,而firstrow語句是表示將資料檔案的第一行當作欄位名,如果沒有firstrow,資料檔案第一行將被當作資料,所以一般也應該加上這一句,在開啟Excel資料檔案後,一般可以將其儲存為。dta格式的資料,方便後續處理,注意儲存資料的時候加上replace, 不然如果資料夾中存在同名數據,便會報錯。

cd C:\Users\may\Desktop\data //轉換工作路徑

*匯入資料

use data_ready。dta, clear //匯入dta資料

import excel data_ready2。xlsx, sheet(“Sheet1”) firstrow clear //匯入Excel檔案資料

save data_ready2。dta, replace //將Excel資料儲存為。dta格式

【3】處理資料,匯入資料後,需要進行一些初步的處理,包括更改變數名,生成一些新欄位,刪除重複資料,合併資料等。這裡我介紹一些常用的資料處理方式。在匯入資料的時候,有些本該是數值變數會變成字元型別,這時候可以使用destring 欄位名,replace將其變換成數值,能正確變換的前提是該變數的值都是數字,不能存在字元。刪除資料用drop,可以配合if子句刪除行,也可以直接刪除列。stata還可以橫向合併表格,命令是merge,具體用法可用help merge 命令檢視。而縱向合併資料為append 命令。如果需要分組計算欄位,可以使用by和egen命令。

rename mon month //將欄位mon的名字換成month

gen agenew = age + 1 //生成一個新欄位agenew等於age加1

gen year = substr(date,1,4) //擷取字串date變數的前四位,1表示開始位置,4表示字元個數

destring year, replace //將year字元型變數換成數值型變數,並替代原變數

gen lnorder = log(order) //生成一個新變數lnorder等於order的對數

*按條件刪除行或者刪除列

drop if agenew <3 //刪除年齡小於3的行

drop agenew //刪除agenew列

*橫向合併資料

merge 1:1 companyID using depart。dta, update //master表和using表都唯一

merge m:1 companyID using depart。dta, update //master表不唯一using表唯一

merge 1:m companyID using depart。dta, update //master表唯一using表不唯一

*縱向合併資料

append using depart。dta, force

*分組計算欄位

by companyID year: egen avg_sale = mean(new_zarticle) //求每個公司平均銷售額

by companyID year: egen totalg_sale = total(new_zarticle) //求每個公司總的銷售額

*設定標籤label

label data “檔案標籤名” //給整個檔案設定標籤 label data

label var varname “變數標籤名” //給單個變數設定標籤 lable var

label define labelname 1 “好” 2 “中” 3 “差” //給變數的值設定文字標籤(比如1:好;2:中;3:差)

label values varname labelname //聯絡標籤與變數

labelbook //檢視標籤

label drop lablename //刪除標籤

*縮尾處理

winsor2 varlist, replace cuts(1 99) //將極端值替換

【4】實證分析,到實證分析就是最重要的一步了,一般來說研究資料分為橫截面資料和麵板資料,橫截面資料就是指一期資料,比如研究物件企業的一年資料,而面板資料表示研究物件的多期資料,比如公司連續五年的資料。本文以面板資料為例,橫截面資料的實證分析用spss就完全足夠了。首先資料處理好之後,需要進行描述性統計分析和相關性分析。此處假設因變數為y,自變數為x1及x2,控制變數為x3~x8,logout命令可將輸出結果表格儲存到word中,無需複製,該命令不是自帶命令,需要透過search logout下載。

*設定面板資料

xtset companyID year

tab year, gen(yeardummy) //生成年份虛擬變數

*描述性統計分析

sum y x1 x2 x3 x4 x5 x6 x7 x8

logout, save(sum) word replace: sum y x1 x2 x3 x4 x5 x6 x7 x8

*相關性分析

pwcorr y x1 x2 x3 x4 x5 x6 x7 x8, star(。01)

logout, save(corr) word replace: pwcorr y x1 x2 x3 x4 x5 x6 x7 x8, star(。01)

面板資料迴歸分析一般用固定效應模型和隨機效應模型,兩者十分類似,只是命令最後加fe(固定效應),re(隨機效應)的區別。outreg2命令和louout命令類似,也需要下載,其可將回歸結果的表格直接生成word文件,並且設定顯著性水平的星星個數。加上調節變數,可以直接用c。自變數##c。調節變數,這個表示式直接包括自變數、調節變數以及兩者乘積。如果模型中自變數需要滯後的話,只需在變數前面加上l。。

*設定全域性變數

global y “sales”

global ctrl “x3 x4 x5 x6 x7 x8”

global years “yeardummy1 yeardummy2 yeardummy3 yeardummy4 yeardummy5”

global ifclause “if sales !=。 ” //設定過濾樣本條件

*面板資料固定效應迴歸分析

xtreg $y $ctrl $years $ifclause, fe vce(r)

outreg2 using Result-Main。doc, alpha(0。001, 0。01, 0。05, 0。1) symbol(***, **, *, +) dec(3) replace

xtreg $y $ctrl $years x1 x2 $ifclause, fe vce(r)

outreg2 using Result-Main。doc, alpha(0。001, 0。01, 0。05, 0。1) symbol(***, **, *, +) dec(3)

*調節效應x9

xtreg $y $ctrl $years c。x1##c。x9 c。x2##c。x9 $ifclause, fe vce(r)

outreg2 using Result-Main。doc, alpha(0。001, 0。01, 0。05, 0。1) symbol(***, **, *, +) dec(3)

*自變數需要滯後

xtreg $y $ctrl $years l。x1 l。x2 $ifclause, fe vce(r) //滯後一期

xtreg $y $ctrl $years l2。x1 l2。x2 $ifclause, fe vce(r) //滯後兩期

到這裡,整個面板資料實證分析基本上結束啦。

這裡也給大家強推一下陳強老師寫的高階計量經濟學及Stata應用,裡面包含各種各樣的實證模型,參考價值極大。