1

ich die Zeitreihendaten auf diese Weise abbauen können -Wie die Residuen in ursprünglichen Werte konvertieren Python statsmodels

from statsmodels.tsa.seasonal import seasonal_decompose 
decomposition = seasonal_decompose(ts) 

trend = decomposition.trend 
seasonal = decomposition.seasonal 
residual = decomposition.resid 

Meine Frage ist, wie auf den ursprünglichen Wert dieses Restwert verdeckte. Damit ich sie für die Vorhersage des zukünftigen Wertes verwenden kann.

Antwort

0

Falls Sie ein additives Modell tun, addieren sich einfach in den Trend, saisonale und Restkomponenten, um wieder auf die ursprünglichen Werte zu erhalten. Das Endergebnis sind Ihre Originaldaten, daher ist es nicht sehr hilfreich, sie zu sichern. Das Residuum ist das, was von Ihren ursprünglichen Daten nach Berücksichtigung der Trend- und saisonalen Effekte übrig ist. Es ist wie bei der linearen Regression, bei der der vorhergesagte Wert plus der Rest den tatsächlichen Ausgang für die abhängige Variable zurückgibt.

0

habe ich versucht, ursprüngliche Trend und Saisonalität wieder hinzufügen, aber auch nicht funktioniert. Wenn ich also das vorhergesagte Ergebnis mit dem ursprünglichen Ergebnis vergleiche, habe ich nur das vorhergesagte Ergebnis mit Residuum verwendet.

efrom statsmodels.tsa.seasonal import seasonal_decompose 

# trend, seasonality are separated out from data, and we can model the residuals 
decomposition = seasonal_decompose(ts_log) 
trend = decomposition.trend 
seasonal = decomposition.seasonal 
residual = decomposition.resid 

# AR model 
model = ARIMA(ts_log, order=(2, 1, 0)) 
results_AR = model.fit(disp=-1) 
plt.figure(figsize=(20,10)) 
plt.plot(ts_log_decompose) 
plt.plot(results_AR.fittedvalues, color='red') 
result = (results_AR.fittedvalues-ts_log_decompose)**2 
result.dropna(inplace=True) 
plt.title('Decompose RSS: %.4f'% sum(result)) 
plt.show() 

Ich versuchte AR, MA, ARIMA Modelle und fand AR Modell hatte niedrigsten RSS. So, jetzt mache ich Prognosen mit AR-Modell.

predictions_AR = pd.Series(results_AR.fittedvalues, copy=True) 
print predictions_AR.head() 
plt.figure(figsize=(20,10)) 
plt.plot(series, color='red') 
plt.plot(predictions_ARIMA, color='green') 
result = (predictions_AR-residual)**2 
result.dropna(inplace=True) 
plt.title('RMSE: %.4f'% np.sqrt(sum(result)/len(series))) 
plt.show() 

Es funktioniert gut: enter image description here

Wenn Sie meinen Code alle überprüfen: https://github.com/hanhanwu/Hanhan_Data_Science_Practice/blob/master/sequencial_analysis/try_LSTM.ipynb

nur Scroll Down zu zersetzen Methode

Verwandte Themen