【问题标题】:How to extract AIC and Log Likelihood from pooled GLM?如何从合并的 GLM 中提取 AIC 和对数似然?
【发布时间】:2018-08-13 05:14:25
【问题描述】:

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

【问题讨论】:

    标签: r glm r-mice


    【解决方案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)
    }
    

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

    【讨论】:

    • sapply(model.imputed1$analysss, AIC)
    猜你喜欢
    • 2014-12-12
    • 1970-01-01
    • 2021-01-19
    • 2021-07-12
    • 2020-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多