当 运行 seasonal_decompose() 时,季节性始终为 7。这是为什么?

Seasonality is always 7 when running seasonal_decompose(). Why is that?

我已经 运行 seasonal_decompose() 从大约 20 个完全不同的数据集的 statsmodels。查看具有日频率的数据集时,季节性为 7 是否标准?

这是一张图片作为一个数据集分解的例子。我放大了季节性,以便您可以看到又是 7 天:

为什么总是7天?我不希望它总是 7 天并且数据集彼此不同,所以现在我认为这完全是巧合或者这是因为 seasonal_decompose().

但是看看 statsmodels 文档中的 seasonal_decompose() ,它使用 LOESS 来计算季节性。如果我查看公式,它应该能够找到季节性的不同频率。我只需要验证我在这里没有错:我所有的数据集都产生 7 天的季节性频率是否纯属巧合?

首先,seasonal_decompose与LOESS无关,基于LOESS的分解需要使用statsmodels.tsa.seasonal.STLseasonal_decompose 不以任何方式根据数据推断周期性。你只有两个选择:

  1. 使用 period 参数明确说明周期性
  2. 不声明周期性,将 period 参数留在 None。在这种情况下,您必须将具有日期时间索引的 pandas 数据帧提供给 seasonal_decompose,并且将从日期时间索引频率标签推断出周期性,否则会引发错误。它首先获取频率标签:pfreq = getattr(getattr(x, "index", None), "inferred_freq", None)(在你的情况下频率标签将是 'D',意思是每天),然后它使用 statsmodels.tsa.tsatools.freq_to_period 将其转换为周期性(在你的情况下频率标签 'D' 将转换为 7,这将用作周期性,因此得到的结果)