保存的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
相关产品推荐
相关产品推荐

