Correlation (สหสัมพันธ์) เป็น thuật ngữทางสถิติที่วัดความสัมพันธ์ระหว่างตัวแปรสองตัว หากความสัมพันธ์แข็งแรง หมายถึงการเปลี่ยนแปลงในตัวแปรหนึ่งสะท้อนการเปลี่ยนแปลงในอีกตัวแปรหนึ่งในรูปแบบที่คาดการณ์ได้ เราจะว่าตัวแปรทั้งสองมีสหสัมพันธ์ รวมถึง การเปลี่ยนแปลงในตัวแปรแรกอาจทำให้เกิดการเปลี่ยนแปลงเชิงบวกหรือเชิงลบในตัวแปรที่สอง ตามลำดับ พวกเขาจึงถูกกล่าวว่ามีสหสัมพันธ์เชิงบวกหรือเชิงลบ อย่าง lý tưởng ค่าสัมประสิทธิ์สหสัมพันธ์จะอยู่ระหว่าง -1 ถึง +1
- หากค่าเป็น +1 หรือใกล้เคียง หมายถึงตัวแปรมีสหสัมพันธ์เชิงบวก และเปลี่ยนแปลงในทิศทางเดียวกันพร้อมกัน
- หากค่าเป็น -1 หรือใกล้เคียง หมายถึงตัวแปรมีสหสัมพันธ์เชิงลบ และเปลี่ยนแปลงในทิศทางตรงข้ามพร้อมกัน
- หากค่าเป็น 0 หรือใกล้เคียง หมายถึงตัวแปรไม่มีสหสัมพันธ์
มีวิธีต่างๆ ในการวัดสัมประสิทธิ์สหสัมพันธ์ พวกเขามีให้เป็นฟังก์ชันใน numpy หรือ scipy.stats ด้านล่างเราจะดูวิธีใช้งาน
ใช้ Spearman's Correlation
Spearman's correlation ใช้วัดระดับความสัมพันธ์ระหว่างตัวแปรที่เชื่อมโยงแบบเส้นตรง (linearly related) อิงตามสูตรที่แพ็กเกจ scipy.stats ใช้เพื่อสร้างผลลัพธ์ เป็นสูตรที่ใช้กว้างที่สุดสำหรับหาสหสัมพันธ์
ในตัวอย่างด้านล่าง เราเอาตัวแปรสองตัวที่ค่าถูกสร้างโดย numpy.random() function จากนั้นนำ spearmanr() มาใช้เพื่อได้ผลลัพธ์สุดท้าย
ตัวอย่าง
from numpy.random import randn from numpy.random import seed from scipy.stats import spearmanr seed(1) data_input1 = 20 * randn(1000) + 100 data_input2 = data_input1 + (10 * randn(1000) + 50) correlation = spearmanr(data_input1, data_input2) print(correlation)
ผลลัพธ์
การรันโค้ดข้างต้นจะได้ผลลัพธ์ดังนี้:
SpearmanrResult(correlation=0.8724050484050484, pvalue=1.58425746359e-312)
ใช้ Pearson's Correlation
Pearson's correlation เป็นอีกวิธีหนึ่งในการวัดระดับความสัมพันธ์ระหว่างตัวแปรที่เชื่อมโยงแบบเส้นตรง อิงตามสูตรที่แพ็กเกจ scipy.stats ใช้เพื่อสร้างผลลัพธ์
ในตัวอย่างด้านล่าง เราเอาตัวแปรสองตัวที่ค่าถูกสร้างโดย numpy.random() function จากนั้นนำ pearsonr() มาใช้เพื่อได้ผลลัพธ์สุดท้าย
ตัวอย่าง
from numpy.random import randn
from numpy.random import seed
from scipy.stats import pearsonr
seed(1)
data1 = 20 * randn(1000) + 100
data2 = data1 + (10 * randn(1000) + 50)
correlation, _ = pearsonr(data1, data2)
print('Pearsons correlation: %.3f' % correlation)
ผลลัพธ์
การรันโค้ดข้างต้นจะได้ผลลัพธ์ดังนี้:
Pearsons correlation: 0.888