Откройте базу данных, с которой мы работали на прошлом занятии.
Выведите описательные статистики для переменной оценки длины отрезка length. Проинтерпретируйте их.
Постройте ящик с усами для переменной оценки длины отрезка. Оформите график: подпишите оси и измените цвет ящика. Есть ли в этой переменной нетипичные значения? Если есть, исключите их из выборки и переоцените описательные статистики. Как изменились результаты?
Постройте ящики с усами для переменной оценки длины отрезка в зависимости от того, какой любимый предмет указал респондент. Оформите график: пропишите лейблы для группирующей переменной (подсказка: для этого нужно преобразовать переменную subject в факторную). Что Вы можете сказать о различиях между распределениями?
Постройте гистограмму для переменной оценки длины отрезка. По оси Y отложите значения плотности. Выберите подходящее количество делений. Похоже ли распределение на нормальное?
df <- read.csv2("http://math-info.hse.ru/f/2018-19/psych-ms/data/psych_survey.csv")
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 см.
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
Ожидаемо, что у нас изменились значения минимума и максимума в выборке. Но что более важно: у нас изменилась оценка выборочного среднего, но не изменилась оценка медианы. Это значит, что медиана более устойчивый показатель центральной тенденции, чем среднее.
df$subject <- factor(df$subject, levels = c(1,2,3,4,5),
labels = c("Математика", "Биология", "РЯ", "ИЯ", "Ни один"))
boxplot(df$length~df$subject,
ylab = "См",
main = "Оценка длины отрезка",
col = "plum")
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. Этот пакет был написан учеными-психологами из 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