時系列データの分析で使う「自己相関」とは。特徴を理解してデータの性質を理解しよう

自己相関 時系列

はじめに

時系列データの分析において、自己相関(Autocorrelation)は非常に重要な概念です。自己相関を理解することで、データの性質やパターンを把握し、適切なモデルを選択する手助けとなります。

自己相関は、時系列分析をする際には傾向を分析するためによく確認されます。

時系列データは世の中に多く存在しますが、この部分は非常に複雑で難しいため、これらについて理解が難しい場合は、経験豊富な方とマンツーマンで学習していくのもオススメです。

自己相関の基本概念

自己相関とは、ある時点のデータと異なる時点のデータとの間に存在する相関関係を指します。

時系列データでは、時間の経過に伴うデータの変動を観察しますが、自己相関はその変動パターンが過去のデータとどれだけ関連しているかを示します。自己相関が高い場合、過去の値が現在の値に強く影響を与えていることを意味します。

自己相関の計算方法

自己相関を計算するための基本的な手法は、自己相関関数(ACF: Autocorrelation Function)を用いることです。

自己相関関数は、時系列データのラグ(遅延)に対する自己相関係数を計算します。ラグとは、データの時点間の遅延を表し、例えばラグ1は一つ前の時点との相関を示します。

$$ \rho_k = \frac{\sum_{t=k+1}^{n} (x_t – \bar{x})(x_{t-k} – \bar{x})}{\sum_{t=1}^{n} (x_t – \bar{x})^2} $$

ここで、\( \rho_k \)​はラグ\( k \)​における自己相関係数、\( x_t \)​​は時点\( t \)​のデータ、\( \bar{x} \)​はデータの平均値、\( n \)​はデータの総数を表します。

自己相関の使い方

  1. 時系列データの分析: 自己相関は、時系列データの分析において特に役立ちます。例えば、株価のデータや気象データなど、時間の経過に応じて変化するデータの相関関係を調べることができ、自己相関関数を計算することで、データ内のパターンやトレンドを特定することができます。
  2. 季節性の特定: 自己相関は、季節性を持つデータの特定にも使用されます。季節性を持つデータでは、特定の期間や季節において類似したパターンが現れる傾向があります。自己相関関数を使って、データが周期的にどの程度相関しているかを調べることができます。
  3. ノイズの特定: データセットにはしばしばノイズが含まれていることがあります。自己相関を計算することで、ノイズの存在やパターンを特定することができます

自己相関の例

今回はyahoo!financeにあるMicrosoftの株価データを見てみます。

まずはデータを読み込み、時系列で表示してみます。こちらは日次のデータとなります。

import pandas as pd
import matplotlib.pyplot as plt
from statsmodels.graphics.tsaplots import plot_acf, plot_pacf
import yfinance as yf

# Yahoo FinanceからMSFTの株価データを取得
ticker = 'MSFT'
df = yf.download(ticker, start='2020-01-01', end='2023-12-31')

# データの前処理
df = df['Close']  # 終値のみを使用

plt.figure(figsize = (12, 4))
plt.plot(df) # 時系列で表示
plt.ylabel('Stock Price')
plt.show()

あまり、周期的に時系列が並んでいるようには見えません。この時、周期的になっていれば自己相関係数が高くなります。

fig, ax = plt.subplots(2, 1, figsize=(12, 8))

# 自己相関のプロット
plot_acf(df, lags=30, ax=ax[0])
ax[0].set_title('MSFT Stock Price Autocorrelation')
ax[0].set_xlabel('Lags')
ax[0].set_ylabel('Autocorrelation')

# 偏自己相関のプロット
plot_pacf(df, lags=30, ax=ax[1])
ax[1].set_title('MSFT Stock Price Partial Autocorrelation')
ax[1].set_xlabel('Lags')
ax[1].set_ylabel('Partial Autocorrelation')

plt.tight_layout()
plt.show()

下記が自己相関の結果になります。

上側が自己相関係数、下側が偏自己相関係数の結果となります。自己相関係数は、他のラグの影響を受けるため、全体的な相関を示します。

一方、説明は避けますが偏自己相関係数は特定のラグ間の純粋な相関を示すため、より正確な相関関係を確認できます。

今回の結果から、lag1のみが影響するという結果になりました。昨日のデータにしか左右されないということです。

自己相関係数(上側)と偏自己相関係数(下側)の結果

自己相関の特徴

自己相関は、時系列データの分析に有効で、データの季節性やパターン、ノイズの検出に役立ちます。

自己相関関数を使うことで、データのタイムラグや相関の強さを評価し、未来の値を予測するモデル構築にも活用できます。

時系列を分析する際には、しっかりと自己相関を分析することを通し、これらを確認しながらロジカルで意味のある予測や分析につなげることが重要です。

まとめ

自己相関分析は、さまざまな分野で幅広く活用されており、データ解析や予測モデリングの基盤となる重要な手法です。この自己相関の分析はARモデルARIMAモデルのパラメータの推定にも参考になります。

データの相関関係を理解し、パターンやトレンドを特定するために、自己相関を積極的に確認することが重要です。

自己相関や時系列分析を学びたい方にオススメの方法

Pythonによる時系列分析

こちらの書籍は様々なビジネス実例も含めながら時系列分析を網羅的に学ぶことができます。初心者の方にもビジネス活用したい方にもおススメです。

動画や資格などもおすすめ

統計学という分野を学ぶことで今回の自己相関などを網羅的に学ぶことができます。Udemyなど便利な動画プラットフォームもあるので、こちらの記事にて参考にしてみてください。

独学で統計学を習得する勉強法とは。レベル感ごとに書籍などを紹介
はじめに統計学はデータを理解し、分析するための強力なツールです。ビジネス、科学研究、マーケティングなど、多くの分野で統計学の知識が求められています。私は10年近くAIや統計の学習をしてきましたが、独学で勉強することも多かったため、...

コメント

Copied title and URL