Bagaimana cara memberi bobot lebih pada pengamatan terbaru di R?
Saya menganggap ini sebagai pertanyaan atau keinginan yang umum diajukan, tetapi saya memiliki kesulitan untuk mencari tahu bagaimana menerapkannya. Saya telah mencoba mencari banyak untuk ini tetapi saya tidak dapat menemukan contoh praktis yang baik.
Dalam contoh saya, saya akan memiliki dataset besar dari waktu ke waktu. Saya ingin mengatakan menerapkan semacam pembobotan eksponensial dari baris data yang lebih baru. Jadi saya akan memiliki semacam fungsi eksponensial yang mengatakan pengamatan pada 2015 ___ lebih penting untuk melatih model daripada pengamatan pada 2012.
Variabel dataset saya berisi campuran nilai kategoris dan numerik dan target saya adalah nilai numerik - jika itu penting.
Saya ingin menguji / mencoba menggunakan model seperti GBM / Random Forest, idealnya dalam paket CARET.
pembaruan-pertanyaan
Saya menghargai tanggapan yang diberikan di bawah ini tentang bagaimana cara membusuk secara eksponensial dengan jarak tanggal antara dua titik.
Namun, ketika datang untuk melatih model ini dalam caret, bagaimana sebenarnya faktor bobot? Nilai bobot di setiap baris pelatihan adalah jarak antara beberapa titik di masa depan dan saat titik itu terjadi secara historis.
Apakah bobot hanya berperan selama prediksi? Karena jika mereka ikut bermain selama pelatihan, bukankah itu akan menyebabkan berbagai masalah karena berbagai lipatan silang akan memiliki bobot yang berbeda-beda, mencoba memprediksi sesuatu yang mungkin benar-benar ada pada titik waktu sebelumnya?
sumber
Jawaban:
Bagaimana cara memberi bobot lebih pada pengamatan terbaru di R?
Saya kira Anda memiliki stempel waktu yang terkait dengan setiap pengamatan. Anda dapat menghitung variabel
timeElapsed = modelingTime - observationTime
. Sekarang Anda menerapkan fungsi eksponensial sederhana sebagaiW=K*exp(-timeElapsed/T)
, di manaK
konstanta penskalaan danT
adalah konstanta waktu untuk fungsi peluruhan.W
berfungsi sebagai case-weight.Sepengetahuan saya, banyak fungsi di
caret
izinkanweight
sebagai parameter, yang merupakan kolom bobot kasus yang akan disediakan untuk observasi terkait (sehingga memiliki panjang yang sama dengan #rows).sumber
caret::train
adalahweights
.Data (bukan analis membuat asumsi - tebakan) sering dapat menyarankan bentuk skema pembobotan. Ini dilakukan melalui GLS di mana bobot yang sesuai untuk model kuadrat terkecil tertimbang diperoleh dari perbedaan signifikan secara statistik yang ditemukan dalam varian kesalahan. Lihatlah Deteksi perubahan dan pencilan dengan ARIMA (prosedur Tsay) dan di sini http://docplayer.net/12080848-Outliers-level-shifts-and-variance-changes-in-time-series.html . Jika Anda ingin memposting data, silakan lakukan di sini dan saya akan mencoba dan membantu lebih lanjut karena saya memiliki akses rutin ke perangkat lunak yang mungkin mencerahkan Anda.
Ada versi R dari perangkat lunak yang saya gunakan.
Anda mungkin melihat Bagaimana cara memasukkan variabel kontrol dalam analisis Intervensi dengan ARIMA? karena memiliki contoh bagaimana bobot diidentifikasi dan digunakan untuk menstabilkan varians kesalahan sehingga secara efektif mempercayai / tidak percaya / mendiskon / menimbang / membobot / mempercayai nilai-nilai sebelumnya tertentu.
sumber