時間序列分析 tsa

statsmodels.tsa 包含用於時間序列分析的模型類別與函式。基本模型包括單變數自我迴歸模型 (AR)、向量自我迴歸模型 (VAR) 和單變數自我迴歸移動平均模型 (ARMA)。非線性模型包括馬可夫切換動態迴歸和自我迴歸。它還包括時間序列的描述性統計資料,例如自相關、偏自相關函數和週期圖,以及 ARMA 或相關過程的相應理論性質。它還包括使用自迴歸和移動平均滯後多項式的方法。此外,還提供相關的統計檢定和一些有用的輔助函式。

估計可以透過精確或條件最大概似法或條件最小平方來完成,可以使用卡爾曼濾波器或直接濾波器。

目前,函式和類別必須從對應的模組匯入,但主要類別將在 statsmodels.tsa 命名空間中提供。 statsmodels.tsa 內的模組結構如下:

  • stattools:經驗屬性和檢定,acf、pacf、Granger 因果關係、ADF 單根檢定、KPSS 檢定、BDS 檢定、Ljung-Box 檢定等。

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

使用非遞迴 yule_walker 估計的部分自相關。

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

通過 OLS 計算部分自相關。

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

計算 Burg 的部分自相關估計器。

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

計算兩個序列之間的交叉共變數。

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

交叉相關函數。

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

擴增迪基-福勒單位根檢定。

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[, ...])

兩個時間序列的格蘭傑非因果關係的四種檢定。

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

Holt Winter 的指數平滑法

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) 和向量誤差修正模型

請參閱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 卷積兩個 N 維陣列。

fftconvolveinv(in1, in2[, mode])

使用 FFT 卷積兩個 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])

建立滯後 2d 陣列。

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

為 2d 陣列產生滯後矩陣,欄位按變數排列。

VARMA 過程

VarmaPoly(ar[, ma])

用於追蹤 Varma 多項式格式的類別

內插

dentonm(indicator, benchmark[, freq])

修改的丹頓方法,用於將低頻數據轉換為高頻數據。

確定性過程

確定性過程簡化了建立具有時間趨勢或季節性模式的確定性序列。它們還提供了簡化產生用於樣本外預測的確定性項的方法。 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 移除季節性進行預測的結果

請參閱筆記本 季節性分解 以取得概觀。

預測結果

大多數預測方法都支援 get_prediction 方法,該方法會返回一個 PredictionResults 物件,其中包含預測、其變異數,並且可以建構預測區間。

結果類別

PredictionResults(predicted_mean, var_pred_mean)

預測結果


上次更新:2024 年 10 月 03 日