查看原文
其他

软件应用 | 常用的27个Stata命令

数据Seminar 2022-12-31

本文转载自公众号计量经济学

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)

18Pearson/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

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

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

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

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

27Justified 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中的矩阵

因果推断 | 必须警惕的坑:辛普森悖论

统计计量 | 实证研究方法

因果推断 | 收藏:因果推断书籍代码合集

统计计量 | 关于P值,五个最常见的理解误区






数据Seminar




这里是大数据、分析技术与学术研究的三叉路口


推荐 | 青酱


    欢迎扫描👇二维码添加关注    

点击下方“阅读全文”了解更多

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存