Понимание Boxplots | Кодементор
Изображение выше представляет собой коробочную диаграмму. Блочная диаграмма — это стандартный способ отображения распределения данных на основе сводки из пяти чисел («минимум», первый квартиль (Q1), медиана, третий квартиль (Q3) и «максимум»). Он может рассказать вам о ваших выбросах и их значениях. Он также может сказать вам, являются ли ваши данные симметричными, насколько плотно ваши данные сгруппированы, и если и как ваши данные перекошены.
Этот учебник будет включать в себя:
- Что такое боксплот?
- Понимание анатомии блочной диаграммы путем сравнения блочной диаграммы с функцией плотности вероятности для нормального распределения.
- Как вы создаете и интерпретируете боксплоты с помощью Python?
Как всегда, код, используемый для построения графиков, доступен на моем гитхаб. С этого, давайте начнем!
Для некоторых распределений/наборов данных вы обнаружите, что вам нужно больше информации, чем меры центральной тенденции (медиана, среднее значение и мода), как показано на изображении ниже (изображение взято из здесь)
Вам необходимо иметь информацию о изменчивости или разбросе данных. Блочная диаграмма — это график, который дает вам хорошее представление о том, как распределяются значения в данных. Хотя коробочные графики могут показаться примитивными по сравнению с гистограмма или же график плотностиони занимают меньше места, что полезно при сравнении распределений между многими группами или наборами данных.
Блочные диаграммы — это стандартный способ отображения распределения данных на основе сводки из пяти чисел («минимум», первый квартиль (Q1), медиана, третий квартиль (Q3) и «максимум»).
медиана (Q2/50-й процентиль): среднее значение набора данных.
первый квартиль (Q1/25-й процентиль): среднее число между наименьшим числом (не «минимум») и медианой набора данных.
третий квартиль (Q3/75-й процентиль): среднее значение между медианой и максимальным значением (не «максимальным») набора данных.
межквартильный размах (IQR): от 25-го до 75-го процентиля.
усы (показаны синим цветом)
выбросы (показаны зелеными кружками)
«максимум»: Q3 + 1,5*IQR
«минимум»: Q1 -1,5*IQR
Что определяет выброс, «минимум» или «максимум», возможно, еще не ясно. В следующем разделе мы попытаемся прояснить это для вас.
Изображение выше представляет собой сравнение диаграммы почти нормального распределения и функции плотности вероятности (PDF) для нормального распределения. Причина, по которой я показываю вам это изображение, заключается в том, что рассмотрение статистического распределения более распространено, чем рассмотрение диаграммы. Другими словами, это может помочь вам понять коробочную диаграмму.
В этом разделе будут рассмотрены многие вещи, в том числе:
- Каковы выбросы (для нормального распределения) 0,7% данных.
- Что такое «минимум» и «максимум»
Функция плотности вероятности
Эта часть поста очень похожа на 68–95–99.7 статья правила, но адаптирован для боксплота. Чтобы иметь возможность понять, откуда берутся проценты, важно знать о функции плотности вероятности (PDF). PDF используется для определения вероятности случайная переменная попадает в определенный диапазон значений, а не принимает какое-либо одно значение. Эта вероятность определяется интеграл PDF этой переменной в этом диапазоне, то есть она задается площадью под функцией плотности, но выше горизонтальной оси и между самым низким и самым большим значениями диапазона. Это определение может не иметь особого смысла, поэтому давайте проясним его, построив график функции плотности вероятности для нормального распределения. Приведенное ниже уравнение представляет собой функцию плотности вероятности для нормального распределения.
Давайте упростим его, предположив, что у нас есть среднее значение (μ) равное 0 и стандартное отклонение (σ) равное 1.
Это можно изобразить с помощью чего угодно, но я предпочитаю отображать это с помощью Python.
# Import all libraries for this portion of the blog post
from scipy.integrate import quad
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
x = np.linspace(-4, 4, num = 100)
constant = 1.0 / np.sqrt(2*np.pi)
pdf_normal_distribution = constant * np.exp((-x**2) / 2.0)
fig, ax = plt.subplots(figsize=(10, 5));
ax.plot(x, pdf_normal_distribution);
ax.set_ylim(0);
ax.set_title('Normal Distribution', size = 20);
ax.set_ylabel('Probability Density', size = 20);
График выше показывает не вероятность событий, а их плотность вероятности. Чтобы получить вероятность события в заданном диапазоне, нам нужно будет интегрировать. Предположим, нас интересует вероятность попадания случайной точки данных в межквартильный диапазон 0,6745 стандартного отклонения от среднего, нам нужно интегрировать от -0,6745 до 0,6745. Это можно сделать с помощью SciPy.
# Make PDF for the normal distribution a function
def normalProbabilityDensity(x):
constant = 1.0 / np.sqrt(2*np.pi)
return(constant * np.exp((-x**2) / 2.0) )
# Integrate PDF from -.6745 to .6745
result_50p, _ = quad(normalProbabilityDensity, -.6745, .6745, limit = 1000)
print(result_50p)
То же самое можно сделать для «минимума» и «максимума».
# Make a PDF for the normal distribution a function
def normalProbabilityDensity(x):
constant = 1.0 / np.sqrt(2*np.pi)
return(constant * np.exp((-x**2) / 2.0) )
# Integrate PDF from -2.698 to 2.698
result_99_3p, _ = quad(normalProbabilityDensity,
-2.698,
2.698,
limit = 1000)
print(result_99_3p)
Как упоминалось ранее, выбросы составляют оставшиеся 0,7% процента данных.
Важно отметить, что для любой PDF площадь под кривой должна быть равна 1 (вероятность рисования любого числа из диапазона функции всегда равна 1).
Блочные диаграммы с использованием библиотек Matplotlib, Pandas и Seaborn (Python)
Видео выше является бесплатное превью видео от Курс Python для визуализации данных.
В последнем разделе мы рассмотрели ящичковую диаграмму нормального распределения, но, поскольку у вас, очевидно, не всегда будет базовое нормальное распределение, давайте рассмотрим, как использовать ящичковую диаграмму в реальном наборе данных. Для этого мы будем использовать Набор данных рака молочной железы, штат Висконсин (диагностический). Если у вас нет учетной записи Kaggle, вы можете скачать набор данных с мой гитхаб.
Читать в данных
Код ниже считывает данные в кадр данных pandas.
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
# Put dataset on my github repo
df = pd.read_csv('
График
Коробчатая диаграмма используется ниже для анализа взаимосвязи между категориальным признаком (злокачественная или доброкачественная опухоль) и непрерывным признаком (площадь_среднего).
Есть несколько способов построить график коробчатой диаграммы с помощью Python. Вы можете отобразить коробочную диаграмму через Seaborn, Pandas или Seaborn.
морской
Код ниже передает кадр данных pandas df
в коробку Seaborn.
sns.boxplot(x='diagnosis', y='area_mean', data=df)
matplotlib
Блочные диаграммы, которые вы видели в этом посте, были сделаны с помощью matplotlib. Этот подход может быть гораздо более утомительным, но может дать вам более высокий уровень контроля.
malignant = df[df['diagnosis']=='M']['area_mean']
benign = df[df['diagnosis']=='B']['area_mean']
fig = plt.figure()
ax = fig.add_subplot(111)
ax.boxplot([malignant,benign], labels=['M', 'B'])
Имейте в виду, что вы можете сделать это намного красивее, немного поработав.
панды
Вы можете построить коробочную диаграмму, вызвав .boxplot()
на вашем DataFrame. В приведенном ниже коде создается диаграмма столбца area_mean по отношению к другому диагнозу.
df.boxplot(column = 'area_mean', by = 'diagnosis');
plt.title('')
Коробчатая диаграмма с надрезом
Коробчатая диаграмма с зазубринами позволяет оценить доверительные интервалы (по умолчанию 95% доверительный интервал) для медиан каждой коробчатой диаграммы.
malignant = df[df['diagnosis']=='M']['area_mean']
benign = df[df['diagnosis']=='B']['area_mean']
fig = plt.figure()
ax = fig.add_subplot(111)
ax.boxplot([malignant,benign], notch = True, labels=['M', 'B']);
Интерпретация боксплота
Наука о данных — это передача результатов, поэтому имейте в виду, что вы всегда можете сделать свои ящичковые диаграммы немного красивее, немного поработав (код здесь).
Используя график, мы можем сравнить диапазон и распределение area_mean для злокачественного и доброкачественного диагноза. Мы наблюдаем, что существует большая вариабельность для злокачественной опухоли area_mean, а также более крупные выбросы.
Кроме того, поскольку метки на диаграммах не перекрываются, вы можете с уверенностью 95% сделать вывод, что истинные медианы различаются.
Вот еще несколько моментов, о которых следует помнить при работе с коробчатыми диаграммами:
- Имейте в виду, что вы всегда можете вытащить данные из боксплота если вы хотите знать, каковы числовые значения для разных частей диаграммы.
- Matplotlib делает нет сначала оценивают нормальное распределение и вычисляют квартили на основе оцененных параметров распределения. Медиана и квартили рассчитываются непосредственно из данных. Другими словами, ваша ящичковая диаграмма может выглядеть по-разному в зависимости от распределения ваших данных и размера выборки, например, асимметричной и с большим или меньшим количеством выбросов.
Надеюсь, это было не слишком много информации о boxplots. В будущих учебниках будут использованы некоторые из этих знаний и рассмотрено, как применять их для понимания доверительных интервалов. Мой следующий учебник подходит к концу Как использовать и создать Z-таблицу (стандартная обычная таблица). Если у вас есть какие-либо вопросы или мысли по поводу учебника, не стесняйтесь обращаться в комментариях ниже, через страница видео на ютубеили через Твиттер.