Несоответствующие массивы при объединении двух объектов «ts» - PullRequest
0 голосов
/ 28 июня 2018

Я получаю ошибку при объединении 2 объектов временного ряда, сгенерированных функцией прогноза.

Вот исходный код

# For Time Series Analysis
library(timeSeries)
library(forecast)
library(fpp)
library(tseries)
library(TSA)


# For manipulating data
library(magrittr)
library(forcats)
library(dplyr)
library(tidyr)
library(readr)
library(lubridate)

AP <-AirPassengers

splitTrainXvat <- function(tser, perc_train){
      ntrain <- floor(length(as.vector(tser)) * perc_train)
      nval <- length(as.vector(tser)) - ntrain

      ttrain <- ts(as.vector(tser[1:ntrain]), start = start(tser), frequency = frequency(tser))
      tval <- ts(as.vector(tser[ntrain + 1:nval]), start = end(ttrain) + deltat(tser), 
                 frequency = frequency(tser))

      stopifnot(length(ttrain) == ntrain)
      stopifnot(length(tval) == nval)

      list(ttrain, tval)
    }

ts_all <- AP
data <- splitTrainXvat(ts_all, 0.95)
data
ts_train <- data[[1]]
ts_val <- data[[2]]

# preparing model with training set 
mod.hw.add <- HoltWinters(ts_train, seasonal = "add")
mod.arima <- auto.arima(ts_train, max.p = 2, max.q = 2, max.d = 2,
                        max.P = 2, max.Q = 2, max.D = 2, allowdrift = T,
                        stepwise = F, approximation = F)
mod.arima.boxcox <- auto.arima(ts_train, max.p=2, max.q=2,
                               max.P=2, max.Q=2, max.d=2, max.D=2, allowdrift = T,
                               stepwise = F, approximation = F, lambda = 0)

# Preparing model with testing set and forecasting
pred.hw.add <- forecast(mod.hw.add, h = length(ts_val)+8)$mean
pred.arima <- forecast(mod.arima, h = (length(ts_val)+8))$mean 
pred.arima.boxcox <- forecast(mod.arima.boxcox, h = length(ts_val)+4)$mean

# Combining the two forecasts
Y <- (as.matrix(pred.hw.add) + as.matrix(pred.arima.boxcox))

Ошибка, сгенерированная при этом

Y <- (as.matrix(pred.hw.add) + as.matrix(pred.arima.boxcox))

Ошибка в as.matrix (pred.hw.add) + as.matrix (pred.arima.boxcox): несоответствующие массивы

Есть идеи, почему это происходит?

1 Ответ

0 голосов
/ 28 июня 2018

Вы пытаетесь преобразовать 2 вектора в 2 разные матрицы, а затем добавляете - это выдает ошибку, потому что оба вектора имеют разную длину - поэтому матрица будет иметь разные размеры. Вы хотите создать фрейм данных с двумя столбцами? Вот, пожалуйста -

Y <- cbind(pred.hw.add , pred.arima.boxcox)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...