Original Article: Comparison of data analysis packages: R, Matlab, SciPy, Excel, SAS, SPSS, Stata
Author: Brendan O'Connor

Comparação de pacotes de análise de dados: R, Matlab, SciPy, Excel, SAS, SPSS, Stata

Lukas e eu estávamos tentando criar uma comparação sucinta dos pacotes mais populares que normalmente são usados ​​para análise de dados. Eu acho que a maioria das pessoas escolhe uma baseada no que as pessoas ao seu redor usam ou o que aprendem na escola, então eu achei difícil encontrar informações comparativas. Eu estou postando a tabela aqui na esperança de comentários úteis.

Nome Vantagens Desvantagens Fonte Aberta? Usuários típicos
R Suporte de Biblioteca; visualização Aprendizado demorado sim Finanças; estatística
Matlab Suporte de matriz elegante; visualização Caro; suporte de estatística incompleto Não Engenharia
SciPy / NumPy / Matplotlib Python (linguagem de programação de propósito geral) Imaturo sim Engenharia
Excel Fácil; visual; flexível Configurações de dados ampla Não Negócios
SAS Configurações de dados ampla Caro; programa de linguagem ultrapassado Não Negócios; Governo
Stata Análise de estatísica fácil Não Ciência
SPSS Como o Stata mas pior e mais caro

[Atualização de 09/07: arrumações incorporando alguns dos excelentes comentários abaixo, esp. para SAS, SPSS e Stata.]

Há muito mais a ser dito por cada célula.  Entre outras coisas:

  • Duas grandes divisões na mesa: as soluções mais orientadas para a programação são R, Matlab e Python. Mais soluções analíticas são Excel, SAS, Stata e SPSS.
  • Python "imaturo": matplotlib, numpy e scipy são bibliotecas separadas que nem sempre se dão bem. Por que matplotlib vem com "pylab", que é suposto ser um namespace unificado para tudo? Não é suposto fazer isso? Por que há duplicação entre numpy e scipy (por exemplo, numpy.linalg vs. scipy.linalg)? E então há versão de compatibilidade de pacotes do inferno. Você pode usar SAGE ou Enthought, mas também não é padrão (ainda). Em termos de funcionalidade e abordagem, SciPy está mais próximo do Matlab, mas parece muito menos maduro.
  • A linguagem de Matlab é certamente fraca. Às vezes, não parece ser muito mais do que uma linguagem de script que envolve as bibliotecas de matrizes. Python é claramente melhor na maioria das contagens. R é surpreendentemente bom (Scheme-derivado, uso inteligente de args nomeados, etc.) se você pode superar as construções bizarras da linguagem e funções estranhas na biblioteca padrão. Todos dizem que o SAS é muito ruim.
  • Matlab é o melhor para desenvolver novos algoritmos matemáticos. Muito popular na aprendizagem de máquinas.
  • Nunca usei a Matlab Statistical Toolbox. Me pergunto, quão bom é comparado com R?
  • Aqui está um tópico do thread interessante sobre SAS/Stata vs R.
  • SPSS e Stata na mesma categoria: eles parecem ter um papel semelhante, então nós os jogamos juntos. Stata é muito mais barato do que o SPSS, as pessoas geralmente parecem gostar, e parece popular para cursos introdutórios. Eu também não usei ...
  • SPSS e Stata para "Ciência": vimos biólogos e cientistas sociais usarem muita Stata e SPSS. Minha impressão é que eles se usam por pessoas que querem a maneira mais fácil de fazer o tipo de análises estatísticas padrão que são muito ortodoxas em muitas disciplinas acadêmicas. (ANOVA, regressões múltiplas, exames de significância t e chi-quadrado, etc.) Certos tipos de cientistas, como físicos, cientistas da computação e estatísticos, muitas vezes fazem coisas mais estranhas que não se encaixam nestes métodos tradicionais.
  • Outra coisa importante sobre o SAS, da minha perspectiva, pelo menos, é que ele é usado principalmente por uma multidão mais velha. Conheço dezenas de pessoas com menos de 30 anos fazendo coisas estatísticas e só conhece a SAS. Naquela Reunião R na semana passada, Jim Porzak perguntou ao público se havia algum estudante de graduação recente que tivesse aprendido R na escola. Muitas mãos subiram. Então ele perguntou se SAS era mesmo oferecido como uma opção. Todas as mãos foram baixadas. Havia muitos representantes da SAS naquela conferência e eles certamente não parecem estar na vanguarda.
  • Mas: existe algum pacote além do SAS que pode fazer análises para conjuntos de dados que não se encaixam na memória? Ou seja, aqueles que a maioria tem que permanecer no disco? E exatamente como são boas as capacidades da SAS aqui?
  • Se o seu conjunto de dados não pode caber em um único disco rígido e você precisa de um cluster, nenhum dos itens acima funcionará. Existem algumas estruturas de processamento de dados multi-máquina que são um pouco padrão (por exemplo, Hadoop, MPI), mas é uma questão aberta qual será o quadro de análise de dados distribuídos padrão. (Colméia? Porco? Ou muito possivelmente outra coisa.)
  • (Este foi um ponto interessante no encontro R. Porzak estava falando sobre como o MySQL contorna as limitações em memória da R. Mas Itamar Rosenn e Bo Cowgill (Facebook e Google, respectivamente) estavam falando sobre conjuntos de dados multi-máquinas que requerem computação em cluster que R não se aproxima de tocar, pelo menos agora. É apenas um jogo de bola diferente com aquele grande conjunto de dados.)
  • As pessoas da SAS queixam-se de capacidades gráficas precárias.
  • O suporte de visualização R vs Matlab é controverso. Uma visão que eu ouvi dizer é que as visualizações da R são ótimas para análises exploratórias, mas você quer algo mais para gráficos de alta qualidade. As parcelas inter-ativas de Matlab são muito agradáveis. A Matplotlib segue o modelo Matlab, que está bem, mas é mais feio do que qualquer OMI.
  • O Excel possui uma base de usuários muito maior do que qualquer uma dessas outras opções. Isso é importante para saber. Eu acho que é subestimado por cientistas da informática tipo de pessoas. Mas ele se divide massivamente em > 10 mil ou certamente > 100 mil linhas.
  • Outra opção: Fortran e C/C ++. Eles são super rápidos e eficientes em memória, mas difíceis e propensos a erros de código, precisam passar muito tempo empurrando com I/O e têm zero visualização e suporte de gerenciamento de dados. A maioria dos pacotes listados acima executam bibliotecas numéricas Fortran para o levantamento de pesados.
  • Outra opção: Mathematica. Tenho a impressão de que é mais para matemática teórica, e não para análise de dados. Alguém pode me provar estar errado?
  • Outra opção: os pacotes de mineração de dados pré-cozidos. Os fontes de código aberto que conheço são Weka e Orange. Ouvi dizer que há muitos milhões de comerciais também. Jerome Friedman, um grande homem de aprendizagem estatística, tem uma queixa interessante de que eles deveriam se concentrar mais em coisas tradicionais, como testes de significância e design experimental. (Aqui; o artigo que inspirou esse discurso.)
  • Eu acho que saber de onde os usuários típicos vêm é muito informativo para o que você pode esperar para ver nas capacidades do software e na comunidade de usuários. Eu adoraria mais informações sobre isso para todas essas opções.

O que as pessoas acham?