gpt4 book ai didi

r - 如何从 modelsummary 包中的 msummary 的 lmer() 模型中提取拟合优度统计信息

转载 作者:行者123 更新时间:2023-12-05 02:45:55 28 4
gpt4 key购买 nike

我正在使用 lmerTest::lmer() 对重复测量数据执行线性回归。

我的模型包含一个固定效应(具有 5 个水平的因子)和一个随机效应(主体):

library(lmerTest) 
model_lm <- lmer(likertscore ~ task.f + (1 | subject), data = df_long)

我想在我用 modelsummary().

enter image description here

我试图提取这些并构建一个gof_map as described包的作者,但没有成功。在 lmerTest::lmer() 的模型输出下方,获得了性能指标:

Linear mixed model fit by REML ['lmerModLmerTest']
Formula: likertscore ~ factor + (1 | subject)
Data: df_long
REML criterion at convergence: 6674.915
Random effects:
Groups Name Std.Dev.
subject (Intercept) 1.076
Residual 1.514
Number of obs: 1715, groups: subject, 245
Fixed Effects:
(Intercept) factor1 factor2
3.8262 1.5988 0.3388
factor3 factor4 factor5
-0.7224 -0.1061 -1.1102

library("performance")
performance::model_performance(my_model)

# Indices of model performance

AIC | BIC | R2 (cond.) | R2 (marg.) | ICC | RMSE | Sigma
-----------------------------------------------------------------
6692.91 | 6741.94 | 0.46 | 0.18 | 0.34 | 1.42 | 1.51

最佳答案

问题是您的其中一项统计信息在 glanceperformance 中默认不可用,这意味着您需要做一些工作来自定义输出。

首先,我们加载库并估计模型:

library(modelsummary)
library(lmerTest)
mod <- lmer(mpg ~ hp + (1 | cyl), data = mtcars)

然后,我们使用 modelsummary 包中的 get_gof 函数检查开箱即用的拟合优度统计数据:

get_gof(mod)
#> aic bic r2.conditional r2.marginal icc rmse sigma nobs
#> 1 181.8949 187.7578 0.6744743 0.1432201 0.6200592 2.957141 3.149127 32

您会注意到那里没有N (subject) 统计信息,因此我们需要手动添加它。以可复制的方式执行此操作的一种方法是利用 modelsummary documentation. 中描述的 glance_custom 机制。为此,我们需要知道模型的类是什么:

class(mod)[1]
#> [1] "lmerModLmerTest"

然后,我们需要为这个类名定义一个方法。此方法应称为 glance_custom.CLASSNAME。在 lmerModLmerTest 模型中,可以通过获取摘要中的 ngrps 对象来检索组数。所以我们这样做:

glance_custom.lmerModLmerTest <- function(x, ...) {
s <- summary(x)
out <- data.frame(ngrps = s$ngrps)
out
}

最后,我们使用 gof_map 参数来按照您想要的方式格式化结果:

gm <- list(
list(raw = "nobs", clean = "N", fmt = 0),
list(raw = "ngrps", clean = "N (subjects)", fmt = 0),
list(raw = "r2.conditional", clean = "R2 (conditional)", fmt = 0),
list(raw = "r2.marginal", clean = "R2 (marginal)", fmt = 0),
list(raw = "aic", clean = "AIC", fmt = 3)
)

modelsummary(mod, gof_map = gm)
<表类="s-表"><头>模型 1<正文>(拦截)24.708(3.132)惠普-0.030(0.015)N32N(主题)3R2(条件)1R2(边缘)0AIC181.895

关于r - 如何从 modelsummary 包中的 msummary 的 lmer() 模型中提取拟合优度统计信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65723430/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com