Описательные статистики

Рассмотрим небольшую выборку из шести наблюдений и сохраним её в вектор v. Посмотрим на описательные статистики по этой выборке:

v <- c(2, 3, 5, 5, 7, 8) 
summary(v)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##     2.0     3.5     5.0     5.0     6.5     8.0

Минимальное значение 2, максимальное 8. Среднее значение равно 5, медиана тоже равна 5. Нижний квартиль равен 3.5 (1st Qu.), верхний квартиль равен 6.5 (3rd Qu.). Проинтерпретируем:

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

Теперь посмотрим, как можно вызвать отдельные описательные статистики (по вектору или по столбцу в таблице).

min(v)  # минимум
## [1] 2
max(v) # максимум
## [1] 8
vrange <- max(v) - min(v)  # размах
vrange
## [1] 6
mean(v) # среднее
## [1] 5
median(v) # медиана
## [1] 5

Квантили заслуживают отдельного внимания. Для начала найдём квантиль уровня 0.2: укажем название вектора и через запятую — уровень квантиля.

quantile(v, 0.2)
## 20% 
##   3

Получается, 20% наблюдений в выборке не превышают значение 3. Внутри функции quantile() можно указать сразу несколько уровней, только для этого нужно оформить их в виде вектора:

quantile(v, c(0.1, 0.2, 0.3)) 
## 10% 20% 30% 
## 2.5 3.0 4.0

Получили квантили уровней 0.1, 0.2, 0.3. Если уровней много, и все они отличаются друг от друга на одно и то же число, то их можно задать в виде последовательности. Для этого понадобится функция seq() (от английского sequence), внутри которой нужно указать начало отрезка, конец отрезка и шаг, с которым мы по этому отрезку движемся:

quantile(v, seq(from=0, to=1, by=0.1)) # от 0 до 1 с шагом 0.1
##   0%  10%  20%  30%  40%  50%  60%  70%  80%  90% 100% 
##  2.0  2.5  3.0  4.0  5.0  5.0  5.0  6.0  7.0  7.5  8.0

То, что мы получили выше — это процентили (квантили, только уровень указан в процентах), а если говорить ещё точнее, децили, то есть процентили, уровень которых делится на 10: 10%, 20%, 30%, и так далее. Теперь вернёмся к квартилям.

quantile(v, c(0.25, 0.75)) # нижний и верхний квартили
## 25% 75% 
## 3.5 6.5
quantile(v, 0.75) - quantile(v, 0.25)  # межквартильный размах
## 75% 
##   3
IQR(v) # межквартильный размах - готовая функция R
## [1] 3

Посчитаем выборочную дисперсию и стандартное отклонение:

var(v)  # variance - дисперсия
## [1] 5.2
sd(v) # standard deviation - стандартное отклонение
## [1] 2.280351

А сейчас перейдём к более красочным вещам — к графикам.

Гистограммы (histograms)

Чтобы строить более осмысленные графики, вернёмся к реальным данным и загрузим таблицу из файла Chile.csv с результатами опроса жителей Чили перед известным плебисцитом 1988 года.

Переменные в таблице:

Загрузим файл по ссылке — просто скопируем её и вставим в кавычках в функцию read.csv():

chile <- read.csv("http://math-info.hse.ru/f/2017-18/ps-ms/Chile.csv")

Удалим строки с пропущенными значениями (NA's) и сохраним изменения:

chile <- na.omit(chile)

Выведем описательные статистики по всем переменным (столбцам) в таблице:

summary(chile$income)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##    2500    7500   15000   34020   35000  200000

Для количественных переменных R выводит минимальное значение Min, максимальное значение (Max), выборочное среднее (Mean), медиану выборки (Median), нижний (1st Qu) и верхний (3rd Qu) квартили. Для качественных (текстовых, факторных) показателей R выводит частоты, сколько каких значений встречается в выборке.

Теперь построим простенькую гистограмму для переменной income (доход респондентов):

hist(chile$income)

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

hist(chile$income, col = "coral1")

Что мы можем сказать о распределении дохода по этой гистограмме? Во-первых, что распределение дохода не похоже на нормальное, у этого распределения есть длинный «хвост» справа. Другими словами, большинство респондентов имеет небольшой доход, сильно отличающийся от среднего, однако есть респонденты, у которых доход довольно высокий, около 150000 и выше. Во-вторых, респондентов, у которых доход достаточно большойй, немного.

Теперь давайте приведём график к приличному виду: добавим заголовок и подписи к осям.

# main - заголовок
# xlab - подпись для оси x
# ylab - подпись для оси y

hist(chile$income, col = "coral1", 
  main = "Доход респондентов", 
  xlab = "Доход",
  ylab = "Число респондентов")

Обратите внимание: все названия, так как они являются текстовыми, вводятся в кавычках.

Чему равен шаг гистограммы на графике выше? 20 тысячам, так как на отрезке от 0 до 50 тысяч помещаются два с половиной столбца одинаковой ширины. К сожалению, в базовом варианте гистограммы, создаваемой с помощью hist(), изменить величину шага вручную не так просто. Но зато есть опция breaks, которая приблизительно соответствует числу «перегородок», которые необходимо поставить, чтобы получить желаемое число столбцов. То есть, если мы хотим получить четыре столбца, нам потребуется три «перегородки»:

hist(chile$income, col = "coral1", 
  main = "Доход респондентов", 
  xlab = "Доход", 
  ylab = "Число респондентов",
  breaks = 3)