コンテンツにスキップ

自己相関と偏自己相関を求める

何期前の値が今の値に効いているかを調べます。ARMA や ARIMA のパラメータ(p と q)を決める手がかりになります。

入出力

ポート内容
入力データデータ
出力データデータ

コレログラム(ACF と PACF を上下に並べた棒グラフ)は画面に出ません。 中では作っていますが、そのポートはノードに描かれず、表としても取り出せません。読むのは下の表です。

Spark エンジンでは動きません。

入力の行はそのままでは残りません。 出力は、ラグごとに 1 行の別の表になります。

出力の形

出力は、次の 3 列です。

列名内容
ラグ何期前か
自己相関係数そのラグの ACF
偏自己相関係数そのラグの PACF

行数は「最大ラグ数 + 1」です。 ラグ は 0 から始まり、ラグ 0 の自己相関係数は必ず 1 になります(自分自身との相関なので)。読むのは 1 期目からです。

最大ラグ数は行数の半分未満にする必要があります。 既定の 40 のままだと 82 行以上のデータが要ります。足りないと英語のエラーで止まります(「最大ラグ数には上限があります」を参照)。

設定項目

処理対象列を選択必須
調べる列。数値の列だけ選べます。1 列だけです。
日付列を選択必須
並べ替えの軸。日付・日付時間・時間の列だけ選べます。
最大ラグ数を入力必須
何期前まで調べるか。既定は 40。行数の半分未満にする必要があります(下の「最大ラグ数には上限があります」を参照)。

入力の行順は問いません。 中で日付の昇順に並べ替えてから計算します。

日付の間隔は計算に入りません。 日付列は並べ替えにしか使われず、ラグは「何行前か」で数えます。日付が抜けていると、ラグと実際の時間がずれます。先に連続数値、日付の補間で行を揃えてください。

2 つの指標の違い

指標見るもの
自己相関(ACF)n 期前との関係(間の期の影響も含む)
偏自己相関(PACF)間の期の影響を除いた、n 期前だけとの関係

使い分けの目安

  • PACF が切れるところが p(自己回帰の次数)
  • ACF が切れるところが q(移動平均の次数)
  • ACF が周期的に大きくなるなら、季節性がある(SARIMA の s の目安)

最大ラグ数には上限があります

偏自己相関は、行数の半分未満のラグまでしか計算できません。 超えると、訳されていない英語のまま止まります。

必要な行数は次の式で決まります。

行数 ≧ 最大ラグ数 × 2 + 2

最大ラグ数必要な行数
716 行以上
1226 行以上
1736 行以上
2450 行以上
3674 行以上
40(既定)82 行以上

行数ぎりぎりまで上げると、後ろの方のラグは比べる組が少なく、値が不安定になります。知りたい周期の 2〜3 倍(月次で年の波を見るなら 24〜36)を目安に、上の表の行数が足りているか確かめてください。

エラーと対処

最大ラグ数が行数の半分以上

最大ラグ数が 行数 ÷ 2(切り捨て)以上のときに出ます。訳されていない英語のまま出ます。

Can only compute partial correlations for lags up to 50% of the sample size. The requested nlags 40 must be < 18.

nlags 40 が入れた値、< 18 が上限(この例では 36 行なので 18)です。

直し方 — 最大ラグ数を入力を 上限 − 1(この例では 17)以下にしてください。データ集計で日次を月次にまとめている場合は、まとめる前のデータで調べ直す手もあります。

処理対象列に欠損値がある

処理対象列に欠損値が含まれています。欠損値を除外するか補完してください。

直し方 — 時系列に沿った欠損値処理で埋めるか、欠損値処理で欠損のある行を落としてください。

処理対象列に数値以外がある

処理対象列に数値型以外のデータが含まれてます。型変換をするか、数値型以外の列を除去してください。

直し方 — 列の型変更で数値にしてください。

選んだ列が入力にない

前のノードで列名を変えたり削除したりすると出ます。

対象の列が選択されていません。

直し方 — 処理対象列を選択と日付列を選択を選び直してください。

よく使う例

1. ARIMA のパラメータを決める

p と q をいくつにすればよいか分からないとき。

入力

年月売上
2022-01-01100
2022-02-01115
…(36 か月分)…

設定

設定項目値
処理対象列を選択売上
日付列を選択年月
最大ラグ数を入力12

出力 — 13 行(ラグ 0〜12)の表が出ます。偏自己相関係数 が大きいのがラグ 2 までなら p = 2、自己相関係数 が大きいのがラグ 1 までなら q = 1 が目安です。

2. 季節性があるか調べる

周期的な波があるかどうかを確かめたいとき。

入力 — 例 1 と同じ

設定

設定項目値
最大ラグ数を入力17

出力 — 18 行の表が出ます。ラグ が 12 のところで 自己相関係数 が大きければ、年の季節性があります。SARIMA の 周期成分(s) に 12 を入れる根拠になります。

36 か月では、最大ラグ数は 17 までです。 ラグ 24・36 まで並べて「毎年同じ形で繰り返しているか」を見たいなら、74 か月(約 6 年)以上のデータが要ります。36 か月のまま 36 を入れると、英語のエラーで止まります。

3. 効いているラグだけを表から拾う

しきい値で機械的に選びたいとき。

入力 — 例 1 と同じ

設定 — このノードのあと、条件で行をフィルタで 偏自己相関係数 の絶対値がしきい値を超える行だけに絞ります。

出力 — 効いているラグの一覧が表として残ります。

4. ラグ特徴量を作る手がかりにする

機械学習の特徴量に、効いている期数の過去値を入れたいとき。

入力 — 例 1 と同じ

設定 — 出力から効いているラグ(例: 1 と 12)を読み取り、データを行方向にずらす(ラグ操作)のずらし幅を設定に 1,12 を入れます。

出力 — ずらし幅1_売上 と ずらし幅12_売上 の 2 列ができます。

関連