วิธีการคำนวณความสัมพันธ์ใน python
วิธีหนึ่งในการหาปริมาณความสัมพันธ์ระหว่างตัวแปรสองตัวคือการใช้ สัมประสิทธิ์สหสัมพันธ์แบบเพียร์สัน ซึ่ง เป็นหน่วยวัดความสัมพันธ์เชิงเส้นระหว่างตัวแปรสองตัว จะใช้ค่าระหว่าง -1 ถึง 1 เสมอโดยที่:
- -1 บ่งชี้ถึงความสัมพันธ์เชิงเส้นเชิงลบอย่างสมบูรณ์ระหว่างตัวแปรสองตัว
- 0 บ่งชี้ว่าไม่มีความสัมพันธ์เชิงเส้นระหว่างตัวแปรสองตัว
- 1 บ่งชี้ความสัมพันธ์เชิงเส้นเชิงบวกอย่างสมบูรณ์ระหว่างตัวแปรสองตัว
ยิ่งค่าสัมประสิทธิ์สหสัมพันธ์จากศูนย์มากเท่าใด ความสัมพันธ์ระหว่างตัวแปรทั้งสองก็จะยิ่งแข็งแกร่งขึ้นเท่านั้น
บทช่วยสอนนี้จะอธิบายวิธีคำนวณความสัมพันธ์ระหว่างตัวแปรใน Python
วิธีการคำนวณความสัมพันธ์ใน Python
ในการคำนวณความสัมพันธ์ระหว่างตัวแปรสองตัวใน Python เราสามารถใช้ฟังก์ชัน Numpy corrcoef()
import numpy as np np.random.seed(100) #create array of 50 random integers between 0 and 10 var1 = np.random.randint(0, 10, 50) #create a positively correlated array with some random noise var2 = var1 + np.random.normal(0, 10, 50) #calculate the correlation between the two arrays np.corrcoef(var1, var2) [[ 1. 0.335] [ 0.335 1. ]]
จะเห็นได้ว่าค่าสัมประสิทธิ์สหสัมพันธ์ระหว่างตัวแปรทั้งสองนี้มีค่า เท่ากับ 0.335 ซึ่งเป็นความสัมพันธ์เชิงบวก
ตามค่าเริ่มต้น ฟังก์ชันนี้จะสร้างเมทริกซ์ของค่าสัมประสิทธิ์สหสัมพันธ์ หากเราต้องการคืนค่าสัมประสิทธิ์สหสัมพันธ์ระหว่างตัวแปรทั้งสองเท่านั้น เราสามารถใช้ไวยากรณ์ต่อไปนี้:
np.corrcoef(var1, var2)[0,1] 0.335
เพื่อทดสอบว่าความสัมพันธ์นี้มีนัยสำคัญทางสถิติหรือไม่ เราสามารถคำนวณค่า p-value ที่เกี่ยวข้องกับค่าสัมประสิทธิ์สหสัมพันธ์แบบ Pearson โดยใช้ฟังก์ชัน Scipy pearsonr() ซึ่งจะส่งคืนค่าสัมประสิทธิ์สหสัมพันธ์แบบ Pearson เช่นเดียวกับค่า p-value แบบสองด้าน
from scipy.stats.stats import pearsonr pearsonr(var1, var2) (0.335, 0.017398)
ค่าสัมประสิทธิ์สหสัมพันธ์คือ 0.335 และค่า p สองด้านคือ 0.017 เนื่องจากค่า p นี้น้อยกว่า 0.05 เราจะสรุปได้ว่ามีความสัมพันธ์ที่มีนัยสำคัญทางสถิติระหว่างตัวแปรทั้งสอง
หากคุณต้องการคำนวณความสัมพันธ์ระหว่างตัวแปรหลายตัวใน Pandas DataFrame คุณสามารถใช้ฟังก์ชัน .corr() ได้
import pandas as pd data = pd.DataFrame(np.random.randint(0, 10, size=(5, 3)), columns=['A', 'B', 'C']) data ABC 0 8 0 9 1 4 0 7 2 9 6 8 3 1 8 1 4 8 0 8 #calculate correlation coefficients for all pairwise combinations data.corr() ABC A 1.000000 -0.775567 -0.493769 B -0.775567 1.000000 0.000000 C -0.493769 0.000000 1.000000
และหากคุณต้องการคำนวณความสัมพันธ์ระหว่างตัวแปรเฉพาะสองตัวใน DataFrame คุณสามารถระบุตัวแปรได้:
data['A'].corr(data['B']) -0.775567
แหล่งข้อมูลเพิ่มเติม
บทช่วยสอนต่อไปนี้จะอธิบายวิธีทำงานทั่วไปอื่นๆ ใน Python:
วิธีสร้างเมทริกซ์สหสัมพันธ์ใน Python
วิธีการคำนวณความสัมพันธ์อันดับ Spearman ใน Python
วิธีการคำนวณความสัมพันธ์อัตโนมัติใน Python