Untuk menjawab pertanyaan Anda, pada dasarnya Anda perlu tahu bagaimana residu yaitu dihitung dalam suatu model. Karena itu . Pertama-tama mari kita buat data palsu ( ) dari dan pas dengan model (tanpa berarti):^ X t = X t - e t X tetarma
Xt^= Xt- etXtarima(.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
Sekarang saya membuat residual sebagai berikut: (karena tidak ada residual pada 1) dan untuk kita memiliki: , di mana dan adalah estimasi rata-rata auto-regresif dan moving average dalam model yang dipasang di atas. Ini kodenya:e1= 0t = 2 , . . . , net= Xt- A r ∗ Xt - 1- M.a ∗ et - 1A rM.Sebuah
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]
}
Setelah Anda menemukan residual , nilai yang dipasang hanya . Jadi berikut ini, saya membandingkan 10 nilai pas pertama yang diperoleh dari R dan yang saya dapat hitung dari saya buat di atas (yaitu secara manual).etXt^= Xt- etet
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
Seperti yang Anda lihat ada yang dekat tetapi tidak persis sama. Alasannya adalah ketika saya membuat residu, saya menetapkan . Ada beberapa pilihan lain. Sebagai contoh berdasarkan pada file bantuan , residual dan ditemukan oleh filter Kalman dan karenanya perhitungan akan sedikit berbeda dari saya. Tetapi seiring berjalannya waktu, mereka bertemu.
Sekarang untuk model Ar (1). Saya memasang model (tanpa rata-rata) dan langsung menunjukkan kepada Anda cara menghitung nilai yang dipasang menggunakan koefisien. Kali ini saya tidak menghitung residu. Perhatikan bahwa saya melaporkan 10 nilai pas yang pertama menghapus nilai pertama (karena lagi akan berbeda tergantung pada bagaimana Anda mendefinisikannya). Seperti yang Anda lihat, semuanya sama.e1= 0arima
et
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
mereka berkata: "(...) inovasi dan varians mereka ditemukan oleh filter Kalman." Jadi fungsi tersebut entah bagaimana menggunakan filter Kalman untuk nilai awal.