Saya sedang mengerjakan alogoritma di R untuk mengotomatiskan perhitungan perkiraan bulanan. Saya menggunakan, antara lain, fungsi ets () dari paket perkiraan untuk menghitung perkiraan. Ini bekerja dengan sangat baik.
Sayangnya, untuk beberapa seri waktu tertentu, hasil yang saya dapatkan aneh.
Silakan, cari di bawah kode yang saya gunakan:
train_ts<- ts(values, frequency=12)
fit2<-ets(train_ts, model="ZZZ", damped=TRUE, alpha=NULL, beta=NULL, gamma=NULL,
phi=NULL, additive.only=FALSE, lambda=TRUE,
lower=c(0.0001,0.0001,0.0001,0.8),upper=c(0.9999,0.9999,0.9999,0.98),
opt.crit=c("lik","amse","mse","sigma","mae"), nmse=3,
bounds=c("both","usual","admissible"), ic=c("aicc","aic","bic"),
restrict=TRUE)
ets <- forecast(fit2,h=forecasthorizon,method ='ets')
Silakan, Anda akan menemukan di bawah kumpulan data riwayat yang bersangkutan:
values <- c(27, 27, 7, 24, 39, 40, 24, 45, 36, 37, 31, 47, 16, 24, 6, 21,
35, 36, 21, 40, 32, 33, 27, 42, 14, 21, 5, 19, 31, 32, 19, 36,
29, 29, 24, 42, 15, 24, 21)
Di sini, pada grafik, Anda akan melihat data historis (hitam), nilai pas (hijau) dan perkiraan (biru). Perkiraan ini jelas tidak sejalan dengan nilai yang dipasang.
Apakah Anda punya ide tentang bagaimana "mengikat" yang forecat menjadi "sejalan" dengan penjualan historis?
ets
. Rata-rata / level data historis adalah sekitar 20 dan rata-rata / level perkiraan adalah sekitar 50. Tidak yakin mengapa ini akan terjadi? dapatkah Anda menjalankan dasarets
dan melihat apakah Anda mendapatkan hasil yang sama?Jawaban:
Seperti @forecaster tunjukkan, ini disebabkan oleh pencilan pada akhir seri. Anda dapat melihat masalah dengan jelas jika Anda memplot komponen level yang diperkirakan di atas:
Perhatikan kenaikan level di akhir seri.
Salah satu cara untuk membuat model lebih kuat untuk pencilan adalah mengurangi ruang parameter sehingga parameter penghalusan harus mengambil nilai yang lebih kecil:
sumber
Ini adalah kasus buku teks tentang memiliki pencilan pada akhir seri dan konsekuensinya yang tidak diinginkan. Masalah dengan data Anda adalah bahwa dua poin terakhir adalah outlier , Anda mungkin ingin mengidentifikasi dan memperlakukan outlier sebelum Anda menjalankan algoritma peramalan. Saya akan memperbarui jawaban dan analisis saya hari ini pada beberapa strategi untuk mengidentifikasi outlier. Di bawah ini adalah pembaruan cepat.
Ketika saya menjalankan kembali ets dengan dua titik data terakhir dihapus, saya mendapatkan perkiraan yang masuk akal. Silahkan lihat di bawah ini:
sumber
@peramal cuacaAnda benar bahwa nilai terakhir adalah outlier TETAPI periood 38 (nilai kedua dari belakang) bukanlah outlier ketika Anda memperhitungkan tren akun dan aktivitas musiman. Ini adalah momen yang menentukan / mengajar untuk menguji / mengevaluasi alternatif pendekatan yang kuat. Jika Anda tidak mengidentifikasi dan menyesuaikan untuk anomali maka variasinya meningkat menyebabkan item lain tidak ditemukan. Periode 32 juga merupakan pencilan. Periode 3,32 dan 1 juga outlier. Ada tren yang signifikan secara statistik dalam seri untuk 17 nilai pertama tetapi mereda setelah itu dimulai pada periode 18. Jadi, sebenarnya ada dua tren dalam data. Pelajaran yang bisa dipetik di sini adalah bahwa pendekatan sederhana yang menganggap tidak ada tren atau bentuk tertentu dari tren dan / atau secara diam-diam mengasumsikan bentuk spesifik dari proses auto-regresif perlu dipertanyakan secara serius. Ke depan ramalan yang baik harus mempertimbangkan kemungkinan kelanjutan dari kegiatan luar biasa yang ditemukan pada titik pamungkas (periode 39). Tidak mungkin untuk mengekstrak ini dari data.
Ini adalah model yang mungkin berguna:
Statistik model akhir ada di sini . Grafik Aktual / Fit dan Forecast menarik karena menyoroti aktivitas yang luar biasa.
sumber