r - 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 ....
有人能帮我吗?谢谢你。
解决方案
在您生成 的行中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)
推荐阅读
- python-3.x - 绘制日期和货币并将日期转换为可读格式
- r - 将json文件转换为R中的数据框
- python - 为什么我只能得到索引 0 的正确回报
- python - 从列表中访问模型实例的属性并将它们添加在一起?
- python - 打印树的内容,以便每个父级覆盖其所有子级
- java - 使用 Collectors.groupingBy() 时,TreeMap 排序不起作用
- firebase - Firebase Cloud Functions 模拟器抛出“exited with code: 1”错误
- javascript - 有没有办法让函数返回竞争承诺的值(就像 AWAIT 一样)?
- ios - 当颜色清除 SwiftUI 时,点击操作不起作用
- javascript - 如何在Javascript中将所有数据属性从输入中获取到数组中?