如何从汇总GLM中提取AIC和对数似然?

3

我使用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)

就这个问题而言,我收到了以下消息

Error in UseMethod("logLik") : no applicable method for 'logLik' applied to an object of class "c('mipo', 'data.frame')"

这看起来似乎与mice存储其填充文件的方式有关。是否有一种方法可以从此模型中提取这两个度量(AIC和logLik)?我该如何将其转换为可从中提取这两个度量的模型?

谢谢!

TT

1个回答

1

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

我不确定Rubin的规则在组合AIC和LL等统计量时是否以相同方式起作用,但你可以为每个数据集获取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)
}

这个循环的结果应该是将5个AIC值存储在AIC1中,并将5个LL值存储在logLik1中。您可以使用这些值来报告数据集之间平均AIC及其方差,或报告更稳健的度量,例如中位数和范围(因为您只有5个值)。

2
sapply(model.imputed1$analysss, AIC) - Leonardo Fontenelle

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