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

mgcv包GAM多by平滑项模型的预测问题及方案咨询

问题解析与解决方案

为什么x2新水平预测出NA,而r不会?

  • s(t, by=x2)是分组平滑项,模型会为x2的每个现有水平单独拟合一条t的曲线,新水平没有对应的拟合参数,因此无法生成预测值,返回NA。
  • s(r, bs="re")是随机效应项,mgcv对随机效应的新水平默认预测其效应为0(收缩到总体均值),所以不会出现NA。

分别拟合单个by平滑项的模型是否可行?

完全可行,且刚好匹配你的需求:

  1. 若想单独基于x1的分组平滑预测(忽略x2的影响),可以拟合不含x2相关项的模型:

    fit_x1 <- gam(y ~ s(t, by=x1, k=4) + s(x1, bs="re") + s(r, bs="re"),
                  data=dat, family="gaussian", method="REML")
    

    此时预测时,无论x2是原有水平还是新水平,都不会影响结果(模型未包含x2变量),直接指定x1的目标水平和t的取值即可得到稳定的预测值。

  2. 同理,若需要基于x2的分组平滑预测,再单独拟合对应模型即可。

原模型的补充说明

原模型同时包含x1和x2的分组平滑,意味着y的变异被同时分解为x1分组的时间趋势、x2分组的时间趋势,以及各自的随机效应。这种情况下,即使使用exclude参数排除x2相关项,模型仍会保留x2的结构依赖——因为by平滑项的参数和因子水平绑定,无法通过简单排除消除原有水平的影响。因此分开拟合单一分组的模型,是更直接满足你需求的方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 03:32:48