Araştırmanın daha uzun vadeli tekrarlanabilirliğini nasıl artırabilirim (özellikle R ve Sweave kullanarak)


31

Bağlam: Tekrarlanabilir araştırma konusundaki daha önceki bir soruya cevaben Jake yazdı

JASA arşivimizi oluştururken keşfettiğimiz bir sorun, CRAN paketlerinin sürümlerinin ve varsayılanlarının değişmesiydi. Dolayısıyla, bu arşivde kullandığımız paketlerin sürümlerini de ekliyoruz. Skeç tabanlı sistem muhtemelen millet paketlerini değiştirdikçe bozulur (Ekstra paketin içine ilave paketlerin nasıl ekleneceğinden emin değilsiniz).

Sonunda, R'nin kendisi değiştiğinde ne yapacağımı merak ediyorum. Sanal makinenin muazzam olmayacağı bir kağıt için kullanılan tüm hesaplama ortamını üreten bir sanal makine üretmenin yolları var mı?

Soru:

  • Gelecekte çoğaltılabilir veri analizinin tekrarlanabilir olmasını sağlamak için iyi stratejiler nelerdir (örneğin, yayından beş, on veya yirmi yıl sonra)?
  • Özellikle, Sweave ve R kullanırken devam eden tekrarlanabilirliği en üst düzeye çıkarmak için iyi stratejiler nelerdir?

Bu, bir başkasının makinesinde yeniden üretilebilir bir veri analizi projesinin biraz farklı varsayılanlar, paketler, vb.


Teorik davranışı doğrulamak için RUnit ile Ünite Testi yapmayı düşündünüz mü?

Yanıtlar:


18

Bir düzeyde, bu imkansız hale gelir. Ünlü Pentium kayan nokta hatası durumunu düşünün: yalnızca modellerinizi, verilerinizi, parametrelerinizi, paketlerinizi, tüm harici paketlerinizi, ana sisteminizi veya dilinizi (örneğin, R) ve işletim sisteminizi korumanız gerekmez. artı potansiyel olarak hepsinin çalıştığı donanım. Şimdi bazı sonuçların simülasyon tabanlı olabileceğini ve belirli bir makine kümesini gerektirebileceğini düşünün ...

Bu pratik olmak için biraz fazla.

Bununla birlikte, revizyon kontrolünde kodunuzu (ve belki de verilerinizi) sürümlendirmenin, ilgili tüm yazılımların sürümlerinin depolanmasının ve sonuçların tek bir üst seviye komut dosyası çalıştırılarak yeniden üretilmesini mümkün kılmanın daha pragmatik çözümlerinin " yeterince iyi "uzlaşma.

Kilometreniz değişebilir. Bu aynı zamanda disiplinler veya endüstri arasında farklılık gösterir. Ancak, kusursuz sistemlerin imkansızlığı hakkındaki eski testereyi hatırlayın: Sadece daha akıllı aptallar yaratırsınız.


1
(+1) Sadece seninle aynı fikirdeyim. Özellikle R hakkında, (a) bir paketin güncellenmesinden sonra (son zamanlarda başıma gelen) bazı hesapların tekrarlanabilir kalmasını sağlamak çok zor görünüyor ve (b) bir gün bağımlılıklarla bir çatışma çıkmayacak (durum böyleydi; için lme4).
chl

13

Yeniden üretilebilirlikteki ilk adım, verilerin gelecekteki araştırmacılar tarafından okunması kolay bir formatta olmasını sağlamaktır. Düz dosyalar burada açık bir seçimdir (basında Fairbairn).

Kodu uzun vadede yararlı kılmak için, belki de yapılacak en iyi şey, hem kodun ne yaptığını, hem de nasıl çalıştığını açıklayan net belgeler yazmaktır; böylece, takım zinciriniz ortadan kalkarsa, analiziniz gelecekteki bir sisteme yeniden uygulanabilir. .


1
İlk önce anlaşmalı, sağlam veri ve meta veriler.
mindless.panda

11

Bir strateji cacherpaketi kullanmayı içerir .

  • Peng RD, Eckel SP (2009). "Önbelleğe alınmış hesaplamaları kullanarak dağıtılmış yeniden üretilebilir araştırmalar," IEEE Bilim ve Mühendislikte Hesaplama, 11 (1), 28–34. ( PDF çevrimiçi )
  • Ayrıca Roger Peng'in web sitesinde daha fazla makale görmek

Daha fazla tartışma ve örnekler kitapta bulunabilir:

Ancak, sürekli tekrarlanabilirliği sağlamadaki etkinliği konusunda ilk elden deneyime sahip değilim.


7

Sanal makine rotasıyla ilgileniyorsanız, R ve paketlerin belirli sürümleriyle küçük bir linux dağıtımı yoluyla yapılabileceğini düşünüyorum. Veriler, komut dosyalarıyla birlikte gelir ve her şeyi sanal bir kutu dosyasına paketler .

Bu, Intel CPU hatası gibi daha önce bahsedilen donanım sorunlarını çözmez.


4

Zaten mevcut mükemmel cevaplara ek olarak iki şeyi tavsiye ediyorum;

  • Kodunuzdaki Anahtar noktalarda, geçerli verileri yorumlarda uygun şekilde adlandırılmış ve açıklanmış düz bir dosya olarak boşaltın; Bu veri dosyalarının yanı sıra orijinal girdi ve elde edilen çıktı 'tekrarlanabilir araştırma kümenize' dahil edilmelidir.

  • Örneğin TestThat gibi bir şey kullanarak, kodunuzla ilgili paketlerin bazı testlerini ekleyin . Zor kısım, bir paketin analizinizle ne alakası olduğuna dair herhangi bir değişikliği vurgulaması muhtemel olan küçük, tekrarlanabilir testler yapmaktır . Bu, en azından ortamlarda bazı farklılıklar olduğunu başkalarına vurgulayacaktır.


1

İyi öneriler, şimdi dikkat etmem gereken çok şey var.

Unutmayın, son derece önemli bir husus, işin her şeyden önce "doğru" olduğundan emin olmaktır. Bu, Sweave gibi araçların , yaptığınız ve yaptığınız şeyin aynı olma şansını artırarak oynadığı roldür .


1
Sumatra projesi de yardımcı olabilecek bir proje: neuralensemble.org/trac/sumatra/wiki . Kodunuzu çalıştırmak, R veya başka bir şey olmak için komut satırı arayüzünü kullanabilirsiniz. Bir de Python API var. R-blog yazarlarında tekrarlanabilir araştırma için R-merkezli araçları tartışan güzel bir blog yazısı var ve Sumatra'yı da kullanıyor. r-bloggers.com/managing-a-statistical-analysis-project- –- ilkeler ve en iyi uygulamalar /
Josh Hemann,
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.