3 votos

Python regenerando parámetros ARMA usando statsmodels

Estoy tratando de regenerar los parámetros ARMA desde statsmodel en python. El código que estoy utilizando es:

from statsmodels.tsa.arima_process import arma_generate_sample
import statsmodels.api as sm
arparams = np.array([.75, -.25])
maparams = np.array([.65, .35])
arparams = np.r_[1, -arparams]
maparam = np.r_[1, maparams]
nobs = 250
np.random.seed(2014)
y = arma_generate_sample(arparams, maparams, nobs) #generar serie ARMA
res = sm.tsa.arma_order_select_ic(y, ic=['aic', 'bic'], trend='nc')
z = sm.tsa.ARMA(y, (2,2)).fit()
print z.arparams
array([ 0.13178508,  0.08568388])

Los parámetros AR regenerados no son iguales a los que comencé. ¿Qué estoy haciendo mal?

4voto

nhinkle Puntos 492

La lógica de tu código está bien. Sin embargo, la varianza de los parámetros es alta porque nobs=250 es relativamente baja. Aumenta nobs y tus parámetros convergerán hacia los parámetros que especificaste eventualmente.

import statsmodels.api as sm
import numpy as np

# Parámetros.
ar = np.array([.75, -.25])
ma = np.array([.65, .35])

# Simular un proceso ARMA.
np.random.seed(42)
y = sm.tsa.arma_generate_sample(
    ar=np.r_[1, -ar],
    ma=np.r_[1, ma],
    nsample=10000,
    sigma=1,
)

# Ajustar el proceso ARMA en las simulaciones para verificar coeficientes, ACF y PACF.
model = sm.tsa.ARMA(y, (2, 2)).fit(trend='c')

# Graficar ACF y PACF del modelo estimado.
sm.tsa.graphics.plot_acf(y, lags=20, zero=True);
sm.tsa.graphics.plot_pacf(y, lags=20, zero=True);
model.summary()

Referencia: McKinney, W., Perktold, J., & Seabold, S. (2011)

Finanhelp.com

FinanHelp es una comunidad para personas con conocimientos de economía y finanzas, o quiere aprender. Puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X