常用的27个Stata命令

1. 直接导入csv格式数据

insheet using name.csv, clear

2. 修改变量长度

format var %20.2g

3. 删除重复值

sort var1 var2
duplicatesdrop var1 var2, force

4. 数据合并

use data1, clear
merge m:m var1var2 using data2
drop if _merge==2
drop if _merge==1
drop _merge

5. 生成一期滞后项

tsset stkcd accper
gen newvarname=L.varname

6. 将文字转化为数字变量

genBigN=0
replaceBigN=1 if strmatch(dadtunit,"普华永道*")

7. 删除有缺失值的记录

egen mis=rowmiss(_all)
drop if mis
drop mis

8. 行业划分

clonevarsic2=ind
order stkcd accper sic2
replace sic2=substr(sic2,1,1) if substr(sic2,1,1)!=”C”
replace sic2=substr(sic2,1,2) if substr(sic2,1,1)==”C”
tabulate sic2 accper

9. 日期只保留年份

drop if substr(reptdt ,6,2)!="12"
replace reptdt=substr(reptdt,1,4)
gen accper=real(reptdt)

10. 数据分列

split date ,parse(-) destring ignor("-")

11. 求两个日期之间的间隔天数

g td=date(trading_date,"YMD")
g ed=date(eventdate,"YMD")
form td ed %td
g d=ed-td

12. 生成行业、年份哑变量

tab year, gen(year)
tab industry, gen(industry)

13. 对数据进行**Winsorize处理**

findit winsor2
winsor2 varname, replace cut(1 99)

14. 描述性统计

tabstat var1var2, stat(n min mean median p25 p75 max sd),  if groupvar==0 or 1
logout, save(name) word replace: tabstat var, stat(n min mean p50 max sd) col(stat)f(%9.2g)

15. 两变量列联表

tabulate var1 var2, row chi2 taub gamma

16. 两样本间的均值**T检验**

ttest var, by(groupvar)

17. 两样本中位数**Z检验**

ranksum var, by(groupvar)

18. Pearson/Spearman**系数**

spearmanx*n matax=st_data(.,"x")c=correlation(x)n=rows(c)b=strofreal(lowertriangle(c)+uppertriangle(st_matrix("r(Rho)")),"%9.3f")p=st_matrix("r(P)")for (i=2; i<=n; i++) {for (j=1; j<=i-1; j++) {p[i,j]=2ttail(rows(x)-2,abs(c[i,j]/sqrt((1-c[i,j]^2)/(rows(x)-2))))b[i,j]=b[i,j]+(p[i,j]<0.01?"*":(p[i,j]<0.05?"":(p[i,j]<0.1?"":"")))b[j,i]=b[j,i]+(p[j,i]<0.01?"":(p[j,i]<0.05?"":(p[j,i]<0.1?"*":"")))}}c=editvalue(b, "2.000", "1")cend

直接导出结果

logout, save(pw) word replace:pwcorr_avars, star1(0.01) star5(0.05) star10(0.1)

19. 按年度按中位数分组

方法一

bysort year: egen g=xtile(var), n(2)

方法二
bys accper: cumul icindex, g(g) eq
levelsof accper, local(id)
display "`r(levels)'"
local cut1 = 1/2
foreach x of local id {
recode g (min/cut1'=0)(cut1'/max=1) if accper==`x'
}

分三组
bys accper:cumul icindex, g(g) eq
levelsof accper, local(id)
display "`r(levels)'"
local cut1 = 1/3
local cut2 = 2/3
foreach x of local id {
recode g (min/cut1'=1)(cut1'/cut2'=2)(cut2'/max=3)if accper==`x'
}

20. 输出回归结果

安装
ssc install estout, replace

单个回归
reg
esttab using name.rtf, compress nogap r2 ar2 star(* 0.1 ** 0.05 *** 0.01)

多个回归一起
reg
est store m1
reg
est store m2
esttab m1 m2 using name.rtf, compress nogap r2 ar2 star(* 0.1 ** 0.05 *** 0.01)

连续运行tobit模型结果导出:
esttab m1 m2, b(%9.4f) t scalars(N ll Fchi2 type), using name.rtf, compress nogap

连续运行OLS模型结果导出:
esttab m1m2, b(%9.4f) tscalars(N r2 F p), using name.rtf, compress nogap

21. 异方差检验及处理

检验:怀特检验

ssc install whitetst

reg
estat imtest, white

处理:“OLS+稳健标准差”
reg y x1 x2 x3, robust

22. DW**检验(序列相关性一阶)**

gen id=_n
tsset idestat dwatson

23. 多重共线性

reg y x1 x2 x3vif

24. 是否遗漏高次项

例如,检验y对x的线性回归有没有遗漏高次项

reg y x
estat ovtest
或者estat ovtest, rhs

25. 逐步回归

stepwise, pe(0.1): reg y x

26. Maddala(1983)两阶段处理效应模型

treatreg yx1-xn, tr(z=w1-wm)two

27. Justified Jones Model

statsby _b, by(ind accper)saving(*.dta,replace):reg yx, noconstant
merge m:m indaccper using *.dta
gen yhat=y-_b*x

你可能感兴趣的:(stata,其他)