Fehlermeldung: ValueError: Non-stationary starting autoregressive parameters found with `enforce_stationarity` set to Tr

mit matplotlib, NumPy, pandas, SciPy, SymPy und weiteren mathematischen Programmbibliotheken.
Antworten
Frokuss
User
Beiträge: 16
Registriert: Mittwoch 5. Juni 2019, 20:35

Hallo Leute,

an meiner Postanzahl könnt ihr ja erkennen, dass ich ein blutiger Anfänger in Python bin... Dummerweise muss ich mich hiermit noch 2 Wochen beschäftigen :-( Zum einen komme ich an dem Fehler nicht weiter, zum anderen hoffe ich, dass ich hier an der richtigen Stelle bin...

Meine Fehlermeldung:
ValueError Traceback (most recent call last)
<ipython-input-4-2e7257aaceab> in <module>
61
62 modell = SARIMAX(y, order=(p, d, q), seasonal_order=(P, D, Q, s), trend="c")#, enforce_stationarity=True)
---> 63 modell = modell.fit()
64
65 # -- Modellwerte von Periode 50 bis 144: --

C:\ProgramData\Anaconda3\lib\site-packages\statsmodels\tsa\statespace\mlemodel.py in fit(self, start_params, transformed, cov_type, cov_kwds, method, maxiter, full_output, disp, callback, return_params, optim_score, optim_complex_step, optim_hessian, flags, **kwargs)
430 """
431 if start_params is None:
--> 432 start_params = self.start_params
433 transformed = True
434

C:\ProgramData\Anaconda3\lib\site-packages\statsmodels\tsa\statespace\sarimax.py in start_params(self)
997 )
998 if invalid_ar:
--> 999 raise ValueError('Non-stationary starting autoregressive'
1000 ' parameters found with `enforce_stationarity`'
1001 ' set to True.')

ValueError: Non-stationary starting autoregressive parameters found with `enforce_stationarity` set to True.
Der Fehler bezieht sich auf das modell.fit() Nur habe ich keinen blassen schimmer, was mir der Fehler sagen will :-(
Und ein Auszug aus meinem Code:

Code: Alles auswählen

for land in laender:
    for merkmal in merkmale:
        description = daten[merkmal][daten[merkmal].Country == land]["Subject Descriptor"].values[0]
        X = daten[merkmal][daten[merkmal].Country == land][jahre]
        x = [int(str.replace(item,',','')) for item in X.columns]
        y = [str.replace(str(item),'n/a','nan') for item in X.values.ravel()]
        y = [float(str.replace(item,',','')) for item in y] #X.values.ravel()]
        ax[merkmal].plot(x,y, label=land)
        ax[merkmal].legend()
        ax[merkmal].set_title(description)

plt.show()

p, d, q = 2, 0, 0
P, D, Q, s = 0, 0, 0, 0

modell = SARIMAX(y, order=(p, d, q), seasonal_order=(P, D, Q, s), trend="c")#, enforce_stationarity=True)
modell = modell.fit()
Ich hoffe ihr könnt mir da weiterhelfen. Grüße
Frokuss
Frokuss
User
Beiträge: 16
Registriert: Mittwoch 5. Juni 2019, 20:35

Also, ich hatte zwei Fehler drinnen... der eine war, dass meine Werte nicht gleich viele Werte entahlten haben... Und der zweite wird behoben durch den optionalen Parameter:

enforce_stationarity=False

Warum ich den aber brauche, ist mir ein Schleier...

Trotzdem danke :-)
Antworten