Как сравнение программного обеспечения со статистическим программированием/анализом?

Статистический анализ/программирование, написания кода. Будь то описательный или выведенный, вы пишете код, чтобы: импортировать данные, очищать его, анализировать и компилировать отчет.

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

Этот процесс "Статистического анализа" чувствует для меня как "программирование". Но я не уверен, что он чувствует то же самое для всех.

Из Статья в Википедии о разработке программного обеспечения:

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

В соответствии с этим упрощенным определением (и моим скромным мнением) это звучит очень похоже на построение статистического анализа. Но я думаю, что это не так просто.

Что приводит меня к моему вопросу: какие различия вы можете наметить между двумя действиями?

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

Этот вопрос пришел ко мне из следующих тем:

Ответ 1

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

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

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

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

Я бы предположил, что любой статистик выиграет от чтения книги, например "Code Complete" (посмотрите другие топ-книги в этом сообщении): чем больше вы организовываете свой анализ, тем больше вероятность успеха.

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

Ответ 2

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

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

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

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

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

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

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

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

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

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

Ответ 3

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

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