【问题标题】:Extracting the lower and upper bounds of Forecast and Appending to a dataset in R提取预测的下限和上限并附加到 R 中的数据集
【发布时间】:2016-10-29 23:47:21
【问题描述】:

我有一个数据框,其中包含特定 ID 组的预测值。我可以使用purchaseforecast$lowerpurchaseforecast$upper 提取它们,但无法将它们附加到我在下面创建的空数据框中。我还想将循环中的 id 添加到空数据框中。任何帮助表示赞赏。

空数据框:

finaloutput <- data.frame(id =integer,
                 lowerlimit=integer(length = 0L),
                 upperlimit=integer(length = 0L)) 

预测数据框:

purchaseforecastmn <- forecast.HoltWinters(object = daily_seasonality, level = 95, h =30)

除了来自循环的 id 值之外,我想附加到下限的值是 purchaseforecastmn$lower,上限是 purchaseforecastmn$upper

示例代码:

dailyseasonality1 <- c(1:365)

dailyseasonality2 <- HoltWinters(dailyseasonality1, gamma = FALSE,beta = FALSE)

purchaseforecastmn <- forecast.HoltWinters(object = dailyseasonality2, level = 95, h =30)

【问题讨论】:

  • 考虑添加一个小的示例数据集和运行的代码。
  • 在示例代码标记下添加示例数据集。我想将 purchaseforecastmn$lower 的值附加到下限,将 purchaseforecastmn$upper 的值附加到上限,将“1”附加到 id。谢谢

标签: r dataframe append


【解决方案1】:

我不确定我是否理解这个问题,但下面的代码返回一个 data.frame,其中包含 purchaseforecastmn 中的所有内容以及一个 id 变量:

# install.packages('forecast')

library(forecast)

n.ids <- 30

id <- 1:n.ids

dailyseasonality1 <- c(1:365)
dailyseasonality2 <- HoltWinters(dailyseasonality1, gamma = FALSE,beta = FALSE)
purchaseforecastmn <- forecast.HoltWinters(object = dailyseasonality2, level = 95, h = n.ids)
purchaseforecastmn

my.data <- as.data.frame(purchaseforecastmn)
my.data <- data.frame(id, my.data)

这是data.frame my.data的输出:

    id Point.Forecast    Lo.95 Hi.95
366  1       364.9999 364.9999   365
367  2       364.9999 364.9999   365
368  3       364.9999 364.9999   365
369  4       364.9999 364.9999   365
370  5       364.9999 364.9999   365
371  6       364.9999 364.9999   365
372  7       364.9999 364.9999   365
373  8       364.9999 364.9999   365
374  9       364.9999 364.9999   365
375 10       364.9999 364.9999   365
376 11       364.9999 364.9999   365
377 12       364.9999 364.9999   365
378 13       364.9999 364.9999   365
379 14       364.9999 364.9999   365
380 15       364.9999 364.9999   365
381 16       364.9999 364.9999   365
382 17       364.9999 364.9999   365
383 18       364.9999 364.9999   365
384 19       364.9999 364.9999   365
385 20       364.9999 364.9999   365
386 21       364.9999 364.9999   365
387 22       364.9999 364.9999   365
388 23       364.9999 364.9999   365
389 24       364.9999 364.9999   365
390 25       364.9999 364.9999   365
391 26       364.9999 364.9999   365
392 27       364.9999 364.9999   365
393 28       364.9999 364.9999   365
394 29       364.9999 364.9999   365
395 30       364.9999 364.9999   365

如果你只想要my.data的第一行,你可以用:

my.output <- my.data[1,]

关于循环,我想我需要看一个运行代码的示例。这可能有效。

library(forecast)

n.iters <- 30

my.output <- matrix(NA, ncol = 4, nrow = n.iters)

for(i in 1:n.iters) {

     dailyseasonality1 <- c(1:365)
     dailyseasonality2 <- HoltWinters(dailyseasonality1, gamma = FALSE,beta = FALSE)
     purchaseforecastmn <- forecast.HoltWinters(object = dailyseasonality2, level = 95, h = 30)
     my.data <- as.matrix(as.data.frame(purchaseforecastmn))

     my.output[i,1] <- i
     my.output[i,2:4] <- my.data[1,1:3]

}

colnames(my.output) <- c('id', 'Point.Forecast', 'Lo.95', 'Hi.95')
my.output

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-25
    • 1970-01-01
    • 1970-01-01
    • 2018-01-02
    相关资源
    最近更新 更多