尝试对多层数据进行插补时,MICE出现错误。

5

我一直在处理一个问题,使用mice来填补两个层级上都有缺失数据的多层数据。花了些时间,但最终我成功地重现了错误,似乎是当mice试图在函数中创建已记录事件时发生的。我有一个变量表示测试版本,但仅对第一次测量有效(之后是一个常数)。这个变量似乎导致了错误。

使用"2lonly.pmm"作为mice的填充方法时,会返回错误:Error in get("state", parent.frame(frame)) : object 'state' not found使用其他任何方法都不会出错。通常情况下,mice会创建一个已记录事件,说明变量(或因子情况下的某个级别)从填充过程中删除。但是当方法为"2lonly.pmm"时,它不会创建已记录事件。非常感谢任何帮助解决此问题的人。

这是mice.impute.2lonly.pmm帮助页面上的数据集:

G <- 250            # number of groups
n <- 20             # number of persons
beta <- .3          # regression coefficient
rho <- .30          # residual intraclass correlation
rho.miss <- .10     # correlation with missing response
missrate <- .50     # missing proportion
y1 <- rep( rnorm( G , sd = sqrt( rho ) ) , each=n ) + rnorm(G*n , sd = sqrt( 1 - rho )) 
w <- rep( round( rnorm(G ) , 2 ) , each=n )
v <- rep( round( runif( G , 0 , 3 ) ) , each=n )
x <-  rnorm( G*n ) 
y <- y1 + beta  * x + .2 * w + .1 * v
dfr0 <- dfr <- data.frame( "group" = rep(1:G , each=n ) , "x" = x , "y" = y , "w" = w , "v" = v )
dfr[ rho.miss * x + rnorm( G*n , sd = sqrt( 1 - rho.miss ) ) < qnorm( missrate ) , "y" ] <- NA
dfr[ rep( rnorm(G) , each=n ) < qnorm( missrate ) , "w" ] <- NA
dfr[ rep( rnorm(G) , each=n ) < qnorm( missrate ) , "v" ] <- NA

这是重现导致错误的变量类型。
dfr$test <- rep(1:20,length(unique(dfr$group)))
dfr$version[dfr$test == 1]<- sample(0:2,length(unique(dfr$group)),replace = T)
dfr$version[dfr$test > 1]<- 3 # test

并且归因过程
# empty mice imputation
imp0 <- mice(dfr  , maxit=0 )
predM <- imp0$predictorMatrix # Predictor matrix
impM <- imp0$method # Method

#...
# multilevel imputation
predM[c("y","v"),"group"] <- -2 # indicate grouping variable
impM[c("y","w","v")] <- c("2l.pan" , "pmm" , "2lonly.pmm" )


# y ... imputation using 2l.pan
# w ... imputation at level 2 using pmm
# v ... imputation at level 2 using 2lonly.pmm

imp <- mice(dfr, m = 1, pred = predM , 
            method= impM, maxit = 1)

我正在使用 mice 版本 3.0.0 和 R 3.5.0。

1个回答

6
我向 GitHub 上的包设计师询问后得知,这似乎是 mice v3.0.0 中的一个错误。在此版本中,可以通过将方法更改为岭回归来解决此问题:ls.meth = "ridge",但这会引入结果中的一些小偏差。
mice v3.1.0中已经实现了修复。
希望这能帮助遇到同样问题的人们。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接