He ajustado un modelo con varias variables independientes, una de las cuales es el retraso de la variable dependiente, usando el paquete dynlm.
Suponiendo que tengo pronósticos de 1 paso adelante para mis variables independientes, ¿cómo obtengo pronósticos de 1 paso adelante para mis variables dependientes?
Aquí hay un ejemplo:
library(dynlm)
y<-arima.sim(model=list(ar=c(.9)),n=10) #Create AR(1) dependant variable
A<-rnorm(10) #Create independant variables
B<-rnorm(10)
C<-rnorm(10)
y<-y+.5*A+.2*B-.3*C #Add relationship to independant variables
data=cbind(y,A,B,C)
#Fit linear model
model<-dynlm(y~A+B+C+L(y,1),data=data)
#Forecast
A<-c(A,rnorm(1)) #Assume we already have 1-step forecasts for A,B,C
B<-c(B,rnorm(1))
C<-c(C,rnorm(1))
y=window(y,end=end(y)+c(1,0),extend=TRUE)
newdata<-cbind(y,A,B,C)
predict(model,newdata)
Y aquí hay un ejemplo usando el paquete dyn, que funciona.
library(dyn)
#Fit linear model
model<-dyn$lm(y~A+B+C+lag(y,-1),data=data)
#Forecast
predict(model,newdata)the dyn packages, which works:
r
dynamic-regression
Zach
fuente
fuente
dynlm
paquete no proporcionará pronósticos para sus variables dependientes. Proporcionar pronósticos para sus variables dependientes requerirá un modelo para explicarlas y probablemente datos adicionales. Le sugiero que lea algo sobre la regresión multivariada, como "Análisis estadístico multivariado aplicado" de Johnson y Wichern. o un curso sobre pronósticos: duke.edu/~rnau/411home.htmRespuestas:
Felicitaciones, has encontrado un error. La predicción para
dynlm
con nuevos datos se rompe si se utilizan variables rezagadas. Para ver por qué mirar la salida deLos resultados deberían ser los mismos, pero no lo son. Sin
newdata
argumento, lapredict
función básicamente toma elmodel
elemento de ladynlm
salida. Connewdata
argumentopredict
intenta formar una nueva matriz modelo a partir denewdata
. Dado que esto implica analizar la fórmula suministradadynlm
y la fórmula tiene una funciónL
, que se define solo internamente en la funcióndynlm
, se forma la matriz de modelo incorrecta. Si intenta depurar, verá que la variable dependiente retrasada no se retrasa en el caso denewdata
que se proporcione un argumento.Lo que puede hacer es retrasar la variable dependiente e incluirla en el
newdata
. Aquí está el código que ilustra este enfoque. Lo usoset.seed
para que sea fácilmente reproducible.Aquí está el comportamiento con errores:
Formar el
newdata
Compare el pronóstico con el ajuste del modelo:
Como puede ver para los datos históricos, el pronóstico coincide y el último elemento contiene el pronóstico de 1 paso por delante.
fuente
lag(y,-1)+lag(y,-2)
?Siguiendo la solicitud de @ md-azimul-haque, busqué en mi código fuente de 4 años y encontré la siguiente función con el nombre apropiado. ¿No está seguro de si esto es lo que está buscando @ md-azimul-haque?
fuente