statsmodels.tsa.statespace.sarimax.SARIMAX¶
-
class statsmodels.tsa.statespace.sarimax.SARIMAX(endog, exog=
None, order=(1, 0, 0), seasonal_order=(0, 0, 0, 0), trend=None, measurement_error=False, time_varying_regression=False, mle_regression=True, simple_differencing=False, enforce_stationarity=True, enforce_invertibility=True, hamilton_representation=False, concentrate_scale=False, trend_offset=1, use_exact_diffuse=False, dates=None, freq=None, missing='none', validate_specification=True, **kwargs)[ソース]¶ 季節性を考慮した自己回帰移動平均モデル(外生変数あり)
- パラメータ:¶
- endogarray_like
観測された時系列プロセス \(y\)
- exogarray_like,
optional 外生変数の配列で、形状は nobs x k。
- orderiterable or iterable
ofiterables,optional (p,d,q)はモデルの自己回帰(AR)パラメータ、差分(d)、移動平均(MA)パラメータの次数を表します。 d はプロセスの差分次数を表す整数である必要があります。 p および q は、ARおよびMA次数を示す整数(すべてのラグを含む場合)または、特定のAR/MAラグを指定するためのリストが可能です。 デフォルト値はAR(1)モデル (1,0,0)。
- seasonal_orderiterable,
optional (P, D, Q, s)はモデルの季節性成分の次数を表します。D はプロセスの差分次数を表す整数である必要があります。P および Q は、ARおよびMA次数を示す整数または、特定のAR/MAラグを指定するためのリストです。 s は周期性(季節の期間数)を表す整数で、四半期データの場合は4、月次データの場合は12であることが一般的です。デフォルトは季節性なし。
- trend
str{'n','c','t','ct'}oriterable,optional 決定論的なトレンド多項式 \(A(t)\) を制御し、文字列で指定可能です。'c' は定数(トレンド多項式の次数0) 't' は時間に比例する線形トレンド 'ct' はその両方を含む。 また、トレンド多項式の非ゼロ指数を昇順で指定するイテラブルとしても指定可能(例: [1,1,0,1] は \(a + bt + ct^3\) を表します)。 デフォルトはトレンドなし。
- measurement_errorbool,
optional 内生変数 endog が誤差を伴って観測されたと仮定するかどうか。デフォルトは False 。
- time_varying_regressionbool,
optional 説明変数 exog が指定されている場合に、外生回帰変数の係数が時間の経過と共に変化することを許可するかどうかを選択するために使用されます。デフォルトは False です。
- mle_regressionbool,
optional 外生変数の回帰係数の推定を、最大尤度推定の一部として、またはカルマン フィルター (つまり、再帰最小二乗法) を通じて使用するかどうかを選択します。 time_varying_regression が True の場合、このオプションは False に設定する必要があります。デフォルトは True 。
- simple_differencingbool,
optional 条件付き最尤推定を使用するかどうかを制御します。True の場合、推定前に差分を行い、最初の \(s D + d\) 行を破棄しますが、状態空間表現が単純になります。詳細は Notes セクションを参照してください。デフォルトは False 。
- enforce_stationaritybool,
optional 自己回帰成分が定常性を満たすようにパラメータを変換するかどうか。デフォルトは True 。
- enforce_invertibilitybool,
optional 移動平均成分が可逆性を満たすようにパラメータを変換するかどうか。デフォルトは True 。
- hamilton_representationbool,
optional ARMAプロセスをハミルトン表現( True )またはハーヴェイ表現( False )で使用するかどうか。デフォルトは False 。
- concentrate_scalebool,
optional 誤差項の分散(スケール)を尤度から除外するかどうか。これにより推定されるパラメータ数が1つ減少しますが、スケールパラメータの標準誤差が利用できなくなります。
- trend_offset
int,optional 時間トレンド値を開始するオフセット。デフォルトは 1 で、 trend='t' の場合、トレンド値は1, 2, ..., nobsとなります。
- use_exact_diffusebool,
optional 非定常状態に対して厳密な拡散初期化を使用するかどうか。デフォルトは False (この場合、近似拡散初期化が使用されます)。
- **kwargs
状態空間行列やカルマンフィルタオプションのデフォルト値を指定するためのキーワード引数。詳細は Representation および KalmanFilter を参照してください。
- 属性:¶
- measurement_errorbool
内性変数 endog が誤差を伴って測定されたかどうかを示します。
- state_errorbool
遷移方程式に誤差成分が含まれているかどうかを示します。
- mle_regressionbool
外生変数の回帰係数が最尤推定によって推定されたかどうかを示します。
- state_regressionbool
外生変数の回帰係数が状態空間の要素として含まれ、カルマンフィルターを使用して推定されるかどうかを示します。
- time_varying_regressionbool
外生変数の回帰係数が時間とともに変化できるかどうかを示します。
- simple_differencingbool
条件付き最尤推定を部分的に使用するかどうかを示します。
- enforce_stationaritybool
自己回帰(AR)成分において定常性を強制するためにARパラメータを変換するかどうかを示します。
- enforce_invertibilitybool
移動平均(MA)成分において反転可能性を強制するためにMAパラメータを変換するかどうかを示します。
- hamilton_representationbool
ARMAプロセスのハミルトン表現を使用するかどうかを示します。
- trend
str{'n','c','t','ct'}oriterable 決定論的トレンド多項式 \(A(t)\) を制御するパラメータです。詳細はクラスのパラメータドキュメントを参照してください。
- polynomial_ar
ndarray 自己回帰ラグ多項式のラグを含む配列(次数が低い順から高い順に並ぶ)。多項式はラグ0から始まります。初期化時は1で埋められますが、係数がゼロに制約されている場合はゼロになります。
- polynomial_ma
ndarray 移動平均ラグ多項式のラグを含む配列(次数が低い順から高い順に並ぶ)。初期化時は1で埋められますが、係数がゼロに制約されている場合はゼロになります。
- polynomial_seasonal_ar
ndarray 季節的自己回帰ラグ多項式のラグを含む配列(次数が低い順から高い順に並ぶ)。初期化時は1で埋められますが、係数がゼロに制約されている場合はゼロになります。
- polynomial_seasonal_ma
ndarray 季節的自己回帰ラグ多項式のラグを含む配列(次数が低い順から高い順に並ぶ)。初期化時は1で埋められますが、係数がゼロに制約されている場合はゼロになります。
- polynomial_trend
ndarray トレンド多項式の係数を含む配列(次数が低い順から高い順に並ぶ)。初期化時は1で埋められますが、係数がゼロに制約されている場合はゼロになります。
- k_ar
int モデル内の最高自己回帰次数(ゼロから始まります)。
- k_ar_params
int 推定される自己回帰パラメータの数。
- k_diff
int 統合の順序。
- k_ma
int モデル内の最高移動平均次数。ゼロから始まります。
- k_ma_params
int 推定される移動平均パラメータの数。
- seasonal_periods
int 1シーズン内の期間数。
- k_seasonal_ar
int モデル内の最高季節的自己回帰次数。ゼロから始まります。
- k_seasonal_ar_params
int 推定される季節的自己回帰パラメータの数。
- k_seasonal_diff
int 季節的差分の次数。
- k_seasonal_ma
int モデル内の最高季節的移動平均次数。ゼロから始まります。
- k_seasonal_ma_params
int 推定される季節的移動平均パラメータの数。
- k_trend
int トレンド多項式の次数 + 1(例:定数多項式は k_trend=1 となります)。
- k_exog
int 外生変数の数。
ノート
SARIMAモデルは、math:(p, d, q)times(P, D, Q)_s 指定されます。
\[\phi_p (L) \tilde \phi_P (L^s) \Delta^d \Delta_s^D y_t = A(t) + \theta_q (L) \tilde \theta_Q (L^s) \zeta_t\]単変量の構造モデルに基づく場合、これは以下のように表現できます
\[\begin{split}y_t & = u_t + \eta_t \\ \phi_p (L) \tilde \phi_P (L^s) \Delta^d \Delta_s^D u_t & = A(t) + \theta_q (L) \tilde \theta_Q (L^s) \zeta_t\end{split}\]ここで、\(\eta_t\) は測定誤差の場合にのみ適用されます(ただし、p=q=0 の場合の純回帰モデルにも使用されます)。
このモデルを用いたSARIMA誤差を持つ回帰は、以下のように簡単に表現されます
\[\begin{split}y_t & = \beta_t x_t + u_t \\ \phi_p (L) \tilde \phi_P (L^s) \Delta^d \Delta_s^D u_t & = A(t) + \theta_q (L) \tilde \theta_Q (L^s) \zeta_t\end{split}\]外生変数が提供されている場合、このモデルが使用されます。
簡略化された形での遅延多項式は以下のように記述されます:
\[\begin{split}\Phi (L) \equiv \phi_p (L) \tilde \phi_P (L^s) \\ \Theta (L) \equiv \theta_q (L) \tilde \theta_Q (L^s)\end{split}\]mle_regression が True の場合、回帰係数は最尤法で推定される追加のパラメータとして扱われます。それ以外の場合、これらは状態として扱われ、拡散的初期化が行われます。この場合、近似的な拡散的初期化を使用するため、初期分散に敏感な結果となる可能性があります。
このクラスでは、ARMAモデルを状態空間モデルとして表現する2つの異なる表現(Hamilton表現とHarvey表現)を使用できます。どちらもARMAモデルの解析的表現として等価ですが、状態ベクトルの意味が異なるため、最尤推定では同一のパラメータ推定にはなりません。同じパラメータセットであっても、異なる対数尤度が得られることがあります。
Harvey表現は、差分操作を状態ベクトルに組み込むことで、すべての観測データを推定に使用できるため便利です。
差分モデルのこの実装では、Hamilton表現では状態ベクトル内での差分操作ができないため、simple_differencing (推定前に差分操作を行うことで最初の d + sD 観測値が失われる)が必要です。
多くの他のパッケージではHamilton表現を使用しているため、StataやRとの比較テストでは、Hamilton表現とsimple differencingを組み合わせて使用する必要があります(Stataの方法に準じています)。
filter_concentrated = True を使用する場合、モデルのスケールが尤度関数から削除されます。これにより、パラメータベクトルの次元が削減されるため、対数尤度関数の数値最大化がより高速かつ安定する可能性があります。ただし、このオプションを測定誤差を伴うモデルで使用する場合、推定される測定誤差パラメータはスケールに対する相対値として扱われ、 "var.measurement_error" の代わりに "snr.measurement_error" として命名されます。この場合、測定誤差の分散を計算するには、 snr.measurement_error パラメータにスケールを掛ける必要があります。
simple_differencing = True を使用する場合、 endog および exog データは、状態空間形式に変換される前に差分操作が行われます。これは、ユーザーがモデルを構築する前にデータに差分操作を適用した場合と同じ効果を持ち、結果の利用に以下の影響を与えます:
予測および予想は元のデータではなく、差分後のデータ に基づくものとなります( simple_differencing = False を使用する場合、予測および予想は元のデータに基づきます)。
元のデータが Int64Index を持っている場合、差分後のデータには1から始まる新しい RangeIndex が作成され、予測および予想ではこの新しいインデックスが使用されます。
状態空間モデルに関する詳細情報は [1] を参照してください。いくつかの具体的な参照箇所は以下の通りです:
第3.4章では、Harvey表現を使用した状態空間形式でのARMAおよびARIMAモデルを説明しており、基本的な季節モデルや乗法形式のモデル(例えばエアラインモデル)に関する参考文献も含まれています。また、完全なARIMAプロセスの状態空間モデルも示されています( simple_differencing=False の場合に適用されます)。
第3.6章では、カルマンフィルタを使用した回帰効果の推定( mle_regression = False の場合に実行)、時間変化する係数を伴う回帰、およびARMA誤差を伴う回帰を説明しています(上述のように、回帰効果が存在する場合、このクラスで推定されるモデルはSARIMA誤差を伴う回帰です)。
第8.4章では、ARMAモデルを例データセットに適用する方法を説明しています。この章の再現は、ドキュメント内の例としてIPythonノートブックで提供されています。
参考文献
[1]Durbin, James, and Siem Jan Koopman. 2012. Time Series Analysis by State Space Methods: Second Edition. Oxford University Press.
メソッド
clone(endog[, exog])新しいデータとオプションで新しい仕様を使用して状態空間モデルをクローンします
filter(params[, transformed, ...])カルマンフィルタリングを実行します
fit([start_params, transformed, ...])カルマンフィルタを使用して最尤法でモデルをフィットします。
fit_constrained(constraints[, start_params])いくつかのパラメータに等式制約を適用してモデルをフィットします。
fix_params(params)特定の値にパラメータを固定します(コンテキストマネージャー)。
from_formula(formula, data[, subset])状態空間モデルには未実装です
handle_params(params[, transformed, ...])モデルパラメータが形状やその他の要件を満たしていることを確認します
hessian(params, *args, **kwargs)与えられたパラメータで尤度関数のヘッセ行列を評価します
impulse_responses(params[, steps, impulse, ...])インパルス応答関数を計算します
information(params)モデルのフィッシャー情報行列を計算します。
SARIMAXモデルを初期化します。
initialize_approximate_diffuse([variance])近似拡散を初期化します
initialize_default([...])デフォルトで初期化します
initialize_known(initial_state, ...)既知の値で初期化します
initialize_statespace(**kwargs)状態空間表現を初期化します
定常状態で初期化します
loglike(params, *args, **kwargs)尤度を評価します
loglikeobs(params[, transformed, ...])尤度を評価します
observed_information_matrix(params[, ...])観測情報行列を計算します
opg_information_matrix(params[, ...])外積勾配情報行列を計算します
predict(params[, exog])モデルがフィットされた後、予測値を返します。
状態空間表現に使用するデータを準備します
score(params, *args, **kwargs)与えられたパラメータでスコア関数を計算します。
score_obs(params[, method, transformed, ...])観測ごとのスコアを計算します
set_conserve_memory([conserve_memory])メモリ節約方法を設定します
set_filter_method([filter_method])フィルタリング方法を設定します
set_inversion_method([inversion_method])逆行列計算方法を設定します
set_smoother_output([smoother_output])スムーザー出力方法を設定します
set_stability_method([stability_method])数値的安定性方法を設定します
simulate(params, nsimulations[, ...])状態空間モデルに従う新しい時系列をシミュレーションします
simulation_smoother([simulation_output])状態空間モデル用のシミュレーションスムーザーを取得します。
smooth(params[, transformed, ...])カルマンスムージングを実行します
transform_jacobian(unconstrained[, ...])パラメータ変換関数のヤコビ行列を計算します
transform_params(unconstrained)最適化で使用される非制約パラメータを、尤度評価で使用される制約パラメータに変換します。
untransform_params(constrained)尤度評価で使用される制約パラメータを、最適化で使用される非制約パラメータに変換します
update(params[, transformed, ...])モデルのパラメータを更新します
プロパティ
内生変数の名前
外生変数の名前。
初期デザイン行列
初期選択行列
初期状態の切片ベクトル
初期遷移行列
すべてのモデルパラメータのLaTeX形式の名前。
すべてのモデルパラメータのプレーンテキスト形式の名前。
モデル内の各多項式の次数。
モデルに含まれるパラメータの人間が読める名前のリスト。
モデルに含まれるパラメータのリスト(ソート済み)
最尤法推定の初期パラメータ
未観測状態の人間が読める名前のリスト。