1

嗨,我尝试用滞后 u 计算自相关,u = 1...9

我期望 9x1 自相关函数。但是,当我尝试使用此代码时,它总是给我 10x1 自相关函数,第一项 = 1。我不知道如何继续。

# initialize a vector to store autocovariance
maxlag <- 9
varstore <- rep(NA,maxlag)
# Calculate Variance
varstore[1] <- sd(as.vector(sample1),na.rm=T)^2

# Estimate autocovariances for all residuals
for (lag in 1:maxlag)
  varstore[lag+1] <- mean(sample1[,1:(10-lag)] * 
                         sample1[,(lag+1):10],na.rm=T)
print(round(varstore,3))
# calculate autocorrelations
corrstore <- varstore/varstore[1]
print(corrstore)

这就是我得到的:

[1] 1.0000000 0.6578243 0.5670389 0.5292314 0.5090411 0.4743944 0.4841038 0.4756297
[9] 0.4275208 0.4048436
4

1 回答 1

3

由于回收,你得到一个长度为 10 的向量。

for lag =maxlogfor循环的最后一步)

  varstore[lag+1]  

将使用 NA 创建一个新条目。要清楚地看到这一点,请尝试以下示例:

v <- NA      ## a vector of length 1
v[10] <- 2
v
[1] NA NA NA NA NA NA NA NA NA  2   ## you get a vector of legnth 10!!

也就是说,你为什么要一个长度为 9 的向量?为什么不使用该acf功能?这里是acf函数的输出:

length(acf(1:10)$lag)
[1] 10
于 2013-03-23T10:31:36.460 回答