時系列分析とは、時間の経過に伴い変化するデータを体系的に分析する手法です。売上や来場者数、気象データといった時系列データを活用することで、過去の傾向を理解し、未来の予測や異常値の検知を行うことができます。この手法はビジネスや経済、自然科学など幅広い分野で活用されています。データの性質や目的に応じてさまざまなモデルが存在し、ARIMAやSARIMAといった統計的手法から、Prophetのような先進的なライブラリまで多様な選択肢があります。
時系列分析とは
時系列分析は、時間の経過とともに変化するデータを分析する手法です。対象となるデータは、売上や来場者数といった日次・週次・月次の記録が一般的です。ARIMAモデルや状態空間モデルといった統計的手法を活用することで、要因の分析や将来の予測、異常検知が可能です。
時系列データを解析する際には、長期的な傾向や周期的な変化を明らかにし、不規則なノイズを分離することでデータの本質を把握しやすくなり、将来の値を予測する精度が向上します。
時系列データとは
時系列データとは時間の順序に従って観測されたデータのことです。一定の時間間隔で得られる記録や、イベント発生時刻・頻度なども含まれます。例として、株価、気象データ、販売数、センサーデータなどが挙げられます。
回帰分析との違い
回帰分析はデータ間の関係性を数式化し、未知の条件下で予測を行う手法です。例えば、身長と体重の相関をもとに、身長から体重を予測するモデルを構築します。一方、時系列分析は過去のデータが未来の値に影響を与える自己相関を考慮する手法であり、データの時間的なトレンドや季節性、ノイズをモデル化して将来の値を予測します。
時系列分析の活用シーン
将来予測 | 時系列データに基づき、売上や広告クリック数の将来推移を予測することが可能です。予測モデルとしてARIMAが代表的で量的な目標を扱う際に有用です。 |
効果推定 | マーケティング施策の効果を検証する際には、施策前後の変化を時系列解析で分析できます。ユーザーログやSNSデータのような時間依存データが効果推定に活用されます。 |
異常検知 | データに含まれる外れ値や変化点を識別します。ARIMAやSARIMAモデルを用いた残差分析や機械学習手法を活用した検知も行われています。 |
時系列分析の変動要因
時系列分析では、データの変動要因を3つに分解して理解します。例えば、日々のデータには上下の変動がありますが、年間単位で平均を取ると徐々に増加している場合、長期的なトレンドがプラスであると判断できます。過去のデータの波形を分析し、それぞれの要因を特定します。
- 長期変動要因:長期間にわたるトレンド。データの増減が持続的に現れる要素を指します。
- 季節変動要因:年間や月別、週別、曜日別の周期性に基づく変動。
- 不規則変動要因:突発的に発生する予測困難な変動。
データの分解には、加法モデル(各要因の単純な合計)と乗法モデル(要因が掛け合わさった結果)があります。乗法モデルは複数要因の相互作用を考慮し、データをより適切に説明できる場合に採用されます。
長期変動
長期変動は時間の経過に伴い持続的に増減するパターンを指します。数年から数十年以上の期間で観測される傾向が対象です。長期変動を把握することで将来のトレンドを予測できます。株価や気象データなどが代表的な例です。
循環変動
循環変動は3〜15年程度の一定周期で現れる変動を指します。景気循環やビジネスサイクルなど、経済活動に基づくパターンが含まれます。株式市場の変動も循環変動の一例です。
季節変動
季節変動は1年を周期とする変動要因を指します。例えば、気温や旅行需要、売上の増減などが季節的な要素の影響を受ける例です。このような変動は、定期的かつ予測可能な特徴を持ちます。
周期変動
周期変動は、データに特定の周期性が見られる現象です。季節変動や循環変動とは異なり、より短期間の月次や週次、日次の周期性が対象となります。短い期間における繰り返しパターンが分析の対象です。
不規則変動
不規則変動は、突発的で予測困難な要因に起因する変動を指します。自然災害や企業の不祥事など、計画や予測が困難な事象が含まれます。この要因を特定することで、他の変動要因と区別した分析が可能です。
時系列モデルについて
時系列モデルは、過去のデータを説明変数として用い、現在の値を表現する手法です。統計学的には現在の値を過去のデータから回帰する方法として説明されます。時系列モデルには単純なものから複雑なものまで幅広い種類があり、データの特性や目的に応じて選択されます。モデルの違いは現在の値を過去のデータで表す「式の形」にあります。この式の係数は、最小二乗法によりデータとの誤差を最小化する形で決定されます。
AR(自己回帰)モデル
ARモデル(Auto Regressive model)は、過去の値を説明変数として現在の値を予測するモデルです。たとえば、今日の株価を昨日の株価や一昨日の株価を用いて予測する形でモデルが構築されます。自己相関が存在するデータに適しており、過去の値が未来に与える影響を反映する単純かつ効果的な手法です。
MA(移動平均)モデル
MAモデル(Moving Average model)は、現在の値を過去に発生した予測誤差の線形和として表現するモデルです。過去に予測がどれだけ外れたか(誤差)を振り返り、その情報を活用して現在の値を説明・予測します。移動平均という言葉の一般的な意味とは異なり、データの平均ではなく誤差の累積的な影響をモデル化します。
ARMA(自己回帰移動平均)モデル
ARMAモデル(Auto Regressive Moving Average)は、ARモデルとMAモデルを組み合わせたものです。このモデルは、過去の値の影響(AR部分)と予測誤差の影響(MA部分)を同時に考慮し、時系列データを幅広く表現します。ただし、データが定常的であることを前提とするため、非定常データには適用できません。
ARIMA(自己回帰和分移動平均)モデル
ARIMAモデル(Auto Regressive Integrated Moving Average model)は、ARMAモデルに和分(階差)を加えたモデルです。非定常データを階差を取ることで定常化し、その上でARMAモデルを適用することにより、長期的なトレンドが含まれるデータにも対応可能となり、柔軟な予測が行えます。
SARIMA(季節変動自己回帰和分移動平均)モデル
SARIMAモデル(Seasonal Auto Regressive Integrated Moving Average)は、ARIMAモデルに季節性の要素を加えたモデルです。季節性を考慮するために、データの周期に基づいた差分を取ります。このモデルは売上や気象データのように季節ごとの周期性が明確なデータに適しています。
ARCHモデル、GARCHモデル
ARCHモデル(自己回帰条件付き分散モデル、autoregressive conditional heteroscedasticity model)やGARCHモデル(一般化自己回帰条件付き分散モデル、Generalized ARCHモデル)は、金融データのように時系列データの分散が時間とともに変化する場合に用いられます。このモデルは、データの変動性を正確に捉えるために利用されます。
状態空間モデル
状態空間モデルは時系列データの生成過程を「状態」と「観測」の2つに分解して表現する柔軟性の高いモデルです。このモデルは、時間の経過とともに変化する状態を推定し、その情報を基に未来の値を予測します。さまざまな時系列モデルを包含できる汎用性の高い手法です。
時系列解析の進め方
時系列解析を効率的かつ正確に進めるためには、データの準備からモデリングまでの手順を段階的に進めることが重要です。
1.基礎集計
まず、データの概要を把握するために最小値、最大値、平均値、分散、相関係数といった統計量を算出し、データの特性を理解します。グラフを作成することで傾向や変動の程度を視覚的に確認します。また、欠損データの有無やデータの整合性も確認します。
2.前処理
解析を進める前にデータを整備します。質的変数や欠損値、外れ値の処理、スケールの異なるデータの調整を行い、データの間隔を再サンプリングしたり、タイムゾーンを統一することで解析の精度を向上させます。
3.トレンドの分析
データが短期的な変動を含む場合、全体的な傾向(トレンド)を把握するのが難しいことがあります。そのため、移動平均を用いてデータを平滑化します。単純移動平均や指数平滑移動平均をデータの性質に応じて適用し、大まかな傾向を明らかにします。
4.系列の変換
元のデータに非定常性や非線形性がある場合、系列の変換を行います。対数系列や対数差分系列への変換を適用し、データの解析に適した形に整えます。
5.周期性の分析
時系列データには季節性や周期性が含まれることがあります。周期性を分析するために、高速フーリエ変換や自己相関係数、偏自己相関係数を算出することでデータの周期的な構造を明らかにします。
6.特徴抽出
時系列データには多くの要素が絡み合っています。特徴抽出では分析に必要な要素を特定することでデータから有益な情報を効率よく得られるようになります。
7.モデリング
最終的に時系列モデルを構築します。自己回帰系モデル、状態空間モデル、機械学習を活用するアプローチがあり、解析の目的やデータの特性に応じて選択します。モデル選択の際は、解釈性、計算負荷、モデリングの難易度、表現力といった観点を考慮することが重要です。
時系列解析で用いられるツール
statsmodel
statsmodelはpythonの統計解析ライブラリで、時系列解析用APIが充実しています。ARIMAモデルなどの代表的な時系列モデルを扱ったりグラフを描画する機能もあるため、データを視覚的に分析することも可能です。
Prophet
ProphetはFacebook社(現Meta社)によって開発されたアルゴリズムで、時系列データを自動的に構造化するものです。ベイズ統計における推定方法をもとに、長期変動、季節変動(周期性)を分解して推計します。
2017年に初期リリースが行われたあと、時系列予測の分野で急速に普及しました。デイリーデータ (1日単位でデータが記録されるデータ) で応用が可能です。最大の特徴は、その使いやすさにあります。Pythonのライブラリとして提供されており、誰でも利用することができます。また、内蔵されているデフォルトの設定が優れているため、たいていの日次データに適合させることができます。
時系列解析の課題
将来予測は必ず正しいわけではない
時系列解析を用いた将来予測は、不確実性を伴います。予測結果が外れる可能性を常に考慮し、解析結果を他の手法や情報と統合して判断することが重要です。1つの予測に過度に依存せず、複数の視点を活用することで、より現実的な意思決定が可能となります。
データの蓄積量が少ないと精度が下がる
解析に用いるデータの蓄積量が十分でない場合、得られる結果の信頼性が低下します。例えば、直近の短期間のデータのみを用いて長期的な周期性を分析しようとすると、予測結果の精度が著しく低下します。時系列解析を行う際は、目的に応じた適切なデータの蓄積期間を確保する必要があります。
データ量と粒度の問題
時系列データの量や粒度は解析において重要な要素です。例えば、月次データでは1年で12個のデータしか収集できず、十分なデータ量を得るためには長期間が必要になります。一方、週次データを使用すると1年で52個のデータを収集できますが、データ粒度の違いが課題となります。
週次のデータから月次や年次のデータを生成することは可能ですが、逆に月次のデータから週次のデータを生成することはできません。そのため、初期のデータ収集段階で適切な粒度を選択することが重要です。不適切な粒度設定は、解析の制約や精度の低下につながる可能性があります。
最後に
時系列分析はデータに隠れたパターンや傾向を解き明かし、将来の予測や意思決定を支援する重要な手法です。過去のデータをモデル化することで、長期的なトレンドや周期性、不規則な変動要因を分解し、より正確な分析を可能にします。一方で、データの蓄積量や粒度、モデルの選択といった課題もあり、課題に適切に対応することが求められます。また、Prophetやstatsmodelsのようなツールの活用により、専門知識がなくても高度な時系列解析を行うことができます。データ活用が進む現代において、時系列分析はますます重要性を増していくでしょう。