R Studio中调用accuracy()报错:找不到mdl_d类对象的精度方法
问题解决方法
错误原因
你调用的accuracy()是forecast包中的版本,它不支持fpp3生态下的mdl_d类模型对象(即model()函数返回的结果)。而fpp3体系下需要使用fabletools包的accuracy()函数,该函数已包含在你加载的fpp3包中。
具体解决方案
方案1:明确指定调用fabletools的accuracy函数
直接修改最后一行代码为:
fabletools::accuracy(fitdamp)
这会强制使用fpp3配套的精度评估函数,能够识别mdl_d类对象,返回你需要的ME、RMSE、MAE、MPE、MAPE、MASE、RMSSE、ACF1所有指标。
方案2:卸载forecast包避免函数冲突
如果你不需要同时使用forecast包的功能,可以先卸载它再调用accuracy():
detach("package:forecast", unload = TRUE) accuracy(fitdamp)
方案3:调整包的加载顺序
如果你需要保留forecast包,确保先加载forecast包,再加载fpp3包,这样fabletools::accuracy会覆盖forecast::accuracy成为默认调用的函数,之后直接使用accuracy(fitdamp)即可正常运行。
额外说明
在fpp3的工作流中,accuracy()函数默认基于训练集的拟合结果计算精度指标。如果需要评估模型在测试集上的表现,可先拆分数据再传入测试集,示例代码如下:
# 拆分训练集和测试集 drug_train <- tsibbledrugsalesdata |> filter(year(Month) < 2005) drug_test <- tsibbledrugsalesdata |> filter(year(Month) >= 2005) # 训练模型 fitdamp <- drug_train |> model(SES = ETS(Sales ~ error("A") + trend("Ad") + season("N"))) # 评估测试集精度 fitdamp |> accuracy(drug_test)
内容的提问来源于stack exchange,提问作者Happy Taco Resort
相关产品推荐
相关产品推荐

