时间序列统计¶
- darts.utils.statistics.check_seasonality(ts, m=None, max_lag=24, alpha=0.05)[source]¶
检查 TimeSeries ts 是否具有周期 m 的季节性。
如果 m 为 None,我们假设存在一个唯一的季节性周期,该周期从自相关函数 (ACF) 推断得出。
- 参数
ts (
TimeSeries
) – 要检查季节性的时间序列。m (
Optional
[int
,None
]) – 要检查的季节性周期。max_lag (
int
) – ACF 中允许的最大滞后。alpha (
float
) – 所需的置信水平(默认为 5%)。
- 返回值
一个元组 (season, m),其中 season 是一个布尔值,指示序列是否具有季节性,m 是季节性周期。
- 返回类型
Tuple[bool, int]
- darts.utils.statistics.extract_trend_and_seasonality(ts, freq=None, model=ModelMode.MULTIPLICATIVE, method='naive', **kwargs)[source]¶
使用 statsmodels.tsa 从 TimeSeries 实例中提取趋势和季节性。
- 参数
ts (
TimeSeries
) – 要分解的序列freq (
Union
[int
,Sequence
[int
],None
]) – 要使用的季节性周期。model (
Union
[SeasonalityMode
,ModelMode
]) – 要使用的分解类型。必须是from darts.utils.utils import ModelMode, SeasonalityMode
枚举成员。可以是MULTIPLICATIVE
或ADDITIVE
。默认为ModelMode.MULTIPLICATIVE
。method (
str
) – 用于分解序列的方法。 - “naive” : 使用移动平均法的季节性分解 [1]。 - “STL” : 使用 LOESS 的季节-趋势分解 [2]。仅与ADDITIVE
模型类型兼容。 - “MSTL” : 使用 LOESS 的多季节性季节-趋势分解 [3]。仅与ADDITIVE
模型类型兼容。kwargs – 其他关键字参数将传递给分解方法。
- 返回值
趋势和季节性时间序列的元组。
- 返回类型
Tuple[TimeSeries, TimeSeries]
参考
- darts.utils.statistics.granger_causality_tests(ts_cause, ts_effect, maxlag, addconst=True)[source]¶
使用
statsmodels.tsa.stattools.grangercausalitytests()
为 2 个时间序列提供四种 Granger 非因果关系检验。参见 [1]。- 参数
ts_cause (
TimeSeries
) – 单变量确定性时间序列。统计检验确定此时间序列是否“Granger 导致”时间序列 ts_effect(第二个参数)。不支持缺失值。如果 H_0(非因果关系)被拒绝(p 接近 0),则存在“Granger 因果关系”。ts_effect (
TimeSeries
) – 由 ts_cause“Granger 导致”的单变量时间序列。maxlag (
int
) – 如果是整数,计算直到 maxlag 的所有滞后的检验。如果是可迭代对象,仅计算 maxlag 中指定滞后的检验。addconst (
bool
) – 在模型中包含一个常数项。
- 返回值
所有检验结果,字典键是滞后数。对于每个滞后,值是一个元组,第一个元素是一个包含检验统计量、p 值、自由度的字典,第二个元素是受限模型、非受限模型的 OLS 估计结果以及参数 f_test 的约束(对比)矩阵。
- 返回类型
Dict
参考
- darts.utils.statistics.plot_acf(ts, m=None, max_lag=24, alpha=0.05, bartlett_confint=True, fig_size=(10, 5), axis=None, default_formatting=True)[source]¶
绘制 ts 的自相关函数 (ACF),并在滞后 m 处突出显示,带有相应的显著性区间。使用
statsmodels.tsa.stattools.acf()
[1]- 参数
ts (
TimeSeries
) – 应绘制 ACF 的时间序列。m (
Optional
[int
,None
]) – 可选参数,要在图上突出显示的时间滞后。max_lag (
int
) – 要考虑的最大滞后阶数。alpha (
float
) – 要显示的置信区间。bartlett_confint (
bool
) – 布尔值,指示是否应使用 Bartlett 公式计算置信区间。如果设置为 True,则置信区间可用于拟合 ARIMA 模型的模型识别阶段。如果设置为 False,则置信区间可用于检验数据的随机性(即数据中没有时间依赖性)。fig_size (
tuple
[int
,int
]) – 要显示的图形尺寸。axis (
Optional
[axis
,None
]) – 可选参数,要在其上绘制 ACF 的坐标轴对象。default_formatting (
bool
) – 是否使用 darts 默认方案。
参考
- 返回类型
None
- darts.utils.statistics.plot_ccf(ts, ts_other, m=None, max_lag=24, alpha=0.05, bartlett_confint=True, fig_size=(10, 5), axis=None, default_formatting=True)[source]¶
绘制 ts 和 ts_other 之间的互相关函数 (CCF),并在滞后 m 处突出显示,带有相应的显著性区间。使用
statsmodels.tsa.stattools.ccf()
[1]这可用于查找目标与不同协变量滞后之间的互相关。如果 ts_other 与 ts 相同,则等同于 plot_acf()。
- 参数
ts (
TimeSeries
) – 应绘制其与 ts_other 的 CCF 的时间序列。ts_other (
TimeSeries
) – 在 CCF 中要与 ts 进行比较的时间序列。例如,检查不同协变量滞后与目标的互相关。m (
Optional
[int
,None
]) – 可选参数,要在图上突出显示的时间滞后。max_lag (
int
) – 要考虑的最大滞后阶数。alpha (
float
) – 要显示的置信区间。bartlett_confint (
bool
) – 布尔值,指示是否应使用 Bartlett 公式计算置信区间。fig_size (
tuple
[int
,int
]) – 要显示的图形尺寸。axis (
Optional
[axis
,None
]) – 可选参数,要在其上绘制 CCF 的坐标轴对象。default_formatting (
bool
) – 是否使用 darts 默认方案。
参考
- 返回类型
None
- darts.utils.statistics.plot_hist(data, bins=None, density=False, title=None, fig_size=None, ax=None)[source]¶
此函数绘制 TimeSeries 实例或类数组对象中值的直方图。
支持所有类型的时间序列(单变量、多变量、确定性、随机性)。根据 data 中的分量数量,最多可以在一个图形上绘制四个直方图。所有随机样本将与其对应的分量一起显示。
如果 data 是一个类数组对象,所有值将显示在同一个直方图上。
- 参数
data (
Union
[TimeSeries
,list
[float
],ndarray
]) – 要绘制直方图的 TimeSeries 实例或类数组对象。bins (
Union
[int
,ndarray
,list
[float
],None
]) – 可选参数,可以是要显示的 bin 数量的整数值,或一个确定 bin 位置的浮点数类数组对象。density (
bool
) – 布尔值,如果 density 设置为 True,bin 计数将转换为概率密度。title (
Optional
[str
,None
]) – 要显示的图形标题fig_size (
Optional
[tuple
[int
,int
],None
]) – 要显示的图形尺寸。ax (
Optional
[axis
,None
]) – 可选参数,要在其上绘制直方图的坐标轴对象。
- 返回类型
None
- darts.utils.statistics.plot_pacf(ts, m=None, max_lag=24, method='ywadjusted', alpha=0.05, fig_size=(10, 5), axis=None, default_formatting=True)[source]¶
绘制 ts 的偏自相关函数 (PACF),并在滞后 m 处突出显示,带有相应的显著性区间。使用
statsmodels.tsa.stattools.pacf()
[1]- 参数
ts (
TimeSeries
) – 应绘制 ACF 的时间序列。m (
Optional
[int
,None
]) – 可选参数,要在图上突出显示的时间滞后。max_lag (
int
) – 要考虑的最大滞后阶数。method (
str
) –用于计算 PACF 的方法。 - | “yw” or “ywadjusted” : Yule-Walker 方法,分母中对 acovf 进行样本大小调整。
默认。”ywm” or “ywmle” : Yule-Walker 方法,不进行调整。
”ols” : 时间序列对其自身滞后项和常数项的回归。
”ols-inefficient” : 使用单个共同样本估计所有 pacf 系数的时间序列对其滞后项的回归。
”ols-adjusted” : 对滞后项进行偏差调整的时间序列回归。
”ld” or “ldadjusted” : Levinson-Durbin 递推法,带有偏差校正。
”ldb” or “ldbiased” : Levinson-Durbin 递推法,不带偏差校正。
alpha (
float
) – 要显示的置信区间。fig_size (
tuple
[int
,int
]) – 要显示的图形尺寸。axis (
Optional
[axis
,None
]) – 可选参数,要在其上绘制 ACF 的坐标轴对象。default_formatting (
bool
) – 是否使用 darts 默认方案。
参考
- 返回类型
None
- darts.utils.statistics.plot_residuals_analysis(residuals, num_bins=20, fill_nan=True, default_formatting=True, acf_max_lag=24)[source]¶
绘制与残差相关的数据。
此函数接收一个单变量残差 TimeSeries 实例,并绘制其值、分布和 ACF。请注意,如果残差 TimeSeries 实例包含 NaN 值,图形可能会显示不正确。如果将 fill_nan 设置为 True,则将插值填充缺失值。
- 参数
residuals (
TimeSeries
) – 表示残差的单变量 TimeSeries 实例。num_bins (
int
) – 可选参数,确定直方图中 bin 数量的整数值。fill_nan (
bool
) – 布尔值,指示是否应在残差中填充 NaN 值。default_formatting (
bool
) – 是否使用 darts 默认方案。acf_max_lag (
int
) – 在 ACF 图中要显示的最大滞后。必须小于残差长度。
- 返回类型
None
- darts.utils.statistics.remove_from_series(ts, other, model)[source]¶
根据 model 指定的方式,从 TimeSeries ts 中移除 TimeSeries other。例如,用于从序列中移除加性或乘性趋势。
- 参数
ts (
TimeSeries
) – 要修改的时间序列。other (
TimeSeries
) – 要移除的时间序列。model (
Union
[SeasonalityMode
,ModelMode
]) – 考虑的模型类型。必须是from darts.utils.utils import ModelMode, SeasonalityMode
枚举成员。可以是MULTIPLICATIVE
或ADDITIVE
。默认为ModelMode.MULTIPLICATIVE
。
- 返回值
通过从 ts 中移除 other 定义的时间序列。
- 返回类型
- darts.utils.statistics.remove_seasonality(ts, freq=None, model=SeasonalityMode.MULTIPLICATIVE, method='naive', **kwargs)[source]¶
使用 model 分解调整 TimeSeries ts 的 frequency 阶季节性。
- 参数
ts (
TimeSeries
) – 要调整的时间序列。freq (
Optional
[int
,None
]) – 要使用的季节性周期。model (
SeasonalityMode
) – 要使用的分解类型。必须是 from darts import SeasonalityMode 枚举成员。可以是 SeasonalityMode.MULTIPLICATIVE 或 SeasonalityMode.ADDITIVE。默认为 SeasonalityMode.MULTIPLICATIVE。method (
str
) – 用于分解序列的方法。 - “naive” : 使用移动平均法的季节性分解 [1]。 - “STL” : 使用 LOESS 的季节-趋势分解 [2]。仅与ADDITIVE
模型类型兼容。默认为 “naive”。kwargs – 其他关键字参数将传递给分解方法。
- 返回值
对应于季节性调整后的 ‘ts’ 的新 TimeSeries 实例。
- 返回类型
参考
- darts.utils.statistics.remove_trend(ts, model=ModelMode.MULTIPLICATIVE, method='naive', **kwargs)[source]¶
使用 model 分解调整 TimeSeries ts 的趋势。
- 参数
ts (
TimeSeries
) – 要调整的时间序列。model (
ModelMode
) – 要使用的分解类型。必须是from darts.utils.utils import ModelMode
枚举成员。可以是MULTIPLICATIVE
或ADDITIVE
。默认为ModelMode.MULTIPLICATIVE
。method (
str
) – 用于分解序列的方法。 - “naive” : 使用移动平均法的季节性分解 [1]_。 - “STL” : 使用 LOESS 的季节-趋势分解 [2]_。仅与ADDITIVE
模型类型兼容。默认为 “naive”。kwargs – 其他关键字参数将传递给分解方法。
- 返回值
对应于趋势调整后的 ‘ts’ 的新 TimeSeries 实例。
- 返回类型
- darts.utils.statistics.stationarity_test_adf(ts, maxlag=None, regression='c', autolag='AIC')[source]¶
使用
statsmodels.tsa.stattools.adfuller()
为时间序列提供扩展 Dickey-Fuller 单位根检验。参见 [1]。- 参数
ts (
TimeSeries
) – 要检验的时间序列。maxlag (
Optional
[int
,None
]) – 检验中包含的最大滞后,当 None 时使用默认值 12*(nobs/100)^{1/4}。regression (
str
) – 回归中包含的常数项和趋势项阶数。“c” : 仅包含常数项(默认)。“ct” : 包含常数项和趋势项。“ctt” : 包含常数项、线性和二次趋势项。“n” : 不包含常数项和趋势项。autolag (
Optional
[None
,str
]) – 在值 0, 1, …, maxlag 中自动确定滞后长度时使用的方法。如果为 “AIC”(默认)或 “BIC”,则选择最小化对应信息准则的滞后数。“t-stat” 选择 maxlag。从 maxlag 开始,并删除一个滞后,直到最后一个滞后长度的 t 统计量在 5% 大小的检验中显著。如果为 None,则包含的滞后数设置为 maxlag。
- 返回值
- 返回类型
set
参考
- 1
https://statsmodels.pythonlang.cn/dev/generated/statsmodels.tsa.stattools.adfuller.html
- 2(1,2)
MacKinnon (1994, 2010)
- darts.utils.statistics.stationarity_test_kpss(ts, regression='c', nlags='auto')[source]¶
使用
statsmodels.tsa.stattools.kpss()
为时间序列提供 Kwiatkowski-Phillips-Schmidt-Shin 平稳性检验。参见 [1]。- 参数
ts (
TimeSeries
) – 要检验的时间序列。regression (
str
) – KPSS 检验的零假设。‘c’ : 数据围绕一个常数平稳(默认)。‘ct’ : 数据围绕一个趋势平稳。nlags (
Union
[str
,int
]) – 指示要使用的滞后数。如果为 ‘auto’(默认),则使用 Hobijn 等人 (1998) 的数据依赖方法计算滞后。另请参阅 Andrews (1991), Newey & West (1994) 和 Schwert (1989)。如果设置为 ‘legacy’,则使用 Schwert (1989) 中概述的 int(12 * (n / 100)**(1 / 4))。
- 返回值
- 返回类型
set
参考
- 1
https://statsmodels.pythonlang.cn/dev/generated/statsmodels.tsa.stattools.kpss.html
- 2(1,2)
Kwiatkowski et al. (1992)
- darts.utils.statistics.stationarity_tests(ts, p_value_threshold_adfuller=0.05, p_value_threshold_kpss=0.05)[source]¶
使用 Kwiatkowski-Phillips-Schmidt-Shin 和 扩展 Dickey-Fuller 统计检验进行双重平稳性检验。
警告 由于扩展 Dickey-Fuller 检验的零假设是 ts *不*平稳,而 Kwiatkowski-Phillips-Schmidt-Shin 检验的零假设是 ts *平稳*,我们通常不能为这两个检验设定相同的 p 值阈值。将它们都保持在 0.05 似乎是合理的。如果必须测试其他阈值,它们必须朝着相反的方向设置(例如,p_value_threshold_adfuller = 0.01 且 p_value_threshold_kpss = 0.1)。
- 参数
ts (
TimeSeries
) – 要检验的时间序列。p_value_threshold_adfuller (
float
) – 扩展 Dickey-Fuller 检验拒绝平稳性的 p 值阈值。p_value_threshold_kpss (
float
) – Kwiatkowski-Phillips-Schmidt-Shin 检验拒绝非平稳性的 p 值阈值。
- 返回值
ts 是否平稳。
- 返回类型
bool