1

こんにちは、ラグ u、u = 1...9 で自己相関を計算してみました

9x1 の自己相関関数を期待しています。ただし、このコードを使用しようとすると、常に最初の項 = 1 の 10x1 自己相関関数が返されます。どうすればよいかわかりません。

# 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 =maxlog(forループの最後のステップ)

  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 に答える