3

我有一个时间序列问题,我可以很容易地手动解决,只是它需要很长时间,因为我有 4 个不同的AR(2)进程并且想要为每个进程计算至少 20 个滞后。

我想要做的是使用 Yule Walker 方程来计算 rho,如下所示:

我有一个二阶自回归过程,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 中解决这个问题,但我不知道如何开始,有人可以帮我吗?

4

1 回答 1

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, and number of lag = 20

AR2(Zt,0,0.6,0.4,20)

于 2013-12-20T06:06:04.033 回答