Saya mencoba memahami bagaimana orang menggunakan paket R dan bertanya-tanya apakah ada kasus yang terdokumentasi di mana paket R telah menghasilkan jawaban yang berbeda.
Klarifikasi: Motivasi di balik pertanyaan ini berasal dari upaya saya terlibat di mana tujuan untuk memahami pentingnya asal dalam metode analitis dan bagaimana hal itu memfasilitasi penelitian yang dapat direproduksi. Sementara R besar di komunitas sains saat ini, dan paket R diversi dalam CRAN, tanpa informasi terperinci [terutama nomor versi], seseorang yang mencoba mereproduksi sebuah karya di masa depan mungkin sampai pada kesimpulan yang berbeda bahwa karya aslinya ( bahkan dengan data asli).
Contoh: Kertas oleh John Doe mengatakan "kami menggunakan R 2.3.1 dan mengemas glmulti agar sesuai dengan model kami". 10 tahun dari sekarang, seseorang mungkin menggunakan versi baru glmulti (tidak ada yang tahu versi apa yang digunakan dalam aslinya) yang mungkin menghasilkan kesimpulan yang jauh berbeda. Pertanyaan saya: Apakah sudah ada contoh hal seperti itu terjadi? Paket Versi 2 atau R menghasilkan hasil yang jauh berbeda dengan versi 1.
Jawaban:
Saya punya masalah dengan paket
glmnet
lebih dari versi. Jika saya ingat dengan baik, itu akan beralih dari versi 1.5 ke 1.6, tetapi saya mungkin sedikit tidak aktif.Pembuat paket / pemelihara mengubah urutan kelas objek mereka (jadi itu menjadi
c("lognet", "glmnet")
bukanc("glmnet", "lognet")
- atau mungkin sebaliknya). Tentu saja, mereka juga mengubah semua fungsi S3 mereka untuk menangani ini dengan benar (misalnyapredict.lognet
).Masalahnya adalah: objek yang Anda buat dengan versi lama
glmnet
tidak kompatibel dengan fungsi-fungsi baru (karena pengiriman bekerja sebaliknya). Sebagian besar orang tidak akan berada di tempat itu (siapa yang menyimpanglmnet
objek untuk digunakan nanti?), Tetapi saya melakukannya.Pikiran Anda: ini adalah paket yang sangat kuat, yang dikembangkan oleh orang-orang yang sangat cerdas, sehingga bisa terjadi pada siapa pun :-)
sumber
Ini akan bervariasi dari paket ke paket, tetapi jawaban umum adalah ya . Output dapat bervariasi, dan bahkan penggunaan dasar juga (input / ouput args). Inilah sebabnya, ketika saya melakukan analisis penting, saya selalu ingin mendokumentasikan versi apa yang digunakan
version()
dansessionInfo()
. Sekalipun ada perubahan, versi lama tetap dipertahankan di CRAN, jadi Anda bisa mendapatkan versi lama jika Anda membutuhkannya.sumber
Poin singkat saja:
sumber
Dalam pengalaman saya, sebagian besar perubahan membuat jenis masalah komputasi / pemrograman biasa. Fungsi menjadi usang, argumen berbeda, dll. Misalnya, sudah terjadi pada saya bahwa kode akan berhenti berfungsi karena beberapa fungsi memerlukan argumen tambahan. Ini bisa mengganggu tetapi masalahnya jelas dan biasanya tidak terlalu sulit untuk diselesaikan.
Beberapa paket dapat dipertahankan dengan lebih baik dalam hal itu tetapi “aturan” perangkat lunak bebas yang biasa berlaku: Anda harus melihat bahwa itu dibuat oleh sukarelawan - seringkali ahli statistik yang memiliki tugas lain dan bukan pengembang perangkat lunak profesional penuh waktu - dan jika kualitas dan ketergantungan sangat penting bagi Anda, Anda harus menghindari apa pun dengan nomor versi seperti 0.x dan hanya menggunakan paket matang dengan komunitas pengguna dan pengembang yang aktif.
Saya belum pernah menemukan pembaruan yang akan mengakibatkan perubahan berbahaya dari hasil statistik (misalnya mengganti metode default dalam beberapa fungsi, mengubah derajat kebebasan dan nilai p sambil menghasilkan hasil yang serupa di permukaan). Saya kira itu harus terjadi, setidaknya melalui koreksi bug (tapi saya telah membaca di suatu tempat bahwa Microsoft benar-benar menambahkan kode dalam produk baru untuk meniru beberapa bug yang lebih tua untuk menghindari melanggar kompatibilitas dengan program yang bergantung pada bug ini). Mungkin, beberapa pengelola dapat memberi kita wawasan tentang cara hal-hal ini ditangani untuk paket mereka.
sumber