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

如何使用fpp2包进行预测?调用forecast、naive函数报错如何处理?

报错原因与解决方案

核心错误原因

  • SPEI::spi() 函数返回的是包含拟合值、计算参数、残差等多内容的S4类列表对象,并非fpp2预测函数要求的纯数值ts类时间序列,直接传入会触发类型不匹配报错。
  • 原有代码存在参数位置错误:end=c(2019,12)属于ts()函数的参数,误写在了spi()的入参位置。

修正步骤

  1. 构造时间序列时正确传入start、end、freq参数
  2. 调用spi()计算完成后,提取其fitted属性,该属性为计算得到的SPI值对应的ts类对象,符合fpp2函数的输入要求
  3. 将提取出的ts对象传入forecast()、naive()等函数完成预测

修正后可运行代码

library(SPEI)
library(fpp2)

# 读取原始数据
m <- read.delim("D:/PHD_UOM/PHD_Dissertation/PhD/PhD_R/mydata/mruspi.txt")

# 正确构造时间序列,end参数放在ts函数内
ts_mru <- ts(m$mru, freq = 12, start = c(1971,1), end = c(2019,12))

# 计算12尺度SPI
spi_cal <- spi(ts_mru, scale = 12)

# 提取SPI拟合时间序列(已自带ts属性)
y_spi <- spi_cal$fitted

# 执行预测
# 普通预测12期
forecast_result <- forecast(y_spi, h = 12)
print(forecast_result)
# 朴素法预测12期
naive_result <- naive(y_spi, h = 12)
print(naive_result)

验证方法

运行class(y_spi),返回结果为ts即说明提取的对象符合预测函数输入要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 08:36:05