Помогите улучшить модель временных рядов |
Здравствуйте, гость ( Вход | Регистрация )
Помогите улучшить модель временных рядов |
16.04.2018 - 16:10
Сообщение
#1
|
|
Группа: Пользователи Сообщений: 14 Регистрация: 28.01.2018 Пользователь №: 30897 |
Делая анализ временных рядов, у меня возникла серьезная проблема с качеством предсказания
вот данные w=ts(mydat$Y,frequency = 12,start=c(2015,1)) library("forecast") m <- stats::HoltWinters(w) p = predict(m) pp = stats:::predict.HoltWinters(m) p forecast(m) test=forecast:::forecast.HoltWinters(m,h=8) #h is how much months do you want to predict test Результаты полностью бредовые > test Код Point Forecast Lo 80 Hi 80 Lo 95 Hi 95 Jun 2017 6302.7091 -8565.756 21171.175 -16436.65 29042.065 Jul 2017 -1362.2143 -16247.831 13523.402 -24127.80 21403.371 Aug 2017 493.5707 -14430.563 15417.704 -22330.92 23318.063 Sep 2017 1951.3140 -13041.049 16943.677 -20977.53 24880.155 Oct 2017 -17160.9011 -32259.257 -2062.545 -40251.84 5930.042 Nov 2017 -26933.3661 -42183.057 -11683.675 -50255.76 -3610.976 Dec 2017 -19961.5812 -35414.875 -4508.287 -43595.35 3672.192 Jan 2018 -31735.1295 -47450.381 -16019.878 -55769.53 -7700.726 что касается модели АРИМА тоже самое pi=auto.arima(w) summary(pi) q=forecast(pi,h=8) q прогонз Код Point Forecast Lo 80 Hi 80 Lo 95 Hi 95 Jun 2017 1989.083 -17265.17 21243.34 -27457.76 31435.92 Jul 2017 1989.083 -18642.28 22620.45 -29563.87 33542.04 Aug 2017 1989.083 -19933.06 23911.23 -31537.94 35516.11 Sep 2017 1989.083 -21151.95 25130.11 -33402.07 37380.24 Oct 2017 1989.083 -22309.77 26287.94 -35172.81 39150.97 Nov 2017 1989.083 -23414.88 27393.05 -36862.93 40841.09 Dec 2017 1989.083 -24473.88 28452.04 -38482.52 42460.69 Jan 2018 1989.083 -25492.10 29470.26 -40039.76 44017.92 как мне привести в порядок модель, хоть чтобы как-то правдоподобна была?
Прикрепленные файлы
|
|
17.04.2018 - 14:32
Сообщение
#2
|
|
Группа: Пользователи Сообщений: 14 Регистрация: 28.01.2018 Пользователь №: 30897 |
Я решил свой выпрос удалением выбросов:) Тема закрыта
код для удаление выбросов простой remove_outliers <- function(x, na.rm = TRUE, ...) { qnt <- quantile(x, probs=c(.25, .75), na.rm = na.rm, ...) H <- 1.5 * IQR(x, na.rm = na.rm) y <- x y[x < (qnt[1] - H)] <- NA y[x > (qnt[2] + H)] <- NA y } |
|
18.04.2018 - 16:45
Сообщение
#3
|
|
Группа: Пользователи Сообщений: 902 Регистрация: 23.08.2010 Пользователь №: 22694 |
Я решил свой выпрос удалением выбросов:) Тема закрыта код для удаление выбросов простой remove_outliers <- function(x, na.rm = TRUE, ...) { qnt <- quantile(x, probs=c(.25, .75), na.rm = na.rm, ...) H <- 1.5 * IQR(x, na.rm = na.rm) y <- x y[x < (qnt[1] - H)] <- NA y[x > (qnt[2] + H)] <- NA y } Ваши публичные восторги по поводу собственной сообразительности нахожу слегка преждевременными. Когда вы удалили из временного ряда какие-то там выбросы, возникла проблема пропущенных значений. Не мешало бы их восстановить хотя бы фильтром Калмана. |
|
22.04.2018 - 18:03
Сообщение
#4
|
|
Группа: Пользователи Сообщений: 14 Регистрация: 28.01.2018 Пользователь №: 30897 |
фильтр Кальмана загуглил, я о нем не знал, внедрю в код.
|
|