Форум врачей-аспирантов

Здравствуйте, гость ( Вход | Регистрация )

> Помогите улучшить модель временных рядов
scholar
сообщение 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


как мне привести в порядок модель, хоть чтобы как-то правдоподобна была?
Прикрепленные файлы
Прикрепленный файл  aggrmonth.zip ( 419 байт ) Кол-во скачиваний: 211
 
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
 
 
Открыть тему
Ответов (1 - 3)
scholar
сообщение 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
}

Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
 
100$
сообщение 18.04.2018 - 16:45
Сообщение #3





Группа: Пользователи
Сообщений: 902
Регистрация: 23.08.2010
Пользователь №: 22694



Цитата(scholar @ 17.04.2018 - 14:32) *
Я решил свой выпрос удалением выбросов:) Тема закрыта
код для удаление выбросов простой
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
}


Ваши публичные восторги по поводу собственной сообразительности нахожу слегка преждевременными. Когда вы удалили из временного ряда какие-то там выбросы, возникла проблема пропущенных значений. Не мешало бы их восстановить хотя бы фильтром Калмана.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
 
scholar
сообщение 22.04.2018 - 18:03
Сообщение #4





Группа: Пользователи
Сообщений: 14
Регистрация: 28.01.2018
Пользователь №: 30897



фильтр Кальмана загуглил, я о нем не знал, внедрю в код.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
 

Добавить ответ в эту темуОткрыть тему