Biểu đồ boxplot hướng dẫn

Các phần khác nhau của một boxplot

Hình ảnh trên là một ô vuông . Biểu đồ hộp là một cách tiêu chuẩn hóa để hiển thị phân phối dữ liệu dựa trên tóm tắt năm số (tối thiểu, phần tư thứ nhất (Q1), trung vị, phần tư thứ ba (Q3) và tối đa). Nó có thể cho bạn biết về những ngoại lệ của bạn và giá trị của chúng. Nó cũng có thể cho bạn biết liệu dữ liệu của bạn có đối xứng hay không, dữ liệu của bạn được nhóm chặt chẽ như thế nào và nếu và cách dữ liệu của bạn bị lệch.

Hướng dẫn này sẽ bao gồm:

  • Boxplot là gì?
  • Hiểu giải phẫu của một ô vuông bằng cách so sánh một ô vuông với hàm mật độ xác suất cho một phân phối chuẩn.
  • Làm thế nào để bạn tạo và giải thích các hộp đồ trang bằng Python?

Boxplot là gì?

Đối với một số phân phối / bộ dữ liệu, bạn sẽ thấy rằng bạn cần nhiều thông tin hơn là các thước đo của xu hướng trung tâm (trung bình, trung bình và chế độ).

Đôi khi, giá trị trung bình, giá trị trung bình và chế độ không đủ để mô tả một tập dữ liệu (lấy từ đây).

Bạn cần có thông tin về sự thay đổi hoặc phân tán của dữ liệu. Biểu đồ hình hộp là một biểu đồ cung cấp cho bạn dấu hiệu tốt về cách các giá trị trong dữ liệu được trải ra. Mặc dù biểu đồ hộp có vẻ nguyên thủy so với biểu đồ hoặc biểu đồ mật độ , nhưng chúng có lợi thế là chiếm ít không gian hơn, điều này rất hữu ích khi so sánh phân phối giữa nhiều nhóm hoặc tập dữ liệu.

Các phần khác nhau của một boxplot

Boxplots là một cách tiêu chuẩn hóa để hiển thị phân phối dữ liệu dựa trên tóm tắt năm số (tối thiểu, phần tư thứ nhất (Q1), trung vị, phần tư thứ ba (Q3) và tối đa).

trung vị (Phần trăm thứ 2/50) : giá trị giữa của tập dữ liệu.

phần tư đầu tiên (Phần trăm Q1 / 25) : số chính giữa giữa số nhỏ nhất (không phải số "tối thiểu") và số trung bình của tập dữ liệu.

phần tư thứ ba (Phần trăm thứ 3/75) : giá trị ở giữa giữa giá trị trung bình và giá trị cao nhất (không phải "tối đa") của tập dữ liệu.

phạm vi liên phân vị (IQR) : phân vị thứ 25 đến 75.

râu (màu xanh lam)

ngoại lệ (được hiển thị dưới dạng vòng tròn màu xanh lục)

"Tối đa" : Q3 + 1.5 * IQR

"Tối thiểu" : Q1 -1,5 * IQR

Điều gì xác định ngoại lệ, "tối thiểu" hoặc "tối đa" có thể chưa rõ ràng. Phần tiếp theo sẽ cố gắng làm rõ điều đó cho bạn.

Boxplot trên phân phối bình thường

So sánh biểu đồ hộp có phân phối gần chuẩn và hàm mật độ xác suất (pdf) cho phân phối chuẩn

Hình ảnh trên là sự so sánh giữa biểu đồ hình hộp có phân phối gần chuẩn và hàm mật độ xác suất (pdf) cho phân phối chuẩn. Lý do tại sao tôi cho bạn xem hình ảnh này là việc xem xét một phân phối thống kê phổ biến hơn là xem một biểu đồ hình hộp. Nói cách khác, nó có thể giúp bạn hiểu về một boxplot.

Phần này sẽ bao gồm nhiều thứ bao gồm:

  • Mức độ ngoại lệ như thế nào (đối với phân phối chuẩn) .7% dữ liệu.
  • "Tối thiểu" và "tối đa" là gì

Phần này của bài đăng rất giống với bài viết quy tắc 689599.7 , nhưng được điều chỉnh cho một cốt truyện. Để có thể hiểu phần trăm đến từ đâu, điều quan trọng là phải biết về hàm mật độ xác suất (PDF). Một PDF được sử dụng để xác định xác suất của biến ngẫu nhiên rơi xuống trong một phạm vi cụ thể của các giá trị , như trái ngược với tham gia vào bất kỳ giá trị một. Xác suất này được cho bởi tích phân của PDF của biến này trên phạm vi đó - nghĩa là, nó được cung cấp bởi diện tích dưới hàm mật độ nhưng nằm trên trục hoành và giữa giá trị thấp nhất và lớn nhất của phạm vi. Định nghĩa này có thể không có nhiều ý nghĩa vì vậy hãy làm rõ nó bằng cách vẽ đồ thị hàm mật độ xác suất cho một phân phối chuẩn. Phương trình dưới đây là hàm mật độ xác suất cho phân phối chuẩn

PDF cho một bản phân phối thông thường

Hãy đơn giản hóa nó bằng cách giả sử chúng ta có trung bình (μ) là 0 và độ lệch chuẩn (σ) là 1.

PDF cho một bản phân phối thông thường

Điều này có thể được vẽ bằng bất kỳ thứ gì, nhưng tôi chọn vẽ biểu đồ bằng 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);

# 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)

Điều quan trọng cần lưu ý là đối với bất kỳ tệp PDF nào, diện tích bên dưới đường cong phải là 1 (xác suất vẽ bất kỳ số nào từ phạm vi của hàm luôn là 1).

Vẽ đồ thị và diễn giải một Boxplot

Phần này phần lớn dựa trên video xem trước miễn phí từ khóa học Python cho Trực quan hóa dữ liệu của tôi . Trong phần trước, chúng ta đã xem xét một ô vuông trên phân phối chuẩn, nhưng vì bạn rõ ràng không phải lúc nào cũng có một phân phối chuẩn cơ bản, hãy xem qua cách sử dụng một ô vuông trên một tập dữ liệu thực. Để làm điều này, chúng tôi sẽ sử dụng Bộ dữ liệu Wisconsin (Chẩn đoán) Ung thư vú . Nếu bạn không có tài khoản Kaggle, bạn có thể tải xuống bộ dữ liệu từ github của tôi .

Đọc trong dữ liệu

Đoạn mã dưới đây đọc dữ liệu vào khung dữ liệu gấu trúc.

import pandas as pd import seaborn as sns import matplotlib.pyplot as plt # Put dataset on my github repo df = pd.read_csv('https://raw.githubusercontent.com/mGalarnyk/Python_Tutorials/master/Kaggle/BreastCancerWisconsin/data/data.csv')

Biểu đồ hình hộp được sử dụng bên dưới để phân tích mối quan hệ giữa một đặc điểm phân loại (khối u ác tính hoặc lành tính) và một đặc điểm liên tục (area_mean).

Có một số cách để vẽ đồ thị hình hộp thông qua Python. Bạn có thể vẽ biểu đồ hình hộp thông qua seaborn, matplotlib hoặc gấu trúc.

sơ sinh

Đoạn mã dưới đây chuyển khung dữ liệu gấu trúc dfvào seaborn's boxplot.

sns.boxplot(x='diagnosis', y='area_mean', data=df)

Các hộp đấu bạn đã thấy trong bài viết này được thực hiện thông qua matplotlib. Cách tiếp cận này có thể tẻ nhạt hơn nhiều, nhưng có thể cung cấp cho bạn mức độ kiểm soát cao hơn.

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'])

You can make this a lot prettier with a little bit of work

Bạn có thể vẽ một boxplot bằng cách gọi .boxplot()trên DataFrame của bạn. Đoạn mã dưới đây tạo một ô vuông của area_meancột liên quan đến các chẩn đoán khác nhau.

df.boxplot(column = 'area_mean', by = 'diagnosis'); plt.title('')

Ô hộp có khía cho phép bạn đánh giá khoảng tin cậy (theo mặc định là khoảng tin cậy 95%) cho các trung điểm của mỗi ô vuông.

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']);

Not the prettiest yet.

Khoa học dữ liệu là về truyền đạt kết quả, vì vậy hãy nhớ rằng bạn luôn có thể làm cho các hộp của mình đẹp hơn một chút với một chút công việc (mã ở đây ).

Sử dụng biểu đồ, chúng ta có thể so sánh phạm vi và sự phân bố của area_mean để chẩn đoán ác tính và lành tính. Chúng tôi quan sát thấy rằng có một sự thay đổi lớn hơn đối với vùng_mạch khối u ác tính cũng như các ngoại lệ lớn hơn.

Ngoài ra, vì các rãnh trong ô hộp không chồng lên nhau, bạn có thể kết luận rằng với độ tin cậy 95%, các trung điểm thực sự khác nhau.

Dưới đây là một số điều khác cần lưu ý về các hộp đấu:

  1. Hãy nhớ rằng bạn luôn có thể lấy ra dữ liệu từ ô hộp trong trường hợp bạn muốn biết các giá trị số cho các phần khác nhau của ô ô vuông.
  2. Matplotlib không ước tính phân phối chuẩn trước tiên và tính toán các phần tư từ các tham số phân phối ước tính. Giá trị trung bình và phần tư được tính toán trực tiếp từ dữ liệu. Nói cách khác, sơ đồ hộp của bạn có thể trông khác tùy thuộc vào sự phân bố dữ liệu của bạn và kích thước của mẫu, ví dụ: không đối xứng và có nhiều hoặc ít ngoại lệ.

Hy vọng rằng đây không phải là quá nhiều thông tin về ô hộp. Các hướng dẫn trong tương lai sẽ lấy một số kiến ​​thức này và xem xét cách áp dụng nó để hiểu các khoảng tin cậy. Hướng dẫn tiếp theo của tôi là Cách sử dụng và Tạo Bảng Z (bảng thông thường tiêu chuẩn) . Nếu bạn có bất kỳ câu hỏi hoặc suy nghĩ nào về hướng dẫn, vui lòng liên hệ với các nhận xét bên dưới, thông qua trang video YouTube hoặc thông qua Twitter .