使用MICE套件进行插补后创建新变量

时间:2019-04-01 18:12:39

标签: r r-mice

我有两个时间点测得的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过滤的缩放?

非常感谢。

1 个答案:

答案 0 :(得分:0)

要访问x是1-17之间的值的每个插补值

data <- complete(imputed, x)

或者如果您想访问健身变量

complete(imputed, x)$fitness

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

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

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