Ошибка в ets y должна быть одномерным временным рядом при попытке создать прогноз для данных с диапазоном от-1 до 1 в R - PullRequest
0 голосов
/ 30 сентября 2019

Я пытаюсь прогнозировать данные, которые находятся в диапазоне от -1 до 1.

mydata=structure(list(Date = structure(1:6, .Label = c("27.09.2019 \t0:00:00", 
"27.09.2019 \t1:00:00", "27.09.2019 \t2:00:00", "27.09.2019 \t3:00:00", 
"27.09.2019 \t4:00:00", "27.09.2019 \t5:00:00"), class = "factor"), 
    metr1 = c(-0.97654, 0.0376544, 0.049765976, -0.578, 0.045687, 
    -0.045688), metr2 = c(-0.97655, 0.0376544, 0.049765976, -0.579, 
    0.045688, -0.045689), metr3 = c(-0.97656, 0.0376544, 0.049765976, 
    -0.58, 0.045689, -0.04569), metr4 = c(-0.97657, 0.0376544, 
    0.049765976, -0.581, 0.04569, -0.045691)), .Names = c("Date", 
"metr1", "metr2", "metr3", "metr4"), class = "data.frame", row.names = c(NA, 
-6L))

У меня есть данные десятичной дроби, это значение в диапазоне -1; 1.

Длякаждую переменную (metr1-metr4) я хочу предсказать значение на 1 час вперед.

library("forecast")
mydat %>%
  ets(model="AAN", damped=FALSE, lambda=0) %>%
  forecast(h=24, biasadj=TRUE) %>% # 24 hours ahead
  autoplot() 

и получаю ошибку

Error in ets(., model = "AAN", damped = FALSE, lambda = 0) : 
  y should be a univariate time series
#This is not a built-in transformation, so we will need to do more work.

, затем я пытаюсь следующий

a <- -1
b <- 1
# Transform data and fit model
fit <- log((mydat-a)/(mydat-b)) %>%
  ets(model="AAN", damped=FALSE)
fc <- forecast(fit, h=24)
# Back-transform forecasts
fc[["mean"]] <- (b-a)*exp(fc[["mean"]]) /
  (1+exp(fc[["mean"]])) + a
fc[["lower"]] <- (b-a)*exp(fc[["lower"]]) /
  (1+exp(fc[["lower"]])) + a
fc[["upper"]] <- (b-a)*exp(fc[["upper"]]) /
  (1+exp(fc[["upper"]])) + a
fc[["x"]] <- mydat
# Plot result on original scale
autoplot(fc)

и ошибка, которую не смогла найти каждая функция

> fc[["x"]] <- mydat
Error in fc[["x"]] <- mydat : object 'fc' not found
> # Plot result on original scale
> autoplot(fc)
Error in autoplot(fc) : could not find function "autoplot"

Существует много таких ошибок. Так как правильно выполнить анализ?

Я хочу получить такую ​​выходную таблицу из 27.09.2019 05:00:00 to 28.09.2019 05:00:00, например,

                  Date       metr1       metr2       metr3       metr4
1  27.09.2019  0:00:00    -0.97654    -0.97655    -0.97656    -0.97657
2  27.09.2019  1:00:00   0.0376544   0.0376544   0.0376544   0.0376544
3  27.09.2019  2:00:00 0.049765976 0.049765976 0.049765976 0.049765976
4  27.09.2019  3:00:00      -0.578      -0.579      -0.580      -0.581
5  27.09.2019  4:00:00    0.045687    0.045688    0.045689    0.045690
6  27.09.2019  5:00:00   -0.045688   -0.045689   -0.045690   -0.045691
7  27.09.2019 6:00 :00       0.05       -0.05        0.01       -0.09
8  27.09.2019 7:00:00        0.01        0.03        0.05        0.06
9  27.09.2019 8:00 :00      -0.03        0.01       -0.01         0.1
10                   =           =           =           =           =
11  28.09.2019 5:00:00        0.03        0.08        0.01        0.03

числа могут иметь отрицательные значения (какое-то значение будет отрицательным в прогнозе), потому что переменная принимаетлюбое значение от -1 до 1

...