Tebrikler, bir hata buldunuz. dynlm
Gecikmeli değişkenler kullanılırsa yeni verilerle ilgili tahmin bozulur. Neden çıktısına bakmak için
predict(model)
predict(model,newdata=data)
Sonuçlar aynı olmalı, ancak değil. newdata
Bağımsız değişken olmadan , predict
işlev temel olarak model
öğeyi dynlm
çıktıdan alır. newdata
Argüman ile predict
yeni model matrisi oluşturmaya çalışır newdata
. Bu, verilen formülü ayrıştırmayı içerdiğinden dynlm
ve formülün L
yalnızca işlev içinde dahili olarak tanımlanan bir işleve sahip dynlm
olduğundan, yanlış model matrisi oluşur. Hata ayıklamaya çalışırsanız, newdata
argüman sağlandığında gecikmeli bağımlı değişkenin gecikmediğini göreceksiniz .
Yapabileceğiniz şey bağımlı değişkeni geciktirmek ve içine eklemek newdata
. İşte bu yaklaşımı gösteren kod. Kullandığım set.seed
kolayca tekrarlanabilir olurdu böylece.
library(dynlm)
set.seed(1)
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)
Buggy davranışı:
> predict(model)
2 3 4 5 6 7 8 9 10
3.500667 2.411196 2.627915 2.813815 2.468595 1.733852 2.114553 1.423225 1.470738
> predict(model,newdata=data)
1 2 3 4 5 6 7 8 9 10
2.1628335 3.7063579 2.9781417 2.1374301 3.2582376 1.9534558 1.3670995 2.4547626 0.8448223 1.8762437
Biçimlendirmek newdata
#Forecast fix.
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))
newdata<-ts(cbind(A,B,C),start=start(y),freq=frequency(y))
newdata<-cbind(lag(y,-1),newdata)
colnames(newdata) <- c("y","A","B","C")
Tahmini model uyumluluğuyla karşılaştırın:
> predict(model)
2 3 4 5 6 7 8 9 10
3.500667 2.411196 2.627915 2.813815 2.468595 1.733852 2.114553 1.423225 1.470738
> predict(model,newdata=newdata)
1 2 3 4 5 6 7 8 9 10 11
NA 3.500667 2.411196 2.627915 2.813815 2.468595 1.733852 2.114553 1.423225 1.470738 1.102367
Geçmiş veriler için görebileceğiniz gibi tahmin çakışıyor ve son öğe 1 adım ileriye dönük tahmin içeriyor.
dynlm
paket kullanmak bağımlı değişkenleriniz için tahmin sağlamaz. Bağımlı değişkenleriniz için tahmin sağlamak, bunları açıklamak için bir model ve muhtemelen ek veriler gerektirir. Johnson ve Wichern'in "Uygulamalı Çok Değişkenli İstatistiksel Analiz" gibi çok değişkenli regresyon hakkında bir şeyler okumanızı öneririm. veya tahmin üzerine bir kurs: duke.edu/~rnau/411home.htm