在时间序列上反转ARMA模型以获得R中的残差

时间:2012-09-18 08:24:37

标签: r time-series

这似乎是一个显而易见的事情,但我找不到这样做的功能:

我有一系列观察时间,例如x_t,以及由AR系数给出的ARMA模型规范,例如\ alpha_1,...,& \ alpha_p和MA系数\ beta_1,...,\ beta_q。我想计算驾驶创新的载体,比如说e_t。

我已经阅读了过滤器的帮助,但它似乎与我需要的相反(即需要创新和系数并计算观察结果)。

我可以通过将系统写为Ax = Be然后使用B ^ { - 1} Ax来实现这一点,但是对于大型系列需要时间,我担心反演的数值稳定性。

我们可以使用

生成样本观察
 ts1 <- arima.sim(model=list(AR=0.5, MA=0.5), n=10)

然后我们如何找到创造观察结果的创新?

2 个答案:

答案 0 :(得分:0)

认为我过度思考这个问题 - 通过递归在第一次观察之前对白噪声术语进行假设,这很容易解决。

显然这会在R中产生一个循环。

解决方法就是使用     华宇 同     固定 设置为您的建模参数。

答案 1 :(得分:0)

正如@evilphil建议的那样,只需使用带有固定参数的arima()即可。这是一个例子:

ts1 <- arima.sim(model=list(ar=0.5, ma=0.5), n=10)
fit <- arima(ts1, order=c(1,0,1), fixed=c(.5,.5,0))
res <- residuals(fit)

但是,由于初始化的影响,这实际上不会给出arima.sim()中使用的创新。然而,对于一个很长的系列,它们将与前几个值非常接近。