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

本文从数据清理、描述性统计、循环命令的使用、双变量分析、因子分析、线性回归、Logistic回归、表格输出等方面详细地介绍Stata的使用。跑一个模型对于看似十分简单,的确也十分简单,只需要一行命令,但是“跑模型”的功夫尽在“模型”前。在这里,我们利用CGSS2015数据,假定来研究“钱能买来快乐吗?”即收入对主观幸福感的影响方法1:通过命令方式 use 'D: cgss2015_14.dta', clear 方法2:窗口点击(更推荐,不用写路径) 点击菜单栏第一个文件夹的标志,然后打开数据  点击后会在屏幕上出现一行命令,可以将其复制到do文件中,便于下次使用
例如:我们最关心的两个变量一个是收入,一个是主观幸福感,我们可以先查看一下变量的基本情况 tab a36 
sum a8a  熟悉stata或者是量化研究处理流程的读者可能清楚,跑一个模型可能在这一步需要花费很大的力气,在这里我们将详细地来进行操作示范*几个常用命令:gen recode rename replace社会科学的研究中基本人口学变量是必不可少的,本部分的命令也可以复制到以后的其他研究中使用,事半功倍! gen gender=a2 //生成一个新变量gender,gender这个变量就是原来的a2变量gen age=2015-a301 //生成一个新变量age,这个变量为2015减去出生年replace nation=. if nation<0 //在stata中用.或者空格来表示缺失值,这样软件就能识别出,否则将会代入计算recode nation (1=1 '汉族')(else=0 '少数民族'),gen(newnation)recode edu(1 2 3=1 '小学及以下')(4=2 '初中')(5 6 7 8=3 '高中(专)')(else=4 '大专及以上'),gen(newedu)replace party=1 if a10==4recode hukou (1=0 '农业户口')(7=. )(else=1 '非农户口'),gen(urban) //将没有户口处理为缺失值 global population gender age newnation newedu party urban/*定义全局宏,用处就是将上述所有人口学变量定义为population,在接下来的回归时就不需要每个变量都敲一遍,通过输入$population就可以*/ *我们的研究问题是:钱能不能买来快乐?我们用个人全年总收入测量“钱”,相关处理如下: 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('收入对数分布') //调整之后收入对数是符合正态分布的 *我们的研究问题是:钱能不能买来快乐?我们用主观幸福感测量“快乐”,相关处理如下: replace happy=. if happy<0在研究中除了要控制基本的人口学变量之外,还要控制一些混杂因素,正常情况下,控制变量的选择要依照理论,这里仅为了方法上的展示,我们拟控制如下变量:个人能力和社会阶层这两个变量 /*我们拟采用CGSS问卷中的:您觉得自己的以下能力是什么水平?(问卷P11)进行测量主要包括四个方面:听普通话、说普通话、听英语、说英语等能力,对于这四个题目我们可以通过一个循环命令来解决,不需要繁琐的写很多命令,具体如下:*/另外的一个问题,如果我们把这四个问题都放入模型会产生严重的多重共线性问题,为了避免这一问题,我们可以用因子分析的方法解决,具体如下:rename f1 ability //将f1这个因子得分变量重命名为ability replace class=. if class<0 reg happy lnincome //reg是线性回归的命令,后面第一个变量是因变量,其余顺序无要求reg happy lnincome $population $var //人口学变量和控制变量均利用全局宏简写ologit happy income //ologit是序次logistic回归的命令,后面第一个变量是因变量,其余顺序无要求ologit happy income $population $var可以看出,回归分析只是一行命令而已,真正的工作是在第三步:数据/变量管理中经过一些列的数据分析后,到底如何将结果变成可以直接贴在论文的图表呢?在这里介绍几个命令,可以将描述性统计以及回归分析的表格直接输入到word中。ssc install asdoc, replace //安装外部命令,用于表格输出asdoc sum income lnincome happy $population $var, /// stat(N mean sd p25 p75) fs(12) dec(2) ///stat(N mean sd p25 p75) 表示输出的统计变量为样本数、算术平均数、标准差、t 值、1% 分位数、99% 分位数,fs(#) 为 Font size 的缩写,表示字号大小为 # 镑,dec(#) 为 Decimal points 的缩写,表示输出结果保留到小数点后 # 位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) ///ssc install outreg2,replace //安装外部命令,用于表格输出 reg happy lnincome $population $var outreg2 [m1 m2] using 'd:\', excel dec(3) alpha(0.001, 0.01, 0.05)/*将m1和m2共同输出到表格中,保存到d盘,dec(3)指保留三位小数,alpaha()指显著性水平*/reg happy lnincome $population $var esttab m1 m2 using result.rtf,se r2 mtitle star(+ 0.1 * 0.05 ** 0.01) /*m1和m2共同输出到表格中,输出包括标准误,r平方,和显著性水平,保存位置为当前cd的位置*/
|