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

R拟合GAM模型遇Unused argument及下标越界错误求助

解决GAM模型分组平滑的报错问题

1. 确认使用正确的包

首先确保加载的是mgcv包的gam函数,只有这个包的s()函数支持by分组参数。执行以下代码加载包:

library(mgcv)

如果之前加载过其他gam相关包(比如基础gam包),先卸载再重新加载mgcv:

detach("package:gam", unload = TRUE)
library(mgcv)

2. 转换分类变量为因子类型

Year必须是**因子(factor)**类型,by参数才能正确识别分组。检查并转换变量类型:

d$Year <- as.factor(d$Year)

3. 正确的分组平滑模型代码

你的需求是为两个年份分别拟合T的平滑曲线,正确的模型公式需要保留Year的主效应,同时加上带by参数的平滑项:

gam1 <- gam(H1 ~ Year + s(T, by = Year), data = d)

这个公式的逻辑是:

  • Year:控制两个年份的访客小时率基线差异
  • s(T, by = Year):为每个Year水平单独拟合时间变量T的平滑曲线

4. 验证模型输出

拟合完成后,执行summary(gam1)即可正常查看模型统计结果,也可以用plot(gam1)直观对比两个年份的平滑曲线。

报错原因说明

  • 第一个错误unused argument (by = Year):大概率是调用了非mgcv包的s()函数(比如基础gam包的s不支持by参数)。
  • 第二个写法s(T, Year):这是将T和Year当作二维变量拟合平滑曲线,但你的Year只有两个水平,这种二维平滑无实际意义,导致summary时出现下标越界错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 13:34:39