钱能买来快乐吗?用Stata完成量化论文全流程示例

教育   2025-02-04 20:30   黑龙江  

来点方法


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的位置*/




点亮在看👇  

量化研究方法
以量化之思想认识世界,体会量化之美。
 推荐账号,扫码关注
推荐账号二维码
 最新文章