Pregunta

Tengo una serie de tiempo estacionaria a la que quiere ajustar un modelo lineal con un término autorregresivo para corregir la correlación en serie, es decir, utilizando la fórmula A = C1 * Bt + c2 * Ct + ut, donde ut = r * ut -1 + et

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

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

Gracias Karl

¿Fue útil?

Solución

El GLMMarp paquete cabrá estos modelos. Si lo que desea es un modelo lineal con errores gaussianos, puede hacerlo con la función arima() donde las covariables se especifican mediante el argumento xreg.

Otros consejos

Hay varias maneras de hacer esto en R. Aquí hay dos ejemplos utilizando el "cinturones de seguridad" conjunto de datos de series de tiempo en el paquete de conjuntos de datos que viene con R.

La función arima() viene en paquete: las 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 auto-regresivo, integrado, y el componente de media móvil. En su pregunta, le sugerimos que desea crear un (1) modelo AR 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 la orden especifica que queremos un (1) modelo AR. El compontent xreg debe ser una serie de otros Xs queremos añadir como parte de una regresión. La salida se parece un poco a la salida de summary.lm() volvió a su lado.

Otro proceso alternativo podría ser más familiar a la forma en que has modelos de regresión de ajuste es utilizar gls() en el paquete nlme . El siguiente código convierte el objeto de series temporales del cinturón de seguridad en una trama de datos y luego se extrae y añade una nueva columna ( t ) que es simplemente un contador en el objeto de series temporales ordenada:

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

Las dos líneas más arriba sólo se están recibiendo los datos en forma. Dado que la función arima() está diseñado para la serie de tiempo, se puede leer series temporales objetos con mayor facilidad. Para ajustar el modelo con nlme usted entonces ejecute:

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 se pasa en la estructura de correlación ARMA a GLS. Los resultados no serán exactamente los mismos porque arima() utiliza máxima verosimilitud para estimar los modelos y gls() utiliza máxima verosimilitud restringida por defecto. Si se agrega method="ML" a la llamada a gls() obtendrá estimaciones idénticas que obtuvo con la función ARIMA anteriormente.

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

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

No estoy seguro de la mejor respuesta para GLM más general.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top