我已经使用MICE软件包估算了数据。现在,我想展示基于合并数据的GLM的结果。
这是我得出数据的方式:
data.imputed <- mice(data, m=5, maxit = 50, method = 'pmm', seed = 500)
这就是我用来创建模型的内容:
model.imputed1 <- with(data = data.imputed, expr = glm(dv ~ iv1 + iv2 + iv3, family=binomial))
model.imputed <- pool(model.imputed1)
但是,当我跑步
AIC(model.imputed)
或
logLik(model.imputed)
为此,我收到消息
UseMethod(“ logLik”)中的错误:没有适用于'logLik'的适用方法应用于类“ c('mipo','data.frame')”的对象
这似乎与鼠标存储其估算文件的方式有关。有没有办法从该模型中提取这两个指标(AIC和logLik)?如何将其转换为模型以从中提取这两个指标?
谢谢!
TT
答案 0 :(得分:0)
从pool
的结构来看,似乎mice::pool
没有存储此信息。
str(pool(model.imputed1))
#Classes ‘mipo’ and 'data.frame': 0 obs. of 3 variables:
# $ call : language pool(object = model.imputed1)
#$ m : int 40
#$ pooled:'data.frame': 3 obs. of 9 variables:
# ..$ estimate: num 0.0722 -0.2533 -0.8663
#..$ ubar : num 0.000422 0.000318 0.029756
#..$ b : num 2.53e-06 3.41e-05 3.95e-04
#..$ t : num 0.000425 0.000353 0.030162
#..$ dfcom : int 10060 10060 10060
#..$ df : num 9902 2765 9487
#..$ riv : num 0.00615 0.10989 0.01362
#..$ lambda : num 0.00611 0.09901 0.01343
#..$ fmi : num 0.00631 0.09966 0.01364
我不确定在组合AIC和LL等统计信息时,Rubin的规则是否以相同的方式起作用,但是您可以做的一件事就是为每个数据集获取AIC和LL。由于您只有5个数据集,因此无需花费很长时间。
首先以长格式检索所有完成的数据集。
L_df <- mice::complete(data.imputed,"long",include = F)
然后创建一些空向量并检索插补的数量(在您的情况下,m = 5)。
AIC1<-c()
logLik1 <- c()
m <- max(L_df$.imp)
然后为每个数据集估计模型,并将AIC和LL存储在刚创建的空向量中。
for(i in 1:m){
model.imputed1 <- glm(dv ~ iv1 + iv2 + iv3, family=binomial, data = L_df[which(L_df$.imp == m),])
AIC1[i] <- AIC(model.imputed1)
logLik1[i] <- logLik(model.imputed1)
}
此循环的结果应该是AIC1
中存储的5个AIC值和logLik1
中存储的LL的5个值。您可以使用这些值来报告数据集之间的平均AIC及其方差,也可以报告更可靠的度量值,例如中位数和范围(因为只有5个值)。