<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Архивы статистика - Open Forecasting</title>
	<atom:link href="https://openforecast.org/ru/tag/statistika/feed/" rel="self" type="application/rss+xml" />
	<link>https://openforecast.org/ru/tag/statistika/</link>
	<description>О том как смотреть в будущее</description>
	<lastBuildDate>Sun, 07 Jul 2019 10:26:01 +0000</lastBuildDate>
	<language>ru-RU</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0</generator>

<image>
	<url>https://openforecast.org/wp-content/webpc-passthru.php?src=https://openforecast.org/wp-content/uploads/2015/08/cropped-usd-05-32x32.png&amp;nocache=1</url>
	<title>Архивы статистика - Open Forecasting</title>
	<link>https://openforecast.org/ru/tag/statistika/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Пакет greybox для R</title>
		<link>https://openforecast.org/ru/2018/05/04/greybox-for-r/</link>
					<comments>https://openforecast.org/ru/2018/05/04/greybox-for-r/#comments</comments>
		
		<dc:creator><![CDATA[Ivan Svetunkov]]></dc:creator>
		<pubDate>Fri, 04 May 2018 12:22:35 +0000</pubDate>
				<category><![CDATA[R]]></category>
		<category><![CDATA[Пакет greybox для R]]></category>
		<category><![CDATA[Прикладное прогнозирование]]></category>
		<category><![CDATA[greybox]]></category>
		<category><![CDATA[программирование]]></category>
		<category><![CDATA[статистика]]></category>
		<guid isPermaLink="false">https://openforecast.org/?p=1737</guid>

					<description><![CDATA[<p>На днях я разместил в CRAN новый пакет &#8212; greybox (серый ящик). Идея названия произрастает из принципов моделирования, в соответствии с которыми все модели могут быть условно разделены на три типа: Чёрный ящик &#8212; модель, в которой неизвестны ни структура, ни параметры. Мы видим только входной и выходной сигналы Белый ящик &#8212; модель, в которой [&#8230;]</p>
<p>Сообщение <a href="https://openforecast.org/ru/2018/05/04/greybox-for-r/">Пакет greybox для R</a> появились сначала на <a href="https://openforecast.org/ru">Open Forecasting</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><a href="https://openforecast.org/wp-content/webpc-passthru.php?src=https://openforecast.org/wp-content/uploads/2018/05/greybox2.png&amp;nocache=1"><img fetchpriority="high" decoding="async" src="https://openforecast.org/wp-content/webpc-passthru.php?src=https://openforecast.org/wp-content/uploads/2018/05/greybox2-260x300.png&amp;nocache=1" alt="Hexagon for greybox" width="260" height="300" class="size-medium wp-image-1719" srcset="https://openforecast.org/wp-content/webpc-passthru.php?src=https://openforecast.org/wp-content/uploads/2018/05/greybox2-260x300.png&amp;nocache=1 260w, https://openforecast.org/wp-content/webpc-passthru.php?src=https://openforecast.org/wp-content/uploads/2018/05/greybox2-768x888.png&amp;nocache=1 768w, https://openforecast.org/wp-content/webpc-passthru.php?src=https://openforecast.org/wp-content/uploads/2018/05/greybox2-886x1024.png&amp;nocache=1 886w, https://openforecast.org/wp-content/webpc-passthru.php?src=https://openforecast.org/wp-content/uploads/2018/05/greybox2.png&amp;nocache=1 1206w" sizes="(max-width: 260px) 100vw, 260px" /></a></p>
<p>На днях я разместил в <a href="https://cran.r-project.org/" rel="noopener" target="_blank">CRAN</a> новый пакет &#8212; <a href="https://cran.r-project.org/package=greybox" rel="noopener" target="_blank">greybox</a> (серый ящик). Идея названия произрастает из принципов моделирования, в соответствии с которыми все модели могут быть условно разделены на три типа:</p>
<ol>
<li><strong>Чёрный ящик</strong> &#8212; модель, в которой неизвестны ни структура, ни параметры. Мы видим только входной и выходной сигналы</li>
<li><strong>Белый ящик</strong> &#8212; модель, в которой известно всё. Можно сказать, что это <a href="/about/systems-models/">детерминированная модель</a>, в ней нет никакой случайности, и всё предопределено.</li>
<li><strong>Серый ящик</strong> &#8212; нечто среднее, между предыдущими двумя. Фактически это и есть та самая <a href="/about/systems-models/">стохастическая модель</a>, с которой мы обычно имеем дело в прогнозировании.</li>
</ol>
<p>Так что пакет greybox, фактически может включать в себя всё, что угодно, связанное с моделированием. Однако акцент в нём будет сделан на процессе построении регрессионных моделей и выборе объясняющих переменных.</p>
<p>Этот пакет мне оказался нужным по нескольким причинам:</p>
<ol>
<li>У меня накопилось несколько функций, которые не подходили к другим пакетам (в т.ч. к пакету <a href="/tag/smooth-ru/">smooth</a>). Они все так или иначе относятся к регрессиям и к построению моделей;</li>
<li>Мои исследования и работа в университете в последнее время оказываются связанными с регрессиями и выбором наилучшей модели. Для этого нужны разные функции (например, для комбинирования моделей), и мне оказалось проще написать одну свою, нежели использовать несколько из разных пакетов.</li>
<li>В CRAN не нашлось пакетов для выбора моделей и последующего использования их в прогнозировании, которые полностью меня бы устраивали. Кроме того, мне не нравится тяга многих пакетов к <a href="/forecasting_toolbox/statistics-and-hypothesis/">p-values и проверке статистических гипотез</a>. Мы живём в 21 веке, и уже существуют другие инструменты для выбора моделей и анализа результатов.</li>
</ol>
<p>Поэтому я решил, что надо сделать свой пакет с теми функциями, которые нужны мне, реализованными в том виде, в каком я считаю их необходимыми.</p>
<p>На данный момент в пакет перекочевали функции <span class="lang:r decode:true crayon-inline">xregExpander()</span> и <span class="lang:r decode:true crayon-inline">stepwise()</span> из пакета <span class="lang:r decode:true crayon-inline">smooth</span>, а так же функция <span class="lang:r decode:true crayon-inline">ro()</span> из пакета <a href="https://github.com/trnnick/TStools" rel="noopener" target="_blank">TStools</a>. На тему первых двух на сайте <a href="/2018/02/10/xreg-advanced/">уже была отдельная статья</a>, а по поводу работы третьей можно почитать в <a href="https://cran.r-project.org/web/packages/greybox/vignettes/ro.html" rel="noopener" target="_blank">виньетах</a> пакета (к сожалению, только на английском).</p>
<p>Пакет будет развиваться и обновляться, а я буду периодически писать о том, как всё это движется.</p>
<p>Сообщение <a href="https://openforecast.org/ru/2018/05/04/greybox-for-r/">Пакет greybox для R</a> появились сначала на <a href="https://openforecast.org/ru">Open Forecasting</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://openforecast.org/ru/2018/05/04/greybox-for-r/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
		<item>
		<title>Сравнение аддитивной и мультипликативной регрессий с помощью AIC в R</title>
		<link>https://openforecast.org/ru/2018/03/22/additive_vs_multiplicative_aic/</link>
					<comments>https://openforecast.org/ru/2018/03/22/additive_vs_multiplicative_aic/#respond</comments>
		
		<dc:creator><![CDATA[Ivan Svetunkov]]></dc:creator>
		<pubDate>Thu, 22 Mar 2018 18:57:35 +0000</pubDate>
				<category><![CDATA[R]]></category>
		<category><![CDATA[Многомерные модели]]></category>
		<category><![CDATA[Теория прогнозирования]]></category>
		<category><![CDATA[Экстраполяционные методы]]></category>
		<category><![CDATA[статистика]]></category>
		<category><![CDATA[теория]]></category>
		<guid isPermaLink="false">https://openforecast.org/?p=1698</guid>

					<description><![CDATA[<p>Один из основных принципов, которому учат студентов в курсе статистикик заключается в том, что сравнение регрессионных моделей с помощью информационных критериев возможно только в том случае, когда выходная переменная в моделях одинаковая. Например, модель с выходной переменной \(\log(y_t)\) не может быть сравнена с моделью с \(y_t\) с помощью AIC. Причина в том, что переменные имеют [&#8230;]</p>
<p>Сообщение <a href="https://openforecast.org/ru/2018/03/22/additive_vs_multiplicative_aic/">Сравнение аддитивной и мультипликативной регрессий с помощью AIC в R</a> появились сначала на <a href="https://openforecast.org/ru">Open Forecasting</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Один из основных принципов, которому учат студентов в курсе статистикик заключается в том, что сравнение регрессионных моделей с помощью информационных критериев возможно только в том случае, когда выходная переменная в моделях одинаковая. Например, модель с выходной переменной \(\log(y_t)\) не может быть сравнена с моделью с \(y_t\) с помощью AIC. Причина в том, что переменные имеют разный масштаб, а значит и значение функции правдоподобия у моделей будет разное. Но есть метод, позволяющий таки провести сравнение. Всё, что нужно сделать &#8212; это понять, как распределены обе перемемнные в исходной шкале. В нашем примере мы фактически допускаем, что \(\log(y_t) \sim \mathcal{N}(0, \sigma^2_{l}) \) (где \(\sigma^2_{l}\) &#8212; это дисперсия остатков модели в логарифмах), а значит экспонента этой переменной будет распределена лог-нормально:<br />
\begin{equation}<br />
y_t \sim \text{log}\mathcal{N}(0, \sigma^2_{l})<br />
\end{equation}<br />
В качестве напоминания, все информационные критерии основаны на значения функции правдоподобия. Вот, например, формуля для AIC:<br />
\begin{equation} \label{eq:AIC}<br />
AIC = 2k -2\ell ,<br />
\end{equation}<br />
где \(k\) &#8212; число оценённых параметров, а \(\ell\) &#8212; значение функции правдоподобия.</p>
<p>Если использовать функцию правдоподобия лог-нормального распределения вместо нормального в \eqref{eq:AIC} для переменной \(y_t\) в логарифмах, тогда  и информационные критерии будут сравнимы. Для того, чтобы понять, что нужно сделать для получения лог-нормального распределения, обратимся к соответствующим функциями. Вот нормальное для переменной \(\log y_t\):<br />
\begin{equation} \label{eq:normal}<br />
f(y_t | \theta, \sigma^2_{l}) = \frac{1}{\sqrt{2 \pi \sigma^2_{l}}} e ^{-\frac{\left(\log y_t -\log \mu_{t} \right)^2}{2 \sigma^2_{l}}}<br />
\end{equation}<br />
а вот лог-нормальное для переменной \(y_t = \exp(\log(y_t))\) (мультипликативная модель с выходной переменной в исходной шкале):<br />
\begin{equation} \label{eq:log-normal}<br />
f(y_t | \theta, \sigma^2_{l}) = \frac{1}{y_t} \frac{1}{\sqrt{2 \pi \sigma^2_{l}}} e ^{-\frac{\left(\log y_t -\log \mu_{t} \right)^2}{2 \sigma^2_{l}}} ,<br />
\end{equation}<br />
где \(\theta\) &#8212; это вектор параметров модели. Разница между \eqref{eq:normal} и \eqref{eq:log-normal} заключается в части \(\frac{1}{y_t}\). логарифм функции правдоподобия для всей выборки на основе \eqref{eq:log-normal} выглядит так:<br />
\begin{equation} \label{eq:loglikelihoodlognormal}<br />
\ell(\theta, \sigma^2_{l} | Y) = -\frac{1}{2} \left(T \log \left( 2 \pi {\sigma}^2_{l} \right) +\sum_{t=1}^T \frac{\left(\log y_t -\log \mu_{t} \right)^2}{2\sigma^2_{l}} \right) -\sum_{t=1}^T \log y_t ,<br />
\end{equation}<br />
где \(Y\) &#8212; это вектор всех фактических значений выходной перменной. Когда мы извлекаем значение функции правдоподобия модели в логарифмах, мы фактически обращаемся только к первой части \eqref{eq:loglikelihoodlognormal}, до &#171;\(-\sum_{t=1}^T \log y_t \)&#187;, что соответствует нормальному распределению. Таким образом, для того, чтобы прийти к функции правдоподобия в исходной шкале для переменной в логарифмах, нам нужно вычесть сумму логарифмов выходной переменной.</p>
<p>Функция <span class="lang:r decode:true crayon-inline">AIC()</span> в R, применённая к модели в логарифмах, даст нам значение на основе первой части \eqref{eq:loglikelihoodlognormal}. Чтобы &#171;починить&#187; информационный критерий нам нужно учесть тот самый хвост из \eqref{eq:loglikelihoodlognormal} в формуле \eqref{eq:AIC}:<br />
\begin{equation} \label{eq:AICNew}<br />
AIC^{\prime} = 2k -2\ell + 2 \sum_{t=1}^T \log y_t = AIC + 2 \sum_{t=1}^T \log y_t,<br />
\end{equation}</p>
<p>Обратимся к R. Для нашего примера мы будем использовать данные <span class="lang:r decode:true crayon-inline">longley</span> из пакета <span class="lang:r decode:true crayon-inline">datasets</span>. Для начала оценим две простые модели (аддитивную и мультипликативную):</p>
<pre class="decode">modelAdditive <- lm(GNP~Employed,data=longley)
modelMultiplicative <- lm(log(GNP)~Employed,data=longley)</pre>
<p>Теперь посмотрим на информационные критерии:</p>
<pre class="decode">AIC(modelAdditive)
> 142.7824
AIC(modelMultiplicative)
> -44.5661</pre>
<p>Как видим, значения не сравнимы. Скорректируем второй информационный критерий:</p>
<pre class="decode">
AIC(modelMultiplicative)+2*sum(log(longley$GNP))
> 145.118</pre>
<p>Теперь стало намного лучше! Можем заключить, что по информационному критерию первая модель (аддитивная) лучше второй.</p>
<p>Эти принципы преобразования информационных критериев так же можно применить и для других случаев трансформации (корень из числа или трансформация Бокса-Кокса). Однако в этом случае нужно вывыести более сложные распределения и понять, как они связаны с нормальным, что может быть отдельной нетривиальной задачей.</p>
<p>Сообщение <a href="https://openforecast.org/ru/2018/03/22/additive_vs_multiplicative_aic/">Сравнение аддитивной и мультипликативной регрессий с помощью AIC в R</a> появились сначала на <a href="https://openforecast.org/ru">Open Forecasting</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://openforecast.org/ru/2018/03/22/additive_vs_multiplicative_aic/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Пакет «smooth» для R. Общие параметры. Часть 2. Оценка параметров</title>
		<link>https://openforecast.org/ru/2017/11/20/estimation-of-smooth/</link>
					<comments>https://openforecast.org/ru/2017/11/20/estimation-of-smooth/#respond</comments>
		
		<dc:creator><![CDATA[Ivan Svetunkov]]></dc:creator>
		<pubDate>Mon, 20 Nov 2017 17:21:15 +0000</pubDate>
				<category><![CDATA[R]]></category>
		<category><![CDATA[Общая информация]]></category>
		<category><![CDATA[Пакет smooth для R]]></category>
		<category><![CDATA[Экстраполяционные методы]]></category>
		<category><![CDATA[ARIMA]]></category>
		<category><![CDATA[ETS]]></category>
		<category><![CDATA[smooth]]></category>
		<category><![CDATA[статистика]]></category>
		<guid isPermaLink="false">https://openforecast.org/?p=1382</guid>

					<description><![CDATA[<p>Прежде чем мы приступим к обсуждению сегоднешней темы, я бы рекомендовал обратиться к статье &#171;Элементы математической статистики, проверка гипотез&#187; электронного учебника &#8212; нам понадобятся сегодня такие понятия, как несмещённость, эффективность и состоятельность. Здесь их лишний раз обсуждать нехочется. Кроме того, многое, что мы рассмотрим сегодня, уже описано в главах &#171;Простые методы оценки параметров моделей» и [&#8230;]</p>
<p>Сообщение <a href="https://openforecast.org/ru/2017/11/20/estimation-of-smooth/">Пакет «smooth» для R. Общие параметры. Часть 2. Оценка параметров</a> появились сначала на <a href="https://openforecast.org/ru">Open Forecasting</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Прежде чем мы приступим к обсуждению сегоднешней темы, я бы рекомендовал обратиться к статье &#171;<a href="/forecasting_toolbox/statistics-and-hypothesis/">Элементы математической статистики, проверка гипотез</a>&#187; электронного учебника &#8212; нам понадобятся сегодня такие понятия, как несмещённость, эффективность и состоятельность. Здесь их лишний раз обсуждать нехочется.</p>
<p>Кроме того, многое, что мы рассмотрим сегодня, уже описано в главах &#171;<a href="/forecasting_toolbox/estimation-simple-methods/">Простые методы оценки параметров моделей</a>» и &#171;<a href="/forecasting_toolbox/estimation-advanced-methods/">Продвинутые методы оценки параметров моделей</a>». Поэтому теортическую часть мы обсуждать не будем, а лучше сконцентрируемся на том, как это сделать в R.</p>
<h3>Методы оценки на основе одношаговых прогнозов</h3>
<p>Начнём с того, что выберем временной ряд, с которым будем работать. Например, вот такой:</p>
<pre class="decode">x <- ts(c(M3$N1823$x,M3$N1823$xx),frequency=frequency(M3$N1823$x))</pre>
<p>Выглядит он вот так:</p>
<pre class="decode">plot(x)</pre>
<div id="attachment_1360" style="width: 310px" class="wp-caption alignnone"><a href="/wp-content/uploads/2017/10/SmoothEstimators01.png"><img decoding="async" aria-describedby="caption-attachment-1360" src="/wp-content/uploads/2017/10/SmoothEstimators01-300x175.png" alt="" width="300" height="175" class="size-medium wp-image-1360" srcset="https://openforecast.org/wp-content/webpc-passthru.php?src=https://openforecast.org/wp-content/uploads/2017/10/SmoothEstimators01-300x175.png&amp;nocache=1 300w, https://openforecast.org/wp-content/webpc-passthru.php?src=https://openforecast.org/wp-content/uploads/2017/10/SmoothEstimators01-768x448.png&amp;nocache=1 768w, https://openforecast.org/wp-content/webpc-passthru.php?src=https://openforecast.org/wp-content/uploads/2017/10/SmoothEstimators01-1024x597.png&amp;nocache=1 1024w, https://openforecast.org/wp-content/webpc-passthru.php?src=https://openforecast.org/wp-content/uploads/2017/10/SmoothEstimators01.png&amp;nocache=1 1200w" sizes="(max-width: 300px) 100vw, 300px" /></a><p id="caption-attachment-1360" class="wp-caption-text">Ряд N1823</p></div>
<p>Похоже, что в ряде имеется небольшая мультипликативная сезонность, но её тяжело распознать. Для простоты в нашем примере мы будем использовать простую модель ETS(A,A,N) с аддитивной ошибкой и аддитивным трендом. Как это водится в данных M3, для проверочной выборки мы будем использовать последние 18 наблюдений.</p>
<p>Начнём с модели, оценённой путём минимизации MSE.</p>
<ul>
<li>MSE.</li>
</ul>
<pre class="decode">ourModel <- es(x,"AAN",silent=F,interval="p",h=18,holdout=T)</pre>
<div id="attachment_1361" style="width: 310px" class="wp-caption alignnone"><a href="/wp-content/uploads/2017/10/SmoothEstimators02.png"><img decoding="async" aria-describedby="caption-attachment-1361" src="/wp-content/uploads/2017/10/SmoothEstimators02-300x175.png" alt="" width="300" height="175" class="size-medium wp-image-1361" srcset="https://openforecast.org/wp-content/webpc-passthru.php?src=https://openforecast.org/wp-content/uploads/2017/10/SmoothEstimators02-300x175.png&amp;nocache=1 300w, https://openforecast.org/wp-content/webpc-passthru.php?src=https://openforecast.org/wp-content/uploads/2017/10/SmoothEstimators02-768x448.png&amp;nocache=1 768w, https://openforecast.org/wp-content/webpc-passthru.php?src=https://openforecast.org/wp-content/uploads/2017/10/SmoothEstimators02-1024x597.png&amp;nocache=1 1024w, https://openforecast.org/wp-content/webpc-passthru.php?src=https://openforecast.org/wp-content/uploads/2017/10/SmoothEstimators02.png&amp;nocache=1 1200w" sizes="(max-width: 300px) 100vw, 300px" /></a><p id="caption-attachment-1361" class="wp-caption-text">N1823 и модель ETS(A,A,N) с MSE</p></div>
<p>Вот информация о полученной модели:</p>
<pre>Time elapsed: 0.08 seconds
Model estimated: ETS(AAN)
Persistence vector g:
alpha  beta 
0.147 0.000 
Initial values were optimised.
5 parameters were estimated in the process
Residuals standard deviation: 629.249
Cost function type: MSE; Cost function value: 377623.069

Information criteria:
     AIC     AICc      BIC 
1703.389 1703.977 1716.800 
95% parametric prediction intervals were constructed
100% of values are in the prediction interval
Forecast errors:
MPE: -14%; Bias: -74.1%; MAPE: 16.8%; SMAPE: 15.1%
MASE: 0.855; sMAE: 13.4%; RelMAE: 1.047; sMSE: 2.4%</pre>
<p>Тут сложно прийти к каким-нибудь конкретным заключениям, но, судя по всему, в прогнозе наблюдается небольшое систематическое завышение (это показывает MPE). При этом относительная MAE (RelMAE) оказалась больше единицы, что говорит о том, что метод Naive лучше справляется с задачей прогнозирования этого ряда, чем ETS(A,A,N). Посмотрим на остатки модели:</p>
<pre class="decode">qqnorm(resid(ourModel))
qqline(resid(ourModel))</pre>
<div id="attachment_1363" style="width: 310px" class="wp-caption alignnone"><a href="/wp-content/uploads/2017/10/SmoothEstimators02QQ.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-1363" src="/wp-content/uploads/2017/10/SmoothEstimators02QQ-300x175.png" alt="" width="300" height="175" class="size-medium wp-image-1363" srcset="https://openforecast.org/wp-content/webpc-passthru.php?src=https://openforecast.org/wp-content/uploads/2017/10/SmoothEstimators02QQ-300x175.png&amp;nocache=1 300w, https://openforecast.org/wp-content/webpc-passthru.php?src=https://openforecast.org/wp-content/uploads/2017/10/SmoothEstimators02QQ-768x448.png&amp;nocache=1 768w, https://openforecast.org/wp-content/webpc-passthru.php?src=https://openforecast.org/wp-content/uploads/2017/10/SmoothEstimators02QQ-1024x597.png&amp;nocache=1 1024w, https://openforecast.org/wp-content/webpc-passthru.php?src=https://openforecast.org/wp-content/uploads/2017/10/SmoothEstimators02QQ.png&amp;nocache=1 1200w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a><p id="caption-attachment-1363" class="wp-caption-text">График Квантиль-квантиль по остаткам модели ETS(A,A,N), оценённой MSE</p></div>
<p>Остатки выглядят ненормально - много эмпирических квантилей оказались расположены далеко от теоретических значений. Тест на нормальность Шапиро-Уилка отвергает гипотезу о нормальности распределения остатков на 5% уровне:</p>
<pre class="decode">shapiro.test(resid(ourModel))
> p-value = 0.001223</pre>
<p>Это может указывать на то, что другие методы оценки могут справиться с оценкой параметров лучше. И в функциях пакета <span class="lang:r decode:true crayon-inline">smooth</span> есть специальный волшебный параметра для этого - <span class="lang:r decode:true crayon-inline">loss</span>. Попробуем оценить ту же модель с помощью других методов.</p>
<ul>
<li>MAE.</li>
</ul>
<p>Минимум MAE находится с помощью команды:</p>
<pre class="decode">ourModel <- es(x,"AAN",silent=F,interval="p",h=18,holdout=T,loss="MAE")</pre>
<p>и даёт следующие результаты:<br />
<div id="attachment_1362" style="width: 310px" class="wp-caption alignnone"><a href="/wp-content/uploads/2017/10/SmoothEstimators03.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-1362" src="/wp-content/uploads/2017/10/SmoothEstimators03-300x175.png" alt="" width="300" height="175" class="size-medium wp-image-1362" srcset="https://openforecast.org/wp-content/webpc-passthru.php?src=https://openforecast.org/wp-content/uploads/2017/10/SmoothEstimators03-300x175.png&amp;nocache=1 300w, https://openforecast.org/wp-content/webpc-passthru.php?src=https://openforecast.org/wp-content/uploads/2017/10/SmoothEstimators03-768x448.png&amp;nocache=1 768w, https://openforecast.org/wp-content/webpc-passthru.php?src=https://openforecast.org/wp-content/uploads/2017/10/SmoothEstimators03-1024x597.png&amp;nocache=1 1024w, https://openforecast.org/wp-content/webpc-passthru.php?src=https://openforecast.org/wp-content/uploads/2017/10/SmoothEstimators03.png&amp;nocache=1 1200w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a><p id="caption-attachment-1362" class="wp-caption-text">N1823 и ETS(A,A,N), оценённой с помощью MAE</p></div>
<pre>Time elapsed: 0.09 seconds
Model estimated: ETS(AAN)
Persistence vector g:
alpha  beta 
0.101 0.000 
Initial values were optimised.
5 parameters were estimated in the process
Residuals standard deviation: 636.546
Cost function type: MAE; Cost function value: 462.675

Information criteria:
     AIC     AICc      BIC 
1705.879 1706.468 1719.290 
95% parametric prediction intervals were constructed
100% of values are in the prediction interval
Forecast errors:
MPE: -5.1%; Bias: -32.1%; MAPE: 12.9%; SMAPE: 12.4%
MASE: 0.688; sMAE: 10.7%; RelMAE: 0.842; sMSE: 1.5%</pre>
<p>Что же получилось? Во-первых, постоянная сглаживания альфа оказалась меньше, чем в предыдущей модели, что говорит о том, что полученная модель менее чувствительна к выбросам и более консервативна. Во-вторых, RelMAE оказалась меньше нуля, что говорит о том, что данная модель лучше справляется с прогнозированием, чем Naive и чем предыдущая. Это, возможно, как раз вызвано робастностью данного метода оценки. В-третьих, по графику видно, что полученный прогноз проходит где-то между наблюдениями в проверочной выборке, что является желаемым поведением прогнозной модели. Остатки всё ещё распределены ненормально, но это вполне ожидаемо, так как другой метод оценки не делает их нормальными, а просто позволяет получить значения, менее чувствительные к выбросам:</p>
<div id="attachment_1364" style="width: 310px" class="wp-caption alignnone"><a href="/wp-content/uploads/2017/10/SmoothEstimators03QQ.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-1364" src="/wp-content/uploads/2017/10/SmoothEstimators03QQ-300x175.png" alt="" width="300" height="175" class="size-medium wp-image-1364" srcset="https://openforecast.org/wp-content/webpc-passthru.php?src=https://openforecast.org/wp-content/uploads/2017/10/SmoothEstimators03QQ-300x175.png&amp;nocache=1 300w, https://openforecast.org/wp-content/webpc-passthru.php?src=https://openforecast.org/wp-content/uploads/2017/10/SmoothEstimators03QQ-768x448.png&amp;nocache=1 768w, https://openforecast.org/wp-content/webpc-passthru.php?src=https://openforecast.org/wp-content/uploads/2017/10/SmoothEstimators03QQ-1024x597.png&amp;nocache=1 1024w, https://openforecast.org/wp-content/webpc-passthru.php?src=https://openforecast.org/wp-content/uploads/2017/10/SmoothEstimators03QQ.png&amp;nocache=1 1200w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a><p id="caption-attachment-1364" class="wp-caption-text">График Квантиль-квантиль по остаткам модели ETS(A,A,N), оценённой MAE</p></div>
<ul>
<li>HAM – Half Absolute Moment.</li>
</ul>
<p>Здесь стоит немного остановиться, так как этот метод оценки мы ещё не рассматривали в учебнике. Формула его выглядит так:<br />
\begin{equation} \label{eq:HAM}<br />
	\text{HAM} = \frac{1}{T} \sum_{t=1}^T \sqrt{|e_{t+1}|}<br />
\end{equation}<br />
Особенность данного метода оценки заключается в том, что масштаб ошибок уменьшается за счёт взятия корня. В результате этого модель, оценённая HAM оказывается ещё более устойчивой к выбросам, чем MAE. Более того, для модели становятся важны более мелкие и часто встречающиеся отклонения, нежели крупные и редкие. Минимум этой функции на целочисленных данных соответствует моде. В случае с непрерывными - чему-то между модой и медианой. На эту тему я с коллегами сейчас провожу исследование. Этот метод оценки даёт состоятельные, но менее эффективные оценки параметров, чем MSE и MAE.</p>
<p>Посмотрим, что получится:</p>
<pre class="decode">ourModel <- es(x,"AAN",silent=F,interval="p",h=18,holdout=T,loss="HAM")</pre>
<div id="attachment_1365" style="width: 310px" class="wp-caption alignnone"><a href="/wp-content/uploads/2017/10/SmoothEstimators04.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-1365" src="/wp-content/uploads/2017/10/SmoothEstimators04-300x175.png" alt="" width="300" height="175" class="size-medium wp-image-1365" srcset="https://openforecast.org/wp-content/webpc-passthru.php?src=https://openforecast.org/wp-content/uploads/2017/10/SmoothEstimators04-300x175.png&amp;nocache=1 300w, https://openforecast.org/wp-content/webpc-passthru.php?src=https://openforecast.org/wp-content/uploads/2017/10/SmoothEstimators04-768x448.png&amp;nocache=1 768w, https://openforecast.org/wp-content/webpc-passthru.php?src=https://openforecast.org/wp-content/uploads/2017/10/SmoothEstimators04-1024x597.png&amp;nocache=1 1024w, https://openforecast.org/wp-content/webpc-passthru.php?src=https://openforecast.org/wp-content/uploads/2017/10/SmoothEstimators04.png&amp;nocache=1 1200w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a><p id="caption-attachment-1365" class="wp-caption-text">N1823 и ETS(A,A,N) с HAM</p></div>
<pre>Time elapsed: 0.06 seconds
Model estimated: ETS(AAN)
Persistence vector g:
alpha  beta 
0.001 0.001 
Initial values were optimised.
5 parameters were estimated in the process
Residuals standard deviation: 666.439
Cost function type: HAM; Cost function value: 19.67

Information criteria:
     AIC     AICc      BIC 
1715.792 1716.381 1729.203 
95% parametric prediction intervals were constructed
100% of values are in the prediction interval
Forecast errors:
MPE: -1.7%; Bias: -14.1%; MAPE: 11.4%; SMAPE: 11.4%
MASE: 0.63; sMAE: 9.8%; RelMAE: 0.772; sMSE: 1.3%</pre>
<p>Судя по прогнозным ошибкам и графику, эта модель дала ещё более точные прогнозы, чем модель, оценённая с помощью MAE. Правда сделала она это приблизив обе постоянные сглаживания к нулю. Обратите внимание, что стандартное отклонение в этом случае оказалось выше, чем в случае с MAE, которое в свою очередь выше, чем MSE. Это означает, что одношаговые прогнозные интервалы будут шире у HAM, чем у MAE, чем у MSE. Однако, учитывая величину постоянных сглаживания в нашем примере, многошаговые интервалы у модель с HAM, скорее всего, будут уже остальных.</p>
<p>Кроме того, стоит заметить, что оптимизация моделей с использованием разных методов оценки происходит с разной скоростью. MSE - самый медленный метод оценки, в то время как HAM - самый быстрый. Вызвано это формой математической функции (в случае с MSE - парабола, с MAE - линейная, с HAM - корень) и тем, как работают эвристические методы оптимизации. Разница в скорости может быть существенной, особенно, если вы работаете с большими выборками. Так что, если вы спешите, а какие-нибудь оценки нужно получить быстро, попробуйте HAM. Только не забывайте, что информационные критерии в этом случае могут давать неточные результаты.</p>
<h3>Методы оценки на основе многошаговых прогнозов</h3>
<p>Следующие три метода используют идею, рассмотренную нами в главе "<a href="/forecasting_toolbox/estimation-advanced-methods/">Продвинутые методы оценки параметров</a>». Эти методы дают состоятельные, но не эффективны, а зачастую ещё и смещённые оценки параметров. Возникает вопрос, зачем ими тогда пользоваться? А всё дело в том, что эти методы "сжимают" параметры моделей, делая сами модели более "консервативными", ближе к детерминистическим и минимизируя влияние шумов на прогноз. Это оказывается особенно полезно в случаях с высокочастотными данными, когда асимптотические свойства начинают работать, а эффективность оценок растёт.</p>
<ul>
<li>MSE\(_h\) - Mean Squared Error для прогноза на h шагов вперёд:</li>
</ul>
<p>Посмотрим, что получится, если использовать его для оценки нашей модели:</p>
<pre class="decode">ourModel <- es(x,"AAN",silent=F,interval="p",h=18,holdout=T,loss="MSEh")</pre>
<div id="attachment_1366" style="width: 310px" class="wp-caption alignnone"><a href="/wp-content/uploads/2017/10/SmoothEstimators05.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-1366" src="/wp-content/uploads/2017/10/SmoothEstimators05-300x175.png" alt="" width="300" height="175" class="size-medium wp-image-1366" srcset="https://openforecast.org/wp-content/webpc-passthru.php?src=https://openforecast.org/wp-content/uploads/2017/10/SmoothEstimators05-300x175.png&amp;nocache=1 300w, https://openforecast.org/wp-content/webpc-passthru.php?src=https://openforecast.org/wp-content/uploads/2017/10/SmoothEstimators05-768x448.png&amp;nocache=1 768w, https://openforecast.org/wp-content/webpc-passthru.php?src=https://openforecast.org/wp-content/uploads/2017/10/SmoothEstimators05-1024x597.png&amp;nocache=1 1024w, https://openforecast.org/wp-content/webpc-passthru.php?src=https://openforecast.org/wp-content/uploads/2017/10/SmoothEstimators05.png&amp;nocache=1 1200w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a><p id="caption-attachment-1366" class="wp-caption-text">N1823 и ETS(A,A,N) с MSEh</p></div>
<pre>Time elapsed: 0.24 seconds
Model estimated: ETS(AAN)
Persistence vector g:
alpha  beta 
    0     0 
Initial values were optimised.
5 parameters were estimated in the process
Residuals standard deviation: 657.781
Cost function type: MSEh; Cost function value: 550179.34

Information criteria:
     AIC     AICc      BIC 
30393.86 30404.45 30635.25 
95% parametric prediction intervals were constructed
100% of values are in the prediction interval
Forecast errors:
MPE: -10.4%; Bias: -62%; MAPE: 14.9%; SMAPE: 13.8%
MASE: 0.772; sMAE: 12.1%; RelMAE: 0.945; sMSE: 1.8%</pre>
<p>Как видим, обе постоянные сглаживания оказались равными нулю, в результате чего мы получили прямую линию, проходящую через все наблюдения. Если бы в нашем распоряжении было 1008, а не 108 наблюдений, тогда параметры были бы отличны от нуля, так как модель вынуждена была бы адаптироваться к изменениям в данных. Но мы получили, что получили...</p>
<ul>
<li>TMSE – Trace Mean Squared Error:</li>
</ul>
<p>Опять же, на наших данных:</p>
<pre class="decode">ourModel <- es(x,"AAN",silent=F,interval="p",h=18,holdout=T,loss="TMSE")</pre>
<div id="attachment_1666" style="width: 310px" class="wp-caption alignnone"><a href="/wp-content/uploads/2017/11/SmoothEstimators06.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-1666" src="/wp-content/uploads/2017/11/SmoothEstimators06-300x175.png" alt="" width="300" height="175" class="size-medium wp-image-1666" srcset="https://openforecast.org/wp-content/webpc-passthru.php?src=https://openforecast.org/wp-content/uploads/2017/11/SmoothEstimators06-300x175.png&amp;nocache=1 300w, https://openforecast.org/wp-content/webpc-passthru.php?src=https://openforecast.org/wp-content/uploads/2017/11/SmoothEstimators06-768x448.png&amp;nocache=1 768w, https://openforecast.org/wp-content/webpc-passthru.php?src=https://openforecast.org/wp-content/uploads/2017/11/SmoothEstimators06-1024x597.png&amp;nocache=1 1024w, https://openforecast.org/wp-content/webpc-passthru.php?src=https://openforecast.org/wp-content/uploads/2017/11/SmoothEstimators06.png&amp;nocache=1 1200w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a><p id="caption-attachment-1666" class="wp-caption-text">N1823 and ETS(A,N,N) with TMSE</p></div>
<pre>Time elapsed: 0.2 seconds
Model estimated: ETS(AAN)
Persistence vector g:
alpha  beta 
0.075 0.000 
Initial values were optimised.
5 parameters were estimated in the process
Residuals standard deviation: 633.48
Cost function type: TMSE; Cost function value: 7477097.717

Information criteria:
     AIC     AICc      BIC 
30394.36 30404.94 30635.75 
95% parametric prediction intervals were constructed
100% of values are in the prediction interval
Forecast errors:
MPE: -7.5%; Bias: -48.9%; MAPE: 13.4%; SMAPE: 12.6%
MASE: 0.704; sMAE: 11%; RelMAE: 0.862; sMSE: 1.5%</pre>
<p>Сравнивая эту модель с моделью с MSE и MSE\(_h\), можно заметить, что в случае с TMSE постоянная сглаживания для уровня ряда лежит где-то между постоянными сглаживания предыдущих моделей. Это демонстрирует тот самый, эффект, который мы обсуждали в учебнике: многошаговые прогнозы тянут параметры к нулю, в то время как одношаговые их немного поднимают вверх. Тем не менее, я бы рекомендовал использовать TMSE на больших выборках, где оценки параметров становятся более эффективными и менее смещёнными.</p>
<ul>
<li>GTMSE – Geometric Trace Mean Squared Error:</li>
</ul>
<p>Этот метод оценки мы тоже уже <a href="/forecasting_toolbox/estimation-advanced-methods/">обсуждали в учебнике</a>. </p>
<pre class="decode">ourModel <- es(x,"AAN",silent=F,interval="p",h=18,holdout=T,loss="GTMSE")</pre>
<div id="attachment_1368" style="width: 310px" class="wp-caption alignnone"><a href="/wp-content/uploads/2017/10/SmoothEstimators07.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-1368" src="/wp-content/uploads/2017/10/SmoothEstimators07-300x175.png" alt="" width="300" height="175" class="size-medium wp-image-1368" /></a><p id="caption-attachment-1368" class="wp-caption-text">N1823 and ETS(A,A,N) with GTMSE</p></div>
<pre>Time elapsed: 0.18 seconds
Model estimated: ETS(AAN)
Persistence vector g:
alpha  beta 
    0     0 
Initial values were optimised.
5 parameters were estimated in the process
Residuals standard deviation: 649.253
Cost function type: GTMSE; Cost function value: 232.419

Information criteria:
     AIC     AICc      BIC 
30402.77 30413.36 30644.16 
95% parametric prediction intervals were constructed
100% of values are in the prediction interval
Forecast errors:
MPE: -8.2%; Bias: -53.8%; MAPE: 13.8%; SMAPE: 12.9%
MASE: 0.72; sMAE: 11.3%; RelMAE: 0.882; sMSE: 1.6%</pre>
<p>В нашем примере этот метод оценки также сжал параметры к нулю, сделав модель детерминистической, что соответствует результатам, полученным с помощью MSE\(_h\). Однако, стартовые значения у методы получились немного другими, что привело к другим прогнозам.</p>
<p>Имейте в виду, что все эти методы оценки значительно более требовательны к расчётном времени, потому что для каждого из них нужно сделать прогноз на h шагов вперёд из каждого наблюдения в обучающей выборке.</p>
<ul>
<li>Аналитические многошаговые методы оценки.</li>
</ul>
<p>В функциях пакета <span class="lang:r decode:true crayon-inline">smooth</span> есть ещё одна полезная, незадокументированная функция (доступная пока только для чистых аддитивных моделей) – использование аналитических аналогов многошаговых методов оценки. Вызываются такие методы путём добавления буквы "a" перед названием желаемого метода оценки: aMSEh, aTMSE, aGTMSE.  В этом случае одношаговые ошибки и параметры модели будут использоваться для реконструирования многошаговых методов оценки. Эта опция полезна в том случае, когда вам нужно использовать какой-то метод оценки на малых выборках. Также эти методы могут быть полезны, если вы работаете с большими выборками, но хотите, чтобы модель была построена относительно быстро.</p>
<p>Эти методы оценки имеют свойства схожие со свойствами их эмпирических аналогов, но работают быстрее и используют асимптотические свойства.</p>
<p>Вот пример использования аналитичекого MSE\(_h\):</p>
<pre class="decode">ourModel <- es(x,"AAN",silent=F,interval="p",h=18,holdout=T,cfType="aMSEh")</pre>
<div id="attachment_1377" style="width: 310px" class="wp-caption alignnone"><a href="/wp-content/uploads/2017/10/SmoothEstimators09.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-1377" src="/wp-content/uploads/2017/10/SmoothEstimators09-300x175.png" alt="" width="300" height="175" class="size-medium wp-image-1377" srcset="https://openforecast.org/wp-content/webpc-passthru.php?src=https://openforecast.org/wp-content/uploads/2017/10/SmoothEstimators09-300x175.png&amp;nocache=1 300w, https://openforecast.org/wp-content/webpc-passthru.php?src=https://openforecast.org/wp-content/uploads/2017/10/SmoothEstimators09-768x448.png&amp;nocache=1 768w, https://openforecast.org/wp-content/webpc-passthru.php?src=https://openforecast.org/wp-content/uploads/2017/10/SmoothEstimators09-1024x597.png&amp;nocache=1 1024w, https://openforecast.org/wp-content/webpc-passthru.php?src=https://openforecast.org/wp-content/uploads/2017/10/SmoothEstimators09.png&amp;nocache=1 1200w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a><p id="caption-attachment-1377" class="wp-caption-text">N1823 и ETS(A,A,N) с aMSEh</p></div>
<pre>Time elapsed: 0.11 seconds
Model estimated: ETS(AAN)
Persistence vector g:
alpha  beta 
    0     0 
Initial values were optimised.
5 parameters were estimated in the process
Residuals standard deviation: 627.818
Cost function type: aMSEh; Cost function value: 375907.976

Information criteria:
     AIC     AICc      BIC 
30652.15 30662.74 30893.55 
95% parametric prediction intervals were constructed
100% of values are in the prediction interval
Forecast errors:
MPE: -1.9%; Bias: -14.6%; MAPE: 11.7%; SMAPE: 11.6%
MASE: 0.643; sMAE: 10%; RelMAE: 0.787; sMSE: 1.3%</pre>
<p>Итоговые постоянные сглаживания получились равными нулю, аналогично тому, что мы наблюдали в MSE\(_h\). Стартовые значения модели при этом получились немного другие, поэтому и прогноз оказался другим (по сравнению с MSE\(_h\)). На себя так же обращает внимание то, что модель была оценена и сконструирована за 0.11 секунд, а не за 0.24, как в случае с MSE\(_h\).</p>
<ul>
<li>Аналогично тому, как это было с MSE, в функциях <span class="lang:r decode:true crayon-inline">smooth</span> реализованы и многошаговые MAE и HAM (типа MAE\(_h\) и THAM). Правда, они там просто потому что я смог их сделать, а не потому что они имеют какой-то особый смысл. К их изучению я ещё даже не думал приступать.</li>
</ul>
<h3>Заключение</h3>
<p>Теперь, когда мы обсудили все возможные методы оценки функций пакета <span class="lang:r decode:true crayon-inline">smooth</span>, у вас может возникнуть закономерный вопрос: "Что же использовать?". Честно говоря, у меня пока нет однозначного ответа на этот вопрос, так как это направление ещё не до конца изучено. Но у меня есть некоторые советы, которые хотелось бы здесь привести:</p>
<p>Во-первых, <a href="http://kourentzes.com/forecasting/2015/08/20/forecasting-solar-irradiance-true-models-trace-optimisation-and-shrinkage/" rel="noopener noreferrer" target="_blank">Никос Курентзес и Хуан Рамон Траперо выяснили</a>, что в случае с высокочастотными данными использование MSE\(_h\) и TMSE приводит к увеличению точности прогнозов по сравнению с MSE. Однако, если в случае с MSE\(_h\) для этого нужно построить h моделей, TMSE позволяет построить одну, что в разы уменьшает время расчётов. Точность прогнозов при использовании TMSE и MSE\(_h\) оказывается сопостовимой.</p>
<p>Во-вторых, если вы сталкиваетесь с асимметричным распределением остатков при оценке с помощью MSE, попробуйте использовать MAE и HAM – они могут улучшить прогнозную точность моделей.</p>
<p>В-третьих, аналитические версии многошаговых методов я бы рекомендовал использовать на больших выборках, когда скорость вычислений важна, а свойства этих методов хочется использовать. Ну, или в ситуации, когда выборка наоборот маленькая, а свойства хочется использовать (эмпирические значения получить в этом случае затруднительно).</p>
<p>Наконец, не стоит спользовать MSE\(_h\), TMSE и GTMSE если вас интересуют параметры моделей (а не точность прогнозов) – они скорее всего будут неэффективными и смещёнными. Это применимо как к ETS, так и к ARIMA, которые в этом случае становятся близкими к детерминистическим моделям. Используйте MSE и не выпендривайтесь!</p>
<p>Сообщение <a href="https://openforecast.org/ru/2017/11/20/estimation-of-smooth/">Пакет «smooth» для R. Общие параметры. Часть 2. Оценка параметров</a> появились сначала на <a href="https://openforecast.org/ru">Open Forecasting</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://openforecast.org/ru/2017/11/20/estimation-of-smooth/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Multiplicative State-Space Models for Intermittent Time Series</title>
		<link>https://openforecast.org/ru/2017/11/07/multiplicative-state-space-models-for-intermittent-time-series-2/</link>
					<comments>https://openforecast.org/ru/2017/11/07/multiplicative-state-space-models-for-intermittent-time-series-2/#respond</comments>
		
		<dc:creator><![CDATA[Ivan Svetunkov]]></dc:creator>
		<pubDate>Tue, 07 Nov 2017 18:35:42 +0000</pubDate>
				<category><![CDATA[ETS]]></category>
		<category><![CDATA[Статьи]]></category>
		<category><![CDATA[Экстраполяционные методы]]></category>
		<category><![CDATA[прерывистый спрос]]></category>
		<category><![CDATA[статистика]]></category>
		<category><![CDATA[статьи]]></category>
		<guid isPermaLink="false">https://openforecast.org/?p=1416</guid>

					<description><![CDATA[<p>Мы с Джоном Бойланом работали последний год над статьёй по модели пространства состояний для прерывистых данных. Эту статью мы отправили в IJF, и, пока мы ждём ответа, я решил опубликовать рабочую версию статьи. Вот аннотация статьи на английском: Intermittent demand forecasting is an important supply chain task, which is commonly done using methods based on [&#8230;]</p>
<p>Сообщение <a href="https://openforecast.org/ru/2017/11/07/multiplicative-state-space-models-for-intermittent-time-series-2/">Multiplicative State-Space Models for Intermittent Time Series</a> появились сначала на <a href="https://openforecast.org/ru">Open Forecasting</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Мы с <a href="http://www.lancaster.ac.uk/lums/people/john-boylan" rel="noopener" target="_blank">Джоном Бойланом</a> работали последний год над статьёй по модели пространства состояний для прерывистых данных. Эту статью мы отправили в IJF, и, пока мы ждём ответа, я решил опубликовать рабочую версию статьи. Вот аннотация статьи на английском:</p>
<p>Intermittent demand forecasting is an important supply chain task, which is commonly done using methods based on exponential smoothing. These methods however do not have underlying statistical models, which limits their generalisation. In this paper we propose a general state-space model that takes intermittence of data into account, extending the taxonomy of exponential smoothing models. We show that this model has a connection with conventional non-intermittent state space models and underlies Croston’s and Teunter-Syntetos-Babai (TSB) forecasting methods. We discuss properties of the proposed models and show how a selection can be made between them in the proposed framework. We then conduct experiments on simulated data and on two real life datasets, demonstrating advantages of the proposed approach.</p>
<p><a href="http://dx.doi.org/10.13140/RG.2.2.35897.06242" rel="noopener" target="_blank">Сама статья</a>.</p>
<p>К слову, все модели, обсуждаемые в статье, <a href="/tag/smooth-ru/">доступны в пакете</a> <span class="lang:r decode:true crayon-inline">smooth</span>. Через пару месяцев я планирую написать на эту тему статью для сайта. Следите за обновлениями!</p>
<p>Сообщение <a href="https://openforecast.org/ru/2017/11/07/multiplicative-state-space-models-for-intermittent-time-series-2/">Multiplicative State-Space Models for Intermittent Time Series</a> появились сначала на <a href="https://openforecast.org/ru">Open Forecasting</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://openforecast.org/ru/2017/11/07/multiplicative-state-space-models-for-intermittent-time-series-2/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Старая собака, новые трюки&#8230;</title>
		<link>https://openforecast.org/ru/2017/09/20/old-dog-new-tricks/</link>
					<comments>https://openforecast.org/ru/2017/09/20/old-dog-new-tricks/#respond</comments>
		
		<dc:creator><![CDATA[Ivan Svetunkov]]></dc:creator>
		<pubDate>Wed, 20 Sep 2017 10:55:47 +0000</pubDate>
				<category><![CDATA[Статьи]]></category>
		<category><![CDATA[smooth]]></category>
		<category><![CDATA[Простая скользящая средняя]]></category>
		<category><![CDATA[статистика]]></category>
		<category><![CDATA[статьи]]></category>
		<guid isPermaLink="false">https://openforecast.org/?p=1333</guid>

					<description><![CDATA[<p>Так можно перевести название статьи, написанной мною совместно с Фотиосом Петропулосом, которая посвящёна статистической модели, лежащей в основе простого скользящего среднего. Недавно она была принята к печати журналом International Journal of Production Research. Модель, обсуждаемая в статье, уже реализована в функции sma() пакета smooth для R. Аннотация на английском Simple moving average (SMA) is a [&#8230;]</p>
<p>Сообщение <a href="https://openforecast.org/ru/2017/09/20/old-dog-new-tricks/">Старая собака, новые трюки&#8230;</a> появились сначала на <a href="https://openforecast.org/ru">Open Forecasting</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Так можно перевести название статьи, написанной мною совместно с <a href="http://www.bath.ac.uk/management/faculty/fotios-petropoulos.html" target="_blank">Фотиосом Петропулосом</a>, которая посвящёна статистической модели, лежащей в основе простого скользящего среднего. Недавно она была принята к печати журналом <a href="http://www.tandfonline.com/toc/tprs20/current" target="_blank">International Journal of Production Research</a>. Модель, обсуждаемая в статье, уже реализована в функции <span class="lang:r decode:true crayon-inline">sma()</span> пакета <a href="/tag/smooth-ru/">smooth</a> для R.</p>
<h3>Аннотация на английском</h3>
<p>Simple moving average (SMA) is a well-known forecasting method. It is easy to understand and interpret and easy to use, but it does not have an appropriate length selection mechanism and does not have an underlying statistical model. In this paper we show two statistical models underlying SMA and demonstrate that the automatic selection of the optimal length of the model can easily be done using this finding. We then evaluate the proposed model on a real dataset and compare its performance with other popular simple forecasting methods. We find that SMA performs better both in terms of point forecasts and prediction intervals in cases of normal and cumulative values.</p>
<p><a href="/wp-content/uploads/2017/09/2017-09-dog-tricks-modelling.pdf">Скачать статью</a>.<br />
<a href="http://dx.doi.org/10.1080/00207543.2017.1380326" rel="noopener" target="_blank">DOI</a>.</p>
<p>Сообщение <a href="https://openforecast.org/ru/2017/09/20/old-dog-new-tricks/">Старая собака, новые трюки&#8230;</a> появились сначала на <a href="https://openforecast.org/ru">Open Forecasting</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://openforecast.org/ru/2017/09/20/old-dog-new-tricks/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Пакет «smooth» для R. Функция es(). Часть 4. Выбор моделей и комбинирование прогнозов</title>
		<link>https://openforecast.org/ru/2017/01/24/smooth-package-for-r-es-function-part-iv-model-selection-and-combination-of-forecasts-2/</link>
					<comments>https://openforecast.org/ru/2017/01/24/smooth-package-for-r-es-function-part-iv-model-selection-and-combination-of-forecasts-2/#respond</comments>
		
		<dc:creator><![CDATA[Ivan Svetunkov]]></dc:creator>
		<pubDate>Tue, 24 Jan 2017 20:54:38 +0000</pubDate>
				<category><![CDATA[ETS]]></category>
		<category><![CDATA[R]]></category>
		<category><![CDATA[О функции es()]]></category>
		<category><![CDATA[Пакет smooth для R]]></category>
		<category><![CDATA[Прикладное прогнозирование]]></category>
		<category><![CDATA[smooth]]></category>
		<category><![CDATA[статистика]]></category>
		<guid isPermaLink="false">https://openforecast.org/?p=1082</guid>

					<description><![CDATA[<p>Смешенные модели экспоненциального сглаживания В прошлых статьях мы обсудили чистые аддитивные и мультипликативные модели экспоненциального сглаживания. Логичным продолжением было бы обсуждение смешанных моделей, в которых некоторые компоненты имеют аддитивный характер, в то время как другие — мультипликативный. Однако я не хочу тратить на таких моделях много времени и решил упомянуть о них лишь вскользь. А [&#8230;]</p>
<p>Сообщение <a href="https://openforecast.org/ru/2017/01/24/smooth-package-for-r-es-function-part-iv-model-selection-and-combination-of-forecasts-2/">Пакет «smooth» для R. Функция es(). Часть 4. Выбор моделей и комбинирование прогнозов</a> появились сначала на <a href="https://openforecast.org/ru">Open Forecasting</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h3>Смешенные модели экспоненциального сглаживания</h3>
<p>В прошлых статьях мы обсудили чистые <a href="/2016/11/02/smooth-package-for-r-es-function-part-ii-pure-additive-models-ru/">аддитивные</a> и <a href="/2016/11/18/smooth-package-for-r-es-function-part-iii-pure-multiplicative-models-ru/">мультипликативные</a> модели экспоненциального сглаживания. Логичным продолжением было бы обсуждение смешанных моделей, в которых некоторые компоненты имеют аддитивный характер, в то время как другие — мультипликативный. Однако я не хочу тратить на таких моделях много времени и решил упомянуть о них лишь вскользь. А всё потому, что я считаю, что такие модели не имеют особого смысла. Дело в том, что они противоречат логике моделирования. Ну, возьмём вот, например, какой-нибудь метод экспоненциального сглаживания Хольта-Уинтерса. Он соответствует статистической модели обозначаемой как ETS(A,A,M), в которой ошибка и тренд имеют аддитивный характер, а сезонность мультипликативная. Казалось бы, ничто не предвещает беды. Модель как модель. Однако первые две компоненты подразумевают, что ряд данных может иметь как положительные, так и отрицательные значения (ошибка так вообще считается распределённой нормально), а вот сезонность будет работать только, если мы имеем дело с положительными значениями. Если в ряде данных по какой-то причине будет отрицательное значение или, не дай бог, ноль, то быть беде! Это противоречие в рамках такой модели не разрешимо и является следствием смешения компонент.</p>
<p>Несмотря на это, некоторые смешанные модели работают вполне себе хорошо, когда мы имеем дело с положительными значениями и высоким уровнем ряда. Но не дай бог вам применить такую модель к ряду данных, в которых значения уменьшаются во времени. Например, прогнозировать продажи умирающего товара я бы с помощью таких моделей не стал, так как можно столкнуться с очень странным поведением и совершенно неадекватными прогнозами.</p>
<p>На этом краткое упоминание смешанных моделей можно считать законченным. Перейдём к более интересным вопросам.</p>
<h3>Немного теории о выборе моделей и комбинировании</h3>
<p>Теперь, когда мы так или иначе обсудили все возможные типы моделей экспоненциального сглаживания, время перейти к вопросу о том, как же выбрать из них наиболее подходящую. <a href="http://kourentzes.com/forecasting/2015/07/24/diy-forecasting-judgment-models-and-judgmental-model-selection/" target="_blank">Фотиос Петропулос и Никос Курентзес</a> показали в своём исследовании, что люди способны выбирать наилучшую модель вручную на основе визуального анализа временного ряда. Однако такой метод выбора моделей не всегда приемлем. Компаниям иногда бывает нужно, например, быстро получить прогнозы продаж своей продукции по всем магазинам страны. Это означает, что нужно выбрать наилучшую модель для каждого ряда из огромного массива данных (10000 рядов, например). Делать это вручную каждый раз, когда нужно получить прогноз — сродни сумасшествию. Именно поэтому существуют методы, позволяющие автоматизировать выбор моделей для прогнозирования.</p>
<p>Один из таких методов основан на информационных критериях. Именно он и реализован в функции <span class="lang:r decode:true  crayon-inline">es()</span>. <a href="https://www.researchgate.net/publication/222552350_A_State_Space_Framework_for_Automatic_Forecasting_Using_Exponential_Smoothing_Methods" target="_blank">Роб Хайндман и компания показали в 2002 году</a>, что этот метод работает достаточно хорошо. В <a href="https://www.researchgate.net/publication/223458328_Exponential_smoothing_model_selection_for_forecasting" target="_blank">2006 году Бэкки Билла и др.</a> показали, что метод работает одинаково хорошо с использованием разных информационных критериев. Функция <span class="lang:r decode:true  crayon-inline">es()</span> позволяет осуществлять выбор с помощью AIC, AICc или BIC. Подробней на каждом из критериев мы тут останавливаться не будем, так как они уже были <a href="/forecasting_toolbox/model-selection/">рассмотрены в электронном учебнике</a>. Напомню лишь, что для того, чтобы выбрать наилучшую модель, нужно вначале построить все модели, которые хочется, затем рассчитать информационный критерий для каждой из них, после чего — выбрать ту, у которой критерий имеет наименьшее значение. В природе существует 30 моделей экспоненциального сглаживания, поэтому оценить все 30 из них — это непростая задача, требующая время. Чтобы ускорить этот процесс, я разработал алгоритм, с помощью которого можно из пула моделей выкинуть те, которые к данному временному ряду подходят заведомо плохо. Рассмотрим этот алгоритм подробней.</p>
<ol>
<li>Оценивается модель ETS(A,N,N).</li>
<li>Оценивается модель ETS(A,N,A).</li>
<ul>
<li>Если информационный критерий модели (2) ниже критерия модели (1), значит в ряде данных есть какая-то сезонность. Это значит, что несезонные модели можно исключить, а пул моделей уменьшить с 30 до 20. После этого мы переходим к шагу (3).</li>
<li>В противном случае в ряде данных нет сезонности, все сезонные модели можно убрать из рассмотрения, сократив таким образом пул моделей с 30 до 10. После этого мы переходим к шагу (4) алгоритма.</li>
</ul>
<p>Эти два шага требуют небольшого пояснения. На данном этапе мы не оцениваем наличие тренда в ряде данных, так как ETS(A,N,N) является вполне неплохим аппроксиматором тренда. Безусловно прогноз по такой модели будет некорректным и неточным, но нас это пока не интересует, ряд она будет описывать хорошо. Постоянная сглаживания в этом случае будет близка к единице (а оптимальная и вовсе может быть больше), но это неважно, так как нас интересует на данном шаге определение сезонности. Если ряд сезонный (какой бы ни была сезонность: аддитивной или мультипликативной), то модель ETS(A,N,A) аппроксимирует его лучше, чем ETS(A,N,N). А значит и информационный критерий у неё будет ниже.</p>
<li>Оценивается модель ETS(A,N,M) и сравнивается с предыдущей.</li>
<ul>
<li>Если информационный критерий модели (3) ниже критерия модели (2), значит сезонность носит мультипликативный характер. Это сокращает пул моделей с 20 до 10. Можно переходить к шагу (4).</li>
<li>Иначе сезонность можно считать аддитивной. Это также приводит к сокращению пула моделей с 20 до 10. После этого с чистой совестью можно переходить к шагу (4).</li>
</ul>
<li>Оценивается модель с аддитивным трендом и либо без сезонности, либо с аддитивной или мультипликативной, в зависимости от результатов на шагах (2) и (3). Модель может быть соответственно: ETS(A,A,N), ETS(A,A,A) или ETS(A,A,M).</li>
<ul>
<li>Если информационный критерий на этом шаге ниже критерия на предыдущем, то в ряде данных есть тренд, значит пул моделей сокращается до восьми.</li>
<li>В противоположном случае жизнь становится ещё проще, так как можно сказать, что тренда в данных нет, а значит нужно проверить всего одну модель — с мультипликативной ошибкой. Например, если мы до этого выяснили, что модель ETS(A,N,M) подходит к ряду данных лучше остальных, то нам остаётся только проверить модель ETS(M,N,M).</li>
</ul>
<p>Аддитивный тренд на последнем шаге можно считать хорошей аппроксимацией всех остальных типов трендов. Если такая модель лучше модели без тренда, то далее можно попробовать определить тип тренда.
</ol>
<p>Описанный выше алгоритм позволяет вместо того, чтобы оценивать все 30 моделей, оценить только 4 или 12 из них (в зависимости от того, есть ли в ряде данных тренд или нет). Мои эксперименты показывают, что в большинстве случаев этот алгоритм гарантирует, что у полученной модели будет наименьшее значение информационного критерия. Впрочем, это не означает, что полученная модель будет давать самые точные прогнозы. Из-за разных случайных неучтённых факторов мы могли выбрать не ту модель. Для того, чтобы как-то учесть этот возможный провал, можно вместо того, чтобы выбирать только одну, скомбинировать несколько. Впрочем, нам сами модели менее интересны, чем прогнозы, которые они дают, так что будем комбинировать прогнозы. Тем более, что литература по прогнозированию говорит нам о том, что комбинированный прогноз оказывается в среднем точнее индивидуальных прогнозов моделей.</p>
<p>Очевидно, что вариантов комбинирования существует несчётное множество. Одно дело выбрать модели, чьи прогнозы скомбинировать, совсем другое — распределить веса между ними. Понятно, что веса надо распределять как-то неравномерно, а то модель ETS(A,N,N) будет иметь такой же вес, как и модель ETS(A,N,A) на сезонных данных, а это будет приводить к заведомо плохим результатам. Один из методов распределения весов, показавший свою эффективность — это метод на основе информационных критериев, рассмотренный в книге <a href="https://books.google.co.uk/books/about/Model_Selection_and_Multimodel_Inference.html?id=BQYR6js0CC8C" target="_blank">Burnham and Anderson</a>. В соответствии с этим методом, веса для каждой из моделей в пуле рассчитываются по формуле:</p>
<p>\begin{equation} \label{eq:statLikelihoodAICweights}<br />
	w_j = \frac{ \exp \left(-\frac{1}{2}  \left(\text{IC}_j -\min(\text{IC}) \right) \right)}{\sum_{i=1}^m \exp \left(-\frac{1}{2}  \left(\text{IC}_i -\min(\text{IC}) \right) \right)},<br />
\end{equation}<br />
где \(m\) &#8212; это число моделей в пуле, IC\(_j\) &#8212; значение информационного критерия для модели номер \(j\), а \(\min(\text{IC})\) &#8212; это минимальное значение информационного критерия среди моделей в пуле. Модели с меньшими информационными критериями будут иметь больший вес, чем модели с большими значениями. Причём любой информационный критериq может быть использован вместо IC. К слову, <a href="https://www.researchgate.net/publication/223315940_Combining_exponential_smoothing_forecasts_using_Akaike_weights" target="_blank">Стефан Коласса</a> показал, что при использовании этого метода комбинирования точность прогнозов ETS увеличивается. Этот метод реализован в функции <span class="lang:r decode:true  crayon-inline">es()</span>. О том, как с ним работать в R, мы обсудим в следующем параграфе.</p>
<h3>О том, как с этим работать в R</h3>
<p>Ну что же, посмотрим, как это всё реализовано в функции <span class="lang:r decode:true  crayon-inline">es()</span>? Начнём с простого.</p>
<p>Если мы не очень себе представляем, что делать с данными и надо ли как-то ограничивать пул моделей, то можно попросить функцию выбрать наилучшую из всех возможных 30 моделей. Это делается путём задания параметра <span class="lang:r decode:true  crayon-inline">model=&#187;ZZZ&#187;</span>. Точно так же включается выбор наилучшей модели в функции <span class="lang:r decode:true  crayon-inline">ets()</span> пакета <span class="lang:r decode:true  crayon-inline">forecast</span> (правда в ней происходит выбор из значительно меньшего числа моделей, из 16 вместо 30). В этом случае для выбора модели будет использован алгоритм описанные в предыдущем параграфе.</p>
<p>Например, для ряда N2568 из базы M3 у нас получится вот что:</p>
<pre class="decode">es(M3$N2568$x, "ZZZ", h=18)</pre>
<p>Это даст нам следующее:</p>
<pre>Forming the pool of models based on... ANN, ANA, ANM, AAM, Estimation progress: 100%... Done! 
Time elapsed: 2.6 seconds
Model estimated: ETS(MMdM)
Persistence vector g:
alpha  beta gamma 
0.020 0.020 0.001 
Damping parameter: 0.965
Initial values were optimised.
19 parameters were estimated in the process
Residuals standard deviation: 0.065
Cost function type: MSE; Cost function value: 169626

Information criteria:
     AIC     AICc      BIC 
1763.990 1771.907 1816.309</pre>
<div id="attachment_1079" style="width: 310px" class="wp-caption alignnone"><a href="/wp-content/uploads/2017/01/N2568-es-MMdM.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-1079" src="/wp-content/uploads/2017/01/N2568-es-MMdM-300x175.png" alt="" width="300" height="175" class="size-medium wp-image-1079" srcset="https://openforecast.org/wp-content/webpc-passthru.php?src=https://openforecast.org/wp-content/uploads/2017/01/N2568-es-MMdM-300x175.png&amp;nocache=1 300w, https://openforecast.org/wp-content/webpc-passthru.php?src=https://openforecast.org/wp-content/uploads/2017/01/N2568-es-MMdM-768x448.png&amp;nocache=1 768w, https://openforecast.org/wp-content/webpc-passthru.php?src=https://openforecast.org/wp-content/uploads/2017/01/N2568-es-MMdM-1024x597.png&amp;nocache=1 1024w, https://openforecast.org/wp-content/webpc-passthru.php?src=https://openforecast.org/wp-content/uploads/2017/01/N2568-es-MMdM.png&amp;nocache=1 1200w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a><p id="caption-attachment-1079" class="wp-caption-text">ETS(MMdM) и ряд N2568 из базы M3</p></div>
<p>Во время выбора модели функция будет сообщать нам, какие модели проверила: вначале это была ETS(A,N,N), затем — ETS(A,N,A), после неё — ETS(ANM) (это говорит о том, что в данных есть сезонность и функция пытается определить её тип), ну и, наконец, &#8212; ETS(A,A,M) (проверяется наличие тренда). Если нам всё это видеть ненужно, мы можем попросить функцию делать всё это про себя путём задания параметра <span class="lang:r decode:true  crayon-inline">silent=&#187;all&#187;</span>. Как видим, в результате этой процедуры наилучшей оказалась модель ETS(M,Md,M).</p>
<p>Заметим, что рассмотренный выше алгоритм выбора модели будет использован функцией только если хотя бы одна из компонент задана как &#171;Z&#187;, а все остальные — как &#171;Z&#187;, &#171;A&#187;, &#171;M&#187; или &#171;N&#187;. Если какие-то компоненты задать вручную (&#171;A&#187;, &#171;M&#187; или &#171;N&#187;), то процесс выбора пройдёт быстрее, так как пул моделей в этом случае уменьшится.</p>
<p>По умолчанию для выбора функция использует AICc, но пользователю так же доступны AIC и BIC:</p>
<pre class="decode">es(M3$N2568$x, "ZZM", h=18, ic="BIC")</pre>
<p>Что же, давайте теперь допустим, что по какой-то причине нас интересуют только аддитивные модели. Как нам выбрать наилучшую из них? Очень просто! Для этого используется значение &#171;X&#187; в компонентах. Например, таким вот образом мы проверим все возможные аддитивные модели экспоненциального сглаживания:</p>
<pre class="decode">es(M3$N2568$x, "XXX", h=18)</pre>
<p>В результате этого получим вот что:</p>
<pre>Estimation progress: 100%... Done! 
Time elapsed: 0.72 seconds
Model estimated: ETS(ANA)
Persistence vector g:
alpha gamma 
0.174 0.695 
Initial values were optimised.
16 parameters were estimated in the process
Residuals standard deviation: 609.711
Cost function type: MSE; Cost function value: 320472

Information criteria:
     AIC     AICc      BIC 
1831.789 1837.284 1875.847</pre>
<div id="attachment_1081" style="width: 310px" class="wp-caption alignnone"><a href="/wp-content/uploads/2017/01/N2568-es-ANA.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-1081" src="/wp-content/uploads/2017/01/N2568-es-ANA-300x175.png" alt="" width="300" height="175" class="size-medium wp-image-1081" srcset="https://openforecast.org/wp-content/webpc-passthru.php?src=https://openforecast.org/wp-content/uploads/2017/01/N2568-es-ANA-300x175.png&amp;nocache=1 300w, https://openforecast.org/wp-content/webpc-passthru.php?src=https://openforecast.org/wp-content/uploads/2017/01/N2568-es-ANA-768x448.png&amp;nocache=1 768w, https://openforecast.org/wp-content/webpc-passthru.php?src=https://openforecast.org/wp-content/uploads/2017/01/N2568-es-ANA-1024x597.png&amp;nocache=1 1024w, https://openforecast.org/wp-content/webpc-passthru.php?src=https://openforecast.org/wp-content/uploads/2017/01/N2568-es-ANA.png&amp;nocache=1 1200w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a><p id="caption-attachment-1081" class="wp-caption-text">ETS(ANA) и ряда N2568 из базы M3</p></div>
<p>В этом примере функция проверит подряд шесть моделей и выберет наилучшую из них. Пул чистых аддитивных моделей включает: <span class="lang:r decode:true  crayon-inline">ANN</span>, <span class="lang:r decode:true  crayon-inline">AAN</span>, <span class="lang:r decode:true  crayon-inline">AAdN</span>, <span class="lang:r decode:true  crayon-inline">ANA</span>, <span class="lang:r decode:true  crayon-inline">AAA</span> и <span class="lang:r decode:true  crayon-inline">AAdA</span>. Для этого ряда данных наилучшей оказалась ETS(A,N,A).</p>
<p>Похожим образом мы можем выбрать наилучшую модель из чистых мультипликативных. Для этого вместо &#171;X&#187; надо использовать &#171;Y&#187;:</p>
<pre class="decode">es(M3$N2568$x, "YYY", h=18)</pre>
<p>Функция так же проверит все шесть мультипликативных моделей и выберет наилучшую. В этот раз это будет ETS(M,Md,M). Модель <span class="lang:r decode:true  crayon-inline">YYY</span> может быть особенно полезной в случае со значениями ряда, близкими к нулю.</p>
<p>Теперь, зная эти базовые черты, мы можем формировать произвольные пулы моделей, используя &#171;X&#187;, &#171;Y&#187; и &#171;Z&#187;. Например, мы можем составить такой пул моделей: <span class="lang:r decode:true  crayon-inline">MNN</span>, <span class="lang:r decode:true  crayon-inline">MAN</span>, <span class="lang:r decode:true  crayon-inline">MAdN</span>, <span class="lang:r decode:true  crayon-inline">MNM</span>, <span class="lang:r decode:true  crayon-inline">MAM</span>, <span class="lang:r decode:true  crayon-inline">MAdM</span> — используя команду:</p>
<pre class="decode">es(M3$N2568$x, "YXY", h=18)</pre>
<p>Получим вот что:</p>
<pre>Estimation progress: 100%... Done!
Time elapsed: 0.92 seconds
Model estimated: ETS(MAdM)
Persistence vector g:
alpha  beta gamma 
0.021 0.021 0.001 
Damping parameter: 0.976
Initial values were optimised.
19 parameters were estimated in the process
Residuals standard deviation: 0.065
Cost function type: MSE; Cost function value: 169730

Information criteria:
     AIC     AICc      BIC 
1764.062 1771.979 1816.380</pre>
<p>Если все пулы моделей, которые мы рассмотрели выше, нас не устраивают, и мы хотим сформировать какой-то свой собственный, особенный, то его можно передать функции в виде вектора названий:</p>
<pre class="decode">es(M3$N2568$x, c("ANN", "MNN", "AAdN", "AAdM", "MAdM"), h=18)</pre>
<p>В этом случае функция пройдёт через все модели в пуле и выберет наилучшую, которой в данном случае является ETS(M,Ad,M). Обратим внимание на то, что значение информационного критерия моделей ETS(M,Ad,M) и ETS(M,Md,M) очень близки друг к другу. Сразу же возникает вопрос, какой модели отдать предпочтение, если разница между ними настолько ничтожна. Именно такие вещи и мотивируют комбинирование прогнозов.</p>
<p>Комбинирование прогнозов регулируется в <span class="lang:r decode:true  crayon-inline">es()</span> с помощью значения &#171;C&#187;. Опять же, мы можем использовать &#171;Z&#187;, &#171;X&#187;, &#171;Y&#187;, &#171;N&#187;, &#171;A&#187; и &#171;M&#187; вместе с этим значением и комбинировать модели из тех пулов, которые нам нравятся. В простейшем же случае мы можем скомбинировать все 30 моделей вот так (давайте ещё попросим и интервал прогнозный построить):</p>
<pre class="decode">es(M3$N2568$x, "CCC", h=18, intervals=TRUE)</pre>
<p>Получим следующие результаты:</p>
<pre>Estimation progress: 100%... Done!
Time elapsed: 10.04 seconds
Model estimated: ETS(CCC)
Initial values were optimised.
Residuals standard deviation: 438.242
Cost function type: MSE

Information criteria:
Combined AICc 
     1772.198 
95% parametric prediction intervals were constructed</pre>
<p>И вот такой график:</p>
<div id="attachment_1080" style="width: 310px" class="wp-caption alignnone"><a href="/wp-content/uploads/2017/01/N2568-es-CCC.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-1080" src="/wp-content/uploads/2017/01/N2568-es-CCC-300x175.png" alt="" width="300" height="175" class="size-medium wp-image-1080" srcset="https://openforecast.org/wp-content/webpc-passthru.php?src=https://openforecast.org/wp-content/uploads/2017/01/N2568-es-CCC-300x175.png&amp;nocache=1 300w, https://openforecast.org/wp-content/webpc-passthru.php?src=https://openforecast.org/wp-content/uploads/2017/01/N2568-es-CCC-768x448.png&amp;nocache=1 768w, https://openforecast.org/wp-content/webpc-passthru.php?src=https://openforecast.org/wp-content/uploads/2017/01/N2568-es-CCC-1024x597.png&amp;nocache=1 1024w, https://openforecast.org/wp-content/webpc-passthru.php?src=https://openforecast.org/wp-content/uploads/2017/01/N2568-es-CCC.png&amp;nocache=1 1200w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a><p id="caption-attachment-1080" class="wp-caption-text">Кобинированная ETS и ряда N2568 из базы M3</p></div>
<p>Из-за того, что мы задали &#171;C&#187; для всех компонент, функция прошла через все 30 моделей, что заняло около 10 секунд. Но мы могли бы скомбинировать и модели из меньшего пула, если бы знали, как его ограничить. Например, глядя на линейный график нашего ряда, можно заключить, что нам нужна модель с мультипликативной сезонностью:</p>
<pre class="decode">es(M3$N2568$x, "CCM", h=18)</pre>
<p>В этом случае мы скомбинируем 10 моделей, а значит и затратим раза в 3 меньше времени, чем в случае с комбинированием всего подряд.</p>
<p>Можно так же сформировать какой-нибудь экзотический пул на основе &#171;X&#187; и &#171;Y&#187;:</p>
<pre class="decode">es(M3$N2568$x, "CXY", h=18)</pre>
<p>В этом случае пул будет включать 12 моделей: <span class="lang:r decode:true  crayon-inline">ANN</span>, <span class="lang:r decode:true  crayon-inline">AAN</span>, <span class="lang:r decode:true  crayon-inline">AAdN</span>, <span class="lang:r decode:true  crayon-inline">ANM</span>, <span class="lang:r decode:true  crayon-inline">AAM</span>, <span class="lang:r decode:true  crayon-inline">AAdM</span>, <span class="lang:r decode:true  crayon-inline">MNN</span>, <span class="lang:r decode:true  crayon-inline">MAN</span>, <span class="lang:r decode:true  crayon-inline">MAdN</span>, <span class="lang:r decode:true  crayon-inline">MNM</span>, <span class="lang:r decode:true  crayon-inline">MAM</span>, <span class="lang:r decode:true  crayon-inline">MAdM</span>.</p>
<p>Ну, и наконец, мы можем скомбинировать модели из произвольного пула, если в него включить <span class="lang:r decode:true  crayon-inline">CCC</span>:</p>
<pre class="decode">es(M3$N2568$x, c("CCC","ANN", "MNN", "AAdN", "AAdM", "MMdM"), h=18)</pre>
<p>Как видим, функция <span class="lang:r decode:true  crayon-inline">es()</span> предоставляет огромный простор для творчества при выборе моделей и комбинировании прогнозов. Теперь вы можете творить с экспоненциальным сглаживанием всё, что захотите.</p>
<p>На сегодня всё. В следующий раз мы обсудим другие захватывающий параметры функции <span class="lang:r decode:true  crayon-inline">es()</span>. Не переключайтесь!</p>
<p>Сообщение <a href="https://openforecast.org/ru/2017/01/24/smooth-package-for-r-es-function-part-iv-model-selection-and-combination-of-forecasts-2/">Пакет «smooth» для R. Функция es(). Часть 4. Выбор моделей и комбинирование прогнозов</a> появились сначала на <a href="https://openforecast.org/ru">Open Forecasting</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://openforecast.org/ru/2017/01/24/smooth-package-for-r-es-function-part-iv-model-selection-and-combination-of-forecasts-2/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Пакет «smooth» для R. Функция es(). Часть 3. Мультипликативные модели</title>
		<link>https://openforecast.org/ru/2016/11/18/smooth-package-for-r-es-function-part-iii-pure-multiplicative-models-ru/</link>
					<comments>https://openforecast.org/ru/2016/11/18/smooth-package-for-r-es-function-part-iii-pure-multiplicative-models-ru/#respond</comments>
		
		<dc:creator><![CDATA[Ivan Svetunkov]]></dc:creator>
		<pubDate>Fri, 18 Nov 2016 13:17:19 +0000</pubDate>
				<category><![CDATA[ETS]]></category>
		<category><![CDATA[R]]></category>
		<category><![CDATA[О функции es()]]></category>
		<category><![CDATA[Пакет smooth для R]]></category>
		<category><![CDATA[Прикладное прогнозирование]]></category>
		<category><![CDATA[smooth]]></category>
		<category><![CDATA[статистика]]></category>
		<guid isPermaLink="false">https://openforecast.org/?p=1030</guid>

					<description><![CDATA[<p>Голая теория В прошлый раз мы обсуждали аддитивные модели экспоненциального сглаживания, сегодня пришла пора мультипликативных. Вообще в среде прогнозистов имеется некоторый скепсис по поводу мультипликативных моделей экспоненциального сглаживания. Нет, конечно, когда речь заходит о типе сезонности, многие скажут, что нужно использовать мультипликативную, и будут правы (очень многие ряды имеют такой характер сезонности). Однако в случае [&#8230;]</p>
<p>Сообщение <a href="https://openforecast.org/ru/2016/11/18/smooth-package-for-r-es-function-part-iii-pure-multiplicative-models-ru/">Пакет «smooth» для R. Функция es(). Часть 3. Мультипликативные модели</a> появились сначала на <a href="https://openforecast.org/ru">Open Forecasting</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h3>Голая теория</h3>
<p>В прошлый раз мы обсуждали аддитивные модели экспоненциального сглаживания, сегодня пришла пора мультипликативных.</p>
<p>Вообще в среде прогнозистов имеется некоторый скепсис по поводу мультипликативных моделей экспоненциального сглаживания. Нет, конечно, когда речь заходит о типе сезонности, многие скажут, что нужно использовать мультипликативную, и будут правы (очень многие ряды имеют такой характер сезонности). Однако в случае с трендом, уровнем ряда и ошибкой не всё так однозначно и понятно. Зачем на самом деле умножать уровень на тренд и на ошибку? Что это даёт? Жизнь усложняет, это само собой. Математические выкладки усложняет, это тоже. Точность прогнозов при этом не обязательно возрастает. В общем, проблем добавляется, а результат не очевиден.</p>
<p>Вы спросите меня, зачем тогда вообще эти модели нужны? На то существует как минимум одна причина. Мультипликативные модели подразумевают, что данные, с которыми мы работаем всегда положительны. Это очень полезное свойство, когда нам, например, нужно спрогнозировать уровень продаж, потому что продать -51 ботинок в Апреле 2017 года в принципе невозможно (если не брать в расчёт какие-нибудь технические ошибки). Это и есть та самая причина, по которой мультипликативные модели могут быть нужны.</p>
<p>Давайте посмотрим, в чём их особенность.</p>
<p>Компоненты таких моделей могут быть записаны с помощью натуральных логарифмов в форме, похожей на ту, что <a href="/2016/11/02/smooth-package-for-r-es-function-part-ii-pure-additive-models-ru/">мы уже обсуждали</a>:<br />
\begin{equation} \label{eq:ssGeneralMultiplicative}<br />
	\begin{matrix}<br />
		y_t = \exp \left(w&#8217; \log(v_{t-l}) + \log(1+\epsilon_t) \right) \\<br />
		\log(v_t) = F \log(v_{t-l}) + \log (1 + g \epsilon_t)<br />
	\end{matrix} .<br />
\end{equation}<br />
Все обозначения мы уже ввели в <a href="/2016/11/02/smooth-package-for-r-es-function-part-ii-pure-additive-models-ru/">предыдущей статье</a>, так что здесь опять обсуждать не будем. Единственное, на что хотелось бы обратить внимание &#8212; это то, что функции \(\exp\) и \(\log\) здесь применяются к векторам поэлементно. То есть \(\log(v_t)\) будет давать вектор, в котором каждая из компонент прологарифмирована. Важно отметить, что все компоненты модели должны быть положительными, иначе она работать не будет.</p>
<p>Модель \eqref{eq:ssGeneralMultiplicative} позволяет записать любые мультипликативные модели в компактной форме. Например, модель с мультипликативным трендом и мультипликативной ошибкой ETS(M,M,N) может быть записана так:<br />
\begin{equation} \label{eq:ssETS(M,M,N)}<br />
	\begin{matrix}<br />
		y_t = \exp \left(\log(l_{t-l}) + \log(b_{t-l}) + \log(1 + \epsilon_t) \right) \\<br />
		\log(l_t) = \log(l_{t-l}) + \log(b_{t-l}) + \log (1 + \alpha \epsilon_t) \\<br />
		\log(b_t) = \log(b_{t-l}) + \log (1 + \beta \epsilon_t)<br />
	\end{matrix} .<br />
\end{equation}<br />
Если теперь взять экспоненту во втором и третьем уравнениях в \eqref{eq:ssETS(M,M,N)}, а также упростить первое, то получится вот такая модель, которая лежит в основе метода Пегельса:<br />
\begin{equation} \label{eq:ssETS(M,M,N)_Pegels}<br />
	\begin{matrix}<br />
		y_t = l_{t-l} b_{t-l} (1 + \epsilon_t) \\<br />
		l_t = l_{t-l} b_{t-l} (1 + \alpha \epsilon_t) \\<br />
		b_t = b_{t-l} (1 + \beta \epsilon_t)<br />
	\end{matrix} .<br />
\end{equation}<br />
Как видим, форма \eqref{eq:ssGeneralMultiplicative} универсальна и объединяет в себе много разных моделей.</p>
<p>Итак, в чём же фишка? Из-за перемножения компонент итоговое значение всегда будет положительным. Однако, в данном случае важно, чтобы ошибка в \eqref{eq:ssGeneralMultiplicative} была распределена лог-нормально:<br />
\begin{equation} \label{eq:ssErrorlogN}<br />
	(1 + \epsilon_t) \sim \text{log}\mathcal{N}(0,\sigma^2),<br />
\end{equation}<br />
здесь \(\sigma^2\) это дисперсия логарифма ошибки \(1 + \epsilon_t\). Почему именно такое распределение? Если эта дисперсия невелика, то, в принципе, совершенно неважно, распределена ли ошибка нормально или лог-нормально, так как оба распределения в этом случае оказываются очень близкими друг к другу. Однако, когда дисперсия становится выше, различия становятся более ощутимыми, хвост лог-нормального распределения становится более длинным. В этом случае допущение о нормальности распределения становится некорректным, так как ошибка \(1 + \epsilon_t\) из-за высокой дисперсии может становиться отрицательной, что делает модель \eqref{eq:ssGeneralMultiplicative} непригодной для прогнозирования. Поэтому допущение \eqref{eq:ssErrorlogN} важно для этой модели.</p>
<p>Само предположение \eqref{eq:ssErrorlogN} приводит к следующим результатам.</p>
<p>Во-первых, с высокой дисперсией и низкими фактическими значениями модель даёт медианные прогнозы, а не средние. Нет, конечно, средние тоже можно дать, но сделать это сложнее, да и особо не имеет смысл, так как <a href="/forecasting_toolbox/data-analysis-stat/">медиана более робастна</a> в случаях с асимметричными распределениями. Это всё становится особенно важным в случае с целочисленным спросом, до которого мы когда-нибудь, возможно, доберёмся.</p>
<p>Во-вторых, прогнозные интервалы оказываются несимметричными как раз из-за предположения \eqref{eq:ssErrorlogN}. Это, опять же, становится более заметно в рядах данных с высокой дисперсией и низким уровнем ряда. В противном случае разницы между интервалами, построенными с помощью мультипликативной и аддитивной моделями, не будет практически никакой.</p>
<p>Ну, и, в-третьих, оценка параметров модели должна осуществляться иначе. Целевая функция для этих моделей может быть выведена из следующей <a href="/2015/08/14/ets-multiplicative-error-term/">логарифмированной функции правдоподобия</a>:<br />
\begin{equation} \label{eq:ssConcentratedLogLikelihoodLnorm}<br />
	\ell(\theta | Y) = -\frac{T}{2} \left( \log \left( 2 \pi e \right) +\log \left( \hat{\sigma}^2 \right) \right) -\sum_{t=1}^T \log y_t ,<br />
\end{equation}<br />
где дисперсия \(\hat{\sigma}^2 = \frac{1}{T} \sum_{t=1}^T \log^2(1 + \epsilon_{t})\). Целевая функция в этом случае будет иметь вид:<br />
\begin{equation} \label{eq:ssCostFunction}<br />
	\text{CF} = \log \left( \hat{\sigma}^2 \right) + \frac{2}{T} \sum_{t=1}^T \log y_t .<br />
\end{equation}</p>
<h3>Штуки в R</h3>
<p>Наглядным примером того, в чём преимущества мультипликативной модели, является ряд N2457 из базы M3. Несмотря на то, что уровень ряда достаточно велик (в среднем что-то около 5000), дисперсия в нём так же велика. Это указывает на то, что предпочтение стоит отдать мультипликативной модели. Попробуем построить модель ETS(M,N,N) с параметрическими прогнозными интервалами:</p>
<pre class="decode" title="Examples of usage" >es(M3$N2457$x, "MNN", h=18, holdout=TRUE, intervals="p")</pre>
<p>Получим вот что:</p>
<pre title="N1234, ETS(AAdN), output of es()" >Time elapsed: 0.1 seconds
Model estimated: ETS(MNN)
Persistence vector g:
alpha 
0.145 
Initial values were optimised.
3 parameters were estimated in the process
Residuals standard deviation: 0.413
Cost function type: MSE; Cost function value: 1288657

Information criteria:
     AIC     AICc      BIC 
1645.978 1646.236 1653.702 
95% parametric prediction intervals were constructed
72% of values are in the prediction interval
Forecast errors:
MPE: 26.3%; Bias: 87%; MAPE: 39.8%; SMAPE: 49.4%
MASE: 2.944; sMAE: 120.1%; RelMAE: 1.258; sMSE: 242.7%</pre>
<p>Мы уже обсуждали в <a href="/2016/11/02/smooth-package-for-r-es-function-part-ii-pure-additive-models-ru/">предыдущей статье</a>, что значит каждая из этих строчек, так что останавливаться на этом не будем. Самой важной строкой для нас является &#171;Residuals standard deviation: 0.413&#187;, в которой говорится о том, что стандартное отклонение остатков модели составило 0.413. То есть дисперсия модели составила что-то порядка 0.17. Это, на самом деле, достаточно много для мультипликативной модели и указывает на несимметричность распределения остатков, что находит отражение в следующих прогнозных интервалах:<br />
<div id="attachment_1032" style="width: 310px" class="wp-caption alignnone"><a href="/wp-content/uploads/2016/11/N2457-MNN-PI-parametric.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-1032" src="/wp-content/uploads/2016/11/N2457-MNN-PI-parametric-300x175.png" alt="Ряд N2457 из M3 и прогноз и интервал по модели es(&quot;MNN&quot;)" width="300" height="175" class="size-medium wp-image-1032" srcset="https://openforecast.org/wp-content/webpc-passthru.php?src=https://openforecast.org/wp-content/uploads/2016/11/N2457-MNN-PI-parametric-300x175.png&amp;nocache=1 300w, https://openforecast.org/wp-content/webpc-passthru.php?src=https://openforecast.org/wp-content/uploads/2016/11/N2457-MNN-PI-parametric-768x448.png&amp;nocache=1 768w, https://openforecast.org/wp-content/webpc-passthru.php?src=https://openforecast.org/wp-content/uploads/2016/11/N2457-MNN-PI-parametric-1024x597.png&amp;nocache=1 1024w, https://openforecast.org/wp-content/webpc-passthru.php?src=https://openforecast.org/wp-content/uploads/2016/11/N2457-MNN-PI-parametric.png&amp;nocache=1 1200w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a><p id="caption-attachment-1032" class="wp-caption-text">Ряд N2457 из M3 и прогноз и интервал по модели es(&#171;MNN&#187;)</p></div>
<p>Если бы мы построили модель с аддитивной ошибкой, ETS(A,N,N), то получили бы вот что:<br />
<div id="attachment_1033" style="width: 310px" class="wp-caption alignnone"><a href="/wp-content/uploads/2016/11/N2457-ANN-PI-parametric.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-1033" src="/wp-content/uploads/2016/11/N2457-ANN-PI-parametric-300x175.png" alt="Ряд N2457 из M3 и прогноз и интервал по модели es(&quot;ANN&quot;)" width="300" height="175" class="size-medium wp-image-1033" srcset="https://openforecast.org/wp-content/webpc-passthru.php?src=https://openforecast.org/wp-content/uploads/2016/11/N2457-ANN-PI-parametric-300x175.png&amp;nocache=1 300w, https://openforecast.org/wp-content/webpc-passthru.php?src=https://openforecast.org/wp-content/uploads/2016/11/N2457-ANN-PI-parametric-768x448.png&amp;nocache=1 768w, https://openforecast.org/wp-content/webpc-passthru.php?src=https://openforecast.org/wp-content/uploads/2016/11/N2457-ANN-PI-parametric-1024x597.png&amp;nocache=1 1024w, https://openforecast.org/wp-content/webpc-passthru.php?src=https://openforecast.org/wp-content/uploads/2016/11/N2457-ANN-PI-parametric.png&amp;nocache=1 1200w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a><p id="caption-attachment-1033" class="wp-caption-text">Ряд N2457 из M3 и прогноз и интервал по модели es(&#171;ANN&#187;)</p></div>
<p>Если сравнить эти два графика, то мы заметим, насколько отличаются у двух моделей прогнозные интервалы. Более того, у первой прогнозный интервал оказался более адекватным и накрыл большее число наблюдений, чем у второй. Как видим, в подобных ситуациях мультипликативные модели оказываются полезными.</p>
<p>Ну, и для очистки совести пример, в котором разница между аддитивной и мультипликативной моделями практически отсутствует. Это ряд N2348:<br />
<div id="attachment_1034" style="width: 310px" class="wp-caption alignnone"><a href="/wp-content/uploads/2016/11/N2348-MNN-PI-parametric.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-1034" src="/wp-content/uploads/2016/11/N2348-MNN-PI-parametric-300x175.png" alt="Ряд N2348 из M3 и прогноз и интервал по модели es(&quot;MNN&quot;)" width="300" height="175" class="size-medium wp-image-1034" srcset="https://openforecast.org/wp-content/webpc-passthru.php?src=https://openforecast.org/wp-content/uploads/2016/11/N2348-MNN-PI-parametric-300x175.png&amp;nocache=1 300w, https://openforecast.org/wp-content/webpc-passthru.php?src=https://openforecast.org/wp-content/uploads/2016/11/N2348-MNN-PI-parametric-768x448.png&amp;nocache=1 768w, https://openforecast.org/wp-content/webpc-passthru.php?src=https://openforecast.org/wp-content/uploads/2016/11/N2348-MNN-PI-parametric-1024x597.png&amp;nocache=1 1024w, https://openforecast.org/wp-content/webpc-passthru.php?src=https://openforecast.org/wp-content/uploads/2016/11/N2348-MNN-PI-parametric.png&amp;nocache=1 1200w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a><p id="caption-attachment-1034" class="wp-caption-text">Ряд N2348 из M3 и прогноз и интервал по модели es(&#171;MNN&#187;)</p></div>
<div id="attachment_1035" style="width: 310px" class="wp-caption alignnone"><a href="/wp-content/uploads/2016/11/N2348-ANN-PI-parametric.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-1035" src="/wp-content/uploads/2016/11/N2348-ANN-PI-parametric-300x175.png" alt="Ряд N2348 из M3 и прогноз и интервал по модели es(&quot;ANN&quot;)" width="300" height="175" class="size-medium wp-image-1035" srcset="https://openforecast.org/wp-content/webpc-passthru.php?src=https://openforecast.org/wp-content/uploads/2016/11/N2348-ANN-PI-parametric-300x175.png&amp;nocache=1 300w, https://openforecast.org/wp-content/webpc-passthru.php?src=https://openforecast.org/wp-content/uploads/2016/11/N2348-ANN-PI-parametric-768x448.png&amp;nocache=1 768w, https://openforecast.org/wp-content/webpc-passthru.php?src=https://openforecast.org/wp-content/uploads/2016/11/N2348-ANN-PI-parametric-1024x597.png&amp;nocache=1 1024w, https://openforecast.org/wp-content/webpc-passthru.php?src=https://openforecast.org/wp-content/uploads/2016/11/N2348-ANN-PI-parametric.png&amp;nocache=1 1200w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a><p id="caption-attachment-1035" class="wp-caption-text">Ряд N2348 из M3 и прогноз и интервал по модели es(&#171;ANN&#187;)</p></div>
<p>Как видим, прогнозные интервалы и точечные прогнозы у обеих моделей оказались очень схожими. В таких случаях не настолько важно, какой модели отдать предпочтение, можно выбрать ту, с которой удобней работать.</p>
<p>Вот такие дела.</p>
<p>Сообщение <a href="https://openforecast.org/ru/2016/11/18/smooth-package-for-r-es-function-part-iii-pure-multiplicative-models-ru/">Пакет «smooth» для R. Функция es(). Часть 3. Мультипликативные модели</a> появились сначала на <a href="https://openforecast.org/ru">Open Forecasting</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://openforecast.org/ru/2016/11/18/smooth-package-for-r-es-function-part-iii-pure-multiplicative-models-ru/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Пакет «smooth» для R. Функция es(). Часть 2. Аддитивные модели</title>
		<link>https://openforecast.org/ru/2016/11/02/smooth-package-for-r-es-function-part-ii-pure-additive-models-ru/</link>
					<comments>https://openforecast.org/ru/2016/11/02/smooth-package-for-r-es-function-part-ii-pure-additive-models-ru/#respond</comments>
		
		<dc:creator><![CDATA[Ivan Svetunkov]]></dc:creator>
		<pubDate>Wed, 02 Nov 2016 09:27:21 +0000</pubDate>
				<category><![CDATA[ETS]]></category>
		<category><![CDATA[R]]></category>
		<category><![CDATA[О функции es()]]></category>
		<category><![CDATA[Пакет smooth для R]]></category>
		<category><![CDATA[Прикладное прогнозирование]]></category>
		<category><![CDATA[smooth]]></category>
		<category><![CDATA[статистика]]></category>
		<guid isPermaLink="false">https://openforecast.org/?p=981</guid>

					<description><![CDATA[<p>Немного статистики Как уже упоминалось в предыдущей статье, для пакета &#171;smooth&#187; написана документация с подробный объяснением всех моделей, лежащих в основе функций. Здесь мы обсудим несколько основных аспектов, касающихся функции es(). Сегодня мы обсудим аддитивные модели. У этих моделей все компоненты представлены не в мультипликативном виде, что облегчает их понимание и построение. Функция es() использует [&#8230;]</p>
<p>Сообщение <a href="https://openforecast.org/ru/2016/11/02/smooth-package-for-r-es-function-part-ii-pure-additive-models-ru/">Пакет «smooth» для R. Функция es(). Часть 2. Аддитивные модели</a> появились сначала на <a href="https://openforecast.org/ru">Open Forecasting</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h3>Немного статистики</h3>
<p>Как уже упоминалось <a href="/2016/10/14/smooth-es-part-1-ru/">в предыдущей статье</a>, для пакета &#171;smooth&#187; написана документация с подробный объяснением всех моделей, лежащих в основе функций. Здесь мы обсудим несколько основных аспектов, касающихся функции <span class="lang:r decode:true  crayon-inline " >es()</span>. Сегодня мы обсудим аддитивные модели. У этих моделей все компоненты представлены не в мультипликативном виде, что облегчает их понимание и построение.</p>
<p>Функция <span class="lang:r decode:true  crayon-inline " >es()</span> использует математическую модель пространства состояний (State-Space model, к которой мы, возможно, когда-нибудь доберёмся в учебнике на этом сайте) с единым источником ошибки (Single Source of Error). Практически все основные элеименты модели взяты из книги <a href="http://www.springer.com/gp/book/9783540719168" target="_blank">Hyndman et al. (2008)</a>. Преимущество этой модели заключается в том, что она позволяет записать в компактной форме любой метод экспоненциального сглаживания. Однако модель, лежащая в основе функции <span class="lang:r decode:true  crayon-inline " >es()</span> имеет несколько отличий по сравнению с обсуждаемой в упомянутой выше книге. Одно из важнейших отличий заключается в том, как моделируют сезонные компоненты у нас и у них: в то время, как они используют фиктивные переменные, мы используем для тех же целей лаговые. Есть и другие отличии, но мы о них поговорим несколько позже.</p>
<p>Сегодня мы обсуждаем аддитивную модель. Записывается она следующим образом:<br />
\begin{equation} \label{eq:ssGeneralAdditive}<br />
	\begin{matrix}<br />
		y_t = w&#8217; v_{t-l} + \epsilon_t \\<br />
		v_t = F v_{t-l} + g \epsilon_t<br />
	\end{matrix} ,<br />
\end{equation}<br />
где \(y_{t}\) &#8212; это фактическое значения на наблюдении \(t\), \(v_{t}\) &#8212; это вектор состояний (содержащий в себе компоненты временного ряда, такие как уровень ряда, тренд и сезонность), \(w\) и \(F\) &#8212; это заданные измерительный вектор и матрица переходов, а \(g\) &#8212; это вектор постоянства (не знаю, как его правильно перевести&#8230; В общем, он в себе содержит постоянные сглаживания). Наконец, \(\epsilon_t\) &#8212; это ошибка модели, относительно которой, в случае с аддитивной моделью, обычно делают предположение о том, что она распределена нормально.</p>
<p>Используя эти обозначения, любая аддитивная модель экспоненциального сглаживания может быть записана в виде \eqref{eq:ssGeneralAdditive}. Например, модель с демпфированным трендом, обозначающаяся обычно так же как ETS(A,Ad,N), имеет следующую структуру:<br />
\begin{equation} \label{eq:ssAAdNMatrices}<br />
w = 	\begin{pmatrix}<br />
		1 \\ \phi<br />
	\end{pmatrix},<br />
F = 	\begin{pmatrix}<br />
		1 &#038; \phi \\<br />
		0 &#038; \phi<br />
	\end{pmatrix},<br />
g = 	\begin{pmatrix}<br />
		\alpha \\<br />
		\beta<br />
	\end{pmatrix},<br />
v_t = 	\begin{pmatrix}<br />
		l_t \\<br />
		b_t<br />
	\end{pmatrix},<br />
v_{t-l} = 	\begin{pmatrix}<br />
		l_{t-1} \\<br />
		b_{t-1}<br />
	\end{pmatrix} .<br />
\end{equation}<br />
Подставляя эти значения в \eqref{eq:ssGeneralAdditive}, мы получим модель, которая, возможно, известна некоторым из вас:<br />
\begin{equation} \label{eq:ssAAdN}<br />
	\begin{matrix}<br />
		y_t = l_{t-1} + \phi b_{t-1} + \epsilon_t \\<br />
		l_t = l_{t-1} + \phi b_{t-1} + \alpha \epsilon_t \\<br />
		b_t = \phi b_{t-1} + \beta \epsilon_t<br />
	\end{matrix} ,<br />
\end{equation}<br />
где \(l_t\) &#8212; уровень ряда, \(b_t\) &#8212; тренд, \(\phi\) &#8212; параметр демпфирования тренда, \(\alpha\) и \(\beta\) &#8212; параметры сглаживания. Эта же модель приведена в упомянутом уже дважды учебнике. Так что модели без сезонности, реализованные в <span class="lang:r decode:true  crayon-inline " >es()</span> не отличаются практически ничем от несезонных моделей функции <span class="lang:r decode:true  crayon-inline " >ets()</span> пакета forecast. Однако различия начинают проявляться, когда мы обращаемся к сезонным компонентам&#8230;</p>
<p>Если вы обратили внимание, у вектора \(v_{t-l}\) в \eqref{eq:ssGeneralAdditive} есть индекс \(l\), который мы ещё не обсудили. Этот индекс указывает на то, что компоненты временного ряда могут иметь разные лаги. Например, сезонная компонента будет иметь какой-нибудь лаг \(m\) (в случае с месячными данными \(m=\)12), в то время как все остальные будут использоваться с лагом 1. Например, простая аддитивная сезонная модель ETS(A,A,A) имеет в нашей реализации следующую структуру вектора состояний:<br />
\begin{equation} \label{eq:ssETS(A,A,A)StateVector}<br />
	v_{t-l} =<br />
	\begin{pmatrix}<br />
		l_{t-1} \\<br />
		b_{t-1} \\<br />
		s_{t-m}<br />
	\end{pmatrix} ,<br />
\end{equation}<br />
где, как видим, уровень и тренд имеют лаг 1, а сезонная компонента имеет лаг \(m\). Если мы теперь подставим значения \eqref{eq:ssETS(A,A,A)StateVector} в \eqref{eq:ssGeneralAdditive}, то мы получим широко известную в узких кругах аддитивную модель Хольта-Уинтерса:<br />
\begin{equation} \label{eq:ssETS(A,A,A)}<br />
	\begin{matrix}<br />
		y_t = l_{t-1} + b_{t-1} + s_{t-m} + \epsilon_t \\<br />
		l_t = l_{t-1} + b_{t-1} + \alpha \epsilon_t \\<br />
		b_t = b_{t-1} + \beta \epsilon_t \\<br />
		s_t = s_{t-m} + \gamma \epsilon_t<br />
	\end{matrix} .<br />
\end{equation}</p>
<p>В случае с моделями из книги <a href="http://www.springer.com/gp/book/9783540719168" target="_blank">Hyndman et al. (2008)</a> в \eqref{eq:ssETS(A,A,A)} нужно было бы добавить \(m-1\) сезонную компоненту, каждая из которых не обновлялась бы на данном наблюдении. Суть модели бы не поменялась, но размер её увеличился бы. По сути, используя лаговую структуру, мы уменьшаем размеры \(v_t, w, F\) и \(g\), что позволяет упростить некоторые выкладки и требует проводить по-другому нормализацию сезонных компонент (не как в четырежды упомянутой книге). Финальные прогнозы от использования такой структуры могут быть другими, но незначительно, все статистические свойства модели сохраняются. Например, концентрированная логарифмированная функция правдоподобия для неё считается точно так же, как и для оригинальной ETS:<br />
\begin{equation} \label{eq:ssConcentratedLogLikelihoodNorm}<br />
	\ell(\theta | Y) = -\frac{T}{2} \left( \log \left( 2 \pi e \right) +\log \left( \hat{\sigma}^2 \right) \right),<br />
\end{equation}<br />
где \(\theta\) &#8212; это вектор параметров модели, а \(T\) &#8212; число наблюдений. Функция правдоподобия \eqref{eq:ssConcentratedLogLikelihoodNorm} может быть использована для <a href="/forecasting_toolbox/estimation-advanced-methods/">оценки параметров модели</a>, а так же для расчёта информационных критериев и <a href="/forecasting_toolbox/model-selection/">выбора оптимальной модели</a>.</p>
<h3>Пара примеров в R</h3>
<p>Впрочем, хватит всякой статистики и непонятных слов. Посмотрим, как оно работает. Для наших примеров мы будем использовать временные ряды из базы M3, которая доступна в пакете &#171;Mcomp&#187; для R, так что не забудьте его <a href="/using-r/">установить</a> и загрузить (<span class="lang:r decode:true  crayon-inline " >library(Mcomp)</span>).</p>
<p>Начнём с оценки модели по ряду N1234. В этом ряде имеется явные возрастающий тренд, а для прогнозирования таких рядов имеет смысл обратиться к модели демпфированного тренда (об этом нам говорит научная литература). Сделаем это с помощью команды:</p>
<pre class="decode" title="Examples of usage" >es(M3$N1234$x, "AAdN", h=8, intervals=TRUE)</pre>
<p>В результате этого мы получим две вещи: вывод функции и следующий график:<br />
<div id="attachment_987" style="width: 310px" class="wp-caption alignnone"><a href="/wp-content/uploads/2016/10/N1234-AAdN.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-987" src="/wp-content/uploads/2016/10/N1234-AAdN-300x175.png" alt="Ряд N1234 из базы M3 и прогноз с помощью es()" width="300" height="175" class="size-medium wp-image-987" srcset="https://openforecast.org/wp-content/webpc-passthru.php?src=https://openforecast.org/wp-content/uploads/2016/10/N1234-AAdN-300x175.png&amp;nocache=1 300w, https://openforecast.org/wp-content/webpc-passthru.php?src=https://openforecast.org/wp-content/uploads/2016/10/N1234-AAdN-768x448.png&amp;nocache=1 768w, https://openforecast.org/wp-content/webpc-passthru.php?src=https://openforecast.org/wp-content/uploads/2016/10/N1234-AAdN-1024x597.png&amp;nocache=1 1024w, https://openforecast.org/wp-content/webpc-passthru.php?src=https://openforecast.org/wp-content/uploads/2016/10/N1234-AAdN.png&amp;nocache=1 1200w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a><p id="caption-attachment-987" class="wp-caption-text">Ряд N1234 из базы M3 и прогноз с помощью es()</p></div>
<p>Если график вам ненужен, то можете попросить функцию его не выводить с помощью параметра <span class="lang:r decode:true  crayon-inline " >silent=&#187;graph&#187;</span>. Если вам ненужно, чтобы функция что-либо печатал по итогам работы, то это можно сделать так:</p>
<pre class="decode" title="Examples of usage" >ourModel <- es(M3$N1234$x, "AAdN", h=8, intervals=TRUE, silent="graph")</pre>
<p>В случаях с выбором наилучшей модели и комбинированием прогнозов (которые мы обсудим позже), может быть полезно указать, чтобы функция вообще заткнулась и ничего не выводила. Для этого надо задать<span class="lang:r decode:true  crayon-inline " >silent="all"</span> или <span class="lang:r decode:true  crayon-inline " >silent=TRUE</span>.</p>
<p>Итак, что же там у нас получилось в выводе? А вот что:</p>
<pre title="N1234, ETS(AAdN), output of es()" >Time elapsed: 0.15 seconds
Model estimated: ETS(AAdN)
Persistence vector g:
alpha  beta
0.623 0.26
Damping parameter: 0.964
Initial values were optimised.
6 parameters were estimated in the process
Residuals standard deviation: 75.206
Cost function type: MSE; Cost function value: 4902

Information criteria:
     AIC     AICc      BIC 
522.0857 524.2962 532.9256 

95% parametric prediction intervals were constructed</pre>
<p>Первые две строки говорят нам о том, сколько времени ушло на работу функции и какую модель мы оценили.</p>
<p>"Persistence vector g" - это тот самый вектор постоянства с постоянными сглаживания из \eqref{eq:ssGeneralAdditive}. В нашем случае он содержит две постоянные сглаживания (для уровня и для тренда).</p>
<p>"Damping parameter" показывает значение параметра демпфирования тренда.</p>
<p>Фраза "Initial values were optimised" говорит о том, что стартовые значения вектора состояний \(v_0\) были оптимизированы. Альтернативные варианты - это инициализация с помощью механизма обратного прогноза (backcast) или задание этих значений вручную пользователем.</p>
<p>Далее нам говорят о том, что при построении модели было оценено 6 параметров ("6 parameters were estimated in the process"). В них входят: 2 постоянные сглаживания, 2 стартовых значения, 1 параметр демпфирования и 1 оценённая дисперсия. Дисперсия тут считается для корректного учёта степеней свободы модели.</p>
<p>За этой строкой нам приводят значение стандартного отклонения ошибок, которое составило 75.206. Это несмещённая оценка стандартного отклонения, учитывающая количество степеней свободы и рассчитывающаяся по формуле:<br />
\begin{equation} \label{eq:sd_Value}<br />
	s = \sqrt{\frac{1}{T-k} \sum_{t=1}^T e_t },<br />
\end{equation}<br />
где \(k\) - это число параметров модели (в нашем случае - 6, как мы уже выяснили). Само по себе стандартное отклонение нам мало о чём говорит. Однако его можно, по идеи, использовать для сравнения разных моделей с аддитивной ошибкой.</p>
<p>Далее нам говорят, что в качестве целевой функции использовалась <a href="/forecasting_toolbox/estimation-simple-methods/">MSE</a>, и приводят итоговое значение. Это чисто информация для любопытных.</p>
<p>Строка "Information criteria" и следующая за ней таблица - это значения <a href="/forecasting_toolbox/model-selection/">информационных критериев</a>. С помощью них можно выбрать наиболее подходящую модель для данного временного ряда.</p>
<p>Ну, и, наконец, нам написали о том, что функция так же построила 95% параметрические прогнозные интервалы.</p>
<p>Всё вот это вот, фактически, говорит нам о том, чего можно ожидать от итогового объекта <span class="lang:r decode:true  crayon-inline " >ourModel</span>, который по сути своей представляет собой список (list). Например, <span class="lang:r decode:true  crayon-inline " >ourModel$model</span> содержит в себе название модели, а прогнозы хранятся в <span class="lang:r decode:true  crayon-inline " >ourModel$forecast</span>. Обо всём этом написано подробно в помощи к функции в R.</p>
<p>Что ж, попробуй теперь усложнить себе жизнь и посмотрим, как модель себя ведёт на <a href="/forecasting_toolbox/models_quality/">проверочной части</a> выборки:</p>
<pre class="decode" title="Examples of usage" >y <- ts(c(M3$N1234$x,M3$N1234$xx),start=start(M3$N1234$x),frequency=frequency(M3$N1234$x))
es(y, "AAdN", h=8, holdout=TRUE, intervals=TRUE)</pre>
<p>Итоговый график похож на предыдущий, но теперь на нём ещё есть значения из проверочной выборки:<br />
<div id="attachment_988" style="width: 310px" class="wp-caption alignnone"><a href="/wp-content/uploads/2016/10/N1234-AAdN-holdout.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-988" src="/wp-content/uploads/2016/10/N1234-AAdN-holdout-300x175.png" alt="Ряд N1234 из базы M3, прогноз с помощью es() и фактические значения из проверочной выборки" width="300" height="175" class="size-medium wp-image-988" srcset="https://openforecast.org/wp-content/webpc-passthru.php?src=https://openforecast.org/wp-content/uploads/2016/10/N1234-AAdN-holdout-300x175.png&amp;nocache=1 300w, https://openforecast.org/wp-content/webpc-passthru.php?src=https://openforecast.org/wp-content/uploads/2016/10/N1234-AAdN-holdout-768x448.png&amp;nocache=1 768w, https://openforecast.org/wp-content/webpc-passthru.php?src=https://openforecast.org/wp-content/uploads/2016/10/N1234-AAdN-holdout-1024x597.png&amp;nocache=1 1024w, https://openforecast.org/wp-content/webpc-passthru.php?src=https://openforecast.org/wp-content/uploads/2016/10/N1234-AAdN-holdout.png&amp;nocache=1 1200w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a><p id="caption-attachment-988" class="wp-caption-text">Ряд N1234 из базы M3, прогноз с помощью es() и фактические значения из проверочной выборки</p></div>
<p>Как видим, мы не сумели дать точный точечный прогноз ряда, однако прогнозные интервалы накрыли фактические значения, что указывает на то, что ещё не всё потеряно, и мы хотя бы  правильно смогли оценить неопределённость. Что касается вывода в консоли, то у меня получилось следующее:</p>
<pre title="N1234, ETS(AAN), holdout, output of es()" >Time elapsed: 0.18 seconds
Model estimated: ETS(AAdN)
Persistence vector g:
alpha  beta 
0.623 0.260 
Damping parameter: 0.964
Initial values were optimised.
6 parameters were estimated in the process
Residuals standard deviation: 75.206
Cost function type: MSE; Cost function value: 4902

Information criteria:
     AIC     AICc      BIC 
522.0857 524.2962 532.9256 

95% parametric prediction intervals were constructed
88% of values are in the prediction interval
Forecast errors:
MPE: -3.2%; Bias: -100%; MAPE: 3.2%; SMAPE: 3.2%
MASE: 4.183; sMAE: 3.7%; RelMAE: 3.436; sMSE: 0.2%</pre>
<p>Здесь помимо уже упомянутых ранее строк, появились строка о том, какой процент фактических значений оказались в прогнозном интервале (88%), а так же теперь представлены разные прогнозные ошибки, которые <a href="/forecasting_toolbox/models_quality/">мы как-то обсуждали в учебнике</a>. Единственная новая для нас - это Bias, которая измеряет симметричность распределения ошибки и лежит в пределах от -100% (прогноз оказался завышен) до 100% (систематическое занижение прогноза). Сами по себе ошибки мало о чём говорят (за исключением наверно, Bias и RelMAE: первая говорит о том, что мы сильно промахнулись с нашим прогнозом, вторая говорит о том, что простой метод Naive дал прогнозы в 3,436 раза более точные, чем по нашему методу), поэтому их стоит сравнивать с ошибками по другим моделям. Например, по модели ETS(A,A,N) у меня получились следующие ошибки:</p>
<pre title="N1234, ETS(AAN), holdout, output of es()" >MPE: -3.7%; Bias: -100%; MAPE: 3.7%; SMAPE: 3.6%
MASE: 4.82; sMAE: 4.3%; RelMAE: 3.958; sMSE: 0.2%</pre>
<p>Как видим, модель ETS(A,Ad,N) оказалась несколько точней, чем модель ETS(A,A,N).</p>
<p>Все эти прогнозные ошибки хранятся в объекте <span class="lang:r decode:true  crayon-inline " >ourModel$accuracy</span> в виде вектора. Кроме того, из-за того, что мы использовали параметр <span class="lang:r decode:true  crayon-inline " >holdout=TRUE</span>, нам стала доступна ещё одна переменная - фактические значения из проверочной части выборки: <span class="lang:r decode:true  crayon-inline " >ourModel$holdout</span>. Они могут быть использованы для расчёта каких-нибудь ещё ошибок. Ни в чём себе не отказывайте!</p>
<p>Чуть ранее мы упомянули про особенности сезонных моделей, так что давайте взглянем на какой-нибудь пример такой модели. Возьмём простую модель, без тренда, ETS(A,N,A) и построим её для ряда N1956:</p>
<pre class="decode" title="N1956, ETS(ANA)" >ourModel <- es(M3$N1956$x, "ANA", h=18)</pre>
<p>Получим вот такой график:<br />
<div id="attachment_992" style="width: 310px" class="wp-caption alignnone"><a href="/wp-content/uploads/2016/11/N1956-ANA.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-992" src="/wp-content/uploads/2016/11/N1956-ANA-300x175.png" alt="Ряд N1956 из базы M3 и его прогноз с помощью es()" width="300" height="175" class="size-medium wp-image-992" srcset="https://openforecast.org/wp-content/webpc-passthru.php?src=https://openforecast.org/wp-content/uploads/2016/11/N1956-ANA-300x175.png&amp;nocache=1 300w, https://openforecast.org/wp-content/webpc-passthru.php?src=https://openforecast.org/wp-content/uploads/2016/11/N1956-ANA-768x448.png&amp;nocache=1 768w, https://openforecast.org/wp-content/webpc-passthru.php?src=https://openforecast.org/wp-content/uploads/2016/11/N1956-ANA-1024x597.png&amp;nocache=1 1024w, https://openforecast.org/wp-content/webpc-passthru.php?src=https://openforecast.org/wp-content/uploads/2016/11/N1956-ANA.png&amp;nocache=1 1200w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a><p id="caption-attachment-992" class="wp-caption-text">Ряд N1956 из базы M3 и его прогноз с помощью es()</p></div>
<p>Особо ничего по этому графику не скажешь кроме того, что выглядит всё достаточно адекватно. Если бы мы сравнили итоговую модель с оценённой с помощью <span class="lang:r decode:true  crayon-inline " >ets()</span>, мы бы заметили мелкие различия - постоянные сглаживания и стартовые значения, скорее всего, различались бы, стандартное отклонение ошибки было бы другим, информационные критерии так же отличались бы. Это в свою очередь влияет на прогнозы модели. Вот пример прогнозов, полученных с помощью функций <span class="lang:r decode:true  crayon-inline " >es()</span> и <span class="lang:r decode:true  crayon-inline " >ets()</span>:</p>
<table>
<thead>
<tr>
<td>h</td>
<td><span class="lang:r decode:true  crayon-inline " >es()</span></td>
<td><span class="lang:r decode:true  crayon-inline " >ets()</span></td>
</tr>
</thead>
<tr>
<td>1</td>
<td>3106.583</td>
<td>3105.761</td>
</tr>
<tr>
<td>2</td>
<td>3592.868</td>
<td>3580.976</td>
</tr>
<tr>
<td>3</td>
<td>4395.580</td>
<td>4389.775</td>
</tr>
<tr>
<td>4</td>
<td>5044.109</td>
<td>5052.459</td>
</tr>
<tr>
<td>5</td>
<td>4305.332</td>
<td>4364.522</td>
</tr>
<tr>
<td>6</td>
<td>3650.615</td>
<td>3733.528</td>
</tr>
</table>
<p>Как видим, для некоторых наблюдений разницы практически нет никакой (например, для \(h=\)1). Однако есть несколько случаев, где отклонения оказываются чуть серьёзней (например, -82.913 при \(h=\)6). Впрочем, разница между прогнозами в среднем всё равно составляет не больше 0,431% от среднего уровня данных. Эти 0,431%, конечно, могут в итоге определить, что одна функция дала более точный прогноз, чем вторая, однако, какая из них лучше, сказать без проверочной выборки сложно.</p>
<p>Фух! На сегодня, пожалуй, всё. В следующий раз мы взглянем на мультипликативные модели - там есть важные различия по сравнению с моделями в основе <span class="lang:r decode:true  crayon-inline " >ets()</span>.</p>
<p>Сообщение <a href="https://openforecast.org/ru/2016/11/02/smooth-package-for-r-es-function-part-ii-pure-additive-models-ru/">Пакет «smooth» для R. Функция es(). Часть 2. Аддитивные модели</a> появились сначала на <a href="https://openforecast.org/ru">Open Forecasting</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://openforecast.org/ru/2016/11/02/smooth-package-for-r-es-function-part-ii-pure-additive-models-ru/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Презентация на 19th IIF Workshop</title>
		<link>https://openforecast.org/ru/2016/07/01/19th-iif-workshop/</link>
					<comments>https://openforecast.org/ru/2016/07/01/19th-iif-workshop/#respond</comments>
		
		<dc:creator><![CDATA[Ivan Svetunkov]]></dc:creator>
		<pubDate>Fri, 01 Jul 2016 15:17:31 +0000</pubDate>
				<category><![CDATA[Конференции]]></category>
		<category><![CDATA[ETS]]></category>
		<category><![CDATA[конференции]]></category>
		<category><![CDATA[презентация]]></category>
		<category><![CDATA[прерывистый спрос]]></category>
		<category><![CDATA[статистика]]></category>
		<category><![CDATA[теория]]></category>
		<guid isPermaLink="false">https://openforecast.org/?p=726</guid>

					<description><![CDATA[<p>Во вторник и среду (28 и 29 июня) в Ланкастере прошёл научный семинар на тему &#171;Прогнозирование в цепи поставок&#187; (Supply Chain Forecasting for Operations). В среду я презентовал исследование, которое мы сейчас проводим вместе с Джоном Бойланом (John Boylan). В нём мы предлагаем универсальную модель, позволяющую объединить стандартные методы и методы прогнозирования целочисленного спроса. Делается [&#8230;]</p>
<p>Сообщение <a href="https://openforecast.org/ru/2016/07/01/19th-iif-workshop/">Презентация на 19th IIF Workshop</a> появились сначала на <a href="https://openforecast.org/ru">Open Forecasting</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Во вторник и среду (28 и 29 июня) в Ланкастере прошёл <a href="http://www.lancaster.ac.uk/lums/scfo/" target="_blank">научный семинар на тему &#171;Прогнозирование в цепи поставок&#187;</a> (Supply Chain Forecasting for Operations). В среду я презентовал исследование, которое мы сейчас проводим вместе с Джоном Бойланом (John Boylan). В нём мы предлагаем универсальную модель, позволяющую объединить стандартные методы и методы прогнозирования целочисленного спроса. Делается это очень просто путём разделения спроса на две составляющие &#8212; бинарную переменную, характеризующую наличие или отсутствие спроса и переменную, отвечающую за величину спроса. Такой же подход используется в таких методах как Croston и TSB, но в отличии от них мы предлагаем статистическую модель, лежащую в основе этих и потенциально многих других методов. Благодаря этой модели мы знаем, как можно правильно оценивать параметры упомянутых выше методов и как строить прогнозные интервалы для них.</p>
<div id="attachment_733" style="width: 310px" class="wp-caption alignnone"><a href="/wp-content/uploads/2016/07/SCFO-047.jpg"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-733" src="/wp-content/uploads/2016/07/SCFO-047-300x200.jpg" alt="Вальяжная презентация " width="300" height="200" class="size-medium wp-image-733" srcset="https://openforecast.org/wp-content/webpc-passthru.php?src=https://openforecast.org/wp-content/uploads/2016/07/SCFO-047-300x200.jpg&amp;nocache=1 300w, https://openforecast.org/wp-content/webpc-passthru.php?src=https://openforecast.org/wp-content/uploads/2016/07/SCFO-047-768x513.jpg&amp;nocache=1 768w, https://openforecast.org/wp-content/webpc-passthru.php?src=https://openforecast.org/wp-content/uploads/2016/07/SCFO-047-1024x684.jpg&amp;nocache=1 1024w, https://openforecast.org/wp-content/webpc-passthru.php?src=https://openforecast.org/wp-content/uploads/2016/07/SCFO-047.jpg&amp;nocache=1 1600w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a><p id="caption-attachment-733" class="wp-caption-text">Вальяжная презентация</p></div>
<p>Эти модели уже реализованы в функции  <span class="lang:r decode:true  crayon-inline " >es()</span>  пакета <a href="https://github.com/config-i1/smooth">smooth</a> для R. Всё, что нужно сделать &#8212; это взять ряд с нулевыми значениями (целочисленный спрос) и задать в функции значение параметра <span class="lang:r decode:true  crayon-inline " >intermittent</span>, выбрав из &#171;simple&#187;, &#171;croston&#187; или &#171;tsb&#187;.</p>
<p>Собственно говоря, <a href="/wp-content/uploads/2016/07/2016-06-29-Intermittent-demand-model-full.pdf">вот сама презентация</a>.</p>
<p>Сообщение <a href="https://openforecast.org/ru/2016/07/01/19th-iif-workshop/">Презентация на 19th IIF Workshop</a> появились сначала на <a href="https://openforecast.org/ru">Open Forecasting</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://openforecast.org/ru/2016/07/01/19th-iif-workshop/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Презентация в Высшей Школе Экономики (Санкт-Петербург)</title>
		<link>https://openforecast.org/ru/2016/05/31/hse-presentation/</link>
					<comments>https://openforecast.org/ru/2016/05/31/hse-presentation/#respond</comments>
		
		<dc:creator><![CDATA[Ivan Svetunkov]]></dc:creator>
		<pubDate>Tue, 31 May 2016 12:01:18 +0000</pubDate>
				<category><![CDATA[ETS]]></category>
		<category><![CDATA[Теория прогнозирования]]></category>
		<category><![CDATA[презентация]]></category>
		<category><![CDATA[статистика]]></category>
		<guid isPermaLink="false">https://openforecast.org/?p=695</guid>

					<description><![CDATA[<p>На прошлой неделе ездил с нашей командой прогнозистов в Санкт-Петербург делать презентацию в Вышке и показать город. Времени свободного практически не было, а презентацию свою я закончил за 5 минут до выхода из дома&#8230; В общем, беготня и круговерть. Город гостям понравился, а презентация, кажется, получилась достаточно интересной. Вот pdf-ка моей презентации. Она во многом [&#8230;]</p>
<p>Сообщение <a href="https://openforecast.org/ru/2016/05/31/hse-presentation/">Презентация в Высшей Школе Экономики (Санкт-Петербург)</a> появились сначала на <a href="https://openforecast.org/ru">Open Forecasting</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>На прошлой неделе ездил с нашей командой прогнозистов в Санкт-Петербург делать презентацию в Вышке и показать город. Времени свободного практически не было, а презентацию свою я закончил за 5 минут до выхода из дома&#8230; В общем, беготня и круговерть.</p>
<p>Город гостям понравился, а презентация, кажется, получилась достаточно интересной. <a href="/wp-content/uploads/2016/05/Svetunkov-Ivan.pdf">Вот pdf-ка моей презентации</a>. Она во многом повторяет <a href="/2016/05/02/tfl-ghent-presentation/">презентации в Генте</a>, но в ней немного другие акценты.</p>
<div id="attachment_698" style="width: 310px" class="wp-caption alignnone"><a href="/wp-content/uploads/2016/05/DSC_1111.jpg"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-698" src="/wp-content/uploads/2016/05/DSC_1111-300x200.jpg" alt="Презентация и я" width="300" height="200" class="size-medium wp-image-698" srcset="https://openforecast.org/wp-content/webpc-passthru.php?src=https://openforecast.org/wp-content/uploads/2016/05/DSC_1111-300x200.jpg&amp;nocache=1 300w, https://openforecast.org/wp-content/webpc-passthru.php?src=https://openforecast.org/wp-content/uploads/2016/05/DSC_1111-768x512.jpg&amp;nocache=1 768w, https://openforecast.org/wp-content/webpc-passthru.php?src=https://openforecast.org/wp-content/uploads/2016/05/DSC_1111-1024x683.jpg&amp;nocache=1 1024w, https://openforecast.org/wp-content/webpc-passthru.php?src=https://openforecast.org/wp-content/uploads/2016/05/DSC_1111.jpg&amp;nocache=1 1500w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a><p id="caption-attachment-698" class="wp-caption-text">Презентация и я</p></div>
<p>Отдельное спасибо студентам ВШЭ за интересные вопросы и обсуждения после презентаций.</p>
<div id="attachment_701" style="width: 310px" class="wp-caption alignnone"><a href="/wp-content/uploads/2016/05/DSC_1119.jpg"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-701" src="/wp-content/uploads/2016/05/DSC_1119-300x200.jpg" alt="Участники и слушатели презентации" width="300" height="200" class="size-medium wp-image-701" srcset="https://openforecast.org/wp-content/webpc-passthru.php?src=https://openforecast.org/wp-content/uploads/2016/05/DSC_1119-300x200.jpg&amp;nocache=1 300w, https://openforecast.org/wp-content/webpc-passthru.php?src=https://openforecast.org/wp-content/uploads/2016/05/DSC_1119-768x512.jpg&amp;nocache=1 768w, https://openforecast.org/wp-content/webpc-passthru.php?src=https://openforecast.org/wp-content/uploads/2016/05/DSC_1119-1024x683.jpg&amp;nocache=1 1024w, https://openforecast.org/wp-content/webpc-passthru.php?src=https://openforecast.org/wp-content/uploads/2016/05/DSC_1119.jpg&amp;nocache=1 1500w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a><p id="caption-attachment-701" class="wp-caption-text">Участники и слушатели презентации</p></div>
<p>С гостями ходили по многим заведениям и пробовали разные блюда и напитки. Из напитков всем больше всего понравились пиво в Толстом Фраере и водка под пельмени. Квас, кстати, тоже произвёл очень хорошее впечатление. Ну, и нельзя не сказать про русскую кухню: пироги, пельмени, уха, котлеты, ватрушки&#8230;</p>
<p>В общем, всё было прекрасно и всем всё очень понравилось.</p>
<p>Сообщение <a href="https://openforecast.org/ru/2016/05/31/hse-presentation/">Презентация в Высшей Школе Экономики (Санкт-Петербург)</a> появились сначала на <a href="https://openforecast.org/ru">Open Forecasting</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://openforecast.org/ru/2016/05/31/hse-presentation/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
