當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python cuml.tsa.ARIMA用法及代碼示例


用法:

class cuml.tsa.ARIMA(endog, *, order: Tuple[int, int, int] =(1, 1, 1), seasonal_order: Tuple[int, int, int, int] =(0, 0, 0, 0), exog=None, fit_intercept=True, simple_differencing=True, handle=None, verbose=False, output_type=None)

為 in- 和 out-of-sample 時間序列預測實現批處理 ARIMA 模型,並支持季節性 (SARIMA)

ARIMA 代表Auto-Regressive 綜合移動平均線。看https://en.wikipedia.org/wiki/Autoregressive_integrated_moving_average

此類可以將 ARIMA(p,d,q) 或 ARIMA(p,d,q)(P,D,Q)_s 模型擬合到一批相同長度(或不同長度,使用缺失值填充的開始)。該實現旨在在使用大批量時間序列時提供最佳性能。

參數

endog數據幀或類似數組(設備或主機)

內生變量,假設每個時間序列都在列中。可接受的格式:cuDF DataFrame、cuDF 係列、NumPy ndarray、Numba 設備 ndarray、cuda 陣列接口兼容陣列(如 CuPy)。接受缺失值,用 NaN 表示。

order元組[int, int, int]

模型的 ARIMA 階 (p, d, q)

seasonal_order: Tuple[int, int, int, int]

模型的季節性 ARIMA 階數 (P, D, Q, s)

exog數據幀或類似數組(設備或主機)

外生變量,假設每個時間序列都在列中,以便與同一批次成員關聯的變量相鄰(列數:n_exog * batch_size)可接受的格式:cuDF DataFrame、cuDF Series、NumPy ndarray、Numba 設備ndarray,cuda 數組接口兼容的數組,如 CuPy。不支持缺失值。

fit_interceptbool 或 int(默認 = True)

是否在模型中包含恒定趨勢 mu

simple_differencing: bool or int (default = True)

如果為 True,則數據在傳遞到卡爾曼濾波器之前會進行差分。如果為 False,則差分是狀態空間模型的一部分。在某些情況下,可以忽略此設置:使用置信區間計算預測將強製其為 False ;與 CSS 方法擬合將強製其為 True。注意:預測始終針對原始序列,而 statsmodels 在 simple_differencing 為 True 時計算差異序列的預測。

handlecuml.Handle

指定 cuml.handle 保存用於此模型中計算的內部 CUDA 狀態。最重要的是,這指定了將用於模型計算的 CUDA 流,因此用戶可以通過在多個流中創建句柄在不同的流中同時運行不同的模型。如果為 None,則創建一個新的。

verboseint 或布爾值,默認=False

設置日誌記錄級別。它必須是 cuml.common.logger.level_* 之一。有關詳細信息,請參閱詳細級別。

output_type{‘input’, ‘cudf’, ‘cupy’, ‘numpy’, ‘numba’},默認=無

用於控製估計器的結果和屬性的輸出類型的變量。如果為 None,它將繼承在模塊級別設置的輸出類型 cuml.global_settings.output_type 。有關詳細信息,請參閱輸出數據類型配置。

注意

Performance: 。大多數操作使用的設備內存是 。執行時間是 n_obsbatch_size 的線性函數(如果 batch_size 很大),但隨著 r 增長非常快。

性能針對非常大的批量(例如數千個係列)進行了優化。

參考

此類深受 Python 庫 statsmodels 的影響,尤其是 statsmodels.tsa.statespace.sarimax.SARIMAX 。見https://www.statsmodels.org/stable/statespace.html

此外,以下書籍是有用的參考:“Time Series Analysis by State Space Methods”,J. Durbin,S.J.考夫曼,第 2 版(2012 年)。

例子

import numpy as np
from cuml.tsa.arima import ARIMA

# Create seasonal data with a trend, a seasonal pattern and noise
n_obs = 100
np.random.seed(12)
x = np.linspace(0, 1, n_obs)
pattern = np.array([[0.05, 0.0], [0.07, 0.03],
                    [-0.03, 0.05], [0.02, 0.025]])
noise = np.random.normal(scale=0.01, size=(n_obs, 2))
y = (np.column_stack((0.5*x, -0.25*x)) + noise
    + np.tile(pattern, (25, 1)))

# Fit a seasonal ARIMA model
model = ARIMA(y,
              order=(0,1,1),
              seasonal_order=(0,1,1,4),
              fit_intercept=False)
model.fit()

# Forecast
fc = model.forecast(10)
print(fc)

輸出:

[[ 0.55204599 -0.25681163]
[ 0.57430705 -0.2262438 ]
[ 0.48120315 -0.20583011]
[ 0.535594   -0.24060046]
[ 0.57207541 -0.26695497]
[ 0.59433647 -0.23638713]
[ 0.50123257 -0.21597344]
[ 0.55562342 -0.25074379]
[ 0.59210483 -0.27709831]
[ 0.61436589 -0.24653047]]

屬性

orderARIMA訂單

模型的 ARIMA 順序 (p, d, q, P, D, Q, s, k, n_exog)

d_y: device array

設備上的時間序列數據

n_obs: int

觀察次數

batch_size: int

批次中的時間序列數

dtype: numpy.dtype

數據和參數的浮點類型

niter: numpy.ndarray

擬合後,包含每個時間序列收斂前的迭代次數。

相關用法


注:本文由純淨天空篩選整理自rapids.ai大神的英文原創作品 cuml.tsa.ARIMA。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。