Я пытаюсь оценить производительность прогнозирования вне выборки для разных моделей OLS. Самый простой временной ряд регрессии выглядит следующим образом: Y_t = b0 + b1 * Y_t-30 + e_tЭффективный способ создания рекурсивных оценок вне выборки для расчета RMSE в R
Фитинг период для модели, скажем, 50, то я позволил модели запустить с помощью пакета dynlm
dynlm(as.zoo(Y) ~ L(as.zoo(Y), 30), start = "1996-01-01", end = timelist[i])
В моем текущем коде я просто разрешаю индексировать i до конца, а затем сохраняю RMSE соответствующей модели. Но это RMSE не является предварительным прогнозом на один шаг вперед, и поскольку мой текущий код уже довольно медленный, и он даже не делает то, что я хочу, я хотел бы спросить вас, есть ли у вас предложение, которое пакет, который я должен использовать для достижения своей цели.
Подводя итог, я хочу сделать следующее:
1) запустить рекурсивные регрессии после определенного фитинга периода (расширение окна, не прокатит окно)
2) создать один шаг вперед вне образца прогнозы
3) вычислить корень среднеквадратичной погрешности этих прогнозов против фактических наблюдений для оценки эффективности модели
Я пытался делать это до сих пор с огромным для цикла и пакет dynlm , но res Ульты не очень удовлетворяют. Любой вход очень ценится, так как я давно искал решения. Я буду обновлять свой примерный код, как только я достиг некоторого прогресса.
# minimal working example
require(xts)
require(zoo)
require(dynlm)
timelist <- seq.Date(from = as.Date("1996-01-01"), to = as.Date("1998-01-01"), by = "days")
set.seed(123)
Y <- xts(rnorm(n = length(timelist)), order.by = timelist)
X <- xts(rnorm(n = length(timelist), mean = 10), order.by = timelist)
# rmse container
rmse.container.full <- data.frame(matrix(NA, ncol = 3, nrow = length(index(timelist))))
colnames(rmse.container.full) <- c("Date", "i", "rmse.m1")
rmse.container.full$Date <- timelist
# fitting period
for(i in 50:length(timelist)) {
# m1
model1 <- dynlm(as.zoo(Y) ~ L(as.zoo(X), 30), start = "1996-01-01", end = timelist[i])
rmse.container.full[i, 2] <- i
rmse.container.full[i, 3] <- summary(model1)$sigma # RSME mod1 etc
print(i)
}
Добро пожаловать в StackOverflow. Пожалуйста, ознакомьтесь с этими советами о том, как создать [минимальный, полный и проверенный пример] (http://stackoverflow.com/help/mcve), а также этот пост в [создании отличного примера в R] (http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example). Возможно, следующие советы по [заданию хорошего вопроса] (http://stackoverflow.com/help/how-to-ask) также могут быть полезны для чтения. – lmo
Почему точно не результаты «очень удовлетворяют»? Это не конкретная проблема, которую мы можем решить. Если вам нужна помощь в статистическом моделировании, вы должны задать свой вопрос в [stats.se], в противном случае дать понять, что здесь задается вопросом программирования, и включить [воспроизводимый пример] (http://stackoverflow.com/questions/5963269/ How-to-make-a-great-r-воспроизводимый пример) – MrFlick
Спасибо за ваше предложение @MrFlick, я посмотрю на это сейчас: [link] (https://www.otexts.org/fpp), а также проверить Cross Validated. – tester