<?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/category/multivariate-ru/feed/" rel="self" type="application/rss+xml" />
	<link>https://openforecast.org/ru/category/multivariate-ru/</link>
	<description>О том как смотреть в будущее</description>
	<lastBuildDate>Thu, 22 Mar 2018 19:01:29 +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/category/multivariate-ru/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<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 v2.0.0. Что нового</title>
		<link>https://openforecast.org/ru/2017/07/03/smooth-v2-0-0-whats-new-ru/</link>
					<comments>https://openforecast.org/ru/2017/07/03/smooth-v2-0-0-whats-new-ru/#respond</comments>
		
		<dc:creator><![CDATA[Ivan Svetunkov]]></dc:creator>
		<pubDate>Mon, 03 Jul 2017 01:34:31 +0000</pubDate>
				<category><![CDATA[R]]></category>
		<category><![CDATA[Многомерные модели]]></category>
		<category><![CDATA[Пакет smooth для R]]></category>
		<category><![CDATA[Экстраполяционные методы]]></category>
		<category><![CDATA[smooth]]></category>
		<guid isPermaLink="false">https://openforecast.org/?p=1305</guid>

					<description><![CDATA[<p>Вы не поверите! Пакет smooth для R обновился до версии 2.0.0 и теперь доступен в CRAN. Такой красивый номер в версии не часто встречается, поэтому я решил немного написать о том, что же нового появилось в пакете. Во-первых, в пакете есть новая функция, ves() &#8212; Векторное Экспоненциальное Сглаживание. Эта модель позволяет оценивать несколько рядов одновременно [&#8230;]</p>
<p>Сообщение <a href="https://openforecast.org/ru/2017/07/03/smooth-v2-0-0-whats-new-ru/">smooth v2.0.0. Что нового</a> появились сначала на <a href="https://openforecast.org/ru">Open Forecasting</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Вы не поверите! Пакет <span class="lang:r decode:true crayon-inline">smooth</span> для R обновился до версии 2.0.0 и теперь доступен в <a href="https://goo.gl/op7zyR" target="_blank">CRAN</a>. Такой красивый номер в версии не часто встречается, поэтому я решил немного написать о том, что же нового появилось в пакете.</p>
<p>Во-первых, в пакете есть новая функция, <span class="lang:r decode:true crayon-inline">ves()</span> &#8212; Векторное Экспоненциальное Сглаживание. Эта модель позволяет оценивать несколько рядов одновременно и улавливать возможные связи между ними. Функция позволяет использовать одинаковые постоянные сглаживания, стартовые значения и т.п. для нескольких рядов. Это регулируется параметрами <span class="lang:r decode:true crayon-inline">persistence</span>, <span class="lang:r decode:true crayon-inline">initial</span>, <span class="lang:r decode:true crayon-inline">initialSeason</span>, <span class="lang:r decode:true crayon-inline">transition</span> и <span class="lang:r decode:true crayon-inline">phi</span> (параметр демпфирования). Имейте в виду, что векторные модели могут быть требовательными к размеру выборки, так что подходить к их использованию нужно с умом.</p>
<p>Функция на данный момент поддерживает аддитивные и мультипликативные модели, но смешанные модели в ней не доступны (и навряд ли будут). Дело в том, что я считаю, что смешанные модели &#8212; это зло, которое усложняет жизнь честным прогнозистам. Они даже противоречат <a href="/2017/01/24/smooth-package-for-r-es-function-part-iv-model-selection-and-combination-of-forecasts-2/">общим принципам моделирования</a>&#8230; В любом случае, я решил сильно не заморачиваться и реализовал упрощённую версию мультипликативных моделей. Фактически та же самая VES(M,N,N) &#8212; это VES(A,N,N), применённая к логарифмированным данным. Это упрощение облегчает большую часть вычислений, не меняя значительно сути мультипликативного экспоненциального сглаживания.</p>
<p>В функции на данный момент не хватает несколько важных элементов (таких как прогнозных интервалов и экзогенных переменных), но я буду её улучшать, и, возможно, к версии 2.5.0, она уже буде близка к идеалу. В <a href="https://cran.r-project.org/web/packages/smooth/vignettes/ves.html" target="_blank">виньетах</a> есть несколько примеров использования функции &#8212; посмотрите, если интересно. Я так же напишу пару постов об этой функции в какой-то момент, так что следите за обновлениями!</p>
<p>Во-вторых, я оптимизировал код C++ в пакете, что, судя по всему, привело к увеличению производительности в среднем примерно на 25%.</p>
<p>В-третьих, теперь основные прогнозные функции возвращают <span class="lang:r decode:true crayon-inline">imodel</span>, часть модели, ответственную за моделирование вероятности возникновения спроса (мы ещё поговорим об этом в отдельном посте про целочисленный спрос). В вызове функций так же появился параметр <span class="lang:r decode:true crayon-inline">imodel</span>, которые позволяет передать тип экспоненциального сглаживания в соответствующую часть модели. Пока что это работает только с методом Croston, в других моделях всё несколько сложней. Суть идеи в том, что вероятность возникновения может быть смоделирована сама по себе с использованием какой-нибудь модели тренда. Так что можно попробовать передать <span class="lang:r decode:true crayon-inline">imodel=&#187;MMN&#187;</span> и посмотреть, что получится.</p>
<p>В пакете есть и другие нововведения и исправления, которые я здесь не рассматриваю. Если интересно, посмотрите сами <a href="https://cran.r-project.org/web/packages/smooth/NEWS" target="_blank">здесь</a>. Далее я собираюсь развивать и улучшать VES, а так же дорабатывать ту самую часть <span class="lang:r decode:true crayon-inline">imodel</span>.</p>
<p>Такие дела.<br />
До связи!</p>
<p>Сообщение <a href="https://openforecast.org/ru/2017/07/03/smooth-v2-0-0-whats-new-ru/">smooth v2.0.0. Что нового</a> появились сначала на <a href="https://openforecast.org/ru">Open Forecasting</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://openforecast.org/ru/2017/07/03/smooth-v2-0-0-whats-new-ru/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
