Was sind einige wertvolle Open-Source-Projekte zur statistischen Analyse?


69

Welche wertvollen Open-Source-Projekte für die statistische Analyse sind derzeit verfügbar?

Bearbeiten: Wie von Sharpie hervorgehoben, kann wertvoll bedeuten, Ihnen dabei zu helfen, Dinge schneller oder billiger zu erledigen.


5
Könnte ein Aushängeschild für argumentative und subjektive sein. Zumindest müssen Sie "wertvoll" definieren.
Sharpie

2
Vielleicht sollte der Fokus nicht auf "wertvoll", sondern auf "Pro" und "Contra" jedes Projekts liegen?
Ein Löwe

Oder vielleicht sogar "Wie X Ihnen hilft, Y schneller / billiger zu erledigen und die Keime abzutöten, die Mundgeruch verursachen."
Sharpie

Antworten:


88

Das R-Projekt

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

R ist wertvoll und bedeutsam, weil es die erste allgemein akzeptierte Open-Source-Alternative zu Big-Box-Paketen war. Es ist ausgereift, gut unterstützt und ein Standard in vielen wissenschaftlichen Communities.


Ja, R ist nett, aber WARUM ist es "wertvoll"?
Sharpie

11
Es ist ausgereift, gut unterstützt und ein Standard in bestimmten wissenschaftlichen Communities (beliebt in unserer KI-Abteilung zum Beispiel)
Menno

10
Es ist erweiterbar und es gibt keine statistische Technik, die damit nicht möglich wäre.
aL3xa

20

Für eine Vielzahl von MCMC-Aufgaben in Python gibt es PyMC , von dem ich ziemlich viel Gebrauch gemacht habe. Ich habe nichts gefunden, was ich in BUGS tun kann, was ich in PyMC nicht kann, und die Art und Weise, wie Sie Modelle angeben und Daten einbringen, scheint mir viel intuitiver zu sein.


18

Das wird vielleicht in Vergessenheit geraten, aber ich habe den Matlab-Klon Octave viele Jahre lang gerne verwendet . Es gibt ziemlich gute Bibliotheken in Octave Forge für die Erzeugung von Zufallsvariablen aus verschiedenen Verteilungen, statistischen Tests usw., obwohl sie eindeutig von R in den Schatten gestellt werden. Ein möglicher Vorteil gegenüber R ist, dass Matlab / Octave die Verkehrssprache unter numerischen Analytikern und Optimierungsforschern ist und eine Untergruppe von angewandten Mathematikern (zumindest in der Schule), während meines Wissens niemand in meiner Abteilung R. meinen Verlust nutzte. lerne beides wenn möglich!


4
Richtiger Kommentar. Aber als erfahrener Programmierer fühle ich mich jedes Mal schmutzig, wenn ich Matlab / Octave benutze, eine schrecklich gestaltete Sprache (wenn überhaupt). Natürlich schaudere ich auch bei SAS, die offensichtlich für Lochkarten konzipiert wurde.
Wayne

1
@ Wayne wahr genug. Ich erinnere mich daran, dass Bob Harper die Matlab-Sprache einmal als „semantisch verdächtig“ bezeichnet hat.
Shabbychef

17

Zwei Projekte fallen mir ein:

  1. Bugs - den Schmerz aus der Bayes'schen Statistik nehmen. Der Benutzer kann sich mehr auf das Modell und etwas weniger auf MCMC konzentrieren.
  2. Bioconductor - vielleicht das beliebteste statistische Tool in der Bioinformatik. Ich weiß, es ist ein R-Repository, aber es gibt eine große Anzahl von Leuten, die R lernen möchten, nur für Bioconductor. Die Anzahl der für die innovative Analyse verfügbaren Pakete ist unübertroffen.

1
Andrew Gelman hat eine schöne R - Bibliothek , die Bugs zu R. Links
bshor

4
Ich würde das "beliebteste statistische Tool in der Bioinformatik" umformulieren ... Bioinformatiker, die Microarray-Analysen durchführen, verwenden es ausgiebig, ja. Aber Bioinformatik ist nicht darauf beschränkt;)
Nicojo

15

Weka for Data Mining - enthält viele Klassifizierungs- und Clustering-Algorithmen in Java.


Wie ist die Leistung davon? (Ich laufe schreiend, wenn ich das Wort "Java"
sehe

@shabbychef Scheint nach allem, was ich gehört habe, recht gut zu sein, aber im Allgemeinen wird Weka als erster Schritt verwendet, um mehrere Algorithmen zu testen und ihre Leistung bei bestimmten Datensätzen (oder einer Teilmenge davon) zu überprüfen. Anschließend wird ein Teil des Kernprogramms neu codiert Optimieren Sie die Effizienz (z. B. mit hochdimensionalen Daten, die eine Kreuzvalidierung oder Bootstraping erfordern), manchmal in C oder Python.
Chl

2
@shabbychef: Java-Programme müssen keine langsamen Monster sein. Ich gebe zu, dass gut geschriebener C-Code fast immer schneller ist als eine ähnliche Implementierung in Java, aber gut geschriebener Java-Code wird höchstwahrscheinlich nicht sehr langsam sein. Darüber hinaus bietet die Entwicklung in Java viele wesentliche Vorteile.
posdef


14

Incanter ist eine Clojure-basierte, R-ähnliche Plattform (Umgebung + Bibliotheken) für statistische Berechnungen und Grafiken.


Wieder - warum? Wie könnte ich meinen Chef davon überzeugen, dies beispielsweise in Excel anzuwenden?
Sharpie


1
chl

14

Es gibt auch solche Projekte, die von der FSF initiiert oder unter GNU General Public License weiterverteilt wurden, wie:

  • PSPP , das eine kostenlose Alternative zu SPSS sein soll
  • GRETL , hauptsächlich für Regression und Ökonometrie

Es gibt sogar Anwendungen, die nur als Begleitsoftware für ein Lehrbuch wie JMulTi veröffentlicht wurden , aber immer noch von wenigen Leuten verwendet werden.

Von Zeit zu Zeit spiele ich immer noch mit xlispstat , obwohl Lisp von R weitgehend abgelöst wurde (siehe Jan de Leeuws Übersicht über Lisp vs. R im Journal of Statistical Software ). Interessanterweise argumentierte Ross Ihaka, einer der Mitbegründer der R-Sprache, im Gegenteil, dass die Zukunft statistischer Software ... Lisp: Zurück in die Zukunft: Lisp als Basis für ein statistisches Rechensystem . @Alex wies bereits auf die Clojure-basierte statistische Umgebung Incanter hin , also werden wir vielleicht in naher Zukunft eine Wiederbelebung der Lisp-basierten Software sehen? :-)



9

Lassen Sie mich zunächst sagen, dass meiner Meinung nach das mit Abstand beste Tool R ist, das Tonnen von Bibliotheken und Dienstprogrammen enthält, die ich hier nicht aufzählen werde.

Lassen Sie mich die Diskussion über Weka erweitern

Es gibt eine Bibliothek für R namens RWeka, die Sie einfach in R installieren können. Ich möchte Ihnen ein Codebeispiel für die Erstellung eines einfachen Entscheidungsbaums geben, in dem Sie viele der Funktionen dieses großartigen Programms zusammen mit denen in R verwenden können Lesen Sie aus einer Standarddatenbank, die mit diesem Paket geliefert wird (es ist auch sehr einfach, den resultierenden Baum zu zeichnen, aber ich überlasse Ihnen die Recherche, wie dies zu tun ist, die in der RWeka-Dokumentation enthalten ist:

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

Dazu gibt es auch mehrere Python-Bibliotheken (Python ist sehr einfach zu erlernen).

Lassen Sie mich zuerst die Pakete aufzählen, die Sie verwenden können. Ich werde nicht im Detail auf sie eingehen. Weka (ja, Sie haben eine Bibliothek für Python), NLKT (das bekannteste Open-Source-Paket für Textmining neben Datamining), statPy , sickits und scipy.

Es gibt auch Orange, was ausgezeichnet ist (darüber werde ich später noch sprechen). Hier ist ein Codebeispiel für die Erstellung eines Baums aus den Daten in der Tabelle cmpart1, das auch eine 10-fache Validierung durchführt. Sie können den Baum auch grafisch darstellen

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

Zum Schluss noch ein paar andere Pakete, die ich benutzt und interessant gefunden habe

Orange : Datenvisualisierung und -analyse für Anfänger und Experten. Data Mining durch visuelle Programmierung oder Python-Scripting. Komponenten für maschinelles Lernen. Erweiterungen für Bioinformatik und Text Mining. (Ich persönlich empfehle dies, ich habe es viel benutzt, um es in Python zu integrieren, und es war exzellent.) Ich kann Ihnen Python-Code schicken, wenn Sie wollen, dass ich das tue.

ROSETTA : Toolkit zur Analyse tabellarischer Daten im Rahmen der Grobsatztheorie . ROSETTA wurde entwickelt, um den gesamten Data Mining- und Knowledge Discovery-Prozess zu unterstützen: Vom anfänglichen Durchsuchen und Vorverarbeiten der Daten über die Berechnung minimaler Attributsätze und die Generierung von Wenn-Dann-Regeln oder deskriptiven Mustern bis hin zur Validierung und Analyse der induzierten Regeln oder Muster (Das habe ich auch sehr genossen)

KEEL : Bewertung evolutionärer Algorithmen für Data Mining-Probleme, einschließlich Regression, Klassifizierung, Clustering, Pattern Mining usw. Es ermöglicht uns, eine vollständige Analyse jedes Lernmodells im Vergleich zu bestehenden durchzuführen, einschließlich eines statistischen Testmoduls zum Vergleich.

DataPlot : Zur wissenschaftlichen Visualisierung, statistischen Analyse und nichtlinearen Modellierung. Der Dataplot-Zielbenutzer ist der Forscher und Analyst, der mit der Charakterisierung, Modellierung, Visualisierung, Analyse, Überwachung und Optimierung von wissenschaftlichen und technischen Prozessen befasst ist.

Openstats : Enthält eine Statistik- und Messgrundlage , beschreibende Statistiken, einfache Vergleiche, Varianzanalysen, Korrelationen, multiple Regressionen, unterbrochene Zeitreihen, multivariate Statistiken, nicht parametrische Statistiken, Messungen, statistische Prozesskontrolle, Finanzverfahren, neuronale Netze, Simulation


8

Colin Gillespie erwähnte BUGS, aber eine bessere Option für Gibbs Sampling ist JAGS .

Wenn alles, was Sie tun möchten, ARIMA ist, können Sie X12-ARIMA nicht schlagen. Dies ist ein Goldstandard auf dem Gebiet und Open Source. Es werden keine echten Grafiken erstellt (ich verwende dafür R), aber die Diagnose ist eine Lektion für sich.

Ich wage mich ein bisschen weiter weg zu etwas, was ich kürzlich entdeckt habe und gerade erst angefangen habe zu lernen ...

ADMB (AD Model Builder), das eine nichtlineare Modellierung basierend auf der AUTODIF-Bibliothek mit MCMC und einigen anderen Features durchführt. Es verarbeitet das Modell vor, kompiliert es zu einer ausführbaren C ++ - Datei und kompiliert es als eigenständige App soll wesentlich schneller sein als äquivalente Modelle, die in R, MATLAB usw. implementiert sind. ADMB Project

Es hat angefangen und ist in der Fischereiwelt immer noch am beliebtesten, sieht aber für andere Zwecke recht interessant aus. Es hat keine grafische Darstellung oder andere Merkmale von R und würde höchstwahrscheinlich in Verbindung mit R verwendet.

Wenn Sie mit Bayesian Networks in einer GUI arbeiten möchten : SamIam ist ein schönes Werkzeug. R hat ein paar Pakete, die dies auch tun, aber SamIam ist sehr nett.



7

Ich arbeite sehr gerne mit RooFit, um die Signal- und Hintergrundverteilungen problemlos anzupassen, und mit TMVA, um Hauptkomponenten schnell zu analysieren und multivariate Probleme mit einigen Standardwerkzeugen (wie genetischen Algorithmen und neuronalen Netzen, auch BDTs) zu modellieren. Sie sind beide Teil der ROOT C ++ - Bibliotheken, die sich jedoch stark auf Probleme der Teilchenphysik konzentrieren.


7

Einige mehr zusätzlich zu den bereits erwähnten:

  • KNIME zusammen mit R-, Python- und Weka-Integrationserweiterungen für Data Mining
  • Mondrian für schnelle EDA

Und aus räumlicher Sicht:


3
Hinweis: GeoDa und SatScan sind keine Open-Source-Software, sondern Freeware (obwohl das für mich keinen großen Unterschied macht!)
Andy W

1
pySal vom GeoDa Center ist Open Source (siehe unten)
b_dev


4

Dies stößt an die äußeren Grenzen der statistischen Analyse, aber Eureqa ist ein sehr benutzerfreundliches Programm für das Data-Mining nichtlinearer Beziehungen in Daten über genetische Programmierung. Eureqa ist nicht für allgemeine Zwecke gedacht, aber es funktioniert recht gut, und die Benutzeroberfläche ist sehr intuitiv. Es kann auch die verfügbare Rechenleistung über den eureqa-Server nutzen.


3

Meta.Numerics ist eine .NET-Bibliothek mit guter Unterstützung für statistische Analysen.

Anders als R (ein S-Klon) und Octave (ein Matlab-Klon) hat es kein "Front-End". Es ist eher wie GSL, da es sich um eine Bibliothek handelt, mit der Sie eine Verknüpfung herstellen, wenn Sie Ihre eigene Anwendung schreiben, die statistische Analysen durchführen muss. C # und Visual Basic sind häufigere Programmiersprachen als C / C ++ für Branchenanwendungen, und Meta.Numerics bietet eine umfassendere Unterstützung für statistische Konstrukte und Tests als GSL.



3

Symbolische Mathematik-Software kann auch eine gute Unterstützung für Statistiken sein. Hier sind einige GPL, die ich von Zeit zu Zeit benutze:

  1. sympy basiert auf Python und ist sehr klein, kann aber noch viel bewirken : Derivate, Integrale, symbolische Summen, Kombinatorik, Reihenerweiterungen, Tensor-Manipulationen usw. Es gibt ein R-Paket, um es von R aufzurufen.
  2. Salbei ist Python-basiert und riesig! Wenn sympy nicht kann, was Sie wollen, versuchen Sie es mit sage (aber es gibt keine native Windows-Version).
  3. Maxima basiert auf Lisp und ist sehr klassisch und von mittlerer Größe zwischen (1) und (2).

Alle drei sind in aktiver Entwicklung.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.