vlambda博客
学习文章列表

基础方法 | 数据管理:Stata与R语言的应用

今天主要来带大家重温一下数据管理,并提供了Stata和R语言的操作。

 
数据管理的重要性
  • 一些初学者可能意识不到数据管理的重要性,认为数据到手,软件打开,就也可以死出模型,这种想法是大错特错的
  • 没有任何一份数据是能拿到手就做模型分析的,必须经过数据清理
  • 通常情况下无论多复杂的模型,他的命令也只会有一行,定量研究的工作基本全是在前期数据的清理。
  • 例如:所有的数据库中都不会有年龄变量,都需要根据出生年生成
 
数据管理如何做?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 更加简洁一些。