Saya sudah cocok dengan model dengan beberapa variabel independen, salah satunya adalah lag dari variabel dependen, menggunakan paket dynlm.
Dengan asumsi saya memiliki ramalan 1 langkah di depan untuk variabel independen saya, bagaimana saya mendapatkan ramalan 1 langkah di depan untuk variabel dependen saya?
Berikut ini sebuah contoh:
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)
Dan di sini adalah contoh menggunakan paket dyn, yang berfungsi.
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
sumber
sumber
dynlm
paket tidak akan memberikan perkiraan untuk variabel dependen Anda. Memberikan perkiraan untuk variabel dependen Anda akan memerlukan model untuk menjelaskannya dan mungkin data tambahan. Saya menyarankan Anda untuk membaca sesuatu tentang regresi multivariat seperti "Analisis Statistik Multivariat Terapan" oleh Johnson dan Wichern. atau kursus perkiraan: duke.edu/~rnau/411home.htmJawaban:
Selamat, Anda telah menemukan bug. Prediksi untuk
dynlm
dengan data baru rusak jika variabel lagged digunakan. Untuk melihat mengapa melihat output dariHasilnya harus sama, tetapi tidak. Tanpa
newdata
argumen,predict
fungsi ini pada dasarnya mengambilmodel
elemen daridynlm
output. Dengannewdata
argumenpredict
mencoba untuk membentuk matriks model baru darinewdata
. Karena ini melibatkan parsing formula yang disuplai kedynlm
dan formula memiliki fungsiL
, yang hanya didefinisikan fungsi internalydynlm
, matriks model yang salah terbentuk. Jika Anda mencoba men-debug, Anda akan melihat, bahwa variabel dependen tertinggal tidak sedang tertinggal dalam kasusnewdata
argumen disediakan.Apa yang dapat Anda lakukan adalah untuk lag variabel dependen dan memasukkannya ke dalam
newdata
. Berikut adalah kode yang menggambarkan pendekatan ini. Saya menggunakanset.seed
sehingga akan mudah direproduksi.Inilah perilaku buggy:
Membentuk
newdata
Bandingkan perkiraan dengan model yang cocok:
Seperti yang dapat Anda lihat untuk data historis, ramalan tersebut bertepatan dan elemen terakhir berisi ramalan 1 langkah di depan.
sumber
lag(y,-1)+lag(y,-2)
?Mengikuti permintaan @ md-azimul-haque, saya menggali kode sumber saya yang berumur 4 tahun, dan menemukan fungsi bernama tepat berikut ini. Tidak yakin apakah ini yang dicari oleh @ md-azimul-haque?
sumber