r - R:从单个数据帧预测多个时间序列
问题描述
我正在尝试预测单个数据框中存在的多个时间序列数据。数据框df
如下所示。下面dput(df)
也给出了快速复制。
Date Group Value
01-04-2019 Saffron 62.78
01-04-2019 Green 75.65
01-05-2019 Saffron 67.89
01-06-2019 Saffron 54.56
01-06-2019 Green 77.00
01-07-2019 Green 71.22
structure(list(Date = structure(c(1L, 1L, 2L, 3L, 3L, 4L), .Label = c("01-04-2019", "01-05-2019", "01-06-2019", "01-07-2019"), class = "factor"),
Group = structure(c(2L, 1L, 2L, 2L, 1L, 1L), .Label = c("Green",
"Saffron"), class = "factor"), Value = c(62.78, 75.65, 67.89,
54.56, 77, 71.22)), .Names = c("Date", "Group", "Value"), class = "data.frame", row.names = c(NA, -6L))
目标:我想预测每个Group
使用forecast
包。
所以我的方法如下:
col_name_date <- "Date"
col_name_measure <- "Value"
col_name_sku_depo <- "Group"
dates_to_forecast <- 3
for (v in unique(as.character(df$Group))) {
temp <-subset(data,Group == v)
assign(paste0("df_",tolower(v)),temp)
temp <- temp [order(temp[, col_name_date]), ]
start_date <- as.Date(temp[1, col_name_date], date_format) #< ---library(lubridate)
ts_historic <- ts(temp[, col_name_measure],
start = c(year(start_date), month(start_date)),
frequency = 12)
----Forecasting process using forecast package, omitting as it is out of scope-----
forecast_mean <- rep(NA, dates_to_forecast)
forecast_mean <- ts_forecast$mean
forecast_upper <- ts_forecast$upper
forecast_lower <- ts_forecast$lower
dates_all_mean <- as.numeric(c(as.numeric(ts_historic), as.numeric(forecast_mean)))
dates_all_lower <- as.numeric(c(rep(NA, length(ts_historic)), as.numeric(forecast_lower)))
dates_all_upper <- as.numeric(c(rep(NA, length(ts_historic)), as.numeric(forecast_upper)))
result <- data.frame(
MONTH = dates_all,
MEASURETYPE = date_types,
GROUP = v
MEASURE = dates_all_mean,
MEASURELOWER = dates_all_lower,
MEASUREUPPER = dates_all_upper,
MODEL = model_descr)
}
上面的代码适用于单个Group
即 Saffron。但这不会产生Green
组的结果。
我正在寻找以下输出:
MONTH MEASURETYPE GROUP MEASURE MEASUREUPPER MEASURELOWER MODEL
01-04-2019 Actual Saffron 62.78 NA NA Test
01-05-2019 Actual Saffron 67.89 NA NA Test
01-06-2019 Actual Saffron 54.56 NA NA Test
01-07-2019 Forecast Saffron 55.35 56.15 54.23 Test
01-08-2019 Forecast Saffron 57.29 58.15 56.39 Test
01-04-2019 Actual Green 75.65 NA NA Test
01-05-2019 Actual Green 77.00 NA NA Test
01-06-2019 Actual Green 71.22 NA NA Test
01-07-2019 Forecast Green 76.35 77.15 75.23 Test
01-08-2019 Forecast Green 73.29 74.29 72.30 Test
从代码中可以看出,我只能为Saffron
.
我怎样才能添加Green
如上面的输出所示?
我在哪里错过了for
循环?
解决方案
推荐阅读
- html - Bootstrap 4 卡片页脚未与页面底部对齐
- c++ - 同步访问以提升 async_write
- c - 避免使用相似结构重复代码 C
- c# - Odata V4 $Select after $expand on one to one 关系
- vba - vlookup 和索引/匹配组合的字符限制
- reactjs - 当你失去焦点时如何做某事,没有 onBlur
- php - 上传的文件超过了 php.ini 中的 upload_max_filesize 指令。无法在 wordpress 中上传新主题
- python - 无法卸载“熊猫”(distutils 安装项目)
- haskell - Haskell 可以显示多态类型的对象吗?
- python - Argparse - 制作输入和输出列表