Когда дело доходит до сложных проектов по науке о данных, многие выбирают R. Почему? Потому что решать сложные задачи в R проще, чем на других сопоставимых платформах.

К сожалению, это не относится к выполнению более простых задач, которые, я бы сказал, довольно сложны в базе R. Отсюда и название — R: простой для сложных задач, сложный для простых задач.

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

Конечно, некоторые пользовательские пакеты, такие как psyche, могут генерировать описательную статистику в табличном формате. Однако для этого требуется продвинутое знание R и возможностей, скрытых в специализированных пакетах, число которых сейчас превышает 12 000 (по состоянию на март 2018 года). Чтобы быть в курсе функциональных возможностей, встроенных в пользовательские пакеты, требуется много времени.

Кто-то может возразить, что команда summary в базе R — это вариант. Я скромно не согласен.

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

Преподаю бизнес-аналитику студентам бакалавриата и MBA. Хотя студенты, изучающие бизнес, должны знать статистику, они не учатся, чтобы стать статистиками. Их цель в жизни — быть информированными и опытными потребителями статистического анализа.

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

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

В следующих абзацах я проиллюстрирую проблему на примере и укажу пакет R, который создает простую таблицу описательной статистики.

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

данные(mtcars)
голова(mtcars)

Как указывалось ранее, для получения описательной статистики можно использовать команду summary.

резюме(mtcars)

Допустим, нужно создать описательную статистику, включая среднее значение, стандартное отклонение и количество наблюдений для следующих непрерывных переменных: миль на галлон, расход и л.с.. Можно использовать команду sapply и сгенерировать три статистики по отдельности, а затем объединить их с помощью команды cbind.

Следующая команда создаст вектор средних значений.

mean.cars ‹- with(mtcars, sapply(mtcars[c("mpg", "disp", "hp")], mean))

Обратите внимание, что приведенный выше синтаксис требует, чтобы кто-то, изучающий R, знал следующее:

  1. Либо прикрепить набор данных, либо использовать команду with, чтобы sapply мог распознавать переменные.

2. Знание подмножеств переменных в R

3. Знакомство с c для объединения переменных

4. Помните о заключении имен переменных в кавычки

Мы можем использовать аналогичный синтаксис для определения стандартного отклонения и количества наблюдений.

sd.cars ‹- with(mtcars, sapply(mtcars[c("mpg", "disp", "hp")], sd)); sd.cars
n.cars ‹- with(mtcars, sapply(mtcars[c("миль на галлон", "дисп", "л.с.")], длина)); н.автомобили

Обратите внимание, что пользователь должен знать, что команда для количества наблюдений — length, а для стандартного отклонения — sd.

Когда у нас есть три вектора, мы можем объединить их с помощью cbind, который создаст следующую таблицу.

cbind(n.cars, mean.cars, sd.cars)

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

round(cbind(n.cars, mean.cars, sd.cars),2)

Действительно, можно использовать пользовательскую функцию, чтобы сгенерировать то же самое с помощью одной команды. Увидеть ниже.

round(with(mtcars, t(sapply(mtcars[c("mpg", "disp", "hp")], function(x) c(n=length(x), avg=mean(x) , stdev=sd(x))))), 2)

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

Stargazer* — это пакет R, который упрощает эту задачу. Вот результат stargazer.

library(stargazer)
stargazer(mtcars[c("mpg", "disp", "hp")], type="text")

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

описание (миль на галлон, расход, л.с.)

* Главац, Марек (2015). stargazer: хорошо отформатированные таблицы регрессии и сводной статистики. Пакет R версии 5.2. http://CRAN.R-project.org/package=stargazer