2013-09-04 15 views
10

Używam modeli statystycznych do dopasowania do modelu ARMA.Prognozowanie ARM poza próbą za pomocą statystyk statycznych

import statsmodels.api as sm 
arma = sm.tsa.ARMA(data, order =(4,4)); 
results = arma.fit(full_output=False, disp=0); 

Gdzie data jest jednowymiarową tablicą. Wiem, aby uzyskać w próbie przewidywania:

pred = results.predict(); 

Teraz, biorąc pod uwagę drugi zestaw danych data2, w jaki sposób można korzystać z wcześniej skalibrowanego modelu generowania serię z prognozami (przewidywania) z siedzibą w tej obserwacji?

Odpowiedz

12

Myślałem, że był problem z tym. Jeśli zapiszesz plik na githubie, z większym prawdopodobieństwem będę pamiętać o dodaniu czegoś takiego. Mechanizm przewidywania nie jest (jeszcze) dostępny jako funkcje skierowane do użytkownika, więc musiałbyś zrobić coś takiego.

Jeśli model został już dopasowany, możesz to zrobić.

# this is the nsteps ahead predictor function 
from statsmodels.tsa.arima_model import _arma_predict_out_of_sample 
res = sm.tsa.ARMA(y, (3, 2)).fit(trend="nc") 

# get what you need for predicting one-step ahead 
params = res.params 
residuals = res.resid 
p = res.k_ar 
q = res.k_ma 
k_exog = res.k_exog 
k_trend = res.k_trend 
steps = 1 

_arma_predict_out_of_sample(params, steps, residuals, p, q, k_trend, k_exog, endog=y, exog=None, start=len(y)) 

To nowa prognoza 1 krok do przodu. Możesz dodać to do y, a będziesz musiał zaktualizować swoje reszty.

+3

Czy wiesz, czy to nadal jest problem z statsmodels? Czy to jest teraz lepiej obsługiwane w ramach pakietu? – dimab0

+0

Jest to równoważne z wykonywaniem res.forecast() http://www.statsmodels.org/dev/generated/statsmodels.tsa.arima_model.ARMAResults.forecast.html#statsmodels.tsa.arima_model.ARMAResults.forecast –