时间序列统计

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 枚举成员。可以是 MULTIPLICATIVEADDITIVE。默认为 ModelMode.MULTIPLICATIVE

  • method (str) – 用于分解序列的方法。 - “naive” : 使用移动平均法的季节性分解 [1]。 - “STL” : 使用 LOESS 的季节-趋势分解 [2]。仅与 ADDITIVE 模型类型兼容。 - “MSTL” : 使用 LOESS 的多季节性季节-趋势分解 [3]。仅与 ADDITIVE 模型类型兼容。

  • kwargs – 其他关键字参数将传递给分解方法。

返回值

趋势和季节性时间序列的元组。

返回类型

Tuple[TimeSeries, TimeSeries]

参考

1

https://statsmodels.pythonlang.cn/devel/generated/statsmodels.tsa.seasonal.seasonal_decompose.html

2

https://statsmodels.pythonlang.cn/devel/generated/statsmodels.tsa.seasonal.STL.html

3

https://statsmodels.pythonlang.cn/devel/generated/statsmodels.tsa.seasonal.MSTL.html

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

参考

1

https://statsmodels.pythonlang.cn/dev/generated/statsmodels.tsa.stattools.grangercausalitytests.html

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 默认方案。

参考

1

https://statsmodels.pythonlang.cn/dev/generated/statsmodels.tsa.stattools.acf.html

返回类型

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]

绘制 tsts_other 之间的互相关函数 (CCF),并在滞后 m 处突出显示,带有相应的显著性区间。使用 statsmodels.tsa.stattools.ccf() [1]

这可用于查找目标与不同协变量滞后之间的互相关。如果 ts_otherts 相同,则等同于 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 默认方案。

参考

1

https://statsmodels.pythonlang.cn/dev/generated/statsmodels.tsa.stattools.ccf.html

返回类型

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 默认方案。

参考

1

https://statsmodels.pythonlang.cn/dev/generated/statsmodels.tsa.stattools.pacf.html

返回类型

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 枚举成员。可以是 MULTIPLICATIVEADDITIVE。默认为 ModelMode.MULTIPLICATIVE

返回值

通过从 ts 中移除 other 定义的时间序列。

返回类型

TimeSeries

darts.utils.statistics.remove_seasonality(ts, freq=None, model=SeasonalityMode.MULTIPLICATIVE, method='naive', **kwargs)[source]

使用 model 分解调整 TimeSeries tsfrequency 阶季节性。

参数
  • 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 实例。

返回类型

TimeSeries

参考

1

https://statsmodels.pythonlang.cn/devel/generated/statsmodels.tsa.seasonal.seasonal_decompose.html

2

https://statsmodels.pythonlang.cn/devel/generated/statsmodels.tsa.seasonal.STL.html

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 枚举成员。可以是 MULTIPLICATIVEADDITIVE。默认为 ModelMode.MULTIPLICATIVE

  • method (str) – 用于分解序列的方法。 - “naive” : 使用移动平均法的季节性分解 [1]_。 - “STL” : 使用 LOESS 的季节-趋势分解 [2]_。仅与 ADDITIVE 模型类型兼容。默认为 “naive”。

  • kwargs – 其他关键字参数将传递给分解方法。

返回值

对应于趋势调整后的 ‘ts’ 的新 TimeSeries 实例。

返回类型

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。

返回值

adf: 检验统计量。
pvalue: 基于 [2] 的 MacKinnon 近似 p 值。
usedlag: 使用的滞后数。
nobs: 用于 ADF 回归和临界值计算的观测数。
critical: 检验统计量在 1%、5% 和 10% 水平下的临界值。基于 [2]
icbest: 如果 autolag 不是 None,则为最大化的信息准则。

返回类型

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))。

返回值

kpss_stat: 检验统计量。
pvalue: 检验的 p 值。p 值从 [2] 的表 1 中插值得到,
如果检验统计量超出临界值表范围,则返回一个边界点,
即 p 值超出区间 (0.01, 0.1)。
lags: 截断滞后参数。
crit: 在 10%、5%、2.5% 和 1% 水平下的临界值。基于 [2]

返回类型

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