Mar*_*ano 2 python-3.x statsmodels
对以下链接进行了调查,但没有为我提供我正在寻找/解决问题的答案:First,Second。
由于保密问题,我无法发布实际分解我可以显示我当前的代码并给出数据集的长度,如果这还不够,我将删除这个问题。
import numpy as np
from statsmodels.tsa import seasonal
def stl_decomposition(data):
data = np.array(data)
data = [item for sublist in data for item in sublist]
decomposed = seasonal.seasonal_decompose(x=data, freq=12)
seas = decomposed.seasonal
trend = decomposed.trend
res = decomposed.resid
Run Code Online (Sandbox Code Playgroud)
在图中,它显示它根据加法模型正确分解。然而,趋势和残差列表的前 6 个月和最后 6 个月都有 NaN 值。当前数据集的大小为 10*12。理想情况下,这应该适用于仅 2 年的时间。
这仍然像第一个链接中所说的那样太小吗?即我需要自己推断额外的分数?
编辑:似乎在趋势和残差的两端,频率的一半总是 NaN。同样适用于减小数据集的大小。
根据这个Github链接,另一个用户有类似的问题。他们“修复”了这个问题。为了避免 NaN,可以传递一个额外的参数。
decomposed = seasonal.seasonal_decompose(x=data, freq=12, extrapolate_trend='freq')
Run Code Online (Sandbox Code Playgroud)
然后它将使用线性最小二乘法来最好地近似值。(来源)
显然,这些信息字面上写在他们的文档中,并且解释得很清楚,但我完全错过/误解了它。因此,我正在为有同样问题的人回答我自己的问题,以挽救他们的冒险经历。
| 归档时间: |
|
| 查看次数: |
3199 次 |
| 最近记录: |