如果可能的话,我会对 R 中的数学框架和代码感兴趣。
如果我已经指定了两个时间序列之间的某个互相关值加上它们各自的自相关,基本上我想找出两个 AR(p) 模型的参数。
提前致谢!
如果可能的话,我会对 R 中的数学框架和代码感兴趣。
如果我已经指定了两个时间序列之间的某个互相关值加上它们各自的自相关,基本上我想找出两个 AR(p) 模型的参数。
提前致谢!
您可以按如下方式定义数据生成过程:
R 函数MASS::mvrnorm或mvtnorm::rmvnorm可用于从多元高斯分布生成绘图。
下面的代码从上面定义的模型生成几个系列rhos并将每对系列之间的相关性存储在对象中。扰动项的协方差矩阵用值定义,和.
require("mvtnorm")
set.seed(123)
sigma <- diag(c(2,3))
sigma[1,2] <- sigma[2,1] <- 0.8
n <- 200
niter <- 1000
rhos <- rep(NA, niter)
for (i in seq_len(niter))
{
eps <- mvtnorm::rmvnorm(n = n, mean = rep(0, 2), sigma = sigma)
x1 <- arima.sim(n = n, model = list(ar = c(0.7)), innov = eps[,1])
x2 <- arima.sim(n = n, model = list(ar = c(-0.4)), innov = eps[,2])
rhos[i] <- cor(x1, x2)
}
summary(rhos)
# Min. 1st Qu. Median Mean 3rd Qu. Max.
# 0.00732 0.13480 0.16990 0.16690 0.19990 0.31280
可以查到两者之间的相关性和当两个系列都遵循 AR(1) 过程时,由下式给出:
对于示例的参数值,我们有:
sd1 <- sqrt(2 / (1 - 0.7^2))
sd2 <- sqrt(3 / (1 - 0.4^2))
(0.8/(1 + (0.7*0.4))) / (sd1 * sd2)
# [1] 0.1670049
这与在小型模拟练习中获得的相关性平均值一致。