<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>ARIMA on 格物堂</title><link>https://gewutang.cn/tags/arima/</link><description>Recent content in ARIMA on 格物堂</description><generator>Hugo -- gohugo.io</generator><language>zh-cn</language><lastBuildDate>Sun, 17 Apr 2011 00:00:00 +0000</lastBuildDate><atom:link href="https://gewutang.cn/tags/arima/index.xml" rel="self" type="application/rss+xml"/><item><title>用R拟合缺项的ARIMA模型</title><link>https://gewutang.cn/2011/04/17/use-r-to-fit-sparse-arma-model/</link><pubDate>Sun, 17 Apr 2011 00:00:00 +0000</pubDate><guid>https://gewutang.cn/2011/04/17/use-r-to-fit-sparse-arma-model/</guid><description>&lt;p&gt;标准的ARMA（p,q）模型是这样的：&lt;/p&gt;&#10;&lt;p&gt;$$&#10;X_t=a_1X_{t-1}+\ldots+a_pX_{t-p}+\epsilon_t+b_1\epsilon_{t-1}+\ldots+b_q\epsilon_{t-q}&#10;$$&lt;/p&gt;&#10;&lt;p&gt;比如，ARMA(3,2)的形式如下：&lt;/p&gt;&#10;&lt;p&gt;$$&#10;X_t=a_1X_{t-1}+a_2X_{t-2}+a_3X_{t-3}+\epsilon_t+b_1\epsilon_{t-1}+b_2\epsilon_{t-2}&#10;$$&lt;/p&gt;&#10;&lt;p&gt;拟合ARMA（3,2）模型的R代码如下：&lt;/p&gt;&#10;&lt;pre&gt;&lt;code class="language-r"&gt;arima(lh, order = c(3,0,2))&#10;&lt;/code&gt;&lt;/pre&gt;&#10;&lt;p&gt;运行结果如下：&lt;/p&gt;&#10;&lt;pre&gt;&lt;code&gt;Call:&#10;arima(x = lh, order = c(3, 0, 2))&#10;&#10;Coefficients:&#10; ar1 ar2 ar3 ma1 ma2 intercept&#10; 0.0402 0.4567 -0.4164 0.6602 -0.1109 2.3911&#10;s.e. 0.3952 0.2032 0.2310 0.4403 0.3977 0.1010&#10;&#10;sigma^2 estimated as 0.1711: log likelihood = -26.2, aic = 66.4&#10;&lt;/code&gt;&lt;/pre&gt;&#10;&lt;p&gt;代码清晰易懂。order=c(3,0,2)中的3便是模型中的p，2是模型中的q。中间的0是序列X在建立ARMA模型前的差分次数。&lt;/p&gt;&#10;&lt;p&gt;有时候，我们不需要拟合完整的ARMA模型。比如，要拟合的模型如下：&lt;/p&gt;&#10;&lt;p&gt;$$&#10;X_t=a_1X_{t-1}+a_3X_{t-3}+\epsilon_t+b_1\epsilon_{t-1}+b_2\epsilon_{t-2}&#10;$$&lt;/p&gt;&#10;&lt;p&gt;虽然模型的最高阶依然是（3,2）可是AR项里面缺少了第二项。其实，这个问题解决起来很简单的。分3步：&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;观察完整的ARMA模型有几个参数，上例中共有6个参数。&lt;/li&gt;&#10;&lt;li&gt;观察缺失项的参数在原模型参数中的位置，上例中缺失项是6个参数中的第2个参数。&lt;/li&gt;&#10;&lt;li&gt;在arima()函数中，加入fixed=c(NA,0,NA,NA,NA,NA)，transform.pars = FALSE。&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;p&gt;上例中的R代码如下：&lt;/p&gt;&#10;&lt;pre&gt;&lt;code class="language-r"&gt;arima(lh, order = c(3,0,2),fixed=c(NA,0,NA,NA,NA,NA),transform.pars = FALSE)&#10;&lt;/code&gt;&lt;/pre&gt;&#10;&lt;p&gt;返回结果如下：&lt;/p&gt;&#10;&lt;pre&gt;&lt;code&gt;Call:&#10;arima(x = lh, order = c(3, 0, 2), transform.pars = FALSE, fixed = c(NA, 0, NA, &#10; NA, NA, NA))&#10;&#10;Coefficients:&#10; ar1 ar2 ar3 ma1 ma2 intercept&#10; 0.4367 0 -0.2255 0.2294 0.0742 2.3935&#10;s.e. 0.4278 0 0.1560 0.4537 0.2919 0.1008&#10;&#10;sigma^2 estimated as 0.1776: log likelihood = -26.97, aic = 65.93&#10;&lt;/code&gt;&lt;/pre&gt;&#10;&lt;p&gt;arima()中fixed=c(NA,0,NA,NA,NA,NA)的长度为6，与不缺项的ARMA（3,2）模型的参数个数相同。第二个参数为0，意思是把6个参数中的第二个参数固定为0。transform.pars = FALSE是一个辅助项。&lt;/p&gt;&#10;&lt;p&gt;当然了，如果你愿意，也可以将参数固定为其它数值，比如0.5,0.6之类的，这些都无伤大雅。&lt;/p&gt;&#10;</description></item></channel></rss>