1、Stata入門---基礎(chǔ)統(tǒng)計(jì)和作圖

第一天學(xué)習(xí)Stata軟件做數(shù)據(jù)分析
利用系統(tǒng)自帶的數(shù)據(jù)熟悉常用的命令

1、導(dǎo)入數(shù)據(jù)

sysuse auto.dta
導(dǎo)入系統(tǒng)自帶數(shù)據(jù)庫(kù)auto.dta
打開第一個(gè)源文件water1.dta,將它按year排序,然后再另存為文件(再以覆蓋方式保存)
use bloomberg-1.dta, replace 
sort year
save bloomberg-2.dta, replace
1.1查看數(shù)據(jù)(字段類型為數(shù)值,字符串不行)的數(shù)量、平均數(shù)、標(biāo)準(zhǔn)差、最小值、最大值
summarize [varlist][if][in][,options]   //字段描述
summarize price     //描述價(jià)格這個(gè)字段
sum price   //簡(jiǎn)寫的命令也可以被識(shí)別price是字段
變量的簡(jiǎn)述,有數(shù)量、均值、標(biāo)準(zhǔn)差
1.2描述變量(字段)類型、格式、標(biāo)簽
describe [varlist]     // 字段描述
describe, short   
描述變量(字段)類型、格式、標(biāo)簽

描述兩個(gè)字段
count if price > 5000
統(tǒng)計(jì)觀測(cè)值數(shù)量
isid varlist   //檢查是否為識(shí)別標(biāo)簽,類似于數(shù)據(jù)庫(kù)的主鍵
isid price    //該字段是唯一值,不會(huì)報(bào)錯(cuò)
isid mpg    //不是唯一值,會(huì)報(bào)錯(cuò)
測(cè)試isid price,所有值均不同,不報(bào)錯(cuò)
unique  var  //需要安裝,用命令 ssc install unique
安裝unique命令

測(cè)試unique
1.3tabstat
sysuse "nlsw88.dta", clear
\\\一維表形式如下:
tabstat wage hours  age  union race, stat(N mean sd min max) col(stat)

    variable |         N      mean        sd       min       max
-------------+--------------------------------------------------
        wage |      2246  7.766949  5.755523  1.004952  40.74659
       hours |      2242  37.21811  10.50914         1        80
         age |      2246  39.15316  3.060002        34        46
       union |      1878  .2454739  .4304825         0         1
        race |      2246  1.282725  .4754413         1         3
----------------------------------------------------------------
\\\加入分組變量,匯報(bào)二維表形式:
tabstat wage hours  age  union race, by(married) stat(N mean sd min max) nototal long col(stat)
married     variable |         N      mean        sd       min       max
---------------------+--------------------------------------------------
single          wage |       804  8.080765  6.336071  1.151368  40.19808
               hours |       801  39.23845  9.099001         2        80
                 age |       804  39.21891  3.049911        34        46
               union |       656  .2759146  .4473151         0         1
                race |       804  1.404229  .5109335         1         3
---------------------+--------------------------------------------------
married         wage |      1442  7.591978  5.399229  1.004952  40.74659
               hours |      1441  36.09507  11.06107         1        80
                 age |      1442   39.1165  3.066058        34        45
               union |      1222  .2291326  .4204468         0         1
                race |      1442  1.214979  .4402987         1         3
------------------------------------------------------------------------

論文表1——基本統(tǒng)計(jì)量列表
Stata中神奇的bys!

2、數(shù)據(jù)字典

codebook [varlist][if][in][,options]    //數(shù)據(jù)字典
codebook price mpg
顯示數(shù)據(jù)字典,每個(gè)字段的基本信息
codebook pric if price > 5000
按條件顯示對(duì)應(yīng)數(shù)據(jù)
codebook price in 10/20
指定條數(shù)
幫助信息,新窗口顯示幫助信息
help codebook
codebook顯示信息

2.1、新增字段generate命令sum() 函數(shù)

clear
input x1 x2
      1  2
      2  4
      3  6
      4  8
end
 
list 顯示數(shù)據(jù)
gen sum_x1  = sum(x1)
gen sum_x2  = sum(x2)
list, clean noobs 
image.png

從結(jié)果中可以看出,gen 提供的 sum() 函數(shù)是累計(jì)求和。

2.2 egen命令的sum() 和rsum()函數(shù)
egen sum_x1=sum(x1)
egen sum_x2=sum(x2)
egen rsum_x = rsum(x1 x2)
egen rtotal_x = rowtotal(x1 x2)
list , clean noobs
image.png

從結(jié)果中可以看出,egen 提供的 sum() 函數(shù)計(jì)算該變量的總和,rsum() 計(jì)算行數(shù)值的相加和,rowtotal() 函數(shù)與 rsum() 功能一致。需要注意的是,rowtotal() 不能簡(jiǎn)寫為 rtotal()。

此外,egen 還提供了豐富的針對(duì)行操作的函數(shù),如 rowfirst()、rowlast()、rowmax()、rowmean()、rowmedian()、rowmin()、rowmiss()、rownonmiss()、rowpctile()、rowsd() 等,詳細(xì)介紹可以通過(guò) help egen 查看。

2.3egen和bys結(jié)合 分組計(jì)算和【三個(gè)變量,按兩個(gè)變量分組,第三個(gè)變量求和】
bys kind year:egen type_TotalAmount = sum(type_sumAmount) 

通過(guò)kind類別 和year年份將數(shù)據(jù)分組,然后新增一列type_TotalAmount 計(jì)算出type_sumAmount的總和

table kind year, c(n type_sumAmount mean type_sumAmount mean type_sumAmount )
image.png

得到如上圖的列表,但是想導(dǎo)出,嘗試了很多方法都沒有得到一個(gè)excel文件,導(dǎo)出的數(shù)據(jù)樣式會(huì)變,即便導(dǎo)出word、text、log等都不理想,
提示一個(gè)好方法:在展示框選中所有數(shù)據(jù),然后右鍵copy table 可以把數(shù)據(jù)的格式復(fù)制出來(lái)


image.png
2.4collapse命令,會(huì)覆蓋原有數(shù)據(jù),慎用,
collapse (sum)type_sumAmount ,by(year kind)
sort kind year
image.png

這個(gè)沒有用table做出來(lái)的直觀,后續(xù)遇到好的方法還會(huì)繼續(xù)更新

3、畫圖

3.1.histogram (直方圖)

histogram varname [if][in][weight][,[continuous_opts][discrete_opts]options]
//簡(jiǎn)寫為 hist   最常用的三種形式
hist varname
hist varname,freq
    density   密度  den
    fraction   分?jǐn)?shù)/小數(shù)    frac
    frequency   頻率   freq
    percent    百分比   per
hist vaname, by(varname2)
price的直方圖

price的頻次圖

3.2.graph box/ graph hbox horizontal 水平的

graph box vars [if][in][weight][,options]
graph hbox vars [if][in][weight][,options]
graph hbox price mpg length
橫著的箱體圖
graph box price mpg length
豎著的箱體圖

3.3.小提琴圖,選裝 ssc install vioplot

vioplot price
vioplot price, over(foreign)
通過(guò)foreign分類后的price的小提琴圖

graph query schemes

stata 默認(rèn)主題是s2color建議選用s1mono


image.png
set scheme s1mono   //Stata重啟之前設(shè)置為s1mono
set scheme s1mono, perm   //永久設(shè)置為s1mono (灰度圖像)
image.png

3.4.散點(diǎn)圖

[twoway] scatter varlist [if][in][weight][,options]
最基礎(chǔ)的形式: twoway scatter y x
進(jìn)階形式; twoway scatter y1 y2 y3 ……x

twoway scatter weight length price
兩個(gè)變量和y之間的關(guān)系
twoway scatter mpg weight, msymbol() mcolor() msize()
msymbol() 改變形狀 help symbolstyle
mcolor()  改變顏色 help colorstyle
msize()  改變大小 help markersizestyle
可選的symbol
help symbolstyle

可選的大小
help colorstyle
可選的顏色
help markersizestyle
twoway scatter mpg weight price, msymbol(D) mcolor(red) msize(medium)
 twoway scatter mpg length weight price,  mcolor(black blue red) msize(medium)
多個(gè)顏色的選取
 twoway scatter mpg length weight price, by(foreign)  mcolor(black blue red) msize(medium) 
通過(guò)分類變量畫圖

4.Twoway命令入門

sysuse uslifeexp, clear


美國(guó)期望壽命的數(shù)據(jù)
help twoway
twoway命令語(yǔ)法格式

示例如下:

4.1帶散點(diǎn)的折線圖
twoway connected le year   //帶散點(diǎn)的折線圖
twoway connected le year
twoway connected le_male le_female year
twoway connected le_male le_female year
4.2垂直線圖
twoway dropline le year   //垂直線圖
twoway dropline le year
twoway dropline le_male le_female year
twoway dropline le_male le_female year
4.3脈沖圖,y2會(huì)覆蓋在y1上,
twoway spike le year   //脈沖圖
twoway spike le year
twoway spike le le_male le_female year
twoway spike le le_female le_male year
twoway spike le le_male le_female year

twoway spike le le_female le_male year
4.4 面積圖 y2會(huì)覆蓋在y1上,注意下圖區(qū)別
twoway area  le_male le_female year // y1會(huì)被覆蓋,看不到
twoway area  le_female le_male year
twoway area le_male le_female year
twoway area le_female le_male year
4.5 lowess圖,相對(duì)于散點(diǎn)圖平滑曲線
twoway lowess le year  //平滑曲線
lowess le year   // 平滑曲線,疊加散點(diǎn)
twoway lowess le year
lowess le year
4.6graph twoway lfit y x (y對(duì)x回歸的回歸直線)
graph twoway lfit price mpg

5、統(tǒng)計(jì)描述指標(biāo)

ci mean : 連續(xù)變量mean的置信區(qū)間
proportion(可簡(jiǎn)寫為prop):分類變量mean的置信區(qū)間
pwcoor:變量的配對(duì)相關(guān)性
graph matrix:相關(guān)性矩陣

示例

實(shí)力使用數(shù)據(jù)導(dǎo)入

sysuse auto, clear
5.1ci mean : 連續(xù)變量mean的置信區(qū)間

ci 是confidence intervals的縮寫,
ci means [varlist][if][in][weight][,options]
cii means #obs #mean #sd [,level(#)]
默認(rèn)95%置信區(qū)間

ci mean mpg price, level(95)
ci mean mpg price, level(95)
cii mean 166 19509 4379, level(95)
cii mean 166 19509 4379, level(95)
5.2分類變量的置信區(qū)間:
choice 1
ci proportions [varlist][if][weight][,prop_options options]
ci prop foreign
ci prop foreign

缺點(diǎn): ci prop 只能 用于二分類變量(binary)

ci rep78
ci rep78

rep78這個(gè)字段的特性
choice 2

proportion 分類變量的置信區(qū)間
proportion varlist [if][in][weight][,options]
prop
默認(rèn)95%置信區(qū)間

 prop foreign
prop foreign

image.png
prop foreign rep78, miss    //不忽略缺省值
image.png

6、pwcorr查看變量的相關(guān)性

pwcorr [varlist][if][in][weight][,pwcorr_options]

pwcorr price headroom mpg displacement //考慮price、headroom、mpg、displacement這四個(gè)變量的相關(guān)性
image.png

如果要展示P值,需要在后面加“, sig”

pwcorr price headroom mpg displacement, sig
展示相關(guān)性的同時(shí),顯示P值
 pwcorr price headroom mpg displacement, star(0.05)
不想看數(shù)值,想知道是不是小于0.05

graph matrix繪制相關(guān)性矩陣

//geraph matrix varlist [if][in][weight][,options]
graph matrix price headroom mpg displacement
graph matrix price headroom mpg displacement, half
后面加“, half”,可以展示一半

學(xué)習(xí)參考:
https://www.zhihu.com/question/35871900
https://zhuanlan.zhihu.com/p/54759702

常用命令

  • 命令【1】:導(dǎo)入數(shù)據(jù)一般做實(shí)證分析使用的是excel中的數(shù)據(jù),其后綴名為.xls,需要將其修改為.csv
    insheet using name.csv, clear
  • 命令【2】:刪除重復(fù)變量
    sort var1 var2
    duplicatesdrop var1 var2, force
  • 命令【3】:合并數(shù)據(jù)(merge 合并)
    use data1, clear
    merge m:m var1 var2 using data2
    drop if _merge==2
    drop if _merge==1
    drop _merge
  • 命令【4】:描述性統(tǒng)計(jì)分析
    tabstat var1var2, stat(n min mean median p25 p75 max sd), if groupvar==0 or 1
    輸出到word中:
    logout, save(name) word replace: tabstat var, stat(n min mean p50 max sd) col(stat)f(%9.2g)
  • 命令【5】:結(jié)果輸出
    安裝命令包
    ssc install estout, replace
    單個(gè)回歸
    reg y x
    esttab using name.rtf, compress nogap r2 ar2 star(* 0.1 ** 0.05 *** 0.01)
    多個(gè)回歸一起
    reg y x1
    est store m1
    reg y x2
    est store m2
    esttab m1 m2 using name.rtf, compress nogap r2 ar2 star(* 0.1 ** 0.05 *** 0.01)
  • 【命令6】生成滯后、差分?jǐn)?shù)據(jù)
    tsset code year
    gen newvarname=l.varname
    gen newvarname=d.varname
  • 【命令7】多重共線檢驗(yàn)之方差膨脹因子
    reg y x1 x2 x3
    vif
    【命令8】多重共線修正之逐步回歸
    stepwise, pe(0.1): reg y x
  • 【命令9】檢驗(yàn)是否遺漏高次項(xiàng)
    reg y xestat ovtest
    或者
    estat ovtest, rhs
    【命令10】 樣本檢驗(yàn)兩樣本均值T檢驗(yàn)
    ttest var, by(groupvar)
    兩樣本中位數(shù)Z檢驗(yàn)
    ranksum var, by(groupvar)
  • 【命令11】 生成虛擬變量
    tab year, gen(year)
    tab industry, gen(industry)
  • 【命令12】 數(shù)據(jù)縮尾處理
    findit winsor2
    之后安裝
    winsor2 varname, replace cut(1 99)
  • 【命令13】異方差檢驗(yàn)懷特檢驗(yàn)
    ssc install whitetst
    reg y x1 x2
    estat imtest, white
    處理:“OLS+穩(wěn)健標(biāo)準(zhǔn)差”
    reg y x1 x2 x3, robust
  • 【命令14】 DW檢驗(yàn)
    gen id=_n
    tsset id
    estat dwatson
  • 【命令15】計(jì)算兩個(gè)日期之間的間隔天數(shù)
    gen td=date(trading_date,'YMD')
    gen ed=date(eventdate,'YMD')
    form td ed %td
    gen d=ed-td
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容