MICE中的Stripplot

时间:2018-05-28 11:16:21

标签: imputation r-mice

我在R中使用MICE包进行多次插补。我只使用数值变量进行了几次插补,插补方法是预测均值匹配,当我使用命令stripplot(插入数据集的名称)时,我可以看到所有变量的观察值和估算值。

当我尝试对分类和数值变量的组合进行插补时,会出现问题。然后,插补方法是数值变量的PMM,以及分类变量的逻辑回归。 stripplot-command只显示数值变量。我试图用这些命令指定edu是一个带有2个值的分类变量:

stripplot(imp, imp$edu)
stripplot(imp, names(imp$edu))

我收到了这个错误:

  

stripplot.mids(imp,imp $ edu)出错:无法填充扩展公式。

有谁知道如何绘制数值和分类变量的观测值和估算值?

2 个答案:

答案 0 :(得分:1)

我只是遇到了类似的问题,所以我想我可以发布一个可以实现您的目标的答案,而不必提取估算的数据。

library(mice)

# Create dataset holding numerical and categorical data
a <- as.factor(rbinom(100, 1, 0.5))
b <- rnorm(100, 5, 1)
df <- cbind.data.frame(a, b)

# Randomly assign 10 NA values to each column
df$a[sample(length(df$a), 10)] <- NA
df$b[sample(length(df$b), 10)] <- NA

# Impute with ppm and logreg
init = mice(df, maxit=0)
meth = init$method
meth['a'] <- 'logreg'
imp <- mice(df, method = meth)

# This only plots b, the numerical
stripplot(imp)

# This plots both, as included below
stripplot(imp, a + b ~ .imp)

enter image description here

答案 1 :(得分:0)

您可以尝试的一件事是将估算的dataset检索为data.frame并使用普通的绘图函数。首先检索数据集,包括缺少值的原始数据集(imp是mice.mids对象,即运行鼠标的结果)

impL <- complete(imp,"long",include = T)

接下来添加一个虚拟表示哪些数据集被估算

impL$Imputed <- factor(impL$.imp >0,labels = c("Observed","Imputed"))

然后你可以使用每个变量的绘图函数。这样做的好处是可以创建更好的图。例如,使用ggplot(包ggplot2)在分类变量上创建条形图:

ggplot(impL[which(!is.na(impL$var1)),],aes(x = var1)) + 
geom_bar(aes(y = ..prop.., group = Imputed)) + facet_wrap(Imputed ~ ,ncol=1,nrow=2)

包含!is.na以避免绘制NA栏。 var1是您要绘制的变量。对于连续变量,您可以创建密度图。

ggplot(impL, aes(x = var2, colour = Imputed)) + geom_density()

要查看所有唯一的估算,您可以在aes括号中添加group = .imp。希望这有帮助