导图社区 stata中基础运算与回归
本思维导图主要用来展示stata入门的操作笔记,可以直接进行操作演练。喜欢的小伙伴可以点个赞哦!
编辑于2021-10-09 16:48:12STATA基础函数与计算
一、前导入门
(一)输入 help gsw 可以查看Stata官方自带的教程文档
(二)学习资源
1、B站UP主(silencedream):http://silencedream.gitee.io/
2、UCLA官网:stats.dre.ucla.edu(点击software)
3、普林斯顿官网:dss.princeton.edu/training
二、导入数据
(一) Do-File文件可以保存代码方便后续修改和运行
(二)数据导入
1、excel导入:直接导入即可
2、dta文件导入:选择dta文件,选择“复制为路径”,在do-file文件中编辑如下代码: use (粘贴上述路径),clear //如果有数据就清空,没有就不管。
*备注:ctrl+d=运行代码快捷键
三、合并数据
(一)数据合并前提:excel文件转为dta文件
1、步骤:现将excel文件导入软件,打开do-file文件进行编辑
2、代码:
1||| clear
2||| import excel"XXX.xlsx"(粘贴把excel文件导入的代码)
3||| save "XXX.dta"(将xlsx改dta即可),replace(表示有相同文件名字的就替换,没有就保存)
(二)处理数据和合并:两个数据集的合并(match)
1、代码(一对一数据):
1||| use (粘贴已经转化过后的需要使用的dta文件路径)
2||| merge 1:1 id Year using (需要匹配的另一个数据集的dta文件路径) *备注:1:1意思是一一对应;id和year是变量名表示需要对应的变量为id和year,在excel中可以用vlookup函数进行处理
3||| drop if_merge==2(根据合并结果删除merge==2)
4||| drop _merge
5||| save (合并之后的文件)
2、代码(多对一数据或者一对多):
1||| merge m:1 id using(使用的dta文件,如成立时间)
2||| drop if_merge==2(删除merge==2)
3||| drop _merge
4||| save (合并之后的文件)
四、样本的保留与删除
(一)使用函数drop
1、调用系统数据集
sysuse census,clear
2、将人口大于5000000的赋值为缺失值
replace pop =. if pop>5000000 (代码中的点表示缺失值)
3、然后删除掉缺失值
drop if pop==.
4、如果想删除某个变量X
drop X
(二)使用函数keep
1、保留如果人口不等于缺失值
keep if pop !=.
(三)举例分析
1、资产负债率
1||| drop if debt>1
2||| keep if debt <=1
2、行业(industry code是字符串)
1||| drop if industrycode=="CU"(加上双引号表示文本,而不是变量)
2||| keep if industrycode!="CU"(保留行业代码不等于CU)
五、基本运算
(一)display函数
1、加减乘除:display 7+8、display 7*8
2、自然对数:display In(7)=display Iog(7)
3、次方:display 7^2
4、di是display函数的缩写,便于编程
(二)数据集的运算
1、导入数据集:sysuse auto,clear
2、保留其中2个变量:keep A B
3、简单运算:generate C=A+B
4、对数运算:generate InA=In(A)
5、在满足一定条件下进行运算:generate D=A+B if B ==11
简单运算
(三)均值标准差的运算
1、导入数据集:sysuse auto,clear
2、只保留price变量:keep price
3、对price进行数据处理
均值:egen meanprice=mean(price)
标准差:egen sdprice=sd(price)
中位数:egen medprice=median(price)
最小值:egen minprice=min(price)
最大值:egen maxprice=max(price)
列数据
4、针对行数据:
1||| 行最大值:egen rowmax1=rowmax(price meanprice)
2||| help egen去查看其他的用法,具体实践中学习
行数据
复杂运算
六、分组计算
(一)变更变量的位置:order id year industry (按照顺序输入即可)
(二)分类+计算代码:
1、分类:sort year industry(先把年份分类,然后在年份的基础上按照industry排序
2、计算:by year industry:egen Y=count(id)
合并代码:bysort year industry:egen Y=count(id)
七、字符串类型与数据类型转换
(一)从字符串变成数值:
1、转换code变量从字符串到数值:destring code,replace
2、转换income变量从字符串到数值:destring income,replace
3、进行运算:gen A=code+income
(二)从数值变成字符串:转换income变量从数值到字符串:tostring income,replace
八、处理重复样本
案例分析
(一)数据准备:sysuse auto,clear;expand 2 in1/2(在前两个样本范围内放大2倍);
(二)判定重复值:ssc install unique(按照这个unique);unique make/unique make price(检查下make这个变量是不是唯一的,弹窗会显示结论,则可以判别重复)
(三)显示重复值:duplicates tag make,gen(tag1)/depulicates tag make price,gen(tag1) *备注:结果显示重复值tag1=1,其他未重复的tag1=0;duplicates list make(会把重复值列出来)
(四)剔除重复值:duplicates drop make,force(结果会显示已经剔除了N个样本)
虚拟变量与回归
一、生成虚拟变量
(一)举例
1、调用数据集:sysuse auto,clear
2、简单描述统计
1||| 表格:tabulate foreign(foreign是个变量),结果显示:类型、频率和占比
2||| 最大值、最小值:summarize foreign,结果会显示:最大值、最小值、平均值、方差等等
3||| tabstat函数是描述性统计的函数,可以制作表格,通过help tabstat检索使用方法
3、构建虚拟变量
Method 1
1||| gen dummy1=0 if !missing(foreign) //构建虚拟变量dummy1=0,在变量是不缺失的情况下
2||| replace dummy1=1 if foreign==1 & !missing(foreign)
Method 2
1||| gen dummy2=cond(foreign==1,1,0) //cond表示条件函数,如果foreign等于1,则赋值1,否则为0
2||| 注意缺失值的处理:replace dummy2=. if dummy==. //如果dummy2是缺失值的话,则把换成缺失值
Method 3
1||| tabulate make,gen(car_) //可以直接快速全部生成关于make(品牌)的全部虚拟变量矩阵
2||| *备注:tab是tabulate的缩写
3||| 在回归中:
reg make price trunk car_* //*表示通配符可以将所有关于car_前缀的都加入回归
reg make price trunk i.foreign //表示在回归中加入虚拟变量,而不是先列出虚拟变量
如果foreign是字符串不是数值,如果是make,则需要egen make_group=group(make),再运行reg make price trunk i.make
二、多元回归(举例说明)
(一)程序一定在do-file文件中调用
(二)代码
1、regress rdsales_ratio i.year i.industry i.province $firmcontrol_1 L1.preceo_inventor,r
estimates store m1(将回归方程储存起来,名称为m1
2、备注:reg是regress的缩写;i.year这种的是在回归中生成虚拟变量
3、$firmcontrol_1 L1.preceo_inventor,cluster(id)
1||| 先定义 global firmcontrol_1"L1.in_assets L1.In_firmage L1.In_fixedpp L1.In_salespp L1.leverage L1.cashassets_ratio"
2||| $美元符号:调用叫firmcontrol的变量
3||| L1.preceo_inventor指的是滞后一期(L1.)代码中有点,不能忘记
4||| cluster(id)-聚类稳健标准误,是为了解决异方差问题,r表示“robust”是稳健标准误。
(三)原方程
(四)看懂多元回归结果(表格)
1、SS=sum of squares(平方和)、df、MS=SS/df、number of obs、F值、P值、R-squared、Adj R-squared、Root MSE=root mean squared error
2、coef.=beta系数、std.err=标准误、t值、P值、系数在95%的CI置信区间(stata里默认是双尾检验)
三、如何导出结果
(一)描述性统计导出
1、tabstat函数是描述性统计的函数,tabstat XX YY ZZ,s(N mean min max range) f(%12.3f) c(s) //f表示format格式,c表示column列,可以将统计的量放在列
2、安装logout:ssc install logout
3、logout,save(mytable) excel replace:tabstat XX YY ZZ //可以保存为word和excel格式,最好用excel格式
(二)相关系数表导出
1、pwcorr函数:pwcorr A B C;pwcorr_a函数需要下载,更方便(在GitHub网页上下载,arlionn老师写好的,具体教程如网址)
2、代码:logout,save(corr1) excel replace:pwcorr_a A B C //ABC分别表示3个变量
3、备注:cd (目录)可以改变文档存放的位置
Method 1
4、安装corr2docx:ssc install corr2docx
5、代码:corr2docx A B C using corr2.docx,star(***0.01**0.05*0.1) fmt(%4.2f) title("表2:相关系数矩阵")
Method 2(更美观-常用)
(三)T检验表格导出
1、安装ttable2:ssc install ttable2
2、代码:ttable2 A B C,by(D) f(%12.3f)
3、logout,save(ttable) excel replace:ttable2 A B C,by(D) f(%12.3f)
Method 1
4、安装t2docx:ssc install t2docx
5、t2docx A B C using ttable1.docx,replace by(D) title("表3 t检验”)
Method 2(美观且常用)
(四)多元回归结果导出
1、生成表格:estab m1 m2 m3 m4,using (文件夹路径\regout.rtf)b(%12.3f) se(%12.3f) nogap compress s(N r2 ar2) star(*0.1**0.05***0.01) //必须写rtf保存成word
2、b的意思是系数的格式,se表示std err格式,nogap compress表示没有空格压缩到一起,s表示统计量,r是R-squared,ar2是adj R-squared,T检验的标星