बधाई हो, आपको एक बग मिला है। dynlm
यदि लैग्ड चर का उपयोग किया जाता है तो नए डेटा के साथ भविष्यवाणी टूट जाती है। यह देखने के लिए कि आउटपुट क्यों देखें
predict(model)
predict(model,newdata=data)
परिणाम समान होना चाहिए, लेकिन वे नहीं हैं। newdata
तर्क के बिना , predict
फ़ंक्शन मूल रूप model
से dynlm
आउटपुट से तत्व पकड़ लेता है । साथ newdata
तर्क predict
की कोशिश करता से नए मॉडल मैट्रिक्स के रूप में newdata
। चूंकि इसमें पार्सिंग फॉर्मूला को आपूर्ति की जाती है dynlm
और सूत्र में फ़ंक्शन होता है L
, जिसे फ़ंक्शन में केवल आंतरिक रूप से परिभाषित किया जाता है dynlm
, गलत मॉडल मैट्रिक्स बनता है। यदि आप डीबग करने का प्रयास करते हैं, तो आप देखेंगे कि newdata
तर्क के मामले में लैग्ड डिपेंडेंट वैरिएबल लैग नहीं किया जा रहा है।
आप जो कर सकते हैं वह आश्रित चर को पीछे छोड़ना और इसे इसमें शामिल करना है newdata
। यहाँ इस दृष्टिकोण को दर्शाने वाला कोड है। मैं उपयोग करता हूं set.seed
इसलिए यह आसानी से प्रतिलिपि प्रस्तुत करने योग्य होगा।
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)
यहाँ छोटी गाड़ी व्यवहार है:
> 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
इससे 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")
मॉडल फिट के साथ पूर्वानुमान की तुलना करें:
> 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
जैसा कि आप ऐतिहासिक आंकड़ों के लिए पूर्वानुमान देख सकते हैं और अंतिम तत्व में 1-कदम आगे का पूर्वानुमान है।
dynlm
पैकेज का उपयोग करना आपके आश्रित चर के लिए पूर्वानुमान प्रदान नहीं करेगा। अपने आश्रित चर के लिए पूर्वानुमान प्रदान करने के लिए उन्हें समझाने के लिए एक मॉडल और शायद अतिरिक्त डेटा की आवश्यकता होगी। मेरा सुझाव है कि आप जॉनसन और विचर्न द्वारा "एप्लाइड मल्टीवेरेट सांख्यिकीय विश्लेषण" जैसे बहुभिन्नरूपी प्रतिगमन के बारे में कुछ पढ़ें। या पूर्वानुमान पर एक कोर्स: duke.edu/~rnau/411home.htm