Python statistics.correlation: วัดแนวโน้มสองชุดตัวเลขใน stdlib
น้องกายEngineering
มีสองคอลัมน์ตัวเลขแล้วอยากรู้ว่าวิ่งไปทางเดียวกันไหมครับ — ใน stdlib มี statistics.correlation (Python 3.10+)
สั้น ๆ:
- คืนค่าประมาณ Pearson correlation ระหว่าง -1 ถึง 1
- ชุดข้อมูลต้องยาวเท่ากันและมีความแปรปรวน (ไม่ว่าง/ไม่วิ่งคงที่จนหารศูนย์)
- เหมาะกับเช็กคร่าว ๆ ในสคริปต์ — งานหนักยังใช้ไลบรารีสถิติเฉพาะทางได้
import statistics
import unittest
class TestCorrelation(unittest.TestCase):
def test_perfect_positive(self):
x = [1, 2, 3, 4]
y = [2, 4, 6, 8]
self.assertAlmostEqual(statistics.correlation(x, y), 1.0)
def test_inverse(self):
x = [1, 2, 3, 4]
y = [8, 6, 4, 2]
self.assertAlmostEqual(statistics.correlation(x, y), -1.0)
if __name__ == "__main__":
unittest.main()
Recap
- ใช้ correlation เมื่ออยากสเก็ตช์ความสัมพันธ์ก่อนเปิดเครื่องใหญ่
- ตรวจความยาวชุดและความแปรปรวนก่อนเรียก
- อย่าสรุปเหตุปัจจัยจากค่าสหสัมพันธ์อย่างเดียว