时间序列统计

darts.utils.statistics.check_seasonality(ts, m=None, max_lag=24, alpha=0.05)[源代码]

检查时间序列 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)[源代码]

使用 statsmodels.tsa 从 TimeSeries 实例中提取趋势和季节性。

参数
  • ts (TimeSeries) – 要分解的系列

  • freq (Union[int, Sequence[int]]) – 要使用的季节性周期。

  • 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://www.statsmodels.org/devel/generated/statsmodels.tsa.seasonal.seasonal_decompose.html

2

https://www.statsmodels.org/devel/generated/statsmodels.tsa.seasonal.STL.html

3

https://www.statsmodels.org/devel/generated/statsmodels.tsa.seasonal.MSTL.html

darts.utils.statistics.granger_causality_tests(ts_cause, ts_effect, maxlag, addconst=True)[源代码]

使用 statsmodels.tsa.stattools.grangercausalitytests() 对两个时间序列提供四种格兰杰非因果关系测试。参见 [1]

参数
  • ts_cause (TimeSeries) – 一个单变量确定性时间序列。统计测试确定此时间序列是否 ‘Granger 导致’ 时间序列 ts_effect(第二个参数)。不支持缺失值。如果 H_0(非因果关系)被拒绝(p 接近 0),则存在 ‘Granger 因果关系’。

  • ts_effect (TimeSeries) – 单变量时间序列 ‘Granger 因果’ 由 ts_cause 引起。

  • maxlag (int) – 如果是一个整数,计算所有滞后到 maxlag 的测试。如果是一个可迭代对象,则仅计算 maxlag 中滞后的测试。

  • addconst (bool) – 在模型中包含一个常量。

返回

所有测试结果,字典键是滞后数。对于每个滞后,值是一个元组,第一个元素是一个包含测试统计量、p值、自由度的字典,第二个元素是受限模型、非受限模型和参数f_test的约束(对比)矩阵的OLS估计结果。

返回类型

Dict

引用

1

https://www.statsmodels.org/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)[源代码]

绘制 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) – 是否使用飞镖默认方案。

引用

1

https://www.statsmodels.org/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)[源代码]

绘制 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) – 是否使用飞镖默认方案。

引用

1

https://www.statsmodels.org/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)[源代码]

此函数绘制 TimeSeries 实例或类似数组中值的直方图。

所有类型的 TimeSeries 都支持(单变量、多变量、确定性、随机性)。根据 data 中的组件数量,最多可以在一个图上绘制四个直方图。所有随机样本将与相应的组件一起显示。

如果 data 是一个类数组对象,所有值将在同一个直方图中显示。

参数
  • data (Union[TimeSeries, List[float], ndarray]) – 时间序列实例或从中绘制直方图的类数组对象。

  • bins (Union[int, ndarray, List[float], None]) – 可选地,可以是一个表示要显示的箱子数量的整数值,或者是一个类似数组的浮点数列表,用于确定箱子的位置。

  • density (bool) – bool, 如果 density 设置为 True,则将箱计数转换为概率密度

  • 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)[源代码]

绘制 ts 的部分自相关函数 (PACF),在滞后 m 处突出显示,并显示相应的显著性区间。使用 statsmodels.tsa.stattools.pacf() [1]

参数
  • ts (TimeSeries) – 应该绘制其ACF的时间序列。

  • m (Optional[int, None]) – 可选地,在图表上突出显示的时间延迟。

  • max_lag (int) – 要考虑的最大滞后阶数。

  • method (str) – 用于PACF计算的方法。 - | “yw” 或 “ywadjusted” : 带有样本大小调整的Yule-Walker,在acovf的分母中。默认。 - “ywm” 或 “ywmle” : 无调整的Yule-Walker。 - “ols” : 时间序列对其滞后项和常数的回归。 - “ols-inefficient” : 使用单个共同样本估计所有pacf系数的滞后回归。 - “ols-adjusted” : 带有偏差调整的滞后回归。 - “ld” 或 “ldadjusted” : 带有偏差修正的Levinson-Durbin递归。 - “ldb” 或 “ldbiased” : 无偏差修正的Levinson-Durbin递归。

  • alpha (float) – 要显示的置信区间。

  • fig_size (Tuple[int, int]) – 要显示的图形的大小。

  • axis (Optional[axis, None]) – 可选地,一个用于绘制ACF的轴对象。

  • default_formatting (bool) – 是否使用飞镖默认方案。

引用

1

https://www.statsmodels.org/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)[源代码]

绘制与残差相关的数据。

此函数接受一个单变量残差 TimeSeries 实例,并绘制其值、分布及其自相关函数(ACF)。请注意,如果残差 TimeSeries 实例包含 NaN 值,绘图可能会显示不正确。如果 fill_nan 设置为 True,缺失值将被插值。

参数
  • residuals (TimeSeries) – 表示残差的单变量时间序列实例。

  • num_bins (int) – 可选地,一个整数值,用于确定直方图中的箱数。

  • fill_nan (bool) – 一个布尔值,指示是否应在残差中填充 NaN 值。

  • default_formatting (bool) – 是否使用飞镖默认方案。

  • acf_max_lag (int) – ACF 图中显示的最大滞后。必须小于残差长度。

返回类型

None

darts.utils.statistics.remove_from_series(ts, other, model)[源代码]

根据 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)[源代码]

使用 model 分解,调整时间序列 ts 以适应 frequency 阶的季节性。

参数
  • ts (TimeSeries) – 要调整的时间序列。

  • freq (int) – 要使用的季节性周期。

  • model (SeasonalityMode) – 要使用的分解类型。必须是 from darts import SeasonalityMode 枚举成员。可以是 SeasonalityMode.MULTIPLICATIVE 或 SeasonalityMode.ADDITIVE。默认为 SeasonalityMode.MULTIPLICATIVE。

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

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

返回

一个新的 TimeSeries 实例,对应于季节性调整后的 ‘ts’。

返回类型

TimeSeries

引用

1

https://www.statsmodels.org/devel/generated/statsmodels.tsa.seasonal.seasonal_decompose.html

2

https://www.statsmodels.org/devel/generated/statsmodels.tsa.seasonal.STL.html

darts.utils.statistics.remove_trend(ts, model=ModelMode.MULTIPLICATIVE, method='naive', **kwargs)[源代码]

使用 model 分解调整时间序列 ts 的趋势。

参数
  • ts (TimeSeries) – 要调整的时间序列。

  • model (ModelMode) – 要使用的分解类型。必须是 from darts.utils.utils import ModelMode 枚举成员。可以是 MULTIPLICATIVEADDITIVE。默认为 ModelMode.MULTIPLICATIVE

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

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

返回

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

返回类型

TimeSeries

darts.utils.statistics.stationarity_test_adf(ts, maxlag=None, regression='c', autolag='AIC')[源代码]

为时间序列提供增强的Dickey-Fuller单位根检验,使用 statsmodels.tsa.stattools.adfuller()。参见 [1]

参数
  • ts (TimeSeries) – 要测试的时间序列。

  • maxlag (Optional[None, int]) – 测试中包含的最大滞后,当为 None 时,默认使用 12*(观测数/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: 检验统计量。
p值: 基于 [2] 的 MacKinnon 近似 p 值。
usedlag: 使用的滞后数。
nobs: 用于ADF回归和临界值计算的观测值数量。
critical: 在1%、5%和10%水平下的检验统计量的临界值。基于[Ref511d402b22-2]_。
icbest: 如果 autolag 不是 None,则为最大化的信息准则。

返回类型

set

引用

1

https://www.statsmodels.org/dev/generated/statsmodels.tsa.stattools.adfuller.html

2

MacKinnon (1994, 2010)

darts.utils.statistics.stationarity_test_kpss(ts, regression='c', nlags='auto')[源代码]

提供用于时间序列平稳性的Kwiatkowski-Phillips-Schmidt-Shin检验,使用 statsmodels.tsa.stattools.kpss()。参见 [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%的临界值。基于[R8df52d521c0a-2]_。

返回类型

set

引用

1

https://www.statsmodels.org/dev/generated/statsmodels.tsa.stattools.kpss.html

2

Kwiatkowski 等人 (1992)

darts.utils.statistics.stationarity_tests(ts, p_value_threshold_adfuller=0.05, p_value_threshold_kpss=0.05)[源代码]

使用Kwiatkowski-Phillips-Schmidt-Shin和Augmented Dickey-Fuller统计测试对平稳性进行双重测试。

警告 因为 Augmented 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) – 用于拒绝增强迪基-富勒检验平稳性的 p 值阈值。

  • p_value_threshold_kpss (float) – 用于拒绝Kwiatkowski-Phillips-Schmidt-Shin检验中非平稳性的p值阈值。

返回

如果 ts 是平稳的或不是。

返回类型

bool