Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум врачей-аспирантов _ Медицинская статистика _ Линейная регрессия для временных рядов

Автор: scholar 9.02.2018 - 18:18

Прошу простить, что вопрос немного не медицинский. Подскажите, можно ли применять для предсказания временного ряда не стандартные методы (ARIMA, сезонные, аддитивные модели), а именно простую линейную регрессию?
вот пример данных за 30 дней. Можно ли используя только линейную регрессию предсказать значения
Заранее всем спасибо , кто подсказал.

Автор: 100$ 9.02.2018 - 18:51

Можно, если осторожно. В том смысле, что надо внимательно посматривать на (возможную) spurious regression.


Автор: passant 9.02.2018 - 21:12

Применять можно любую модель - хоть скользящее среднее, хоть регрессию, хоть фильтрацию Калмана, хоть любой другой метод. Другое дело, что надо понимать, что для каждого конкретного случая одни модели будут работать точнее, чем другие. Прогноз будет более точным или менее точным. И, кстати, почему "простую линейную регрессионную"? Ведь даже в классе регрессионных моделей могут быть и нелинейные?
Универсального метода нет и надо экспериментировать.

Автор: scholar 10.02.2018 - 00:29

passant, речь идет не о построении идеальной модели. А как бы сказать о самом факте
Возможно господин 100$ сможет ответить на вопрос, можно ли через lm фукцию в R сделать это и как? Учитывая что у меня тут ежедневнное(daily) предсказание на 2 недели (14 дней т.е)
Про ложную регрессию, я не слышал=(

Автор: 100$ 10.02.2018 - 02:32

Цитата(scholar @ 10.02.2018 - 00:29) *
...можно ли через lm фукцию в R сделать это и как?


Можно, только я не знаю, как отклик с набором предикторов оформить в виде ts(), и нужно ли это в данном случае в принципе. Впрочем, регрессию без проблем можно оценить и в Экселе, однако с интервальным прогнозом придется повозиться.

Автор: 100$ 10.02.2018 - 13:30

Цитата(scholar @ 10.02.2018 - 00:29) *
Возможно господин 100$ ...


Да, кстати, ваше благородие, я тут общаюсь исключительно по принципу "Будь проще, и к тебе потянутся люди", поэтому самозванных господ не люблю, господина из себя не изображаю и вам не советую. Пока всё.

Автор: passant 10.02.2018 - 14:03

ЕСЛИ ((Вы уверены, что у вас линейная регрессионная модель может что-то предсказать на период 14 дней) И (у Вас действительно ежедневные данные за предыдущий период))
ТО
использование специализированных средств работы с временными рядами Вам не нужно.

Все что Вам надо:
1. Создаете фрейм:
- первый столбец - номер дня (именно так - первый день наблюдения -1, второй день наблюдения - 2...... последний день наблюдения - (например)20).
- второй столбец - значения наблюдения в соответствующий день.
2. Скармливаете эти данные функции lm(с2~c1,...). Получаете модель.
3. Подставляете дни, на которые вам надо сделать прогноз - в нашем примере - 21,22,.....34 (если надо на две недели вперед).
4.ЕСЛИ у Вас не нарушены основные предположения (т.е. модель действительно имеет линейные тренд, И он сохраняется на весь период прогнозирования)
ТО наслаждаетесь результатами;
ИНАЧЕ
Применяете другие подходы;

Автор: scholar 10.02.2018 - 17:05

passant, Вас понял, я так и подумал сначала кстати ,но был неуверен в этом.
100$, прошу извинить, не знал:)
Последний вопрос. (пока использовал стандартные методы временных рядов)
вот у меня на выходе получились такие результаты
Point Forecast Lo 80 Hi 80 Lo 95 Hi 95
2016.2514|| 45.21749 36.49811 56.01815 32.58475 62.74312
2016.2541|| 34.10518 27.49301 42.30623 24.52838 47.41754
2016.2569|| 35.54743 28.62030 44.14975 25.51742 49.51612
2016.2596|| 45.46761 36.56616 56.53412 32.58241 63.44356
2016.2623|| 41.72907 33.52017 51.94655 29.84972 58.33152
2016.2651|| 40.60631 32.58185 50.60537 28.99699 56.85909
2016.2678||40.88003 32.76501 51.00319 29.14283 57.33981
2016.2706 43.02138 34.44556 53.73044 30.62078 60.43903
2016.2733||32.50043 25.99185 40.63741 23.09164 45.73916
2016.2760 33.93362 27.10818 42.47611 24.06939 47.83653
2016.2788|| 43.48419 34.70294 54.48554 30.79643 61.39408
2016.2815|| 39.98677 31.87798 50.15641 28.27360 56.54775
2016.2843 38.99057 31.05229 48.95645 27.52649 55.22451
2016.2870|| 39.33681 31.29620 49.44140 27.72777 55.80155
что значат вот эти 2514, 2541
Я не понимаю какая дата перед мной
2016.2870 что это за дата.

Автор: passant 10.02.2018 - 22:01

Не хотите Вы слушать, что Вам говорят.
Ну тогда взгляните на Рис1. (Правда, я тут намедни инсталлировал новую для себя версию EXCEL и мне было интересно за одно поиграться с ней. Так что не на R, уж не обессудте.)
Вы еще хотите после этого применять чисто линейную регрессионную модель? Ну пожалуйста.
EXCEL в два клика дает значения коэффициентов линейной регрессии (Рис.2).
Получаем, подставляем, строим график (Рис.3). Желтая - регрессия внутри имеющейся серии, красное - прогноз.
Ну уверен, что такой прогноз хоть в чем-то может оказаться полезен, хотя.....

 

Автор: scholar 10.02.2018 - 22:29

passant, я сейчас не про линейную регрессию, я решил все-таки использовать ARIMA
и мой результат видите выше
что значит эта дата
2016.2514

Автор: DrgLena 11.02.2018 - 02:24

Цитата(scholar @ 9.02.2018 - 19:18) *
Прошу простить, что вопрос немного не медицинский.

Да, похоже на продажи. Сильная зависимости от дня недели, это нужно учесть. Это можно делать различными путями. Для суббот и воскресений - совершенно различные линии регрессии. Можно учесть ранг дня недели, например Rang=1,2,3,4,5,6,7 cоответствует дням недели от мин до мах, а именно 7,1,3,4,4,2,5,6 (дни недели с понедельника 1 до 7 ?воскресенье.
Тогда будет:
b Std.Err. - of b t(27) p-value
Intercept -19,6908 21,15699 -0,93070 0,360258
rang 59,6602 3,65482 16,32370 0,000000
Var3 1,9956 0,87900 2,27033 0,031381


R2=0,91

Удалить pdf не могу, он вставляется какой то обрезанный sad.gif

 

 Graph.pdf ( 44,2 килобайт ) : 207
 

Автор: Олег Кравец 11.02.2018 - 11:09

Очевидные "дни недели" наводят на простую идею: строить 7 моделей...

Автор: 100$ 11.02.2018 - 14:05

Цитата(Олег Кравец @ 11.02.2018 - 11:09) *
Очевидные "дни недели" наводят на простую идею: строить 7 моделей...


/подумав/
Еще более простая идея называется сезонной ARIMA-моделью... А уж про моделирование рядом Фурье я ваще умолчу... А в лохматые времена для избавления от сезонности и вовсе строили регрессии на кучу dummi-переменных...

Автор: passant 11.02.2018 - 14:31

Вообще-то на картинке мы видим совершенно классический случай, который рассматривается на первых страницах любого учебника или сайта по временным рядам. (Например http://statsoft.ru/home/textbook/modules/sttimser.html). Ряды такого типа особенно характерны для эконометрических задач, где и исследуются весьма подробно. (Например - http://eos.ibi.spb.ru/umk/4_5/5/print/5_R1_T6.pdf , http://baguzin.ru/wp/4-3-prognozirovanie-i-planirovanie-v-ra/ ). Называются они - рядами с сезонной составляющей (слово "сезонный" не должно смущать, в данном случае период сезонности может быть и несколько секунд, и неделя, и год, и тысячелетие). Для таких рядов придуманы специальные методы - и для формального обнаружения сезонности и выявления их отличий от просто хаотических колебаний, и для выявления периода сезонности (опят-же, не на глаз, а формально), причем в одном ряду могут быть несколько различных сезонных составляющих, и для прогнозирования поведения ряда, в модели которого присутствуют сезонные компоненты и даже для обнаружения аномалий сезонности.
Естественно и в R доступны средства для работы с сезонностью, например:
http://a-little-book-of-r-for-time-series.readthedocs.io/en/latest/src/timeseries.html
https://shiring.github.io/forecasting/2017/06/13/retail_forcasting_part3
https://petolau.github.io/Regression-trees-for-forecasting-time-series-in-R/
и много много других.
Поэтому, думаю, если автору действительно хочется сделать серьезную работу, а не строить свой велосипед, следует ознакомиться с упомянутым подходом. А если это просто "проходная" задача - то можно, конечно, и "на глазок".

Автор: scholar 11.02.2018 - 15:50

Спасибо за ваше мнения ,уважаемые участники форума. Но выше я сказал ,что я передумал с идей линейной регрессии и решил углубиться в ARIMA -модель.
Я получил форекаст и там даты в таком формата
2016.2514 что это значит?

Автор: Олег Кравец 11.02.2018 - 16:14

Цитата(100$ @ 11.02.2018 - 14:05) *
Еще более простая идея называется сезонной ARIMA-моделью... А уж про моделирование рядом Фурье я ваще умолчу...


Да. В идее, но не в реализации. 7 регрессионных простых моделек (система явно без последействия) по сути точно решат задачу.

Что касается Фурье - уж больно негладкая функция для аппроусимации.

Автор: 100$ 12.02.2018 - 00:27

Цитата(Олег Кравец @ 11.02.2018 - 16:14) *
Да. В идее, но не в реализации.


А что не так с реализацией? Злые преподы руками заставляют считать?

Цитата
Что касается Фурье - уж больно негладкая функция для аппроусимации.


Тем не менее, попробовать стоит. Остатки отмоделировать еще к.-л. моделью. Либо с самого начала подгонять модели кластеризации волатильности (семейство GARCH).

Автор: Олег Кравец 13.02.2018 - 21:43

Цитата(100$ @ 12.02.2018 - 00:27) *
А что не так с реализацией? Злые преподы руками заставляют считать?


smile.gif "Пила" плохо моделируется непрерывными функциями. Честнее распараллелить на дни.

Цитата(100$ @ 12.02.2018 - 00:27) *
Тем не менее, попробовать стоит. Остатки отмоделировать еще к.-л. моделью. Либо с самого начала подгонять модели кластеризации волатильности (семейство GARCH).


Э.... Как бы это... Зачем делать сложно, когда можно сделать просто?

Автор: 100$ 13.02.2018 - 22:41

Цитата(Олег Кравец @ 13.02.2018 - 21:43) *
"Пила" плохо моделируется непрерывными функциями. Честнее распараллелить на дни.


Ну, так эконометрика вся такая - что финансовые ряды, что продажи артели "Напрасный труд". Только апофеозом честности в данном случае является ответ на вопрос "А почему так никто не делает?".

Цитата
Э.... Как бы это... Зачем делать сложно, когда можно сделать просто?


Действительно, три модели (тренд+сезонная компонента+случайная составляющая) и "этажерка" из семи палок прямых - "это ж совсем другое дело" (с).

Автор: Олег Кравец 14.02.2018 - 00:11

Цитата(100$ @ 13.02.2018 - 22:41) *
А почему так никто не делает?


А не знаю... Математик я, звиняйте...

Автор: Олег Кравец 14.02.2018 - 00:12

Цитата(100$ @ 13.02.2018 - 22:41) *
Действительно, три модели (тренд+сезонная компонента+случайная составляющая) и "этажерка" из семи палок прямых - "это ж совсем другое дело" (с).


Да ладно. Никаких этажерок. Семь моделей - простых, однотипных, тривиальных. По сути одна параметризованная. Или бутерброд из трех, да еще с остатками повозиться и объяснить их.

Автор: 100$ 14.02.2018 - 02:29

Цитата(Олег Кравец @ 14.02.2018 - 00:12) *
Да ладно. Никаких этажерок. Семь моделей - простых, однотипных, тривиальных. По сути одна параметризованная. Или бутерброд из трех, да еще с остатками повозиться и объяснить их.


Всё-то вам, батенька, шуточки, а "мужики-то и не знали". Мужики-то все сидят да какие-то мультипликативные+аддитивные сезонные индексы выдумывают, да методы Census I да II, да TRAMO/SEATS, да фильтры Ходрика - Прескотта... От безделья, вестимо. А тут на самом деле все просто - наливай да пей. Особенно применительно к данному случаю: 2 к-та линейной регресии оценить по 60/7~9 наблюдениям. Степени свободы, стат. значимость к-тов - да это ж такие пустяки, что и говорить неловко.

Ну, и чтобы закончить. Почему вы тактично выбросили из обсуждения регрессию на dummy-переменные? Это ж, по большому Гамбурскому счету, то же самое, что и ваша "одна, но параметризованная".

Автор: Олег Кравец 14.02.2018 - 07:52

Цитата(100$ @ 14.02.2018 - 02:29) *
2 к-та линейной регрессии оценить по 60/7~9 наблюдениям.


Да, вот на это я внимания не обратил, верно.

Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)