Bảng chéo (contingency table) hiển thị phân phối của một biến theo hàng và biến khác theo cột. Dùng để nghiên cứu tương quan giữa hai biến. Là bảng đa chiều mô tả tập dữ liệu mà mỗi quan sát thuộc một danh mục cho từng biến. Về cơ bản là bảng đếm tần suất giữa hai hoặc nhiều biến phân loại. Còn gọi là crosstabs hoặc two-way tables, dùng trong thống kê tóm tắt mối quan hệ giữa các biến phân loại.
Hệ số chéo (contingency coefficient) là hệ số liên kết cho biết hai biến/đối tượng có độc lập hay phụ thuộc. Còn gọi là Hệ số Pearson.
Ví dụ
Dùng bộ dữ liệu hoa iris (50 mẫu mỗi loài: Iris setosa, Iris virginica, Iris versicolor). 4 đặc trưng: dài/rộng đài hoa và cánh hoa (cm). Tạo mô hình bảng chéo trên các đặc trưng để phân biệt loài.
Đọc dữ liệu
import numpy as np
import pandas as pd
datainput = pd.read_csv("iris.csv")
print(datainput.head(5))
Kết quả (5 dòng đầu):
SepalLengthCm SepalWidthCm PetalLengthCm PetalWidthCm Species 0 5.1 3.5 1.4 0.2 Iris-setosa 1 4.9 3.0 1.4 0.2 Iris-setosa 2 4.7 3.2 1.3 0.2 Iris-setosa 3 4.6 3.1 1.5 0.2 Iris-setosa 4 5.0 3.6 1.4 0.2 Iris-setosa
Thống kê tổng quan
Dùng describe() xem mean, quartiles, phân phối dữ liệu.
print(datainput.describe())
SepalLengthCm SepalWidthCm PetalLengthCm PetalWidthCm count 150.000000 150.000000 150.000000 150.000000 mean 5.843333 3.054000 3.758667 1.198667 std 0.828066 0.433594 1.764420 0.763161 min 4.300000 2.000000 1.000000 0.100000 25% 5.100000 2.800000 1.600000 0.300000 50% 5.800000 3.000000 4.350000 1.300000 75% 6.400000 3.300000 5.100000 1.800000 max 7.900000 4.400000 6.900000 2.500000
Kiểu dữ liệu
print(datainput.dtypes)
SepalLengthCm float64 SepalWidthCm float64 PetalLengthCm float64 PetalWidthCm float64 Species object dtype: object
Tạo bảng chéo
Tạo bảng chéo cho cột độ rộng cánh hoa (PetalWidthCm) theo từng loài. Dùng crosstab của pandas.
width_species = pd.crosstab(datainput['PetalWidthCm'], datainput['Species'], margins=False) print(width_species)
Species Iris-setosa Iris-versicolor Iris-virginica PetalWidthCm 0.1 6 0 0 0.2 28 0 0 0.3 7 0 0 1.0 0 7 0 1.1 0 3 0 1.2 0 5 0 1.8 0 1 11 1.9 0 0 5 2.0 0 0 6 2.1 0 0 6 2.5 0 0 3
Bảng chéo đa biến
Dùng nhiều hơn 2 cột: cả độ dài và độ rộng cánh hoa cho mỗi loài.
length_width_species = pd.crosstab([datainput.PetalLengthCm, datainput.PetalWidthCm], datainput.Species, margins=False) print(length_width_species)
Species Iris-setosa Iris-versicolor Iris-virginica PetalLengthCm PetalWidthCm 1.0 0.2 1 0 0 1.1 0.1 1 0 0 1.2 0.2 2 0 0 1.3 0.2 4 0 0 0.3 2 0 0 ... ... ... ... 6.4 2.0 0 0 1 6.6 2.1 0 0 1 6.7 2.0 0 0 1 2.2 0 0 1 6.9 2.3 0 0 1