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

在时间序列上反转ARMA模型以获得R中的残差,r,time-series,R,Time Series,这似乎是一件显而易见的事情,但我找不到一个函数: 我有一个观测的时间序列,比如x_t,和一个由AR系数给出的ARMA模型规范,比如\alpha_1,,&\alpha_p和MA系数\beta_1,,\beta_q。我想计算推动创新的向量,比如e_t 我已经阅读了过滤器的帮助,但它似乎与我需要的相反(即,它需要创新和系数,并计算观察结果) 我可以通过将系统写成Ax=Be,然后使用B^{-1}Ax来实现这一点,但是对于大型序列,这需要时间,我担心反演的数值稳定性 我们可以使用 ts1 <- a

这似乎是一件显而易见的事情,但我找不到一个函数:

我有一个观测的时间序列,比如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)

ts1我想我想得太多了-很容易解决这个问题,在第一次观察之前,通过递归假设白噪声项

显然,这在R中给出了一个循环

一个变通方法是使用 阿里玛 具有 固定的
设置您的建模参数。

我想我是想得太多了-解决这个问题很容易,在第一次观察之前,通过递归假设白噪声项

显然,这在R中给出了一个循环

一个变通方法是使用 阿里玛 具有 固定的
设置您的建模参数。

正如@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)

ts1正如@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)
ts1