Как разработка программного обеспечения соответствует статистическому программированию/анализу? [закрытый]

14
задан Community 23 May 2017 в 12:18
поделиться

3 ответа

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

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

1
ответ дан 1 December 2019 в 13:47
поделиться

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

Определенный процент статистического анализа может быть выполнен с использованием Excel или методом «укажи и щелкни» с использованием SPSS, SAS, Matlab или S-Plus (например). Более сложный анализ, выполненный с использованием одной из этих программ (или R), который включает в себя программирование, явно является формой разработки программного обеспечения. И этот вид статистических вычислений может принести огромную пользу, если следовать всем лучшим методам разработки программного обеспечения: контроль версий, документация, план проекта, документ о содержании, отслеживание ошибок / контроль изменений и т. Д.

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

  • Исследовательский анализ данных должен следовать итеративной методологии, такой как методология Agile . В этом случае, когда вы не знаете, какие шаги необходимо предпринять заранее, очень важно использовать адаптивную и саморефлексивную методологию разработки.
  • Более обычный вид анализа (например, ежегодное государственное обследование, такое как перепись) мог бы следовать более традиционной методологии, такой как водопад подход, поскольку он будет следовать очень четкому набору шагов, которые в основном известно заранее.

Я бы посоветовал любому статистику прочитать такую ​​книгу, как «Код завершен» (посмотрите другие популярные книги в этом посте ): тем более организованным вы являетесь ваш анализ, тем больше вероятность успеха.

Статистический анализ в некотором смысле требует даже больше передовых методов управления версиями и документации, чем другое программирование. Если ваша программа просто обслуживает некоторые бизнес-потребности, то используемый алгоритм или программное обеспечение действительно имеют второстепенное значение, если программа функционирует так, как того требуют спецификации. С другой стороны, для научных и статистических вычислений точность и воспроизводимость имеют первостепенное значение. Это один из основных акцентов Джона Чемберса (создателя языка S) в «Программное обеспечение для анализа данных» . Это еще одна причина добавить грамотное программирование (например, с помощью Sweave ) в качестве важного инструмента в наборе статистиков.

12
ответ дан 1 December 2019 в 13:47
поделиться

Возможно, общим знаменателем является "решение проблем".

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

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

Вот пример. Наиболее устойчивое различие между этими двумя видами деятельности (разработка программного обеспечения и статистический анализ), вероятно, заключается в их соответствующих результатах, или результатах проекта. Например, в моей группе кто-то проводит статистический анализ результатов наших экспериментов с раздельными траекториями и факториальными экспериментами (например, по результатам t-теста определяет, является ли разница значительной, или тест следует продолжить). Этот анализ будет отправлен в отдел маркетинга, который будет использовать его для изменения веб-страниц Сайта с целью повышения конверсии. Вторая задача включает абстрагирование и частичную автоматизацию этих анализов, чтобы результаты можно было обрабатывать практически в реальном времени.

Для решения первой задачи мы назначим специалиста по статистике, для решения второй - программиста. Бизнес-проблема, которую мы пытаемся решить, одинакова для обеих задач, но для первой задачей является статистика, а для второй - проблемы статистики в основном решены, и основной задачей является программирование (ввод/вывод).

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

Например, python, язык разработки общего назначения, имеет привязку к R (RPy2), которая вместе с родным интерактивным интерпретатором (IDLE) существенно облегчает использование Python в статистическом анализе, и в то же время в разработке пакетов R наблюдается явная тенденция к разработке (веб-) приложений: R Bindings for Qt, gWidgetsWWW, и RApache - все пакеты R направлены на разработку клиентских или веб-приложений, и их первоначальный выпуск состоялся (я думаю) в течение последних 18 месяцев. Кроме того, по крайней мере с последнего квартала прошлого года я заметил, что в блогах все чаще появляются сообщения, презентации и т.д. на тему разработки веб-приложений на R.

Наконец, я думаю, не является ли ваш вопрос свидетельством растущей популярности R. Вот что я имею в виду. Десять лет назад, когда мой работодатель приобрел лицензию на сайт, я начал изучать и использовать один из основных продуктов для статистических вычислений (нет смысла говорить, какой именно, он начинается на "S"). Я нашел его неестественным и негибким. В отличие от Perl (который я использовал в то время), этот инструмент не был продолжением моего мозга (что не является необязательным атрибутом аналитического инструмента, для меня это более или менее его определение). Взаимодействие с этой системой было больше похоже на использование торгового автомата - я выбирал нужную мне статистическую функцию и затем ждал "выхода", который часто представлял собой впечатляющий набор впечатляющих полноцветных графиков и таблиц. Однако почти всегда я хотел изменить свои входные данные или использовать их для следующего аналитического шага. Это, казалось, требовало еще одного, отдельного похода к торговому автомату. Тот факт, что этот инструмент был контекстно-зависимым - т.е. он знал статистику, а Perl не знал, - не компенсировал неудобство взаимодействия. Статистический анализ, выполненный таким образом, никогда не спутаешь с разработкой программного обеспечения. (Опять же, это просто краткое изложение моего собственного опыта, я не утверждаю, что его можно абстрагировать. Это также не полемика против каких-либо (или всех) коммерческих платформ анализа данных - миллионы людей используют их, и они заработали миллиарды для тех, кто их создал, так что давайте предположим, что это мои собственные ограничения стали причиной неудачи сцепления.)

Я никогда не слышал о R примерно 18 месяцев назад, и обнаружил его только во время сканирования PyPI (веб-интерфейс репозитория внешних пакетов Python) на предмет статистических библиотек для Python. Там я наткнулся на RPy, которая казалась великолепной, но требовала зависимости под названием "R" (RPy, конечно, на самом деле просто набор привязок Python к R).

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

4
ответ дан 1 December 2019 в 13:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: