วิธีการคำนวณความสัมพันธ์ใน 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

เพิ่มความคิดเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *