¿Cuáles son algunos proyectos valiosos de código abierto de Análisis Estadístico?

69

¿Cuáles son algunos de los valiosos proyectos de código abierto de Análisis estadístico disponibles en este momento?

Editar: como señaló Sharpie, valioso podría significar ayudarlo a hacer las cosas más rápido o más barato.

grokus
fuente
55
Podría ser un cartel infantil para argumentativos y subjetivos. Por lo menos, necesita definir 'valioso'.
Sharpie
2
¿Quizás el enfoque no debería estar en "valioso" sino más bien "pros" y "contras" de cada proyecto?
Un león
O tal vez incluso "Cómo X te ayudará a hacer Y más rápido / más barato y matar los gérmenes que causan el mal aliento".
Sharpie

Respuestas:

88

El proyecto R

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

R es valioso y significativo porque fue la primera alternativa de código abierto ampliamente aceptada a los paquetes de caja grande. Es maduro, bien respaldado y es un estándar dentro de muchas comunidades científicas.

Jay Stevens
fuente
Sí, R es agradable, pero POR QUÉ es "valioso".
Sharpie
11
Es maduro, bien respaldado y es un estándar dentro de ciertas comunidades científicas (popular en nuestro departamento de IA, por ejemplo)
Menno
10
Es extensible y no hay una técnica estadística que no se pueda hacer en él.
aL3xa
20

Para realizar una variedad de tareas de MCMC en Python, está PyMC , que he utilizado bastante. No he encontrado nada que pueda hacer en BUGS que no pueda hacer en PyMC, y la forma en que especifica modelos y aporta datos me parece mucho más intuitiva.

Rico
fuente
18

Esto puede ser rechazado al olvido, pero felizmente utilicé el clon Matlab Octave durante muchos años. Hay bibliotecas bastante buenas en la forja de octava para la generación de variables aleatorias de diferentes distribuciones, pruebas estadísticas, etc., aunque claramente está eclipsada por R. Una posible ventaja sobre R es que Matlab / octava es la lengua franca entre analistas numéricos, investigadores de optimización , y algún subconjunto de matemáticos aplicados (al menos cuando estaba en la escuela), mientras que nadie en mi departamento, que yo sepa, usó R. mi pérdida. aprende ambos si es posible!

shabbychef
fuente
44
Verdadero comentario. Pero como programador experimentado, me siento sucio cada vez que uso Matlab / Octave, que es un lenguaje horriblemente diseñado (si es que está diseñado). Por supuesto, también me avergüenzo de SAS, que obviamente fue diseñado para tarjetas perforadas.
Wayne
1
@Wayne lo suficientemente cierto. Recuerdo que una vez escuché a Bob Harper referirse al lenguaje Matlab como 'semánticamente sospechoso';) Sin embargo, al igual que con muchos idiomas, una vez que lo usa lo suficiente, aprende a hacer frente a sus rarezas.
shabbychef
17

Se me ocurren dos proyectos:

  1. Errores : eliminar (algunos de) el dolor de las estadísticas bayesianas. Permite al usuario centrarse más en el modelo y un poco menos en MCMC.
  2. Bioconductor : quizás la herramienta estadística más popular en Bioinformática. Sé que es un repositorio R, pero hay una gran cantidad de personas que quieren aprender R, solo para Bioconductor. La cantidad de paquetes disponibles para análisis de vanguardia lo hace insuperable.
revs csgillespie
fuente
1
Andrew Gelman tiene una bonita biblioteca R que vincula Bugs con R.
bshor
44
Reformularía que "la herramienta estadística más popular en bioinformática" ... Los bioinformáticos que realizan análisis de microarrays lo usan ampliamente, sí. Pero la bioinformática no se limita a eso;)
Nicojo
15

Weka para minería de datos: contiene muchos algoritmos de clasificación y agrupación en Java.

Fabian Steeg
fuente
¿Cómo es el rendimiento de esto? (Corro gritando cada vez que veo la palabra 'Java' ...)
shabbychef
@shabbychef Parece bastante bueno por lo que escuché, pero generalmente Weka se usa como un primer paso para probar varios algoritmos y observar su rendimiento en conjuntos de datos dados (o un subconjunto de los mismos), luego uno recodifica parte del programa central para optimizar su eficiencia (por ejemplo, con datos de alta dimensión que requieren validación cruzada o bootstraping), a veces en C o Python.
chl
2
@shabbychef: los programas Java no tienen que ser monstruos lentos. Admito que el código C bien escrito casi siempre será más rápido que una implementación similar en Java, pero el código Java bien escrito probablemente no sea súper lento. Además, el desarrollo en Java tiene muchas ventajas significativas.
posdef
14

Incanter es una plataforma tipo R basada en Clojure (entorno + bibliotecas) para computación estadística y gráficos.

Alex Ott
fuente
De nuevo, ¿por qué? ¿Cómo convencería a mi jefe de usar esto en Excel?
Sharpie
1
@James + j.mp/9fVmtV , j.mp/aNDyf2 , j.mp/9Gzzri :-)
chl
14

También hay proyectos iniciados por la FSF o redistribuidos bajo la Licencia Pública General de GNU, como:

  • PSPP , que pretende ser una alternativa gratuita a SPSS
  • GRETL , principalmente dedicado a regresión y econometría

Incluso hay aplicaciones que se lanzaron solo como software complementario para un libro de texto, como JMulTi , pero que todavía son pocas las personas que lo utilizan.

Todavía estoy jugando con xlispstat , de vez en cuando, aunque Lisp ha sido reemplazado en gran medida por R (ver el resumen de Jan de Leeuw sobre Lisp vs. R en el Journal of Statistical Software ). Curiosamente, uno de los cofundadores del lenguaje R, Ross Ihaka, argumentó por el contrario que el futuro del software estadístico es ... Lisp: Regreso al futuro: Lisp como base para un sistema de computación estadística . @Alex ya señaló el entorno estadístico basado en Clojure Incanter , por lo que tal vez veremos un renacimiento del software basado en Lisp en el futuro cercano. :-)

chl
fuente
9

Antes que nada déjenme decirles que, en mi opinión, la mejor herramienta de todas es R, que tiene toneladas de bibliotecas y utilidades que no voy a enumerar aquí.

Permítanme expandir la discusión sobre weka

Hay una biblioteca para R, que se llama RWeka, que puede instalar fácilmente en R, y usar muchas de las funcionalidades de este gran programa junto con las de R, permítame darle un ejemplo de código para hacer un árbol de decisión simple lea de una base de datos estándar que viene con este paquete (también es muy fácil dibujar el árbol resultante, pero le dejaré hacer la investigación sobre cómo hacerlo, que se encuentra en la documentación de RWeka:

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

También hay varias bibliotecas de Python para hacer esto (Python es muy, muy fácil de aprender)

Primero déjame enumerar los paquetes que puedes usar, no voy a entrar en detalles sobre ellos; Weka (sí, tiene una biblioteca para python), NLKT (el paquete de código abierto más famoso para minería de texto además de minería de datos), statPy , sickits y scipy.

También hay naranja que es excelente (también hablaré más adelante), aquí hay un ejemplo de código para hacer un árbol a partir de los datos en la tabla cmpart1, que también realiza una validación de 10 pliegues, también puede graficar el árbol

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

Para terminar con algunos otros paquetes que utilicé y encontré interesantes

Naranja : visualización y análisis de datos para principiantes y expertos. Minería de datos a través de programación visual o secuencias de comandos Python. Componentes para el aprendizaje automático. Extensiones para bioinformática y minería de textos. (Lo recomiendo personalmente, lo utilicé mucho integrándolo en Python y fue excelente) Puedo enviarle un código de Python si lo desea.

ROSETTA : kit de herramientas para analizar datos tabulares en el marco de la teoría de conjuntos aproximada. ROSETTA está diseñado para soportar el proceso general de descubrimiento de conocimiento y minería de datos: desde la exploración inicial y el preprocesamiento de los datos, pasando por el cálculo de conjuntos mínimos de atributos y la generación de reglas si-entonces o patrones descriptivos, hasta la validación y análisis de las reglas o patrones inducidos (Esto también disfruté mucho usando)

KEEL : evalúa algoritmos evolutivos para problemas de minería de datos que incluyen regresión, clasificación, agrupamiento, minería de patrones, etc. Nos permite realizar un análisis completo de cualquier modelo de aprendizaje en comparación con los existentes, incluido un módulo de prueba estadística para comparación.

DataPlot : para visualización científica, análisis estadístico y modelado no lineal. El usuario objetivo de Dataplot es el investigador y analista dedicado a la caracterización, modelado, visualización, análisis, monitoreo y optimización de procesos científicos y de ingeniería.

Openstats : incluye un manual de estadísticas y mediciones, estadísticas descriptivas, comparaciones simples, análisis de varianza, correlación, regresión múltiple, series de tiempo interrumpidas, estadísticas multivariantes, estadísticas no paramétricas, medición, control estadístico de procesos, procedimientos financieros, redes neuronales, simulación

mariana más suave
fuente
8

Colin Gillespie mencionó BUGS, pero una mejor opción para Gibbs Sampling, etc., es JAGS .

Si todo lo que quiere hacer es ARIMA, no puede vencer a X12-ARIMA , que es un estándar de oro en el campo y de código abierto. No hace gráficos reales (yo uso R para hacer eso), pero los diagnósticos son una lección en sí mismos.

Aventurándome un poco más lejos de algo que descubrí recientemente y que recién comencé a aprender ...

ADMB (AD Model Builder), que realiza un modelado no lineal basado en la biblioteca AUTODIF, con MCMC y algunas otras características incorporadas. Preprocesa y compila el modelo en un ejecutable C ++ y lo compila como una aplicación independiente, que es se supone que es mucho más rápido que los modelos equivalentes implementados en R, MATLAB, etc. Proyecto ADMB

Comenzó y sigue siendo el más popular en el mundo de la pesca, pero parece bastante interesante para otros fines. No tiene gráficos u otras características de R, y lo más probable es que se use junto con R.

Si desea trabajar con Bayesian Networks en una GUI: SamIam es una buena herramienta. R tiene un par de paquetes que también hacen esto, pero SamIam es muy agradable.

Wayne
fuente
7

Realmente disfruto trabajando con RooFit para una fácil y adecuada adaptación de las distribuciones de señal y fondo y TMVA para análisis rápidos de componentes principales y modelado de problemas multivariados con algunas herramientas estándar (como algoritmos genéticos y redes neuronales, también hace BDT). Sin embargo, ambos son parte de las bibliotecas ROOT C ++ que tienen un sesgo bastante fuerte hacia los problemas de física de partículas.

Benjamin Bannier
fuente
7

Pocos más además de los ya mencionados:

  • KNIME junto con las extensiones de integración R, Python y Weka para la minería de datos
  • Mondrian para una EDA rápida

Y desde una perspectiva espacial:

  • GeoDa para EDA espacial y agrupamiento de datos de área
  • SaTScan para la agrupación de datos de puntos
radek
fuente
3
Como nota, GeoDa y SatScan no son de código abierto, son freeware (¡aunque eso no hace mucha diferencia para mí!)
Andy W
1
pySal by the GeoDa Center es de código abierto (ver abajo)
b_dev
6

Yo segundo que Jay. ¿Por qué es valioso R? Aquí hay una breve lista de razones. http://www.inside-r.org/why-use-r . También echa un vistazo a ggplot2 , un paquete de gráficos muy bueno para R. Algunos buenos tutoriales aquí .

Stephen Turner
fuente
9
¿Por qué hacer la pregunta aquí? Todos son community-wiki, ¿por qué no solo arreglar la respuesta canónica?
Jay Stevens
4

Esto cae en los límites externos del "análisis estadístico", pero Eureqa es un programa muy fácil de usar para la extracción de datos de relaciones no lineales en los datos a través de la programación genética. Eureqa no tiene un propósito general, pero hace lo que hace bastante bien, y la GUI es bastante intuitiva. También puede aprovechar la potencia informática disponible a través del servidor eureqa.

shabbychef
fuente
3

Meta.Numerics es una biblioteca .NET con buen soporte para el análisis estadístico.

A diferencia de R (un clon S) y Octave (un clon de Matlab), no tiene un "front end". Se parece más a GSL, ya que es una biblioteca a la que se vincula cuando está escribiendo su propia aplicación que necesita hacer un análisis estadístico. C # y Visual Basic son lenguajes de programación más comunes que C / C ++ para aplicaciones de línea de negocio, y Meta.Numerics tiene un soporte más extenso para construcciones y pruebas estadísticas que GSL.

David Wright
fuente
3
  • clusterPy para regionalización analítica o agrupación geoespacial
  • PySal para análisis de datos espaciales.
revs B_Dev
fuente
3

El software matemático simbólico también puede ser un buen soporte para las estadísticas. Aquí hay algunos GPL que uso de vez en cuando:

  1. sympy está basado en python y es muy pequeño, pero aún puede hacer mucho: derivados, integrales, sumas simbólicas, combinatorias, expansiones en serie, manipulaciones de tensor, etc. Hay un paquete R para llamarlo desde R.
  2. ¡Sage está basado en Python y es ENORME! Si Sympy no puede hacer lo que quiere, pruebe Sage (pero no hay una versión nativa de Windows).
  3. maxima es lisp-based y muy clásico, de tamaño intermedio entre (1) y (2).

Los tres están en desarrollo activo.

kjetil b halvorsen
fuente