我使用密集纵向数据来计算随机截距模型,代码如下:
model1a <- lmerTest::lmer(MET_mean_log ~ Stress_RQ1 + Time + (1 | id), data = data_mini_clean)
在下一步中,我将使用以下代码提取拟合值:
data_mini_clean$MET_fittedvalues_model1a <- fitted(model1a)
现在我使用 ggplot() 函数创建一个意大利面条图,使用 Stress_RQ1 作为我的自变量和 MET_fittedvalues_model1a 作为我的因变量:
ggplot(data_mini_clean, aes(x = Stress_RQ1, y = MET_fittedvalues_model1a, group = factor(id), color = factor(id))) +
geom_smooth(method = lm, se = FALSE, fullrange = TRUE) +
scale_color_viridis_d(option = "F", alpha = 0.3, begin = 0, end = 1) +
geom_smooth(aes(group = 1), method = lm, se = FALSE, fullrange = TRUE, color = "blue") +
labs(x = "Stress_RQ1", y = "MET_mean (log, fitted)") +
theme_minimal()
我不明白,为什么这个图显示了具有不同斜率的回归线。因为我使用了随机截距模型,所以所有回归线都应该有相同的 beta 系数,我已经用代码仔细检查过了
beta_coefficients <- coef(model1a)$id[, "Stress_RQ1"]
如何更正代码以使所有回归线具有相同的斜率?
我尝试将公式
y ~ x + 0.01612179
添加到 geom_smooth()
函数中,以强制 R 仅使用此 beta 系数,但这只会产生错误代码。