x13_arima は、オープンソースの X-13ARIMA-SEATS パッケージに基づく季節性時系列予測アルゴリズムです。このアルゴリズムはフィルターのように機能し、入力データに含まれるノイズおよび季節的パターンから、基礎となる信号を分離したうえで、その信号を将来へと外挿して予測値を生成します。
データに明確な季節構造(例:月次売上、四半期収益、週次トラフィックなど)が存在し、モデルの次数(order)を完全に制御したい場合に、x13_arima を使用します。どの次数を指定すべきか不明な場合は、代わりに x13_auto_arima を使用してください。このコンポーネントでは、各次数の上限値のみを指定すれば、x13_auto_arima が自動的に最適な値を探索します。
仕組み
x13_arima は、ARIMA(p,d,q)(P,D,Q)m の形式で表される季節性 ARIMA モデルを適用します:
| 区分 | パラメーター | 意味 |
|---|---|---|
| 非季節成分 | (p,d,q) | 自己回帰次数、差分次数、移動平均次数 |
| 季節成分 | (P,D,Q) | 季節自己回帰次数、季節差分次数、季節移動平均次数 |
| 周期 | m | 1 季節あたりの観測数(例:年間サイクルにおける月次データの場合は 12) |
ARIMA(自己回帰和分移動平均)は、1970 年代初頭に Box および Jenkins によって提唱され、Box-Jenkins モデルとも呼ばれます。
制限事項
| 制限 | 値 |
|---|---|
| グループあたりの行数 | 最大 1,200 レコード |
| 列 | 実行ごとに数値列を 1 列のみ指定可能 |
コンポーネントの設定
方法 1:PAI コンソールでの設定(推奨)
ビジュアルモデリングのパイプラインページで、x13_arima コンポーネントを追加し、以下のパラメーターを設定します。
[フィールド設定] タブ
| パラメーター | 必須 | 説明 |
|---|---|---|
| 時系列列 | はい | 数値列を並べ替えます。値自体には影響しません。 |
| 値列 | はい | 予測対象の数値列です。 |
| 層別化列 | いいえ | カンマ区切りの列名(例:col0,col1)。各グループごとに個別のモデルが適用されます。 |
[パラメータ設定] タブ
| パラメーター | 必須 | 範囲 | デフォルト | 説明 |
|---|---|---|---|---|
| フォーマット (p,d,q) | はい | [0, 36] の非負整数 | — | 非季節 ARIMA 次数。p:自己回帰次数、d:差分次数、q:移動平均次数。 |
| 開始日付 | いいえ | year.season(例:1986.1) | 1.1 | 時系列の開始位置です。「時系列フォーマット」をご参照ください。 |
| 系列周波数 | いいえ | [1, 12] の正の整数 | 12 | 単位期間あたりの観測数です。12 は、年間サイクルにおける月次データを意味します。 |
| フォーマット (sp,sd,sq) | いいえ | [0, 36] の非負整数 | 非季節 | 季節 ARIMA 次数。sp:季節自己回帰次数、sd:季節差分次数、sq:季節移動平均次数。 |
| 季節サイクル | いいえ | (0, 12] | 12 | 季節周期の長さです。 |
| 予測エントリ | いいえ | (0, 120] の正の整数 | 12 | 将来へと予測するステップ数です。 |
| 予測信頼水準 | いいえ | (0, 1) | 0.95 | 予測範囲の信頼区間の幅です。 |
[チューニング] タブ
| パラメーター | 説明 |
|---|---|
| コア数 | コア数です。デフォルトではシステムが自動的に決定します。 |
| メモリ | コアあたりのメモリ量(MB 単位)です。デフォルトではシステムが自動的に決定します。 |
方法 2:PAI コマンドの実行
SQL スクリプトまたはODPS SQL コンポーネントを使用して、x13_arima を直接呼び出します。
PAI -name x13_arima
-project algo_public
-DinputTableName=pai_ft_x13_arima_input
-DseqColName=id
-DvalueColName=number
-Dorder=3,1,1
-Dstart=1949.1
-Dfrequency=12
-Dseasonal=0,1,1
-Dperiod=12
-DpredictStep=12
-DoutputPredictTableName=pai_ft_x13_arima_out_predict
-DoutputDetailTableName=pai_ft_x13_arima_out_detailパラメーター
| パラメーター | 必須 | デフォルト | 説明 |
|---|---|---|---|
inputTableName | はい | — | 入力テーブルの名前です。 |
inputTablePartitions | いいえ | 全テーブル | 入力テーブルから読み込むパーティションです。 |
seqColName | はい | — | 時系列列です。valueColName 列の並べ替えにのみ使用されます。 |
valueColName | はい | — | 予測対象の数値列です。 |
groupColNames | いいえ | — | グループ化列(カンマ区切り、例:col0,col1)。各グループごとに個別のモデルが適用されます。 |
order | はい | — | 非季節次数(p,d,q 形式)。[0, 36] の非負整数です。 |
start | いいえ | 1.1 | 時系列の開始位置(n1.n2 形式)です。「時系列フォーマット」をご参照ください。 |
frequency | いいえ | 12 | 単位期間あたりの観測数です。(0, 12] の範囲。12 は 1 年間に 12 ヶ月あることを意味します。 |
seasonal | いいえ | 非季節 | 季節次数(sp,sd,sq 形式)。[0, 36] の非負整数です。 |
period | いいえ | 同 frequency | 季節周期の長さです。(0, 100] の範囲。 |
maxiter | いいえ | 1500 | トレーニング反復回数の上限です。 |
tol | いいえ | 1e-5 | 収束許容誤差(DOUBLE 型)です。 |
predictStep | いいえ | 12 | 将来へと予測するステップ数です。(0, 365] の範囲。 |
confidenceLevel | いいえ | 0.95 | 予測範囲の信頼水準です。(0, 1)の範囲。 |
outputPredictTableName | はい | — | 予測結果の出力テーブルです。 |
outputDetailTableName | はい | — | モデル詳細の出力テーブルです。 |
outputTablePartition | いいえ | パーティションなし | 出力テーブルのパーティション仕様です。 |
coreNum | いいえ | システムデフォルト | コア数です。正の整数である必要があります。memSizePerCore と併用します。 |
memSizePerCore | いいえ | システムデフォルト | コアあたりのメモリ量(MB 単位)です。[1024, 65536] の範囲。 |
lifecycle | いいえ | — | MaxCompute における出力テーブルのライフサイクルです。 |
デフォルトのリソース割り当て
| 条件 | coreNum | memSizePerCore |
|---|---|---|
groupColNames 未設定 | 1 | 4096 MB |
groupColNames 設定済み | floor(total rows / 120,000) | 4096 MB |
時系列フォーマット
start および frequency パラメーターは、データをカレンダー時間にマッピングする方法を共同で定義します。データを、2 段階のカレンダー(上位単位 ts1(例:年)および下位単位 ts2(例:月))に配置された値のシーケンスとして考えます。
frequency—ts2下位単位がts1上位単位あたりにいくつあるかstart—n1.n2の形式で記述され、これはn2番目のts2がn1番目のts1内にあることを意味します
| 粒度 | ts1 | ts2 | frequency | start の例 |
|---|---|---|---|---|
| 月次 | 年 | 月 | 12 | 1949.2 = 1949 年 2 月 |
| 四半期 | 年 | 四半期 | 4 | 1949.2 = 1949 年第 2 四半期 |
| 日次(週単位サイクル) | 週 | 日 | 7 | 1949.2 = 1949週目の2日目 |
| カスタム単一単位 | 任意 | — | 1 | 1949.1 = 1949 番目の単位 |
例
この例では、1949 年から 1960 年までの国際線航空便の乗客数を月別に記録した AirPassengers データセットを使用しています。データセットの詳細については、「AirPassengers (R datasets)」をご参照ください。
入力テーブルの準備
入力テーブルには、2 つの列があります:id(シーケンス番号)および number(旅客数)です。
| id | number |
|---|---|
| 1 | 112 |
| 2 | 118 |
| 3 | 132 |
| 4 | 129 |
| 5 | 121 |
| ... | ... |
テーブルを作成し、MaxCompute クライアントを使用してデータをアップロードします。インストール手順については、「MaxCompute クライアント (odpscmd)」をご参照ください。トンネル コマンドの使用方法については、「トンネル コマンド」をご参照ください。
create table pai_ft_x13_arima_input(id bigint, number bigint);
tunnel upload xxxx/airpassengers.csv pai_ft_x13_arima_input -h true;このデータセットは、1949 年 1 月から始まる月次データであるため、start=1949.1 および frequency=12 を使用します。以下の表は、14 個の値 [1, 2, 3, ..., 15] を start=1949.3 および frequency=12(1949 年 3 月から始まる月次データ)でマッピングした場合の例です:
| 年 | 1 月 | 2 月 | 3 月 | 4 月 | 5 月 | 6 月 | 7 月 | 8 月 | 9 月 | 10 月 | 11 月 | 12 月 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1949 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | ||
| 1950 | 11 | 12 | 13 | 14 | 15 |
以下の例では、同じ値のシーケンス [1, 2, 3, ..., 15] を使用して、四半期、週次、および単一単位の粒度における時系列マッピングを示します:
四半期(frequency=4、start=1949.3)
| 年 | Q1 | Q2 | Q3 | Q4 |
|---|---|---|---|---|
| 1949 | 1 | 2 | ||
| 1950 | 3 | 4 | 5 | 6 |
| 1951 | 7 | 8 | 9 | 10 |
| 1952 | 11 | 12 | 13 | 14 |
| 1953 | 14 | 15 |
予測は 1953 年第 2 四半期から開始されます。
週単位サイクルの日次(frequency=7、start=1949.3)
| 週 | 日 | 月 | 火 | 水 | 木 | 金 | 土 |
|---|---|---|---|---|---|---|---|
| 1949 | 1 | 2 | 3 | 4 | 5 | ||
| 1950 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
| 1951 | 13 | 14 | 15 |
予測は、1951週目の4日目から開始されます。
単一単位(frequency=1、start=1949.1)
| サイクル | p1 |
|---|---|
| 1949 | 1 |
| 1950 | 2 |
| 1951 | 3 |
| 1952 | 4 |
| 1953 | 5 |
| 1954 | 6 |
| 1955 | 7 |
| 1956 | 8 |
| 1957 | 9 |
| 1958 | 10 |
| 1959 | 11 |
| 1960 | 12 |
| 1961 | 13 |
| 1962 | 14 |
| 1963 | 15 |
予測は 1963 年から開始されます。
PAI コマンドの実行
SQL スクリプト または ODPS SQL コンポーネントを使用して、次のコマンドを実行します:
PAI -name x13_arima
-project algo_public
-DinputTableName=pai_ft_x13_arima_input
-DseqColName=id
-DvalueColName=number
-Dorder=3,1,1
-Dseasonal=0,1,1
-Dstart=1949.1
-Dfrequency=12
-Dperiod=12
-DpredictStep=12
-DoutputPredictTableName=pai_ft_x13_arima_out_predict
-DoutputDetailTableName=pai_ft_x13_arima_out_detail出力テーブル
outputPredictTableName — 予測結果
| 列 | 説明 |
|---|---|
pdate | 予測日付です。 |
forecast | 予測値です。 |
lower | 信頼区間の下限(デフォルト:95%)です。 |
upper | 信頼区間の上限(デフォルト:95%)です。 |

outputDetailTableName — モデル詳細
| 列 | 説明 |
|---|---|
key | レコードタイプです:model(モデル仕様)、evaluation(評価メトリック)、parameters(トレーニングパラメーター)、または log(トレーニングログ)。 |
summary | 対応する key の詳細内容です。 |

よくある質問
すべての予測結果が同じ値になるのはなぜですか?
モデルが平均モデルにフォールバックしており、すべての予測ステップに対してトレーニングデータの平均値を出力しています。これは、時系列差分後の不安定性、収束失敗、または分散がゼロであるなどの理由によりトレーニングが失敗した場合に発生します。正確なエラーを確認するには、ジョブの Logview を開き、個々のノードの stderr ファイルを確認してください。
p、d、q、sp、sd、sq の値をどのように選択すればよいですか?
パラメーター設定に自信がない場合は、代わりに x13_auto_arima を使用してください。各次数の上限値のみを設定すると、x13_auto_arima が自動的に最適な値を探索します。
エラー:`Number of observations after differencing and/or conditional AR estimation is 9, which is less than the minimum series length required for the model estimated, 24`
指定されたモデルに対してトレーニングデータが短すぎます。frequency パラメーターを変更するか、より多くの過去のデータを追加してください。
エラー:`Order of the MA operator is too large`
ほとんどの場合、このエラーはトレーニングデータが不十分であるために発生します。トレーニングデータを追加してください。
エラー:`Series to be modelled and/or seasonally adjusted must have at least 3 complete years of data`
季節パラメーター(seasonal)を指定する場合、入力データには少なくとも 3 年分の完全なデータが必要です。
次のステップ
x13_auto_arima — 指定した上限内で SARIMA 次数を自動的に選択
SQL スクリプト — パイプライン内で PAI コマンドを実行
MaxCompute クライアント (odpscmd) — MaxCompute テーブルにデータをアップロード