Линейная регрессия для временных рядов |
Здравствуйте, гость ( Вход | Регистрация )
Линейная регрессия для временных рядов |
9.02.2018 - 18:18
Сообщение
#1
|
|
Группа: Пользователи Сообщений: 14 Регистрация: 28.01.2018 Пользователь №: 30897 |
Прошу простить, что вопрос немного не медицинский. Подскажите, можно ли применять для предсказания временного ряда не стандартные методы (ARIMA, сезонные, аддитивные модели), а именно простую линейную регрессию?
вот пример данных за 30 дней. Можно ли используя только линейную регрессию предсказать значения Заранее всем спасибо , кто подсказал. Сообщение отредактировал scholar - 11.02.2018 - 17:23 |
|
9.02.2018 - 18:51
Сообщение
#2
|
|
Группа: Пользователи Сообщений: 902 Регистрация: 23.08.2010 Пользователь №: 22694 |
Можно, если осторожно. В том смысле, что надо внимательно посматривать на (возможную) spurious regression.
|
|
9.02.2018 - 21:12
Сообщение
#3
|
|
Группа: Пользователи Сообщений: 231 Регистрация: 27.04.2016 Пользователь №: 28223 |
Применять можно любую модель - хоть скользящее среднее, хоть регрессию, хоть фильтрацию Калмана, хоть любой другой метод. Другое дело, что надо понимать, что для каждого конкретного случая одни модели будут работать точнее, чем другие. Прогноз будет более точным или менее точным. И, кстати, почему "простую линейную регрессионную"? Ведь даже в классе регрессионных моделей могут быть и нелинейные?
Универсального метода нет и надо экспериментировать. Сообщение отредактировал passant - 9.02.2018 - 21:14 |
|
10.02.2018 - 00:29
Сообщение
#4
|
|
Группа: Пользователи Сообщений: 14 Регистрация: 28.01.2018 Пользователь №: 30897 |
passant, речь идет не о построении идеальной модели. А как бы сказать о самом факте
Возможно господин 100$ сможет ответить на вопрос, можно ли через lm фукцию в R сделать это и как? Учитывая что у меня тут ежедневнное(daily) предсказание на 2 недели (14 дней т.е) Про ложную регрессию, я не слышал=( Сообщение отредактировал scholar - 10.02.2018 - 00:35 |
|
10.02.2018 - 02:32
Сообщение
#5
|
|
Группа: Пользователи Сообщений: 902 Регистрация: 23.08.2010 Пользователь №: 22694 |
...можно ли через lm фукцию в R сделать это и как? Можно, только я не знаю, как отклик с набором предикторов оформить в виде ts(), и нужно ли это в данном случае в принципе. Впрочем, регрессию без проблем можно оценить и в Экселе, однако с интервальным прогнозом придется повозиться. |
|
10.02.2018 - 13:30
Сообщение
#6
|
|
Группа: Пользователи Сообщений: 902 Регистрация: 23.08.2010 Пользователь №: 22694 |
|
|
10.02.2018 - 14:03
Сообщение
#7
|
|
Группа: Пользователи Сообщений: 231 Регистрация: 27.04.2016 Пользователь №: 28223 |
ЕСЛИ ((Вы уверены, что у вас линейная регрессионная модель может что-то предсказать на период 14 дней) И (у Вас действительно ежедневные данные за предыдущий период))
ТО использование специализированных средств работы с временными рядами Вам не нужно. Все что Вам надо: 1. Создаете фрейм: - первый столбец - номер дня (именно так - первый день наблюдения -1, второй день наблюдения - 2...... последний день наблюдения - (например)20). - второй столбец - значения наблюдения в соответствующий день. 2. Скармливаете эти данные функции lm(с2~c1,...). Получаете модель. 3. Подставляете дни, на которые вам надо сделать прогноз - в нашем примере - 21,22,.....34 (если надо на две недели вперед). 4.ЕСЛИ у Вас не нарушены основные предположения (т.е. модель действительно имеет линейные тренд, И он сохраняется на весь период прогнозирования) ТО наслаждаетесь результатами; ИНАЧЕ Применяете другие подходы; Сообщение отредактировал passant - 10.02.2018 - 14:10 |
|
10.02.2018 - 17:05
Сообщение
#8
|
|
Группа: Пользователи Сообщений: 14 Регистрация: 28.01.2018 Пользователь №: 30897 |
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 что это за дата. Сообщение отредактировал scholar - 10.02.2018 - 22:42 |
|
10.02.2018 - 22:01
Сообщение
#9
|
|
Группа: Пользователи Сообщений: 231 Регистрация: 27.04.2016 Пользователь №: 28223 |
Не хотите Вы слушать, что Вам говорят.
Ну тогда взгляните на Рис1. (Правда, я тут намедни инсталлировал новую для себя версию EXCEL и мне было интересно за одно поиграться с ней. Так что не на R, уж не обессудте.) Вы еще хотите после этого применять чисто линейную регрессионную модель? Ну пожалуйста. EXCEL в два клика дает значения коэффициентов линейной регрессии (Рис.2). Получаем, подставляем, строим график (Рис.3). Желтая - регрессия внутри имеющейся серии, красное - прогноз. Ну уверен, что такой прогноз хоть в чем-то может оказаться полезен, хотя..... Сообщение отредактировал passant - 10.02.2018 - 22:11 |
|
10.02.2018 - 22:29
Сообщение
#10
|
|
Группа: Пользователи Сообщений: 14 Регистрация: 28.01.2018 Пользователь №: 30897 |
passant, я сейчас не про линейную регрессию, я решил все-таки использовать ARIMA
и мой результат видите выше что значит эта дата 2016.2514 |
|
11.02.2018 - 02:24
Сообщение
#11
|
|
Группа: Пользователи Сообщений: 1325 Регистрация: 27.11.2007 Пользователь №: 4573 |
Прошу простить, что вопрос немного не медицинский. Да, похоже на продажи. Сильная зависимости от дня недели, это нужно учесть. Это можно делать различными путями. Для суббот и воскресений - совершенно различные линии регрессии. Можно учесть ранг дня недели, например 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 не могу, он вставляется какой то обрезанный Сообщение отредактировал DrgLena - 11.02.2018 - 02:39
Прикрепленные файлы
|
|
11.02.2018 - 11:09
Сообщение
#12
|
|
Группа: Модераторы Сообщений: 286 Регистрация: 1.02.2005 Из: Воронеж Пользователь №: 93 |
Очевидные "дни недели" наводят на простую идею: строить 7 моделей...
О.Я.Кравец, д.т.н., проф.
|
|
11.02.2018 - 14:05
Сообщение
#13
|
|
Группа: Пользователи Сообщений: 902 Регистрация: 23.08.2010 Пользователь №: 22694 |
Очевидные "дни недели" наводят на простую идею: строить 7 моделей... /подумав/ Еще более простая идея называется сезонной ARIMA-моделью... А уж про моделирование рядом Фурье я ваще умолчу... А в лохматые времена для избавления от сезонности и вовсе строили регрессии на кучу dummi-переменных... Сообщение отредактировал 100$ - 11.02.2018 - 14:11 |
|
11.02.2018 - 14:31
Сообщение
#14
|
|
Группа: Пользователи Сообщений: 231 Регистрация: 27.04.2016 Пользователь №: 28223 |
Вообще-то на картинке мы видим совершенно классический случай, который рассматривается на первых страницах любого учебника или сайта по временным рядам. (Например 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...nirovanie-v-ra/ ). Называются они - рядами с сезонной составляющей (слово "сезонный" не должно смущать, в данном случае период сезонности может быть и несколько секунд, и неделя, и год, и тысячелетие). Для таких рядов придуманы специальные методы - и для формального обнаружения сезонности и выявления их отличий от просто хаотических колебаний, и для выявления периода сезонности (опят-же, не на глаз, а формально), причем в одном ряду могут быть несколько различных сезонных составляющих, и для прогнозирования поведения ряда, в модели которого присутствуют сезонные компоненты и даже для обнаружения аномалий сезонности.
Естественно и в R доступны средства для работы с сезонностью, например: http://a-little-book-of-r-for-time-series....timeseries.html https://shiring.github.io/forecasting/2017/...orcasting_part3 https://petolau.github.io/Regression-trees-...me-series-in-R/ и много много других. Поэтому, думаю, если автору действительно хочется сделать серьезную работу, а не строить свой велосипед, следует ознакомиться с упомянутым подходом. А если это просто "проходная" задача - то можно, конечно, и "на глазок". Сообщение отредактировал passant - 11.02.2018 - 14:35 |
|
11.02.2018 - 15:50
Сообщение
#15
|
|
Группа: Пользователи Сообщений: 14 Регистрация: 28.01.2018 Пользователь №: 30897 |
Спасибо за ваше мнения ,уважаемые участники форума. Но выше я сказал ,что я передумал с идей линейной регрессии и решил углубиться в ARIMA -модель.
Я получил форекаст и там даты в таком формата 2016.2514 что это значит? |
|