为什么 MICE 无法使用 2l.norm 和 2l.pan 估算多级数据?

机器算法验证 r 缺失数据 多重插补 老鼠
2022-03-30 05:33:24

在这种情况下,为什么 MICE 无法使用 2l.norm 和 2l.pan 估算多级数据?

这是一个可重现的示例:

require(foreign)
require(mice)
require(pan)

dt.fail <- read.csv("http://goo.gl/pg8um")
dt.fail$X <- NULL

dt.fail$out <- as.factor(dt.fail$out )
dt.fail$grp<- as.factor(dt.fail$grp)
dt.fail$v1<- as.factor(dt.fail$v1)
dt.fail$v2<- as.factor(dt.fail$v2)
dt.fail$v3 <- as.factor(dt.fail$v3)
dt.fail$v7<- as.factor(dt.fail$v7)
dt.fail$v8 <- as.factor(dt.fail$v8)
dt.fail$v9 <- as.factor(dt.fail$v9)
dt.fail$v11 <- as.factor(dt.fail$v11)
dt.fail$v12 <- as.factor(dt.fail$v12)

dt.fail <- dt.fail[!is.na(dt.fail$grp),]

PredMatrix <- quickpred(dt.fail)
PredMatrix['CTP',] <- c(1,-2,0,0,0,0,0,0,0,0,1,0,1,1,0,2)


impute = mice(
data=dt.fail, 
m = 1, 
maxit = 1,
    imputationMethod = c(
        "logreg",   # out
    "",     # grp   ----> cluster grouping factor
        "pmm",  # v1
        "polyreg",  # v2
        "logreg",   # v3
        "pmm",  # v4
        "logreg",   # v5
        "logreg",   # v6
    "polyreg",  # v7 
        "polyreg",  # v8 
        "polyreg",  # v9 
        "polyreg",  # v10
        "",     # v11 ----> complete
        "",     # v12 ----> complete
        "2l.pan",   # CTP ----> multilevel imputation
        ""),        # const ----> needed for multilevel impuitation
predictorMatrix = PredMatrix, seed = 101
)

这会产生以下错误:

Error in order(dfr$group) : argument 1 is not a vector

使用该2l.norm方法,它会产生以下错误:

Error in factor(x[, type == (-2)], labels = 1:n.class) :  invalid labels; length 20592 should be 1 or 2

使用pmm没有错误

1个回答

这是鼠标 2.15 及之前版本中的错误。mice.impute.2l.norm()如果集群变量是一个因素,mice.impute.2l.pan()则会失败。用作as.integer(dfr$group)数据中的临时修复。我将在未来的版本中解决这个问题。谢谢你的坚持。