Jakie są cenne projekty open source do analizy statystycznej?

69

Jakie są obecnie dostępne niektóre cenne projekty open source do analizy statystycznej?

Edycja: jak wskazał Sharpie, wartościowe mogą oznaczać pomoc w wykonywaniu zadań szybciej lub taniej.

grokus
źródło
5
Może być dzieckiem plakatu dla argumentujących i subiektywnych. Przynajmniej trzeba zdefiniować „wartościowy”.
Sharpie
2
Może nie powinno się skupiać na „wartościowych”, a raczej na „zaletach” i „wadach” każdego projektu?
A Lion
A może nawet „Jak X pomoże ci zrobić Y szybciej / taniej i zabić zarazki, które powodują nieświeży oddech”.
Sharpie

Odpowiedzi:

88

Projekt R.

http://www.r-project.org/

R jest cenny i znaczący, ponieważ był pierwszą powszechnie akceptowaną alternatywą Open-Source dla dużych pakietów. Jest dojrzały, dobrze wspierany i stanowi standard w wielu społecznościach naukowych.

Jay Stevens
źródło
Tak, R jest fajny, ale DLACZEGO jest „cenny”.
Sharpie
11
Jest dojrzały, dobrze wspierany i stanowi standard w niektórych społecznościach naukowych (popularny na przykład w naszym dziale sztucznej inteligencji)
Menno
10
Jest rozszerzalny i nie ma techniki statystycznej, której nie da się zrobić.
aL3xa
20

Do wykonywania różnych zadań MCMC w Pythonie jest PyMC , z którego dość sporo skorzystałem. Nie natknąłem się na nic, co mogę zrobić w BŁĘDACH, czego nie mogę zrobić w PyMC, a sposób, w jaki określasz modele i wprowadzasz dane, wydaje mi się o wiele bardziej intuicyjny.

Bogaty
źródło
18

Może się to pochwalić zapomnieniem, ale z radością korzystałem z klonu Matlab Octave przez wiele lat. Istnieją dość dobre biblioteki w oktawowej kuźni do generowania zmiennych losowych z różnych rozkładów, testów statystycznych itp., Chociaż wyraźnie jest to niejasne przez R. Jedną możliwą przewagą nad R jest to, że Matlab / oktawa jest lingua franca wśród analityków numerycznych, badaczy optymalizacyjnych , a także pewna grupa matematyków stosowanych (przynajmniej kiedy byłam w szkole), podczas gdy nikt w moim dziale, o ile mi wiadomo, nie wykorzystał R. mojej straty. naucz się obu, jeśli to możliwe!

shabbychef
źródło
4
Prawdziwy komentarz. Ale jako doświadczony programista czuję się brudny za każdym razem, gdy używam Matlab / Octave, który jest okropnie zaprojektowanym (jeśli w ogóle zaprojektowanym) językiem. Oczywiście, żałuję też w SAS, który oczywiście został zaprojektowany dla kart perforowanych.
Wayne
1
@ Wayne prawda. Pamiętam, jak kiedyś usłyszałem, jak Bob Harper odnosi się do języka Matlab jako „semantycznie podejrzanego”;) Tak jak w przypadku wielu języków, gdy jednak wystarczająco go użyjesz, nauczysz się radzić sobie z jego dziwactwami.
shabbychef
17

Przychodzą mi na myśl dwa projekty:

  1. Błędy - usuwanie (część) bólu ze statystyk bayesowskich. Pozwala użytkownikowi skupić się bardziej na modelu, a nieco mniej na MCMC.
  2. Bioconductor - być może najpopularniejsze narzędzie statystyczne w Bioinformatyce. Wiem, że to repozytorium R, ale jest wiele osób, które chcą się uczyć R, tylko dla Bioconductor. Liczba pakietów dostępnych do najnowocześniejszych analiz sprawia, że ​​nie ma sobie równych.
csgillespie
źródło
1
Andrew Gelman ma ładną bibliotekę R, która łączy Bugs z R.
bshor
4
Chciałbym przeformułować, że „najpopularniejsze narzędzie statystyczne w bioinformatyce” ... Bioinformatycy przeprowadzający analizę mikromacierzy używają go w szerokim zakresie, tak. Ale bioinformatyka nie ogranicza się do tego;)
Nicojo,
15

Weka do eksploracji danych - zawiera wiele algorytmów klasyfikacji i klastrowania w Javie.

Fabian Steeg
źródło
Jaka jest wydajność tego? (Biegam krzycząc, gdy widzę słowo „Java” ...)
shabbychef
@shabbychef Wydaje się, że całkiem nieźle z tego, co słyszałem, ale generalnie Weka jest używana jako pierwszy krok do przetestowania kilku algorytmów i sprawdzenia ich wydajności na danych zestawach danych (lub ich podzestawie), a następnie przekodowaniu części programu podstawowego, aby zoptymalizować jego wydajność (np. z danymi wielowymiarowymi wymagającymi weryfikacji krzyżowej lub bootstrapowania), czasem w C lub Python.
chl
2
@shabbychef: Programy Java nie muszą być wolnymi potworami. Przyznaję, że dobrze napisany kod C prawie zawsze będzie szybszy niż podobna implementacja w Javie, ale dobrze napisany kod Java najprawdopodobniej nie będzie super wolny. Plus programowanie w Javie ma wiele znaczących zalet.
posdef
15

ggobi „to program do wizualizacji typu open source do eksploracji danych wielowymiarowych”.

Mat Kelcey ma dobre 5-minutowe wprowadzenie do ggobi .

Jeromy Anglim
źródło
14

Incanter to oparta na Clojure platforma typu R (środowisko + biblioteki) do obliczeń statystycznych i grafiki.

Alex Ott
źródło
Znowu - dlaczego? Jak przekonałbym mojego szefa, by użył tego, powiedzmy, w Excelu.
Sharpie
1
@James + j.mp/9fVmtV , j.mp/aNDyf2 , j.mp/9Gzzri :-)
chl
14

Istnieją również projekty zainicjowane przez FSF lub rozpowszechniane na podstawie GNU General Public Licence, takie jak:

  • PSPP , który ma być bezpłatną alternatywą dla SPSS
  • GRETL , poświęcony głównie regresji i ekonometrii

Istnieją nawet aplikacje, które zostały wydane jako dodatkowe oprogramowanie do podręcznika, takie jak JMulTi , ale nadal są używane przez kilka osób.

Od czasu do czasu nadal gram z Xlispstat , chociaż Lisp został w dużej mierze zastąpiony przez R (patrz przegląd Janp Leeuw na temat Lisp vs. R w Journal of Statistics Software ). Co ciekawe, jeden ze współzałożycieli języka R, Ross Ihaka, argumentował wręcz przeciwnie, że przyszłość oprogramowania statystycznego to ... Lisp: Powrót do przyszłości: Lisp jako podstawa systemu obliczeń statystycznych . @Alex już wskazał na środowisko statystyczne oparte na Clojure Incanter , więc może w najbliższej przyszłości zobaczymy ożywienie oprogramowania opartego na Lisp? :-)

chl
źródło
9

Przede wszystkim powiem wam, że moim zdaniem najlepszym narzędziem jak dotąd jest R, który ma mnóstwo bibliotek i narzędzi, których tutaj nie wymienię.

Pozwól mi rozwinąć dyskusję o weka

Istnieje biblioteka dla R, która nazywa się RWeka, którą można łatwo zainstalować w R i używać wielu funkcji tego wspaniałego programu wraz z tymi w R, pozwólcie, że podam przykładowy kod do zrobienia prostego drzewa decyzyjnego czytaj ze standardowej bazy danych, która jest dołączona do tego pakietu (bardzo łatwo jest narysować powstałe drzewo, ale pozwolę ci przeprowadzić badania dotyczące tego, jak to zrobić, co jest w dokumentacji RWeka:

library(RWeka)
iris <- read.arff(system.file("arff", "iris.arff", package = "RWeka"))
classifier <- IBk(class ~., data = iris)
summary(classifier)

Do tego celu służy również kilka bibliotek Pythona (bardzo łatwo nauczyć się języka Python)

Najpierw pozwól mi wyliczyć pakiety, których możesz użyć, nie zamierzam szczegółowo omawiać ich; Weka (tak, masz bibliotekę dla Pythona), NLKT (najsłynniejszy pakiet open source do zarządzania tekstem oprócz analizy danych), statPy , choroby i scipy.

Jest też pomarańczowy, który jest doskonały (porozmawiam o tym później), oto przykład kodu do zrobienia drzewa z danych w tabeli cmpart1, który wykonuje również 10-krotną walidację, możesz również wykreślić drzewo

import orange, orngMySQL, orngTree

data = orange.ExampleTable("c:\\python26\\orange\\cmpart1.tab")

domain=data.domain
n=10
buck=len(data)/n
l2=[]
for i in range(n):
    tmp=[]
    if i==n-1:
        tmp=data[n*buck:]
    else:
        tmp=data[buck*i:buck*(i+1)]
    l2.append(tmp)

train=[]
test=[]
di={'yy':0,'yn':0,'ny':0,'nn':0}
for i in range(n):
    train=[]
    test=[]
    for j in range(n):
        if j==i:
            test=l2[i]
        else:
            train.extend(l2[j])
    print "-----"
    trai=orange.Example(domain, train)
    tree = orngTree.TreeLearner(train)
    for ins in test:
        d1= ins.getclass()
        d2=tree(ins)
        print d1
        print d2
        ind=str(d1)+str(d2)
        di[ind]=di[ind]+1
print di

Na koniec kilka innych pakietów, z których korzystałem i które mnie zainteresowały

Pomarańczowy : wizualizacja i analiza danych dla początkujących i ekspertów. Eksploracja danych za pomocą programowania wizualnego lub skryptów w języku Python. Komponenty do uczenia maszynowego. Rozszerzenia dla bioinformatyki i eksploracji tekstu. (Osobiście polecam to, często go integrowałem z Pythonem i było znakomite) Mogę przesłać ci kod Pythona, jeśli chcesz.

ROSETTA : zestaw narzędzi do analizy danych tabelarycznych w ramach teorii zbiorów przybliżonych. ROSETTA została zaprojektowana w celu wspierania całego procesu eksploracji danych i odkrywania wiedzy: od wstępnego przeglądania i wstępnego przetwarzania danych, przez obliczanie minimalnych zestawów atrybutów i generowanie reguł „jeśli-to” lub wzorców opisowych, aż do walidacji i analizy indukowanych reguł lub wzorców (Bardzo podobało mi się to również przy użyciu)

KEEL : ocena algorytmów ewolucyjnych dla problemów Data Mining, w tym regresji, klasyfikacji, grupowania, eksploracji wzorców i tak dalej. Pozwala nam to przeprowadzić pełną analizę dowolnego modelu uczenia się w porównaniu do istniejących, w tym moduł testu statystycznego do porównania.

DataPlot : do wizualizacji naukowej, analizy statystycznej i modelowania nieliniowego. Docelowym użytkownikiem Dataplot jest badacz i analityk zajmujący się charakteryzacją, modelowaniem, wizualizacją, analizą, monitorowaniem i optymalizacją procesów naukowych i inżynierskich.

Openstats : Obejmuje elementarz statystyki i pomiaru, statystyki opisowe, proste porównania, analizy wariancji, korelację, regresję wielokrotną, przerwane szeregi czasowe, statystyki wielowymiarowe, statystyki nieparametryczne, pomiar, kontrolę procesu statystycznego, procedury finansowe, sieci neuronowe, symulację

mariana bardziej miękka
źródło
8

Colin Gillespie wspomniał o BŁĘDACH, ale lepszym rozwiązaniem do próbkowania Gibbs itp. Jest JAGS .

Jeśli wszystko, co chcesz zrobić, to ARIMA, nie możesz pokonać X12-ARIMA , która jest złotym standardem w tej dziedzinie i open source. Nie robi prawdziwych wykresów (używam do tego R), ale diagnostyka sama w sobie jest lekcją.

Zapuszczam się nieco dalej w stronę czegoś, co niedawno odkryłem i dopiero zacząłem się uczyć ...

ADMB (AD Model Builder), który wykonuje modelowanie nieliniowe w oparciu o bibliotekę AUTODIF, z włączoną MCMC i kilkoma innymi funkcjami. Przetwarza i kompiluje model do pliku wykonywalnego C ++ i kompiluje go jako samodzielną aplikację, która jest ma być znacznie szybszy niż równoważne modele zaimplementowane w R, MATLAB itp. Projekt ADMB

Zaczęło się i nadal jest najbardziej popularne w świecie rybołówstwa, ale wygląda całkiem interesująco do innych celów. Nie ma grafiki ani innych cech R i najprawdopodobniej byłby używany w połączeniu z R.

Jeśli chcesz pracować z Bayesian Networks w GUI: SamIam to miłe narzędzie. R ma kilka pakietów, które również to robią, ale SamIam jest bardzo miły.

Wayne
źródło
7

Naprawdę lubię pracować z RooFit dla łatwego właściwego dopasowania dystrybucji sygnału i tła oraz TMVA do szybkiej analizy głównych składników i modelowania problemów na wielu odmianach za pomocą niektórych standardowych narzędzi (takich jak algorytmy genetyczne i sieci neuronowe, również BDT). Obie są częścią bibliotek ROOT C ++, które mają jednak dość poważne nastawienie do problemów fizyki cząstek.

Benjamin Bannier
źródło
7

Kilka więcej oprócz wspomnianych już:

  • KNIME wraz z rozszerzeniami integracji R, Python i Weka do eksploracji danych
  • Mondrian na szybkie EDA

I z perspektywy przestrzennej:

  • GeoDa dla przestrzennej EDA i grupowania danych powierzchniowych
  • SaTScan do grupowania danych punktowych
radek
źródło
3
Uwaga: GeoDa i SatScan nie są oprogramowaniem typu open source, są freeware (choć nie ma to dla mnie większego znaczenia!)
Andy W
1
pySal przez GeoDa Center jest oprogramowaniem typu open source (patrz poniżej)
b_dev
6

Popieram tego Jaya. Dlaczego R jest cenny? Oto krótka lista powodów. http://www.inside-r.org/why-use-r . Zobacz także ggplot2 - bardzo ładny pakiet graficzny dla R. Kilka ładnych tutoriali tutaj .

Stephen Turner
źródło
9
dlaczego zadajesz pytanie tutaj? Wszystkie są wiki społeczności, dlaczego nie po prostu naprawić odpowiedź kanoniczną?
Jay Stevens,
4

Wpada to na zewnętrzne granice „analizy statystycznej”, ale Eureqa jest bardzo przyjaznym dla użytkownika programem do eksploracji danych nieliniowych relacji w danych za pomocą programowania genetycznego. Eureqa nie jest tak ogólnego przeznaczenia, ale robi to, co robi dość dobrze, a GUI jest dość intuicyjny. Może również skorzystać z dostępnej mocy obliczeniowej za pośrednictwem serwera eureqa.

shabbychef
źródło
3

Meta.Numerics to biblioteka .NET z dobrym wsparciem dla analizy statystycznej.

W przeciwieństwie do R (klon S) i Octave (klon Matlab), nie ma „frontonu”. Bardziej przypomina GSL, ponieważ jest biblioteką, do której prowadzi link podczas pisania własnej aplikacji, która musi przeprowadzić analizę statystyczną. C # i Visual Basic są bardziej popularnymi językami programowania niż C / C ++ dla aplikacji biznesowych, a Meta.Numerics ma szersze wsparcie dla konstrukcji i testów statystycznych niż GSL.

David Wright
źródło
3
  • klasterPy dla analitycznej regionalizacji lub klastrowania geoprzestrzennego
  • PySal do analizy danych przestrzennych.
B_Dev
źródło
3

Oprogramowanie matematyki symbolicznej może być również dobrym wsparciem dla statystyk. Oto kilka licencji GPL, z których korzystam od czasu do czasu:

  1. sympy jest oparte na pythonie i bardzo małe, ale wciąż może wiele zrobić: pochodne, całki, sumy symboliczne, kombinatoryki, rozszerzenia serii, manipulacje tensorem itp. Istnieje pakiet R, który można wywołać z R.
  2. mędrzec jest oparty na pythonie i OGROMNY! Jeśli sympy nie może zrobić tego, co chcesz, spróbuj sage (ale nie ma natywnej wersji systemu Windows).
  3. maxima jest oparta na seplenienie i ma bardzo klasyczny, średni rozmiar między (1) a (2).

Wszystkie trzy są w fazie aktywnego rozwoju.

kjetil b halvorsen
źródło