tiempo simulacion qué prueba primeras ljung eliminar ejemplos econometria diferencias como autocorrelacion analisis r model statistics correlation

simulacion - GLM con término autorregresivo para corregir la correlación serial



series de tiempo econometria (3)

Tengo una serie temporal estacionaria a la cual quiero ajustar un modelo lineal con un término autorregresivo para corregir la correlación serial, es decir, usando la fórmula At = c1 * Bt + c2 * Ct + ut, donde ut = r * ut-1 + et

(ut es un término AR (1) para corregir la correlación serial en los términos de error)

¿Alguien sabe qué usar en R para modelar esto?

Gracias Karl


¿Cuál es su función de enlace?

La forma en que lo describe suena como una regresión lineal básica con errores autocorrelacionados. En ese caso, una opción es usar lm para obtener una estimación consistente de sus coeficientes y usar los errores estándar de Newey-West HAC .

No estoy seguro de la mejor respuesta para GLM en general.


El paquete GLMMarp se ajustará a estos modelos. Si solo quiere un modelo lineal con errores gaussianos, puede hacerlo con la función arima() donde las covariables se especifican a través del argumento xreg .


Hay varias maneras de hacerlo en R. Aquí hay dos ejemplos que usan el conjunto de datos de series de tiempo "Cinturones de seguridad" en el paquete de conjuntos de datos que viene con R.

La función arima() viene en paquete: estadísticas que se incluyen con R. La función toma un argumento de la forma order=c(p, d, q) donde se puede especificar el orden de la regresión automática, integrada y el componente de promedio móvil. En su pregunta, sugiere que desea crear un modelo AR (1) para corregir la autocorrelación de primer orden en los errores y eso es todo. Podemos hacer eso con el siguiente comando:

arima(Seatbelts[,"drivers"], order=c(1,0,0), xreg=Seatbelts[,c("kms", "PetrolPrice", "law")])

El valor de orden especifica que queremos un modelo AR (1). El componente xreg debe ser una serie de otras X que queremos agregar como parte de una regresión. La salida se parece un poco a la salida de summary.lm() girada hacia un lado.

Otro proceso alternativo podría ser más familiar para la forma en que usted se ajusta a los modelos de regresión es usar gls() en el paquete nlme . El siguiente código convierte el objeto de la serie temporal de Cinturón de seguridad en un marco de datos y luego extrae y agrega una nueva columna ( t ) que es solo un contador en el objeto de serie temporal ordenada:

Seatbelts.df <- data.frame(Seatbelts) Seatbelts.df$t <- 1:(dim(Seatbelts.df)[1])

Las dos líneas de arriba solo están poniendo los datos en forma. Como la función arima() está diseñada para series de tiempo, puede leer objetos de series de tiempo más fácilmente. Para ajustar el modelo con nlme, entonces ejecutaría:

library(nlme) m <- gls(drivers ~ kms + PetrolPrice + law, data=Seatbelts.df, correlation=corARMA(p=1, q=0, form=~t)) summary(m)

La línea que comienza con "correlación" es la forma en que pasa en la estructura de correlación ARMA a GLS. Los resultados no serán exactamente los mismos porque arima() usa la máxima probabilidad para estimar modelos y gls() usa la máxima verosimilitud restringida por defecto. Si agrega method="ML" a la llamada a gls() , obtendrá las estimaciones idénticas que obtuvo con la función ARIMA anterior.