seasonal_decompose:操作数无法与系列中的形状一起广播

Mar*_*din 6 numpy time-series decomposition pandas statsmodels

我知道这个话题有很多问题,但没有一个能帮助我解决这个问题.我真的坚持这个.

有一个简单的系列:

0
2016-01-31  266
2016-02-29  235
2016-03-31  347
2016-04-30  514
2016-05-31  374
2016-06-30  250
2016-07-31  441
2016-08-31  422
2016-09-30  323
2016-10-31  168
2016-11-30  496
2016-12-31  303

import statsmodels.api as sm
logdf = np.log(df[0])
decompose = sm.tsa.seasonal_decompose(logdf,freq=12, model='additive')
decomplot = decompose.plot()
Run Code Online (Sandbox Code Playgroud)

我一直在: ValueError: operands could not be broadcast together with shapes (12,) (14,)

我已经尝试了很多东西,只传递了logdf.values,传递了非日志系列.它不起作用.Numpy和statsmodel版本:

print(statsmodels.__version__)
print(pd.__version__)
print(np.__version__)
0.6.1
0.18.1
1.11.3
Run Code Online (Sandbox Code Playgroud)

tsa*_*ndo 4

正如 @yoonforh 指出的,在我的例子中,这是通过将freq参数设置为小于时间序列长度来解决的。例如,如果您的时间序列ts如下所示:

2014-01-01    0.0
2014-02-01    0.0
2014-03-01    1.0
2014-04-01    1.0
2014-05-01    0.0
2014-06-01    1.0
2014-07-01    1.0
2014-08-01    0.0
2014-09-01    0.0
2014-10-01    1.0
2014-11-01    0.0
2014-12-01    0.0
Run Code Online (Sandbox Code Playgroud)

形状是

(12,)
Run Code Online (Sandbox Code Playgroud)

所以这会给出上面的错误:

seasonal_decompose(ts, freq=12, model='additive')
Run Code Online (Sandbox Code Playgroud)

但如果我尝试freq=11或任何其他int少于 12,例如

seasonal_decompose(ts, freq=11, model='additive')
Run Code Online (Sandbox Code Playgroud)

这有效