# AR example from statsmodels.tsa.ar_model import AutoReg from random import random # contrived dataset data = [x + random() for x in range(1, 100)] # fit model model = AutoReg(data, lags=1) model_fit = model.fit() # make prediction yhat = model_fit.predict(len(data), len(data)) print(yhat)
与自回归 (AR) 模型 一起,MA模型是更一般的时间序列 ARMA 和 ARIMA 模型的特例和关键组件,它们具有更复杂的随机结构。
与 AR 模型相反,有限 MA 模型始终是静止的。
更多内容可参见 维基百科上的移动平均模型[3]
Python代码
我们可以使用 ARIMA 类来创建 MA 模型并设置零阶 AR 模型。我们必须在 order 参数中指定 MA 模型的顺序。
# MA example from statsmodels.tsa.arima.model import ARIMA from random import random # contrived dataset data = [random() for x in range(1, 100)] # fit model model = ARIMA(data, order=(0, 0, 1)) model_fit = model.fit() # make prediction yhat = model_fit.predict(len(data), len(data))
03 自回归移动平均线 (ARMA)
自回归移动平均 (ARMA) 方法将序列中的下一步建模为之前时间步骤的观测值和残差的线性函数。
它结合了自回归 (AR) 和移动平均 (MA) 模型。模型的符号涉及指定 和 模型的顺序作为 ARMA 函数的参数,例如 。ARIMA 模型可用于开发 AR 或 MA 模型。
该方法适用于没有趋势和季节性成分的单变量时间序列。
定义
符号 指的是具有 个自回归项和 个移动平均项的模型。该模型包含 和 模型,
在时间序列的统计分析中,自回归移动平均( ARMA )模型根据两个多项式提供了对(弱)平稳随机过程的简约描述,一个用于自回归(AR),第二个用于移动平均(嘛)。一般ARMA模型在1951年的论文中被描述彼得·惠特尔,在时间序列分析假设检验,它是在1970年的书普及乔治EP盒和格威利姆·詹金斯。
# ARMA example from statsmodels.tsa.arima.model import ARIMA from random import random # contrived dataset data = [random() for x in range(1
, 100)] # fit model model = ARIMA(data, order=(2, 0, 1)) model_fit = model.fit() # make prediction yhat = model_fit.predict(len(data), len(data)) print(yhat)
# ARIMA example from statsmodels.tsa.arima.model import ARIMA from random import random # contrived dataset data = [random() for x in range(1, 100)] # fit model model = ARIMA(data, order=(1, 1, 1)) model_fit = model.fit() # make prediction yhat = model_fit.predict(len(data), len(data), typ='levels')
# SARIMA example from statsmodels.tsa.statespace.sarimax import SARIMAX from random import random # contrived dataset data = [random() for x in range(1, 100)] # fit model model = SARIMAX(data, order=(1, 1, 1), seasonal_order=(0, 0, 0, 0)) model_fit = model.fit(disp=False) # make prediction yhat = model_fit.predict(len(data), len(data))
# SARIMAX example from statsmodels.tsa.statespace.sarimax import SARIMAX from random import random # contrived dataset data1 = [x+random() for x in range(1, 100)] data2 = [x+random() for x in range(101, 200)] # fit model model = SARIMAX(data1, exog=data2, order=(1, 1, 1), seasonal_order=(0, 0, 0, 0)) model_fit = model.fit(disp=False) # make prediction exog2 = [200+random()] yhat = model_fit.predict(len(data1), len(data1), exog=[exog2])
07 向量自回归 (VAR)
向量自回归(VAR)方法使用 AR 模型模拟每个时间序列中的下一步。AR 是多个并行时间序列的推广,例如,多变量时间序列。
该模型的符号涉及指定 模型的阶数作为 VAR 函数的参数,例如 。
该方法适用于没有趋势和季节性成分的多变量时间序列。
定义
VAR 模型描述了一组 个变量(称为内生变量)随时间的演变。每个时间段都有编号,
一般而言, 阶 VAR 是指包含最后 个时间段的滞后的 VAR 模型。 阶VAR模型表示为""。一个 阶 VAR 模型写为
VAR 模型不需要像具有联立方程的结构模型那样了解影响变量的力。唯一需要的先验知识是可以假设随着时间的推移相互影响的变量列表。
更多内容可参见维基百科上的向量自回归[6]
Python代码
# VAR example from statsmodels.tsa.vector_ar.var_model import VAR from random import random # contrived dataset with dependency data = list() for i in range(100): v1 = i + random() v2 = v1 + random() row = [v1, v2] data.append(row) # fit model model = VAR(data) model_fit = model.fit() # make prediction yhat = model_fit.forecast(model_fit.y, steps=1)
08 向量自回归移动平均值(VARMA)
向量自回归移动平均(VARMA)方法使用 ARMA 模型对每个时间序列中的下一步进行建模。这是 ARMA 对多个并行时间序列的推广,例如多变量时间序列。
# VARMA example from statsmodels.tsa.statespace.varmax import VARMAX from random import random # contrived dataset with dependency data = list() for i in range(100): v1 = random() v2 = v1 + random() row = [v1, v2] data.append(row) # fit model model = VARMAX(data, order=(1, 1)) model_fit = model.fit(disp=False) # make prediction yhat = model_fit.forecast()
# VARMAX example from statsmodels.tsa.statespace.varmax import VARMAX from
random import random # contrived dataset with dependency data = list() for i in range(100): v1 = random() v2 = v1 + random() row = [v1, v2] data.append(row) data_exog = [x + random() for x in range(100)] # fit model model = VARMAX(data, exog=data_exog, order=(1, 1)) model_fit = model.fit(disp=False) # make prediction data_exog2 = [[100]] yhat = model_fit.forecast(exog=data_exog2)
# SES example from statsmodels.tsa.holtwinters import SimpleExpSmoothing from random import random # contrived dataset data = [random() for x in range(1, 100)] # fit model model = SimpleExpSmoothing(data) model_fit = model.fit() # make prediction yhat = model_fit.predict(len(data), len(data)) print(yhat)
# HWES example from statsmodels.tsa.holtwinters import ExponentialSmoothing from random import random # contrived dataset data = [x + random() for x in range(1, 100)] # fit model model = ExponentialSmoothing(data) model_fit = model.fit() # make prediction yhat = model_fit.predict(len(data), len(data))