時系列分析 tsa

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

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

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

  • stattools : 経験的特性と検定、acf、pacf、グレンジャー因果性、adf単位根検定、kpss検定、bds検定、リュングボックス検定など。

  • ar_model : 単変量自己回帰過程、条件付き最尤法と正確な最尤法、および条件付き最小二乗法による推定

  • arima.model : 単変量ARIMA過程、代替法による推定

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

  • vector_ar, var : ベクトル自己回帰過程 (VAR) とベクトル誤差修正モデル、推定、インパルス応答分析、予測誤差分散分解、およびデータ可視化ツール。vector_arドキュメントを参照してください。

  • arma_process : 与えられたパラメーターを持つarma過程の特性。これには、ARMA、MA、AR表現間の変換ツール、およびacf、pacf、スペクトル密度、インパルス応答関数などが含まれます。

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

  • tsatools : ラグ変数配列の作成、トレンドの回帰変数の構築、デトレンドなどを行うための追加のヘルパー関数。

  • filters : 時系列フィルタリングのヘルパー関数

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

時系列分析に役立つ追加の関数の一部は、statsmodelsの他の部分にあります。たとえば、追加の統計検定などです。

関連する関数の一部は、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])

非再帰的ユール・ウォーカー法で偏自己相関を推定します。

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])

自己回帰過程のためのレヴィンソン・ダービン再帰。

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

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

stattools.innovations_filter(endog, theta)

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

stattools.levinson_durbin_pacf(pacf[, nlags])

acfとar係数を返すレヴィンソン・ダービンアルゴリズム。

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) 指数平滑モデルの適合結果

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

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クラス(カルマンフィルターによる完全なMLEを使用)でも適合させることができます。

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

誤差修正モデル(ECM)

誤差修正モデルは、内生変数の差分を、内生変数のラグ付きレベルと、オプションで外生変数のラグ付き差分に回帰するARDLモデルの再パラメータ化です。

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

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

ardl.UECMResults(model, params, cov_params)

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

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

メソッド

状態空間モデル

状態空間のドキュメントを参照してください。

ベクトル自己回帰モデルとベクトル誤差修正モデル

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法。

決定論的プロセス

決定論的プロセスは、時間のトレンドや季節パターンを持つ決定論的なシーケンスの作成を簡素化します。また、アウトオブサンプル予測用の決定論的項の生成を簡素化するためのメソッドも提供します。DeterministicProcessは、AutoRegと直接使用して、複雑な決定論的ダイナミクスを構築したり、外生トレンドを構築せずに予測したりできます。

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 をサブクラス化する必要があります。

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

予測モデル

Theta モデル

Theta モデルは、線形時間トレンドと単純指数平滑化法(Assimakopoulos & Nikolopoulos)を組み合わせたシンプルな予測手法です。Theta モデルのパラメータの推定量と予測方法は、以下で利用できます。

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

Assimakopoulos と Nikolopoulos (2000) による Theta 予測モデル

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

推定された Theta モデルの結果クラス。

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)

予測結果


最終更新日: 2024年10月03日