Линейные модели в R
Кафедра Зоологии беспозвоночных, СПбГУ
Генеральная совокупность
Выборка
Характеризуется параметрами статистического распределения
Характеризуется описательными статистиками
Категориальные данные
орёл или решка
цвет радуги
Числовые дискретные (счётные)
оценка за экзамен
количество пластиковых пипеток в упаковке
Числовые непрерывные (мерные)
температура воздуха
рост
Медиана (Median)
Среднее значение (Mean)
Квантили (Quantiles)
Дисперсия (Variance)
Стандартное отклонение (Standard Deviation)
Предположим, мы занимаемся селекцией яблонь и хотим охарактеризовать урожай любимой яблони, на которую возлагаем большие надежды.
Наши данные в исходном виде выглядят примерно так:
Чтобы увидеть медиану, мы должны ранжировать, наш вектор по возрастанию:
В ранжированном ряду медиана расположена так, что слева и справа от нее находится равное число измерений.
Медиана находится в промежутке между значениями 9.1 и 9.2, т.е. 9.15
Представим, что наши измерения пострадали от неаккуратности. Допустим сотрудник, которому мы поручили измерять яблоки, измерил также арбуз и записал этот результат вместе со всеми остальными.
[1] 7.3 7.9 8.0 9.1 9.2 9.5 9.7 10.1 68.0
Что станет с медианой? Сильно ли она изменится?
Давайте для сравнения посмотрим на среднее.
Единственное наблюдение-выброс сильно повлияет на величину среднего значения.
Квантили — это значения, которые делят ряд наблюдений на равные части.
Они называются по-разному в зависимости от числа частей.
Примеры квантилей:
Квартиль — частный случай квантиля.
Квартили делят распределение на четыре равные части, каждая из которых включает по 25% значений.
Квартили можно найти при помощи функции quantile()
Функция quantile(x) без указания значений вероятностей (probs) покажет нам квартили, минимум и максимум.
5-number summary — удобное краткое описание данных.
Персентиль — это частный случай квантиля. Всего 99 персентилей, они делят ряд наблюдений на 100 частей.
Ничто не помешает нам узнать, например, какие значения отсекают 10% или 99% значений выборки. Подставим соответствующие аргументы:
geom_boxplot()Если в выборке есть выбросы (значения, отстоящие от границ “коробки” больше чем на 1.5 интерквартильных расстояния), то они будут изображены отдельными точками.
В морских сообществах встречаются два вида фильтраторов, один из которых любит селиться прямо на поверхности тела другого.
Tegella armifera — это вид-хозяин. Он может жить как сам по себе, так и вместе с симбионтом.
Loxosomella nordgardi — вид-симбионт. Он практически никогда не встречается в одиночестве.
Данные: Юта Тамберг
В файле diatome_count.csv дано количество диатомовых водорослей в желудках этих животных. Прочитаем эти данные и посмотрим на них:
В таблице 2 переменные:
sp — вид,count — число водорослей в желудке.В переменной sp есть три варианта значений:
Смотрим первые несколько строк:
sp count
1 host_free 10
2 host_free 0
3 host_free 1
4 host_free 0
5 host_free 2
6 host_free 0
Смотрим структуру:
Что это за случаи?
sp count
1 host_free 10
2 host_free 0
3 host_free 1
4 host_free 0
5 host_free 2
6 host_free 0
Ваша задача рассчитать 5-number summary для количества диатомовых в желудках хозяев и симбионтов (всех трех категорий).
# 5-number summary для хозяев без симбионтов
host_f <- diatoms$count[diatoms$sp == "host_free"]
quantile(host_f, na.rm = TRUE) 0% 25% 50% 75% 100%
0 1 4 8 12
# Для хозяев с симбионтами
host_s <- diatoms$count [diatoms$sp == "host_symbiont"]
quantile(host_s, na.rm = TRUE) 0% 25% 50% 75% 100%
0.00 0.25 4.50 8.00 20.00
# Для одиноких симбионтов
symbiont <- diatoms$count [diatoms$sp == "symbiont"]
quantile(symbiont, na.rm = TRUE) 0% 25% 50% 75% 100%
0 0 1 2 7
tapply() — одна из функций семейства *pply().
Функция tapply() берет вектор X и…
INDEXFUNКонвейерная обработка данных
library(dplyr)
diatoms %>%
group_by(sp) %>%
summarise(
Min_q0 = quantile(count, probs = 0, na.rm = TRUE),
q25 = quantile(count, probs = 0.25, na.rm = TRUE),
q50 = quantile(count, probs = 0.50, na.rm = TRUE),
q75 = quantile(count, probs = 0.75, na.rm = TRUE),
Max_q100 = quantile(count, probs = 1, na.rm = TRUE)
)# A tibble: 3 × 6
sp Min_q0 q25 q50 q75 Max_q100
<chr> <dbl> <dbl> <dbl> <dbl> <dbl>
1 host_free 0 1 4 8 12
2 host_symbiont 0 0.25 4.5 8 20
3 symbiont 0 0 1 2 7
library(dplyr)
library(tidyr)
diatoms %>%
group_by(sp) %>%
reframe(
quantile = names(quantile(count, na.rm = TRUE)),
value = quantile(count, na.rm = TRUE)
)# A tibble: 15 × 3
sp quantile value
<chr> <chr> <dbl>
1 host_free 0% 0
2 host_free 25% 1
3 host_free 50% 4
4 host_free 75% 8
5 host_free 100% 12
6 host_symbiont 0% 0
7 host_symbiont 25% 0.25
8 host_symbiont 50% 4.5
9 host_symbiont 75% 8
10 host_symbiont 100% 20
11 symbiont 0% 0
12 symbiont 25% 0
13 symbiont 50% 1
14 symbiont 75% 2
15 symbiont 100% 7
Обратите внимание, что на выходе получаем “длинный” формат.
library(dplyr)
library(tidyr)
diatoms %>%
group_by(sp) %>%
reframe(
quantile = names(quantile(count, na.rm = TRUE)),
value = quantile(count, na.rm = TRUE)
) %>%
pivot_wider(
names_from = quantile,
values_from = value
)# A tibble: 3 × 6
sp `0%` `25%` `50%` `75%` `100%`
<chr> <dbl> <dbl> <dbl> <dbl> <dbl>
1 host_free 0 1 4 8 12
2 host_symbiont 0 0.25 4.5 8 20
3 symbiont 0 0 1 2 7
Формат данных несколько сложен для человеческого глаза, зато очень подходит для ggplot.
Главный плюс (но так же и минус) связки медиана + квартили это ее независимость от формы распределения.
Будь оно симметричным или с хвостом, 5-number summary опишет, а боксплот нарисует его с минимумом искажений.
Но бывают случаи, когда приходится применять более специальные, но и более информативные характеристики.
Это непрерывное распределение, получаемое из мерных данных. Однако многие распределения других типов тоже могут приближаться к нормальному.
Внимание! Далеко не все типы данных могут быть описаны с помощью модели нормального распределения.
На оси Y может быть отложена относительная частота значений Х в эмпирическом распределении, или вероятность из теоретического распределения.
На оси Х отложены значения Х в интервале от 0 до 20, в действительности же кривая простирается от \(-\infty\) до \(+\infty\)
Площадь под кривой = 1. Интегрируя кривую на промежутке \((k,..,l)\), можно узнать вероятность встречи значений в этом промежутке \((x_k,...x_l)\).
Но нельзя рассчитать вероятность одного значения \(X = x_k\), так как это точка, и под ней нет площади.
Нормальных кривых бесконечно много, и их описывает формула всего с двумя параметрами \(\mu\) и \(\sigma\).
\[f(x) = \frac {1}{\sigma \sqrt{2 \pi}}\, e^{-\cfrac{(x-\mu)^2}{2\sigma^2}}\]
Достаточно знать значения этих двух параметров, чтобы восстановить или смоделировать любое нормальное распределение. И наоборот, если данные в выборке распределены нормально, то мы можем оценить параметры этого распределения.
\[\bar{x}=\frac{\sum{x_i}}{n}\]
Рассчитаем вручную и проверим:
К сожалению, мы не можем просто сложить все значения девиат и поделить их на объем выборки. Сумма девиат всегда будет равна нулю.
\[\begin{aligned} \sum{(x_i - \bar{x})} &= \sum x_i - \sum \bar x = \\ &= \sum x_i - n \bar x = \\ &= \sum x_i - n \cfrac{\sum x_i}{n} = 0 \end{aligned}\]
Избавиться от знака девиаты можно, возведя значение в квадрат.
\[SS = \sum{{(x_i - \bar{x})}^2} \ne 0\]
Но на что разделить \(SS\), чтобы получить меру усредненного отклонения значений от среднего?
Мы не можем делить на \(n\), поскольку отклонения от среднего \(x_i - \bar x\) не будут независимы.
Что это значит? Сумма отклонений всегда равна нулю \(\sum{(x_i - \bar{x})} = 0\).
Поэтому, если мы знаем \(\bar x\) и \(n - 1\) отклонений, то всегда сможем точно вычислить последнее отклонение.
\(n - 1\) — это число независимых значений (число степеней свободы — degrees of freedom).
Мы хотим охарактеризовать парметр \(\sigma^2\) через \(\sum (x_i - \bar{x})^2\)
тогда
\[ E\left[\frac{\sum (x_i - \bar{x})^2}{n}\right] = \sigma^2 \cdot \frac{n-1}{n} \]
Получаем смещенную оценку
\[ E\left[\frac{SS}{n-1}\right] = \frac{\sigma^2 (n-1)}{n-1} = \sigma^2 \]
Поэтому при усреднении \(SS\) нам надо делить на \(n-1\)
\[ \frac{SS}{n} \cdot \frac{n}{n-1} = \frac{SS}{n-1} \]
Если мы теперь поделим сумму квадратов на объем выборки минус 1, то получим дисперсию по этой выборке.
\[s^2=\frac{\sum{(x_i - \bar{x})^2}}{n - 1}= \frac{SS}{n - 1}\]
Дисперсию не получится нарисовать на графике, т.к. там используются не отклонения, а их квадраты.
Квадратный корень из дисперсии позволит вернуться к исходным единицам измерения
\[s = \sqrt{s^2} = \sqrt{\frac{\sum{(x_i - \bar{x})^2}}{n - 1}} = SD\]
Стандартное отклонение — это средняя величина отклонения, и ее уже можно изобразить на графике.
stat_summary()stat_summary() использует geom_pointrange()
точка — среднее, усы изображают \(\pm\) стандартное отклонение
mean_sdl() рассчитывает координаты точки и усов, ее аргумент mult = 1 показывает, сколько стандартных отклонений отложить
только вместе,
чувствительны к выбросам,
плохо работают с несимметричными распределениями.
Медиана и среднее дают сходные результаты, если выборка не содержит выбросов (сильно отличающихся от других наблюдений).
\[f(x) = \cfrac {1}{\sigma \sqrt{2 \pi}} \; e^{- \: \cfrac{(x-\mu)^2}{2\sigma^2}}\] - \(\mu\) — среднее значение
- \(\sigma\) — стандартное отклонение
- Это кратко записывается как \(x \sim N(\mu, \sigma)\).
\(-\infty < x < +\infty\).
Площадь под всей кривой \(= 1\).
Вероятность встречи значений из определенного промежутка можно узнать, проинтегрировав функцию распределения.
\[N(0, 1)\]
\[z = \frac{x - \mu}{\sigma}\]
После стандартизации любое нормальное распределение превращается в стандартное нормальное:
\[Z \sim N(0, 1)\]
Стандартизуйте вектор 1:5
Чему после стандартизации будет равно среднее?
Стандартное отклонение?
\[z_i=\frac{x_i - \bar{x}}{s}\]
Стандартизованная величина (Z-оценка) показывает, на сколько стандартных отклонений значение отличается от среднего
После стандартизации всегда:
Стандартизация приводит данные к безразмерной шкале, где всё измеряется в «стандартных отклонениях».
Это позволяет строить однотипный анализ для разнородных данных.
По оси \(X\) отложены квантили стандартного нормального распределения, по оси \(Y\) — квантили исходных данных.
Если \(x \sim N(\mu,\sigma)\), то квантили стандартизованного распределения будут подобны квантилям распределения “сырых” данных и точки лягут на прямую линию.
RВыполните по одному блоки кода (см. код к этой презентации).
Что вы можете сказать о свойствах распределений, изображенных на квантильных графиках?
Проверьте при помощи квантильного графика, подчиняются ли эти переменные нормальному распределению:
women)iris)lynx)'data.frame': 15 obs. of 2 variables:
$ height: num 58 59 60 61 62 63 64 65 66 67 ...
$ weight: num 115 117 120 123 126 129 132 135 139 142 ...
'data.frame': 150 obs. of 5 variables:
$ Sepal.Length: num 5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ...
$ Sepal.Width : num 3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ...
$ Petal.Length: num 1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ...
$ Petal.Width : num 0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ...
$ Species : Factor w/ 3 levels "setosa","versicolor",..: 1 1 1 1 1 1 1 1 1 1 ...
Time-Series [1:114] from 1821 to 1934: 269 321 585 871 1475 ...
В выборке улиток средний диаметр раковины 5 см со стандартным отклонением 1.5 см.
tres caracoles by Alberto Villen on Freeimages.com
В выборке улиток средний диаметр раковины 5 см со стандартным отклонением 1.5 см.
[1] 0.09121122
[1] 0.09121122
В выборке улиток средний диаметр раковины 5 см со стандартным отклонением 1.5 см.
В выборке улиток средний диаметр раковины 5 см со стандартным отклонением 1.5 см.
Средний рост 18-летних мужчин в России 174.7 см со стандартным отклонением 6.65 см. В пилоты берут только людей с ростом от 160 до 190 см (по приказу Минтранса).
Какова вероятность того, что случайно выбранный мужчина окажется ниже 160 см?
Какова вероятность того, что случайно выбранный мужчина окажется выше 190 см?
Какова доля мужчин, не подходящих по росту в пилоты, т.е. ниже 160 и выше 190 см?
Средний рост 18-летних мужчин в России 174.7 см со стандартным отклонением 6.65 см. В пилоты берут только с ростом от 160 до 190 см (по приказу Минтранса).
[1] 0.01353433
[1] 0.01353433
Средний рост 18-летних мужчин в России 174.7 см со стандартным отклонением 6.65 см. В пилоты берут только с ростом от 160 до 190 см (по приказу Минтранса).
Средний рост 18-летних мужчин в России 174.7 см со стандартным отклонением 6.65 см. В пилоты берут только с ростом от 160 до 190 см (по приказу Минтранса).
[1] 0.02423716
Средний рост девушек в 16 лет — 162.2 см со стандартным отклонением 6.0 см.
В пилоты берут только людей с ростом от 160 до 190 см (по приказу Минтранса).
Какой процент девушек подходит по росту в пилоты?
Средний рост девушек в 16 лет — 162.2 см со стандартным отклонением 6.0 см.
В пилоты берут только людей с ростом от 160 до 190 см (по приказу Минтранса).
Только 64.3 % девушек пройдут в пилоты по росту.
Предположим, что вес новорожденных нормально распределен со средним значением 3500 г и стандартным отклонением 600 г.
Предположим, что вес новорожденных нормально распределен со средним значением 3500 г и стандартным отклонением 600 г.
69.1 % детей рождается с весом больше 3200г.
Предположим, что вес новорожденных нормально распределен со средним значением 3500 г и стандартным отклонением 600 г.
90.4 % детей рождается с весом в пределах 2500-4500г.