Kami menggunakan STL (implementasi R) untuk memperkirakan data deret waktu.
Setiap hari kami menjalankan ramalan harian. Kami ingin membandingkan nilai perkiraan dengan nilai nyata dan mengidentifikasi penyimpangan rata-rata. Misalnya, kami menjalankan ramalan untuk besok dan mendapatkan poin perkiraan, kami ingin membandingkan poin ramalan ini dengan data nyata yang akan kami peroleh besok. Saya menyadari bahwa nilai perkiraan dan data nyata mungkin tidak cocok dengan sebagian besar waktu, itulah salah satu alasan kami ingin melacak seberapa akurat kami setiap hari.
Sekarang kami mencoba mengidentifikasi apa pendekatan terbaik untuk menyelesaikan masalah ini? petunjuk bantuan akan dihargai.
Saya melihat Mengukur pertanyaan akurasi ramalan , tetapi tampaknya ini terkait dengan membandingkan model daripada menghitung akurasi dengan nilai nyata.
Saya melihat implementasi fungsi akurasi dalam R , tetapi bingung dengan dua pertanyaan:
1) Apakah ini akan bekerja pada data nyata vs data perkiraan, karena sebagian besar tutorial mengatakan "data uji" vs "data perkiraan"
2) Tampaknya fungsi akurasi adalah susunan nilai, bukan% dari penyimpangan.
Jawaban:
Ada banyak cara untuk mengukur akurasi perkiraan, dan
accuracy()
fungsi dari paket perkiraan untuk R menghasilkan beberapa di antaranya. Dari komentar Anda tentang "% deviasi" sepertinya Anda ingin menggunakan Mean Persentase Absolut Kesalahan, yang merupakan salah satu langkah yang disediakan olehaccuracy()
. Ukuran ketepatan perkiraan yang paling umum dibahas di sini . Anda mungkin ingin memikirkan apakah MAPE adalah ukuran yang paling tepat untuk masalah Anda, atau apakah salah satu dari ukuran lain lebih baik.The
accuracy()
fungsi tidak bekerja pada data real. "Data uji" adalah data yang tidak digunakan untuk menyusun prakiraan. Kadang-kadang mereka tersedia tetapi tidak digunakan ketika ramalan dihitung (data klasik dibagi menjadi pelatihan dan set tes). Dalam situasi lain, semua data yang tersedia digunakan untuk menghitung ramalan, dan kemudian Anda harus menunggu sampai ada beberapa pengamatan di masa depan yang tersedia untuk digunakan sebagai data uji.Jadi jika
f
merupakan vektor prakiraan danx
merupakan vektor pengamatan yang sesuai dengan waktu yang sama, makaakan melakukan apa yang Anda inginkan.
sumber
Pertama, mari kita perjelas bahwa ada konsep akurasi dan presisi. Akurasi biasanya dikaitkan dengan bias, yaitu penyimpangan sistematis dari ramalan dari aktual. Presisi biasanya dikaitkan dengan varian kesalahan ramalan. Sesuatu seperti ini: vs . Jadi, ketika Anda menyebutkan "akurasi" di posting Anda, apakah Anda tahu perbedaannya?P r e c i s i o n = V a r [ f - y ]Accuracy=E(f)−y Precision=Var[f−y]
Kedua, ada langkah-langkah terpadu kualitas perkiraan, seperti , di mana dan adalah prakiraan dan aktual. Ada statistik untuk ukuran ini, seperti tes Chow untuk parameter keteguhan.fiyiMSFE=1n∑ni=1(fi−yi)2 fi yi
sumber
Saya telah melakukan ini dalam R di sini adalah kode saya untuk data saya untuk data in-sample dan out-of-sample:
semoga ini sedikit membantu. jika Anda ingin kode lengkap saya digunakan untuk menjalankan ini, silakan tanyakan karena ini sangat mendasar
sumber
Jawaban singkatnya: untuk mengevaluasi kualitas prediksi Anda, gunakan ukuran yang persis sama dengan yang Anda gunakan dalam pelatihan (fitting) model Anda.
Jawaban panjangnya:
Untuk memilih ukuran untuk keakuratan perkiraan Anda, kebutuhan pertama Anda untuk mengetahui bagaimana Anda mengartikan prediksi Anda. Dengan kata lain, apa yang sebenarnya Anda berikan sebagai "ramalan"? Apakah ini berarti nilai? Median? Nilai yang paling mungkin? Jawaban atas pertanyaan ini akan secara unik mengidentifikasi ukuran akurasi perkiraan. Jika Anda memperkirakan mean, Anda harus menggunakan deviasi mean root kuadrat sebagai ukuran akurasi perkiraan. Jika Anda memperkirakan median, Anda harus menggunakan deviasi absolut rata-rata sebagai ukuran akurasi.
Saya akan menguraikan sedikit tentang hal ini. Biarkan kami berasumsi bahwa Anda membuat prediksi / ramalan untuk besok. Mari kita juga berasumsi bahwa untuk nilai apa pun yang mungkin Anda amati besok, Anda memiliki probabilitas yang sesuai untuk diamati. Misalnya Anda tahu bahwa Anda mungkin mengamati 1 dengan probabilitas 0,03, 2 dengan probabilitas 0,07, 3 dengan probabilitas 0,11, dan seterusnya. Jadi, Anda memiliki distribusi probabilitas atas nilai yang berbeda. Dengan distribusi ini Anda dapat menghitung berbagai properti dan memberikannya sebagai "prediksi" Anda. Anda dapat menghitung mean dan memberikannya sebagai prediksi untuk besok. Atau Anda dapat menggunakan median sebagai prediksi Anda. Anda juga dapat menemukan nilai yang paling memungkinkan dan memberikannya sebagai prediksi Anda untuk besok.
Jika Anda menggunakan nilai rata-rata sebagai prediksi, maka pertanyaan "bagaimana mengukur keakuratan prediksi saya" harus diganti dengan "apa ukuran akurasi untuk rata-rata" dan jawabannya adalah "root mean square deviasi antara nilai dan prediksi nyata ". Jika Anda menggunakan median sebagai prediksi, Anda harus menggunakan deviasi absolut berarti.
Mungkin Anda tidak tahu apakah Anda menggunakan median atau maksud atau sesuatu yang lain. Untuk mengetahui apa yang sebenarnya Anda gunakan sebagai prediksi, Anda harus tahu ukuran apa yang Anda coba kurangi dalam pelatihan. Jika Anda mencoba menemukan parameter dari model yang meminimalkan deviasi mean root kuadrat antara prediksi dan nilai target dari data pelatihan, maka prediksi Anda harus diperlakukan sebagai mean. Jika Anda meminimalkan penyimpangan absolut, maka Anda melatih model Anda untuk memberikan median dan sebagainya.
TAMBAH
Saya ingin menekankan satu hal. Seperti yang telah saya sebutkan di atas, penting untuk menjaga ukuran akurasi yang sama dalam "cocok" dan "prediksi". Selain itu saya ingin mengatakan bahwa Anda benar-benar bebas dalam memilih tindakan Anda. Tidak ada ukuran "lebih baik" atau "lebih buruk". Ukurannya harus ditentukan dengan cara Anda (atau klien Anda) menggunakan prediksi Anda. Misalnya mungkin sangat penting (untuk Anda atau klien Anda) untuk memiliki kecocokan yang tepat dan jika Anda tidak memilikinya, itu tidak memainkan peran apa pun jika perbedaan antara nilai riil dan prediksi adalah besar atau kecil. Dalam kasus lain, perbedaan ini berperan. Perbedaan 1 lebih baik daripada perbedaan 2. Dalam beberapa kasus perbedaan 2 adalah 2 kali lebih buruk daripada perbedaan 1. Dalam kasus lain, perbedaan sama dengan 2 adalah 100 kali lebih buruk daripada perbedaan sama dengan 1. Anda juga bisa membayangkan kasus-kasus eksotis di mana Anda perlu menghasilkan nilai yang berbeda dari pengamatan. Jadi, ukuran kualitas angka yang Anda hasilkan dapat menjadi apa pun yang Anda inginkan, tergantung pada apa yang Anda butuhkan. Yang penting, adalah menggunakan ukuran yang sama dalam pelatihan (fit) dan evaluasi prediksi.
sumber