导图社区 stata入门操作思维导图-01
思维导图主要展示stata入门操作,包括: 1、数据的基本处理:数据分组、虚拟变量的生成、数据剔除等 2、外部命令安装、资源库 3、面板数据的差分、拟合以及求残差值等 4、各种类型数据的导出等
编辑于2021-10-10 15:25:36入门基础-01
一、条件判断
(一)导入数据:sysuse auto,clear
(二)保留前5列数据:keep in 1/5
(三)不要第一列样本:drop in 1 ; drop in 1/3
(四)if 语句
1、一个条件:drop if trunk==11
2、二个条件:drop if trunk==11&mpg==22
3、或者:drop if trunk==11|mpg==22
4、多个条件可以以此类推
二、面板差分
(一)调用数据:webuse pig,clear
(二)面板数据:xtset id week // xtset firm_id year
(三)将数据挪动到下一行生成:lweight=L.weight
(四)进行差分:dweight=weight-L.weight
gendweight=d.weight //也可以用d.表示一阶差分
(五)如果差分2年:
1、l2weight=L2.weight
2、d2weight=weight-L2.weight
需要生成中间变量
(六)gen dweight=weight-L.weight
(七)gen dweight=weight-L2.weight
不需要生成中间变量
Lag滞后
(八)gen fweight=F.weight
Forward向前
三、外部命令安装
(一)ssc函数:eg:ssc install logout
(二)如果无法安装,采用:findit XX/search XX,找到想安装的外部命令,找到installation files,点击click here to install
(三)外部资源:知乎连玉君stata专栏:zhuanlan.zhihu.com/p/51712990
四、快速了解数据集
(一)describe(des)简单的描述:变量的描述、类型等
(二)summarize(sum):描述性统计:如果后面不加变量则对全部数据进行描述性统计 eg:summarize A B C //sum A B,detail(更细节)
(三)tabulate(tab):描述频率、占比、累计占比,eg:tab foreign headroom //tab A B
五、给数据贴标签
(一)数据准备:set obs=10 ; gen a=0 ; replace a=1 in 5/10
(二)给变量加标签:label variable a "项目名称”
(三)给数据集加标签:label data “示例数据”
(四)给值加标签:label define a_value 1"男“0”女“ //定义a_value
(五)label value a a_value(用a_value这个标签对a进行处理,那么表格中的0、1变量就会变成男和女)
六、纵向合并数据
(一)将数据纵向数据延长
1、use (文件1路径),clear
2、append using (文件2路径)
七、字符串的基本处理
(一)字符串部分截取:substr函数:
1、gen year = substr(A,1,4) //一定要是字符串变量,提取变量A中的第1位开始第4位结束
2、gen industrycode =substr(B,1,1)//只能提取第一位
(二)字符串的替换
1、subinstr函数
2、dis subinstr("this is the day","is","x",1) //替换对象为句子中的is,替换出x,并对第一个is做替换,后面的is不进行操作;
3、dis subinstr("this is the day","is","x",2) //替换对象为句子中的is,替换出x,并对两个is做替换;
4、dis subinstr("this is this","is","x",.) //代码最后的点表示所以都替换
(三)字符串的分割
1、split函数
2、准备数据:set obs 20 ; gen v1="1 2 3"
3、直接分割成3列:split v1,gen(a) //a表示以a作为前缀,变量title就是a1、a2、a3
4、用逗号进行分割:gen v2="1,2,3" ; split v2,p(",") gen(b) //表示以b作为前缀,变量title就是b1、b2、b3
八、Loop循环
(一)如果变量很多需要重复操作,可以用loop循环
1、foreach x of varlist A B C D{gen In'x'=In('x')} //对于需要处理的变量的集合
2、forvalue i=1(1)20{gen x_'i'=0} //从1开始间隔为1,到20
3、forvalue i=1(2)20{drop x_'i'} //从1开始间隔为2,到20,表格显示数据2、4、6、8、间隔地扔掉数据
入门基础-02
一、分组回归
(一)分行业、年份和企业性质
1、bysort(bys)函数
1||| 设race人种作为分类变量,1=white、2=black、3=other
2||| bysort race: reg Y X1 X2 X3
适用于分组命令较多
2、reg函数+if
1||| 假设race人种作为分类变量,1=white、2=black、3=other
2||| reg Y X1 X2 X3 if race==1
3||| reg Y X1 X2 X3 if race==2
4||| reg Y X1 X2 X3 if race==3
适用于分组命令较少
*补充(二)面板数据理解
1、面板数据=时间序列+横截面
2、根据时间长度分类
1||| 短面板数据:大N小T
2||| 长面板数据:大N大T
(三)分组获取拟合值和残差项
1、调用数据集 eg:sysuse auto,clear
2、进行方程回归 eg: reg A B C
3、获取拟合值 eg:predict D,xb //也可以用predict D(predict默认生成拟合值)
4、生成残差值 eg:predict D, res(res是residua的简写)
5、面板分组回归
1||| 对company1进行回归: reg A B C if company==1
2||| 获取company1的拟合值:predict D_hat if company==1,xb
3||| 获取company1的残差值:predict D-residual if company==1,res
4||| 如果有N组company的数据,则需要循环迭代:
i. 先安装asreg函数:ssc install asreg,replace
ii. 代码:asreg A B C,by(company) fitted //fitted表示显示拟合值和残差值
5||| 备注:可以用help asreg 查看用法,回归的结果显示:贝塔值、R-squared、adj R-squared等
(四)按照变量的中位数/平均数进行分组回归
1、使用变量 above
1||| 大于等于中位数为1
2||| 小于中位数为0
2、中位数分组代码逻辑
1||| reg A B C if foreign==1
2||| reg A B C if foreign==0
对foreign进行分组回归
3||| reg A B C if above==1
4||| reg A B C if above==0
把foreign替换成above,过程代码如右图
二、数据格式和等分
(一)format函数
1、format A %14.0g
1||| 14表示显示格式的宽度
2||| 0表示小数点后的数字
3||| f表示固定格式,g表示通用设定
4||| e表示使用科学计数法
2、format A %-14.0gc
1||| -表示左对齐
2||| c表示千分位符号,eg:1,234,456
(二)数据N等分
1、xtitle A3=A,nq(3) //A表示变量,nq(3)表示等分成3组
2、sort A //进行分组排序,能更清晰的看出
3、引申知识点:如何生成分组的虚拟变量
tab A3,gen(high_) //最后会生成3列,分别是high_1、high_2和high_3,形成虚拟变量
三、样本基本处理
(一)导出相同统计量:
1、如果数据集中有缺失值,则需要进行剔除到处相同统计量。只要变量里有一个缺失值,则为1,否则为0:egen miss=rmiss(A B C) //rmiss是row miss,表示每一行中如果有任意一个缺失值则为1
2、剔除:drop if miss==1
3、tabstat A B C s(N mean p50 sd) columns(s)
4、剔除的变量不会影响回归,因为stata进行回归的时候也会将其剔除
5、logout,save (mytable) excel replace:tabstat A B C s(N mean p50 sd) f(%12.3f) columns(s)
(二)样本排序
1、sort函数
1||| 一个变量排序:sort A //从小到大排序
2、gsort函数
1||| 一个变量排序:gsort -A //加上负号,从大到小排序
2||| 两个变量排序:gsort A -B //A先按照从小到大排序,然后B按照从大到小排序
(三)样本缩尾截尾
1、缩尾
1||| 定义
i. 1%缩尾:小于1%的数替换为1%的数值
ii. 99%缩尾:大于99%的数替换为99%的数值
2||| stata操作
i. 安装winsor2:ssc install winsor2
ii. 缩尾:winsor2 var1 var2,replace cuts(1 99) //cuts内是缩尾或者截尾的百分比,可根据实际情况调整。
2、截尾
1||| 定义
i. 1%截尾:小于1%的数替换为缺失值
ii. 99%截尾:大于99%的数替换为缺失值
2||| stata操作
i. 安装winsor2:ssc install winsor2
ii. 截尾:winsor2 var1 var2,replace cuts(1 99) trim //截尾需要加trim,trim的意思是“修剪"
(四)去掉ST/*ST/PT样本
(一)为什么需要剔除?
因为这些企业的财务制度异常需要剔除
(二)采用CSMAR数据库,公司数据选择公司研究数据下载企业数据
1、drop if status=="B"
2、drop if status=="C"
四、如何调用网络上的数据
(一)数据库资源:stata-press.com/data/r16/
(二)点击需要的下载到本地就不会调用webuse报错
五、Local和Global
(一)local
1、一次性的
2、local xyz "886" //运行一次是有效的,第二次则无法运行
3、display ~xyz' //需要用键盘数字1左边的符号和单引号调用
(二)global
1、永久的
2、global xyz "886" //可运行多次
3、display $xyz //需要用美元符号进行调用