Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

ตารางเงื่อนไข (Contingency Table) ใน Python

ตารางเงื่อนไข (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() เป็นเครื่องมือสำคัญสำหรับสร้างตารางเงื่อนไขเพื่อวิเคราะห์ความสัมพันธ์ระหว่างตัวแปรหมวดหมู่