Saya memiliki satu set data yang saya coba lakukan regresi, dan gagal.
Situasi:
- Ribuan operator robot pertempuran saling bertarung satu sama lain menggunakan robot pertempuran.
- Beberapa robot pertempuran kuat dan kuat, dan yang lainnya lemah; yang kuat menang lebih sering dan memberikan lebih banyak kerusakan.
- Operator robot bervariasi dalam keterampilan, dengan yang lebih terampil menang lebih sering, dan memberikan lebih banyak kerusakan
- Kami memiliki beberapa informasi ringkasan tentang hasil pertempuran mereka, tetapi tidak semua detail.
- Kita tahu robot perang apa yang mereka gunakan dalam pertempuran mereka, dan berapa kali (termasuk berapa banyak pertempuran yang mereka menangkan), dan kita tahu total kerusakan yang mereka hadapi (dari dua jenis, damageA dan damageB) secara total
- Beberapa robot lebih baik dalam menimbulkan damageA, sementara yang lain merusakB
- Untuk operator robot pertempuran tak dikenal yang hanya berdasarkan pada robot apa yang telah mereka gunakan dalam pertempuran (dan berapa kali), kami ingin memperkirakan berapa banyak kerusakan dari masing-masing jenis yang akan mereka capai, dan berapa% pertempuran yang kemungkinan besar mereka menangkan
Sebagai contoh:
- John telah menggunakan Robot A untuk 4 pertempuran, dan Robot B untuk 2 pertempuran, dan telah menangani 240 unit DamageA
- James telah menggunakan Robot A untuk 1 pertempuran, dan Robot B untuk 10 pertempuran, dan telah menangani 1010 unit DamageA
Karena itu saya dapat memperkirakan bahwa Robot A mungkin menangani 10 unit Kerusakan A per pertempuran, sedangkan Robot B memberikan 100 unit Kerusakan A per pertempuran, dan dengan demikian jika diminta untuk memperkirakan Kerusakan A yang ditangani oleh Matthew yang hanya memainkan masing-masing dari dua robot untuk 2 pertempuran masing-masing, akan memperkirakan 220 == (10 * 2 + 100 * 2).
Sayangnya, data sebenarnya tidak bersih dan langsung, mungkin karena:
- Ada perbedaan yang signifikan karena keterampilan operator robot, misalnya, operator yang baik dapat menangani 20 unit kerusakan dengan Robot A sedangkan yang buruk hanya 5 unit.
- Ada beberapa varians acak karena lawan ditarik jika sampel kecil (misalnya seseorang menarik lawan yang kuat dan kalah meskipun memiliki robot yang lebih baik daripada lawan), meskipun pada akhirnya itu akan keluar
- Mungkin ada beberapa bias seleksi kecil di mana operator robot terbaik berhasil memilih robot terbaik untuk lebih sering bertempur
Kumpulan data nyata tersedia di sini (630 ribu entri hasil pertempuran yang diketahui operator):
Kumpulan data diatur sebagai berikut, dengan satu entri operator robot per baris:
- Kolom 1 tanpa label - ID operator
- pertempuran - pertempuran total yang diikuti oleh operator ini
- kemenangan - total pertempuran yang telah dimenangkan operator ini
- kekalahan - total pertempuran yang hilang dari operator ini
- damageA - total Damage A poin yang ditimbulkan
- damageB - total Damage B points yang ditimbulkan
- 130 pasang kolom sebagai berikut:
- battles_ [robotID] - pertempuran menggunakan robot [robotID]
- victories_ [robotID] - kemenangan diperoleh dengan menggunakan robot [robotID]
Apa yang telah saya lakukan sejauh ini:
- Mencoba beberapa model linier menggunakan
biglm
paket R yang membangun formula sepertidamageA ~ 0 + battles_1501 + battles_4201 + ...
mencoba untuk mendapatkan nilai "yang diharapkan" untuk masing-masing robot. - Sama, tetapi menghapus asal paksa mencegat dengan tidak termasuk
0 +
dalam rumus - Sama, tetapi juga termasuk
victories_[robotID]
dalam variabel independen - Sama seperti sebelumnya, tetapi hanya memilih operator robot yang angka kemenangannya dekat dengan angka kekalahan mereka
- Model regresi linier untuk
damageA ~ 0 + battles_1501 + battles_non_1501
manabattles_non_1501
semua pertempuran di robot selain robot model 1501. Kemudian diulang untuk semua jenis robot lainnya.
Saya melakukan pemeriksaan kewarasan dengan melihat nilai damageA dan damageB yang diprediksi, serta membandingkan rasio kemenangan / pertempuran dengan rasio kemenangan / pertempuran yang sebenarnya bisa kita hitung secara tepat untuk masing-masing robot.
Dalam semua kasus sementara hasilnya tidak sepenuhnya mati, mereka cukup untuk melihat bahwa modelnya tidak berfungsi. Misalnya, beberapa robot mencapai angka kerusakan negatif yang seharusnya tidak terjadi karena Anda tidak dapat melakukan kerusakan negatif dalam pertempuran.
Dalam kasus di mana saya juga menggunakan victories_[robotID]
nilai-nilai yang diketahui dalam rumus, banyak battle_[robotID]
koefisien akhirnya menjadi angka negatif yang agak besar, jadi saya mencoba memperkirakan untuk operator "rata-rata" battle_[robotID] + victories_[robotID] / 2
tetapi juga tidak memberikan hasil yang masuk akal.
Saya agak kehabisan ide sekarang.
lme
bukan saya biglm
, tetapi jelas saya perlu melakukan lebih banyak membaca tentang ini untuk memahami apa yang sebenarnya harus disediakan sebagai parameter untuk itu.