Ajuste de modelos ARIMA en R

#Ajuste de modelos ARIMA
#LSE. Método de estimación por mínimos cuadrados o mínimos cuadrados ordinarios (LSE o OLS).
rec = ts(scan("c:/data/recruit.dat"), start=1950, frequency=12) #Analizamos la serie temporal de reclutamientos entre 1950-1987
par(mfrow=c(2,1)); acf(rec, 48); pacf(rec, 48) #sugieren un modelo AR(2)
(fit = ar.ols(rec,order=2,demean=F,intercept=T)) #ajustamos el modelo AR(2) por regresión
fit$asy.se # error estándar
#obtenemos phi(0)=6.74(1.11), phi(1)=1.35(.04), phi(2)=-.46(.04) y sigma2w=90.31

#Y-W. Método Yule-Walker o estimador de momentos. Estimamos momentos poblacionales y momentos muestrales, luego resolvemos para los parámetros en términos de los momentos muestrales.
rec.yw = ar.yw(rec, order=2) #ajustamos un modelo AR(2) utilizando estimadores Y-W
rec.yw$x.mean #estimación de la media
rec.yw$ar #estimación de phi(1) y phi(2)
sqrt(diag(rec.yw$asy.var.coef)) #errores estándar
rec.yw$var.pred #estimación del error de varianza

rec.pr = predict(rec.yw, n.ahead=24) #obtenemos 24 predicciones mensuales "ahead" y sus desvíos estándar
U = rec.pr$pred + rec.pr$se; L = rec.pr$pred - rec.pr$se ; minx = min(rec,L); maxx = max(rec,U)
ts.plot(rec, fore$pred, xlim=c(1980,1990),ylim=c(minx,maxx)); lines(rec.pr$pred, col="red", type="o"); lines(U, col="blue", lty="dashed"); lines(L, col="blue", lty="dashed")
plot(month,rec[month],type="o",xlim=c(360,480),ylab="recruits")
#las estimaciones Y-W son buenas para AR(p) pero no obtienen estimadores óptimos para MA o ARMA porque tales procesos son no-lineales en los parámetros. Para estos modelos utilizaremos ML y LSE.

#ML. Método de máxima verosimilitus (ML)
rec.mle = ar.mle(rec, order=2) #ajustamos un modelo AR(2) utilizando ML
rec.mle$x.mean #estimación de la media
rec.mle$ar #estimación de phi(1) y phi(2)
sqrt(diag(rec.mle$asy.var.coef)) #errores estándar
rec.mle$var.pred #estimación del error de varianza

Comentarios