Каковы размеры набора поездов и тестов по умолчанию для функции прогноза () в R?

Я использовал модель TBATS для своих данных, и когда я применяю функцию прогноза(), она автоматически делает прогноз на два года вперед. Я не указал ни обучающую, ни тестовую выборку, так как мне узнать, сколько данных было использовано для прогнозирования следующих двух лет?

Данные, с которыми я имею дело, — это данные о времени поездок Uber с января 2016 года по январь 2020 года. У меня есть ежедневные данные (частота выборки = 1) для 18 городов, и каждый город имеет разный размер выборки (они варьируются от 1422 дней до 1459 дней). .

Я установил вектор времени в пути как объект msts, поскольку он имеет множественную сезонность, которая используется моделью TBATS.

Когда я вычисляю RMSE, MAE, MAPE и MSE, в целом я получаю очень низкие значения, так как я могу узнать, на каких данных тренируется TBATS?

Вот мой код:

data <- read.csv('C:/users/Datasets/Final Datasets/final_a.csv', TRUE, ",")
y <- msts(data$MeanTravelTimeSeconds, start=c(2016,1), seasonal.periods=c(7.009615384615385, 30.5, 91.3, 365.25))

fit <- tbats(y)
plot(fit)
fc <- forecast(fit)
autoplot(fc, ylab = "Travel Time in Seconds")

# Check residuals (ACF and histogram)
checkresiduals(fc)

# RMSE
rmse <- sqrt(fit$variance)

# MAE
res <- residuals(fit)
mae <- mean(abs(res))

# MAPE
pt <- (res)/y
mape <- mean(abs(pt))

# MSE (Mean Squared Error)
mse <- mean(res^2)

Результаты производительности модели TBATS для Амстердама:

RMSE: 0.06056063
MAE: 0.04592825
MAPE: 6.474616e-05
MSE: 0.00366759

Если бы мне пришлось вручную выбирать тестовые и обучающие наборы, как мне изменить свой код, чтобы сделать это?

См. help("forecast.tbats"), аргумент h.

Rui Barradas 23.12.2020 12:57

Спасибо! Итак, fc$fitted - y даст мне расстояние между предсказанием и истинным значением, не так ли? И help("forecast.tbats") говорит мне, что обучающий набор в два раза превышает размер самой большой сезонности, но на каком фрагменте моего набора данных он обучался? Это могут быть первые два года, два года в середине или последние два года.

Luiz Scheuer 23.12.2020 13:21
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
2
346
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Если вы используете forecast(fit), как вы это делали, вы получаете подогнанные значения из обучающих данных.

Если вы хотите использовать тестовый набор, см. пример ниже. Вы используете подобранную модель для прогнозирования до горизонта h и сравниваете с известным набором данных.

library(forecast)

# Training Data
n_train <- round(length(USAccDeaths) * 0.8)
train <- head(USAccDeaths, n_train)

# Test Data
n_test <- length(USAccDeaths) - n_train
test <- tail(USAccDeaths, n_test)

# Model Fit
fit <- tbats(train)

# Forecast for the same horizion as the test data
fc <- forecast(fit, n_test)

# Point Forecasts 
fc$mean
#            Jan       Feb       Mar       Apr       May       Jun       Jul
# 1977                      7767.513  7943.791  8777.425  9358.863 10034.996
# 1978  7711.478  7004.621  7767.513  7943.791  8777.425  9358.863 10034.996
#            Aug       Sep       Oct       Nov       Dec
# 1977  9517.860  8370.509  8706.441  8190.262  8320.606
# 1978  9517.860  8370.509  8706.441  8190.262  8320.606

test # for comparison with the point forecasts
#        Jan   Feb   Mar   Apr   May   Jun   Jul   Aug   Sep   Oct   Nov   Dec
# 1977              7726  8106  8890  9299 10625  9302  8314  8850  8265  8796
# 1978  7836  6892  7791  8192  9115  9434 10484  9827  9110  9070  8633  9240

Было бы интересно посмотреть, как будут вести себя графики, подобные следующему.

autoplot(USAccDeaths) + autolayer(fc) + autolayer(fitted(fit))
#autoplot(USAccDeaths) +  autolayer(fitted(fit))

Спасибо за это! Просто для уточнения: означает ли это, что мои прогнозируемые значения равны fc$mean? Если да, то что в данном случае означает fc$fitted?

Luiz Scheuer 23.12.2020 13:30
fc$fitted - это подобранные значения - подобранная модель, примененная к обучающим данным.
kangaroo_cliff 23.12.2020 13:32

Итак, когда я вычисляю RMSE, MAE и т. д., используя только forecast(fit) (без разделения моих данных на обучающий и тестовый набор), какие значения я должен использовать для прогнозируемых значений и истинных значений? Я только что видел, как ты редактировал. В чем разница между оранжевой линией и черной линией?

Luiz Scheuer 23.12.2020 13:35

Таким образом, в этом случае черная линия — это y (истинные значения), а оранжевая — подобранные значения (данные для обучения). Но как данные обучения могут отличаться от истинных значений? Извините за расширение, я просто не могу понять разницу между тренировочным набором, подобранными значениями, прогнозом и тем, какие линии они представляют.

Luiz Scheuer 23.12.2020 13:42

Данные обучения, черная линия, это y — истинные данные. Подходящие значения представляют собой y минус условия ошибки (y_t - e_t).

kangaroo_cliff 23.12.2020 15:35

Другие вопросы по теме