【问题标题】:How to extract information criterions from `lme4::lmer`-model fitted by ML and combine with model summary from REML-fitted model如何从 ML 拟合的 lme4::lmer 模型中提取信息标准,并与 REML 拟合模型中的模型摘要相结合
【发布时间】:2022-01-09 14:30:05
【问题描述】:

我正在尝试从使用 lme4::lmer 中的最大似然 (ML) 拟合的 HLM 的模型 summary 访问 AIC、BIC、logLik 和偏差数据,并与具有受限最大似然 (雷姆)。从lmersummary 返回的对象的结构是一团糟,我无法找出这些数据的存储位置/方式。

[更新:]根据我收到的回复,我更新了代码以反映所取得的进展:

代码示例:

# Least working example
library(lme4)
library(lmerTest)
df <- lme4::sleepstudy
names(df)
# Example model
model <- lmer(Reaction ~ (1|Subject), df, REML = TRUE)
information_criterion <- data.frame(
            "AIC" = AIC(model),
            "BIC" = BIC(model),
            "logLik" = logLik(model),
            "deviance" = deviance(model, REML=FALSE),
            "df.residual" = df.residual(model)
            )
mod_sum <- list(summary(model), information_criterion)
如果REML = FALSE(不工作),我基本上想修改输出以类似于summary 的输出:
> mod_sum

Linear mixed model fit by REML. t-tests use Satterthwaite's method [
lmerModLmerTest]
Formula: Reaction ~ (1 | Subject)
   Data: df

## Information criterion injected here: ##########################

     AIC      BIC   logLik deviance df.resid   # <-- THESE ARE THE LINES I WANT
  1916.5   1926.1   -955.3   1910.5      177   # <-- 

##################################################################

REML criterion at convergence: 1904.3

Scaled residuals: 
    Min      1Q  Median      3Q     Max 
-2.4983 -0.5501 -0.1476  0.5123  3.3446 

Random effects:
 Groups   Name        Variance Std.Dev.
 Subject  (Intercept) 1278     35.75   
 Residual             1959     44.26   
Number of obs: 180, groups:  Subject, 18

Fixed effects:
            Estimate Std. Error     df t value Pr(>|t|)    
(Intercept)   298.51       9.05  17.00   32.98   <2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

【问题讨论】:

标签: r statistics lme4 mixed-models lmertest


【解决方案1】:

有几点:

  1. 这里有一个错字:
    m2sum[["information_criterion"]] <- summary(model1)$information_criterion

应该是m2_sum

  1. 您可以使用 summary(model1)$information_criterion 代替:
     AIC(model1)

所以,以下应该可以工作:

m2_sum[["information_criterion"]] <- AIC(model1)

在 OP 更改后更新。

这应该可行,尽管请参阅我的最后一条评论,因为这可能不是明智之举:

> m2_sum$AICtab <- m1_sum$AICtab
> m2_sum

Linear mixed model fit by REML. t-tests use Satterthwaite's method ['lmerModLmerTest']
Formula: Reaction ~ (1 | Subject)
   Data: df

     AIC      BIC   logLik deviance df.resid 
  1916.5   1926.1   -955.3   1910.5      177 

Scaled residuals: 
    Min      1Q  Median      3Q     Max 
-2.4983 -0.5501 -0.1476  0.5123  3.3446 

【讨论】:

  • 感谢您的反馈。我意识到我可以以相同的方式添加所有所需的信息标准,而无需实际拟合 ML 模型。我会对如何添加如图所示的输出感兴趣。
  • 我不明白你的意思“如何在输出中添加如图所示”
  • 您有一个对象m2_sum,您问如何为该对象的information_criterion 槽赋值,这就是我的回答。
  • 抱歉含糊不清。我已根据您的输入更新了模型,并尝试显示信息的显示位置。本质上,我希望输出类似于summary if REML = FALSE 的输出。
  • 好的,我知道你想做什么。请注意,这并没有真正的意义,因为配备 REML 的模型实际上并没有可能计算 AIC;这是一件好事,因为它有助于避免比较配备 REML 的不同模型的可能性的大错误。如果您对此有任何疑问,我建议您在 Cross Validated 上提问。我已经用可能的解决方案更新了我的答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-11-28
  • 2018-01-01
  • 2021-04-19
  • 1970-01-01
  • 1970-01-01
  • 2022-01-14
  • 2019-07-02
相关资源
最近更新 更多