分享

缺失值的处理:多重插补

 Memo_Cleon 2022-04-04

数据缺失绝对是统计分析中最为常见的问题之一,我们却常常选择了忽视。最常见的做法莫过于直接把数据导入软件进行分析,可是大多数统计模型会直接忽略有缺失值的记录,相当于在分析前先行对缺失值进行列表删除。当缺失值比较多的时候,这种做法会丢失大量的信息,如果缺失是非完全随机的,还有可能带来错误的结论。

数据缺失机制:完全随机缺失(Missing Completely At RandomMCAR)、随机缺失(Missing At RandomMAR)、非随机缺失(Missing At Non-RandomMANR)。
MCAR是指数据的缺失是完全随机的,和变量自身或者其他变量的取值无关,实际中极为少见。MAR是指缺失值的丢失与本变量无关,而与数据集中其他(部分)变量有关。MANR是指数据的缺失不仅与其他变量的取值有关,也和自身取值有关。
缺失值的处理方法:1删除;(2)单独成组分析;(3填充
大多数统计模型并不能对含有缺失值的数据进行直接分析,一般会把缺失值直接进行删除。SPSS里面一般会在选项里面提供两种删除方法,Excludes Cases Analysis by Analysis(按具体分析的个案分析排除)和Excludes Cases Listwise(按个案列表排除)。Excludes Cases Analysis by Analysis是指只删除具体分析中涉及到的缺失值,Excludes Cases Listwise是指将存在缺失值的整个记录删除。如果是MCAR,直接将缺失值进行删除或者采用均值进行替换,不会存在问题。但现实当中MCAR非常少见,这种直接的暴力删除可能会导致有偏估计甚至错误的结论。
在有的分析方法中还会提供报告值(Report Values),指的是将缺失值作为一个单独的类别进行描述和分析。
缺失值填充的方法有很多,简单如直接用均值、众数进行填充,稍微复杂一些的如回归填充最大期望(Expectation-MaximizationEM多重插补(Multiple ImputationMI等。这里的Imputation其实就是估算的意思,不知道为什么翻译成了插补。。
此次笔记示例的是多重插补来填充缺失值。逻辑上,多重插补大致有三个步骤:(1)估算填充值:产生系列填充值对缺失值进行填充;(2)分析:对每个填充好的数据集进行统计分析;(3)合并结果:对第(2)步中的一系列结果进行综合。
示例来自一个虚构的病例对照研究,该研究用于研究吸烟与心脏病发作之间的关系(STATA 16帮助文件)。变量如下:Attack(心脏病发作)、Femal(是否女性)、Age(年龄)、BMI(体质指数)、MarStatus(婚姻状态,1=单身,2=结婚,3=离异)、HSGrad(是否高中毕业)、Alcohol(饮酒,0=不饮酒,1每天<=2次,2=每天2次或2次以上)、HighTar(是否抽高焦油香烟)。
去掉原数据库中的缺失值作为本次示例的原始数据(132例),然后随机删除5条记录的年龄值(Age)、20条记录的饮酒情况(Alcohol)、12条离异状态记录的的婚姻状态(MarStatus)、570岁以上的+1060-70岁的BMI记录(BMI)、10条高中未毕业的焦油含量(HighTar)记录。这样以来我们构建的缺失数据类型就涵盖了MCARAgeAlcohol)、MARBMI、HighTar)和MANRMarStatus)。考虑到吸烟和高焦油香烟相关性,本次示例我们仅利用AttackFemalAgeBMIMarStatusHSGradAlcoholSmoker8个变量。
我们先看一下利用原始的132例进行二分类的logistic回归拟合结果:

这个结果可以当成最佳的对照结果,后面我们填充后的数据建模结果也可以此比较。由于数据为虚拟的,大家不要太在意专业结论,比如饮酒是心脏病发作的保护因素,虽然没有统计学意义。

缺失模型分析

Analyze >> Multiple Imputation >> Analyze Patterns...


缺失值的总体摘要:分别从变量、个案和值三个方面用饼图显示数据的缺失值。本例分析了8个变量,其中4个变量存在缺失;132条记录中33条存在缺失;所有取值中有52个存在缺失。平均而言,每个具有缺失值的个案大约有 1.6 个(52/33)变量存在缺失值,如果直接按列表删除会丢失大量的信息。

变量摘要:默认输出至少有10%缺失值的变量,并显示这些变量的缺失值数量和百分比。如果想显示更多变量的摘要情况可在前面的模式分析对话框中进行修改。

缺失值模式图:每个模式对应的是一组具有相同的不完整和完整数据个案集合。比如模式1代表的是没有缺失值的个案,而模式2 表示婚姻状态上有缺失值的个案,模式9表示在年龄、BMI和饮酒上存在缺失的个案。

该图中对缺失模型和分析变量的排序是有要求的,模式按非缺失值到有缺失值排列,变量按缺失值的递增顺序从左到右排序。可以以此判断是否可以采用单调插补法来填充缺失值(多重插补缺失值估计的一种方法),如果数据是单调的,那么图中所有缺失的单元格和非缺失的单元格都是连续的,即图表的右下部分不会有孤立的非缺失单元格,而在左上角也不会出现孤立的缺失单元格。如果数据集是非单调的需要估算更多的值。

缺失值模式的个案百分比:结果显示数据集中超70%的个案具有模式 1,结合上面的缺失值模式图,模式1是没有缺失值的个案。模式5表示饮酒缺失值的个案,是单变量缺失。接下来42分别表示婚姻状态+BMI缺失和婚姻状态缺失模型,其中模式4是多变量缺失。
设置种子
多重插补的算法具有随机性,为了使结果具有可重复性。可以在数据插补前设置种子。
Transform >> Random Number Generators...
选中设置激活生成器,选择Mersenne Twister;选择设置起始点,选中固定值,输入20220403OK
多重插补

Analyze >> Multiple Imputation >> Impute Missing Data Values...

将要分析8个变量放入模型变量框,插补后数据框命名为MI_Data,选中填充后的描述统计,其他默认。方法部门的介绍可参见结果部分,约束条件可以从专业方面定义哪些变量作为预测变量用来预测填充变量。

插补估算的一些具体说明,可以确定我们的设置是否合适。

插补结果:本例采用的缺失值估算方法是默认的自动,实际采用的是全条件定义(fully conditional specification, FCS)多重插补策略对缺失后的数据集进行处理。FCS也被称为通过链式方程进行的多重插补(Multiple Immutation by Chained EquationsMICE)或顺序回归多重填充(Sequential Regression Multiple Immutation)。在多重插补对话框【方法】选项卡中默认的是[自动],自定义中有FCS和单调插补法,连续变量的模型类型为线性回归或者预测均值匹配(Predictive Mean MatchingPMM)。本例需要进行估算缺失值的变量有AgeBMIMarStatusAlcohol,插补顺序为缺失模式图中横坐标变量的顺序,预测变量为AttackSmokerFemaleHSGradAgeMarStatusBMIAlcohol

插补模型:提供了如何估算每个缺失变量的更多详细信息,变量按插补序列顺序列出,每个模型都使用其他所有变量作为预测因素,尺度变量用线性回归建模预测,分类变量用逻辑回归建模预测。结果中同时报告了缺失变量的缺失值数,以及为该变量估算的总个数(缺失数×估算数)。

描述性统计量:分别输出缺失变量的原数据、插补数据及插补后数据的信息,连续变量输出样本量、均值、标准差、最大值和最小值,分类变量输出的是个水平的样本量及百分比。本例输出缺失变量AgeBMIMarStatusAlcohol的信息。以AgeMarStatus为例,信息如下:

多重插补后数据建模分析

插补缺失值只是一个过程,我们的最终目的是对插补后的数据进行分析。插补后的数据集增加了一个名称为Imputation_的变量和一个“窗口”的图标,用于用于指示原始数据集和用不同值来填充缺失值后的数据集。在插补后的数据集中,菜单中很多分析过程图标增加了一个旋风标记,如线性回归、logistic回归等,这些过程可直接用于填充后的数据分析。本例分析的是吸烟对心脏病发作的影响,其他几个因素作为校正。

Analyze >> Regression> >Binary Logistic...
具体操作就是一个简单的二分类logistic回归,过程如下:

结果会依次显示个案处理摘要、因变量编码、分类变量编码以及拟合过程的一些信息,具体解读可参见《因变量二分类资料的logistic回归》。
我们仅展示最后的回归系数表,结果显示采用原数据(不进行缺失值填充,列表删除)、5次不同填充数据的分析结果以及5次填充数据合并分析(Pooled Parameter Estimates)结果。与构建缺失数据前的原始数据构建的对照模型相比,有些变量如饮酒表现的并不是很好,可能需要我们在构建模型时需要充分考虑变量间的关系,当然我们不能事后诸葛亮,现实当中我们是没法知道数据缺失前本来的面貌的。不过从统计学意义上看,结果具有一致性。再次提醒本示例为虚拟数据,不要太在意不合常理的专业结论。

表格中有三个额外的参数提供了合并分析结果的更多信息。 缺失信息的比例Fraction Missing Info.)是缺失信息与完整信息之比的估计值,基于由于不能存在该变量时导致的相对增加方差(Relative Increase Variance),即回归系数的插补间方差与平均插补内方差的修正比值。相对效率(Relative Efficiency)是目前的填充估计结果与使用无限数量的插补计算的(理论上的最大值)估计的比值,其由缺失信息的比例和获得合并结果的插补次数来决定,值越接近1表示填充效果越好,本例表现甚好。当缺失信息的比例很大时,需要进行更多的插补,以使合并估计更接近理想化估计。

最后的这个参数估计表是如此之大以至于查看起来非常不方面,Pivoting Trays可以提供一些有用的帮助,该功能类似于excel中的透视表。双击表格进入编辑模型,右键单击选中复选框Pivoting Trays,将插补号(Imputation Number)/变量(Variable)/统计量(Statistics)拖入到层即可!

这样我们就可以像excel中的透视表那样快速查看原始数据、任何一次的插补及最终的合并的结果了。比如我们就可以快速查看系数估计值在不同插补回归之间的变化,也可以查看多重插补如何降低系数估计值与列表删除(原始数据)的变异性。

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多