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

R语言GAM绘图需求:将Y轴改为响应变量Rating

解决GAM绘图中Y轴显示响应变量Rating的问题

你的需求是把GAM绘图的Y轴从平滑项换成响应变量Rating,同时展示每个受试者的原始评分点和对应拟合曲线,下面是修正后的实现方案:

问题分析

你原本的plot(model1)是mgcv包默认的GAM绘图,它展示的是平滑项s(Time)的拟合偏效应(剔除其他协变量影响后的结果),而非原始响应变量的拟合值。你尝试的ggplot代码用lapply+stat_function的方式存在语法适配问题,stat_function更适合单变量函数场景,而GAM的预测需要结合Subject分组变量,先生成完整的预测数据集是更稳妥的实现方式。

修正代码

library(mgcv)
library(ggplot2)

# 1. 拟合GAM模型(复用你的建模逻辑)
fit <- gam(Rating ~ s(Time) + Subject, data = c1152, method = "REML")

# 2. 生成覆盖全场景的预测数据集
# 生成连续的时间序列,确保覆盖数据中的时间区间
time_seq <- seq(min(c1152$Time), max(c1152$Time), length.out = 100)
# 生成所有时间点与受试者的组合
pred_data <- expand.grid(Time = time_seq, Subject = unique(c1152$Subject))
# 计算每个组合的预测评分
pred_data$Predicted_Rating <- predict(fit, newdata = pred_data)

# 3. 绘制原始点+拟合曲线
ggplot() +
  # 绘制原始评分散点,用透明度避免点重叠
  geom_point(data = c1152, aes(x = Time, y = Rating, color = Subject), alpha = 0.6) +
  # 绘制每个受试者的GAM拟合曲线
  geom_line(data = pred_data, aes(x = Time, y = Predicted_Rating, color = Subject), linewidth = 1) +
  labs(x = "时间", y = "评分(Rating)", color = "受试者") +
  theme_minimal()

代码说明

  • 用expand.grid生成时间序列与受试者的全组合,保证每个受试者都有连续的预测曲线
  • 直接通过geom_line绘制预测评分,Y轴自然对应Rating(原始点为实际评分,曲线为模型预测评分)
  • 保留了受试者分组的颜色区分,同时通过alpha参数优化散点重叠的视觉效果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 09:05:08