【问题标题】:How to create a new variable with the imputed MICE data如何使用估算的 MICE 数据创建新变量
【发布时间】:2021-04-29 17:40:45
【问题描述】:

我已经用老鼠估算了我的数据,但现在我需要用估算的变量创建一个索引。我希望这个新变量出现在我对估算数据的所有迭代中,以便之后汇集回归结果。我将使用鼠标附带的数据集 (nhanes) 来解释我的问题

library(mice)
data_imp <- mice(nhanes, 
            m = 5, 
            maxit = 10, 
            seed = 23109)

这个数据集有 4 个变量(age、bmi、hyp、chl)。想象一下,我想为所有 5 个模型添加一个新变量,其平均值为 bmi 和 chl,即 bmi_chl。

我想使用一个 for 循环,所以它对所有 5 个模型进行操作。


for (i in 1:length(data_imp)) {data_imp$imp[[i]]$bmi_chl <-
    rowMeans(data_imp$imp[[i]][,c("bmi","chl")], na.rm = T)
}

首先代码不起作用。但我注意到数据存储方式的另一个问题。一项中包含原始数据,另一项中包含估算列表。但是,推算列表没有原始数据,只有推算数据条目...我如何设法在所有 5 个具有所有观察值的推算模型中获取我的新变量?

【问题讨论】:

  • 您提供的代码没有定义data_imp。你用complete()了吗?显示所有相关代码。
  • 我已经修复了代码,推算的数据应该被命名为 data_imp 而不是 imp

标签: r r-mice


【解决方案1】:

一旦您提取了插补数据框,您可以使用lapply 为其余数据添加一个新列:

library(mice)
data_imp <- mice(nhanes, 
            m = 5, 
            maxit = 10, 
            seed = 23109)
imputed.dfs <- complete(data_imp, "all")
imputed.dfs <- lapply(imputed.dfs, function(x) data.frame(x, bmi_chl=rowMeans(x[,c("bmi", "chl")])))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-08-24
    • 2020-02-04
    • 2017-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-03
    相关资源
    最近更新 更多