Quais são alguns projetos valiosos de código aberto da Análise Estatística?

69

Quais são alguns projetos valiosos de código aberto da Análise Estatística disponíveis no momento?

Edit: como apontado por Sharpie, valioso pode significar ajudar você a fazer as coisas mais rápido ou mais barato.

grokus
fonte
5
Poderia ser um garoto-propaganda para argumentativo e subjetivo. No mínimo, precisa definir 'valioso'.
Sharpie
2
Talvez o foco não deva ser "valioso", mas sim "prós" e "contras" de cada projeto?
Um leão
Ou talvez até "Como o X ajudará você a fazer o Y mais rápido / barato e a matar os germes que causam mau hálito".
Sharpie

Respostas:

88

O projeto R

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

R é valioso e significativo, porque foi a primeira alternativa de código aberto amplamente aceita aos pacotes grandes. É maduro, bem suportado e é um padrão em muitas comunidades científicas.

Jay Stevens
fonte
Sim, R é legal - mas POR QUE é 'valioso'?
Sharpie
11
É maduro, bem apoiada, e um padrão dentro de certas comunidades científicas (popular em nosso departamento de AI, por exemplo)
Menno
10
É extensível e não existe uma técnica estatística que não possa ser feita nela.
aL3xa
20

Para executar uma variedade de tarefas do MCMC em Python, existe o PyMC , do qual eu me utilizei bastante. Não encontrei nada que eu possa fazer no BUGS que não possa no PyMC, e a maneira como você especifica modelos e traz dados parece ser muito mais intuitiva para mim.

Rico
fonte
18

Isso pode ser prejudicado pelo esquecimento, mas eu felizmente usei o clone Matlab Octave por muitos anos. Existem bibliotecas razoavelmente boas na oitava para a geração de variáveis ​​aleatórias a partir de diferentes distribuições, testes estatísticos, etc., embora seja claramente ofuscada por R. Uma vantagem possível sobre R é que Matlab / oitava é a língua franca entre analistas numéricos, pesquisadores de otimização , e alguns subconjuntos de matemáticos aplicados (pelo menos quando eu estava na escola), enquanto que, no meu conhecimento, ninguém no meu departamento usava R. minha perda. aprenda ambos, se possível!

shabbychef
fonte
4
Comentário verdadeiro. Mas como programador experiente, me sinto sujo toda vez que uso o Matlab / Octave, que é uma linguagem horrivelmente projetada (se é que foi projetada). É claro que também me encolho no SAS, que obviamente foi projetado para cartões perfurados.
19411 Wayne
11
@Wayne é verdade. Lembro-me de quando ouvi Bob Harper se referir à linguagem do Matlab como 'semanticamente suspeito';) Como em muitas línguas, porém, depois de usá-lo o suficiente, você aprende a lidar com suas esquisitices.
Shabbychef
17

Dois projetos vêm à mente:

  1. Erros - tirando (algumas das) dores das estatísticas bayesianas. Ele permite que o usuário se concentre mais no modelo e um pouco menos no MCMC.
  2. Biocondutor - talvez a ferramenta estatística mais popular em Bioinformática. Eu sei que é um repositório R, mas há um grande número de pessoas que querem aprender R, apenas para o Biocondutor. O número de pacotes disponíveis para análise de ponta torna-o inigualável.
csgillespie
fonte
11
Andrew Gelman tem uma biblioteca agradável R que liga bugs para R.
bshor
4
Eu reformularia que "a ferramenta estatística mais popular em bioinformática" ... Os bioinformaticistas que fazem análises de microarrays a usam extensivamente, sim. Mas a bioinformática não se limita a isso;)
Nicojo 19/07/10
15

Weka para mineração de dados - contém muitos algoritmos de classificação e clustering em Java.

Fabian Steeg
fonte
como está o desempenho disso? (I correr gritando sempre que vejo a palavra 'Java' ...)
shabbychef
@shabbychef Parece muito bom com o que ouvi, mas geralmente o Weka é usado como um primeiro passo para testar vários algoritmos e analisar seu desempenho em determinados conjuntos de dados (ou um subconjunto deles), e então uma parte do programa principal é recodificada para otimizar sua eficiência (por exemplo, com dados de alta dimensão exigindo validação cruzada ou bootstraping), às vezes em C ou Python.
chl
2
@shabbychef: Os programas Java não precisam ser monstros lentos. Admito que o código C bem escrito quase sempre será mais rápido do que uma implementação semelhante em Java, mas o código Java bem escrito provavelmente não será muito lento. Além disso, o desenvolvimento em Java tem muitas vantagens significativas.
10382 posdef
14

O Incanter é uma plataforma tipo R (baseada em Clojure) (ambiente + bibliotecas) para computação e gráficos estatísticos.

Alex Ott
fonte
Novamente, por que? Como convencer meu chefe a usar isso, digamos, no Excel.
Sharpie
11
@James + j.mp/9fVmtV , j.mp/aNDyf2 , j.mp/9Gzzri :-)
chl
14

Também existem projetos iniciados pela FSF ou redistribuídos sob a Licença Pública Geral GNU, como:

  • PSPP , que pretende ser uma alternativa gratuita ao SPSS
  • GRETL , principalmente dedicado à regressão e econometria

Existem até aplicativos que foram lançados como um software complementar para um livro, como o JMulTi , mas ainda são usados ​​por poucas pessoas.

Ainda estou brincando com o xlispstat , de tempos em tempos, embora o Lisp tenha sido amplamente substituído pelo R (consulte a visão geral de Jan de Leeuw sobre Lisp vs. R no Journal of Statistical Software ). Curiosamente, um dos co-fundadores da linguagem R, Ross Ihaka, argumentou pelo contrário que o futuro do software estatístico é ... Lisp: De volta ao futuro: Lisp como base para um sistema de computação estatística . O @Alex já apontou para o ambiente estatístico baseado em Clojure , o Incanter , então talvez possamos ver um renascimento do software baseado em Lisp em um futuro próximo? :-)

chl
fonte
9

Antes de tudo, deixe-me dizer que, na minha opinião, a melhor ferramenta de todas é, de longe, o R, que possui toneladas de bibliotecas e utilitários que não vou enumerar aqui.

Deixe-me expandir a discussão sobre weka

Existe uma biblioteca para R, chamada RWeka, que você pode instalar facilmente no R e usar muitas das funcionalidades deste ótimo programa, além das do R, deixe-me dar um exemplo de código para fazer uma árvore de decisão simples leia de um banco de dados padrão que acompanha este pacote (também é muito fácil desenhar a árvore resultante, mas vou permitir que você faça uma pesquisa sobre como fazê-lo, que está na documentação do RWeka:

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

Existem também várias bibliotecas python para fazer isso (python é muito, muito fácil de aprender)

Primeiro, deixe-me enumerar os pacotes que você pode usar; não vou detalhar em detalhes; Weka (sim, você tem uma biblioteca para python), NLKT (o pacote de código aberto mais famoso para mineração de texto além de datamining), statPy , sickits e scipy.

Também há laranja, que é excelente (também falarei sobre isso mais adiante), aqui está um exemplo de código para fazer uma árvore a partir dos dados na tabela cmpart1, que também realiza validação de 10 dobras, você também pode representar graficamente a árvore

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 com alguns outros pacotes que usei e achei interessantes

Laranja : visualização e análise de dados para iniciantes e especialistas. Mineração de dados por meio de programação visual ou script Python. Componentes para aprendizado de máquina. Extensões para bioinformática e mineração de texto. (Eu pessoalmente recomendo isso, usei muito integrando-o em python e foi excelente) Posso enviar um código python, se você quiser.

ROSETTA : kit de ferramentas para análise de dados tabulares dentro da estrutura da teoria dos conjuntos aproximados. O ROSETTA foi projetado para suportar o processo geral de mineração de dados e descoberta de conhecimento: desde a navegação inicial e pré-processamento dos dados, através do cálculo de conjuntos mínimos de atributos e geração de regras if-then ou padrões descritivos, até validação e análise das regras ou padrões induzidos (Isso também gostei muito de usar)

KEEL : avalie algoritmos evolutivos para problemas de mineração de dados, incluindo regressão, classificação, clustering, mineração de padrões e assim por diante. Ele nos permite realizar uma análise completa de qualquer modelo de aprendizado em comparação aos modelos existentes, incluindo um módulo de teste estatístico para comparação.

DataPlot : para visualização científica, análise estatística e modelagem não linear. O usuário alvo do Dataplot é o pesquisador e analista envolvido na caracterização, modelagem, visualização, análise, monitoramento e otimização de processos científicos e de engenharia.

Openstats : Inclui Primer de Estatística e Medição, Estatística Descritiva, Comparações Simples, Análises de Variância, Correlação, Regressão Múltipla, Séries Temporais Interrompidas, Estatísticas Multivariadas, Estatísticas Não Paramétricas, Medição, Controle Estatístico de Processo, Procedimentos Financeiros, Redes Neurais, Simulação

mariana soffer
fonte
8

Colin Gillespie mencionou BUGS, mas uma opção melhor para Gibbs Sampling, etc, é JAGS .

Se tudo o que você quer fazer é ARIMA, não pode vencer o X12-ARIMA , que é um padrão-ouro em campo e código-fonte aberto. Ele não faz gráficos reais (eu uso R para fazer isso), mas o diagnóstico é uma lição por si só.

Se aventurando um pouco mais longe em algo que descobri recentemente e apenas comecei a aprender ...

O ADMB (AD Model Builder), que faz modelagem não linear com base na biblioteca AUTODIF, com o MCMC e alguns outros recursos ativados. Ele pré-processa e compila o modelo em um executável C ++ e o compila como um aplicativo independente, que é deve ser muito mais rápido que modelos equivalentes implementados em R, MATLAB, etc. Projeto ADMB

Começou e ainda é mais popular no mundo das pescas, mas parece bastante interessante para outros fins. Ele não possui gráficos ou outros recursos do R e provavelmente seria usado em conjunto com o R.

Se você deseja trabalhar com redes bayesianas em uma GUI: SamIam é uma boa ferramenta. O R tem alguns pacotes que também fazem isso, mas o SamIam é muito bom.

Wayne
fonte
7

Gosto muito de trabalhar com o RooFit para facilitar o ajuste adequado das distribuições de sinal e fundo e o TMVA para análises rápidas de componentes principais e modelagem de problemas multivariados com algumas ferramentas padrão (como algoritmos genéticos e redes neurais, também faz BDTs). Ambos fazem parte das bibliotecas ROOT C ++, que têm uma forte tendência a problemas de física de partículas.

Benjamin Bannier
fonte
7

Poucos mais além dos já mencionados:

  • KNIME junto com extensões de integração R, Python e Weka para mineração de dados
  • Mondrian para EDA rápida

E da perspectiva espacial:

  • GeoDa para EDA espacial e agrupamento de dados de área
  • SaTScan para agrupar dados de pontos
radek
fonte
3
Como uma nota GeoDa e SatScan não são de código aberto, eles são freeware (não que isso faz muita diferença para me embora!)
Andy W
11
O pySal do GeoDa Center é de código aberto (veja abaixo)
b_dev
6

Eu segundo que Jay. Por que R é valioso? Aqui está uma pequena lista de razões. http://www.inside-r.org/why-use-r . Verifique também o ggplot2 - um pacote gráfico muito bom para R. Alguns bons tutoriais aqui .

Stephen Turner
fonte
9
por que fazer a pergunta aqui? Todos são wiki da comunidade, por que não apenas corrigir a resposta canônica?
Jay Stevens
4

Isso cai nos limites externos da 'análise estatística', mas o Eureqa é um programa muito fácil de usar para relacionamentos não-lineares de mineração de dados em dados via programação genética. O Eureqa não é de uso geral, mas faz o que faz razoavelmente bem, e a GUI é bastante intuitiva. Também pode tirar proveito do poder de computação disponível através do servidor eureqa.

shabbychef
fonte
3

Meta.Numerics é uma biblioteca .NET com bom suporte para análise estatística.

Ao contrário de R (um clone S) e Octave (um clone do Matlab), ele não possui um "front end". É mais parecido com o GSL, pois é uma biblioteca à qual você vincula quando está escrevendo seu próprio aplicativo que precisa fazer análise estatística. C # e Visual Basic são linguagens de programação mais comuns que o C / C ++ para aplicativos de linha de negócios, e o Meta.Numerics tem um suporte mais amplo para construções e testes estatísticos do que o GSL.

David Wright
fonte
3
  • clusterPy para regionalização analítica ou cluster geoespacial
  • PySal para análise de dados espaciais.
B_Dev
fonte
3

O software de matemática simbólica também pode ser um bom suporte para estatísticas. Aqui estão alguns que eu uso periodicamente:

  1. sympy é baseado em python e muito pequeno, mas ainda pode fazer muito: derivadas, integrais, somas simbólicas, combinatória, expansões de séries, manipulações de tensores, etc. Há um pacote R para chamar de R.
  2. sage é baseado em python e ENORME! Se o sympy não puder fazer o que você deseja, tente o sábio (mas não há versão nativa do Windows).
  3. maxima é baseado em lisp e muito clássico, com tamanho intermediário entre (1) e (2).

Todos os três estão em desenvolvimento ativo.

kjetil b halvorsen
fonte