当 运行 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.STL
。 seasonal_decompose
不以任何方式根据数据推断周期性。你只有两个选择:
- 使用
period
参数明确说明周期性
- 不声明周期性,将
period
参数留在 None
。在这种情况下,您必须将具有日期时间索引的 pandas
数据帧提供给 seasonal_decompose
,并且将从日期时间索引频率标签推断出周期性,否则会引发错误。它首先获取频率标签:pfreq = getattr(getattr(x, "index", None), "inferred_freq", None)
(在你的情况下频率标签将是 'D'
,意思是每天),然后它使用 statsmodels.tsa.tsatools.freq_to_period
将其转换为周期性(在你的情况下频率标签 'D'
将转换为 7
,这将用作周期性,因此得到的结果)
我已经 运行 seasonal_decompose() 从大约 20 个完全不同的数据集的 statsmodels。查看具有日频率的数据集时,季节性为 7 是否标准?
这是一张图片作为一个数据集分解的例子。我放大了季节性,以便您可以看到又是 7 天:
为什么总是7天?我不希望它总是 7 天并且数据集彼此不同,所以现在我认为这完全是巧合或者这是因为 seasonal_decompose().
但是看看 statsmodels 文档中的 seasonal_decompose() ,它使用 LOESS 来计算季节性。如果我查看公式,它应该能够找到季节性的不同频率。我只需要验证我在这里没有错:我所有的数据集都产生 7 天的季节性频率是否纯属巧合?
首先,seasonal_decompose
与LOESS无关,基于LOESS的分解需要使用statsmodels.tsa.seasonal.STL
。 seasonal_decompose
不以任何方式根据数据推断周期性。你只有两个选择:
- 使用
period
参数明确说明周期性 - 不声明周期性,将
period
参数留在None
。在这种情况下,您必须将具有日期时间索引的pandas
数据帧提供给seasonal_decompose
,并且将从日期时间索引频率标签推断出周期性,否则会引发错误。它首先获取频率标签:pfreq = getattr(getattr(x, "index", None), "inferred_freq", None)
(在你的情况下频率标签将是'D'
,意思是每天),然后它使用statsmodels.tsa.tsatools.freq_to_period
将其转换为周期性(在你的情况下频率标签'D'
将转换为7
,这将用作周期性,因此得到的结果)