Jak skutecznie zarządzać projektem analizy statystycznej?

89

Często słyszymy o zarządzaniu projektami i wzorcach projektowych w informatyce, ale rzadziej w analizie statystycznej. Wydaje się jednak, że decydującym krokiem w kierunku opracowania skutecznego i trwałego projektu statystycznego jest utrzymanie porządku.

Często opowiadam się za użyciem R i spójnej organizacji plików w oddzielnych folderach (plik danych surowych, plik danych przekształconych, skrypty R, rysunki, notatki itp.). Głównym powodem takiego podejścia jest to, że późniejsze uruchomienie analizy może być łatwiejsze (na przykład, gdy zapomniałeś, jak udało ci się stworzyć dany wykres).

Jakie są najlepsze praktyki w statystycznym zarządzaniu projektami lub jakie zalecenia chciałbyś przekazać na podstawie własnego doświadczenia? Oczywiście dotyczy to każdego oprogramowania statystycznego. ( poproszę jedną odpowiedź na post )

chl
źródło
Głosuję za zamknięciem tego pytania jako nie na temat, ponieważ dotyczy zarządzania projektami
Aksakal
2
@Aksakal: Myślę, że jesteś trochę trudny. :) Dotyczy „ osób zainteresowanych statystykami ”. Ponad 70 głosów zdecydowanie sugeruje, że zwykli użytkownicy uznali to pytanie za interesujące i przydatne.
usεr11852
1
Myślę, że należy to rozważyć tutaj.
gung
@gung Być może chciałbyś dodać odpowiedź do tego wątku Meta, abyśmy mogli go omówić?
ameba

Odpowiedzi:

80

Przygotowuję szybką serię wskazówek, które znalazłem na temat SO (jak sugeruje @Shane), Biostar (dalej, BS) i tej SE. Starałem się jak najlepiej potwierdzić własność każdego elementu i wybrać pierwszą lub bardzo pozytywną odpowiedź. Dodałem również własne elementy i oflagowałem przedmioty specyficzne dla środowiska [R].

Zarządzanie danymi

  • Utwórz strukturę projektu, aby utrzymać wszystkie rzeczy we właściwym miejscu (dane, kod, cyfry itp., Giovanni / BS)
  • Nigdy nie modyfikuj surowych plików danych (najlepiej powinny być tylko do odczytu), kopiuj / zmieniaj nazwy na nowe podczas dokonywania transformacji, czyszczenia itp.
  • Sprawdź spójność danych ( Whuber / SE)
  • Zarządzaj zależnościami skryptowymi i przepływem danych za pomocą narzędzia do automatyzacji kompilacji, takiego jak GNU make ( Karl Broman / Zachary Jones )

Kodowanie

  • organizować kod źródłowy w logiczne jednostki lub bloki konstrukcyjne ( Josh Reich / hadley / ars / SO; giovanni / Khader Shameer / BS)
  • oddziel kod źródłowy od edycji, szczególnie w przypadku dużych projektów - częściowo pokrywając się z poprzednim elementem i raportowaniem
  • Dokumentuj wszystko, np. Za pomocą tlenu [R] ( Shane / SO) lub spójnego autoportretu w pliku źródłowym - dobra dyskusja na temat Medstats, dokumentowanie analiz i edycji danych Opcje
  • [R] Funkcje niestandardowe można umieścić w dedykowanym pliku (który można uzyskać w razie potrzeby), w nowym środowisku (aby uniknąć zapełniania przestrzeni nazw najwyższego poziomu, Brendan OConnor / SO) lub w pakiecie ( Dirk Eddelbuettel / Shane / SO)

Analiza

  • Nie zapomnij ustawić / nagrać materiału siewnego użytego do wywołania RNG lub algorytmów stochastycznych (np. K-średnich)
  • W przypadku badań Monte Carlo może być interesujące przechowywanie specyfikacji / parametrów w osobnym pliku ( sumatra może być dobrym kandydatem, giovanni / BS)
  • Nie ograniczaj się do jednego wykresu na zmienną, używaj wyświetlaczy wielowymiarowych (Trellis) i interaktywnych narzędzi do wizualizacji (np. GGobi)

Wersjonowanie

  • Użyj pewnego rodzaju kontroli wersji dla łatwego śledzenia / eksportu, np. Git ( Sharpie / VonC / JD Long / SO) - wynika to z ładnych pytań zadanych przez @Jeromy i @Tal
  • Wykonuj kopie zapasowe wszystkiego regularnie ( Sharpie / JD Long / SO)
  • Zachowaj dziennik swoich pomysłów lub polegaj na narzędziu do śledzenia problemów, takim jak ditz ( giovanni / BS) - częściowo zbędny w stosunku do poprzedniego elementu, ponieważ jest on dostępny w Git

Edycja / raportowanie

Na marginesie, Hadley Wickham oferuje kompleksowy przegląd zarządzania projektami R , w tym odtwarzalną egzemplifikację i jednolitą filozofię danych .

Wreszcie, w swoim zorientowanym na R przepływie pracy analizy danych statystycznych Oliver Kirchkamp oferuje bardzo szczegółowy przegląd tego, dlaczego przyjęcie i przestrzeganie określonego przepływu pracy pomoże statystykom współpracować ze sobą, zapewniając jednocześnie integralność danych i odtwarzalność wyników. Ponadto zawiera omówienie korzystania z systemu tkania i kontroli wersji. Użytkownicy Staty mogą uznać za przydatny przepływ pracy analizy danych J. Scotta Longa .

chl
źródło
Świetna robota chl! Czy byłoby w porządku, gdybym opublikował to na moim blogu? (Chodzi mi o to, że ten tekst to DW, więc mogłem, ale chciałem, żebyś w każdym razie pozwolił :)) Pozdrawiam, Tal
Tal Galili
@Tal Nie ma problemu. Nie jest to wyczerpująca lista, ale może później możesz zebrać inne przydatne linki. Zachęcamy również do lepszego dostosowania lub reorganizacji.
chl
+1 To ładna lista. Możesz rozważyć „zaakceptowanie tego”, aby zawsze było na wierzchu; biorąc pod uwagę, że jest to CW, każdy może go aktualizować.
Shane
@Shane Cóż, jestem ci wdzięczny za udzielenie pierwszej odpowiedzi z tak przydatnymi linkami. Dodaj / zmodyfikuj w dowolny sposób.
chl
Opublikowałem to tutaj. Świetna lista! r-statistics.com/2010/09/…
Tal Galili
21

To nie daje konkretnej odpowiedzi, ale możesz spojrzeć na te powiązane pytania dotyczące przepełnienia stosu:

Być może zainteresuje Cię również najnowszy projekt Johna Mylesa White'a dotyczący stworzenia szablonu projektu statystycznego.

Shane
źródło
Dzięki za linki! Pytanie jest otwarte dla każdego oprogramowania statystycznego - używam od czasu do czasu Pythona i Staty, więc zastanawiam się, czy potwierdzeni użytkownicy mogą przynieść tam ciekawe rekomendacje.
chl
Absolutnie; chociaż dodam, że zalecenia w powyższych linkach mogą naprawdę mieć zastosowanie do każdego projektu statystycznego (niezależnie od języka).
Shane
Zdecydowanie tak! W tym samym czasie zaktualizowałem swoje pytanie.
chl
8

To pokrywa się z odpowiedzią Shane'a, ale moim zdaniem istnieją dwa główne pomosty:

  • Odtwarzalność ; nie tylko dlatego, że nie skończysz z wynikami, które są „jakoś” wykonane, ale także będziesz mógł szybciej uruchomić analizę (w przypadku innych danych lub z nieznacznie zmienionymi parametrami) i mieć więcej czasu na przemyślenie wyników. W przypadku ogromnych danych możesz najpierw przetestować swoje pomysły na jakimś małym „zestawie”, a następnie z łatwością rozszerzyć całe dane.
  • Dobra dokumentacja ; skomentował skrypty pod kontrolą wersji, niektóre czasopisma badawcze, a nawet system zgłoszeń do bardziej złożonych projektów. Poprawia odtwarzalność, ułatwia śledzenie błędów i banowanie raportów końcowych.
użytkownik88
źródło
+1 Podoba mi się drugi punkt (używam roxygen + git). Pierwszy punkt sprawia, że ​​myślę również o możliwości przekazania kodu innemu statystykowi, który będzie mógł odtworzyć twoje wyniki na późniejszym etapie projektu, bez żadnej pomocy.
chl
Odtwarzalność W każdym razie dane mają losowy błąd, więc kogo to obchodzi. Dokumentacja? Dwie możliwe odpowiedzi: 1) Jesteśmy zbyt zajęci, nie mamy czasu na dokumentację lub 2) Mieliśmy tylko budżet na analizę lub udokumentowanie jej, więc postanowiliśmy ją przeprowadzić. Myślisz, że żartuję? Wielokrotnie widziałem / słyszałem te postawy - przy projektach, w których życie szło na linii.
Mark L. Stone,
4

Van Belle jest źródłem zasad udanych projektów statystycznych.

Carlos Accioly
źródło
1

Tylko moje 2 centy. Uważam, że Notepad ++ jest do tego przydatny. Mogę utrzymywać osobne skrypty (kontrola programu, formatowanie danych itp.) I plik .pad dla każdego projektu. Wywołanie pliku .pad to wszystkie skrypty powiązane z tym projektem.

Wes McCardle
źródło
3
Masz na myśli notepad ++ z wykorzystaniem npptor :)
Tal Galili
1

Podczas gdy inne odpowiedzi są świetne, dodałbym jeszcze jeden sentyment: Unikaj używania SPSS. Użyłem SPSS do pracy magisterskiej, a teraz regularnie pracuję w badaniach rynku.

Podczas pracy z SPSS niezwykle trudno było opracować zorganizowany kod statystyczny, ponieważ SPSS źle radzi sobie z wieloma plikami (oczywiście możesz obsługiwać wiele plików, ale nie jest tak bezbolesny jak R), ponieważ nie możesz przechowywać zestawów danych do zmiennej - musisz użyć kodu „zestaw danych aktywuj x” - kod, który może być całkowitym bólem. Ponadto składnia jest nieporęczna i zachęca do tworzenia skrótów, co czyni kod jeszcze bardziej nieczytelnym.

Christian Sauer
źródło
0

Notatniki Jupyter, które współpracują z R / Python / Matlab / etc, usuwają problem z zapamiętywaniem, który skrypt generuje określoną liczbę. Ten post opisuje schludny sposób trzymania kodu i cyfry tuż obok siebie. Przechowywanie wszystkich cyfr dla rozdziału papierowego lub pracy dyplomowej w jednym zeszycie sprawia, że ​​kod asccoated jest bardzo łatwy do znalezienia.

A nawet lepiej, ponieważ możesz przewijać, powiedzmy, tuzin postaci, aby znaleźć tę, którą chcesz. Kod jest ukryty, dopóki nie będzie potrzebny.

hugke729
źródło