【stata系列】——入门必备

01  导入

将excel导入stata通常有两种方式:一是import;二是insheet。两者有不同的适用范围和格式要求。

import excel_name using 'xxxx', clear

// 用import直接将excel导入stata较为方便快捷,但是弊端在于超过40m的excel无法导入,stata12版本可以用import导入,stata12以上版本未测可行,建议stata12以上版本采用insheet导入。

// clear是为了清除页面已有的dta文件,也可以先在交互行里输入clear语句,再输入import语句。

insheet using 'xxxx', clear

// 用insheet导入stata不受大小40m的限制,但是对格式有要求,必须先将excel另存为csv格式,再用insheet导入,建议stata12以上版本用户采用这种方法。

// “xxxx”指的是文件存储地址,windows用户可以通过文件-显示简介查看路径名,mac用户可以打开terminal终端,直接将文件拖入终端窗口,获取路径名。

// 如果导入失败,请检查是否用错英文格式的标点符号。

// 导入成功后,在退出前记得及时save为dta文件,放入指定文件夹中,方便管理。

在stata里打开dta文件就比excel导入更为简单,也有两种方式:直接点击open选择文件,或者写一条use的代码打开指定文件。

如图,直接点击stata界面左上角的open选项,选择要打开的dta文件:

use 'xxxx', clear

// 通过写use的语句也可以打开指定dta文件,写语句的形式更适用于do-file文件的记录。

// do-file就是一个可以替代交互式代码的记录文件,交互式代码一次输入一行命令,do-file文件可以同时执行n条指定命令,方便使用和检查,保存好do-file后会显示.do后缀名。(就跟码农敲代码一样,新手们可以码起来啦,告别傻瓜式交互窗口会是实证小白的第一次飞跃!)

02  初始处理

在导入excel或csv文件或打开dta文件后,此时需要对原有的变量进行初始处理,如:重命名rename、设置标签label、删除drop、保留keep、保存save/saveold、替换replace、变量排序order、大小排序sort、变量类型转换destring、encode等。

rename x1 x2

// 将x1的名称换为x2。

label variable x1 'xxxx'

// 将变量x1的标签设置为xxxx。

drop x1 x2

// 删除x1和x2,中间空格,不加标点。

duplicates drop x1 x2, force

// 删除x1和x2两个变量一一对应的重复值,force是强制执行。

keep x1 x2

// 保留x1和x2,其他变量删除。

// drop和keep都可以与if语句联合使用。

replace x1=x2

// 将x2的值赋给x1,也可以是一个具体赋值。

order y x1 x2

// 变量按照y x1 x2的顺序排序。

sort x1 x2

// 将x1和x2按大小排序。

// 建议在命名变量时尽量采用英文命名方式,stata12及以下版本不支持中文变量名,stata13及以上版本支持中文变量名。即便您使用了最新版本的stata,依然存在他人用低版本stata打开时出错的可能性,为了避免出错,建议养成英文变量命名的习惯。

save 'xxxx'

// 保存为xxxx.dta文件,不覆盖原文件。

save '', replace

// 保存为xxxx.dta文件,覆盖原文件。

saveold xxxx

// 默认将dta文件存为stata13版本

saveold xxxx, version(12)

saveold xxxx, version(11)

// 将dta存为stata12或stata11版本

destring x1, replace

// 字符型转为数值型,覆盖原变量。

destring x1, gen(x1_new)

// 字符型转为数值型,生成新变量x1_new。

encode x1, gen (x1_new)

// 字符型转为数值型(按字符排序),生成新变量x1_new,常用于对industry字符型变量的转换。

03  变量管理及数据合并

在初始处理后,可能需要数据合并,并设置新的变量,以便完成后续的实证分析部分。常用到生成新变量gen、生成中位数或均值egen、变量分组xtile、滞后变量lag、横向合并merge、纵向合并append。

gen x=0

replace x=1 if y==0|y==1

// 令新生成的x变量赋值为0,若y=1或y=0就令x的值为1。

// gen全称是generate,简称gen即可。

// 在stata中y=1的写法是y==1,同时y!=1表示y不等于1,如果stata显示出错,请检查双等号是否输入错误。

egen x_mean=mean(x)

// 生成变量x的均值x_mean。

egen x_median=median(x)

// 生成变量x的中位数x_median。

by type: egen x_mean=mean(x)

// 按照type分类生成变量x的均值x_mean。

// egen和gen的不同在于,gen常用于生成新的变量,生成均值或中位数只能用egen,二者不可随意替代。

// gen和egen两者不同于设置标量sca和global,sca适用于局部标量,global适用于全局标量,标量可以“整体打包”变量,在变量复杂时更不易出错。(新手可以直接忽略,会用gen和egen即可)

xtile x_group=x, nquantile(a)

// 将x分成a组,定义为x_group,x_group的取值为1到a,若a=3,那么取值为1、2、3,分别代表最低组、中位组和最高组。

gen x_lag1=x[_n-1]

// 生成x滞后一期的变量,若需生成滞后两期,只需要将[_n-1]换成[_n-1]即可,滞后多期同理。

merge 1:1 x1 x2 using 'xxxx'

// 横向合并:按照x1和x2两个变量在子表xxxx中1:1匹配,若主表和子表是多对一,将1:1换成m:1,若主表和子表是一对多,将1:1换成1:m即可,“xxxx”表示子表路径名。

append using 'xxxx'

// 纵向合并:前提是保证主表和子表的变量个数和名称全部一致,即可直接匹配,“xxxx”表示子表路径名。

// merge横向合并和append纵向合并的优点在于:可以将单表汇总,简单易行;缺点在于:一次性只能匹配一张表,若有多表需要匹配,则需合并多次。csmar提供的跨表数据可以解决数据匹配和合并问题,除此之外,多表横向合并可以通过mergemany实现,后续的【stata系列】合并篇会分享多表合并的实现方法。

04  描述性统计及相关性分析

描述性统计和相关性分析是实证分析的第一步,通常要用到list、tab、describe、sum等命令。进一步的,关于结果的输出会在后续的【stata系列】结果输出篇统一呈现。

list in a/b

// 看a-b个观测值,list表示列示观测值的所有变量信息。

tab y x

// 列联表显示x和y的二维分布,即统计个数。

descibe x

// 描述变量x的数据格式信息,descibe可以简写成d,即命令等同于'd x'。

sum y x

// 对y和x进行描述性统计,未加detail可以显示出最小值,最大值,标准差,个数,均值,中位数。

sum y x, detail

// 对y和x进行描述性统计,加上detail除以上各指标外,还会列示出详细的分位数情况。

by year: sum y x

// 根据年度来分别对y和x进行描述性统计。by也可写成bys,是bysort的简称,“按……分类”的意思,同理,也可加上detail。

pwcorr x1 x2 x3, sig obs

// pearson相关性分析

spearman x1 x2 x3, stas(rho p)

// spearman相关性分析

(关于相关性分析和描述性结果的其他输出方式,会在后续内容中作单独整理,并分享更为简便实用的输出方式,如您有更好的见解,欢迎不吝赐教。)

05  单变量分析

对单变量的均值、中位数和虚拟变量之间的差异分析,常用ttest、ranksum、prtest。

ttest x, by(r)

// 测试r=0和r=1的两组x的均值是否显著存在差异,单变量均值差异分析用ttest。

ttest y=0

// 测试y的均值是否显著异于0。

ranksum x, by(r)

// 测试r=0和r=1的两组x的中位数是否显著存在差异,单变量中位数差异分析用ranksum,一般采用秩和检验。

prtest y, by(r)

// 测试r=0和r=1的y是否显著不同。

(差异分析常用在difference-in-difference双重差分模型里。需要注意的是,单变量分析和组间系数差异分析不同,组间系数差异分析会在后续的【stata系列】中陆续更新。)

06  普通OLS回归分析

实证分析最重要的一环就是回归分析部分。常涉及到的模型有OLS模型、FEM固定效应模型和REM随机效应模型。同时,要关注异方差、自相关的问题。(后续会单独对异方差和自相关的问题进行整理,此处不赘述其成因和检验方法,只介绍解决办法,感兴趣的读者可移步至后续更新的【计量小知识】系列查阅。)

reg y x1 x2 x3 (if post==0)

// 普通OLS回归,可加if语句。

reg y x1 x2 x3, robust

// 稳健标准误的普通OLS回归,robust用以解决异方差问题,不改变系数大小,改变的是变量的标准误。

reg y x1 x2 x3, robust cluster(id)

// 对id进行聚类的稳健标准误后的普通OLS回归,cluster(id)表示对id进行聚类标准误处理,允许id组内自相关,但是不同id之间无组间自相关。

// 不管是否存在异方差和多重共线性问题,使用robust和cluster会使结果更加稳健,否则可能会低估标准误,导致结果过分显著。

以上内容由教学课件和个人经验简要整理而成,不便直接分享原始资料。为补充stata常用命令,可查阅以下参考链接:

1-stata使用频率最高的15个命令:

https://www.sohu.com/a/282111637_659080

2-常用的27个stata命令:

http://www.360doc.com/content/17/0501/09/39103730_649991233.shtml

(0)

相关推荐