Konteks: Menanggapi pertanyaan sebelumnya tentang penelitian yang dapat direproduksi, Jake menulis
Satu masalah yang kami temukan saat membuat arsip JASA kami adalah bahwa versi dan standar paket CRAN berubah. Jadi, dalam arsip itu, kami juga menyertakan versi paket yang kami gunakan. Sistem berbasis sketsa mungkin akan rusak ketika orang mengubah paket mereka (tidak yakin bagaimana memasukkan paket tambahan dalam paket yang merupakan Kompendium).
Akhirnya, saya bertanya-tanya tentang apa yang harus dilakukan ketika R itu sendiri berubah. Adakah cara untuk menghasilkan, katakanlah, mesin virtual yang mereproduksi seluruh lingkungan komputasi yang digunakan untuk kertas sehingga mesin virtual itu tidak besar?
Pertanyaan:
- Apa strategi yang baik untuk memastikan bahwa analisis data yang dapat direproduksi dapat direproduksi di masa mendatang (katakanlah, lima, sepuluh, atau dua puluh tahun setelah publikasi)?
- Secara khusus, apa strategi yang baik untuk memaksimalkan reproduktifitas berkelanjutan saat menggunakan Sweave dan R?
Ini tampaknya terkait dengan masalah memastikan bahwa proyek analisis data yang dapat direproduksi akan berjalan pada mesin orang lain dengan standar, paket, dan lain-lain yang sedikit berbeda.
sumber
Jawaban:
Pada tingkat tertentu, ini menjadi tidak mungkin. Pertimbangkan kasus bug floating point Pentium yang terkenal: Anda tidak hanya perlu menghemat model, data, parameter Anda, paket Anda, semua paket eksternal, sistem host atau bahasa (katakanlah, R) serta OS .. plus potensi perangkat kerasnya. Sekarang perhatikan bahwa beberapa hasil mungkin berbasis simulasi dan diperlukan sekelompok mesin tertentu ...
Itu sedikit banyak untuk menjadi praktis.
Dengan itu, saya pikir lebih banyak solusi pragmatis dari versi kode Anda (dan mungkin juga data Anda) dalam kontrol revisi, menyimpan versi semua perangkat lunak yang relevan dan memungkinkan untuk mereproduksi hasil dengan menjalankan satu skrip tingkat atas mungkin merupakan " kompromi yang cukup baik.
Jarak tempuh Anda mungkin beragam. Ini juga berbeda lintas disiplin atau industri. Tapi ingat yang lama melihat tentang ketidakmungkinan sistem yang sangat mudah: Anda hanya menciptakan orang yang lebih pintar.
sumber
lme4
).Langkah pertama dalam reproduksibilitas adalah memastikan data berada dalam format yang mudah dibaca oleh para peneliti di masa depan. File flat adalah pilihan yang jelas di sini (Fairbairn in press).
Untuk membuat kode bermanfaat dalam jangka panjang, mungkin hal terbaik untuk dilakukan adalah menulis dokumentasi yang jelas yang menjelaskan apa yang dilakukan kode dan juga cara kerjanya, sehingga jika rantai alat Anda hilang, analisis Anda dapat diterapkan kembali di beberapa sistem di masa mendatang. .
sumber
Satu strategi melibatkan penggunaan
cacher
paket.Diskusi dan contoh lebih lanjut dapat ditemukan dalam buku:
Namun, saya tidak memiliki pengalaman langsung tentang keefektifannya dalam memastikan reproduktifitas berkelanjutan.
sumber
Jika Anda tertarik dengan rute mesin virtual, saya pikir itu akan bisa dilakukan melalui distribusi linux kecil dengan versi spesifik R dan paket yang diinstal. Data disertakan, bersama dengan skrip, dan paket semuanya dalam file kotak virtual .
Ini tidak mengatasi masalah perangkat keras yang disebutkan sebelumnya seperti bug CPU Intel.
sumber
Saya akan merekomendasikan dua hal selain jawaban yang sudah ada;
Pada poin-poin penting dalam kode Anda, buang data saat ini sebagai file datar, sesuai namanya dan dijelaskan dalam komentar, sehingga menyoroti jika satu paket telah menghasilkan hasil yang berbeda di mana perbedaan telah diperkenalkan. File data ini, serta input asli dan output yang dihasilkan harus dimasukkan dalam 'set penelitian yang dapat direproduksi' Anda
Sertakan beberapa pengujian paket yang bersangkutan dalam kode Anda, misalnya menggunakan sesuatu seperti TestThat . Bagian yang sulit adalah membuat tes kecil yang dapat direproduksi yang cenderung menyoroti setiap perubahan dalam apa yang dilakukan paket yang terkait dengan analisis Anda. Setidaknya ini akan menyoroti kepada orang lain bahwa ada beberapa perbedaan dalam lingkungan.
sumber
Saran bagus, saya punya banyak hal untuk dilihat sekarang.
Ingat, satu pertimbangan yang sangat penting adalah memastikan bahwa pekerjaan itu "benar" sejak awal. Ini adalah peran yang dimainkan oleh alat-alat seperti Sweave , dengan meningkatkan peluang bahwa apa yang Anda lakukan, dan apa yang Anda katakan Anda lakukan, adalah hal yang sama.
sumber