【问题标题】:R: Running forecast function through multiple columns of a data frameR:通过数据框的多列运行预测功能
【发布时间】:2015-09-08 19:25:11
【问题描述】:

我使用以下方法将 csv 文件读入数据框:

dataxlsx <- read.csv(file.choose(), header = T)

数据框如下:

Year  Month Period X410     X430     X431
2005  1       1    3467748  4434879  1345638
2005  2       2    3626338  4311150  1167523
  .   .       .      .        .        . 
2015  7       127  2374105  1514540  1399804

我正在尝试运行我创建的名为 HWplot 的函数来预测输入数据并运行预测,以及输出预测图。

我使用了 ggplot2、tseries、forecast 包。

HWplot <- function(dataxlsx,  n.ahead=12,  CI=.95,  error.ribbon='green', line.size=1) {

hw_object<-HoltWinters(dataxlsx)

forecast<-predict(hw_object,  n.ahead=24,  prediction.interval=T,  level=0.95)


for_values<-data.frame(time=round(time(forecast),  3),  value_forecast=as.data.frame(forecast)$fit,  dev=as.data.frame(forecast)$upr-as.data.frame(forecast)$fit)

fitted_values<-data.frame(time=round(time(hw_object$fitted),  3),  value_fitted=as.data.frame(hw_object$fitted)$xhat)

actual_values<-data.frame(time=round(time(hw_object$x),  3),  Actual=c(hw_object$x))


graphset<-merge(actual_values,  fitted_values,  by='time',  all=TRUE)
graphset<-merge(graphset,  for_values,  all=TRUE,  by='time')
graphset[is.na(graphset$dev),  ]$dev<-0

graphset$Fitted<-c(rep(NA,  NROW(graphset)-(NROW(for_values) + NROW(fitted_values))),  fitted_values$value_fitted,  for_values$value_forecast)


graphset.melt<-melt(graphset[, c('time', 'Actual', 'Fitted')], id='time')

p<-ggplot(graphset.melt,  aes(x=time,  y=value)) + geom_ribbon(data=graphset, aes(x=time, y=Fitted, ymin=Fitted-dev,  ymax=Fitted + dev),  alpha=.2,  fill=error.ribbon) + geom_line(aes(colour=variable), size=line.size) + geom_vline(x=max(actual_values$time),  lty=2) + xlab('Time') + ylab('Value') + theme(legend.position='bottom') + scale_colour_hue('')
return(p)

}

我面临的问题是我无法拆分此数据框以将 HWplot 函数应用于数据的单独列(预测 X410、X430、X431 等)。我将使用在列中具有不同数量的 X### 代码的数据帧,因此我将需要 R 脚本来合并动态数量的列。

最终的游戏是从数据框的不同列运行这些预测,并将预测和图表输出到一个 Excel 工作簿,列的名称作为每个工作表的名称。

旁注:当数据框只有一列指标时,HWplot 函数有效,但不适用于多列指标。

我用 apply 系列函数尝试过的所有方法都不起作用,拆分函数也不起作用。

希望这是有道理的 - 如果有人需要澄清,请告诉我。

【问题讨论】:

  • 欢迎来到 SO。请您更专注于您的问题到底是什么,以及输出应该是什么样子,并阅读how to make a great R reproducible example
  • 谢谢!基本上,我试图将 .csv 文件读入 R,其中列出了日期和需要根据我上面编写的 HWplot 函数预测的多列数据。我的问题是我不知道如何使用 apply 函数或循环来读取 .csv 文件,单独预测每一列,并将预测数据输出并绘制到 Excel 工作簿,其中工作簿中的每张工作表的标题为预测的列名。我希望这可以澄清。
  • 所以您已经阅读了 .csv 文件——您可以将其编辑掉。确定你的第一个问题是什么——我认为它是单独预测列——然后编辑这篇文章的其余部分。 (每个帖子一个问题。)一旦你把它记下来,如果你仍然需要下一步的帮助,问另一个问题。我告诉你这是为了帮助你,因为没有人会在一个问题中为你编写整个程序

标签: r excel dataframe forecasting holtwinters


【解决方案1】:

R-bloggers 中的“R 中的批量预测”博文很好地解释了如何做到这一点。

http://www.r-bloggers.com/batch-forecasting-in-r-2/

【讨论】:

    猜你喜欢
    • 2020-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-25
    • 1970-01-01
    • 1970-01-01
    • 2018-03-06
    相关资源
    最近更新 更多