ในการตอบคำถามของคุณโดยทั่วไปคุณจำเป็นต้องรู้วิธีคำนวณเศษซากเช่น ในแบบจำลอง แล้วเพราะ{t} ก่อนอื่นเรามาสร้างข้อมูลปลอม ( ) จากและสร้างโมเดลให้พอดี(โดยไม่มีค่าเฉลี่ย):^ X t = X t - e t X tอีเสื้อarma
Xเสื้อ^= Xเสื้อ- eเสื้อXเสื้อarima(.5,.6)
arma
library(forecast)
n=1000
ts_AR <- arima.sim(n = n, list(ar = 0.5,ma=0.6))
f=arima(ts_AR,order=c(1,0,1),include.mean=FALSE)
summary(f)
Series: ts_AR
ARIMA(1,0,1) with zero mean
Coefficients:
ar1 ma1
0.4879 0.5595
s.e. 0.0335 0.0317
sigma^2 estimated as 1.014: log likelihood=-1426.7
AIC=2859.4 AICc=2859.42 BIC=2874.12
Training set error measures:
ME RMSE MAE MPE MAPE MASE
Training set 0.02102758 1.00722 0.8057205 40.05802 160.1078 0.6313145
ตอนนี้ฉันสร้างส่วนที่เหลือดังนี้: (เนื่องจากไม่มีส่วนที่ 1) และสำหรับเรามี:โดยที่และเป็นค่าเฉลี่ยการถดถอยอัตโนมัติและค่าเฉลี่ยเคลื่อนที่ในโมเดลที่ติดตั้งด้านบน นี่คือรหัส:อี1= 0T = 2 , . . , nอีเสื้อ= Xเสื้อ- A r ∗ Xt - 1- Ma ∗ et - 1RMa
e = rep(1,n)
e[1] = 0 ##since there is no residual at 1, e1 = 0
for (t in (2 : n)){
e[t] = ts_AR[t]-coef(f)[1]*ts_AR[t-1]-coef(f)[2]*e[t-1]
}
เมื่อคุณพบคลาดเคลื่อน , ค่าติดตั้งเป็นเพียง{t} ดังนั้นในต่อไปนี้ฉันเปรียบเทียบค่าติดตั้ง 10 ค่าแรกที่ได้รับจาก R และค่าที่ฉันสามารถคำนวณได้จากฉันสร้างขึ้นด้านบน (เช่นด้วยตนเอง)อีเสื้อXเสื้อ^=Xเสื้อ-eเสื้ออีเสื้อ
cbind(fitted.from.package=fitted(f)[1:10],fitted.calculated.manually=ts_AR[1:10]-e[1:10])
fitted.from.package fitted.calculated.manually
[1,] -0.4193068 -1.1653515
[2,] -0.8395447 -0.5685977
[3,] -0.4386956 -0.6051324
[4,] 0.3594109 0.4403898
[5,] 2.9358336 2.9013738
[6,] 1.3489537 1.3682191
[7,] 0.5329436 0.5219576
[8,] 1.0221220 1.0283511
[9,] 0.6083310 0.6048668
[10,] -0.5371484 -0.5352324
อย่างที่คุณเห็นมีใกล้ แต่ไม่เหมือนกันทุกประการ เหตุผลก็คือว่าเมื่อฉันสร้างคลาดเคลื่อนผมตั้ง 0 มีตัวเลือกอื่น ๆ ว่า ตัวอย่างเช่นตามไฟล์ช่วยเหลือถึงส่วนที่เหลือและความแปรปรวนที่พบโดยตัวกรองคาลมานดังนั้นการคำนวณจะแตกต่างจากฉันเล็กน้อย แต่เมื่อเวลาผ่านไปพวกเขาจะมาบรรจบกัน
ตอนนี้สำหรับรุ่น Ar (1) ฉันติดตั้งโมเดล (โดยไม่มีค่าเฉลี่ย) และแสดงวิธีการคำนวณค่าที่ติดตั้งโดยตรงโดยใช้ค่าสัมประสิทธิ์ ครั้งนี้ฉันไม่ได้คำนวณส่วนที่เหลือ โปรดทราบว่าฉันรายงานค่าติดตั้ง 10 ค่าแรกที่นำค่าแรกออก (เช่นนั้นจะแตกต่างกันไปขึ้นอยู่กับวิธีที่คุณกำหนด) อย่างที่คุณเห็นพวกมันเหมือนกันหมดอี1= 0arima
อีเสื้อ
f=arima(ts_AR,order=c(1,0,0),include.mean=FALSE)
cbind(fitted.from.package=fitted(f)[2:10],fitted.calculated.manually=coef(f)*ts_AR[1:9])
fitted.from.package fitted.calculated.manually
[1,] -0.8356307 -0.8356307
[2,] -0.6320580 -0.6320580
[3,] 0.0696877 0.0696877
[4,] 2.1549019 2.1549019
[5,] 2.0480074 2.0480074
[6,] 0.8814094 0.8814094
[7,] 0.9039184 0.9039184
[8,] 0.8079823 0.8079823
[9,] -0.1347165 -0.1347165
arima
พวกเขาพูดว่า: "(... ) นวัตกรรมและความแปรปรวนที่พบโดยตัวกรองคาลมาน" ดังนั้นฟังก์ชั่นจึงใช้ตัวกรองคาลมานเป็นค่าเริ่มต้น