分享

基础方法 | 用Stata完成量化论文全流程示例!附超详细do文件

 湖经松哥 2022-06-14 发布于湖北

Method 

量化研究已经逐渐成为社会科学研究的主流,其重要地位无需赘述。
 
好的选题+严谨的模型+熟练的软件操作=一篇好的论文
 
对于Stata的操作而言,市场上的书籍、课程等琳琅满目, 而本文侧重于如何使用Stata完成一篇量化论文的数据处理,满满的干货,相信各位读者尤其是初学者如果能够操作一遍,一定会对Stata的运用有所掌握。
图片

图片

图片

本文从数据清理、描述性统计、循环命令的使用、双变量分析、因子分析、线性回归、Logistic回归、表格输出等方面详细地介绍Stata的使用。
跑一个模型对于看似十分简单,的确也十分简单,只需要一行命令,但是“跑模型”的功夫尽在“模型”前。
在这里,我们利用CGSS2015数据,假定来研究“钱能买来快乐吗?”即收入对主观幸福感的影响
01 打开数据

方法1:通过命令方式

use 'D: cgss2015_14.dta', clear 

方法2:窗口点击(更推荐,不用写路径)

点击菜单栏第一个文件夹的标志,然后打开数据

图片

点击后会在屏幕上出现一行命令,可以将其复制到do文件中,便于下次使用

图片

02 查看数据/变量

例如:我们最关心的两个变量一个是收入,一个是主观幸福感,我们可以先查看一下变量的基本情况

tab a36

图片

sum a8a

图片

03 数据/变量管理
熟悉stata或者是量化研究处理流程的读者可能清楚,跑一个模型可能在这一步需要花费很大的力气,在这里我们将详细地来进行操作示范
*几个常用命令:gen  recode  rename  replace
 
*Part ONE 基本人口学变量处理
社会科学的研究中基本人口学变量是必不可少的,本部分的命令也可以复制到以后的其他研究中使用,事半功倍!
*性别
gen gender=a2 //生成一个新变量gendergender这个变量就是原来的a2变量
*年龄
gen age=2015-a301 //生成一个新变量age,这个变量为2015减去出生年
*民族
gen nation=a4
replace nation=. if nation<0 //stata中用.或者空格来表示缺失值,这样软件就能识别出,否则将会代入计算
recode nation (1=1 '汉族')(else=0 '少数民族'),gen(newnation)
*教育程度
gen edu=a7a
replace edu=. if edu<0
recode edu(1 2 3=1 '小学及以下')(4=2 '初中')(5 6 7 8=3 '高中(专)')(else=4 '大专及以上'),gen(newedu)
*政治面貌
gen party=0
replace party=1 if a10==4
replace party=. if a10<0
*户口
gen hukou= a18
recode hukou (1=0 '农业户口')(7=. )(else=1 '非农户口'),gen(urban)  //将没有户口处理为缺失值
global population  gender age newnation newedu party urban
/*定义全局宏,用处就是将上述所有人口学变量定义为population,在接下来的回归时就不
需要每个变量都敲一遍,通过输入$population就可以*/
*PART TWO 自变量处理
*我们的研究问题是:钱能不能买来快乐?我们用个人全年总收入测量“钱”,相关处理如下:
 gen income=a8a
 replace income=. if income<0
 /*在回归分析中有一个重要的假定,就是变量要服从正态分布,我们可以通过直方图的形式
 来观察变量是否服从正太分布,具体命令如下:*/
 hist income, percent normal title('收入分布')
 /*做完图之后我们发现,收入这个变量呈现明显的左偏的分布态势,根据统计学原理,
 针对左偏的变量我们一般采用取对数的形式来纠正,命令如下:*/
 gen lnincome=log(income+1)
 /*生成收入对数变量,选择收入+1的原因是,对数运算的数学原理中不允许出现0,而收入
 变量中有0值,为了让这些0收入的样本进入,我们将其+1,这也不会对最后的结果产生较大影响*/
 hist lnincome, percent normal title('收入对数分布') //调整之后收入对数是符合正态分布的
*PART THREE 因变量处理
*我们的研究问题是:钱能不能买来快乐?我们用主观幸福感测量“快乐”,相关处理如下:
gen happy=a36
replace happy=. if happy<0
 
*PART FOUR 控制变量
在研究中除了要控制基本的人口学变量之外,还要控制一些混杂因素,正常情况下,控制变量的选择要依照理论,这里仅为了方法上的展示,我们拟控制如下变量:个人能力和社会阶层这两个变量
*个人能力
/*我们拟采用CGSS问卷中的:您觉得自己的以下能力是什么水平?(问卷P11)进行测量
主要包括四个方面:听普通话、说普通话、听英语、说英语等能力,对于这四个题目我们
可以通过一个循环命令来解决,不需要繁琐的写很多命令,具体如下:*/
forvalue i=49/52{
  replace a`i'=. if a`i'<0
}
另外的一个问题,如果我们把这四个问题都放入模型会产生严重的多重共线性问题,
为了避免这一问题,我们可以用因子分析的方法解决,具体如下:
factor a49-a52
rotate
predict f1
rename f1 ability  //f1这个因子得分变量重命名为ability
*社会阶层
gen
replace class=. if class<0
global var class ability
04 回归分析
*PART ONE 一般线性回归
reg happy lnincome  //reg是线性回归的命令,后面第一个变量是因变量,其余顺序无要求
reg happy lnincome $population $var  //人口学变量和控制变量均利用全局宏简写
 
*PART TWO Logistic回归
ologit happy income  //ologit是序次logistic回归的命令,后面第一个变量是因变量,其余顺序无要求
ologit happy income $population $var
 
可以看出,回归分析只是一行命令而已,真正的工作是在第三步:数据/变量管理中
05 表格输出
经过一些列的数据分析后,到底如何将结果变成可以直接贴在论文的图表呢?
在这里介绍几个命令,可以将描述性统计以及回归分析的表格直接输入到word中。
*PART ONE 描述性表格输出
ssc install asdoc, replace //安装外部命令,用于表格输出
       
asdoc sum income lnincome happy $population $var, ///
      stat(N mean sd  p25 p75) fs(12) dec(2) ///
         save(summary1.doc)
stat表示需要输出的描述性统计变量,具体而言,
stat(N mean sd  p25 p75) 表示输出的统计变量为样本数、算术平均数、标准差、t 值、1% 分位数、99% 分位数,fs(#) Font size 的缩写,表示字号大小为 # 镑,dec(#) 为 Decimal points 的缩写,表示输出结果保留到小数点后 #
输出的结果如下图:
图片
 /*以下命令只能用于Stata15.0以上版本
ssc install sum2docx,replace
sum2docx income lnincome happy $population $var   ///
         using table1.docx,append obs mean(%9.2f) ///
               sd min(%9.0g) median(%9.0g) max(%9.0g)   ///
               title('表1描述性统计')
shellout table1.docx
*PART TWO 回归表格输出
*方法一:利用outreg2命令
ssc  install outreg2,replace //安装外部命令,用于表格输出
reg happy lnincome
est sto m1 //将这个模型保存为m1
reg happy lnincome $population $var 
est sto m2 //将这个模型保存为m2
outreg2 [m1 m2] using 'd:\', excel dec(3) alpha(0.001, 0.01, 0.05)
/*m1m2共同输出到表格中,保存到d盘,dec(3)指保留三位小数,alpaha()指显著性水平*/
 
*方法二:
findit ettab
reg happy lnincome
est sto m1 //将这个模型保存为m1
reg happy lnincome $population $var 
est sto m2 //将这个模型保存为m2
esttab m1 m2 using result.rtf,se r2 mtitle star(+ 0.1  * 0.05  ** 0.01)
/*m1和m2共同输出到表格中,输出包括标准误,r平方,和显著性水平,保存位置为当前cd的位置*/

图片

·END·
 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多