r - 用二次增长绘制增长曲线
问题描述
我试图了解如何在 R 中为我一直在运行的增长曲线模型绘制二次增长。模型:
m1 <- lmer(score ~ Time + Group + Time_Sqaure +
(1 + School | Subject), data=df, REML = FALSE)
tab_model(m1)
时间 (B = 9.58, p<.01) 和 Time_Square (B = - 0.51, p <.01) 以及组 (B = 2.77, p <.01) 差异均显着。
如果我使用 plot_model,它会为我提供每个组的最佳拟合线。
plot_model(m1, type = "pred", terms = c("Time", "Group"))
有没有办法绘制拟合曲线或二次增长,显示增长速度随着时间的推移而放缓?
谢谢!
解决方案
为了sjPlot::plot_model
了解正在发生的事情,您必须输入Time_Square
而I(Time^2)
不是单独的预测器。
鉴于此df$Time_Square <- df$Time^2
,以下两个模型应该会给您相同的结果:
m1 <- lmer(score ~ Time + Group + Time_Square +
(1 + School | Subject), data=df, REML = FALSE)
m2 <- lmer(score ~ Time + Group + I(Time^2) +
(1 + School | Subject), data=df, REML = FALSE)
但是,在第二个模型中,很明显预测变量Time
输入了两次,因此在绘制它时可以将其考虑在内sjPlot::plot_model(...)
。
为了确保这一点,我使用以下模拟数据对其进行了测试:
library(dplyr)
grps <- 2 #number of groups
subj <- 100 #number of subjects within group
obs <- 10 #number of observations/times per subjects
b_0 <- 0 #overall intercept
b_1 <- 9.58 #linear time effect
b_2 <- -0.51 #quadratic time effect
sd_b0 <- 0.4 #SD of random intercept per subject
sd_b1 <- 3 #SD of random slope per subject
sd_b3 <- 1 #SD of group effect (you can simulate more than 2 groups)
sd_resid <- 10 #SD of residuals
df <- list(Group = factor(rep(letters[1:grps], each=obs*subj)),
Subject = factor(rep(1:subj, times=grps, each=obs)),
Time = rep(1:obs, times=subj*grps)
) %>% as.data.frame()
df$TimeSq <- df$Time^2
subj_b0 <- rnorm(subj, b_0, sd_b0) %>% rep(times=grps, each=obs)
subj_b1 <- rnorm(subj, b_1, sd_b1) %>% rep(times=grps, each=obs)
grp_m <- rnorm(grps, 0, sd_b3) %>% rep(times=, each=subj*obs)
df$Score <- with(df, subj_b0 + Time*subj_b1 + (Time^2)*b_2 + grp_m + rnorm(grps*subj*obs, 0, sd_resid))
fit1 <- lme4::lmer(Score ~ Time + I(Time^2) + Group + (Time | Subject), data=df)
sjPlot::plot_model(fit1, type="pred", terms=c("Time"))
推荐阅读
- android - 从扫描活动中获取结果后在片段中设置编辑文本
- python - 如何将 PIL 图像转换为 numpy 数组?
- typo3 - 单一typo3 v10安装上的多域多语言站点
- odata - Azure 数据工厂 ODATA 不支持 MIME 类型
- c# - 停止在 XML 文档注释中自动添加“///”。(C#)
- plugins - 冷却不工作 [Minecraft Bukkit 插件]
- django - 在 Windows 上使用 python 实现 WebSocket 项目的最佳方式
- jqxgrid - 为什么 jqxgrid 在 IE 11 中不起作用但在 chrome 中起作用
- javascript - 使用 Javascript 验证 HTML 表单不起作用
- ios - 根据firebase逻辑,在uicollectionview中快速分段控制显示/隐藏单元格