statsmodels.tsa.statespace.sarimax.SARIMAX¶
-
class statsmodels.tsa.statespace.sarimax.SARIMAX(endog, exog=
None, order=(1, 0, 0), seasonal_order=(0, 0, 0, 0), trend=None, measurement_error=False, time_varying_regression=False, mle_regression=True, simple_differencing=False, enforce_stationarity=True, enforce_invertibility=True, hamilton_representation=False, concentrate_scale=False, trend_offset=1, use_exact_diffuse=False, dates=None, freq=None, missing='none', validate_specification=True, **kwargs)[source]¶ 带有外生回归量的季节性自回归积分移动平均模型
- Parameters:¶
- endogarray_like
观察到的时间序列过程 \(y\)
- exogarray_like,
optional 外生回归变量的数组,形状为 nobs x k。
- orderiterable or iterable
ofiterables,optional 模型的(p,d,q)阶数,用于表示AR参数、差分和MA参数的数量。d必须是一个整数,表示过程的积分阶数,而p和q可以是表示AR和MA阶数的整数(以便包含所有直到这些阶数的滞后项),或者是指定要包含的特定AR和/或MA滞后项的可迭代对象。默认是一个AR(1)模型:(1,0,0)。
- seasonal_orderiterable,
optional 季节性成分模型的(P,D,Q,s)阶数,用于AR参数、差分、MA参数和周期性。 D必须是一个整数,表示过程的积分阶数, 而P和Q可以是表示AR和MA阶数的整数(以便包含所有直到这些阶数的滞后),或者是指定要包含的特定AR和/或MA滞后的可迭代对象。s是一个整数,表示周期性(季节中的周期数),通常对于季度数据为4,对于月度数据为12。默认情况下没有季节性效应。
- trend
str{‘n’,’c’,’t’,’ct’}oriterable,optional 控制确定性趋势多项式 \(A(t)\) 的参数。 可以指定为一个字符串,其中 ‘c’ 表示常数(即趋势多项式的零次项),‘t’ 表示随时间的线性趋势,‘ct’ 表示两者兼具。也可以指定为一个可迭代对象,定义要包含的非零多项式指数,按升序排列。例如,[1,1,0,1] 表示 \(a + bt + ct^3\)。默认情况下不包含趋势分量。
- measurement_errorbool,
optional 是否假设内生观测值 endog 存在测量误差。默认值为 False。
- time_varying_regressionbool,
optional 当提供了解释变量exog时,用于选择是否允许外生回归量的系数随时间变化。默认值为False。
- mle_regressionbool,
optional 是否将外生变量的回归系数估计作为最大似然估计的一部分,或者通过卡尔曼滤波(即递归最小二乘法)进行估计。如果time_varying_regression为True,则此项必须设置为False。默认值为True。
- simple_differencingbool,
optional 是否使用部分条件最大似然估计。如果为 True,则在估计之前进行差分,这会丢弃前 \(s D + d\) 行,但会得到一个较小的状态空间公式。有关使用此选项时解释结果的重要细节,请参见“注释”部分。如果为 False,则将完整的 SARIMAX 模型置于状态空间形式,以便可以使用所有数据点进行估计。默认为 False。
- enforce_stationaritybool,
optional 是否将AR参数转换为强制模型自回归分量中的平稳性。默认值为True。
- enforce_invertibilitybool,
optional 是否将MA参数转换以强制模型中移动平均分量的可逆性。默认值为True。
- hamilton_representationbool,
optional 是否使用ARMA过程的Hamilton表示法(如果为True)或Harvey表示法(如果为False)。默认为False。
- concentrate_scalebool,
optional 是否将尺度(误差项的方差)从似然中集中出来。这通过最大似然估计减少了需要估计的参数数量,但尺度参数的标准误差将不可用。
- trend_offset
int,optional 时间趋势值的起始偏移量。默认值为1,因此如果trend=’t’,趋势值等于1, 2, …, nobs。通常仅在通过扩展先前数据集创建模型时设置。
- use_exact_diffusebool,
optional 是否对非平稳状态使用精确的扩散初始化。默认是 False(在这种情况下使用近似的扩散初始化)。
- **kwargs
关键字参数可用于为状态空间矩阵或卡尔曼滤波选项提供默认值。详情请参见表示法和卡尔曼滤波器。
- Attributes:¶
- measurement_errorbool
是否假设内生观测值 endog 存在测量误差。
- state_errorbool
转移方程是否具有误差分量。
- mle_regressionbool
外生变量的回归系数是否通过最大似然估计法进行估计。
- state_regressionbool
外生变量的回归系数是否作为状态空间的一部分,并通过卡尔曼滤波进行估计。
- time_varying_regressionbool
外生回归变量的系数是否允许随时间变化。
- simple_differencingbool
是否使用部分条件最大似然估计。
- enforce_stationaritybool
是否将AR参数进行转换以确保模型自回归部分的平稳性。
- enforce_invertibilitybool
是否将MA参数转换以强制模型中移动平均分量的可逆性。
- hamilton_representationbool
是否使用ARMA过程的Hamilton表示法。
- trend
str{‘n’,’c’,’t’,’ct’}oriterable 控制确定性趋势多项式 \(A(t)\) 的参数。更多信息请参阅类参数文档。
- polynomial_ar
ndarray 包含自回归滞后多项式滞后的数组,从最低阶到最高阶排序。多项式从滞后0开始。初始化为1,除非系数被约束为零(在这种情况下为零)。
- polynomial_ma
ndarray 包含移动平均滞后多项式滞后的数组,从最低阶到最高阶排序。初始化为1,除非某个系数被约束为零(在这种情况下为零)。
- polynomial_seasonal_ar
ndarray 包含季节性移动平均滞后多项式滞后的数组,从最低阶到最高阶排序。初始化为1,除非某个系数被约束为零(在这种情况下为零)。
- polynomial_seasonal_ma
ndarray 包含季节性移动平均滞后多项式滞后的数组,从最低阶到最高阶排序。初始化为1,除非某个系数被约束为零(在这种情况下为零)。
- polynomial_trend
ndarray 包含趋势多项式系数的数组,从最低次到最高次排序。初始化为1,除非系数被约束为零(在这种情况下为零)。
- k_ar
int 模型中的最高自回归阶数,从零开始索引。
- k_ar_params
int 要估计的自回归参数的数量。
- k_diff
int 积分顺序。
- k_ma
int 模型中最高移动平均阶数,从零开始索引。
- k_ma_params
int 要估计的移动平均参数的数量。
- seasonal_periods
int 赛季中的周期数。
- k_seasonal_ar
int 模型中最高季节性自回归阶数,从零开始索引。
- k_seasonal_ar_params
int 要估计的季节自回归参数的数量。
- k_seasonal_diff
int 季节性整合的顺序。
- k_seasonal_ma
int 模型中最高季节性移动平均订单,从零开始索引。
- k_seasonal_ma_params
int 要估计的季节移动平均参数的数量。
- k_trend
int 趋势多项式的阶数加一(即常数多项式会有k_trend=1)。
- k_exog
int 外生回归变量的数量。
注释
SARIMA模型被指定为\((p, d, q) \times (P, D, Q)_s\)。
\[\phi_p (L) \tilde \phi_P (L^s) \Delta^d \Delta_s^D y_t = A(t) + \theta_q (L) \tilde \theta_Q (L^s) \zeta_t\]在单变量结构模型方面,这可以表示为
\[\begin{split}y_t & = u_t + \eta_t \\ \phi_p (L) \tilde \phi_P (L^s) \Delta^d \Delta_s^D u_t & = A(t) + \theta_q (L) \tilde \theta_Q (L^s) \zeta_t\end{split}\]其中 \(\eta_t\) 仅适用于测量误差的情况(尽管在纯回归模型的情况下也会使用,即如果 p=q=0)。
在这个模型中,带有SARIMA误差的回归可以很容易地表示为
\[\begin{split}y_t & = \beta_t x_t + u_t \\ \phi_p (L) \tilde \phi_P (L^s) \Delta^d \Delta_s^D u_t & = A(t) + \theta_q (L) \tilde \theta_Q (L^s) \zeta_t\end{split}\]此模型是在提供外生回归变量时使用的。
请注意,简化形式的滞后多项式将写为:
\[\begin{split}\Phi (L) \equiv \phi_p (L) \tilde \phi_P (L^s) \\ \Theta (L) \equiv \theta_q (L) \tilde \theta_Q (L^s)\end{split}\]如果mle_regression为True,回归系数将被视为通过最大似然估计的额外参数。否则,它们将作为状态的一部分,并使用扩散初始化。然而,在这种情况下,由于近似扩散初始化,结果可能会对初始方差敏感。
此类允许以状态空间模型的两种不同基础表示形式来表示ARMA模型:Hamilton的表示形式和Harvey的表示形式。两者在分析上是等价的,因为它们都是ARMA模型的分析表示,但每个模型的状态向量具有不同的含义。因此,最大似然估计不会导致相同的参数估计,即使使用相同的参数集,也会导致不同的对数似然值。
Harvey表示法很方便,因为它允许将差分整合到状态向量中,从而可以使用所有观测值进行估计。
在这种差分模型的实现中,Hamilton 表示法无法适应状态向量中的差分,因此必须使用 simple_differencing(它在估计之前进行差分,因此会丢失前 d + sD 个观测值)。
许多其他软件包使用汉密尔顿表示法,因此与Stata和R的测试需要使用它以及简单的差分(如Stata所做的那样)。
如果使用filter_concentrated = True,则模型的尺度将从似然中集中出来。这样做的一个好处是参数向量的维度减少,从而使得对数似然函数的数值最大化可能更快且更稳定。如果在具有测量误差的模型中使用此选项,需要注意的是,估计的测量误差参数将是相对于尺度的,并且命名为“snr.measurement_error”而不是“var.measurement_error”。在这种情况下,要计算测量误差的方差,需要将snr.measurement_error参数乘以尺度。
如果使用 simple_differencing = True,则在将模型转换为状态空间形式之前,会对 endog 和 exog 数据进行差分。这具有与用户在构建模型之前对数据进行差分相同的效果,这对使用结果有影响:
预测和预报将基于差分数据,而不是原始数据。(如果使用simple_differencing = False,则预测和预报将基于原始数据)。
如果原始数据具有Int64Index,则将为差分数据创建一个新的RangeIndex,该索引从一开始,并且预测和预测将使用这个新索引。
关于状态空间模型的详细信息可以在[1]中找到。一些特定的参考文献包括:
第3.4章描述了ARMA和ARIMA模型在状态空间形式中的表示(使用Harvey表示法),并提供了基本季节模型和具有乘法形式的模型的参考(例如航空模型)。它还展示了一个完整的ARIMA过程的状态空间模型(如果simple_differencing=False,这就是这里所做的)。
第3.6章描述了通过卡尔曼滤波器估计回归效应(如果mle_regression为False,则执行此操作),具有时变系数的回归,以及具有ARMA误差的回归(回想一下,如果存在回归效应,则此类估计的模型是具有SARIMA误差的回归)。
第8.4章描述了将ARMA模型应用于示例数据集的应用。文档中的一个示例IPython笔记本提供了本节的复现。
参考文献
[1]德宾, 詹姆斯, 和西姆·扬·库普曼. 2012. 《状态空间方法的时间序列分析:第二版》. 牛津大学出版社.
方法
clone(endog[, exog])克隆状态空间模型并使用新数据,可选择新的规格
filter(params[, transformed, ...])卡尔曼滤波
fit([start_params, transformed, ...])通过卡尔曼滤波以最大似然法拟合模型。
fit_constrained(约束[, start_params])使用一些受等式约束的参数拟合模型。
fix_params(params)将参数固定为特定值(上下文管理器)
from_formula(公式, 数据[, 子集])状态空间模型未实现
handle_params(params[, transformed, ...])确保模型参数满足形状和其他要求
hessian(params, *args, **kwargs)似然函数的Hessian矩阵,在给定参数处求值
impulse_responses(params[, steps, impulse, ...])脉冲响应函数
information(params)模型的费舍尔信息矩阵。
初始化SARIMAX模型。
initialize_approximate_diffuse([variance])初始化近似漫反射
initialize_default([...])初始化默认值
initialize_known(初始状态, ...)初始化已知
initialize_statespace(**kwargs)初始化状态空间表示
初始化静止状态
loglike(params, *args, **kwargs)对数似然评估
loglikeobs(params[, transformed, ...])对数似然评估
observed_information_matrix(params[, ...])观测信息矩阵
opg_information_matrix(params[, ...])梯度信息矩阵的外积
predict(params[, exog])模型拟合后,predict 返回拟合值。
准备用于状态空间表示的数据
score(params, *args, **kwargs)在参数处计算得分函数。
score_obs(params[, method, transformed, ...])计算每个观测值的得分,在参数处进行评估
set_conserve_memory([conserve_memory])设置内存保护方法
set_filter_method([filter_method])设置过滤方法
set_inversion_method([inversion_method])设置反演方法
set_smoother_output([smoother_output])设置平滑输出
set_stability_method([stability_method])设置数值稳定性方法
simulate(params, nsimulations[, ...])模拟一个遵循状态空间模型的新时间序列
simulation_smoother([simulation_output])获取状态空间模型的模拟平滑器。
smooth(params[, transformed, ...])卡尔曼平滑
transform_jacobian(无约束[, ...])参数变换函数的雅可比矩阵
transform_params(无约束)将优化器使用的无约束参数转换为似然评估中使用的约束参数。
untransform_params(constrained)将似然评估中使用的约束参数转换为优化器使用的无约束参数
update(params[, transformed, ...])更新模型的参数
属性
内生变量名称
外生变量的名称。
初始设计矩阵
初始选择矩阵
初始状态截距向量
初始转移矩阵
所有可能的模型参数的latex名称。
所有可能的模型参数的纯文本名称。
模型中每个多项式的阶数。
人类可读的参数名称列表(适用于模型中实际包含的参数)。
模型中实际包含的参数列表,按排序顺序排列。
最大似然估计的初始参数
(list of str) 未观测状态的可读名称列表。