条件/归一化多重插补

机器算法验证 r 状态 多重插补
2022-04-07 17:33:32

假设我有一个具有特定结果的数据集Y, 协变量X,以及某个状态变量Z,它可以采用有限(少量)的值,例如 1、2 和 3。数据集中可能缺少这些变量中的任何一个,所以我想乘以估算我的数据。在模型的估算之上Y|{X,Z},我想获得归一化的插补Y|{X,Z=1}- 即,强制我的预测变量之一设置为特定级别。

上下文有点类似于第二节中的 BMI 骗子练习。7.3 在Stef van BuurenFIMD 书中状态Z对应于不同的测量来源Y,我怀疑状态Z=1是最准确的,所以我想了解一下结果Y如果每个人都使用源进行测量Z=1. 不同之处在于我没有任何平行的措施,比如他的自我报告和测量的 BMI。所以我需要在计算上运行老化,校准插补模型,并在最后一次迭代中Y, 代替Z=1而不是它的实际值或预测值。可能有一种方法可以创建一个恒定的被动变量=1,但随后它会从插补方程中删除,因为它与截距项共线。如果我只是创建一个副本Y并使其丢失Z1, 并放YZ作为预测器,然后我得到一个带有奇异矩阵的完美预测,所以这也是不行的。

任何想法如何使用合理的标准包来实现?我想为此使用 Stata 或 R。

2个回答

以下是Stata原始多重插补的贡献者之一Ian White的建议: ice

我假设您相信 Y|X 的分布“如果 Z 为 1”等于 Y|X 在观察到的 Z 等于 1 的子组中的分布。

我认为您可以按以下方式执行此操作。

  1. 以通常的方式估算,例如使用ice x y, by(z) m(5) clear

  2. 在估算数据集中,删除 的所有估算值y 所有观察值yz<>1

  3. 估算 y 例如使用uvis y x, gen(yimp) by(_mj)

我认为一个选项将遵循predicton newdatain的类比R这假设使用mice单一估算,然后在老化和收敛后访问最终的回归模型。然后使用该模型进行一次性预测,如数据集在predict.glm哪里newdataZ=1已更换所有单位和xy是估算数据的副本。

或者,您也可以创建多个估算数据集,为您提供可在新数据框上使用的参数集,再次Z=1在整个过程中,为您提供多重插补数据集以进行方差控制。

通过这种方式,您当然可以获得所有单元的预测,即使是那些没有丢失数据的单元,但是您可以用最初观察到的信息再次替换这些预测。

这种方法的唯一困难是如何在mice. 快速浏览文档(第 77 页)显示模型参数不是mids对象中的默认输出。这可能需要联系作者或按照 van Buuren (2012) 或 Raghunathan (2001) 自己通过链式方程对插补进行编程。


Raghunathan, TE, Lepkowski, J., van Hoewyk, J., & Solenberger, P. (2001)。一种使用一系列回归模型对缺失值进行多重插补的多元技术。调查方法,27 (1), 85–95。

范布伦,S.(2012 年)。缺失数据的灵活插补博卡拉顿:CRC 出版社。