27个常用stata命令(2)

常用的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 mata
x=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]=2*ttail(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")
c
end

直接导出结果

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 id
estat dwatson

【23】多重共线性

reg y x1 x2 x3
vif

【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

猜你喜欢

转载自blog.51cto.com/14322769/2396332
0条评论
添加一条新回复