季节分解中的趋势图和残差图不跨越整个数据持续时间

问题描述 投票:0回答:1

我正在执行 SARIMAX 预测并可视化季节性分解图。我有从 2022 年 1 月 1 日到 2024 年 3 月 1 日运行的每月数据。当我绘制数据时,我得到了“部分”趋势和残差图。

样本数据:

from statsmodels.tsa.seasonal import seasonal_decompose
from matplotlib import pyplot

np.random.seed(0)
df = pd.DataFrame(index=pd.date_range('2022-01-01', end='2024-03-01', freq='MS'),
         data = {'rev' : np.random.randint(10, high = 1000, size = len(pd.date_range('2022-01-01', end='2024-03-01', freq='MS')))})

seasonal_decompose(df).plot();

但是当我对时间跨度较长的数据执行相同操作时,绘图似乎更好地跨越时间线。

df1 = pd.DataFrame(index=pd.date_range('2015-01-01', end='2024-03-01', freq='MS'),
         data = {'rev' : np.random.randint(10, high = 1000, size = len(pd.date_range('2015-01-01', end='2024-03-01', freq='MS')))})

seasonal_decompose(df1).plot();

有人可以帮助我理解我的理解是否正确,如果是这样,在我们没有足够长持续时间的数据的情况下,如何理解趋势图。

python pandas statsmodels sarimax
1个回答
0
投票

您的理解是正确的;如果 DF 较短,您会得到较短的图(当然)。 复杂性不在于Python代码,而在于统计模型;由于 SARIMAX 模型(甚至只是 ARMA 模型)根据

p
之前的值预测当前值,因此不可能计算第一个
p
观测值的结果。如果我正确解释 文档 和您显示的图表,
seasonal_decompose
在提供每月数据时将默认使用半年的滞后 (
p = 6
)。

此外,

seasonal_decompose
默认使用双边移动平均线(再次参见文档)。如果您关闭此功能,您会发现趋势数据仅在开始处有缺失值,而在数据集的末尾则没有。

至于如何理解趋势图:就像理解任何 SARIMAX 模型一样(文档听起来这实际上只是一个 MAX 模型,而不是整个 SARIMAX 模型,但这不是重点)。趋势是数据中无法由季节效应解释的部分,该模型只是不会为最外面的

p
观测值提供有关该趋势的任何信息。

© www.soinside.com 2019 - 2024. All rights reserved.