Аналитики описывают, изучают и описывают данные для исследования.
Описательная статистика включает основные формулы и определения.
Анализ центра и разброса данных - важный аспект описательной статистики.
Визуализации для анализа центра и разброса данных также изучаются.
Описательная статистика важна для специалистов, работающих с данными.
Аналитики учатся выбирать подходящие метрики для описания данных.
Строят гистограммы разных типов для дискретных и непрерывных величин.
Оценивают разброс данных с помощью дисперсии и стандартного отклонения
Когда аналитики получают данные для исследования, они первым делом их описывают, изучают их характеристики и особенности. Эти процессы относятся к описательной статистике, с основами которой вы познакомитесь в этой теме.
Кроме основных формул и определений, вы узнаете, что такое анализ центра и разброса данных, как строить визуализации для них и многое другое. Эти знания вы сможете применять на практике и убедитесь, насколько описательная статистика важна для каждого специалиста, который работает с данными.
Вы научитесь
выбирать подходящие метрики для описания данных;
строить гистограммы разных типов как для дискретных, так и для непрерывных величин;
оценивать разброс данных с помощью дисперсии и стандартного отклонения.
Типы переменных
Кратко:
Переменные бывают категориальными (качественными) и количественными (числовыми).
Количественные переменные принимают числовые значения, категориальные - определяют номер или позицию из ограниченного набора значений.
Непрерывные переменные могут принимать любое численное значение, дискретные - только числовые значения из определенного набора.
Примеры непрерывных переменных: время на сайте, вес котика, размер обуви.
Примеры дискретных переменных: номер школы, группа крови, цвет светофора
Категориальные и количественные переменные
Из курса по предобработке данных вы знаете, что переменные бывают категориальными (их еще называют качественными) и количественными (числовыми).
Количественная переменная принимает числовые значения — за что и получила своё второе название. Числовым значением может быть количество проданных машин, время пребывания человека на сайте, прибыль компании за месяц.
Категориальные переменные, в свою очередь, не характеризуют величину численно, а определяют её номер или позицию из определённого набора значений. Таким образом, категориальные величины могут принимать значения только из некоторого ограниченного набора. Например, номер школы может принимать любое значение из набора номеров, которыми принято обозначать школы. Такой номер никак не характеризует школу и лишь определяет конкретное учебное заведение из общего набора. Например, № 4 в названии школы не означает, что она четвёртая по счёту или превосходит школу № 3 по какому-то показателю.
Другой пример — группа крови. Её значение не описывает кровь численно, а определяет конкретный тип крови из всего набора: 0 (I), A (II), B (III), AB (IV). Категориальные величины (в этом уроке «величины» — синоним «переменных») могут быть выражены не только числами, поэтому их и называют качественными. Например, цвет сигнала светофора — красный, жёлтый, зелёный — это тоже категориальная величина.
Выберите из списка только категориальные переменные.
Номер дома
Это категориальная величина. Несмотря на то что она выражена числом, категориальная величина никак не характеризует дом, а только показывает его номер в наборе домов.
Правильный ответ
Производитель автомобиля
Это категориальная величина. Может принимать значения: Hyundai, KIA, Lada, Ford, Mercedes-Benz или другие из ограниченного списка.
Непрерывные и дискретные переменные
И число проданных машин, и количество проведённого на сайте времени — примеры численных переменных. Но между ними есть серьёзное различие: время пребывания на сайте может принимать любое значение, тогда как число проданных машин может быть только целым.
Рассмотрим пример со временем на сайте. В зависимости от того, насколько точны вычисления, эта величина может принимать разные значения: 5 минут, 5 минут 13 секунд, 5 минут 13 секунд и 25 микросекунд и так далее. Аналогично с весом котика. В зависимости от точности весов он может весить 8 килограммов, 8 килограммов и 20 граммов, 8 килограммов и 156 миллиграммов. Таким образом, эта величина может принимать любое значение.
Переменные, которые могут принимать любое численное значение, называются непрерывными.
А вот число проданных машин не может принимать любое значение, поскольку невозможно продать 15.3 машины, то есть 15 целых машин и ещё кусочек 16-й. Таким образом, число проданных машин будет равно 15 или 16.
Переменные, которые могут принимать только числовые значения из определённого набора значений, называются дискретными. Дискретной величиной могут быть как целые, так и дробные числа.
Не путаться между дискретными и непрерывными переменными поможет простой тест.
Предположим, нужно проверить число новых студентов — это непрерывная или дискретная переменная? Возьмём некоторый интервал значений, в пределах которого может меняться эта переменная, например от 0 до 10. Выберем наугад любое значение из этого интервала, пусть будет число 6.387. Может ли число новых студентов равняться 6.387? Нет, как не может быть полтора землекопа в задаче из мультфильма «Страна невыученных уроков».
Таким образом, переменная является дискретной, если она не может принять любое значение. Переменная, которая может принять любое значение, является непрерывной.
Другой пример: размер мужской обуви — это непрерывная или дискретная переменная?
Согласно утверждённым в России стандартам, эта величина может принимать значения от 38 до 47. При этом не всем подходит обувь полного размера — его обозначают целым числом, и поэтому существуют «половинки» — обувь размера 41.5, 42.5 и так далее. Размер обуви может меняться в большую или меньшую сторону только на целое число или на 0.5. Это значит, что размера обуви со значением 42.7831 не существует. Таким образом, эта переменная может принимать не любое числовое значение, а лишь значение из определённого набора и, следовательно, является дискретной.
Правильный ответ
Скорость машины
Скорость машины может принимать различные значения в зависимости от того, как точно её измеряют. Поэтому эта величина непрерывная.
Правильный ответ
Уровень воды в море
Уровень воды в море может принимать различные значения в зависимости от того, как точно его измеряют. Поэтому это непрерывная величина.
Запомнить типы переменных легче всего на примере с котами:
Мода и медиана
Кратко:
Мода - наиболее часто встречающееся значение в наборе данных.
Медиана - делит набор данных на две равные части.
Мода хорошо подходит для дискретных переменных, но не всегда для непрерывных.
Медиана используется для непрерывных величин.
Для нечетного количества элементов медиана - центральный элемент в отсортированном наборе.
Для четного количества элементов медиана - среднее арифметическое двух центральных элементов.
В Python для нахождения моды и медианы можно использовать методы mode и median из библиотеки pandas
Мода
Когда аналитик данных определился с типом величины, его задача — описать её. Сделать это можно по-разному, в статистике же для описания некоторой величины используются два основных типа характеристик: характеристики положения и характеристики разброса. В этом уроке вы узнаете о некоторых характеристиках первого типа.
Характеристики положения описывают то, где находится условный центр набора данных. Первый и самый простой вариант описать центр некоторого набора данных — вычислить моду.
Мода — это значение, которое величина принимает наиболее часто.
Представим такой набор данных: 1, 4, 1, 6, 7, 1. Наиболее часто встречающееся значение в нём — 1. В наборе единица встречается трижды, остальные числа — по одному разу. Следовательно, мода равна 1.
Проведём это же вычисление с помощью Python. Чтобы вычислить моду, нужно воспользоваться методом mode из библиотеки pandas:
import pandas as pd
a = pd.Series([1, 4, 1, 6, 7, 1])
mode = a.mode()[0]
print(f'Мода набора данных равна {mode}')
Метод mode возвращает набор данных типа pd.Series, в котором лежат самые часто встречающиеся элементы. В данном случае мода — лишь одно число 1, поэтому мы взяли только нулевой элемент pd.Series. Иногда в наборе данных может быть несколько мод, поскольку количество самых часто встречающихся элементов в нём больше одного. Например, в наборе данных 2, 1, 2, 2, 1, 1, 7, 5 две моды — 1 и 2. Каждое из этих значений в наборе встречается чаще всего — по три раза.
Мода набора данных 2, 4, 1, 4, 5, 3 равна 4.
Значение 44 действительно встречается чаще всего в этом наборе.
Правильный ответ
Мода — это самое часто встречающееся значение из набора данных.
Модой набора данных будет наиболее часто встречающее в нём значение.
Мода набора данных 2, 4, 1, 4, 5, 3 равна 1.
Медиана
Мода позволяет определить самые частые значения в наборе данных, но у этой характеристики есть некоторые ограничения. Так, она отлично описывает дискретные переменные, но не всегда достаточно хорошо характеризует непрерывные величины.
Например: пусть набор данных описывает время (в минутах), которое пользователь провёл на сайте: 2.3, 2.1, 2.4, 2.5, 2. В этом случае мода — каждое значение, так как все они встречаются по одному разу. Поэтому для непрерывных величин чаще, чем мода, используется другая характеристика — медиана.
Представьте некоторый набор данных. Медиана — значение, которое делит его на две равные части: в первой части находятся значения, которые меньше самой медианы, во второй — значения, которые больше неё. Так, медиана набора данных 1, 2, 3, 4, 5, 6, 7 равна 4. Она делит набор данных на две равные части: в первой находятся три числа, столько же во второй. Первые три числа меньше 4, следующие три — больше.
Как вычислить медиану:
Если число элементов в наборе данных нечётно, то медиана — это центральный элемент в отсортированном наборе данных.
Если число элементов в наборе данных чётно, то медианой может служить любое число между двумя центральными элементами в отсортированном наборе данных. Так половина всех значений окажется больше, а половина — меньше. Принято брать среднее арифметическое между ними.
Разберём на примере с набором данных, который описывает время пользователя на сайте: 2.3, 2.1, 2.4, 2.5, 2. Чтобы вычислить медиану, нужно отсортировать исходный набор по возрастанию: 2, 2.1, 2.3, 2.4, 2.5. Поскольку количество значений в этом наборе нечётно, медианой в нём будет центральный элемент — 2.3.
Если число элементов в наборе чётное, медиана равна среднему арифметическому двух центральных элементов. Рассмотрим на том же примере. Добавим в имеющийся набор данных значение 1.9, чтобы количество элементов стало чётным. Возьмём отсортированный набор 1.9, 2, 2.1, 2.3, 2.4, 2.5 и найдём для него медиану. Если в наборе чётное количество элементов, медианой будет любое число между двумя центральными элементами — 2.1 и 2.3 в этом примере. Принято в качестве медианы брать среднее этих двух элементов, а значит, рассчитываться она будет так: 2.1+2.32=4.42=2.2.
Правильный ответ
Медиана набора данных 10, 13, 9, 19.4, 20 равна 13.
В наборе нечётное количество элементов, а значит, медиана равна центральному элементу — 13.
Правильный ответ
Медиана набора данных 5, 4, 3, 4 равна 4.
Так как в наборе чётное количество элементов, его медиана будет равна среднему арифметическому двух центральных элементов, в примере это 4 и 4. Тогда медиана этого набора равна: 4+42=82=4.
Проверим с помощью Python, нет ли ошибок в расчёте медианы для примеров выше. Чтобы найти медиану некоторого набора данных, нужно воспользоваться методом median:
import pandas as pd
first = pd.Series([2.3, 2.1, 2.4, 2.5, 2])
print('Медиана исходного набора данных равна', first.median())
second = pd.Series([2.3, 2.1, 2.4, 2.5, 2, 1.9])
print('Медиана дополненного набора данных равна', second.median())
Результаты показывают, что ошибок нет.
Задание 1
Найдите моду и медиану приведённого ниже набора данных.
import pandas as pd
data = pd.Series([1, 1, 2, 3, 2, 1, 4])
# напишите ваш код здесь
data_median = data.median()
# напишите ваш код здесь
data_mode = data.mode()[0]
print(f'Мода набора данных: {data_mode}. Медиана набора данных: {data_median}')
Для нахождения среднего арифметического нужно сложить все элементы и разделить на количество элементов.
Среднее арифметическое может быть вычислено с помощью функции mean() из библиотеки pandas.
Выбор характеристики положения зависит от конкретного набора данных.
Гистограмма помогает определить наиболее точную характеристику положения.
Медиана наиболее точно отображает центр набора данных при наличии заметных выбросов.
Среднее арифметическое наиболее точно отображает центр набора данных при отсутствии заметных выбросов
Среднее арифметическое
В прошлом уроке вы познакомились с некоторыми характеристиками положения — модой и медианой. Их вычисляют, исходя из структуры набора данных, поэтому второе название этих характеристик — структурные.
Кроме них, есть ещё алгебраические характеристики положения. Их вычисляют с помощью алгебраических операций над элементами набора данных. Пример такой характеристики — уже известное вам среднее арифметическое.
Чтобы найти среднее арифметическое набора, нужно сложить все его элементы и разделить полученную сумму на количество этих элементов.
Возьмём набор значений, который описывает количество новых подписчиков сообщества в соцсети: 2, 3, 1, 5, 1. Чтобы вычислить среднее арифметическое этого набора, нужно сложить все значения и разделить получившуюся сумму на их количество: (2+3+1+5+1)/5=12/5=2.4.
Таким образом, среднее арифметическое набора 2,3,1,5,1 равно 2.4.
Выберите все верные утверждения.
Правильный ответ
Среднее арифметическое набора данных 2, 3, 1, 2 равно 2.
Чтобы найти среднее арифметическое, нужно сложить все значения и разделить полученную сумму на количество этих значений.
Правильный ответ
Среднее арифметическое набора данных 1, 5, 10, 0 равно 4.
Чтобы найти среднее арифметическое, нужно сложить все значения и разделить полученную сумму на количество этих значений.
На практике как для вычисления среднего значения, так и для подсчёта моды и медианы, пользуются готовым методом из библиотек. Например, mean() из библиотеки pandas. Используя Python, вычислим среднее арифметическое для примера выше.
import pandas as pd
data = pd.Series([2, 3, 1, 5, 1])
print('Среднее арифметическое набора данных равно', data.mean())
Таким образом, ошибки в вычислениях нет. Осталось закрепить теорию на практике.
Задание 1
Найдите среднее значение полученного набора данных.
import pandas as pd
data = pd.Series([2.3, 2.1, 2.4, 2.5, 2])
# напишите ваш код здесь
mean = data.mean()
print(mean)
Выбор характеристики положения
Выбор характеристики положения (мода, медиана, среднее арифметическое), которая точнее всего отражает центр, зависит от конкретного набора данных. В предыдущем курсе вы узнали, что такое гистограммы и научились строить их в Python с помощью метода hist(). Воспользуемся этим методом, чтобы построить гистограмму. Она поможет понять, какая характеристика положения нужна для описания такого набора данных: 1,2,3,4,5,6,7,8,9,9,10,10,10.
Теперь вычислим в Python для этого набора данных все известные вам характеристики положения: моду, медиану и среднее арифметическое.
import pandas as pd
data = pd.Series([1, 2, 3, 4, 5, 6, 7, 8, 9, 9, 10, 10, 10, 10])
print('Мода набора данных равна', data.mode()[0])
print('Медиана исходного набора данных равна', data.median())
print('Среднее арифметическое набора данных равно', data.mean())
Результат
Мода набора данных равна 10
Медиана исходного набора данных равна 7.5
Среднее арифметическое набора данных равно 6.714285714285714
Гистограмма демонстрирует, как распределены значения в наборе данных. Сопоставим график с полученными характеристиками. Судя по результатам, центр набора данных наиболее точно показывает медиана, среднее арифметическое отображает его чуть хуже, а мода показывает «вершину» гистограммы. Исходя из этого, можно сделать вывод, что в случае заметных выбросов — значений, которые слишком удалённы от остальных значений в наборе данных, наиболее высокой точностью обладает медиана.
Вычислим для этого набора данных известные вам характеристики положения.
import pandas as pd
data = pd.Series([1, 1, 1, 1, 2, 2, 2, 3, 3, 4, 5, 6, 7, 8, 8, 9, 9, 9, 10, 10, 10, 10, 10, 10])
print('Мода набора данных равна', data.mode()[0])
print('Медиана исходного набора данных равна', data.median())
print('Среднее арифметическое набора данных равно', data.mean())
Результат
Мода набора данных равна 10
Медиана исходного набора данных равна 6.5
Среднее арифметическое набора данных равно 5.875
Как видно по результатам, в этом случае центр лучше показало среднее арифметическое, медиана же показала себя менее точно. Исходя из этого, можно сделать вывод, что в случае отсутствия заметных выбросов на гистограмме, наиболее высокой точностью обладает среднее арифметическое. Мода используется для демонстрации «вершины» гистограммы, а не центральной тенденции.
Запомнить, какими бывают характеристики положения, вам поможет схема:
Дисперсия и стандартное отклонение
Кратко:
Данные разбросаны вокруг центра набора данных.
Дисперсия и стандартное отклонение помогают описать разброс данных.
Дисперсия: средняя сумма квадратов отклонений от центра.
Стандартное отклонение: корень из дисперсии.
Формула дисперсии: сумма квадратов отклонений от среднего.
Стандартное отклонение удобно для описания разброса в той же единице измерения.
В Python дисперсию называют var, стандартное отклонение - std.
Разброс данных
В прошлых уроках вы познакомились с характеристиками положения: структурными (модой и медианой) и алгебраическими (средним арифметическим значением). Они помогают описать центр набора данных. Но при работе с данными, кроме определения центра набора, важно понимать и то, насколько сильно эти данные разбросаны вокруг выделенного центра.
Допустим, вы хотите приобрести компанию и выбираете между «Компанией А» и «Компанией Б». Вы намерены купить прибыльное предприятие, и поэтому вам нужно узнать средний доход обеих компаний в месяц. Оказалось, что они примерно равны: средний доход «Компании А» — 50.0 тыс. рублей, «Компании Б» — 49.9 тыс. рублей.
Несмотря на то, что средние значения и того, и другого набора данных равны, они совершенно по-разному разбросаны от центра. Первый график показывает, что «Компания А» довольно часто теряет деньги, но также часто зарабатывает большие суммы, тогда как «Компания Б» довольно стабильно зарабатывает, но её доходы значительно ниже, чем у «Компании А».
Какую компанию выбрать, зависит от ваших целей и склонности к риску, но без знания разброса вы бы не учли, что, несмотря на одинаковый доход, компании по-разному зарабатывают деньги. Именно поэтому важно знать не только то, как определить центр набора данных, но и его разброс, то есть то, насколько значения этого набора отклоняются от его центра.
Правильный ответ
Два набора данных нельзя сравнить друг с другом, имея только представление о средних значениях обоих массивов.
Среднее значение — один из способов описать центр набора данных. Но средние значения двух абсолютно разных наборов данных могут совпадать. Для того чтобы корректно сравнивать два набора, нужно знать ещё и их разбросы.
Для описания разброса, как и для описания центра, используются структурные и алгебраические характеристики. В этом уроке речь идёт об алгебраических величинах, описывающих разброс данных — дисперсии и стандартном отклонении.
Дисперсия
Самой простой способ описать разброс данных — найти среднюю сумму отклонений всех значений от полученного ранее центра. Рассмотрим на примере. Есть некоторый набор данных: 1, 2, 2, 3, 4. Вычислим среднее арифметическое этого набора данных:
(1+2+2+3+4)/5=12/5=2.4.
Теперь вычислим среднюю сумму отклонений каждого элемента от этого центра. Чтобы найти отклонение значения от центра, вычтем из каждой величины среднее арифметическое:
(1−2.4)+(2−2.4)+(2−2.4)+(3−2.4)+(4−2.4)=0
В результате получилось 0. Такая операция приведёт нас к 0 для любого набора данных, и доказать это можно математически. Почему так получилось и как описывать разброс, если средняя сумма отклонений всех значений равна 0?
В этом примере отклонение каждого элемента от центра учитывалось со знаком, и в итоге все отклонения «обнулили» друг друга. Чтобы решить эту проблему, нужно избавиться от знака отклонений. Как это сделать? Взять отклонение по модулю или возвести отклонение в квадрат.
Модуль числа — это функция, которая всегда возвращает положительное число. Отрицательное число модуль меняет на противоположное: ∣−5∣=5, а положительное оставляет без изменений, например: ∣5∣=5.
Вариант с модулем хорошо работает в теории и плохо на практике, так как вычисление модуля — не арифметическая, а логическая операция — надо проверить больше ли 0 число, над которым производится операция. Это приводит к тому, что для него достаточно сложно определяются другие математические величины.
Возведение в квадрат — это вычислительная операция, что делает её проще для математиков, а значит, и предпочтительнее для нас. В результате мы получим величину, которая равна среднему суммы квадратов отклонений набора данных . Такая величина называется дисперсией.
Дисперсияs^2 для набора данных из nn элементов: x1, x2, …, xn вычисляется по формуле:
s^2=1/n∑i=1n(xi−x‾)^2
где ‾x‾ — это среднее значение набора данных x1, x2, …, xn.. Знак Σ (произносится как «сигма») означает суммирование выражений (xi−‾x‾)^2 для всех значений i от 1 до n. Из-за изменения значений i от 1 до n, выражение xi принимает поочерёдно все значения выборки.
На первый взгляд формула выглядит достаточно страшно, но всё станет понятно, если разобрать её на примере.
Вернёмся к набору данных, который приводили выше: 1, 2, 2, 3, 4 со средним значением 2.4. Число элементов n=5, среднее значение ‾x‾=2.4, а сумма выражений будет расписана так:
Подставим все значения в формулу, и тогда дисперсия будет равна:
s^2=1/5∑(xi−‾x‾)^2=1/5⋅5.2=1.04
Правильный ответ
Дисперсия используется для описания среднего расстояния между всеми элементами и центром набора данных.
Стандартное отклонение
Если присмотреться к формуле дисперсии, может возникнуть вопрос: «Почему дисперсия обозначается величиной s^2? Кто такая эта s?».
Дело в том, что дисперсия обладает одним серьёзным недостатком: если набор значений исчисляется в некоторых единицах измерения (например, рублях), то дисперсия будет равна квадрату этих единиц измерения (рубли^2). Но объяснить, что это такое рубли^2, достаточно сложно. Тем более иметь разброс в той же единице измерения, в которой измеряется исходная величина, достаточно удобно и логично. Поэтому используется ещё одна дополнительная величина, описывающая разброс, — стандартное отклонение.
Стандартное отклонение для выборки x1, x2, …, xn — это корень из дисперсии набора данных:
s=(s^2)**0.5
.
где ‾x‾ — это среднее значение набора данных x1, x2, …, xn. Знак Σ («большая сигма») означает суммирование выражений (xi−‾x‾)^2 для всех значений i от 1 до n. Из-за изменения значений i от 1 до n, выражение xi принимает поочерёдно все значения выборки.
Разберёмся с формулой на примере уже знакомого вам набора данных: 1, 2, 2, 3, 4 со средним значением 2.4, с числом элементов n=5, средним значением ‾x‾=2.4 и дисперсией 1.04. Подставим значения в формулу, чтобы посчитать стандартное отклонение:
s=s^2**0.5=1.04**0.5=1.0198
Благодаря тому, что мы взяли корень из дисперсии, единицы измерения вернулись на место, и теперь мы опять можем оперировать той единицей измерения, которой обладал исходный набор данных.
Правильный ответ
Стандартное отклонение обладает такими же единицами измерения, как и исходный набор данных.
Так как стандартное отклонение равно корню из дисперсии, то оно обладает такими же единицами измерения, как и исходный набор данных.
Теперь разберёмся, как считать дисперсию с помощью Python. Дисперсию чаще всего называют переменной var (от англ. variance — «дисперсия»).
import pandas as pd
data = pd.Series([1, 2, 3, 4, 5, 6])
mean = data.mean()
var = 0
for i in data:
var += (i - mean) * (i - mean)
var /= len(data)
Результат
2.9166666666666665
Стандартное отклонение называют std (от англ. standard deviation — «стандартное отклонение»).
import pandas as pd
data = pd.Series([1, 2, 3, 4, 5, 6])
mean = data.mean()
var = 0
for i in data:
var += (i - mean) * (i - mean)
var /= len(data)
std = var**0.5 # извлекаем корень
print(std)
Квартили и процентили
Кратко:
Размах - это разница между максимальным и минимальным значениями набора данных. Размах достаточно хорошо описывает общий разброс данных, но имеет недостаток - большую чувствительность к выбросам. Для более точного описания разброса данных используется межквартильный размах - размах половины значений, которые находятся вокруг медианы. Для вычисления межквартильного размаха нужно разделить полученный набор данных на четыре равные части и вычислить медиану каждой из них. Процентиль - это значение из набора данных, меньше которого ровно p% элементов всего набора данных. Процентили нужны в случаях, когда нужно найти значение из набора данных, которое отделяет определённую часть всего набора. В NumPy вычисление процентиля происходит с использованием интерполяции, что делает его более точным.
Размах
В прошлом уроке вы познакомились с алгебраическими характеристиками разброса данных — дисперсией и стандартным отклонением. В этом уроке вы изучите структурные характеристики разброса данных. Первая, с которой вы познакомитесь, называется размах.
Размах набора данных — это разница между максимальным и минимальным значениями набора данных.
Как следует из определения, чтобы вычислить размах набора данных, из максимального элемента набора данных нужно вычесть минимальный элемент. Рассмотрим на примере: имеется набор данных 3, 1, 2, 5 тогда его размах равен: 5−1=4
Размах достаточно хорошо описывает общий разброс данных, тогда как дисперсия показывает средний разброс, поскольку дисперсия используется для описания среднего расстояния между центром и всеми элементами набора данных.
Чтобы рассчитать размах в Python, достаточно двух методов из библиотеки pandas: min() — минимум и max() — максимум.
import pandas as pd
x = pd.Series([1, 2, 3, 4, 5, 6, 7, 8]) # набор данных
range_value = x.max() - x.min() # размах
print(range_value)
Результат
7
Определите, чему равен размах набора данных 17, 4, 4, 1, 7, 5, 8, 6, 15, 3. Выберите правильный ответ среди предложенных вариантов.
Правильный ответ
Размах равен 16
Чтобы правильно вычислить размах, нужно из максимального значения набора данных вычесть минимальное.
Межквартильный размах
Размах — это, конечно, хорошо, но у него есть существенный недостаток: большая чувствительность к выбросам. Если бы набор данных, который мы рассматриваем как пример, выглядел как 3, 1, 2, 5, 1000, то размах этого набора данных был бы 1000−1=999, что недостаточно хорошо характеризует полученный набор. Поэтому, чтобы точнее описать разброс данных, существует другая структурная характеристика — межквартильный размах.
Межквартильный размах — это размах половины значений набора данных, которые находятся вокруг медианы. Это ближайшие к медиане значения: 25 % меньше неё и 25 % больше.
Чтобы вычислить межквартильный размах, нужно разделить полученный набор данных на четыре части, в каждой из которых должно содержаться равное число элементов. Разберём на примере.
Имеется набор данных 3, 1, 2, 5, 6, 0, 10. Сначала вычислим медиану этого набора данных. Для этого отсортируем его по возрастанию: 0, 1, 2, 3, 5, 6, 10. Медиана этого набора данных равна 3.
Как вы помните, медиана делит набор данных на две равные части: в первой половине располагаются значения, которые численно меньше медианы, во второй — значения, которые численно больше неё. Теперь для каждой из этих двух частей нужно тоже вычислить медиану. Для первых 50 % набора данных ( 0, 1, 2 ) медиана равна 1, а для вторых 50 % — ( 5, 6, 10 ) медиана равна 6.
С помощью такого разделения мы разделили исходный набор данных на четыре равных по объёму набора данных: 0, 1, 2, 3, 5, 6, 10. Красным в этом наборе обозначены вычисленные медианы. Каждая из этих границ между наборами называется квартилем:
Значение, левее которого лежит ровно 25 % всего набора данных, называют первым квартилем — Q1.
Значение, правее которого лежит ровно 25 % всего набора данных, называют третьим квартилем — Q3.
Медиану иногда называют вторым квартилем (Q2), так как между ней и первым квартилем лежит ровно 25 % всего набора данных , а также между ней и третьим квартилем лежит ровно 25 % всего набора данных.
Обратите внимание: иногда в наборе данных нет значений, которые строго делят его на нужные части. В нашем наборе данных медиана одна — это 3. А вот разделить датасет на первую четверть всех значений и оставшиеся три четверти уже не так просто. Число значений в наборе не делится нацело на 4, и неясно, что подразумевать под четвертью всех значений. Пока мы поступили просто: из самого набора данных взяли значения, которые могут выступать в качестве первого и третьего квартилей. Это медианы двух «половинок», на которые медиана, она же второй квартиль, разделяет набор данных. Ниже покажем, как можно найти первый и третий квартили более аккуратно.
Как вычислить межквартильный размах
Чтобы найти межквартильный размах, нужно из третьего квартиля вычесть первый квартиль, именно поэтому размах называется межквартильным. Для примера выше межквартильный размах равен: 6−1=5.
В межквартильный размах попадает только половина всех значений набора данных — те, что ближе всего к медиане. Значит, четверть наименьших и четверть наибольших значений остаются за пределами межквартильного размаха. Это делает его устойчивым к выбросам: например, если заменить наибольшее значение этого набора данных на 1000, межквартильный размах останется тем же: 0, 1, 2, 3, 5, 6, 1000.
Правильный ответ
Межквартильный размах равен 44
Чтобы найти межквартильный размах, необходимо выполнить несколько операций. Сначала нужно отсортировать набор данных по возрастанию и определить его медиану. Затем нужно найти медиану первых 50 % набора данных выборки, это будет первый квартиль. После нужно найти медиану второй половины набора данных выборки — это третий квартиль. Чтобы найти межквартильный размах, нужно вычесть из третьего квартиля первый.
Теперь рассчитаем межквартильный размах в Python. Используем функцию iqr() из модуля stats библиотеки SciPy.
import pandas as pd
from scipy import stats # подключение модуля stats из библиотеки scipy
x = pd.Series([3, 1, 2, 5, 6, 0, 10])
iqr_value = stats.iqr(x) # межквартильный размах
print(iqr_value)
Результат
4.0
Вот незадача: код выдаёт 4, а выше мы выяснили, что межквартильный размах для этого набора данных равен 5. Кто ошибся: мы или Python? На самом деле все правы: мы использовали более простой алгоритм, выбирая квартили из значений набора данных, а функция stats.iqr() считает квартили, — а значит, и межквартильный размах — с интерполяцией. Ниже расскажем, что это, а также введём новое понятие — процентиль.
Процентили
Ещё в анализе данных для описания разброса набора данных часто используется величина, которая называется процентилем:
Процентилем некоторого уровня (p-м процентилем) называют значение из набора данных, меньше которого ровно p % элементов всего набора данных.
Судя по определению, квартили — это частные случаи процентиля. Поскольку первый квартиль — это значение, левее которого лежит ровно 25 % всего набора данных, то первый квартиль также можно называть 25-м процентилем. Аналогично медиана — это 50-й процентиль, а третий квартиль — это 75-й процентиль.
Процентили нужны в случаях, когда нужно найти значение из набора данных, которое отделяет определённую часть всего набора. Например, если нужно найти «возраст сотрудников компании, меньше которого ровно 33 % всех сотрудников». Именно такая универсальность и делает процентиль мощным инструментом в руках любого математика.
Выбор процентиля из набора данных
Расскажем, как найти нужный процентиль в наборе данных: 1,5,3,7,10,17,20,12,9,30. Например, найдём 80-й процентиль.
Для начала отсортируем значения по возрастанию: 1,3,5,7,9,10,12,17,20,30. В получившемся наборе 80 % значений лежат левее значения 20, поэтому 20 — это 80-й процентиль набора.
Вычисление процентиля в Python
Посчитать процентиль набора данных в Python можно функцией percentile(a, p) из библиотеки NumPy, где a — набор данных, для которого нужно найти процентиль, а p — процентиль.
import pandas as pd
import numpy as np
x = pd.Series([3, 1, 2, 5, 6, 0, 10])
data_percentile = np.percentile(x, 10) # 10-й процентиль
print(data_percentile)
В NumPy процентиль вычисляется не так, как вы бы это делали «вручную», выбирая в качестве результата одно из значений набора данных. Дело в том, что при вычислении в NumPy используется так называемая интерполяция, при которой находятся промежуточные значения функции по известному набору значений.
В итоге значение процентиля вычисляется приближённо, причём методы расчёта могут быть разными. По умолчанию в NumPy используется линейная интерполяция (method='linear'). Ниже приводим алгоритм работы метода, если хотите изучить его подробнее.
Как работает линейная интерполяция
Список значений сортируется по возрастанию: [0, 1, 2, 3, 5, 6, 10]. В этом наборе нельзя точно вычислить 10 % процентиль: он находится между нулевым и первым значениями списка — это числа 0 и 1. Левее единицы находится около 14 % всего списка, а левее нуля — 0 %. Используем длину списка (это 7) и проверим: 7 * 0.1 = 0.7. Действительно, значение 0.7 находится между нулевым и первым элементами.
Найдём значение i — первое из двух чисел, между которыми находится процентиль. Для нашего набора i = 0, потому что 10 % процентиль находится между числами 0 и 1.
Найдём значение j — второе из двух чисел, между которыми находится процентиль. Для нашего набора j = 1.
Найдём значение fraction:
Для начала найдём расстояние distance между первым и последним элементом последовательности. Это числа 0 и 10. Между ними 6 элементов, поэтому distance = 6.
Затем умножим distance на значение процентиля в виде дроби (в нашем случае 10% = 0.1) и возьмём только дробную часть от получившегося значения: fraction = frac(distance * p) = frac(6 * 0.1) = frac(0.6) = 0.6. Дробная часть числа 0.6 равна 0.6. Проверим это с помощью вывода остатка от деления: 0.6 % 1 = 0.6. Если бы мы получили, например, 3.5, то результат был бы 0.5: 3.5 % 1 = 0.5.
Итак, 10 % перцентиль набора данных, который нашли с помощью линейной интерполяции, равен 0.6. Код вернёт 0.6000000000000001 из-за погрешности при вычислении чисел с плавающей точкой, но это число почти равно 0.6.
Имеется набор данных 17, 4, 4, 1, 7, 5, 8, 6, 15, 3. Найдите его 40-й процентиль, не используя код. В качестве значения процентиля укажите одно из значений этого набора данных.
Ваш ответ правильный5
Чтобы найти процентиль, для начала нужно отсортировать набор данных по возрастанию: 1, 3, 4, 4, 5, 6, 7, 8, 15, 17. Теперь надо найти такое значение, что ровно 40 % всего набора лежит левее этого значения. Так как размер набора данных равен 10, то нам необходимо найти такое значение, левее которого лежит ровно 40 % от 10: 4 значения. А таким значением является 5, значит, это и есть искомый процентиль.
Различия при расчёте межквартильного размаха
Вернёмся к разным способам расчёта межквартильного размаха для набора данных 3, 1, 2, 5, 6, 0, 10. Напомним: в одном случае мы выбирали значения квартилей из датасета, а во втором — использовали функцию stats.iqr().
Функция stats.iqr() считает межквартильный размах как разницу между 75-м и 25-м процентилями, рассчитанными с интерполяцией. Воспроизведём логику работы функции:
import pandas as pd
import numpy as np
from scipy import stats
x = pd.Series([3, 1, 2, 5, 6, 0, 10])
p25 = np.percentile(x, 25)
print('25-й процентиль с интерполяцией:', p25)
p75 = np.percentile(x,75)
print('75-й процентиль с интерполяцией:', p75)
25-й и 75-й процентили при расчёте с интерполяцией равны 1.5 и 5.5 соответственно. Если посчитать разницу между ними — межквартильный размах получится равен 4.
Использовать интерполяцию или нет, вот в чём вопрос. Способ с интерполяцией считается более точным: без неё не учитывается, насколько далеко друг от друга находятся значения из датасета. Например, без интерполяции третий квартиль (или 75-й процентиль) набора данных 0,1,2,3,4,15,16 будет равен 15, а с интерполяцией — 9.5. Интерполяция помогает лучше охарактеризовать данные.
Чем больше данных, тем меньше станут промежутки между отдельными значениями по сравнению с размахом набора данных. Также и относительная разница между процентилями, посчитанными с интерполяцией и без, станет не так ощутима.
Задание 1
С помощью стандартных инструментов Python, а также библиотек numpy и scipy найдите размах, межквартильный размах и 32-й процентиль набора данных x.
import pandas as pd
from scipy import stats # подключение модуля stats из библиотеки scipy
import numpy as np
x = pd.Series([1, 3, 2, 1, 3, 8, 1])
range_value = x.max() - x.min() # размах
iqr_value = stats.iqr(x) # межквартильный размах
data_percentile = np.percentile(x, 32) # 32-й процентиль
print(range_value, iqr_value, data_percentile)
Диаграмма размаха
Кратко:
Диаграмма размаха помогает визуализировать данные для упрощения восприятия большого количества чисел.
В Python для построения диаграммы размаха нужно использовать библиотеку matplotlib.pyplot и метод plot.box() из библиотеки pandas.
Линия в центре прямоугольника показывает медиану, прямоугольник - диапазон между первым и третьим квартилем.
Усы графика ограничиваются минимальным и максимальным значениями внутри интервала между Q1 - 1.5 межквартильного размаха и Q3 + 1.5 межквартильного размаха.
Если все значения набора данных находятся внутри этого интервала, засечки отображают минимальное и максимальное значения всего набора данных.
Если значения выходят за этот диапазон, они отображаются кружками на графике, что указывает на выбросы.
Аналогичный интервал можно построить с использованием алгебраических характеристик набора данных: среднего и стандартного отклонения.
В прошлых уроках вы познакомились с основными характеристиками разброса и положения. Теперь нужно визуализировать эти данные, чтобы было проще воспринимать большое количество чисел. В этом помогут графики, в частности, диаграмма размаха, с которой вы немного познакомились в курсе по исследовательскому анализу данных. В этом уроке вы изучите этот вид графиков подробнее.
Чтобы нарисовать диаграмму размаха в Python, нужно подключить библиотеку matplotlib.pyplot и воспользоваться методом plot.box() из библиотеки pandas:
import pandas as pd
import matplotlib.pyplot as plt
x = pd.Series([-10, 1, 2, 3, 4, 5, 6, 7, 8, 10]) # набор данных
ax = x.plot.box()
plt.show()
Результат
Этот график показывает все основные структурные характеристики, которые нас интересуют в описании набора данных.
Линия в центре прямоугольника показывает, где находится медиана.
Прямоугольник иллюстрирует диапазон между первым и третьим квартилем.
Что вы ответили? Выберите правильный вариант.
Правильный ответ
Медиана этого набора данных равна 5, первый квартиль равен примерно 2, а третий квартиль равен примерно 8.
Абсолютно верно! На графике медиана изображена красной линией внутри прямоугольника, она находится на уровне значения 5. Первый квартиль — это нижняя грань прямоугольника, он находится примерно на уровне значения 2, а третий квартиль — верхняя грань прямоугольника, находится примерно на уровне значения 8.
Осталось теперь разобраться в том, что за засечки располагаются слева и справа от прямоугольника. Это так называемые «усы» графика. «Усы» ограничиваются минимальным и максимальным значениями внутри интервала [Q1 −1.5 межквартильного размаха; Q3+1.5 межквартильного размаха].
Если все значения набора данных лежат внутри этого интервала, то засечки будут отображать минимальное и максимальное значения всего набора данных. Если же есть значения, которые выходят за этот диапазон, они будут отображены кружками на графике. Это помогает находить подозрительно малые и большие значения — в большинстве случаев значения, лежащие за пределами интервала [Q1 −1.5 межквартильного размаха; Q3 +1.5 межквартильного размаха], — это выбросы.
.
Аналогичный интервал можно построить с помощью алгебраических характеристик набора данных: среднего и стандартного отклонения. Для алгебраических характеристик этот интервал выглядит так: [среднее − 3 стандартных отклонения, среднее + 3 стандартных отклонения].
Используются три стандартных отклонения, так как практически для всех наборов данных 97—99 % всех значений находятся не дальше трёх стандартных отклонений от среднего арифметического. Именно поэтому всё, что выходит за этот интервал, принято считать выбросами.
Что вы ответите? Выберите правильный вариант.
Правильный ответ
Снизу выбросов нет, в то время как сверху их 3.
Точки за «засечками» принимаются за возможные выбросы, снизу их 0, а сверху действительно 3.
Правило с вычислением интервала работает не всегда. Бывают случаи, когда множители 1.5 и 3 в обоих диапазонах необходимо изменить, так как они слишком малы или слишком велики. Лучше всего воспринимать их как начальные значения, от которых надо отталкиваться, чтобы найти идеальное значение для определённого набора данных.
Задание 1
Постройте диаграмму размаха для следующего набора данных:
import pandas as pd
import matplotlib.pyplot as plt
data = pd.Series([8.11, 8.04, 7.30, 12.71, 8.29,
2.64, 5.30, 4.29, 5.79, 8.79]) # набор данных
ax = data.plot.box() # напишите ваш код здесь
plt.show()
Столбчатая диаграмма
Кратко:
Столбчатая диаграмма показывает данные и их разброс, но не всегда информативна.
Гистограмма подходит для непрерывных величин, но не для дискретных.
Таблица частот показывает частоту каждого элемента в наборе данных.
Метод value_counts() из библиотеки pandas позволяет построить таблицу частот в Python.
Столбчатая диаграмма показывает частоту каждого элемента в наборе данных с помощью столбцов.
Метод plot.bar() в Python строит столбчатую диаграмму.
Параметр ascending=True в value_counts() меняет направление роста графика и таблицы частот.
Диаграмма размаха, которую вы подробнее изучили в прошлом уроке, показывает, как расположены данные и их разброс, но она не всегда достаточно информативно описывает, как данные распределены между собой.
Для представления на графике непрерывных величин часто используется гистограмма, но она не подходит для изображения дискретных величин. Если описывать их таким образом, могут возникнуть большие пустые интервалы на графиках. Так как дискретные величины могут принимать только определённое число значений, то для них придумали другой график, демонстрирующий частоту данных и то, как расположены данные между собой. Перед тем как перейти к нему, познакомимся с понятием таблицы частот.
Таблица частот показывает, как часто каждый элемент встречается в полученном наборе данных.
Пусть имеется набор данных 1, 1, 1, 2, 3, 3, 3, 3, 4, 4, 5, тогда таблица частот для этого набора данных будет выглядеть так:
Значение
Частота
3
4
1
3
4
2
5
1
2
1
Чтобы построить такую таблицу в Python, достаточно воспользоваться методом value_counts() из библиотеки pandas:
import pandas as pd
data = pd.Series([1, 1, 1, 2, 3, 3, 3, 3, 4, 4, 5]) # данные
print(data.value_counts())
Результат
3 4
1 3
4 2
2 1
5 1
dtype: int64
В левом столбце этой таблицы отображаются значения из набора данных, а в правом — то, как часто они появляются в этом наборе данных. Таблица, которую мы составили ранее, полностью совпадает с той, что мы получили с помощью Python.
Задание 1
С помощью Python постройте таблицу частот для следующего набора данных.
import pandas as pd
data = pd.Series([1, 1, 1, 2, 3, 3, 3, 3, 4, 4, 5, 5, -2, -3, 10, 3]) # данные
table = data.value_counts() # Переменная для таблицы
print(table)
После того как вы познакомились с таблицей частот, для полученного набора данных можно построить столбчатую диаграмму. Высотой столбцов эта диаграмма показывает, как часто каждый элемент выборки появляется в наборе данных.
Чтобы построить столбчатую диаграмму в Python, нужно воспользоваться методом plot.bar().
import pandas as pd
import matplotlib.pyplot as plt
data = pd.Series([1, 1, 1, 2, 3, 3, 3, 3, 4, 4, 5]) # данные
freqs = data.value_counts()
ax = freqs.plot.bar()
plt.show()
Столбчатая диаграмма наглядно показывает, что значение 3 встречается в этом наборе наиболее часто, а значения 2 и 5 — наименее часто. Эту программу в Python можно написать короче без использования дополнительных переменных, а результат будет тот же.
import pandas as pd
import matplotlib.pyplot as plt
data = pd.Series([1, 1, 1, 2, 3, 3, 3, 3, 4, 4, 5]) # данные
ax = data.value_counts().plot.bar()
plt.show()
Ещё таблицу и график можно изменить так, чтобы частоты столбцов не уменьшались, а увеличивались. Для этого достаточно добавить параметр ascending=True в value_counts(). Вот что получится:
import pandas as pd
import matplotlib.pyplot as plt
data = pd.Series([1, 1, 1, 2, 3, 3, 3, 3, 4, 4, 5]) # данные
ax = data.value_counts(ascending=True).plot.bar()
plt.show()
Новый параметр поменял направление роста графика и таблицы частот.
Задание 2
С помощью Python постройте возрастающую столбчатую диаграмму для следующего набора данных. Ограничений по количеству переменных нет, но попробуйте построить диаграмму, используя наименьшее число переменных.
import pandas as pd
import matplotlib.pyplot as plt
data = pd.Series([1, 1, 1, 2, 3, 3, 3, 3, 4, 4, 5, 5, -2, -3, 10, 3]) # данные
ax = data.value_counts(ascending=True).plot.bar() # постройте график
plt.show()
Можно ли построить столбчатую диаграмму для непрерывной переменной
Кратко:
Столбчатая диаграмма хорошо демонстрирует дискретные и категориальные величины.
Столбчатая диаграмма не подходит для отображения непрерывных величин, но можно построить гистограмму.
Гистограмма показывает, какое количество значений из набора данных лежит в определённых диапазонах.
Параметр bins задаёт количество интервалов и границы для вычисления частоты появления случайной величины.
На основе гистограммы можно определить наиболее частые значения в наборе данных.
Число столбцов определяет точность гистограммы, выбор параметра bins зависит от анализа и желаемой точности
Вы уже знаете, что столбчатая диаграмма хорошо демонстрирует дискретные и категориальные величины. В этом уроке вы узнаете, как ведёт себя столбчатая диаграмма с непрерывной величиной.
Допустим, вы получили набор данных, который хранит время, необходимое пользователю, чтобы зарегистрироваться на сайте. Этот набор данных описывается переменной times. Построим для этой величины столбчатую диаграмму.
Такой график лишь показывает, что каждый элемент набора данных встречается всего один раз. Непрерывным величинам это вообще свойственно, поэтому такая история будет постоянно повторяться — график не покажет ничего, кроме того, что каждое значение встречается один раз.
Сделаем вывод: столбчатая диаграмма не подходит для отображения непрерывных величин. Но как тогда быть с непрерывными величинами? Для них можно построить гистограмму.
Правильный ответ
Среднее время ответа оператора в лифте
Так как это непрерывная величина, то для неё лучше построить гистограмму.
Как вы помните из прошлых курсов, гистограмма показывает, какое количество значений из набора данных лежит в определённых диапазонах. Её можно сравнить со столбчатой диаграммой, если бы мы строили столбцы не для каждого нового элемента, а для каждого интервала, который анализируем. Поэтому, чтобы изобразить непрерывную величину из примера выше — время, необходимое для регистрации на сайте, — построим гистограмму. Но сначала вспомните про параметр bins и почему он так важен при построении гистограмм.
Из курса по исследовательскому анализу данных вы знаете, что параметр bins задаёт количество интервалов, в которых будет вычисляться частота появления случайной величины. Ещё с помощью параметра bins можно задавать не только количество, но и границы интервалов.
На основе этой гистограммы можно сказать, что наиболее частые значения в наборе данных — те, что лежат в диапазоне примерно от 80 до 100. Теперь построим гистограмму с другим значением параметра bins.
Теперь на гистограмме видно, что наиболее частые значения находятся в диапазоне примерно от 90 до 100. Возникает вопрос: «Какая из гистограмм врёт?». На самом деле ни одна!
Число столбцов определяет точность, с которой мы хотим построить гистограмму. Если достаточно низкой точности и важнее показать самый популярный интервал, то следует использовать параметр bins с малым значением. Но если нужно тщательно проанализировать ситуацию, найти выбросы или малейшие отклонения частот друг от друга, стоит использовать параметр bins с большим значением. К сожалению, универсального ответа «что такое малое/большое значение» нет, и для каждого случая их придётся подбирать методом проб и ошибок.
Подберите такое значение параметра bins, чтобы интервал с максимальным числом значений был по длине примерно равен 10.
Правильный ответ
3
Правильный ответ
Нужно определить выбросы на гистограмме.
Так как тут необходимо найти выбросы, желательно использовать большое значение параметра bins. С помощью большого значения параметра bins от анализа широких интервалов можно перейти к анализу значений и малых интервалов.
Правильный ответ
Нужно найти наиболее часто встречающееся значение.
Так как тут необходимо найти наиболее часто встречающееся значение, желательно использовать большое значение параметра bins. С помощью большого значения параметра bins от анализа широких интервалов можно перейти к анализу значений и малых интервалов.
Плотность частоты и гистограмма
Кратко:
Гистограмма плотности - более удобный и универсальный инструмент для работы с непрерывными переменными.
Частота попадания в интервал отображается не высотой столбца, а площадью интервала.
Гистограмма плотностей позволяет оценить количество значений, попавших в любой интересующий интервал.
Площадь графика над интервалом значений соответствует частоте попадания в этот интервал.
Эта идея может быть полезна при статистической проверке гипотез.
В прошлом уроке вы узнали, что для описания непрерывных величин лучше подходят гистограммы. Но их нужно точно настраивать под каждую задачу и различные данные, а значит, это не самый удобный и универсальный инструмент. В этом уроке вы узнаете о другом способе построения графиков для непрерывных переменных — гистограмме плотности. Её особенность в том, что частоту, с которой значения попадают в интервал, показывают не высотой столбца, а площадью интервала.
Разберём на примере. Пусть у нас есть некоторая величина, которая принимает значения от 2 и до 10. Известно, что в полученном наборе данных значения в интервале от 4 до 8 встречаются 24 раза. Построим график, где по горизонтали отмечены значения набора данных, а по вертикали — плотность частоты. Чтобы найти её значение, нужно частоту, с которой значения встречаются в определённом интервале, разделить на длину этого интервала. Подставим значения из примера в формулу, получится: 24:4=6. Таким образом, высота столбца, изображающего плотность частоты, будет равна 6.6. Такая гистограмма называется плотностной, или гистограммой плотности.
Правильный ответ
Чтобы найти плотность частоты, с которой значения попадают в определённый интервал, нужно поделить частоту интервала на его длину.
Площадь прямоугольника равна высоте, умноженной на ширину. Значит, высота — это площадь, делённая на ширину.
Гистограмма плотностей — более удобный и универсальный инструмент в работе с непрерывными переменными, чем обычная гистограмма. У последней есть существенный недостаток: чем шире столбец, тем больше значений в него попадает, а значит, больше высота этого столбца.
Две гистограммы, построенные на одних и тех же данных, могут визуально отличаться друг от друга, если изменить количество столбцов, и обе будут правдивы, как вы помните из прошлого урока. Недостаток обычной гистограммы проявляется особенно явно, если значения переменной разбиты на классы разной ширины.
У гистограммы плотностей такого недостатка нет, так как при увеличении интервала столбцов увеличивается частота попадания в эти столбцы, но из-за увеличения интервала плотность частоты не будет сильно изменяться. Лучше понять различие между обычной гистограммой и гистограммой плотностей поможет сравнение двух графиков:
По гистограмме плотностей можно оценить, сколько значений попало в любой интересующий нас интервал, не только тот, что выбран для построения графика. Для этого нужно взять два любых значения набора данных и вычислить площадь частоты, с которой значения попадают в этот интервал. Получившееся число и будет оценкой того, сколько значений попало в интервал.
Оцените, у скольких примерно пользователей регистрация на сайте заняла более 18 минут.
Правильный ответ
100
Сложим площади двух прямоугольников: одного — с шириной от 18 до 25 и высотой 10, второго — с шириной от 25 до 40 и высотой 2:(25−18)⋅10+(40−25)⋅2=100
Эта идея — соответствие площади графика над интервалом значений частоте попадания в этот интервал — пригодится вам при статистической проверке гипотез.
Заключение
Кратко:
Описательная статистика: типы переменных, нахождение центра набора данных, метрики, разброс данных, графические изображения.
Важно определить не только центр, но и разброс данных вокруг него.
Характеристики лучше показывают разброс данных.
Графическое изображение данных может помочь в анализе.
Шпаргалка темы может помочь в изучении материала.
Марина Варфоломеева "Описательная статистика" - дополнительное изучение темы
Вы познакомились с основами описательной статистики. Теперь вы знаете:
какие типы переменных бывают;
как найти центр набора данных и какие метрики лучше его характеризуют;
почему важно определять не только центр набора, но и то, насколько сильно данные разбросаны вокруг этого центра;
какие характеристики лучше показывают разброс;
как графически изобразить полученные данные.
Всё это пригодится вам, чтобы перейти к следующей теме.
Чтобы пройти тест нужно правильно ответить на 6 вопросов из 10. Время на прохождение: 25 минут
Задание 1 из 10
Одна из авиакомпаний запросила у вас анализ собранных ею данных. Они включают в себя величины без указания типа переменных: качественные или числовые; а если числовые, то дискретные или непрерывные. Ваша задача — определить тип переменных и выбрать из перечисленных вариантов числовые дискретные величины.
Правильный ответ
Число сидений в самолёте
Правильный ответ
Количество персонала, необходимое для управления самолётом
Число сидений в самолёте — это числовая и дискретная величина, так как количество мест, например, не может равняться 5.5 Номер сидения в самолёте, указанный на билете, — это качественная величина, поскольку номер сидения не характеризует величину численно, а лишь используется для того, чтобы различать места. Длительность полёта — это численная величина, но не дискретная, поскольку длительность полёта можно бесконечно уточнять, а значит, эта величина может принимать неограниченное количество значений, из чего следует, что она непрерывная. Состояние лайнера во время передвижения (взлёт, полёт, посадка) — это качественная переменная, так как значения этой переменной используются для того, чтобы различать состояния. Количество персонала, необходимое для управления самолётом — это количественная и дискретная величина, потому что число сотрудником может принимать только определённые значения: не может быть 2.5 бортпроводиника.
Задание 2 из 10
Вы определили типы переменных в собранных данных и решили вычислить основные характеристики положения для всех этих величин. Но перед вами возник вопрос: какими характеристиками лучше всего описывать собранные величины? Предположим, у вас уже есть первоначальный вариант гистограмм для величин «длительность полёта» (рисунок 1), «объём топлива, которое необходимо для полёта» (рисунок 2) и «расстояние, которое лайнер преодолел за время полёта» (рисунок 3).
Рисунок 1
Рисунок 2
Рисунок 3
Опираясь на гистограммы, определите, какая характеристика, описывающая центр набора данных, лучше всего подходит для каждой величины.
Правильный ответ
1) Центр набора данных для величины, изображенной на первой гистограмме лучше всего описывать средним арифметическим.
2) Центр набора данных величины, изображенной на второй гистограмме лучше всего описать медианой.
3) Центр набора данных для величины, изображенной на третьей гистограмме лучше всего описать модой.
Так как первая величина распределена так, как изображено на рисунке, то для описания её центра лучше использовать среднее, так как медиана и мода покажут неточные значения. Так как вторая величина распределена так, как изображено на рисунке, то для описания её центра лучше использовать медиану, так как эта величина обладает выбросами, и медиана поможет не учитывать их. Так как третья величина распределена так, как изображено на рисунке, то для описания её центра лучше использовать моду.
Задание 3 из 10
После того как вы определились с характеристиками для описания центра набора данных, ваша задача — определить, у какой из величин наибольшая дисперсия, у какой — наименьшая. Выводы, как в предыдущей задаче, нужно сделать на основе гистограмм для описанных ранее величин: «длительность полёта» (рисунок 1), «объём топлива, которое необходимо для полёта» (рисунок 2) и «расстояние, которое лайнер преодолел за время полёта» (рисунок 3).
Рисунок 1
Рисунок 2
Рисунок 3
Правильный ответ
Наименьшая дисперсия у величины, гистограмма которой изображена на рисунке 2, наибольшая у величины, гистограмма которой изображена на рисунке 3.
Наименьший разброс и наименьшее отклонение от среднего изображены на рисунке 22, тогда как наибольший разброс и самое сильное отклонение (750750) — на рисунке 33.
Задание 4 из 10
После того как вы определили величины с наибольшей и наименьшей дисперсией, вы вспомнили, что стандартное отклонение связано с дисперсией. Выберите утверждения, которые верно определяют эту связь.
Правильный ответ
Величина с большей дисперсией обладает большим стандартным отклонением.
Правильный ответ
Для вычисления стандартного отклонения нужно вычислить корень из дисперсии.
Чтобы найти стандартное отклонение, нужно извлечь корень из дисперсии. Это значит, что чем больше дисперсия, тем больше и стандартное отклонение.
Задание 5 из 10
В качестве дополнительной характеристики вы решили вычислить межквартильный размах. Выберите утверждения, которые верно характеризуют его.
Правильный ответ
Межквартильный размах показывает расстояние между первым и третьим квартилем.
Межквартильный размах показывает расстояние между первым и третьим квартилем. Его можно вычислить для любых числовых величин, как дискретных, так и непрерывных.
Задание 6 из 10
Вы полностью определились с описательными характеристиками и решили построить гистограмму, которая будет их изображать. Гистограмма может быть с широкими или узкими столбцами. Какими они будут (широкими или узкими), вы определяете в зависимости от характеристики, которую хотите показать.
Так, для длительности полёта с помощью гистограммы нужно показать довольно широкий интервал, в котором лежат наименее продолжительные рейсы. Для объёма необходимого топлива с помощью гистограммы нужно найти очень малый интервал, значения которого наиболее часто встречаются в наборе данных. Для расстояния, которое самолёт преодолел во время полёта, с помощью гистограммы нужно найти выбросы. Определите, какое значение (высокое или низкое) параметра bins метода hist() лучше подойдёт для каждой гистограммы.
Правильный ответ
Для длительности полёта подойдёт низкое значение параметра bins, для объёма топлива и для расстояния — большее значение bins.
Низкое значение параметра bins позволяет увидеть частоту попадания в большИе интервалы, а высокое значение параметра bins используется для поиска выбросов и небольшого интервала, в который попадает наибольшее число значений.
Задание 7 из 10
Теперь, когда вы построили первые гистограммы для основных величин, возникает вопрос: какие графики построить для оставшихся величин из текущего набора данных? Выберите среди них те величины, для которых лучше построить столбчатую диаграмму, чем гистограмму.
Правильный ответ
Число купленных билетов в зависимости от дня месяца
Правильный ответ
Количество купленных билетов в зависимости от возраста покупателей
Из-за того, что день месяца — дискретная величина, для её изображения лучше подойдёт столбчатая диаграмма. Из-за того, что момент вылета — непрерывная величина, для её изображения лучше подойдет гистограмма. Из-за того, что давление воздуха — непрерывная величина, для её изображения лучше подойдет гистограмма. Поскольку возраст людей — дискретная величина, для её изображения лучше подойдёт столбчатая диаграмма.
Задание 8 из 10
После того как вы определились с величинами, которые лучше изображает столбчатая диаграмма, нужно, собственно, построить её. Вы хотите сделать так, чтобы значения на диаграмме располагались в порядке возрастания их частоты. Выберите, какие элементы должен содержать код подготовки данных для такого графика при использовании библиотеки pandas?
Правильный ответ
Метод value_counts() для подсчёта встречаемости каждого элемента в наборе данных.
Правильный ответ
Аргумент ascending=True для того, чтобы диаграмма была возрастающей.
Без метода value_counts() нельзя получить таблицу, на основе которой строится диаграмма. При использовании метода boxplot получится диаграмма размаха, а не столбчатая диаграмма. Аргумент ascending=True нужен, поскольку без него получится возрастающий график, а не убывающий.
Задание 9 из 10
Следующий шаг — построить диаграмму размаха. Выберите величины, для которых уместно построение этой диаграммы.
Правильный ответ
Число сидений в самолёте
Правильный ответ
Длительность полёта
Правильный ответ
Количество персонала, которое необходимо для управления самолётом
Номер сидения на билете и состояние самолёта во время полёта — качественная величина, они не выражают ничего численно, а используется только для отличия мест между собой, поэтому для них межквартильный размах не вычислить. Остальные величины — численные, поэтому для них построение boxplot подходит.
Задание 10 из 10
Вы закончили работу с предоставленными данными, и во время презентации один из руководителей задал вам вопросы, касающиеся построенного графика.
Среди диалогов ниже выберите вариант ответа, в котором дан верный ответ на вопрос руководителя
Правильный ответ
— Каким количеством выбросов обладает ваша величина? — Сверху величина обладает тремя выбросами, снизу — ни одного.
Правильный ответ
— Судя по графику, величина обладает межквартильным размахом равным примерно 10, и этот размах определяется длиной построенного прямоугольника, это так? — Да, верно.
Точками на диаграмме размаха обозначаются выбросы и, как видно из графика, c верху величина обладает тремя выбросами, снизу — ни одного. Второй вариант ответа неверный, так как линией в центре прямоугольника отмечается медиана. Третий вариант ответа верный, так как прямоугольником на диаграмме размаха определяется межквартильный размах. И именно по этой причине четвёртый вариант ответа неверный.