始める無料で始める

自己相関を計算する

自己相関(遅れ相関)は、時系列がその過去に依存しているかを評価するために使われます。長さ 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_t0x_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_t0x_t1 を作成し、各行が (x[t], x[t-1]) のペアに対応するようにします。
  • 事前に用意されたコードを使って、x_t0x_t1(x[t], x[t-1]) のペアになっていることを確認します。
  • plot() を使って、x_t0x_t1 の散布図を表示します。
  • cor() を使って、x_t0x_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
コードを編集して実行