はじめに
「来月の外来患者数はどれくらいになるだろう?」「季節によって売り上げが変わるのはわかっているけど、具体的な数字が欲しい」
こんな悩みを抱えたことはありませんか?
実はこうした時系列データの未来予測は、ARIMAモデルを使うと実現できます。しかも今は、RやPythonといったプログラミング言語を使わなくても、無料の統計ソフトJASPがあればマウス操作だけで予測まで完結できる時代になっています。
前回・前々回の記事では、ARIMAモデルを使う前提として欠かせない「定常性」という概念と、JASPを使った定常性の確認・変換方法をご紹介しました。
いよいよ今回は本番です。定常化したデータをARIMAモデル(正確にはSARIMAXモデル)に投入し、実際に未来を予測する手順をJASPを使って紹介していきます。
SARIMAXモデルで出来ること
ARIMAモデルの拡張版であるSARIMAXモデルは、以下のような複雑な変動パターンを持つデータの予測が得意です。
少ないデータでも予測できる
LSTMなどのディープラーニング系モデルは、十分な予測精度を得るために大量のデータを必要とします。一方、SARIMAXは統計モデルであるため、数十〜数百件程度のデータでも実用的な予測が可能です。
データを意思決定に活かす取り組みが広まったのは比較的最近のことです。そのため、まだデータの蓄積期間が短い職場も多いのではないでしょうか。そういった環境では、ディープラーニング系モデルよりもSARIMAXのようなシンプルな統計モデルのほうが、現実的な選択肢になることが多いです。
季節性のある変化への対応
毎年夏になると患者数が増える、年末に売上が伸びる、といった周期的な変動(季節性)をモデルに組み込んで予測できます。季節性の例としては以下のようなものがあげられます。
- 毎年冬になると感染症により外来患者数が増える
- 週末になると店舗の売り上げが上がる
イベントの影響を取り込んだ予測
「感染症が流行したとき」「セール期間中」「祝日が多い月」といった特定のイベントが数値に与える影響を、追加データ(共変量)として組み込むことで精度の高い予測が可能になります。たとえば「インフルエンザの流行が外来受診件数を押し上げる」というような関係性をモデルに反映できるということです。
「予測の不確実性(信頼区間)も出力できる」
SARIMAXモデルは、単に「来月は100件」といった点予測だけでなく、「おそらく80〜120件の範囲に収まる」といった予測区間も合わせて出力できます。 予測には必ず誤差が伴います。予測区間があることで「最悪どこまで下がりうるか」「最大どこまで伸びうるか」を見積もることができ、より現実的な意思決定に活かせます。点予測だけを鵜呑みにするリスクを減らせるという点で、実務での活用価値が高い機能です。
モデルの自動選択(AutoARIMA)が使える
これはSARIMAXモデルというよりJASPができることですが、自動選択が利用できます。
SARIMAXモデルのパラメータ(p・d・q・P・D・Q)は、本来であればACFやPACFのコレログラムを読み解きながら手動で決定する必要があります。これはある程度の統計的な知識と経験が必要な作業です。
しかしJASPのAutoARIMA機能を使えば、これらのパラメータをソフトが自動的に探索・選択してくれます。「統計の専門家でなくても、まず予測を試してみる」という入口として、非常に使いやすい機能です。もちろん、知識が身についてきたら手動設定に切り替えて精度を追求することもできます。
SARIMAXモデルで出来ないこと
万能に見えるSARIMAXモデルですが、いくつかの明確な限界があります。使う前に把握しておきましょう。
途中でトレンドや変動の大きさが変わるデータ
上がったり下がったりを繰り返しながら、トレンドの方向が途中で変わるようなデータはうまく扱えません。SARIMAXモデルが想定するのは、一定のルールに従って変化し続けるデータです。
下のグラフのように途中で増減のパターンが変化しているデータは、ARIMAモデルが苦手なデータです。

イベントとデータの関係が非線形なケース
SARIMAXモデルで外部データ(共変量)を扱う際、基本となるのは「足し算・掛け算」で表せるような直線的な関係です。そのため、次のような複雑な非線形の変化を捉えるのは得意ではありません。
- 閾値(しきい値)による急変: ある値を超えた瞬間に、結果がガラッと変わる。
- 影響の強さに上限・下限がある:
外部データが特定の範囲では強く影響するが、低すぎたり高すぎたりすると影響が弱くなるような関係。
文字だけだとわかりにくいですね。まず閾値による急変について、寒冷地の集客予測を例に考えてみましょう。「気温が0度以下(雪)なら足元が悪くないので客足は安定するが、0度を超えた瞬間(雨)に濡れるのを嫌がって客足が激減する」といった急激な変化は、SARIMAXの数式だけではうまく表現しきれないのです。

chatgptで生成
影響の強さに上限・下限がある場合も、具体例で考えてみます。体重(外部データ)と運動パフォーマンス(分析対象のデータ)ではどうでしょう。
体重が減りすぎると体力が続きません。しかし、太りすぎても体が重くなり、思うように動けなくなります。つまり、運動パフォーマンスが最も高くなるのは「ほどよい体格」のときです。体重が少なすぎても、多すぎてもパフォーマンスは下がってしまいます。
このように、「外部データが増えれば分析対象のデータも増える」といった単純な関係では表せないケースは、SARIMAXモデルではうまく扱えない場合があります。

なお、線形・非線形という言葉は、データ分析における非常に重要な概念の一つです。詳しく知りたいい方向けに、こちらの記事でグラフを用いて紹介しています。
線形と非線形の違いとは?統計やデータサイエンスでの意味と違いをグラフでやさしく解説(医療職向け)
複数の周期が混在するデータ
たとえばアイスクリームの売り上げのように、「週末に売れる(週単位の周期)」かつ「夏に売れる(年単位の周期)」という2つ以上の周期が混在するデータは、SARIMAXモデルには荷が重いです。
こうした複数の季節性を持つデータには、気温データなどを追加データとして組み込んで一方の周期を吸収するという工夫も不可能ではありませんが、手間がかかります。このようなケースではFacebookのProphetやLSTMなどのディープラーニング系モデルが適しています。
実際の手順
データの準備・メニューの準備
まずはデータの準備からです。準備するデータのポイントは以下の3つです。
- ファイル形式はCSVファイルやExcelファイル(.xlsx、.xls)が利用可能
- 事前に空欄のセルがないか確認する(欠損があるとエラーになる)
- 予測まで実行する場合は、追加データも予測したい期間分準備されている必要がある
なお、データの列名は半角英数にしておくのが無難です。平仮名や漢字、全角の数値を列名にするとエラーの原因となることがあるため、半角英数で統一しておきましょう。
今回利用するデータは以下のようなものです。各列の1行目にデータ名が入力されており、その下にデータが続いています。予測モデルに追加データを使用する場合は、予測したい期間分のデータがあらかじめ用意されている必要があります。

データの準備が出来たらJASPで開きます。

データの読み込みが終わったら、時系列分析のメニューを有効にします。JASPでは時系列分析用のメニューがデフォルトでオンになっていません。画像を参考に、時系列分析メニューを有効にしましょう。JASPが問題なく動作すれば、上部の分析メニューに「Time series」が追加されます。

SARIMAXモデルの適用
データと分析メニューが準備できたらいよいよ分析に入ります。追加した時系列分析メニューから「ARIMA」を選択して、分析メニューを開きましょう。

データの列名が左上の枠内に表示されています。予測をしたいデータを「Dependent Variable」枠へ移動します。
次に、追加データ(共変量)を「Covariates」枠へドラッグ&ドロップで移動します。今回のサンプルデータのように、複数の共変量を同時に投入することも可能です。今回用意したデータはイベントの発生を0/1で表現したダミーデータです。このほかに検査値データや割引率などの数値データも共変量として投入できます。

処理が終わるとウィンドウ右側にこのように結果が表示されます。

次はSARIMAXモデルの設定です。時系列分析には季節周期・自己回帰や差分などのパラメータ設定があります。手動で設定するにはそれ相応の知識が必要です。しかし、JASPでは自動でこれらのパラメータを設定してくれるメニューがあるため、慣れないうちは自動メニューを利用するのが無難です。
パラメータ設定は「Model」タブにあります。季節周期がある場合は「Seasonal components」にチェックを入れ、PeriodはDominantにします。自己回帰や差分などのパラメータ設定はModel Specificationで設定します。「Best fitting」にチェックを入れてモデル評価はAICcを選択しましょう。AICcはAICを小標本向けに調整した派生版です。

なお、手動でモデルのパラメータを設定する場合は、ACFやPACFなどのコレログラムを確認しながら以下の項目を設定しましょう。
- 「Seasonal components」にチェックを入れてPeriodのCustomを選択し数値を入力
- 「Model Specification」で「Manual」を選択し、p,d,q / P,D,Q を個別に入力
モデルの評価
モデルの評価では「Residual Diagnostics」タブを利用します。
シンプルに残差を表示するなら「Time series plot」にチェックを入れましょう。データの正規性の確認では「Q-Q plot」にチェックを入れます。
自己回帰が残存していないかチェックするには「Autocorrelation」の「Autocorrelation function」と「Ljung-Box p-values」にチェックを入れます。それぞれ、残差の自己回帰を視覚的・統計検定で確認できます。
「Maximum lag」が予測される季節性よりも短いと、残差に影響が出ていても見逃してしまう可能性があります。Maximum lagの初期設定は10ですが、季節性がそれより長い場合は手動で入力しましょう。

処理が終わると以下のように設定に応じたグラフが出力されます。

予測・予測結果の外部出力
データの予測は「Forecasting」タブで行います。予測したい期間を「Number of forecasts」で指定します。10日間の予測がしたければ10と入力します。なお、ARIMAモデルの作成に追加データを使用している場合、予測期間分のデータがないとエラーが出てしまいます。注意しましょう。
予測結果を視覚的に確認したい場合は「Time series plot」にチェックを入れましょう。数値で確認したい場合は「Forecasts table」にチェックを入れましょう。
予測データを保存する場合は「参照」タブから好きなフォルダを選んで保存することができます。

分析結果を保存する場合
予測結果だけではなく、途中の分析結果も保存したい場合は、別な操作が必要です。保存したいものによって若干操作が異なります。
表を保存する
表のタイトルをクリックするとメニューが表示されます。その中から「コピー」を選択し、WordやPowerPointなどのソフトに貼り付けます。そのあとは自由に編集可能です。
グラフを保存する
グラフは表と同様にタイトルをクリックすると表示されるメニューから「コピー」を選択することで他のソフトに貼り付けることができます。また、メニューにある「画像を名前を付けて保存」で選択したフォルダに保存することも可能です。
結果をすべて保存する
結果の出力エリアの一番上の「結果」をクリックすると表示されるメニューから「結果のエクスポート」を選択します。HTMLかPDFのどちらかの形式で保存することが可能です。
よくあるミス(エラー)
ARIMAモデルによる時系列分析は、t検定や相関分析などの統計手法と比べると複雑です。その分データの準備段階や前処理段階で、エラーの原因が生じやすくなっています。
いきなり赤いエラーメッセージが出てくるとたじろいでしまいますね。しかし、原因が分かればなんて事はありません。
ここではエラーメッセージとその原因について紹介します。
外部変数を使わず、差分処理もしていない方は読み飛ばして構いません
予測期間分の外部変数がない
モデルの分析に外生部変数を使った場合、予測をするときに予測期間分の外部変数が用意されている必要があります。それがないと以下のようなメッセージが表示されます。
When ‘Covariates’ are used in the model, predictions cannot be carried out unless the covariates are also observed for the predicted period.
画面にはこんな感じでエラーメッセージが表示されます。

データのほうを見てみると以下のような具合です。外部変数である左・中央列が予測対象である、右側列と同じラインで終わっています。予測期間分の外部変数を下に追加することでエラーを解消できます。

データに欠損がある
データに欠損があると分析が実行できないことがあります。その場合はこんなメッセージが出ます。
No parameters are estimated.
画面にはこんな感じで表示されます。

データを確認するとこのようになっています。

この場合は、欠損セルにデータを入力することでエラーを解消することが出来ます。
先頭行に欠損がある
時系列分析ではデータが定常であることが必要なため、事前に差分処理をすることがあります。その時に、処理の過程で先頭行に空欄が出来てしまいます。そのため、先頭行を使わないよう指定する必要があるのですが、それを忘れるとエラーが出ます。
Excelなどの外部ソフトで前処理した場合や、JASPの「Time Series」の「Stationarity」メニューでデータを変換したときに出やすいです。
実際のデータを見るとこのようになっています。

計算上先頭行を埋めることはできないため、先頭行を分析処理から外す指定をします。
ARIMAモデルのデータ指定エリアで「Filter by」にチェックを入れます。
Startに2を入力し、解析が2行目から始まるように指定します。

まとめ
この記事ではSARIMAXモデルの概要と、できること・できないことを整理し、JASPを使った実際の操作手順を紹介しました。
SARIMAXモデルは「季節性」と「イベントの影響」を扱える強力なツールですが、複数の周期が混在する場合や非線形な影響が存在する場合には限界があります。自分のデータがSARIMAXモデルに向いているかどうかを見極めることが、分析の第一歩です。
定常化済みのデータを使って、モデルの構築・評価・予測の流れをぜひ実践してみてください。


コメント