Tebrikler, bir hata buldunuz. dynlmGecikmeli 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. newdataBağımsız değişken olmadan , predictişlev temel olarak modelöğeyi dynlmçıktıdan alır. newdataArgüman ile predictyeni model matrisi oluşturmaya çalışır newdata. Bu, verilen formülü ayrıştırmayı içerdiğinden dynlmve formülün Lyalnızca işlev içinde dahili olarak tanımlanan bir işleve sahip dynlmolduğundan, yanlış model matrisi oluşur. Hata ayıklamaya çalışırsanız, newdataargü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.seedkolayca 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.
dynlmpaket 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