You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R中使用GAMs基于单时间点协变量预测纵向数据变化的方法咨询

实现步骤


1. 数据预处理

核心是提取每个受试者的时间点1(基线)预测变量值,同步匹配到该受试者所有波次的观测行中,同时剔除无基线数据的受试者:

# 加载依赖包
library(mgcv)
library(dplyr)

# 数据处理
df_processed <- df %>%
  group_by(ID) %>%
  # 生成基线预测变量列,同一ID的所有观测行都会携带自身的基线预测值
  mutate(pred_t1 = predictor[timepoint == 1]) %>%
  ungroup() %>%
  # 剔除没有基线数据的受试者,这类样本无法纳入分析
  filter(!is.na(pred_t1))

2. 模型构建

注意:纵向数据中同一受试者的多次观测存在相关性,普通GAM未考虑这种聚集性会导致标准误估计偏差,因此必须加入受试者随机效应项。
如果你要沿用你理想的非线性效应假设写法,直接使用以下代码即可:

model1 <- gam(outcome ~ s(pred_t1, k=4) + s(ID, bs = "re"),
              data = df_processed,
              method = "ML")
# 查看结果
summary(model1)

如果需要验证基线预测变量是否能预测outcome随时间的变化趋势(即不同基线得分的人随时间的变化幅度存在差异),可以加入交互项:

# 线性时间交互模型
model2 <- gam(outcome ~ pred_t1 * timepoint + s(ID, bs = "re"),
              data = df_processed,
              method = "ML")
summary(model2)

# 如果假设时间效应是非线性的,可以用平滑交互项
model3 <- gam(outcome ~ s(timepoint, k=3, by = pred_t1) + s(ID, bs = "re"),
              data = df_processed,
              method = "ML")
summary(model3)

3. 结果解读

  • 若s(pred_t1)或者pred_t1项的p值显著,说明基线预测变量可以显著预测各波次的outcome水平
  • 若pred_t1:timepoint交互项的p值显著,说明基线预测变量可以显著预测outcome随时间的变化幅度
  • 你的非平衡数据不需要额外处理,mgcv默认支持该类数据结构,只要数据缺失符合随机缺失假设即可

内容的提问来源于stack exchange,提问作者MervS

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 09:36:04