ขอแสดงความยินดีคุณพบข้อผิดพลาด การคาดการณ์สำหรับ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
แพคเกจเท่านั้นจะไม่ให้การคาดการณ์สำหรับตัวแปรตามของคุณ การจัดเตรียมการคาดการณ์สำหรับตัวแปรตามของคุณจะต้องมีแบบจำลองเพื่ออธิบายและอาจมีข้อมูลเพิ่มเติม ฉันขอแนะนำให้คุณอ่านบางอย่างเกี่ยวกับการถดถอยหลายตัวแปรเช่น "การวิเคราะห์เชิงสถิติหลายตัวแปรประยุกต์" โดย Johnson และ Wichern หรือหลักสูตรเกี่ยวกับการคาดการณ์: duke.edu/~rnau/411home.htm