【问题标题】:How to specify which rows to be imputed with MICE?如何指定要使用 MICE 估算的行?
【发布时间】:2017-03-14 14:16:13
【问题描述】:

如何通过链式运行多元插补 此数据集的带有 mouse() 的方程,使用第 1:10 行,但仅预测第 #11 行?

library(mice)
library(car)

df = mtcars[c(1:10), c(3:5)]
df[c(1:3), c(1)] = NA
df[c(4:7), c(2)] = NA
df[c(8:10), c(3)] = NA

df[nrow(df) + 1, names(df)] <- NA
                   disp  hp drat
Mazda RX4            NA 110 3.90
Mazda RX4 Wag        NA 110 3.90
Datsun 710           NA  93 3.85
Hornet 4 Drive    258.0  NA 3.08
Hornet Sportabout 360.0  NA 3.15
Valiant           225.0  NA 2.76
Duster 360        360.0  NA 3.21
Merc 240D         146.7  62   NA
Merc 230          140.8  95   NA
Merc 280          167.6 123   NA
11                   NA  NA   NA
imp = mice(df, m = 10, seed = 52545, print = FALSE)

这段代码运行完美,但mice() 试图预测所有的NA。我不想花费资源来计算这些,我只需要预测第 11 行。

【问题讨论】:

  • 关于如何在 R 中编码的问题不在此处讨论。这应该是关于Stack Overflow 的主题,所以如果您等待,我们将尝试将其迁移到那里。
  • @gung 对不起,我之前也是这么想的。我可以帮助您加快迁移速度吗?
  • 没问题。为加快迁移速度,您可以点击标签下方淡灰色的“旗帜”,让版主帮您迁移。
  • 如果您唯一关心的是计算资源,那么您试图实现的目标根本没有任何意义。因为,多重插补过程中计算量最大的部分涉及模型构建阶段,其中对于具有缺失值的每一列,使用所有可用数据基于剩余列构建预测模型。简单地根据模型替换缺失值是微不足道的,与整个插补过程相比,将使用可忽略不计的资源量。
  • @Ahmedov 感谢您的关注。目前,我对任何形式的计算改进都很满意。

标签: r filter r-mice


【解决方案1】:

MICE 将尝试估算数据中的所有 NA,即它假设所有缺失的观测值都应该被估算。

因此,您可以做的是用其他值替换您不想估算的 NA 数据点。

这样做的缺点是您可以期望这些值在缺失数据中显示为值。

library(mice)
library(car)

df = mtcars[c(1:10), c(3:5)]
df[c(1:3), c(1)] = "not na"
df[c(4:7), c(2)] = "not na"
df[c(8:10), c(3)] = "not na"

df[nrow(df) + 1, names(df)] <- NA
                   disp  hp drat
Mazda RX4            NA 110 3.90
Mazda RX4 Wag        NA 110 3.90
Datsun 710           NA  93 3.85
Hornet 4 Drive    258.0  NA 3.08
Hornet Sportabout 360.0  NA 3.15
Valiant           225.0  NA 2.76
Duster 360        360.0  NA 3.21
Merc 240D         146.7  62   NA
Merc 230          140.8  95   NA
Merc 280          167.6 123   NA
11                   NA  NA   NA

imp = mice(df, m = 10, seed = 52545, print = FALSE)

【讨论】:

  • 感谢您的回答!我认为像这样改变价值观在这里不是解决方案。这样做会改变数据完整性。
  • 这确实是我刚刚体验过的 :) 作为一个非常讨厌的补丁,您可以通过在交替值的地方插入 NA 并再次运行 MICE 来迭代该过程,直到您摆脱它们为止。但我什至觉得写这篇文章很糟糕。如果您找到解决方案,请在此处更新,这将非常有用。谢谢!
  • 请看下面的小插曲(第2个)gerkovink.com/miceVignettes你可以简单地让老鼠,不使用某些变量来预测(或不用作预测器)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-11-03
  • 2022-08-24
  • 2017-02-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-04
相关资源
最近更新 更多