2017-02-21 2 views
3

Je sais qu'il y a beaucoup de questions sur ce sujet, mais aucune d'elles ne m'a aidé à résoudre ce problème. Je suis vraiment coincé là-dessus.seasonal_decompose: les opérandes ne pouvaient pas être diffusés avec des formes sur une série

Avec une série simple:

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() 

je continue à obtenir: ValueError: operands could not be broadcast together with shapes (12,) (14,)

J'ai essayé à peu près tout, ne laissant passer que logdf.values, en passant une série non-log. Ça ne marche pas. versions NumPy et statsmodel:

print(statsmodels.__version__) 
print(pd.__version__) 
print(np.__version__) 
0.6.1 
0.18.1 
1.11.3 
+0

Quel est le zéro devant votre série de données? De plus, nous ne pouvons pas estimer un effet saisonnier s'il n'y a qu'une seule saison. Il n'y a aucun moyen de distinguer la saison de la tendance ou d'autres effets. – user333700

+0

Le 0 au-dessus des dates que je pense juste veut dire qu'il a une série de pandas, indexée sur ces dates. –

+0

Max a raison, les séries pandas sont indexées à ces dates. Pourquoi ne pouvons-nous pas estimer un effet saisonnier avec une seule saison? Quoi qu'il en soit est juste une série d'échantillons, j'ai un plus grand ensemble de données regroupées par dates (réellement rééchantillonné), et encore j'ai eu cette erreur (devrait être liée numpy je suppose) –

Répondre

0

i remarqué que avec les nouveaux pandas géants et les versions statsmodel il semble fonctionner.

Compte tenu d'une série:

2016-01-03 8.326275 
2016-01-10 8.898229 
2016-01-17 8.754792 
2016-01-24 8.658172 
2016-01-31 8.731659 
2016-02-07 9.047233 
2016-02-14 8.799662 
2016-02-21 8.783549 
2016-02-28 8.782783 
2016-03-06 9.081825 
2016-03-13 8.737934 
2016-03-20 8.658693 
2016-03-27 8.666475 
2016-04-03 9.029178 
2016-04-10 8.781555 
2016-04-17 8.720787 
2016-04-24 8.633909 
2016-05-01 8.937744 
2016-05-08 8.804925 
2016-05-15 8.766862 
2016-05-22 8.651899 
2016-05-29 8.653645 
... 

et la version pd/sm:

statsmodels.__version__ 0.8.0 
pandas.__version__ 0.20.1 

Ceci est le résultat:

import statsmodels.api as sm 
logdf = np.log(df_series) 
decompose = sm.tsa.seasonal_decompose(logdf, model='additive', filt=None, freq=1, two_sided=True) 
decompose.plot() 

enter image description here

J'espère que cela pourrait Résolvez votre problème aussi.