時系列分析 tsa

statsmodels.tsa には、時系列分析に役立つモデルクラスと関数が含まれています。基本モデルには、単変量自己回帰モデル(AR)、ベクトル自己回帰モデル(VAR)、単変量自己回帰移動平均モデル(ARMA)があります。非線形モデルには、マルコフスイッチング動的回帰と自己回帰があります。また、自己相関、偏自己相関関数、ピリオドグラムなどの時系列の記述統計、およびARMAや関連プロセスの対応する理論的特性も含まれています。また、自己回帰および移動平均ラグ多項式を扱う方法も含まれています。さらに、関連する統計的検定といくつかの有用なヘルパー関数も利用できます。

推定は、カルマンフィルタまたは直接フィルタのいずれかを使用して、厳密な最尤または条件付き最尤または条件付き最小二乗法によって行われます。

現在、関数とクラスは対応するモジュールからインポートする必要がありますが、メインクラスはstatsmodels.tsa名前空間で使用できるようになります。モジュール構造はstatsmodels.tsa内にあります

  • stattools : 経験的なプロパティと検定、acf、pacf、granger-causality、adf 単位根検定、kpss 検定、bds 検定、ljung-box 検定など。

  • ar_model : 単変量自己回帰プロセス、条件付きおよび厳密な最尤法と条件付き最小二乗法による推定

  • arima.model : 単変量 ARIMA プロセス、代替方法による推定

  • statespace:包括的な状態空間モデルの仕様と推定。 状態空間のドキュメント を参照してください。

  • vector_ar、var : ベクトル自己回帰プロセス (VAR) およびベクトル誤差修正モデル、推定、インパルス応答分析、予測誤差分散分解、およびデータ視覚化ツール。 vector_ar documentation を参照してください。

  • arma_process : 指定されたパラメーターを持つ arma プロセスのプロパティ。これには、ARMA、MA、AR 表現、acf、pacf、スペクトル密度、インパルス応答関数などの間で変換するツールが含まれます

  • sandbox.tsa.fftarma : arma_process に似ていますが、周波数領域で動作します

  • tsatools : 遅延変数の配列を作成し、トレンドやデトレンドなどの回帰変数を構築するための追加のヘルパー関数。

  • filters : 時系列をフィルタリングするためのヘルパー関数

  • regime_switching : マルコフ スイッチング動的回帰モデルと自己回帰モデル

時系列分析にも役立ついくつかの追加関数は、統計モデルの他の部分 (追加の統計的検定など) にあります。

一部の関連関数は、matplotlib、nitime、scikits.talkbox でも利用できます。これらの関数は、より長い時系列が利用可能であり、周波数領域でより頻繁に動作する信号処理での使用を目的として設計されています。

記述統計と検定

stattools.acovf(x[, adjusted, demean, fft, ...])

自己共分散を推定します。

stattools.acf(x[, adjusted, nlags, qstat, ...])

自己相関関数を計算します。

stattools.pacf(x[, nlags, method, alpha])

偏自己相関推定。

stattools.pacf_yw(x[, nlags, method])

非再帰的なyule_walkerで推定した部分自己相関。

stattools.pacf_ols(x[, nlags, efficient, ...])

OLS を介して偏自己相関を計算します。

stattools.pacf_burg(x[, nlags, demean])

Burg の偏自己相関推定量を計算します。

stattools.ccovf(x, y[, adjusted, demean, fft])

2 つの系列間の相互共分散を計算します。

stattools.ccf(x, y[, adjusted, fft, nlags, ...])

相互相関関数。

stattools.adfuller(x[, maxlag, regression, ...])

拡張 Dickey-Fuller 単位根検定。

stattools.kpss(x[, regression, nlags, store])

定常性に関するKwiatkowski-Phillips-Schmidt-Shin検定。

stattools.range_unit_root_test(x[, store])

定常性の範囲の単位根検定。

stattools.zivot_andrews

Zivot-Andrews 構造断裂の単位根検定。

stattools.coint(y0, y1[, trend, method, ...])

単変量方程式の非共和分性の検定。

stattools.bds(x[, max_dim, epsilon, distance])

時系列の独立性に関するBDS検定統計量

stattools.q_stat(x, nobs)

Ljung-Box Q統計量を計算します。

stattools.breakvar_heteroskedasticity_test(resid)

残差の不均一分散性の検定

stattools.grangercausalitytests(x, maxlag[, ...])

2つの時系列のグレンジャー非因果性に対する4つの検定。

stattools.levinson_durbin(s[, nlags, isacov])

自己回帰プロセスのためのLevinson-Durbin再帰。

stattools.innovations_algo(acov[, nobs, rtol])

自己共分散をMAパラメータに変換するイノベーションアルゴリズム。

stattools.innovations_filter(endog, theta)

イノベーションアルゴリズムを使用して観測値をフィルタリングします。

stattools.levinson_durbin_pacf(pacf[, nlags])

acf 係数と ar 係数を返す Levinson-Durbin アルゴリズム。

stattools.arma_order_select_ic(y[, max_ar, ...])

多くの ARMA モデルの情報基準を計算します。

x13.x13_arima_select_order(endog[, ...])

x12/x13 ARIMA を使用して季節性 ARIMA 順序識別を自動実行します。

x13.x13_arima_analysis(endog[, maxorder, ...])

月次または四半期データに対して x13-arima 分析を実行します。

推定

以下は主な推定クラスであり、statsmodels.tsa.api とその結果クラスを通じてアクセスできます

単変量自己回帰過程 (AR)

Statsmodelsの基本的な自己回帰モデルは次のとおりです :

ar_model.AutoReg(endog, lags[, trend, ...])

自己回帰 AR-X(p) モデル

ar_model.AutoRegResults(model, params, ...)

AutoRegモデルのフィッティングの結果を保持するクラス。

ar_model.ar_select_order(endog, maxlag[, ...])

自己回帰AR-X(p)モデルの次数選択。

ar_model.AutoReg モデルは、条件付きMLE(OLS)を使用してパラメータを推定し、外因性リグレッサー(AR-Xモデル)と季節効果をサポートします。

AR-Xおよび関連モデルは、「arima.ARIMA」クラスおよび「SARIMAX」クラス(カルマンフィルタによる完全なMLEを使用)もフィッティングさせることができます。

概要については、ノートブック 自己回帰 を参照してください。

自己回帰移動平均プロセス (ARMA) とカルマン フィルター

基本的な ARIMA モデルと結果クラスは次のとおりです :

arima.model.ARIMA(endog[, exog, order, ...])

自己回帰統合移動平均 (ARIMA) モデルと拡張機能

arima.model.ARIMAResults(model, params, ...)

SARIMAX モデルのフィッティング結果を保持するクラス。

このモデルでは、様々な方法(Hannan-Rissanen法による条件付きMLEおよびカルマンフィルタによる完全MLEを含む)によるパラメータの推定が可能です。これは`SARIMAX`モデルの特殊なケースであり、 状態空間 モデルから継承された多数の機能(予測/予測、残差診断、シミュレーション、インパルス応答などを含む)が含まれています。

概要については、ノートブック ARMA: 太陽黒点データ および ARMA: 人工的なデータ を参照してください。

指数平滑化法

線形および非線形の指数平滑化モデルが利用可能です :

ExponentialSmoothing(endog[, trend, ...])

ホルト・ウィンターの指数平滑化法

SimpleExpSmoothing(endog[, ...])

単純な指数平滑化法

Holt(endog[, exponential, damped_trend, ...])

ホルトの指数平滑化法

HoltWintersResults(model, params, sse, aic, ...)

指数平滑化モデルのフィッティングの結果。

これとは別に、 "イノベーション" 状態空間アプローチに基づいて、線形および非線形の指数平滑化モデルも実装されています。これらのモデルは、パラメーター フィッティング、サンプル内予測、サンプル外予測の通常のサポートに加えて、予測間隔、シミュレーションなどもサポートします。

exponential_smoothing.ets.ETSModel(endog[, ...])

ETSモデル。

exponential_smoothing.ets.ETSResults(model, ...)

誤差、トレンド、季節性 (ETS) 指数平滑法モデルの結果

最後に、線形指数平滑化モデルも、一般的な状態空間フレームワークの特別なケースとして個別に実装されています (これは、上で説明した "イノベーション" 状態空間アプローチとは別のものです)。このアプローチでは、非線形 (乗算) 指数平滑化モデルは使用できませんが、 state space のすべての機能 (予測/予測、残差診断、シミュレーション、インパルス応答などを含む) が含まれています。

statespace.exponential_smoothing.ExponentialSmoothing(endog)

線形指数平滑化法モデル

statespace.exponential_smoothing.ExponentialSmoothingResults(...)

線形指数平滑化モデルをフィッティングした結果

概要については、ノートブック 指数平滑法 を参照してください。

ARMA プロセス

以下は、与えられたラグ多項式に対するARMA過程の理論的性質を扱うためのツールです。

arima_process.ArmaProcess([ar, ma, nobs])

指定されたラグ多項式に対するARMA過程の理論的性質。

arima_process.ar2arma(ar_des, p, q[, n, ...])

ar プロセスへの arma 近似を求めます。

arima_process.arma2ar(ar, ma[, lags])

ARMA過程の有限ラグAR近似。

arima_process.arma2ma(ar, ma[, lags])

ARMA過程の有限ラグ近似MA表現。

arima_process.arma_acf(ar, ma[, lags])

ARMA過程の理論的自己相関関数。

arima_process.arma_acovf(ar, ma[, nobs, ...])

定常ARMA過程の理論的自己共分散

arima_process.arma_generate_sample(ar, ma, ...)

ARMAからのデータをシミュレートします。

arima_process.arma_impulse_response(ar, ma)

ARMA プロセスのインパルス応答関数 (MA 表現) を計算します。

arima_process.arma_pacf(ar, ma[, lags])

ARMA プロセスの理論的な偏自己相関関数。

arima_process.arma_periodogram(ar, ma[, ...])

ラグ多項式arとmaで与えられるARMA過程のピリオドグラム。

arima_process.deconvolve(num, den[, n])

信号から除数をデコンボリューションし、n 項の多項式を除算します

arima_process.index2lpol(coeffs, index)

係数をラグ多項式に展開

arima_process.lpol2index(ar)

ラグ多項式からゼロを削除する

arima_process.lpol_fiar(d[, n])

分数積分のAR表現

arima_process.lpol_fima(d[, n])

分数積分の MA 表現

arima_process.lpol_sdiff(s)

季節差 (1-L^s) の係数を返します

ArmaFft(ar, ma, n)

Arma プロセス用の FFT ツール

自己回帰分散ラグ (ARDL) モデル

自己回帰分散ラグモデルは、自己回帰モデル (AutoReg) とベクトル自己回帰モデル (VAR) の間の空間にまたがっています。

ardl.ARDL(endog, lags[, exog, order, trend, ...])

自己回帰分散ラグ (ARDL) モデル

ardl.ARDLResults(model, params, cov_params)

ARDL モデルのフィッティング結果を保持するクラス。

ardl.ardl_select_order(endog, maxlag, exog, ...)

ARDL順序の選択

ardl.ARDLOrderSelectionResults(model, ics, ...)

ARDL順序選択の結果

ardl.ARDL モデルは、条件付きMLE(OLS)を使用してパラメータを推定し、単純な決定論的項(トレンドと季節のダミー)と、 DeterministicProcess を使用した複雑な決定論の両方を可能にします。

AR-Xおよび関連するモデルは、 SARIMAX クラス(Kalmanフィルタによる完全なMLEを使用)にもフィットさせることができます。

概要については、ノートブック 自己回帰分布遅延モデル を参照してください。

誤り訂正モデル (ECM)

誤差補正モデルは、ARDLモデルの再パラメータ化であり、内生変数の差を内性変数の遅延レベルおよびオプションで外生変数の任意の遅延差に回帰させます。

ardl.UECM(endog, lags[, exog, order, trend, ...])

制約なし誤差相関モデル(UECM)

ardl.UECMResults(model, params, cov_params)

UECM モデルのフィッティング結果を保持するクラス。

ardl.BoundsTestResult(stat, crit_vals, ...)

Methods

状態空間モデル

statespace ドキュメント を参照してください。

ベクトル AR とベクトル誤り訂正モデル

vector_ar ドキュメント を参照してください

レジームスイッチングモデル

MarkovRegression(endog, k_regimes[, trend, ...])

一次 k レジーム マルコフ スイッチング回帰モデル

MarkovAutoregression(endog, k_regimes, order)

マルコフスイッチング回帰モデル

概要については、ノートブックの マルコフスイッチング動的回帰 および マルコフスイッチング自己回帰 を参照してください。

時系列フィルタ

bkfilter(x[, low, high, K])

Baxter-King バンドパスフィルタを使用して時系列をフィルタリングします。

hpfilter(x[, lamb])

Hodrick-Prescott フィルタ。

cffilter(x[, low, high, drift])

Christiano Fitzgerald の非対称ランダム ウォーク フィルター。

convolution_filter(x, filt[, nsides])

畳み込みによる線形フィルタリング。

recursive_filter(x, ar_coeff[, init])

自己回帰または再帰的フィルタリング。

miso_lfilter(ar, ma, x[, useic])

複数の時系列を単一の時系列にフィルタリングします。

fftconvolve3(in1[, in2, in3, mode])

FFT を使用して 2 つの N 次元配列を畳み込みます。

fftconvolveinv(in1, in2[, mode])

FFT を使用して 2 つの N 次元配列を畳み込みます。

seasonal_decompose(x[, model, filt, period, ...])

移動平均を使用した季節分解。

STL(endog[, period, seasonal, trend, ...])

LOESSを使用した季節トレンド分解。

MSTL(endog[, periods, windows, lmbda, ...])

複数の季節性に対して LOESS を使用した季節トレンド分解。

DecomposeResult(observed, seasonal, trend, resid)

季節分解の結果クラス

概要については、ノートブック 時系列フィルター を参照してください。

TSAツール

add_lag(x[, col, lags, drop, insert])

配列を指定すると、ラグを含む配列を返します。

add_trend(x[, trend, prepend, has_constant])

トレンドや定数を配列に追加します。

detrend(x[, order, axis])

軸 0 または 1 に沿った指定された次数のトレンドを持つ配列をトレンド除去します。

lagmat(x, maxlag[, trim, original, use_pandas])

ラグの 2 次元配列を作成します。

lagmat2ds(x, maxlag0[, maxlagex, dropex, ...])

変数によって列が配置された 2 次元配列のラグマトリックスを生成します。

VARMA プロセス

VarmaPoly(ar[, ma])

Varma 多項式形式を追跡するクラス

補間

dentonm(indicator, benchmark[, freq])

低周波データを高周波データに変換する修正されたDentonの方法。

決定論的プロセス

決定論的プロセスは、時間傾向または季節パターンを持つ決定論的シーケンスの作成を簡略化します。また、サンプル外予測の決定論的項の生成を簡略化する方法も提供します。 DeterministicProcessAutoReg と一緒に直接使用することができ、複雑な決定論的力学を構築し、外生的な傾向を構築せずに予測することができます。

DeterministicProcess(index, *[, period, ...])

決定論的な項のコンテナ クラス。

TimeTrend([constant, order])

定数および時間傾向の決定論的項

Seasonality(period[, initial_period])

季節ダミーの決定論的項

Fourier(period, order)

フーリエ級数の決定項

CalendarTimeTrend(freq[, constant, order, ...])

カレンダー時間に基づいた定数および時間傾向の決定論的項

CalendarSeasonality(freq, period)

暦時間に基づいた季節ダミーの決定論的項

CalendarFourier(freq, order)

暦時間に基づくフーリエ級数の決定論的項

DeterministicTerm()

すべての決定論的項の抽象基本クラス

CalendarDeterministicTerm(freq)

カレンダー決定論的項の抽象基本クラス

FourierDeterministicTerm(order)

すべてのフーリエ決定論的項の抽象基本クラス

TimeTrendDeterministicTerm([constant, order])

すべての時間トレンドの決定論的項の抽象基本クラス

独自の決定論的項を書きたいユーザは、サブクラス DeterministicTerm を使用しなければなりません。

概要については、ノートブック 時系列モデルにおける決定論的項 を参照してください。

予測モデル

シータモデル

シータモデルは、線形年次推移と単純指数平滑化法(AssimakopoulosとNikolopoulosによる)を組み合わせた単純な予測方法です。シータモデルのパラメータの推定量と予測方法は、次の場所で使用できます:

ThetaModel(endog, *[, period, ...])

AssimakopoulosとNikolopoulos(2000年)のシータ予測モデル

ThetaModelResults(b0, alpha, sigma2, ...)

推定された シータモデルからの結果クラス。

STL分解後の予測

statsmodels.tsa.seasonal.STL は、時系列から季節成分を削除するために一般的に使用されます。非季節化された時系列は、任意の非季節性モデルを使用してモデル化することができ、予測は、非季節性モデルからの予測を、ランダムウォークモデルを使用して予測される最終フルサイクルからの季節成分の推定値に追加することによって構築されます。

STLForecast(endog, model, *[, model_kwargs, ...])

STL を使用して季節性を除去するモデルベースの予測

STLForecastResults(stl, result, model, ...)

STL を使用して季節性を除去した予測の結果

概要については、ノートブック 季節分解 を参照してください。

予測結果

ほとんどの予測メソッドは、予測とその分散の両方を含み、予測間隔を構築できる PredictionResults オブジェクトを返す get_prediction メソッドをサポートしている。

結果クラス

PredictionResults(predicted_mean, var_pred_mean)

予測結果


最終更新日: 2025年01月28日