首页 > 解决方案 > R:MICE 和向后逐步回归

问题描述

我使用以下代码估算了我的数据:

data_imp <- mice(data, m=5, maxit=50, meth='pmm', seed=500, printFlag=FALSE)

data.impute <- complete(data_imp, action = 1)

我想使用 stepAIC 函数执行向后逐步回归,以找到最简约的模型。如何使用我的所有 5 个估算数据集而不是仅 1 个来做到这一点?

非常感谢!

标签: rregressionlinear-regressionlogistic-regressionr-mice

解决方案


您必须将其分别应用于每个数据集;请参阅下面的一些示例代码。

然而,让我在这里也给你两个巨大的免责声明:

  1. 向后逐步回归真的不推荐用于变量选择。此外,对于估算数据集,还有更好的方法可以做到这一点。

  2. 从下面的代码中,您仍然需要决定如何将您的结果集中到一个可解释的集合中。一种方法是简单地计算每个变量在最终模型中出现的频率。但是,此过程隐含地会丢失信息。

可以在此处找到对这些要点的更广泛讨论: https ://stats.stackexchange.com/questions/110585/stepwise-regression-modeling-using-multiply-imputed-data-sets

作者mice在他的书中还有一个关于变量选择的子章节: https ://stefvanbuuren.name/fimd/sec-stepwise.html

因此,我会考虑是否有更好的选择适合您。

示例代码

## I am using `mtcars`
## Let's ampute it, then impute it
data_imp <- mice(ampute(mtcars, prop = 0.001)$amp)

## Next, we loop over all imputed datasets
out <- lapply(seq_len(data_imp$m), function(i) {

  ## We create a dataset
  data.i <- complete(data_imp, i)

  ## We run our model
  fit <- lm(mpg ~ ., data = data.i)

  ## We apply `stepAIC`
  stepAIC(fit, trace = FALSE)
})

推荐阅读