Eu ajustei um modelo com várias variáveis independentes, uma das quais é o atraso da variável dependente, usando o pacote dynlm.
Supondo que eu tenha previsões de um passo à frente para minhas variáveis independentes, como faço para obter previsões de um passo à frente para minhas variáveis dependentes?
Aqui está um exemplo:
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)
E aqui está um exemplo usando o pacote 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
fonte
fonte
dynlm
pacote não fornecerá previsões para suas variáveis dependentes. O fornecimento de previsões para suas variáveis dependentes exigirá um modelo para explicá-las e provavelmente dados adicionais. Sugiro que você leia algo sobre regressão multivariada, como "Análise Estatística Multivariada Aplicada", de Johnson e Wichern. ou um curso sobre previsão: duke.edu/~rnau/411home.htmRespostas:
Parabéns, você encontrou um bug. A previsão para
dynlm
novos dados é interrompida se variáveis atrasadas forem usadas. Para ver por que olhar para a saída deOs resultados devem ser os mesmos, mas não são. Sem
newdata
argumento, apredict
função basicamente pega omodel
elemento dadynlm
saída. Comnewdata
argumentopredict
tenta formar nova matriz de modelo a partir denewdata
. Como isso envolve a análise da fórmula fornecidadynlm
e a fórmula possui uma funçãoL
, definida apenas internamente na funçãodynlm
, a matriz do modelo incorreta é formada. Se você tentar depurar, verá que a variável dependente defasada não está sendo defasada no caso denewdata
argumento ser fornecido.O que você pode fazer é atrasar a variável dependente e incluí-la no
newdata
. Aqui está o código que ilustra essa abordagem. Eu usoset.seed
para que seja facilmente reproduzível.Aqui está o comportamento do buggy:
Forme o
newdata
Compare a previsão com o ajuste do modelo:
Como você pode ver nos dados históricos, a previsão coincide e o último elemento contém a previsão de um passo à frente.
fonte
lag(y,-1)+lag(y,-2)
?Após a solicitação do @ md-azimul-haque, procurei no meu código fonte de 4 anos e encontrei a seguinte função com o nome apropriado. Não tenho certeza se é isso que o @ md-azimul-haque está procurando?
fonte