首页 > 解决方案 > R中的预测问题

问题描述

我在 R 中进行预测时遇到问题。首先,这是原始数据集 (CW_data_noNA) 的一个示例:

Loading date  Year Built  Vessel Type  Cargo Size  Week
2019-08-22    2011         Medium       30000       34
2019-09-01    2004         Aframax      80000       35
2019-08-30    2005         Panamax      60000       35
2019-09-01    2000         VLCC         270000      35
2019-08-29    2001         VLCC         270000      35
2019-09-03    2003         Suezmax      130000      36
2019-08-26    2002         Medium       30000       34

我必须创建一个每周时间序列(显示固定船舶总数和货运能力),然后使用简单的移动平均线来提供一周前的预测。

Weekly_base <- CW_data_noNA %>% group_by(Week) %>% summarize(Number_of_fix = n(),cargo_capacity = sum(`Cargo Size`))

Weekly_ts <- ts(Weekly_base, start = c(2019, 32), frequency = 52)

demand_training <- window(Weekly_ts, start = c(2019,32), end=c(2019,41))   
demand_test <- window(Weekly_ts, start = c(2019,42))

naive(demand_training, h=1)

上面的代码出现的问题是它给我的预测不是变量(修复数量和货运能力),而是一周本身。结果如下所示:

           Point Forecast     Lo 80      ....
2019.788    42              -23879066   ....

有人能帮我吗?谢谢你。

标签: rforecasting

解决方案


在您生成 的行中Weekly_ts,您当前正在提供整个数据框,即

Weekly_ts <- ts(Weekly_base, start = c(2019, 32), frequency = 52)

我猜naive?naive)的帮助有点模棱两可(?),因为它指出y应该是

类的数值向量或时间序列ts

你肯定提供了一个 class 的对象ts。但是,在这种情况下,您提供了多个系列,而它只需要一个系列。只需选择您想要的,它应该会预测正确的系列

relevant_variable <- Weekly_base %>% 
  select(cargo_capacity)#change cargo_capacity to Number_of_fix to change variable

Weekly_ts <- ts(relevant_variable, start = c(2019, 32), frequency = 52)

或者更直接

Weekly_ts <- ts(Weekly_base$cargo_capacity, start = c(2019, 32), frequency = 52)

推荐阅读