Apakah ada contoh paket R yang berubah secara dramatis di antara versi sehingga hasil fungsi statistik berbeda secara signifikan?

8

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.

Maiasaura
sumber
1
Pertanyaannya agak samar. Bisakah Anda lebih fokus sedikit?
Dirk Eddelbuettel
Ya, saya mengklarifikasi pertanyaan itu.
Maiasaura

Jawaban:

6

Saya punya masalah dengan paket glmnetlebih 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")bukan c("glmnet", "lognet")- atau mungkin sebaliknya). Tentu saja, mereka juga mengubah semua fungsi S3 mereka untuk menangani ini dengan benar (misalnya predict.lognet).

Masalahnya adalah: objek yang Anda buat dengan versi lama glmnettidak kompatibel dengan fungsi-fungsi baru (karena pengiriman bekerja sebaliknya). Sebagian besar orang tidak akan berada di tempat itu (siapa yang menyimpan glmnetobjek 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 :-)

Nick Sabbe
sumber
1
Untuk menjawab siapa yang menyimpan objek: Saya lakukan. :)
Iterator
8

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()dan sessionInfo(). Sekalipun ada perubahan, versi lama tetap dipertahankan di CRAN, jadi Anda bisa mendapatkan versi lama jika Anda membutuhkannya.

John Colby
sumber
1
+1 Saran bagus. Saya telah berada di kelas tutorial R sebelum di mana kode instruktur ditulis menggunakan versi R yang lebih lama daripada komputer laboratorium kampus dan butuh 30 menit debugging untuk mencari tahu apa yang berubah dalam rilis poin dan bagaimana kode kursus harus dimodifikasi. Sementara beberapa perangkat lunak mungkin terlalu patuh pada kompatibilitas ke belakang, tidak pernah mengejutkan saya bahwa ini akan menjadi kritik R.
Josh Hemann
1
@JohnColby benar - sangat penting untuk dapat mereproduksi pengaturan Anda, termasuk nomor versi paket, dan termasuk hal-hal yang sering diabaikan, seperti argumen yang diteruskan ke fungsi (saya mencoba untuk selalu menggunakan argumen bernama), nomor acak benih, berbagai ketergantungan eksternal, dan banyak lagi. Mengenai apakah ada satu paket yang mempengaruhi hasil, jawabannya adalah ya, dan lebih luas dari yang Anda harapkan: bahkan paket I / O dasar dapat memengaruhi hasil jika Anda kehilangan data. :) Anda mungkin kehilangan data atau data tersebut dapat dimodifikasi dengan beberapa cara jika perilaku memuat file default telah berubah.
Iterator
3

Poin singkat saja:

  • Ekosistem paket R sangat besar, dan tergantung pada masing-masing penulis, apakah mereka bermaksud mempertahankan kompatibilitas ke belakang.
  • Saya pribadi belum memiliki masalah dengan paket R dasar yang berubah dengan cara yang menyebabkan masalah kompatibilitas mundur. Secara umum, ini adalah salah satu alasan mengapa saya lebih suka menggunakan paket base R.
Jeromy Anglim
sumber
2

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.

Gala
sumber