ความสัมพันธ์เป็นศัพท์ทางสถิติในการวัดความสัมพันธ์ระหว่างสองตัวแปร หากความสัมพันธ์เป็นสตริง แสดงว่าการเปลี่ยนแปลงในตัวแปรหนึ่งสะท้อนถึงการเปลี่ยนแปลงในอีกตัวแปรหนึ่งในรูปแบบที่คาดการณ์ได้ เราจะบอกว่าตัวแปรมีความสัมพันธ์กัน นอกจากนี้ การแปรผันในตัวแปรแรกอาจทำให้เกิดการเปลี่ยนแปลงเชิงบวกหรือเชิงลบในตัวแปรที่สอง ดังนั้น จึงกล่าวกันว่ามีความสัมพันธ์ทางบวกหรือทางลบ ตามหลักการแล้วค่าของสัมประสิทธิ์สหสัมพันธ์จะแตกต่างกันระหว่าง -1 ถึง +1
- หากค่าเป็น +1 หรือใกล้เคียง เราจะบอกว่าตัวแปรมีความสัมพันธ์เชิงบวก และแปรผันไปในทิศทางเดียวกันพร้อมๆ กัน
- ถ้าค่าเป็น -1 หรือใกล้เคียงกับค่านั้น เราจะบอกว่าตัวแปรมีความสัมพันธ์เชิงลบ และแปรผันไปในทิศทางตรงกันข้ามพร้อมกัน
- ถ้าค่าเป็น 0 หรือใกล้เคียง เราจะบอกว่าตัวแปรไม่มีความสัมพันธ์กัน
มีหลายวิธีในการวัดค่าสัมประสิทธิ์สหสัมพันธ์ มีให้ใช้งานในรูปแบบ numpy หรือ scipy.stats ด้านล่างเราจะดูว่ามันใช้งานอย่างไร
การใช้สหสัมพันธ์ของสเปียร์แมน
สหสัมพันธ์ของสเปียร์แมนคือการวัดระดับความสัมพันธ์ระหว่างตัวแปรที่เกี่ยวข้องเชิงเส้น มันขึ้นอยู่กับสูตรที่ใช้โดยแพ็คเกจ scipy.stats เพื่อสร้างผลลัพธ์ เป็นสูตรที่ใช้กันอย่างแพร่หลายในการค้นหาสหสัมพันธ์
ในตัวอย่างด้านล่าง เราใช้ตัวแปรสองตัวที่มีค่าถูกสร้างขึ้นโดยใช้ฟังก์ชัน numpy.randon() จากนั้นใช้ 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)
การใช้สหสัมพันธ์ของเพียร์สัน
ความสัมพันธ์ของเพียร์สันเป็นอีกวิธีหนึ่งในการวัดระดับความสัมพันธ์ระหว่างตัวแปรที่เกี่ยวข้องเชิงเส้น มันขึ้นอยู่กับสูตรที่ใช้โดยแพ็คเกจ scipy.stats เพื่อสร้างผลลัพธ์
ในตัวอย่างด้านล่าง เราใช้ตัวแปรสองตัวที่มีค่าถูกสร้างขึ้นโดยใช้ฟังก์ชัน numpy.randon() จากนั้นใช้ 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