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

使用ggpredict()处理gamm对象,重启R会话后遇类型转换错误求解决

解决mgcv::gamm()模型保存重启后ggpredict()报错的问题

问题背景

使用mgcv::gamm()训练的广义相加混合模型(GAMM),在模型创建的原会话中调用ggeffects::ggpredict()生成边际均值预测并绘图完全正常,但保存工作区、重启R后,再次执行ggeffects::ggpredict(model)会触发错误:

Error in is.constant(y) : 'list' object cannot be coerced to type 'double'

由于模型基于大型数据集,包含平滑项与随机效应,重新训练需耗时数小时,无法每次绘图都重复训练。

解决方法

mgcv::gamm()返回的是包含$gam和$lme的列表对象(类为"gamm" "list"),会话重启后的反序列化过程导致ggpredict()对整个gamm对象解析异常,直接传入模型的$gam部分即可绕过该问题:

ggeffects::ggpredict(model$gam)

注意事项

  • 不要传入model$lme,ggpredict()无法处理该部分的随机效应定义,会触发Error in eval(x$call$random) : object 'rand' not found错误。
  • 若需保留随机效应对预测结果的影响,可后续单独处理随机效应部分的预测结果并与$gam部分的预测结合,但当前方法已能满足避免重训模型、正常生成预测的核心需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 22:12:19