2010-02-04 3 views
31

В последнее время я делаю немного статистический анализ некоторых вещей, и мне любопытно, есть ли какие-либо языки программирования, которые особенно хороши для этой цели. Я знаю о R, но я бы предпочел что-то более универсальное (или R довольно универсальное?).Какие языки программирования хороши для статистики?

Какие у вас есть предложения? Существуют ли какие-либо языки, чей синтаксис/семантика особенно ориентированы на это? Или есть ли какие-либо языки с исключительно хорошими библиотеками?

+2

Интересный вопрос из-за ограничения общего назначения. DSL могут быть PITA для работы, когда только часть того, что вы хотите сделать, находится в этом домене. – dsimcha

+0

Ограничение общего назначения Джейсона, как описано в комментарии к ответу Дирка, похоже, очень хорошо подходит для сильных сторон R. Сравнение R с SAS, Stata, Matlab или что-то еще не является ошибкой (в этом отношении.) –

ответ

51

Нет конкурса - R как основная реализация S (и тот, который, как оказалось, является правильным Open Source и проектом GNU).

не только в качестве языка S разработан именно для этой цели (см книги от Джона Чемберса), но довольно богатая поддержки пакетов, относящихся к домену в CRAN второй нет: более 2000 пакетов с надлежащим контролем качества , часто созданных экспертами в этой области.

ACM видит его таким же образом, когда он дал ACM Software Systems Award Джону палатами в 1998 году со следующим citation

John M. Chambers

For The S системы, которая навсегда изменила как люди анализируют, визуализируют, и манипулируют данными.

Для справки, другие победители этой премии были TeX, Smalltalk, Postscript, RPC, 'веб', мозаика, Tcl/Tk, Java, сделать ... Не плохая компания, чтобы быть в.

Теперь, если вы хотите «собирать и суммировать некоторые данные практически любым процедурным или функциональным языком». Но если вы хотите что-то, что было , предназначенное для программирования с данными, тогда R в качестве основной реализации S это.

+2

Я полностью понимаю силу R как статистический язык. Однако мне нужно сделать что-то помимо просто статистики (разбор лог-файлов и обращение к базе данных sqlite). Может ли R сделать это? –

+2

Yup! Существует, например, пакет RSQLite, в котором есть все необходимое для чтения/записи в/из файлов SQLite. Кроме того, он использует интерфейс DBI, поэтому вы повторно используете свой код на разных серверах. Что касается синтаксического анализа, R содержит несколько движков регулярных выражений, включая базовые, расширенные и Perl --- см. Справку (regex) --- так что это тоже очень хорошо. Вы можете использовать R для сценариев через исполняемый файл «Rscript» в Windows, OS X, Linux, а также «r» («littler») на OS X и Linux. [Я писал/поддерживаю литлер]. –

+9

Вы * можете * делать все, что хотите, в R, но вы, вероятно, этого не хотите. Мое предложение состояло в том, чтобы изучить R и некоторые другие языки, которые хорошо сочетаются с R. Если вы создаете сверхпрочные приложения, возможно, Java или Scala. Если вы создаете системы среднего размера, которые в основном обертывают вокруг R, возможно, Python или Ruby. Затем используйте различные библиотеки, которые люди написали для вызова R с вашего другого языка, когда вам нужна сложная работа с данными и статистикой. – Harlan

3

pystats library (для Python) хорошо подходит для статистического анализа.

+3

Кажется, что файлы проекта не обновлялись с 2005 года. Это, как правило, очень плохой знак. – signalseeker

+5

У меня есть Jeep 2005 года, который все еще отлично работает! –

+0

У меня есть немного сыра с 2005 года! – Thomas

2

Matlab хорошо подходит для статистики. Однако это не совсем бесплатно.

Octave - бесплатный клон, который может также делать то, что вам нужно.

2

Мой друг, который фокусируется на статистике рынка, использует SAS. Я мало знаю об этом - это не похоже на «настоящий» язык, но, возможно, стоит проверить.

Я все для Python с привязками R.

+1

SAS ОЧЕНЬ дорого. Если вы хотите заплатить статистическое программное обеспечение, есть больше вариантов (также более дешевых), таких как: spss, jmp, mathlab и т. Д. Лично я бы предпочел R :) –

+1

+1, Python и R вместе - это мечта. Проверьте rpy2: http://rpy.sourceforge.net/rpy2.html – Mark

3

Вы считаете, что используете somethinbg как MatLab? Он имеет множество расширенных возможностей для анализа данных, и вы можете выполнять некоторые программы в среде.

4

Я бы сказал R как большинство курсов по статистике в моем университете, использующем R, и большинство моих друзей, которые прошли такие курсы, довольны своим диапазоном и охватом.

Я даже попробовал MATLAB и нашел его довольно удобным.

веселит

1

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

Для этого требуется специальная клавиатура и шрифт, так как он не использует ascii.

См. Conway's Game of Life in one line of APL для краткого обзора того, что с ним можно сделать.

+0

APL является универсальным, как и все остальное, гораздо сложнее изучить. +1 для ностальгии –

+1

Если вы думаете о APL, то почему бы не пойти с J или K, а это немного более практично, но использует тот же базовый подход? – Shane

3

Что относительно Stata? У меня есть друг, который является студенткой PhD Economics, и он все время бредит Stata. И у меня есть личное сходство с Mathematica.

2

Загляните в пакет RooFit для ROOT. Он используется, например, физиков частиц для анализа данных.

ROOT - это каркас C++, а также комплектуется питонами и рубинами. Он также включает в себя ограниченный интерактивный переводчик C++.

10

Посмотрите на Incanter, основанный на clojure. «Incanter - это платформа, подобная Clojure, для статистических вычислений и графики». Clojure - это язык, основанный на lisp, реализованный на вершине JVM. Он имеет легкий доступ к java-библиотекам. Не может быть более общей цели, чем это.

+0

+1 для инквизитора. Он еще не так хорошо развит, как R, но поскольку вы получаете все библиотеки и возможности Java/Clojure, это чрезвычайно полезно, если вы хотите одновременно создавать статистику * и * общую цель. – mikera

4

R отлично, если все Вы делаете статистику. У этого есть хороший интерактивный интерфейс и инструменты визуализации. Однако его довольно сложно использовать в качестве языка общего назначения, потому что его синтаксис и семантика очень оптимизированы для выполнения статистики. Если вы хотите использовать более общий язык, Python с SciPy будет хорошим выбором, хотя я использовал его и обнаружил, что статистические процедуры в нем несколько незрелые. Они часто неэффективны или не работают в случае с короткими случаями.

Если вы делаете интеллектуальный анализ данных на больших наборах данных, что важно для производительности, и/или вы не против использования альфа-инструментов, язык программирования D и dstats library может быть довольно хорошим. D - это как универсальный язык, поскольку вы получаете, но IMHO dstats очень прост в использовании, потому что метапрограммирование шаблонов упрощает разработку приятного API даже на статически скомпилированном языке, близком к металлу. (Полное раскрытие: я написал большую часть dstats, поэтому, конечно, я думаю, что это хорошо.)

+3

R работает достаточно хорошо для программирования общего назначения - например, код, стоящий за CRANberries html и rss резюме изменений в CRAN, составляет менее 200 строк ... R. Аналогично, все больше и больше сценариев за кулисами, используемых R для сборки R, тесты на запуск, обновление документации из латексного мета-формата теперь находятся в R. И ни один другой язык не приближается к CRAN и его 2000+ пакетам. –

+3

@Dirk: Я думаю, это довольно субъективно, но я нахожу большинство математически ориентированных языков (R, Matlab и т. Д.) Очень неудобными и странными для программирования общего назначения, а не только R. – dsimcha

+0

Многие сравнения являются субъективными. Кроме того, R! = Matlab, и это сравнение, как правило, не является хорошим. Во-вторых, я дал вам конкретные примеры R в качестве общей среды программирования. Это вполне возможно благодаря многочисленным вызовам POSIX, обертыванию вызовов уровня файловой системы/ОС, библиотек regexp и т. Д. Таким образом, я все же упрекаю ваше «if * all *, которое вы делаете, это статистика». –

15

Нет сомнений, что R - лучший язык для статистики, как говорит Дирк. Я просто хочу добавить несколько моментов к следующему:

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

Во-вторых, следует признать, что язык R - это радость для работы. Это мой основной язык, и, попробовав альтернативы, у меня есть no намерение отказаться от него в ближайшее время. Но у него также нет монополии на его способность программировать данные, и эта претензия может занять слишком много времени. Все языки Lisp и Functional сильны при программировании данных. Lisp, в конце концов, был получен из «программирования списков», и именно влияние Lisp на R делает язык тем, чем он является.

Есть члены сообщества R (например, Ross Ihaka), которые на самом деле просматривают Lisp как статистический язык будущего (см. Документ «назад к будущему» для справки) из-за некоторых глубоких проблем дизайна в R-язык (например, многопоточность).

Так что, хотя R, несомненно, лучший язык для статистических вычислений, я вижу некоторую ценность в знакомстве с другим языком, таким как OCaml, Haskell или (возможно) Clojure/Incanter.

5

Вы можете взглянуть на программу sage, которая представляет собой повторную реализацию интерпретатора python, которая позволяет вам называть разные языки программирования для статистики (R, matlab, октава и т. Д.) С использованием синтаксиса python.

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

Так что, помимо выбора языка программирования (я думаю, что другие люди уже ответили на ваш вопрос), вам также нужен синтаксис для определения конвейерных сценариев: вы можете сделать это с помощью программы «gnu/make» (например, читать this) или с этим sage, или есть другие решения.

+0

проверка орфографии: мэр -> майор – Tshepang

+0

исправлено, спасибо !! – dalloliogm

6

Из моего опыта, R является исключительно мощным языком в этих областях:

  1. Манипуляция и преобразование данных.

  2. Статистический анализ.

  3. Графика.

Но R отнюдь не является трюковым пони. Я также применил язык к задачам, которые полностью не соответствуют указанным выше категориям. Вот некоторые примеры:

  • Скрипт для оказания помощи в создании OSX универсальных двоичных кодов путем идентификации и сопоставления статических и динамических библиотек различных архитектур и затем запустить получившиеся группы через lipo.

  • Скрипты для очистки информации с веб-страниц.

  • Набор скриптов для создания привязками изображения, вырезанные изображения в Тайлсеты с помощью GDAL, образуют JSON манифест, описывающий вывод и загрузить результат на веб-сайт для непосредственного отображения на OpenLayers.

Моя любимая часть, используя R частота, с которой я получаю сказать:

Вау! Есть пакет, который делает ЭТО ?!

2

также, как я бы +1 для R. Это может быть не так легко обрабатывать, как STATA или даже SPSS, в частности, для не-программистов. Хотя я думаю, что средний stackoverflower - это скорее программист, чем я.

Это, как говорится, я хотел бы дать краткий обзор, потому что я видел несколько статистических пакетов от пользователей (экономисты (точка зрения.

STATA по-прежнему является выбором для большинства экономистов, и в действительности у него есть некоторые плюсы. Графический интерфейс STATA помогает сохранять нагрузку на опции и статистические функции. Кроме того, STATA представляет собой только пакет, в котором есть список рассылки, который по крайней мере приближается к эталонному этапу: единственный в своем роде список рассылки R. Еще можно написать сложные файлы .do или загрузить некоторые из Интернета. STATA может быть не так близко к языку программирования, как R, но по-прежнему предлагает хороший язык программирования для статистических целей. В зависимости от размера ваших наборов данных вы должны проверить, какую лицензию вам нужно.

Вы также можете использовать SPSS, который является еще более инструментом графического интерфейса пользователя, чем STATA, и является немного менее всеобъемлющим, например, для эконометрической работы, такой как модели TOBIT или панельные регрессии, в особенности модели дискретного выбора.

Есть также Eviews - к сожалению, я совсем забыл об этом и использовал его только для нескольких простых регрессий в моих исследованиях. Таким образом, я просто назову его здесь. То же самое касается GAUSS, который выглядит более математичным, чем остальная часть пакета. Недавно я слышал о Octave, который также более математичен.

Для моего личного использования R является голова и плечи выше всего остального. Иногда я соединяю его в Python или подключаю его к базам данных MySQL или PostgreSQL, который также хорошо работает. R действительно помогает вам изучать статистику, потому что вам нужно понять больше, чтобы что-то сделать, чем вам нужно было бы нажимать ваш путь через подобных SPSS. Хотя, если вам нужен графический интерфейс, вы можете попробовать RKward или рассмотреть возможность установки Komodo/Sciviews-R или Tinn-R на окна. Последние не являются графическими интерфейсами, но редакторы более или менее поддерживают код Highlight и предложения кода, которые также помогают сделать это. Farnsworth Эконометрика в R хорошо читается. Ах, и я не могу забыть упомянуть о заговоре. пакет ggplot2 от Хэдли Уикхэма находится совсем рядом. Лучший способ создать графику, если вы не нуждаетесь в их интерактивности. В конце дня R действительно подходит к наиболее гибкому пакету: вы даже можете установить его на веб-сервере и создать приятный веб-интерфейс - небо - это предел.

+0

используйте python для синтаксического анализа и напишите свой материал в локальной базе данных SQL, создайте несколько полезных представлений, а затем, например, используйте RMySQL. Это стоит суеты! –

0

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

Смежные вопросы