R语言mgcv包gam函数Duchon样条k=3拟合失败咨询
R中GAM模型Duchon样条k=3报错的原因解析
你在R中使用广义可加模型(GAM),指定Duchon样条(bs='ds')时,遇到了k=3拟合失败、k≥4正常的问题,报错信息如下:
> fit <- gam(Load ~ s(Date, k=3, bs='ds'), data=data0) Error in qr.qty(qru, t(qr.qty(qru, D)[-ind, ])) : 'qr' and 'y' must have the same number of rows
核心原因
Duchon样条(bs='ds')的构造对基函数数量k有最低阈值要求:单变量场景下,k的最小值为4。
具体逻辑:
- Duchon样条的基函数由常数项、线性项,加上
k-2个非线性样条项组成。当k=3时,仅能生成1个非线性项,这会导致样条构造过程中,平滑性约束的维度与响应变量(Load)的行数无法匹配,进而触发QR分解时的维度不兼容报错。 - 当
k≥4时,非线性项数量足够,约束条件的维度与数据行数(3028行)对齐,模型可以正常完成拟合。
替代方案
如果需要使用较小的k值,可以换用其他支持低维度的样条类型:
bs='cr':立方回归样条,支持k=3及以上设置bs='tp':薄板回归样条,同样兼容更小的k值
内容的提问来源于stack exchange,提问作者Zilou
相关产品推荐
相关产品推荐

