Практикум

Условие

  1. Откройте базу данных, с которой мы работали на прошлом занятии.

  2. Выведите описательные статистики для переменной оценки длины отрезка length. Проинтерпретируйте их.

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

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

  5. Постройте гистограмму для переменной оценки длины отрезка. По оси Y отложите значения плотности. Выберите подходящее количество делений. Похоже ли распределение на нормальное?

Решение

  1. Откроем базу.
df <- read.csv2("http://math-info.hse.ru/f/2018-19/psych-ms/data/psych_survey.csv")
  1. Выведем описательные статистики для переменной оценки длины отрезка.
summary(df$length)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
##    3.00   20.00   25.00   24.29   27.00   50.00       3

Минимальное значение – 3 см, максимальное – 50 см. Выборочное среднее составляет 24.29 см. Медиана равна 25 см, это значит, что половина респондентов предположили, что длина отрезка меньше 25 см. Среднее немного меньше, чем медиана. Это может значить, что у нас присутствует больше очень маленьких значений оценки отрезка, чем очень больших. Нижняя квартиль – 20 см: 25% респондентов оценили отрезок меньше чем в 20 см. Верхняя квартиль – 27 см: 75% респондентов оценили отрезок меньше чем в 27 см.

  1. Построим ящик с усами.
boxplot(df$length, ylab = "См", main = "Оценка длины отрезка",
        col = "plum")

На графике присутствуют нетипичные значения. Они отмечены точками. Попробуем исключить эти значения и переоценить описательные статистики.

Нам требуется расчитать границы нетипичных наблюдений.

upper_bound <- quantile(df$length, 0.75, na.rm = T)+1.5*IQR(df$length, na.rm = T)
upper_bound # верхняя граница 
##  75% 
## 37.5
lower_bound <- quantile(df$length, 0.25, na.rm = T)-1.5*IQR(df$length, na.rm = T)
lower_bound # нижняя граница 
## 25% 
## 9.5
df_no_outliers <- subset(df, length <= upper_bound & length >= lower_bound)
summary(df_no_outliers$length)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   11.70   20.00   25.00   24.06   26.75   35.00

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

  1. Построим ящики с усами для респондентов, выбравших разные любимые предметы. Для начала преобразуем переменную любимого предмета в факторную.
df$subject <- factor(df$subject, levels = c(1,2,3,4,5),
                     labels = c("Математика", "Биология", "РЯ", "ИЯ", "Ни один"))

boxplot(df$length~df$subject, 
        ylab = "См", 
        main = "Оценка длины отрезка",
        col = "plum")

  1. Построим гистограмму.
hist(df$length, breaks = 12, 
     freq = F,
     ylab = "Количество", xlab = "См", 
     main = "Оценка длины отрезка", col = "plum")

curve(dnorm(x, 
            mean = mean(df$length, na.rm = T),
            sd = sd(df$length, na.rm = T)),
      add = T)

Семинар

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

Познакомимся с удобной выдачей описательных статистик, предлагаемой в пакете psych. Этот пакет был написан учеными-психологами из Northwestern University и содержит большое количество специфических функций для психологических исследований. С описанием пакета можно познакомиться здесь. Вспомним, что сначала требуется скачать пакет:

install.packages("psych")

А затем открыть его внутри R:

library(psych)

Функция describe() позволяет выводить описательные статистики как для всей базы, так и для отдельных переменных. Для удобства я выведу описательные статисткии для переменной длины отрезка. Попробуйте вывести их для всей базы: обратите внимание, что факторные переменные, для которых описательные статистики не интерпретируются, помечаются звездочкой.

describe(df$length)
##    vars   n  mean   sd median trimmed  mad min max range skew kurtosis
## X1    1 120 24.29 7.31     25   24.23 7.41   3  50    47 0.07     1.95
##      se
## X1 0.67

Рассмотрим выдачу функции:

  • vars – номер переменной в выдаче;
  • n – количество непропущенных значений;
  • mean – выброчное среднее – среднее арифметическое;
  • sd – выборочная дисперсия;
  • median – выборочная медиана;
  • trimmed – усеченное среднее: среднее арифметическое по выборке, из которой изключены значения, меньшие 5-процентного квантиля и большие 95-процентного квантиля;
  • mad – медианное значение абсолютного отклонения от медианы (не рассматриваем);
  • min – минимальное значение в выборке;
  • max – максимальное значение в выборке;
  • range – разница между максимальным и минимальным значениями;
  • skew – коэффициент асимметрии или скошенности;
  • kurtosis – коэффициент эксцесса;
  • se – стандартная ошибка среднего: стандартное отклонение оценки среднего, рассчитанное по выборке \[se(\bar{x})=\frac{sd}{\sqrt{n}}\].

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

Для рассматриваемой переменной коэффициент асимметрии очень мал, что говорит о том, что у нас нет ярко выраженной асимметрии.

Пример


Коэффициент эксцесса. Этот показатель принимает значения от -3 до 3 и описывает, насколько высоким является пик распределения относительно нормального распределения. Положительные значения говорят о пике, который выше, чем пик нормального распределния. Отицательные значения – наоборот. Коэффициент эксцесса стандартного нормального распределения равен нулю.

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

Пакет psych также позволяет выводить описательные статистики, группируя наблюдения в выборке по некоторой факторной переменной. Для этого используется функция describeBy(var, group = group_var). Это значительно более удобно, чем создавать новые датафреймы для каждой подвыборки.

Выведем описательные статистики для рассматриваемой переменной отельно для девушей и юношей:

describeBy(df$length, group = df$gender)
## 
##  Descriptive statistics by group 
## group: female
##    vars  n  mean   sd median trimmed  mad min max range skew kurtosis   se
## X1    1 95 24.07 7.67     25   24.03 7.41   3  50    47 0.06     1.83 0.79
## -------------------------------------------------------- 
## group: male
##    vars  n  mean   sd median trimmed  mad  min max range skew kurtosis
## X1    1 22 25.01 6.13     25   24.75 3.34 11.7  40  28.3 0.45     0.46
##      se
## X1 1.31