statsmodels.tsa.statespace.exponential_smoothing.ExponentialSmoothing¶
-
class statsmodels.tsa.statespace.exponential_smoothing.ExponentialSmoothing(endog, trend=
False, damped_trend=False, seasonal=None, initialization_method='estimated', initial_level=None, initial_trend=None, initial_seasonal=None, bounds=None, concentrate_scale=True, dates=None, freq=None)[source]¶ 线性指数平滑模型
- Parameters:¶
- endogarray_like
观察到的时间序列过程 \(y\)
- trendbool,
optional 是否包含趋势成分。默认是False。
- damped_trendbool,
optional 是否包含阻尼的趋势分量。默认是False。
- seasonal
int,optional 季节性(Holt-Winters)模型中一个完整季节性周期的期数。例如,对于具有年度周期的季度数据为4,对于具有每周周期的每日数据为7。默认是没有季节性效应。
- initialization_method
str,optional 初始化递归的方法。以下之一:
‘估计的’
‘集中’
‘启发式’
‘已知’
如果使用‘已知’初始化,则必须传递initial_level,以及initial_slope和initial_seasonal(如果适用)。默认是‘估计’。
- initial_level
float,optional 初始水平组件。仅在初始化是“已知”时使用。
- initial_trend
float,optional 初始趋势成分。仅在初始化方式为‘已知’时使用。
- initial_seasonalarray_like,
optional 初始的季节性成分。一个长度为seasonal或长度为seasonal - 1的数组(在这种情况下,最后一个初始值会被计算以使平均效果为零)。仅在初始化方式为‘已知’时使用。
- boundsiterable[
tuple],optional 一个包含参数边界的可迭代对象。必须包含四个元素,每个元素都是一个形式为 (下限, 上限) 的元组。默认值为 (0.0001, 0.9999) 用于水平、趋势和季节性平滑参数,以及 (0.8, 0.98) 用于趋势阻尼参数。
- concentrate_scalebool,
optional 是否将尺度(误差项的方差)从似然中集中出来。
- Attributes:¶
endog_names内生变量的名称。
exog_names外生变量的名称。
- initial_variance
- initialization
- k_params
- loglikelihood_burn
param_names(list of str) 人类可读的参数名称列表(用于参数)
start_params(数组) 最大似然估计的初始参数。
state_names(list of str) 未观测状态的可读名称列表。
- tolerance
注释
概述
该模型的参数和状态是通过将指数平滑方程设置为线性高斯状态空间模型的一个特例,并应用卡尔曼滤波器来估计的。因此,它的性能略逊于专门的指数平滑模型,
statsmodels.tsa.holtwinters.ExponentialSmoothing,并且它不支持乘法(非线性)指数平滑模型。然而,作为状态空间模型的子类,该模型类与这些模型共享一组一致的功能,这可以使其更易于使用。此外,它支持计算预测的置信区间,并且支持将初始状态从似然函数中集中出去。
模型时间
典型的指数平滑结果对应于状态空间模型的“过滤”输出,因为它们既包含了向新时间点的过渡(将趋势添加到水平并推进季节性),又包含了更新以纳入观测数据点的信息。相比之下,状态空间模型的“预测”输出仅包含过渡。
一个后果是,“初始状态”对应于时间t=0时的“过滤”状态,但这与Statsmodels中通常使用的状态空间初始化不同,后者使用时间t=1时的“预测”状态来初始化模型。如果直接设置初始状态(通过initialization_method=’known’),这一点需要牢记。
季节性
在季节性模型中,需要注意的是季节性因素按以下顺序包含在该模型的状态向量中: [seasonal, seasonal.L1, seasonal.L2, seasonal.L3, …]。在时间 t, ‘seasonal’ 状态保存了在时间 t 起作用季节性因子,而 ‘seasonal.L’ 状态保存了在时间 t-1 起作用季节性因子。
假设季节性阶数为 n_seasons = 4。那么,由于初始状态对应于时间 t=0,而时间 t=1 与时间 t=-3 处于同一季节,时间 t=1 的初始季节性因子来自滞后“L3”的初始季节性因子(即在时间 t=1,这将是“L4”季节性因子以及“L0”或当前季节性因子)。
当初始状态被估计时(initialization_method=’estimated’), 只有n_seasons - 1个参数,因为季节性因素被归一化为总和为一。 估计的三个参数对应于时间t=0时的滞后“L0”、“L1”和“L2”季节性因素(或者,时间t=1时的滞后“L1”、“L2”和“L3”)。
当给定初始状态时(initialization_method=’known’),时间t=0的初始季节性因子必须通过参数initial_seasonal给出。这可以是一个长度为n_seasons - 1的数组——在这种情况下,它应包含时间t=0时的滞后“L0” - “L2”(按此顺序)季节性因子——或者是一个长度为n_seasons的数组,在这种情况下,它应包含时间t=0时的“L0” - “L3”(按此顺序)季节性因子。
请注意,在状态向量和参数中,“L0”季节性被称为“季节性”或“初始季节性”,而i>0的滞后被称为“季节性.L{i}”。
参考文献
- [1] Hyndman, Rob, Anne B. Koehler, J. Keith Ord, and Ralph D. Snyder.
使用指数平滑法进行预测:状态空间方法。 Springer Science & Business Media, 2008.
方法
clone(endog[, exog])克隆状态空间模型并使用新数据,可选择新的规格
filter(params[, cov_type, cov_kwds, ...])卡尔曼滤波
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)模型的费舍尔信息矩阵。
初始化(可能重新初始化)一个模型实例。
initialize_approximate_diffuse([variance])初始化近似漫反射
initialize_known(初始状态, ...)初始化已知
initialize_statespace(**kwargs)初始化状态空间表示
初始化静止状态
loglike(参数, *参数, **关键字参数)对数似然评估
loglikeobs(参数[, 转换, ...])对数似然评估
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[, cov_type, cov_kwds, ...])卡尔曼平滑
transform_jacobian(未约束[, ...])参数变换函数的雅可比矩阵
transform_params(无约束)将优化器使用的无约束参数转换为似然评估中使用的约束参数
untransform_params(constrained)将似然评估中使用的约束参数转换为优化器使用的无约束参数
update(params[, transformed, ...])更新模型的参数
属性
内生变量的名称。
外生变量的名称。
(list of str) 人类可读的参数名称列表(适用于模型中实际包含的参数)。
(数组) 最大似然估计的初始参数。
(list of str) 未观测状态的可读名称列表。