Quali sono alcuni preziosi progetti open source di analisi statistica?


69

Quali sono alcuni preziosi progetti open source di analisi statistica disponibili in questo momento?

Modifica: come sottolineato da Sharpie, prezioso potrebbe significare aiutarti a fare le cose più velocemente o in modo più economico.


5
Potrebbe essere un bambino manifesto per argomentazione e soggettivo. Almeno, è necessario definire "prezioso".
Sharpie

2
Forse il focus non dovrebbe essere su "preziosi" ma piuttosto su "pro" e "contro" di ogni progetto?
Un leone,

O forse "In che modo X ti aiuterà a fare Y in modo più rapido / economico e uccidere i germi che causano l'alitosi."
Sharpie,

Risposte:


88

Il progetto R

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

R è prezioso e significativo perché è stata la prima alternativa open-source ampiamente accettata ai pacchetti big-box. È maturo, ben supportato e uno standard in molte comunità scientifiche.


Sì, R è carino, ma PERCHÉ è "prezioso".
Sharpie,

11
È maturo, ben supportato e uno standard in alcune comunità scientifiche (popolare nel nostro dipartimento di intelligenza artificiale, ad esempio)
Menno

10
È estensibile e non esiste una tecnica statistica che non può essere eseguita in esso.
aL3xa

20

Per fare una varietà di attività MCMC in Python, c'è PyMC , che mi è stato un po 'fuori uso. Non ho riscontrato nulla che io possa fare in BUG che non posso fare in PyMC, e il modo in cui specifichi i modelli e porti i dati mi sembra molto più intuitivo.


18

Questo può essere annullato dall'oblio, ma ho usato felicemente il clone Matlab Octave per molti anni. Ci sono abbastanza buone librerie nella fucina di ottava per la generazione di variabili casuali da diverse distribuzioni, test statistici, ecc., Sebbene chiaramente sia sminuito da R. Un possibile vantaggio rispetto a R è che Matlab / ottava è la lingua franca tra analisti numerici, ricercatori di ottimizzazione e alcuni sottogruppi di matematici applicati (almeno quando ero a scuola), mentre nessuno nel mio dipartimento, per quanto ne so, ha usato R. la mia perdita. impara entrambi se possibile!


4
Vero commento. Ma come programmatore esperto mi sento sporco ogni volta che uso Matlab / Octave, che è un linguaggio orribilmente progettato (se progettato). Certo, ho anche rabbrividito alla SAS, che era ovviamente progettata per le carte perforate.
Wayne,

1
@Wayne abbastanza vero. Ricordo di aver sentito Bob Harper riferirsi al linguaggio Matlab come "semanticamente sospetto";) Come in molte lingue, però, una volta che lo usi abbastanza, impari a far fronte alle sue stranezze.
shabbychef,

17

Mi vengono in mente due progetti:

  1. Insetti : eliminare (alcuni) il dolore dalle statistiche bayesiane. Consente all'utente di concentrarsi maggiormente sul modello e un po 'meno su MCMC.
  2. Bioconduttore - forse lo strumento statistico più popolare in Bioinformatica. So che è un repository R, ​​ma ci sono un gran numero di persone che vogliono imparare R, solo per Bioconduttore. Il numero di pacchetti disponibili per l'analisi all'avanguardia, non è secondo a nessuno.

1
Andrew Gelman ha una bella libreria R che collega Bugs a R.
bshor,

4
Lo riformulo "lo strumento statistico più popolare in bioinformatica" ... I bioinformatici che effettuano analisi di microarray lo usano ampiamente, sì. Ma la bioinformatica non si limita a questo;)
Nicojo,

15

Weka per il data mining: contiene molti algoritmi di classificazione e clustering in Java.


com'è la performance di questo? (Corro urlando ogni volta che vedo la parola 'Java' ...)
shabbychef,

@shabbychef Sembra abbastanza buono da quello che ho sentito, ma generalmente Weka viene utilizzato come primo passo per testare diversi algoritmi e osservarne le prestazioni su determinati set di dati (o un loro sottoinsieme), quindi ricodificare una parte del programma principale per ottimizzarne l'efficienza (ad es. con dati ad alta dimensione che richiedono convalida incrociata o bootstraping), a volte in C o Python.
chl,

2
@shabbychef: i programmi Java non devono essere mostri lenti. Ammetto che un codice C ben scritto sarà quasi sempre più veloce di un'implementazione simile in Java ma molto probabilmente un codice Java ben scritto non sarà super lento. Inoltre lo sviluppo in Java ha molti vantaggi significativi.
posdef,


14

Incanter è una piattaforma di tipo R basata su Clojure (ambiente + librerie) per elaborazione statistica e grafica.


Ancora una volta, perché? Come convincerei il mio capo a usarlo su, diciamo, Excel.
Sharpie,


1
chl

14

Ci sono anche quei progetti avviati dalla FSF o ridistribuiti sotto GNU General Public License, come:

  • PSPP , che mira ad essere un'alternativa gratuita a SPSS
  • GRETL , principalmente dedicato alla regressione e all'econometria

Esistono anche applicazioni che sono state rilasciate proprio come software di accompagnamento per un libro di testo, come JMulTi , ma sono ancora in uso da poche persone.

Di tanto in tanto gioco ancora con xlispstat , sebbene Lisp sia stato ampiamente sostituito da R (vedi la panoramica di Jan de Leeuw su Lisp vs. R nel Journal of Statistical Software ). È interessante notare che uno dei cofondatori del linguaggio R, Ross Ihaka, ha sostenuto al contrario che il futuro del software statistico è ... Lisp: Ritorno al futuro: Lisp come base per un sistema di calcolo statistico . @Alex ha già indicato l' Incanter di ambiente statistico basato su Clojure , quindi forse vedremo un rilancio del software basato su Lisp nel prossimo futuro? :-)



9

Prima di tutto, lascia che ti dica che secondo me lo strumento migliore di tutti è di gran lunga R, che ha tonnellate di librerie e utilità che non ho intenzione di elencare qui.

Vorrei espandere la discussione su Weka

C'è una libreria per R, che si chiama RWeka, che puoi facilmente installare in R, e usare molte delle funzionalità di questo fantastico programma insieme a quelle in R, lascia che ti dia un esempio di codice per fare un semplice albero decisionale leggere da un database standard fornito con questo pacchetto (è anche molto facile disegnare l'albero risultante, ma ho intenzione di lasciarti fare le ricerche su come farlo, che è nella documentazione di RWeka:

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

Ci sono anche diverse librerie di Python per farlo (python è molto molto facile da imparare)

Prima di tutto fammi elencare i pacchetti che puoi usare, non ho intenzione di approfondirli; Weka (sì, hai una libreria per Python), NLKT (il pacchetto open source più famoso per il textmining oltre al datamining), statPy , sickits e scipy.

C'è anche l'arancione che è eccellente (ne parlerò anche più avanti), ecco un esempio di codice per fare un albero dai dati nella tabella cmpart1, che esegue anche una convalida di 10 volte, puoi anche rappresentare graficamente l'albero

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

Per finire con alcuni altri pacchetti che ho usato e trovato interessanti

Arancione : visualizzazione e analisi dei dati per principianti ed esperti. Data mining tramite programmazione visiva o script Python. Componenti per l'apprendimento automatico. Estensioni per bioinformatica e text mining. (Lo consiglio personalmente, l'ho usato molto integrandolo in Python ed era eccellente) Posso inviarti del codice Python se vuoi che lo faccia.

ROSETTA : toolkit per l'analisi dei dati tabulari nell'ambito della teoria degli insiemi approssimativi. ROSETTA è progettato per supportare l'intero processo di data mining e di scoperta delle conoscenze: dalla navigazione iniziale e preelaborazione dei dati, attraverso il calcolo di insiemi di attributi minimi e la generazione di regole if-then o modelli descrittivi, alla convalida e all'analisi delle regole o dei modelli indotti (Anche questo mi è piaciuto molto)

KEEL : valuta gli algoritmi evolutivi per i problemi di data mining tra cui regressione, classificazione, clustering, pattern mining e così via. Ci consente di eseguire un'analisi completa di qualsiasi modello di apprendimento rispetto a quelli esistenti, incluso un modulo di test statistico per il confronto.

DataPlot : per visualizzazione scientifica, analisi statistica e modellistica non lineare. L'utente di Dataplot target è il ricercatore e l'analista impegnato nella caratterizzazione, modellizzazione, visualizzazione, analisi, monitoraggio e ottimizzazione dei processi scientifici e ingegneristici.

Openstats : include un primer per statistiche e misurazioni, statistiche descrittive, confronti semplici, analisi di varianza, correlazione, regressione multipla, serie temporali interrotte, statistiche multivariate, statistiche non parametriche, misurazione, controllo di processo statistico, procedure finanziarie, reti neurali, simulazione


8

Colin Gillespie ha menzionato BUG, ​​ma un'opzione migliore per il campionamento di Gibbs, ecc., È JAGS .

Se tutto ciò che vuoi fare è ARIMA, non puoi battere X12-ARIMA , che è un gold standard nel campo e open source. Non fa grafici reali (io uso R per farlo), ma la diagnostica è una lezione a parte.

Avventurarsi un po 'più in là di qualcosa che ho scoperto di recente e ho appena iniziato a imparare ...

ADMB (AD Model Builder), che esegue la modellazione non lineare basata sulla libreria AUTODIF, con MCMC e alcune altre funzioni integrate. Preelabora e compila il modello in un eseguibile C ++ e lo compila come un'app standalone, che è dovrebbe essere molto più veloce dei modelli equivalenti implementati in R, MATLAB, ecc. Progetto ADMB

È iniziato ed è ancora più popolare nel mondo della pesca, ma sembra abbastanza interessante per altri scopi. Non ha grafici o altre caratteristiche di R, e molto probabilmente verrebbe usato insieme a R.

Se vuoi lavorare con le reti bayesiane in una GUI: SamIam è un ottimo strumento. R ha anche un paio di pacchetti che lo fanno, ma SamIam è molto carino.



7

Mi piace molto lavorare con RooFit per un facile adattamento delle distribuzioni di segnali e di sfondo e TMVA per analisi rapide dei componenti principali e modellazione di problemi multivariati con alcuni strumenti standard (come algoritmi genetici e reti neurali, anche BDT). Fanno entrambi parte delle librerie ROOT C ++ che hanno un pregiudizio piuttosto pesante nei confronti dei problemi di fisica delle particelle.


7

Pochi altri in aggiunta a quelli già menzionati:

  • KNIME insieme alle estensioni di integrazione R, Python e Weka per il data mining
  • Mondrian per EDA rapida

E dal punto di vista spaziale:

  • GeoDa per EDA spaziale e clustering di dati areali
  • SaTScan per il clustering dei dati dei punti

3
Come nota GeoDa e SatScan non sono open source, sono freeware (non che per me faccia molta differenza!)
Andy W

1
pySal di GeoDa Center è open source (vedi sotto)
b_dev


4

Ciò rientra nei limiti esterni dell '"analisi statistica", ma Eureqa è un programma molto intuitivo per le relazioni non lineari di data mining nei dati attraverso la programmazione genetica. Eureqa non è uno scopo generale, ma fa quello che fa abbastanza bene e la GUI è abbastanza intuitiva. Può inoltre sfruttare la potenza di calcolo disponibile tramite il server eureqa.


3

Meta.Numerics è una libreria .NET con un buon supporto per l'analisi statistica.

A differenza di R (un clone S) e Octave (un clone Matlab), non ha un "front-end". È più simile a GSL, in quanto è una libreria a cui ti colleghi quando scrivi la tua applicazione che deve fare analisi statistiche. C # e Visual Basic sono linguaggi di programmazione più comuni di C / C ++ per le app line-of-business e Meta.Numerics ha un supporto più esteso per costrutti e test statistici rispetto a GSL.



3

Anche il software di matematica simbolica può essere un buon supporto per le statistiche. Ecco alcuni di quelli GPL che utilizzo di volta in volta:

  1. sympy è basato su Python e molto piccolo, ma può ancora fare molto: derivati, integrali, somme simboliche, combinatoria, espansioni di serie, manipolazioni del tensore, ecc. Esiste un pacchetto R che lo chiama da R.
  2. la salvia è basata su Python ed ENORME! Se sympy non può fare quello che vuoi, prova Sage (ma non esiste una versione nativa di Windows).
  3. maxima è lisp-based e molto classico, di dimensioni intermedie tra (1) e (2).

Tutti e tre sono in fase di sviluppo attivo.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.