Matlab中的创新算法

时间:2016-06-18 02:44:46

标签: r time-series matlab

这看起来似乎是一个简单的任务,但是通过Matlab中的“预测”文档我发现这看起来不必要地复杂,所以我可能看错了方向。

假设我有'数据':

$ X_ {1},\ ldots,X_ {10} $ = {4.5368,5.8243,5.4501,5.6528,4.3195,4.0114,2.4993,2.2201,1.3771,0.7707}。

我相信我可以使用ARMA(p,q)(或ARIMA(p,d,q))模型来拟合这些数据。例如,我想为这个数据拟合ARMA(2,3)模型,即

$ X_ {t} - \ phi_ {1} X_ {t-1} - \ phi X_ {t-2} = Z_ {t} + \ theta_ {1} Z_ {t-1} + \ theta_ { 2} Z_ {t-2} + \ theta_ {3} Z_ {t-3} $,其中$ Z_ {t} \ sim WN(0,1)$。

我可以手动完成创新算法,但对于大型数据集,这变得不可能。有没有办法在Matlab中做到这一点?特别是,我想检查预测变量$ \ hat {X} _ {4},\ ldots,\ hat {X} _ {10} $。 (可能还有计算过程中的其他值。)如何使用“预测”(或其他一些功能)?

我尝试使用“估计”:

[EstMdl,EstParamCov,logL,info] = estimate(arima('ARLags',1:2,'D',0,'MALags',1:3,'Constant',0),data);

然后预测三个值:

predict(EstMdl,data,3)

但显然Matlab并没有将'EstMdl'作为一个有效的模型(虽然'EstMdl'在预测$ X_ {11},X_ {12},\ ldots $时使用“预测”功能:[y,ymse ] =预测(EstMdl,3, 'Y0',数据))。

我需要求助于“idpoly”,“armax”或“idss”来定义模型?怎么做?

顺便说一句:我使用$ \ phi_ {1} = 1,\ phi_ {2} = - 0.24,\ theta_ {1} = 0.4,\ theta_ {2} = 0.2,\ theta_在R中生成'数据' {3} = 0.1 $。

data<-arima.sim(n = 10, list(ar = c(1,-0.24), ma = c(0.4,0.2,0.1)),sd = sqrt(1))

也欢迎R的解决方案。

0 个答案:

没有答案