-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathforecast_everything.tex
320 lines (233 loc) · 12.7 KB
/
forecast_everything.tex
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
\documentclass[12pt]{article}
\usepackage{hyperref} % гиперссылки
\usepackage{tikz} % картинки в tikz
\usetikzlibrary{arrows.meta} % tikz-прибамбас для рисовки стрелочек подлиннее
\usepackage{microtype} % свешивание пунктуации
\usepackage{array} % для столбцов фиксированной ширины
\usepackage{indentfirst} % отступ в первом параграфе
\usepackage{sectsty} % для центрирования названий частей
\allsectionsfont{\centering}
\usepackage{amsmath} % куча стандартных математических плюшек
\usepackage{amssymb} % символы
\usepackage{amsthm} % теоремки
\usepackage{comment} % добавление длинных комментариев
\usepackage[top=2cm, left=1.2cm, right=1.2cm, bottom=2cm]{geometry} % размер текста на странице
\usepackage{lastpage} % чтобы узнать номер последней страницы
\usepackage{enumitem} % дополнительные плюшки для списков
% например \begin{enumerate}[resume] позволяет продолжить нумерацию в новом списке
\usepackage{caption} % что-то делает с подписями рисунков :)
\usepackage{qcircuit} % для рисовки квантовых диаграмм
\usepackage{physics} % бракеты
\usepackage{answers} % разделение условий и ответов в упражнениях
\usepackage{fancyhdr} % весёлые колонтитулы
\pagestyle{fancy}
\lhead{Предскажу всё, что будет!}
\chead{}
\rhead{КЛШ-2019}
\lfoot{}
\cfoot{}
\rfoot{\thepage/\pageref{LastPage}}
\renewcommand{\headrulewidth}{0.4pt}
\renewcommand{\footrulewidth}{0.4pt}
\usepackage{todonotes} % для вставки в документ заметок о том, что осталось сделать
% \todo{Здесь надо коэффициенты исправить}
% \missingfigure{Здесь будет Последний день Помпеи}
% \listoftodos — печатает все поставленные \todo'шки
\usepackage{booktabs} % красивые таблицы
% заповеди из докупентации:
% 1. Не используйте вертикальные линни
% 2. Не используйте двойные линии
% 3. Единицы измерения - в шапку таблицы
% 4. Не сокращайте .1 вместо 0.1
% 5. Повторяющееся значение повторяйте, а не говорите "то же"
\usepackage{fontspec} % что-то про шрифты?
\usepackage{polyglossia} % русификация xelatex
\setmainlanguage{russian}
\setotherlanguages{english}
% download "Linux Libertine" fonts:
% http://www.linuxlibertine.org/index.php?id=91&L=1
\setmainfont{Linux Libertine O} % or Helvetica, Arial, Cambria
% why do we need \newfontfamily:
% http://tex.stackexchange.com/questions/91507/
\newfontfamily{\cyrillicfonttt}{Linux Libertine O}
\AddEnumerateCounter{\asbuk}{\russian@alph}{щ} % для списков с русскими буквами
\setlist[enumerate, 2]{label=\asbuk*),ref=\asbuk*}
%% эконометрические сокращения
\DeclareMathOperator{\Cov}{Cov}
\DeclareMathOperator{\Arg}{Arg}
\DeclareMathOperator{\Corr}{Corr}
\DeclareMathOperator{\Var}{Var}
\DeclareMathOperator{\E}{\mathbb{E}}
\def \hb{\hat{\beta}}
\def \hs{\hat{\sigma}}
\def \htheta{\hat{\theta}}
\def \s{\sigma}
\def \hy{\hat{y}}
\def \hY{\hat{Y}}
\def \v1{\vec{1}}
\def \e{\varepsilon}
\def \he{\hat{\e}}
\def \z{z}
\def \hVar{\widehat{\Var}}
\def \hCorr{\widehat{\Corr}}
\def \hCov{\widehat{\Cov}}
\def \cN{\mathcal{N}}
\let\P\relax
\DeclareMathOperator{\P}{\mathbb{P}}
\usepackage{multicol}
\usepackage[bibencoding = auto,
backend = biber,
sorting = none,
style=alphabetic]{biblatex}
\addbibresource{forecast_everything.bib}
% делаем короче интервал в списках
\setlength{\itemsep}{0pt}
\setlength{\parskip}{0pt}
\setlength{\parsep}{0pt}
\Newassociation{sol}{solution}{solution_file}
% sol --- имя окружения внутри задач
% solution --- имя окружения внутри solution_file
% solution_file --- имя файла в который будет идти запись решений
% можно изменить далее по ходу
\Opensolutionfile{solution_file}[all_solutions]
% в квадратных скобках фактическое имя файла
% магия для автоматических гиперссылок задача-решение
\newlist{myenum}{enumerate}{3}
% \newcounter{problem}[chapter] % нумерация задач внутри глав
\newcounter{problem}[section]
\newenvironment{problem}%
{%
\refstepcounter{problem}%
% hyperlink to solution
\hypertarget{problem:{\thesection.\theproblem}}{} % нумерация внутри глав
% \hypertarget{problem:{\theproblem}}{}
\Writetofile{solution_file}{\protect\hypertarget{soln:\thesection.\theproblem}{}}
%\Writetofile{solution_file}{\protect\hypertarget{soln:\theproblem}{}}
\begin{myenum}[label=\bfseries\protect\hyperlink{soln:\thesection.\theproblem}{\thesection.\theproblem},ref=\thesection.\theproblem]
% \begin{myenum}[label=\bfseries\protect\hyperlink{soln:\theproblem}{\theproblem},ref=\theproblem]
\item%
}%
{%
\end{myenum}}
% для гиперссылок обратно надо переопределять окружение
% это происходит непосредственно перед подключением файла с решениями
\theoremstyle{definition}
\newtheorem{definition}{Определение}
\begin{document}
\tableofcontents{}
\section*{Цель}
Научить школьников своими руками прогнозировать сезонные временные ряды.
\newpage
\setcounter{section}{0}
\section{Простые алгоритмы и метрики качества}
\begin{multicols}{2}
\begin{tabular}{rrr}
\toprule
месяц & 2017 & 2018 \\
\midrule
январь & - & 49 \\
февраль & - & 53 \\
март & - & 57 \\
апрель & - & 79 \\
май & 41 & 40 \\
июнь & 112 & 103 \\
июль & 150 & 114 \\
август & 139 & 150 \\
сентябрь & 126 & 113 \\
октябрь & 80 & ? \\
ноябрь & 71 & ? \\
декабрь & 73 & - \\
\bottomrule
\end{tabular}
\begin{tabular}{rr}
\toprule
год & население \\
\midrule
2010 & 143.0 \\
2011 & 142.9 \\
2012 & 143.1 \\
2013 & 143.4 \\
2014 & 143.7 \\
2015 & 146.3\\
2016 & 146.5 \\
2017 & 146.8 \\
2018 & ? \\
2019 & ? \\
\bottomrule
\end{tabular}
\end{multicols}
\section{Загоночная работа}
Кот Матроскин записал надои коровы Мурки за последние четыре месяца: $20$, $30$, $30$, $40$.
Построй прогноз надоев на один и два шага вперёд с помощью:
\begin{enumerate}
\item наивного алгоритма;
\item модели ETS(ANN) с параметрами $\alpha = 0.5$, $\ell_0 = 30$;
\item модели ETS(AAN) с параметрами $\alpha = 0.5$, $\ell_0 = 20$, $\beta = 0.1$, $b_0 = 6$.
\end{enumerate}
Полезные уравнения:
\[
\begin{cases}
y_t = \ell_{t-1} + \varepsilon_t \\
\ell_t = \ell_{t-1} + \alpha \varepsilon_t \\
\hat y_{t+h} = \ell_t \\
\end{cases} \quad
\begin{cases}
y_t = \ell_{t-1} + b_{t-1} + \varepsilon_t \\
\ell_t = \ell_{t-1} + b_{t-1} + \alpha \varepsilon_t \\
b_t = b_{t-1} + \beta \varepsilon_t \\
\hat y_{t+h} = \ell_t + h b_t \\
\end{cases}
\]
Подсказка: из первого уравнения системы можно выразить $\varepsilon_t$ и подставить его в остальные :)
\newpage
\section{Лог. КЛШ-2019}
\begin{enumerate}
\item Было 12 школьников. Дал два ряда: годовой и месячный, разбил в группы по двое-трое и предложил спрогнозировать ряд.
Затем предложил описать свой алгоритм на бумаге. Затем передать бумажку соседней команде. Затем соседняя команда реализует
алгоритм, который ей передали на бумажке. Не ожидал, оказалось ни одного совпадения. Сказал, что возможность репликации — это основа науки.
То, что нереплицируемо — не наука. Далее описали простые алгоритмы: прогноз равен среднему, прогноз равен последнему значению,
прогноз равен последнему значению плюс последний прирост. Ввели обозначения $y_t$, $\hat y_{t+h}$.
\item Резюмировали идеи: реплицируемость. Три самых простых алгоритма: среднее арифметическое, наивный, сезонный наивный.
Записали все три формулой. Задались вопросом оценки качества алгоритма. Поделили выборку на две части: обучающую и тестовую.
Спрогнозировали с помощью каждого алгоритма наши два ряда (кроме сезонного наивного для годового ряда). Посчитали $MAE$.
\item Перешли к рассмотрению несезонного ряда, колеблющегося вокруг медленно меняющейся долгосрочной составляющей.
Нарисовал пример ряда, который подходит под эту идею, и примеры, которые не подходят.
Осознали на примере одного момента мысль, что на $l_6$ должны влиять $l_5$ и $y_6$.
Качественно, $l_6$ должен отклоняться от $l_5$ в ту же сторону, что и $y_6$, но слабее.
Возьмем, к примеру, $l_6 = 0.5 y_6 + 0.5 l_5$. Взяли другие коэффициенты $\alpha$.
Написали общую формулу:
\[
\begin{cases}
\hat y_{t+h} = l_t \\
l_t = \alpha y_t + (1-\alpha) l_{t-1} \\
\end{cases}
\]
Взяли пять наблюдений из \verb|Nile|. Заполнили столбик $l_t$ и посчитали прогнозы на один и два шага для $\alpha = 0.5$ и $l_0 = 900$. Потом школьники сами
повторили результат для $\alpha = 0.6$ и $l_0 = 910$. Многие ленились :) Затем сравнили по $MAE$.
\item В экселе на двух более длинных рядах Лена повторила подсчёт с ручным подбором $\alpha$ и $l_0$.
\item Запустили R :) Оценили ETS(ANN) модель для ряда \verb|Nile|. С делением выборки на две части и оценкой по MAE функцией \verb|accuracy()|.
Начали аналогичное действие с рядом \verb|gas|: успели только график построить и поделить выборку на две части.
\item Рассказал про ETS(AAA) модель. С нуля прошли все шаги с рядом \verb|gas|.
\end{enumerate}
В теховском файле \verb|\newpage| стоит, чтобы легко было скопировать секцию, для печати двух копий подряд на одном листе.
Это позволяет экономить бумагу и время при печати :)
\subsection{Плакат}
\Closesolutionfile{solution_file}
% для гиперссылок на условия
% http://tex.stackexchange.com/questions/45415
\renewenvironment{solution}[1]{%
% add some glue
\vskip .5cm plus 2cm minus 0.1cm%
{\bfseries \hyperlink{problem:#1}{#1.}}%
}%
{%
}%
\section{Решения}
\input{all_solutions}
\section{Источники мудрости}
\todo[inline]{передалать потом в bib-файл}
\begin{enumerate}
\item \url{https://otexts.com/fpp2/}
\end{enumerate}
\printbibliography[heading=none]
\end{document}