我有一个时间序列问题,我可以轻松地手动解决,只是需要很长时间,因为我有4个不同的AR(2)
进程,并且想要计算每个至少20个滞后。
我想要做的是使用yule的Yule Walker方程如下:
我有二阶自动回归过程AR(2)
。 Phi(1)
为0.6,Phi(2)
为0.4。
我想计算所有滞后rho(k)
的相关系数k = 20
。
所以rho(0)
自然会是1和rho(-1) = rho(1)
。因此
rho(1) = phi(1) + phi(2)*rho(1)
rho(k) = phi(1)*rho(k-1) + phi(2)*rho(k-2)
现在我想在R中解决这个问题,但我不知道如何开始,有人可以帮助我吗?
答案 0 :(得分:0)
您可以使用R语言尝试我的程序,
在R脚本中:
AR2 <- function(Zt,tetha0,phi1,phi2,nlag)
{
n <- length(Zt)
Zbar <- mean(Zt)
Zt1 <- rep(Zbar,n)
for(i in 2:n){Zt1[i] <- Zt[i-1]}
Zt2 <- rep(Zbar,n)
for(i in 3:n){Zt1[i] <- Zt[i-2]}
Zhat <- tetha0+phi1*Zt1+phi2*Zt2
error <- Zt-Zhat
ACF(error,nlag)
}
ACF <- function(error,nlag)
{
n <- length(error)
rho <- rep(0,nlag)
for(k in 1:nlag)
{
a <- 0
b <- 0
for(t in 1:(n-k)){a <- a+(error[t]*error[t+k])}
for(t in 1:n){b <- b+(error[t]^2)}
rho[k] <- a/b
}
return(rho)
}
在R控制台中:
让你有一个Zt系列,tetha(0)= 0,phi(1)= 0.6,phi(2)= 0.4,滞后数= 20AR2(ZT,0,0.6,0.4,20)