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

保存的GAMLSS模型预测新数据时出现“test对象未找到”错误求助

解决GAMLSS模型加载后预测报错的方法

问题原因

GAMLSS模型训练后,其call组件会保留训练时的完整调用参数(包括data = test),当清空环境加载模型后执行predict,R会尝试解析这个call里的data参数,找不到已被删除的test数据集,因此报错。

解决步骤

  • 训练并清理模型引用
    训练完成后,手动移除模型call中对原训练数据集的引用,再保存模型:

    # 训练模型
    gamlss_model <- gamlss(res~pb(x)+pb(y), family=BCTo, data = test)
    # 移除call中对test数据集的引用
    gamlss_model$call$data <- NULL
    # 保存模型(注意:saveRDS生成.rds格式,.rda格式请用save()函数)
    saveRDS(gamlss_model, "gamlss_model.rds")
    
  • 加载模型并预测
    清空环境后加载处理过的模型,即可正常用新数据预测:

    # 清空所有环境变量
    rm(list = ls())
    # 加载模型
    model_old <- readRDS("gamlss_model.rds")
    # 对新数据执行预测
    predict(model_old, newdata = new_data)
    

补充说明

使用惩罚样条(pb())的模型已经存储了样条计算所需的参数信息,移除原数据集引用不会影响预测逻辑,predict会基于传入的newdata和模型已有的参数完成计算。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 06:22:33