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

สำรวจความสัมพันธ์ใน Python


ความสัมพันธ์เป็นศัพท์ทางสถิติในการวัดความสัมพันธ์ระหว่างสองตัวแปร หากความสัมพันธ์เป็นสตริง แสดงว่าการเปลี่ยนแปลงในตัวแปรหนึ่งสะท้อนถึงการเปลี่ยนแปลงในอีกตัวแปรหนึ่งในรูปแบบที่คาดการณ์ได้ เราจะบอกว่าตัวแปรมีความสัมพันธ์กัน นอกจากนี้ การแปรผันในตัวแปรแรกอาจทำให้เกิดการเปลี่ยนแปลงเชิงบวกหรือเชิงลบในตัวแปรที่สอง ดังนั้น จึงกล่าวกันว่ามีความสัมพันธ์ทางบวกหรือทางลบ ตามหลักการแล้วค่าของสัมประสิทธิ์สหสัมพันธ์จะแตกต่างกันระหว่าง -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