自己相関を計算する
自己相関(遅れ相関)は、時系列がその過去に依存しているかを評価するために使われます。長さ n の時系列 x について、時間差が1の観測ペアを n-1 組考えます。最初のペアは (x[2],x[1])、次は (x[3],x[2]) です。これらはすべて観測インデックス t を用いて (x[t],x[t-1]) と表せ、ここでは t を 2 から n まで動かします。x のラグ1自己相関は、これらの (x[t], x[t-1]) ペアの標本相関として推定できます。
一般には、これらの観測ペアを手作業で作成できます。まず、長さがそれぞれ n-1 の 2 つのベクトル x_t0 と x_t1 を作り、各行が (x[t], x[t-1]) のペアに対応するようにします。続いて cor() 関数を適用して、ラグ1自己相関を推定します。
幸い、acf() コマンドを使うと近道ができます。系列 x に対して acf(..., lag.max = 1, plot = FALSE) を適用すると、ラグ1自己相関を自動で計算します。
最後に、2 つの推定値がわずかに異なる点に注意してください。これは、標本共分散の計算で 1/(n-1) と 1/n という異なるスケーリングを用いるためです。後者は不偏ではありませんが、時系列解析ではこちらが好まれることが多く、得られる自己相関の推定値は係数 (n-1)/n の違いだけになります。
この演習では、ラグ1自己相関の手動計算と自動計算の両方を練習します。時系列 x とその長さ n(150)はすでに読み込まれており、右のプロットに表示されています。
この演習はコースの一部です
Rで学ぶ時系列分析
演習の手順
- 長さがそれぞれ
n-1の 2 つのベクトルx_t0とx_t1を作成し、各行が(x[t], x[t-1])のペアに対応するようにします。 - 事前に用意されたコードを使って、
x_t0とx_t1が(x[t], x[t-1])のペアになっていることを確認します。 plot()を使って、x_t0とx_t1の散布図を表示します。cor()を使って、x_t0とx_t1の相関を表示します。xに対してacf()を使い、ラグ1自己相関を自動で計算します。lag.max引数を1に設定して 1 期間のラグのみを計算し、plot引数はFALSEに設定します。- 事前に用意されたコードを使って、差分の係数が
(n-1)/nであることを確認します。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# Define x_t0 as x[-1]
x_t0 <-
# Define x_t1 as x[-n]
x_t1 <-
# Confirm that x_t0 and x_t1 are (x[t], x[t-1]) pairs
head(cbind(x_t0, x_t1))
# Plot x_t0 and x_t1
plot(___, ___)
# View the correlation between x_t0 and x_t1
cor(___, ___)
# Use acf with x
acf(___, lag.max = ___, plot = ___)
# Confirm that difference factor is (n-1)/n
cor(x_t1, x_t0) * (n-1)/n