以下文章来源于来点方法 ,作者金助理的方法
数据管理的重要性
·一些初学者可能意识不到数据管理的重要性,认为数据到手,软件打开,就也可以跑出模型,这种想法是大错特错的
·没有任何一份数据是能拿到手就做模型分析的,必须经过数据清理
·通常情况下无论多复杂的模型,他的命令也只会有一行,定量研究的工作基本全是在前期数据的清理。
·例如:所有的数据库中都不会有年龄变量,都需要根据出生年生成
数据管理如何做?Stata&R语言应用
1.缺失值的处理(处理为系统可识别)
一般而言数据中的缺失值以负数或者一个极端不可能值替代,例如99999等,但是软件并不认为负数或极端数是缺失值,需要处理成软件可识别的缺失值,如果不处理软件会带入计算
Stata:replace happy==. if happy==-8
R语言:cgss$happy[cgss$happy== -8] <- NA
(其中happy为变量名)
2.奇异值的识别:箱线图
一般在连续变量中奇异值存在的可能性比较大,例如收入。为什么要识别奇异值?
从统计上来说,奇异值的存在严重影响模型估计,最简单的理解是,有极大值存在,均值就会受到非常大的影响。
Stata:gr box income
R语言:boxplot(cgss$income)
(其中income为变量名)
3.变量分布的识别
在回归分析中有一个重要的假定,就是变量要服从正态分布,我们可以通过直方图的形式来观察变量是否服从正太分布
Stata:hist income
R语言:hist(cgss$income)
(其中income为变量名)
4. 变量的生成
例如,一般的数据中都不会直接有年龄这一变量,均是报告的出生年份,所以年龄变量需要生成
Stata:gen age=2015-birth
R语言:cgss$age<-2015-cgss$birth
(其中birth为变量名)
5.样本的筛选
例如:我们研究只关心60岁以下的人群怎么办?或者专门研究老年人,该怎么办?
Stata:keep if age>=60 #只保留年龄在60岁以上的样本
R语言:cgss<-filter(cgss,cgss$age>=60)
6. 变量的重新编码
例如:性别变量在数据中的编码,男性=1,女性=2
但是一般情况下,我们会把女性编码0,男性编码为1,这样软件就会自动识别这是一个虚拟变量并把0作为参照组,否则他会当做连续变量计算
Stata:recode gender (1=1 "男性")(2=0 "女性"),gen(newgender)
R语言:cgss$newgender<-as.factor(recode(as.numeric(cgss$gender),'2'=0,))
以上为大家总结了R语言和Stata中关于数据管理常用的命令,当然数据管理还有很多的内容需要掌握,这里给大家推荐一本书《Stata数据管理教程》
该书由南京大学社会学院许琪副教授编撰,详细地讲解了数据管理中的各个环节,并辅以stata软件操作。
转自:“量化研究方法”微信公众号
如有侵权,请联系本站删除!