ตารางเงื่อนไข (Contingency Table) เป็นตารางแสดงการกระจายของตัวแปรหนึ่งในแถว และอีกตัวแปรหนึ่งในคอลัมน์ ใช้ศึกษาความสัมพันธ์ระหว่างสองตัวแปร เป็นตารางหลายทาง (multiway table) ที่อธิบายชุดข้อมูลที่แต่ละการสังเกตอยู่ในหมวดหมู่หนึ่งสำหรับตัวแปรหลายตัว โดยพื้นฐานแล้วเป็นการนับจำนวน (tally of counts) ระหว่างตัวแปรหมวดหมู่สองตัวขึ้นไป ตารางเงื่อนไขยังเรียกว่า crosstabs หรือ two-way tables ใช้ในสถิติเพื่อสรุปความสัมพันธ์ระหว่างตัวแปรหมวดหมู่หลายตัว
สัมประสิทธิ์เงื่อนไข (Contingency coefficient) เป็นสัมประสิทธิ์ของการเชื่อมโยง บอกว่าตัวแปรหรือชุดข้อมูลสองตัวเป็นอิสระหรือขึ้นอยู่กับกันหรือไม่ ยังรู้จักว่า Pearson's Coefficient
ตัวอย่าง
ในตัวอย่างด้านล่างเราใช้ชุดข้อมูลดอกไม้ไอริส (iris) สำหรับวิเคราะห์ ชุดข้อมูลนี้ประกอบด้วย 50 ตัวอย่างจาก 3 สายพันธุ์ของไอริส (Iris setosa, Iris virginica, Iris versicolor) วัด 4 คุณลักษณะจากแต่ละตัวอย่าง: ความยาวและความกว้างของกลีบดอกและกลีบเลี้ยง ในเซนติเมตร เราจะสร้างโมเดลเงื่อนไขบนคุณลักษณะเหล่านี้ ซึ่งจะใช้ในการแยกสายพันธุ์จากกัน
การอ่านชุดข้อมูล
ตัวอย่าง
import numpy as np
import pandas as pd
datainput = pd.read_csv("iris.csv")
print(datainput.head(5))
การรันโค้ดข้างต้นจะให้ผลลัพธ์ดังนี้:
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
สถิติทั่วไปของข้อมูล
ต่อไปเราเก็บสถิติทั่วไปของข้อมูลโดยใช้ describe() ให้ความเข้าใจเกี่ยวกับค่าเฉลี่ยและควอไทล์ต่างๆ ของการกระจายข้อมูล
ตัวอย่าง
import numpy as np
import pandas as pd
datainput = pd.read_csv("iris.csv")
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
ชนิดข้อมูล
ต่อไปเราสังเกตชนิดข้อมูลต่างๆ ของคอลัมน์ใน DataFrame
ตัวอย่าง
import numpy as np
import pandas as pd
datainput = pd.read_csv("iris.csv")
print(datainput.dtypes)
การรันโค้ดข้างต้นจะให้ผลลัพธ์ดังนี้:
SepalLengthCm float64 SepalWidthCm float64 PetalLengthCm float64 PetalWidthCm float64 Species object dtype: object
การสร้างตารางเงื่อนไข
ตอนนี้เราสร้างตารางเงื่อนไขสำหรับคอลัมน์ที่แสดงความกว้างกลีบเลี้ยงสำหรับแต่ละสายพันธุ์ สำหรับนี้เราใช้ฟังก์ชัน crosstab ใน pandas และส่งชื่อคอลัมน์ทั้งสองเป็นอินพุต
ตัวอย่าง
import numpy as np
import pandas as pd
datainput = pd.read_csv("iris.csv")
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
ตารางเงื่อนไขหลายตัวแปร (Multi-variate Contingency Table)
ในกรณีนี้เราใช้มากกว่าสองคอลัมน์สร้างตารางเงื่อนไข ที่นี่เราใช้ความยาวและความกว้างกลีบเลี้ยงสำหรับแต่ละสายพันธุ์
import numpy as np
import pandas as pd
datainput = pd.read_csv("iris.csv")
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
สรุป: ฟังก์ชัน pd.crosstab() เป็นเครื่องมือสำคัญสำหรับสร้างตารางเงื่อนไขเพื่อวิเคราะห์ความสัมพันธ์ระหว่างตัวแปรหมวดหมู่