自己相関と偏自己相関を求める
何期前の値が今の値に効いているかを調べます。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
| 最大ラグ数 | 必要な行数 |
|---|---|
| 7 | 16 行以上 |
| 12 | 26 行以上 |
| 17 | 36 行以上 |
| 24 | 50 行以上 |
| 36 | 74 行以上 |
| 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-01 | 100 |
| 2022-02-01 | 115 |
| …(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 列ができます。