Каковы некоторые ценные проекты с открытым исходным кодом статистического анализа?

69

Какие ценные проекты с открытым исходным кодом Статистического анализа доступны прямо сейчас?

Изменить: как указал Шарпи, ценный может означать помочь вам сделать вещи быстрее или дешевле.

grokus
источник
5
Может быть плакат ребенка для аргументации и субъективности. По крайней мере, нужно определить «ценный».
Шарпи
2
Может быть, в центре внимания должны быть не «ценные», а «плюсы» и «минусы» каждого проекта?
Лев
Или, может быть, даже «Как X поможет вам сделать Y быстрее / дешевле и убить микробы, вызывающие неприятный запах изо рта».
Шарпи

Ответы:

88

R-проект

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

R является ценным и значимым, потому что это была первая широко принятая альтернатива с открытым исходным кодом для пакетов Big Box. Он зрелый, хорошо поддерживается и является стандартом во многих научных сообществах.

Джей Стивенс
источник
Да, R это хорошо, но ПОЧЕМУ это «ценно».
Шарпи
11
Это зрелый, хорошо поддерживаемый и стандарт в некоторых научных сообществах (например, популярный в нашем отделе искусственного интеллекта)
Менно
10
Он расширяемый, и в нем нет статистической техники, которую нельзя было бы сделать.
aL3xa
20

Для выполнения различных задач MCMC в Python есть PyMC , из которого я получил довольно мало пользы. Я не сталкивался с тем, что я могу сделать в BUGS, что я не могу сделать в PyMC, и способ, которым вы задаете модели и вводите данные, кажется мне гораздо более интуитивным.

Богатый
источник
18

Это может стать причиной забвения, но я счастливо использовал клон Matlab Octave в течение многих лет. В октавном кузнице есть довольно хорошие библиотеки для генерации случайных величин из разных распределений, статистических тестов и т. Д., Хотя очевидно, что они затмеваются R. Одним из возможных преимуществ по сравнению с R является то, что Matlab / octave является языком общения среди числовых аналитиков, специалистов по оптимизации. и некоторое подмножество прикладных математиков (по крайней мере, когда я учился в школе), в то время как никто в моем отделении, насколько мне известно, не использовал Р. мою потерю. выучи оба, если возможно!

shabbychef
источник
4
Правильный комментарий. Но, как опытный программист, я чувствую себя грязным каждый раз, когда использую Matlab / Octave, который является ужасно разработанным (если вообще разработан) языком. Конечно, я также съеживаюсь в SAS, который, очевидно, был разработан для перфокарт.
Уэйн
1
@ Уэйн, правда. Я помню, как однажды услышал, как Боб Харпер называет язык Matlab «семантически подозрительным»;) Как и во многих других языках, если вы достаточно его используете, вы учитесь справляться с его странностями.
Шаббычеф
17

На ум приходят два проекта:

  1. Ошибки - снятие (часть) боли с байесовской статистики. Это позволяет пользователю сосредоточиться больше на модели и немного меньше на MCMC.
  2. Биокондуктор - пожалуй, самый популярный статистический инструмент в биоинформатике. Я знаю, что это репозиторий R, но есть много людей, которые хотят изучать R, только для Bioconductor. Количество пакетов, доступных для передового анализа, делают его непревзойденным.
оборота csgillespie
источник
1
Эндрю Гельман имеет хорошую библиотеку R, которая связывает ошибки с R.
bshor
4
Я бы перефразировал этот «самый популярный статистический инструмент в биоинформатике» ... Биоинформатики, занимающиеся анализом микрочипов, широко его используют, да. Но биоинформатика этим не ограничивается;)
Nicojo
15

Weka для интеллектуального анализа данных - содержит множество алгоритмов классификации и кластеризации в Java.

Фабиан Стиг
источник
как производительность этого? (Я бегу с криком всякий раз, когда вижу слово «Ява» ...)
shabbychef
@shabbychef Кажется довольно хорошим из того, что я слышал, но обычно Weka используется в качестве первого шага для тестирования нескольких алгоритмов и проверки их производительности на заданных наборах данных (или их подмножестве), а затем одна часть кода основной программы перекодируется в оптимизировать его эффективность (например, с помощью многомерных данных, требующих перекрестной проверки или начальной загрузки), иногда в C или Python.
ЧЛ
2
@shabbychef: Java-программы не должны быть медленными монстрами. Я признаю, что хорошо написанный C-код почти всегда будет быстрее аналогичной реализации в Java, но хорошо написанный Java-код, скорее всего, не будет слишком медленным. Плюс у разработки на Java есть много существенных преимуществ.
Posdef
14

Incanter является R-подобной платформой на основе Clojure (среда + библиотеки) для статистических вычислений и графики.

Алекс Отт
источник
Опять же - почему? Как бы я убедил моего босса использовать это, скажем, в Excel.
Шарпи
4
Если перемещение из Excel является вопрос, вы можете попробовать: * coventry.ac.uk/ec/~nhunt/pottel.pdf * forecastingprinciples.com/files/McCullough.pdf * lomont.org/Math/Papers/2007/Excel2007/ Excel2007Bug.pdf * csdassn.org/software_reports/gnumeric.pdf
Джеймс
1
@James + j.mp/9fVmtV , j.mp/aNDyf2 , j.mp/9Gzzri :-)
CHL
14

Существуют также проекты, инициированные FSF или распространяемые по лицензии GNU General Public License, например:

  • PSPP , которая стремится стать бесплатной альтернативой SPSS
  • GRETL , в основном посвященный регрессии и эконометрике

Есть даже приложения, которые были выпущены в качестве сопутствующего программного обеспечения для учебника, такого как JMulTi , но все еще используются немногими.

Время от времени я все еще играю с xlispstat , хотя R был заменен Lisp (см. Обзор Jan de Leeuw по Lisp vs. R в Журнале статистического программного обеспечения ). Интересно, что один из соучредителей языка R, Росс Ихака, наоборот, утверждал, что будущее статистического программного обеспечения ... Lisp: Назад в будущее: Lisp как основа для статистической вычислительной системы . @Alex уже указали на основанную на Clojure статистическую среду Incanter , так что, возможно, мы увидим возрождение программного обеспечения на основе Lisp в ближайшем будущем? :-)

хл
источник
9

Прежде всего, позвольте мне сказать вам, что, на мой взгляд, лучший инструмент из всех на сегодняшний день - это R, который имеет тонны библиотек и утилит, которые я не собираюсь перечислять здесь.

Позвольте мне расширить дискуссию о weka

Существует библиотека для R, которая называется RWeka, которую вы можете легко установить в R и использовать многие функции этой замечательной программы наряду с функциями в R, позвольте мне привести пример кода для выполнения простого дерева решений. читать из стандартной базы данных, которая поставляется с этим пакетом (также очень легко нарисовать получившееся дерево, но я собираюсь дать вам исследование о том, как это сделать, которое находится в документации RWeka:

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

Есть также несколько библиотек Python для этого (Python очень очень прост в освоении)

Прежде всего позвольте мне перечислить пакеты, которые вы можете использовать, я не буду подробно останавливаться на них; Weka (да, у вас есть библиотека для python), NLKT (самый известный пакет с открытым исходным кодом для обработки текста, кроме анализа данных), statPy , sickits и scipy.

Есть также оранжевый, который является отличным (я также буду говорить об этом позже), вот пример кода для создания дерева из данных в таблице cmpart1, который также выполняет 10-кратную проверку, вы также можете построить график дерева

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

Чтобы закончить с некоторыми другими пакетами, я использовал и нашел интересным

Orange : визуализация и анализ данных для новичков и экспертов. Интеллектуальный анализ данных с помощью визуального программирования или сценариев Python. Компоненты для машинного обучения. Расширения для биоинформатики и текстового майнинга. (Я лично рекомендую это, я много использовал его, интегрируя в Python, и это было превосходно) Я могу прислать вам немного кода Python, если вы хотите, чтобы я это сделал.

ROSETTA : инструментарий для анализа табличных данных в рамках теории грубых множеств. ROSETTA предназначена для поддержки общего процесса сбора данных и обнаружения знаний: от первоначального просмотра и предварительной обработки данных, вычисления минимальных наборов атрибутов и генерации правил if-then или описательных шаблонов до проверки и анализа индуцированных правил или шаблонов. (Этим я тоже очень любил пользоваться)

КИЛ : оценка эволюционных алгоритмов для задач Data Mining, включая регрессию, классификацию, кластеризацию, анализ структуры и так далее. Это позволяет нам выполнить полный анализ любой модели обучения в сравнении с существующими, включая модуль статистического тестирования для сравнения.

DataPlot : для научной визуализации, статистического анализа и нелинейного моделирования. Целевым пользователем Dataplot является исследователь и аналитик, занимающийся характеристикой, моделированием, визуализацией, анализом, мониторингом и оптимизацией научных и инженерных процессов.

Openstats : Включает учебник по статистике и измерениям, описательную статистику, простые сравнения, анализ отклонений, корреляцию, множественную регрессию, прерывистые временные ряды, многомерную статистику, непараметрическую статистику, измерения, статистический контроль процессов, финансовые процедуры, нейронные сети, моделирование

Мариана Софер
источник
8

Колин Гиллеспи упомянул ОШИБКИ, но лучшим вариантом для отбора проб Гиббса и т. Д. Является JAGS .

Если все, что вы хотите сделать, это ARIMA, вы не можете победить X12-ARIMA , который является золотым стандартом в этой области и с открытым исходным кодом. Он не работает с реальными графиками (я использую R для этого), но диагностика сама по себе урок.

Углубившись немного дальше, к чему-то, что я недавно обнаружил и только начал изучать ...

ADMB (AD Model Builder), который выполняет нелинейное моделирование на основе библиотеки AUTODIF, с добавлением MCMC и нескольких других функций. Он предварительно обрабатывает и компилирует модель в исполняемый файл C ++ и компилирует ее как отдельное приложение, которое должен быть намного быстрее, чем эквивалентные модели, реализованные в R, MATLAB и т. д. ADMB Project

Это началось и все еще является самым популярным в мире рыболовства, но выглядит довольно интересно для других целей. Он не имеет графиков или других особенностей R и, скорее всего, будет использоваться вместе с R.

Если вы хотите работать с Bayesian Networks в графическом интерфейсе: SamIam - хороший инструмент. У R есть пара пакетов, которые тоже делают это, но SamIam очень хорош.

Уэйн
источник
7

GSL для тех из вас, кто хочет программировать на C / C ++, является ценным ресурсом, поскольку предоставляет несколько подпрограмм для случайных генераторов, линейной алгебры и т. Д. Хотя GSL в основном доступен для Linux, существуют также порты для Windows. (См .: http://gladman.plushost.co.uk/oldsite/computing/gnu_scientific_library.php и http://david.geldreich.free.fr/dev.html ).

user28
источник
7

Мне действительно нравится работать с RooFit для удобного правильного подбора распределения сигналов и фона, а TMVA для быстрого анализа основных компонентов и моделирования многомерных задач с помощью некоторых стандартных инструментов (таких как генетические алгоритмы и нейронные сети, а также BDT). Они оба являются частью библиотек ROOT C ++, которые, тем не менее, довольно сильно склоняются к проблемам физики элементарных частиц.

Бенджамин Банье
источник
7

Немного больше поверх уже упомянутого:

  • KNIME вместе с интеграционными расширениями R, Python и Weka для интеллектуального анализа данных
  • Мондриан для быстрого EDA

И с пространственной точки зрения:

  • GeoDa для пространственного EDA и кластеризации площадных данных
  • SaTScan для кластеризации точечных данных
Радек
источник
3
Как примечание, GeoDa и SatScan не являются открытым исходным кодом, они являются бесплатными (не то, чтобы это имело большое значение для меня, хотя!)
Энди W
1
pySal от GeoDa Center с открытым исходным кодом (см. ниже)
b_dev
6

Я второй, что Джей. Почему R ценен? Вот краткий список причин. http://www.inside-r.org/why-use-r . Также ознакомьтесь с ggplot2 - очень хорошим графическим пакетом для R. Несколько хороших уроков здесь .

Стивен Тернер
источник
9
зачем задавать вопрос здесь? Все они вики-сообщества, почему бы просто не исправить канонический ответ?
Джей Стивенс
4

Это выходит за пределы «статистического анализа», но Eureqa - очень удобная программа для интеллектуального анализа данных с помощью генетического программирования. Eureqa не так универсален, но он делает то, что делает довольно хорошо, а графический интерфейс довольно интуитивно понятен. Он также может воспользоваться доступной вычислительной мощностью через сервер eureqa.

shabbychef
источник
3

Meta.Numerics - это библиотека .NET с хорошей поддержкой статистического анализа.

В отличие от R (клон S) и Octave (клон Matlab), у него нет «переднего конца». Это больше похоже на GSL в том смысле, что это библиотека, на которую вы ссылаетесь, когда пишете свое собственное приложение, и которое требует статистического анализа. C # и Visual Basic являются более распространенными языками программирования, чем C / C ++ для бизнес-приложений, а Meta.Numerics имеет более обширную поддержку статистических конструкций и тестов, чем GSL.

Дэвид Райт
источник
3
  • clusterPy для аналитического районирования или геопространственной кластеризации
  • PySal для пространственного анализа данных.
оборота B_Dev
источник
3

Символическая математическая программа также может быть хорошей поддержкой для статистики. Вот несколько GPL, которые я использую время от времени:

  1. sympy основан на python и очень мал, но все же может многое: производные, интегралы, символические суммы, комбинаторика, разложение в ряды, тензорные манипуляции и т. д. Существует пакет R, который можно вызвать из R.
  2. шалфей является питон на основе и ОГРОМНЫЙ! Если sympy не может сделать то, что вы хотите, попробуйте sage (но нет версии для Windows).
  3. Максимум основан на лиспе и очень классический, промежуточный по размеру между (1) и (2).

Все три находятся в активной разработке.

kjetil b halvorsen
источник