今天主要来带大家重温一下数据管理,并提供了Stata和R语言的操作。
数据管理的重要性
- 一些初学者可能意识不到数据管理的重要性,认为数据到手,软件打开,就也可以死出模型,这种想法是大错特错的
- 没有任何一份数据是能拿到手就做模型分析的,必须经过数据清理
- 通常情况下无论多复杂的模型,他的命令也只会有一行,定量研究的工作基本全是在前期数据的清理。
- 例如:所有的数据库中都不会有年龄变量,都需要根据出生年生成
数据管理如何做?Stata&R
语言应用
1.
缺失值的处理(处理为系统可识别)
一般而言数据中的缺失值以负数或者一个极端不可能值替代,例如99999
等,但是软件并不认为负数或极端数是缺失值,需要处理成软件可识别的缺失值,如果不处理软件会带入计算
Stata
:replace happy==. if happy==-8
R
语言:cgss$happy[cgss$happy == -8] (
其中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(
其中birth
为变量名)
5.
样本的筛选
例如:我们研究只关心
60
岁以下的人群怎么办?或者专门研究老年人,该怎么办?
Stata
:keep if age>=60 #
只保留年龄在60
岁以上的样本
R
语言:cgss=60)
6.
变量的重新编码
例如:性别变量在数据中的编码,男性=1
,女性=2
但是一般情况下,我们会把女性编码0
,男性编码为1
,这样软件就会自动识别这是一个虚拟变量并把0
作为参照组,否则他会当做连续变量计算
Stata
:recode gender (1=1 "
男性")(2=0 "
女性"),gen(newgender)
R
语言:cgss$newgender
以上为大家总结了R
语言和Stata
中关于数据管理常用的命令,通过比较来看,二者在命令上有着一定的相似之处,总体而言Stata
更加简洁一些。