Statystyka śledcza, powtarzalne badania, Sweave, knitr czyli useR 2012

Gdyby zadać pytanie ,,Czy wyniki analiz statystycznych prezentowane w raportach lub artykułach naukowych powinny być powtarzalne?” większość osób odpowiedziałaby tak. Powinno być jasne jakie są dane źródłowe i jak były przetwarzane zanim uzyskano podany wynik.

Na pytanie ,,Czy wyniki analiz statystycznych prezentowane w raportach lub pracach naukowych można odtworzyć?” odpowiadać powinny tylko osoby przygotowujące raporty lub próbujące odtworzyć wyniki innych. I tutaj z odpowiedziami może być różnie. W skutek wstępnych transformacji, usuwania przypadków ,,odstających”, różnych wariantów normalizacji, zawodnej pamięci bywa tak, że po roku autor nie jest w stanie odtworzyć własnych analiz, a co dopiero inna osoba. Efekt ten jest szczególnie silny gdy używa się narzędzie typu ,,wyklikaj analizę i zapomnij”.

Problem zawodnej pamięci jest mniej poważny niż problemy w analizie. Każdy jest omylny, dostęp do dokładnego opisu jak analizy zostały przeprowadzone pozwala na szybkie znalezienie i naprawienie ewentualnych błędów.

Statystyka śledcza

Statystyka śledcza to robocza nazwa dziedziny w której celem jest zbadanie czy analizę danych można odtworzyć oraz czy analiza została przeprowadzona poprawnie. Dziś na useR Kevin Coombes pokazywał przykłady błędów statystycznych znalezionych w poważnych czasopismach medycznych (takich poważnych błędów jak np pomylenie indeksu identyfikatora nazwy genu o +1 czy pomylenie etykietek zdrowy/chory!). Jak się okazuje wyśledzenie niektórych błędów w artykule kosztuje ponad 1500 godzin pracy statystyka! 1500 godzin to prawie rok pracy na pełnym etacie! A byłoby łatwiej gdyby nie trzeba było przeprowadzać odwrotnej inżynierii pracy statystyka, ale gdyby ta praca była udokumentowana. Bardzo ciekawy przypadek jednego ze znalezionych przez Kevina błędu znaleźć można w pracy http://bioinformatics.mdanderson.org/Supplements/ReproRsch-Chemo/SR0.pdf, materiały dodatkowe pozwalające na całkowite odtworzenie tego znaleziska znajdują się tutaj http://bioinformatics.mdanderson.org/Supplements/ReproRsch-Chemo/.

Powtarzalne badania

Na szczęście są narzędzia pozwalające na zapisanie całej analizy w postaci powtarzalnego skryptu (np. R) oraz zintegrowanie takiego skryptu z narzędziem pozwalającym na wygenerowanie prezentacji, raportu z komentarzami, publikacji, książki, podręcznika w formacie pdf, html, doc i innych. Taka integracja pozwala na dokładne sprawdzenie jaki zestaw analiz był użyty by wygenerować określony wykres / wynik / tabelę.

Do takiej integracji służą między innymi pakiety Sweave i knitr dla programu R.

Statystyk Frank Harell jest jednym z misjonarzy powtarzalnych badań, poprowadził na useR interesujące warsztaty dotyczące obu pakietów.  Obszerne materiały prezentowane podczas warsztatów i wiele ciekawych odnośników do samouczków znaleźć można na tej stronie: http://biostat.mc.vanderbilt.edu/wiki/Main/SweaveLatex.

 

4 myśli na temat “Statystyka śledcza, powtarzalne badania, Sweave, knitr czyli useR 2012”

    1. Do Sweave mam historyczny sentyment, ale zdecydowanie knitr jest prostszy (np dla wielu grafik w jednej wstawce, współpraca z ggplot2), ładniejszy (koloruje składnie, formatuje tekst), bardziej zaawansowany (można w pdf/html osadzać animacje, modyfikować mechanizm generujący kod wyjściowy) itp.

      Słyszałem o pomyśle wymuszania na studentach by oddawali wszystkie prace domowe/projekty zaliczeniowe z użyciem knitr. Mam zamiar taki sam wymóg postawić na moich zajęciach (ciekawe czy po tej deklaracji ktoś się na nie zapisze).
      Argument za jest taki, że trudno oczekiwać powtarzalnych badań jeżeli nie wymaga się powtarzalnych rozwiązań prac domowych. Do mnie trafił.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

Możesz użyć następujących tagów oraz atrybutów HTML-a: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">