Kontekst: W odpowiedzi na wcześniejsze pytanie dotyczące powtarzalnych badań Jake napisał
Jednym z problemów, który odkryliśmy podczas tworzenia naszego archiwum JASA, była zmiana wersji i domyślnych pakietów CRAN. Tak więc w tym archiwum uwzględniamy również wersje używanych pakietów. System oparty na winietach prawdopodobnie się zepsuje, gdy ludzie zmienią swoje paczki (nie jestem pewien, jak dołączyć dodatkowe paczki do paczki, którą jest Kompendium).
Wreszcie zastanawiam się, co robić, gdy zmienia się sam R. Czy istnieją sposoby na stworzenie, powiedzmy, maszyny wirtualnej, która odtwarza całe środowisko obliczeniowe używane na papierze, tak aby maszyna wirtualna nie była ogromna?
Pytanie:
- Jakie są dobre strategie zapewniające powtarzalność analizy danych w przyszłości (powiedzmy pięć, dziesięć lub dwadzieścia lat po publikacji)?
- W szczególności, jakie są dobre strategie maksymalizacji bieżącej odtwarzalności przy użyciu Sweave i R?
Wydaje się, że jest to związane z kwestią zapewnienia, że projekt odtwarzalnej analizy danych będzie działał na czyimś komputerze z nieco innymi wartościami domyślnymi, pakietami itp.
źródło
Odpowiedzi:
Na pewnym poziomie staje się to niemożliwe. Rozważ przypadek słynnego błędu zmiennoprzecinkowego Pentium: musisz nie tylko zachować swoje modele, dane, parametry, pakiety, wszystkie pakiety zewnętrzne, system hosta lub język (powiedzmy R), a także system operacyjny. oraz potencjalnie sprzęt, na którym wszystko działało. Rozważmy teraz, że niektóre wyniki mogą być oparte na symulacji i wymagać określonego klastra maszyn ...
To tylko trochę za praktyczność.
Biorąc to pod uwagę, myślę, że bardziej pragmatyczne rozwiązania wersjonowania kodu (a może także danych) w kontroli wersji, przechowywania wersji całego odpowiedniego oprogramowania i umożliwienia odtwarzania wyników poprzez uruchomienie pojedynczego skryptu najwyższego poziomu mogą być „ wystarczająco dobry „kompromis.
Twój przebieg może się różnić. Różni się to również w zależności od dyscypliny lub branży. Ale pamiętajcie starą wersję o niemożliwości niezawodnych systemów: po prostu tworzysz mądrzejszych głupców.
źródło
lme4
).Pierwszym krokiem w odtwarzalności jest upewnienie się, że dane są w formacie łatwym do odczytania dla przyszłych badaczy. Pilniki płaskie są tutaj oczywistym wyborem (Fairbairn w druku).
Aby kod był użyteczny na dłuższą metę, być może najlepszą rzeczą do zrobienia jest napisanie przejrzystej dokumentacji wyjaśniającej zarówno działanie kodu, jak i sposób jego działania, tak aby w przypadku zaniku łańcucha narzędzi analiza mogła zostać ponownie zaimplementowana w przyszłym systemie .
źródło
Jedna strategia obejmuje korzystanie z
cacher
pakietu.Dalszą dyskusję i przykłady można znaleźć w książce:
Nie mam jednak doświadczenia z pierwszej ręki na temat jego skuteczności w zapewnianiu ciągłej odtwarzalności.
źródło
Jeśli interesuje Cię trasa maszyny wirtualnej, myślę, że byłoby to wykonalne poprzez małą dystrybucję linux z zainstalowaną konkretną wersją R i pakietów. Dane są dołączone, wraz ze skryptami i spakowane w całość wirtualnego pudełka .
Nie omija to wspomnianych wcześniej problemów sprzętowych, takich jak błąd procesora Intel.
źródło
Poleciłbym dwie rzeczy oprócz doskonałych odpowiedzi, które już istnieją;
W kluczowych punktach kodu zrzuć bieżące dane w postaci płaskiego pliku, odpowiednio nazwanego i opisanego w komentarzach, podkreślając w ten sposób, czy jeden pakiet przyniósł odmienne wyniki, jeśli różnice zostały wprowadzone. Te pliki danych, a także oryginalne dane wejściowe i wynikowe dane wyjściowe powinny zostać uwzględnione w „powtarzalnym zestawie badawczym”
Dołącz niektóre testy odpowiednich pakietów do swojego kodu, na przykład używając czegoś takiego jak TestThat . Trudność polega na wykonywaniu małych, powtarzalnych testów, które prawdopodobnie uwidocznią wszelkie zmiany w tym, co robi pakiet, które dotyczą Twojej analizy. Oznaczałoby to przynajmniej innej osobie, że istnieje pewna różnica w środowiskach.
źródło
Dobre sugestie, mam teraz wiele rzeczy do zbadania.
Pamiętaj, że niezwykle ważne jest upewnienie się, że praca jest „poprawna”. To jest rola, jaką odgrywają narzędzia takie jak Sweave , zwiększając szanse, że to, co zrobiłeś i co powiedziałeś, że to samo.
źródło