缺失值处理实例分析
本例中的数据是纽约市家庭的社会指标电话调查数据,每两年由哥伦比亚大学社会工作学院组织进行的。请进行如下步骤的数据分析工作:
1.数据准备及数据预处理
(1)将数据siswave.csv读入R后命名为wave,使用attach(wave)函数激活该数据集。
(2)生成名为earnings的新变量列(要求:单位是$1000,原始数据单位是$),表示家庭总收入,它是由rearn(响应者收入)和tearn(响应者配偶收入)两部分加起来生成的。注意要将rearn和tearn中的负数分配为NA后再求和。统计earnings变量的缺失百分比。
(3)生成名为white的新变量列,若race of respondent(1=white, 2=black, 3=hispanic(nonblack), 4=other)是1则white=1,否则white均为0。考虑如果race变量有缺失的情况,若缺失则white也为0。(这个步骤就是一个训练数据处理的步骤,如果原数据中有white覆盖掉即可)
(4)生成名为male的新变量列,男性male=1,女性male=0。依据是wave中的变量列sex: male是1, female是2。
(5)生成名为over65的新变量列,年龄超过65则over65=1,否则over65=0。依据是wave中的年龄变量r_age。
(6)将变量immig中的缺失值均用0插补。immig=0表示是美国公民, immig=1 则不是美国公民。
(7)educ_r表示不同的教育水平。如果是NA,用2.5替换。1至4表示不同的教育水平,依次增高。
(8)分别基于变量ssi,welfare,charity,生成名为any.ssi,any.welfare,any.charity的变量,将正值赋值为1,其他负值或缺失值都赋值为0。
ssi: supplemental security Income for entire family
welfare: public assistance for entire family
charity: income received from charity for entire family
-9: 响应者拒绝回答是否有此来源收入;
-5:响应者有此项收入但没提供收入数目
2.缺失模式探索(Exploration of Missing pattern)
(1)基于原始数据wave,生成一个新的数据框,命名为sis.sm,它依次包括sex, race, edu_r, r_age, earnings, police。给这些不同列合适的类型,比如sex, race, police都设置成因子型(factor)。edu_r设置为有序的因子。
(2)判断其中的变量earnings是否是MCAR
(3)查看数据sis.sm的缺失模式,可视化该数据的缺失状况。
(4)如果观测中的缺失变量个数百分比超过30%,则删除这个缺失观测。统计数据sis.sm删除了多少观测,保留多少观测。
3.简单随机插补(simple random imputation)
简单随机插补是从存在缺失的变量的已有观测值中随机抽取一个值来插补缺失值。本小题的任务是定义一个名为random.impute的R函数,该函数可以对变量进行随机插补后返回具有完整观测的变量列。然后使用该函数对变量earnings进行简单随机插补。
4.回归插补(Using regression predictions to perform deterministic imputation)
(1)生成新变量earnings.top,将收入earnings超过$100,000的修改为$100,000。目的是避免收入特别高的观测值影响回归结果,有些收入甚至上百万美元。
(2)生成新变量workhrs.top,将工作小时数workhrs中每周超过40小时的设置为40小时。虽然有些响应者确实工作时间会超过40小时,这样简单的变换可能提高回归模型的预测性能,避免极端值的影响。
(3)生成一个数据框名为SIS,包含变量列earnings,earnings.top,male,over65,white,immig,educ_r,workmos,workhrs.top,any.ssi,any.welfare,any.charity.
(4)以earnings中的非零且非缺失观测值为被解释变量,建立一个回归模型,解释变量是male,over65,white,immig,educ_r,workmos,workhrs.top,any.ssi,any.welfare,any.charity.将earnings中的缺失值使用该模型的预测值进行插补。
5.随机回归插补(Random regression imputation):对earnings中的缺失值进行插补,通过在上一步回归模型的预测值中增加误差可以将不确定性添加到插补值。