Я пытаюсь сделать много прогнозов временных рядов, используя функцию HoltWinters в R. Для этой цели я использую цикл for и внутри я вызываю функцию, и сохранить предсказание в data.frame.Избегайте «сбоя оптимизации» в цикле цикла в R
Проблема заключается в том, что некоторые результатах функции HoltWinters дает ошибку, в частности оптимизационной ошибки:
Error en HoltWinters(TS[[i]]) : optimization failure
Этой ошибка разбивают цикл.
Так что мне нужно что-то вроде «try»: если это может сделать функцию HoltWinters, она сохраняет предсказание, в противном случае она сохранит ошибку.
Приведенный ниже код повторяет эту проблему:
data <- list()
data[[1]] <- rnorm(36)
data[[2]] <-
c(
24,24,28,24,28,22,18,20,19,22,28,28,28,26,24,
20,24,20,18,17,21,21,21,28,26,32,26,22,20,20,
20,22,24,24,20,26
)
data[[3]] <- rnorm(36)
TS <- list()
Outputs <- list()
for (i in 1:3) {
TS[[i]] <- ts(data[[i]], start = 1, frequency = 12)
Function <- HoltWinters(TS[[i]])
TSpredict <- predict(Function, n.ahead = 1)[1]
Outputs[[i]] <-
data.frame(LastReal = TS[[i]][length(TS[[i]])], Forecast = TSpredict)
}
Где я < - 2 Проблема генерируется.
Что мне нужно, что в этом примере список «Выходы» выглядит следующим образом:
> Outputs
[[1]]
LastReal Forecast
1 0.5657129 -2.274507
[[2]]
LastReal Forecast
1 error error
[[3]]
LastReal Forecast
1 0.4039783 -0.9556881
Спасибо заранее.
Оберните вызов функции 'HoltWinters' в' tryCatch'. См. Примеры в файлах справки функции. У SO есть несколько сообщений по этому вопросу. –