在使用 MICE 包进行插补后创建新变量

Creating new variables after imputation with the MICE package

我有在两个时间点测量的 1000 个人的纵向面板数据。使用 MICE 包,我为那些缺少数据的变量估算了值。插补本身工作正常,生成所需的 17 个插补数据帧。估算变量之一是 fitness。我想创建一个新的适应度缩放变量,scale(fitness)。我的理解是我应该先估算,然后用估算的数据创建新变量。我如何访问 17 个估算数据集的每一个并在每个数据集中生成一个缩放的适应度变量?

我的原始数据框看起来像(缺少一些变量):

      id   age school   sex      andersen ldl_c_trad  pre_post
   <dbl> <dbl>  <fct>  <fct>        <int>      <dbl>     <fct>
 1     2  10.7      1      1          951       2.31         1
 2     2  11.3      1      1          877       2.20         2
 3     3  11.3      1      1          736       2.88         1
 4     3  11.9      1      1          668       3.36         2
 5     4  10.1      1      0          872       3.31         1
 6     4  10.7      1      0          905       2.95         2
 7     5  10.5      1      1          925       2.02         1
 8     5  11.0      1      1          860       1.92         2
 9     8  10.7      1      1          767       3.41         1
10     8  11.2      1      1          709       3.32         2

我的插补代码是:

imputed <- mice(imp_vars, method = meth, predictorMatrix = predM, m = 17)

imp_vars 是选择用于插补的变量。 我已经预先指定了方法和预测矩阵。

此外,我的假设是缩放应该针对每个时间点单独执行,因为适应度可能会随着时间的推移而提高。是否可以对每个估算数据集执行 pre_post 过滤的缩放?

非常感谢。

访问每个插补,其中 x 是 1-17

中的一个值
data <- complete(imputed, x)

或者如果您想访问适应度变量

complete(imputed, x)$fitness

如果您想根据数据框中另一个变量的值过滤观察结果,您可以使用

data[which(data$pre_post==1), "fitness"]

这应该 return pre_post==1 时的适应度观察值,从那里开始,只需为 pre_post 的每个级别缩放这些观察值,将它们分配给另一个变量 fitness_scaled 然后对每个插补重复 1-17.