Quels sont quelques projets open source d’analyses statistiques précieux?


69

Quels sont quelques projets open source d’analyses statistiques valables disponibles actuellement?

Edit: comme le souligne Sharpie, être utile peut vouloir dire vous aider à accomplir vos tâches plus rapidement ou à moindre coût.


5
Pourrait être un enfant d'affiche pour argumentatif et subjectif. À tout le moins, il faut définir «valeur».
Sharpie

2
Peut-être que l'accent ne devrait pas être mis sur "précieux" mais plutôt sur "les avantages" et les "inconvénients" de chaque projet?
Un lion

Ou peut-être même "Comment X vous aidera à accomplir votre travail plus rapidement / moins cher et à tuer les germes responsables de la mauvaise haleine."
Sharpie

Réponses:


88

Le projet R

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

R est précieux et significatif car il s’agissait de la première alternative Open Source largement acceptée aux paquets big-box. C'est mature, bien soutenu et une norme dans de nombreuses communautés scientifiques.


Oui, R est gentil, mais POURQUOI est-ce 'précieux'.
Sharpie

11
Il est mature, bien pris en charge et constitue un standard dans certaines communautés scientifiques (populaire dans notre département d’IA, par exemple)
Menno le

10
C'est extensible et il n'y a aucune technique statistique qui ne puisse être faite dedans.
aL3xa

20

Pour effectuer diverses tâches MCMC en Python, il y a PyMC , dont je me suis beaucoup servi. Je n'ai rien vu que je puisse faire dans BUGS que je ne peux pas faire dans PyMC, et la façon dont vous spécifiez des modèles et importez des données me semble beaucoup plus intuitive.


18

Cela peut faire oublier l’oubli, mais j’ai utilisé avec bonheur le clone Octave de Matlab pendant de nombreuses années. Il y a d'assez bonnes bibliothèques dans Octave Forge pour la génération de variables aléatoires à partir de distributions différentes, de tests statistiques, etc., bien que clairement contrarié par R. Un avantage possible par rapport à R est que Matlab / octave est la lingua franca des analystes numériques et des chercheurs en optimisation. et quelques sous-groupes de mathématiciens appliqués (du moins quand j'étais à l'école), alors que personne dans mon département, à ma connaissance, n'utilisait R. ma perte. Apprenez les deux si possible!


4
Vrai commentaire. Mais en tant que programmeur expérimenté, je me sens mal à chaque fois que j'utilise Matlab / Octave, un langage horriblement conçu (même s'il est conçu). Bien sûr, je fais aussi des grimaces chez SAS, qui était évidemment conçu pour les cartes perforées.
Wayne

1
@Wayne assez vrai. Je me souviens avoir entendu une fois que Bob Harper avait qualifié le langage Matlab de "sémantiquement suspect";) Comme dans de nombreux langages, même si, une fois que vous l'utilisez suffisamment, vous apprendrez à gérer ses bizarreries.
Shabbychef

17

Deux projets me viennent à l’esprit:

  1. Bugs - élimination (partielle ou non) des statistiques bayésiennes. Cela permet à l'utilisateur de se concentrer davantage sur le modèle et un peu moins sur MCMC.
  2. Bioconducteur - peut-être l'outil statistique le plus populaire en bioinformatique. Je sais que c'est un référentiel R, mais il y a un grand nombre de personnes qui veulent apprendre R, juste pour Bioconductor. Le nombre de packages disponibles pour l'analyse de pointe est inégalé.

1
Andrew Gelman a une belle bibliothèque R qui relie Bugs à R.
bshor le

4
Je reformulerais que "l'outil statistique le plus populaire en bioinformatique" ... Les bioinformaticiens effectuant des analyses par microréseau l'utilisent beaucoup, oui. Mais la bioinformatique ne se limite pas à cela;)
Nicojo le

15

Weka pour l'exploration de données - contient de nombreux algorithmes de classification et de clustering en Java.


comment est la performance de cela? (Je cours en criant quand je vois le mot 'Java' ...)
shabbychef

@shabbychef Cela semble plutôt bien d'après ce que j'ai entendu, mais généralement, Weka est utilisé comme première étape pour tester plusieurs algorithmes et examiner leurs performances sur des ensembles de données donnés (ou un sous-ensemble de ceux-ci), puis on recode une partie du programme principal pour optimiser son efficacité (par exemple avec des données de grande dimension appelant à la validation croisée ou au bootstraping), parfois en C ou en Python.
chl

2
@shabbychef: Les programmes Java ne doivent pas nécessairement être des monstres lents. J'admets qu'un code C bien écrit sera presque toujours plus rapide qu'une implémentation similaire en Java, mais qu'un code Java bien écrit ne sera probablement pas très lent. De plus, le développement en Java présente de nombreux avantages importants.
Posdef


14

Incanter est une plate-forme de type R basée sur Clojure (environnement + bibliothèques) pour l'informatique statistique et les graphiques.


Encore une fois, pourquoi? Comment pourrais-je convaincre mon patron d’utiliser Excel, par exemple?
Sharpie


1
chl

14

Il existe également des projets initiés par la FSF ou redistribués sous licence publique générale GNU, tels que:

  • PSPP , qui vise à être une alternative gratuite à SPSS
  • GRETL , principalement dédié à la régression et à l'économétrie

Il y a même des applications qui ont été publiées juste comme logiciel d'accompagnement pour un manuel, comme JMulTi , mais qui sont encore utilisées par peu de gens.

Je joue encore de temps en temps avec xlispstat , bien que Lisp ait été largement remplacé par R (voir la vue d'ensemble de Jan de Leeuw sur Lisp contre R dans le Journal of Statistical Software ). Il est intéressant de noter que l'un des cofondateurs du langage R, Ross Ihaka, a affirmé au contraire que l'avenir du logiciel statistique est ... Lisp: Retour vers le futur: Lisp en tant que base d'un système informatique statistique . @Alex a déjà souligné l'environnement statistique basé sur Clojure , Incanter , alors peut-être assisterons -nous à une renaissance du logiciel basé sur Lisp dans un avenir proche? :-)



9

Tout d’abord, laissez-moi vous dire que, à mon avis, le meilleur outil, et de loin, est R, qui compte une multitude de bibliothèques et d’utilitaires que je ne vais pas énumérer ici.

Permettez-moi d'élargir la discussion sur le weka

Il existe une bibliothèque pour R, appelée RWeka, que vous pouvez facilement installer dans R, et utiliser de nombreuses fonctionnalités de ce programme génial avec celles de R, laissez-moi vous donner un exemple de code pour la création d'un arbre de décision simple. lisez une base de données standard fournie avec ce paquet (il est également très facile de dessiner l'arbre résultant, mais je vais vous laisser faire la recherche sur la façon de le faire, ce qui est dans la documentation de RWeka:

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

Il existe également plusieurs bibliothèques python pour cela (le python est très très facile à apprendre)

Tout d’abord, laissez-moi énumérer les paquets que vous pouvez utiliser, je ne vais pas entrer dans les détails à leur sujet; Weka (oui, vous avez une bibliothèque pour python), NLKT (le paquet open source le plus célèbre pour l'extraction de texte en plus de l'analyse de données), statPy , sickits et scipy.

Il y a aussi orange qui est excellent (j'en parlerai aussi plus tard), voici un exemple de code permettant de créer une arborescence à partir des données de la table cmpart1, qui effectue également la validation à 10 plis; vous pouvez également représenter graphiquement l'arborescence.

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

Pour finir avec d'autres paquets que j'ai utilisés et trouvés intéressants

Orange : visualisation et analyse de données pour novices et experts. Exploration de données par programmation visuelle ou par script Python. Composants pour l'apprentissage automatique. Extensions pour la bioinformatique et l'extraction de texte. (Je le recommande personnellement, je l'ai beaucoup utilisé en l'intégrant dans python et c'était excellent). Je peux vous envoyer du code python si vous le souhaitez.

ROSETTA : boîte à outils pour l'analyse de données tabulaires dans le cadre de la théorie des ensembles approximatifs. ROSETTA est conçu pour prendre en charge l'ensemble du processus d'exploration de données et de découverte des connaissances: de la navigation initiale au prétraitement des données, en passant par le calcul d'ensembles d'attributs minimaux et la génération de règles if-then ou de modèles descriptifs, jusqu'à la validation et l'analyse des règles induites (J'ai également beaucoup aimé utiliser ce produit)

KEEL : évaluer les algorithmes évolutifs pour les problèmes d’exploration de données, notamment la régression, la classification, la mise en cluster, l’exploration de modèles, etc. Il nous permet d’effectuer une analyse complète de tout modèle d’apprentissage par rapport aux modèles existants, y compris un module de test statistique à des fins de comparaison.

DataPlot : pour la visualisation scientifique, l'analyse statistique et la modélisation non linéaire. L'utilisateur cible de DataPot est le chercheur et l'analyste engagés dans la caractérisation, la modélisation, la visualisation, l'analyse, la surveillance et l'optimisation des processus scientifiques et techniques.

Openstats : comprend un manuel de statistiques et de mesures, statistiques descriptives, comparaisons simples, analyses de variance, corrélation, régression multiple, séries chronologiques interrompues, statistiques multivariées, statistiques non paramétriques, mesures, contrôle de processus statistiques, procédures financières, réseaux neuronaux, simulation


8

Colin Gillespie mentionné BUGS, mais une meilleure option pour Gibbs échantillonnage, etc, est JAGS .

Si tout ce que vous voulez faire est ARIMA, vous ne pouvez pas battre X12-ARIMA , qui est un standard de référence sur le terrain et en source ouverte. Il ne fait pas de vrais graphiques (j'utilise R pour le faire), mais les diagnostics sont une leçon à part entière.

S'aventurer un peu plus loin vers quelque chose que j'ai découvert récemment et que je commence tout juste à apprendre ...

ADMB (AD Model Builder), qui effectue une modélisation non linéaire basée sur la bibliothèque AUTODIF, avec MCMC et quelques autres fonctionnalités intégrées. Il traite et compile le modèle en un exécutable C ++ et le compile comme une application autonome, qui est supposé être bien plus rapide que les modèles équivalents implémentés dans R, MATLAB, etc. ADMB Project

Il a commencé et est toujours le plus populaire dans le monde de la pêche, mais semble assez intéressant pour d'autres objectifs. Il n’a pas de fonctions graphiques ou autres caractéristiques de R et serait très probablement utilisé avec R.

Si vous souhaitez travailler avec Bayesian Networks dans une interface graphique: SamIam est un outil intéressant. R a quelques paquets qui le font aussi, mais SamIam est très gentil.



7

J'aime beaucoup travailler avec RooFit pour un ajustement facile et précis des distributions de signaux et d’arrière-plan, et TMVA pour des analyses rapides en composantes principales et la modélisation de problèmes multivariés avec certains outils standard (tels que les algorithmes génétiques et les réseaux de neurones, mais également les BDT). Ils font tous les deux partie des bibliothèques ROOT C ++ qui ont un assez fort biais pour les problèmes de physique des particules.


7

Peu plus en plus de déjà mentionné:

  • KNIME avec les extensions d'intégration R, Python et Weka pour l'exploration de données
  • Mondrian pour EDA rapide

Et du point de vue spatial:

  • GeoDa pour l'EDA spatiale et le regroupement de données surfaciques
  • SaTScan pour la mise en cluster de données ponctuelles

3
Comme une note GeoDa et SatScan ne sont pas open source, ils sont freeware (pas que cela fait beaucoup de différence pour moi si!)
Andy W

1
PySal par le centre GeoDa est une source ouverte (voir ci-dessous)
b_dev

6

Je seconde ce Jay. Pourquoi R est-il précieux? Voici une courte liste de raisons. http://www.inside-r.org/why-use-r . Consultez également ggplot2 - un très joli logiciel graphique pour R. Quelques tutoriels intéressants ici .


9
pourquoi poser la question ici? Tous sont une communauté wiki, pourquoi ne pas simplement corriger la réponse canonique?
Jay Stevens

4

Cela se situe aux limites de l'analyse statistique, mais Eureqa est un programme très convivial pour les relations non linéaires d'exploration de données dans les données via la programmation génétique. Eureqa n’est pas aussi polyvalent, mais il fait ce qu’il fait assez bien, et l’interface graphique est assez intuitive. Il peut également tirer parti de la puissance de calcul disponible via le serveur eureqa.


3

Meta.Numerics est une bibliothèque .NET qui prend en charge l'analyse statistique.

Contrairement à R (un clone S) et à Octave (un clone de Matlab), il n’a pas de "front end". Cela ressemble plus à GSL, en ce sens qu’il s’agit d’une bibliothèque à laquelle vous créez un lien lorsque vous écrivez votre propre application qui doit effectuer une analyse statistique. C # et Visual Basic sont des langages de programmation plus courants que C / C ++ pour les applications métier. Meta.Numerics prend davantage en charge les constructions et les tests statistiques que GSL.


3
  • clusterPy pour la régionalisation analytique ou le clustering géospatial
  • PySal pour l'analyse de données spatiales.

3

Un logiciel de mathématiques symboliques peut également être un bon support pour les statistiques. Voici quelques exemples de GPL que j'utilise de temps en temps:

  1. sympy est basé sur python et très petit, mais peut encore en faire beaucoup: dérivés, intégrales, sommes symboliques, combinatoire, développements de séries, manipulations de tenseurs, etc. Il existe un paquet R pour l'appeler de R.
  2. Sage est basé sur Python et ÉNORME! Si sympy ne peut pas faire ce que vous voulez, essayez sage (mais il n’existe pas de version native de Windows).
  3. Les maxima sont à base de lis et très classiques, de taille moyenne comprise entre (1) et (2).

Tous les trois sont en développement actif.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.