尝试估算多级数据时鼠标出错
Error in mice when trying to impute multilevel data
我一直在努力解决 mice
中的一个问题,试图在两个级别上都缺失数据来估算多级数据。我花了一些时间,但我终于设法重现了错误,这似乎是在 mice
尝试在 sampler
函数中创建记录的事件时发生的。我有一个指示测试版本的变量,但仅与第一次测量相关(之后它是一个常数)。这个变量似乎导致了错误。
当使用 "2lonly.pmm"
作为变量的插补方法时 mice
returns 错误: 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
我在 GitHub 上询问了包的设计者,显然这是 mice v3.0.0 中的一个错误。在此版本中,可以通过将方法更改为岭回归来解决:ls.meth = "ridge"
其缺点是会在结果中引入小偏差。
已在 mice v3.1.0 中实施修复。
希望这可以帮助 运行 遇到同样问题的人。
我一直在努力解决 mice
中的一个问题,试图在两个级别上都缺失数据来估算多级数据。我花了一些时间,但我终于设法重现了错误,这似乎是在 mice
尝试在 sampler
函数中创建记录的事件时发生的。我有一个指示测试版本的变量,但仅与第一次测量相关(之后它是一个常数)。这个变量似乎导致了错误。
当使用 "2lonly.pmm"
作为变量的插补方法时 mice
returns 错误: 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
我在 GitHub 上询问了包的设计者,显然这是 mice v3.0.0 中的一个错误。在此版本中,可以通过将方法更改为岭回归来解决:ls.meth = "ridge"
其缺点是会在结果中引入小偏差。
已在 mice v3.1.0 中实施修复。
希望这可以帮助 运行 遇到同样问题的人。