Respuestas:
Mira esto gls
(mínimos cuadrados generalizados) del paquete nlme
Puede establecer un perfil de correlación para los errores en la regresión, por ejemplo, ARMA, etc.
gls(Y ~ X, correlation=corARMA(p=1,q=1))
para errores ARMA (1,1).
Además de la gls()
función from nlme
, también puede usar la arima()
función en el stats
paquete usando MLE. Aquí hay un ejemplo con ambas funciones.
x <- 1:100
e <- 25*arima.sim(model=list(ar=0.3),n=100)
y <- 1 + 2*x + e
###Fit the model using gls()
require(nlme)
(fit1 <- gls(y~x, corr=corAR1(0.5,form=~1)))
Generalized least squares fit by REML
Model: y ~ x
Data: NULL
Log-restricted-likelihood: -443.6371
Coefficients:
(Intercept) x
4.379304 1.957357
Correlation Structure: AR(1)
Formula: ~1
Parameter estimate(s):
Phi
0.3637263
Degrees of freedom: 100 total; 98 residual
Residual standard error: 22.32908
###Fit the model using arima()
(fit2 <- arima(y, xreg=x, order=c(1,0,0)))
Call:
arima(x = y, order = c(1, 0, 0), xreg = x)
Coefficients:
ar1 intercept x
0.3352 4.5052 1.9548
s.e. 0.0960 6.1743 0.1060
sigma^2 estimated as 423.7: log likelihood = -444.4, aic = 896.81
La ventaja de la función arima () es que puede adaptarse a una variedad mucho mayor de procesos de error ARMA. Si usa la función auto.arima () del paquete de pronóstico, puede identificar automáticamente el error ARMA:
require(forecast)
fit3 <- auto.arima(y, xreg=x)
arima
opción se ve más diferente de la de Stata prais
a primera vista, pero es más flexible y también se puede usar tsdiag
para obtener una buena visión de qué tan bien se ajusta realmente su suposición AR (1).
Utilice la función gls del paquete nlme . Aquí está el ejemplo.
##Generate data frame with regressor and AR(1) error. The error term is
## \eps_t=0.3*\eps_{t-1}+v_t
df <- data.frame(x1=rnorm(100), err=filter(rnorm(100)/5,filter=0.3,method="recursive"))
##Create ther response
df$y <- 1 + 2*df$x + df$err
###Fit the model
gls(y~x, data=df, corr=corAR1(0.5,form=~1))
Generalized least squares fit by REML
Model: y ~ x
Data: df
Log-restricted-likelihood: 9.986475
Coefficients:
(Intercept) x
1.040129 2.001884
Correlation Structure: AR(1)
Formula: ~1
Parameter estimate(s):
Phi
0.2686271
Degrees of freedom: 100 total; 98 residual
Residual standard error: 0.2172698
Dado que el modelo se ajusta utilizando la máxima probabilidad, debe proporcionar valores iniciales. El valor inicial predeterminado es 0, pero como siempre es bueno probar varios valores para garantizar la convergencia.
Como señaló el Dr. G, también puede usar otras estructuras de correlación, a saber, ARMA.
Tenga en cuenta que, en general, las estimaciones de mínimos cuadrados son consistentes si la matriz de covarianza de los errores de regresión no es múltiplo de la matriz de identidad, por lo que si ajusta el modelo con una estructura de covarianza específica, primero debe probar si es apropiado.
Puede usar predecir en la salida de gls. Ver? Predic.gls. También puede especificar el orden de la observación por el término "forma" en la estructura de correlación. Por ejemplo:
corr=corAR1(form=~1)
indica que el orden de los datos es el que están en la tabla.
corr=corAR1(form=~Year)
indica que el orden es el del factor Año. Finalmente, el valor "0.5" en corr=corAR1(0.5,form=~1)?
general se configura al valor del parámetro estimado para representar la estructura de varianza (phi, en el caso de AR, theta en el caso de MA .. .). Es opcional configurarlo y usarlo para la optimización como mencionó Rob Hyndman.