statsmodels.tsa.deterministic.DeterministicProcess

class statsmodels.tsa.deterministic.DeterministicProcess(index, *, period=None, constant=False, order=0, seasonal=False, fourier=0, additional_terms=(), drop=False)[source]

确定性项的容器类。

直接支持常数、时间趋势,以及单一周期的季节虚拟变量或傅里叶项。除了可以通过构造函数直接初始化的确定性项之外,还可以添加额外的确定性项。

Parameters:
index{Sequence[Hashable], pd.Index}

过程的索引。通常在预测应用中使用时应该是“样本内”索引。

period{float, int}, default None

季节性或傅里叶分量的周期。对于季节性虚拟变量,必须为整数。如果未提供,则从索引中读取freq(如果可用)。

constantbool, default False

是否包含常数。

orderint, default 0

要包含的时间趋势的阶数。例如,2将包括线性和二次项。0表示不包括时间趋势项。

seasonalbool = False

是否包含季节性虚拟变量

fourierint = 0

要包含的傅里叶项的顺序。

additional_termsSequence[DeterministicTerm]

一系列额外的确定性项,包含在过程中。

dropbool, default False

一个标志,指示检查完全共线性并删除任何线性相关的项。

Attributes:
index

进程的索引

terms

过程包含的确定性项

注释

请参阅笔记本 时间序列模型中的确定性项 以获取概述。

示例

>>> from statsmodels.tsa.deterministic import DeterministicProcess
>>> from pandas import date_range
>>> index = date_range("2000-1-1", freq="M", periods=240)

首先是一个具有常数和二次时间趋势的确定性过程。

>>> dp = DeterministicProcess(index, constant=True, order=2)
>>> dp.in_sample().head(3)
            const  trend  trend_squared
2000-01-31    1.0    1.0            1.0
2000-02-29    1.0    2.0            4.0
2000-03-31    1.0    3.0            9.0

通过将 seasonal 设置为 True,可以包含季节性虚拟变量。

>>> dp = DeterministicProcess(index, constant=True, seasonal=True)
>>> dp.in_sample().iloc[:3,:5]
            const  s(2,12)  s(3,12)  s(4,12)  s(5,12)
2000-01-31    1.0      0.0      0.0      0.0      0.0
2000-02-29    1.0      1.0      0.0      0.0      0.0
2000-03-31    1.0      0.0      1.0      0.0      0.0

傅里叶分量可以用来替代捕捉季节性模式,

>>> dp = DeterministicProcess(index, constant=True, fourier=2)
>>> dp.in_sample().head(3)
            const  sin(1,12)  cos(1,12)  sin(2,12)  cos(2,12)
2000-01-31    1.0   0.000000   1.000000   0.000000        1.0
2000-02-29    1.0   0.500000   0.866025   0.866025        0.5
2000-03-31    1.0   0.866025   0.500000   0.866025       -0.5

可以使用额外的项来捕捉多个季节性。

>>> from statsmodels.tsa.deterministic import Fourier
>>> index = date_range("2000-1-1", freq="D", periods=5000)
>>> fourier = Fourier(period=365.25, order=1)
>>> dp = DeterministicProcess(index, period=3, constant=True,
...                           seasonal=True, additional_terms=[fourier])
>>> dp.in_sample().head(3)
            const  s(2,3)  s(3,3)  sin(1,365.25)  cos(1,365.25)
2000-01-01    1.0     0.0     0.0       0.000000       1.000000
2000-01-02    1.0     1.0     0.0       0.017202       0.999852
2000-01-03    1.0     0.0     1.0       0.034398       0.999408

方法

apply(索引)

创建一个具有不同索引的相同确定性过程

in_sample()

生成用于样本内拟合的确定性趋势。

out_of_sample(steps[, forecast_index])

为样本外预测生成确定性趋势

range(开始, 结束)

跨越一系列观测值的确定性项

属性

index

进程的索引

terms

过程包含的确定性项


Last update: Oct 16, 2024