Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 使用具有聚集数据的小鼠进行插补_R_Multi Level_R Mice_Imputation - Fatal编程技术网

R 使用具有聚集数据的小鼠进行插补

R 使用具有聚集数据的小鼠进行插补,r,multi-level,r-mice,imputation,R,Multi Level,R Mice,Imputation,因此,我使用mices包来插补缺失的数据。我对插补还不熟悉,所以我已经到了一定程度,但已经进入了一个陡峭的学习曲线。举一个玩具的例子: library(mice) # Using nhanes dataset as example df1 <- mice(nhanes, m=10) 库(鼠标) #以nhanes数据集为例 df1你必须建立一个预测矩阵来告诉老鼠使用哪个变量来插补另一个变量。这样做的一个快速方法是使用predictor M如果您将集群视为“混合效应”模型,那么您应该使用mi

因此,我使用
mices
包来插补缺失的数据。我对插补还不熟悉,所以我已经到了一定程度,但已经进入了一个陡峭的学习曲线。举一个玩具的例子:

library(mice)
# Using nhanes dataset as example
df1 <- mice(nhanes, m=10)
库(鼠标)
#以nhanes数据集为例

df1你必须建立一个预测矩阵来告诉老鼠使用哪个变量来插补另一个变量。这样做的一个快速方法是使用
predictor M如果您将集群视为“混合效应”模型,那么您应该使用
mice
为集群数据提供的方法。这些方法可以在中找到,通常前缀为
2l.something

聚类数据的各种方法在
小鼠中有所限制
,但我可以建议使用
2l.pan
处理较低级别单元中的缺失数据,并在聚类级别使用
2l.only.norm

作为混合效应模型的替代,您可以考虑使用哑指示符来表示集群结构(即每个集群的一个虚拟变量)。当您从混合效果模型的角度考虑簇时,此方法并不理想。所以,如果你想做混合效应分析,那么尽可能坚持使用混合效应模型

下面,我将展示这两种策略的一个示例

准备:

library(mice)
data(nhanes)

set.seed(123)
nhanes <- within(nhanes,{
  country <- factor(sample(LETTERS[1:10], size=nrow(nhanes), replace=TRUE))
  countryID <- as.numeric(country)
})
案例2:使用虚拟指标(DIs)对聚类进行插补

本节使用
pmm
进行插补,聚类结构以“特殊”方式表示。也就是说,聚集的效果不是由随机效果表示,而是由固定效果表示。这可能会夸大缺少数据的变量在集群级别的可变性,因此请确保在使用它时知道自己在做什么

# create dummy indicator variables
DIs <- with(nhanes, contrasts(country)[country,])
colnames(DIs) <- paste0("country",colnames(DIs))
nhanes <- cbind(nhanes,DIs)


# "empty" imputation as a template
imp0 <- mice(nhanes, maxit=0)
pred2 <- imp0$predictorMatrix
meth2 <- imp0$method

# set imputation procedures
meth2[c("bmi","hyp","chl")] <- "pmm"

# for countryID and fixed effects otherwise)
pred2[,"country"] <- 0     # don't use country factor
pred2[,"countryID"] <- 0   # don't use countryID
pred2[,colnames(DIs)] <- 1 # use dummy indicators
pred2["bmi", c("age","hyp","chl")] <- c(1,1,1)  # fixed effects (bmi)
pred2["hyp", c("age","bmi","chl")] <- c(1,1,1)  # fixed effects (hyp)
pred2["chl", c("age","bmi","hyp")] <- c(1,1,1)  # fixed effects (chl)

# impute
imp2 <- mice(nhanes, maxit=20, m=10, predictorMatrix=pred2, method=meth2)
#创建虚拟指示符变量

DIs在每个因素水平上运行
鼠标
是否是一个很好的解决方法?例如,
鼠标(nhanes[which(nhanes$country='A'),],m=10)
然后循环使用因子或使用您最喜欢的R的groupby操作?当然,这是假设要为国家
A
输入数据,不需要其他国家,也就是说它们是独立的。是的,我尝试过这一点-有一个函数可以组合数据集的rbind.mid('-但是我发现这个函数给了我很多我无法理解的警告和错误。最终我认为通过识别数据结构进行插补会更好。谢谢你的建议谢谢你的回答。我不太明白如何更改为2&-2-我应该更改哪些单元格(在函数帮助文件中也不清楚).那么方法
2l.norm
2l.binom
-这些是我需要为我输入的data.frame中的每个变量设置的吗?re:'PMM'-这不是'mice'命令的一部分吗?请不要使用
2l.norm
。函数仍然有缺陷,到目前为止还没有人来修复它。对于连续变量,我n聚集数据,应使用
2l.pan
方法。OP提供了一个示例数据集,通过提供针对示例数据的答案的编码表示,而不是仅仅在“伪代码说话”中遍历解决方案,该答案将得到很大改进.Hi SimonG。回答得很好,谢谢。它帮助了我很多!这帮助我比包参考更好地理解。但是,我还有一个问题。在案例1中,为什么使用-2来表示集群变量而不是+2。在-2和+2中有什么区别?我可以看到的帮助文件中没有解释这一点。在(第47页)其中他们解释了
2l.pan的
type
参数。
type
参数描述了
mice
如何理解预测器矩阵中的行(
pred1
)。在所有两级函数中,由
-2
表示的变量被解释为聚类变量。具有
1
的变量被理解为具有固定效应的预测器,
2
被理解为具有随机效应的预测器。具有不同e聚类平均值是计算出来的,并作为一个额外的预测值。啊,非常感谢我错过了。非常感谢你的帮助!
# "empty" imputation as a template
imp0 <- mice(nhanes, maxit=0)
pred1 <- imp0$predictorMatrix
meth1 <- imp0$method

# set imputation procedures
meth1[c("bmi","hyp","chl")] <- "2l.pan"

# set predictor Matrix (mixed-effects models with random intercept
# for countryID and fixed effects otherwise)
pred1[,"country"] <- 0     # don't use country factor
pred1[,"countryID"] <- -2  # use countryID as cluster variable
pred1["bmi", c("age","hyp","chl")] <- c(1,1,1)  # fixed effects (bmi)
pred1["hyp", c("age","bmi","chl")] <- c(1,1,1)  # fixed effects (hyp)
pred1["chl", c("age","bmi","hyp")] <- c(1,1,1)  # fixed effects (chl)

# impute
imp1 <- mice(nhanes, maxit=20, m=10, predictorMatrix=pred1, method=meth1)
# create dummy indicator variables
DIs <- with(nhanes, contrasts(country)[country,])
colnames(DIs) <- paste0("country",colnames(DIs))
nhanes <- cbind(nhanes,DIs)


# "empty" imputation as a template
imp0 <- mice(nhanes, maxit=0)
pred2 <- imp0$predictorMatrix
meth2 <- imp0$method

# set imputation procedures
meth2[c("bmi","hyp","chl")] <- "pmm"

# for countryID and fixed effects otherwise)
pred2[,"country"] <- 0     # don't use country factor
pred2[,"countryID"] <- 0   # don't use countryID
pred2[,colnames(DIs)] <- 1 # use dummy indicators
pred2["bmi", c("age","hyp","chl")] <- c(1,1,1)  # fixed effects (bmi)
pred2["hyp", c("age","bmi","chl")] <- c(1,1,1)  # fixed effects (hyp)
pred2["chl", c("age","bmi","hyp")] <- c(1,1,1)  # fixed effects (chl)

# impute
imp2 <- mice(nhanes, maxit=20, m=10, predictorMatrix=pred2, method=meth2)