Прогнозирование с экспоненциальным сглаживанием с использованием формата временных рядов% Y-% m-% d% H:% M в R - PullRequest
0 голосов
/ 09 февраля 2019

У меня есть короткие временные ряды для потока трафика, и я хочу предсказать поток трафика, используя методы простого экспоненциального сглаживания для сравнения с моделью ARIMA.

Я закончил часть модели ARIMA, но застрял скак отформатировать данные, чтобы применить модель простого экспоненциального сглаживания.

Причина, по которой я использую простое экспоненциальное сглаживание, заключается в том, что я читаю, что это работает с короткими временными рядами, где нет тренда или сезонности.Мой временной ряд составляет 4 месяца и имеет почасовое чтение.

мои данные выглядят так:

       Date_Hour       Traffic_Flow      
2017-07-17 00:00:00         50 
2017-07-17 01:00:00         80 
2017-07-17 02:00:00         77 
2017-07-17 03:00:00         89 
2017-07-17 04:00:00         61 
2017-07-17 05:00:00         64

У меня 2175 наблюдений, и для обучения будет использовано 1522 наблюдения (3 /4) из данных, и для тестирования будут использовать 653 наблюдения.

View(SES_Data)
SES_DataXTS <- as.xts(x= SES_Data[,-1], order.by = as.POSIXct(SES_Data$Date_Hour), frequency = 4)
# Split the Data
training_indices <- 1:floor(0.7 * nrow(SES_DataXTS))
training_data <- SES_DataXTS[training_indices]
test_data <- SES_DataXTS[-training_indices]
#Fit mode:
fit_Model_SES <- ses(training_data ,beta=FALSE, gamma=FALSE)
# Do forecasting
forecast_SES <- forecast(fit_Model_SES,h=653)

Когда я делаю прогноз, я получаю эту ошибку:

Error in forecast.forecast(fit_Model_SES, h = 653) : 
  Please select a longer horizon when the forecasts are first computed

Как указать началои конец, когда у меня есть почасовое чтение в моих данных?Я не смог найти пример того, как использовать простое экспоненциальное сглаживание с объектами xts и zoo.И если я преобразую свои данные в ts (), он будет игнорировать почасовое чтение.

Я пробовал эту команду, но я не считаю ее правильной.

tsfunction <- ts(SES_Data, frequency=24, start=2017-07-17 00:00:00, end= 2017-10-15 14:00:00, beta=FALSE, gamma=FALSE)

Есть предложения, пожалуйста?Или любой другой метод прогнозирования, который я могу использовать с короткими временными рядами, чтобы сравнить его с ARIMA

Обновления:

Поэтому я редактирую свою команду в:

#Fit mode:
fit_Model_SES <- ses(SES_DataXTS ,beta=FALSE, gamma=FALSE, h=653)
#fit_Model_SES <- ses(training_data1 ,beta=FALSE, gamma=FALSE, h = 653)    
#Model 1: Exponential State Smoothing
f_ets = forecast(fit_Model_SES) # forecast 4 months into the future
plot(f_ets, col="blue")

Но когда яподготовьте мой прогноз, он читает мой формат даты и времени неверно.

вот так: enter image description here

Я ищу график для своего прогноза, как и для модели ARIMA с такими же данными, как этот:

enter image description here

1 Ответ

0 голосов
/ 09 февраля 2019

Вам необходимо указать параметр h в функции ses() (он вычислит прогноз).Для некоторых функций, таких как ses(), вам не нужно вызывать forecast() после.

forecast_SES <- forecast(fit_Model_SES, h = 600)

Источник: Пакет прогноза Prediction Horizon проблема в R

...