- •Python для науки о данных: перезагрузка Ремикс популярной книги Генри Гарнера "Clojure для науки о данных", 2015
- •Об авторе оригинала книги
- •Содержание
- •Предисловие автора к оригиналу книги на Clojure
- •Статистика
- •Скачивание исходного кода примеров
- •Обследование данных
- •Исправление данных
- •Описательные статистики
- •Среднее значение
- •Интерпретация математических обозначений
- •Медиана
- •Дисперсия
- •Квантили
- •Дискретизация данных
- •Гистограммы
- •Нормальное распределение
- •Центральная предельная теорема
- •Булочник господина Пуанкаре
- •Генерирование распределений
- •Асимметрия
- •Графики нормального распределения
- •Способы сопоставительной визуализации
- •Коробчатые диаграммы
- •Интегральные функции распределения
- •Важность визуализации
- •Визуализация данных об электорате
- •Обработка столбцов
- •Добавление производных столбцов
- •Сопоставительная визуализация электоральных данных
- •Визуализация электоральных данных рф
- •Сравнительная визуализация
- •Функции массы вероятности
- •Точечные графики
- •Настройка прозрачности разброса
Квантили
Медиана — это один из способов вычислить из списка срединное значение, т.е. находящееся ровно по середине, дисперсия же предоставляет способ измерить разброс данных вокруг среднего значения. Если весь разброс данных представить на шкале от 0 до 1, то значение 0.5 будет медианным.
Для примера рассмотрим следующую последовательность чисел:
[10 11 15 21 22.5 28 30]
Отсортированная последовательность состоит из семи чисел, поэтому медианой является число 21 четвертое в ряду. Его также называют 0.5-квантилем. Мы можем получить более полную картину последовательности чисел, взглянув на 0.0 (нулевой), 0.25, 0.5, 0.75 и 1.0 квантили. Все вместе эти цифры не только показывают медиану, но также обобщают диапазон данных и сообщат о характере распределения чисел внутри него. Они иногда упоминаются в связи с пятичисловой сводкой.
Один из способов составления пятичисловой сводки для данных об электорате Великобритании показан ниже. Квантили можно вычислить непосредственно в Pandas при помощи функции quantile. Последовательность требующихся квантилей передается в виде списка.
def ex_1_10():
'''Вычислить квантили:
возвращает значение в последовательности xs,
соответствующее p-ому проценту'''
q = [0, 1/4, 1/2, 3/4, 1]
return load_uk_scrubbed()['Electorate'].quantile(q=q)
# 0.00 21780.00
# 0.25 65929.25
# 0.50 70813.50
# 0.75 74948.50
# 1.00 109922.00
# Name: Electorate, dtype: float64
Когда квантили делят диапазон на четыре равных диапазона, как показано выше, то они называются квартилями. Разница между нижним (0.25) и верхним (0.75) квартилями называется межквартильным размахом, или иногда сокращенно МКР. Аналогично дисперсии вокруг среднего значения, МКР измеряет разброс данных вокруг медианы.
Дискретизация данных
Чтобы развить интуитивное понимание в отношении того, что именно измеряют все эти калькуляции разброса значений, мы можем применить метод под названием дискретизации. Когда данные имеют непрерывный характер, использование специального словаря для подсчета частот Counter (подобно тому, как он использовался при подсчете количества пустых значений в наборе данных об электорате) становится нецелесообразным, поскольку никакие два значения не могут быть одинаковыми. Между тем, общее представление о структуре данных можно все-равно получить, сгруппировав для этого данные в статистические группы, или так называемые корзины, от англ. bins, или дискретные интервалы.
Процедура образования статистических групп заключается в разбиении диапазона значений на ряд последовательных, равноразмерных и меньших интервалов. Каждое значение в исходном ряду попадает строго в одну статистическую (интервальную) группу. Подсчитав количества точек, попадающих в каждую группу, мы можем получить представление о разбросе данных:
На приведенном выше рисунке показано 15 значений x, разбитых на 5 равноразмерных интервальных групп. Подсчитав количество точек, попадающих в каждую группу, мы можем четко увидеть, что большинство точек попадают в группу по середине, а меньшинство — в группы по краям. Следующая ниже функция Python nbin позволяет добиться того же самого результата:
def nbin(n, xs):
'''Разбивка данных на частотные интервалы'''
min_x, max_x = min(xs), max(xs)
range_x = max_x - min_x
fn = lambda x: min( int((abs(x) - min_x) / range_x * n), n-1 )
return map(fn, xs)
Например, мы можем разбить диапазон 0-14 на 5 интервальных групп следующим образом:
list( nbin(5, range(15)) )
# [0, 0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4]
После того, как мы разбили значения на интервальные группы, мы можем в очередной раз воспользоваться словарем Counter, чтобы подсчитать количество точек в каждой группе. В следующем ниже примере мы воспользуемся этим словарем для разбиения данных об электорате Великобритании на пять интервальных групп:
def ex_1_11():
'''Разбиmь электорат Великобритании
на 5 статистических (интервальных) групп'''
series = load_uk_scrubbed()['Electorate']
return Counter( nbin(5, series) )
# Counter({2: 450, 3: 171, 1: 26, 0: 2, 4: 1})
Количество точек в крайних интервальных группах (0 и 4) значительно ниже, чем в группах в середине — количества, судя по всему, растут по направлению к медиане, а затем снова снижаются. В следующем разделе мы займемся визуализацией формы этих количеств.
