Excel Statistics

ความสัมพันธ์ระหว่าง Covariance, Correlation และ R-Squared

What’s up friends! บทความนี้แอดจะมาอธิบายความสัมพันธ์ของค่าสถิติสำคัญสามตัวคือ covariance, correlation และ r-squared รวมถึงการแปลผลอย่างถูกต้อง พร้อมวิธีทำง่ายๆใน Excel/ R

นักสถิตินิยมใช้สถิติสามตัวนี้ในการหาความสัมพันธ์ระหว่างตัวแปรสองตัว ตัวอย่างวันนี้เราจะมาลองสร้าง linear morel ง่ายๆทำนายค่าโดยสารรถแท๊กซี่ y = f(x) = constant + slope*x โดยที่ y = taxi fare และ x = distance ดาวน์โหลดไฟล์ Excel (18.8KB) สำหรับ tutorial นี้ได้ที่นี่

ภาษาไทยเราเรียก y = ตัวแปรตาม (dependent) และ x = ตัวแปรต้น (independent) ข้อมูลที่แอดสร้างขึ้นมามี 2 columns, 20 rows ข้อมูลสะอาดไม่มี missing value มาลองคำนวณ summary statistics ง่ายๆกันก่อน

Excel ใช้ฟังชั่น =AVERAGE() สำหรับหาค่าเฉลี่ย และฟังชั่น = STDEV.S() สำหรับหาส่วนเบี่ยงเบนมาตรฐานของกลุ่มตัวอย่าง สังเกตว่าฟังชั่น STDEV นั้นมี .S ต่อท้ายด้วย (i.e. S ย่อมากจาก sample)

## mean of distance 
=AVERAGE(A2:A21)

## standard deviation of distance
=STDEV.S(A2:A21)

To Do – ค่าเฉลี่ยและส่วนเบี่ยงเบนมาตรฐานของ taxi fare (column B) มีค่าเท่าไหร่?

Covariance

มาเริ่มกันที่สถิติตัวแรก Covariance คำนวณด้วยสูตรด้านล่าง ใช้แค่บวกลบคูณหารง่ายๆ

Formula cov(x, y) = sum( (x - mean_x) * (y - mean_y) ) * (1/ (n-1))

Covariance คือค่าสถิติที่ใช้วัดความสัมพันธ์ของตัวแปรสองตัว (เกิดจากคำว่า Co + Variance) เรียกสั้นๆว่า cov มีค่าเป็นได้ทั้งบวกและลบ โดยเครื่องหมาย +/- ในทางสถิติแค่บอกทิศทางความสัมพันธ์

  • Positive covariance แปลว่า x ↑ y ↑ (หรือ x ↓ y ↓ เปลี่ยนแปลงในทิศทางเดียวกัน)
  • Negative covariance แปลว่า x ↑ y ↓ (หรือ x ↓ y ↑ เปลี่ยนแปลงในทิศทางตรงข้ามกัน)

การอธิบายผล cov จะทำได้ค่อนข้างยากนิดนึง เพราะว่าค่า cov ไม่มี limit (i.e. no lower, upper bound) แปลว่าข้อมูลบางชุดเราอาจคำนวณ cov ได้เท่ากับ 100, 2500, 30000 หรือ -350000 ก็เป็นไปได้ นักสถิติจึงทำการ normalize covariance ให้มีค่าอยู่ระหว่าง [-1, +1] และเรียกสถิติตัวใหม่นี้ว่า Correlation เริ่มคุ้น!

Excel ใช้สูตร =COVARIANCE.S(distance, fare) เท่ากับ 183.6495 มีค่าเป็นบวกแปลว่าตัวแปรสองตัวเคลื่อนที่ในทิศทางเดียวกัน ระยะทางมากขึ้น ค่าโดยสารก็จะสูงขึ้น make sense!

Correlation

Correlation coefficient คือ covariance ที่ถูก normalized แล้ว เรียกสั้นๆว่า cor (นักสถิติใช้ตัวย่อว่า r) ไม่ว่าข้อมูลที่นำมาใช้คำนวณจะอยู่บน scale แบบใดก็ตาม cor จะมีค่าอยู่ในช่วง [-1, +1] เสมอ นักสถิติจึงนิยมใช้ค่า correlation สรุปผลข้อมูลมากกว่า covariance ชื่อเต็มของ correlation คือ “Pearson Product Moment Correlation Coefficient” ชื่อมึงจะยาวไปไหน 555+ (ตั้งชื่อตาม Karl Pearson ผู้สร้างค่าสถิตินี้)

Formula cor(x, y) = cov(x, y) / (sd_x * sd_y)

จากสูตรด้านบนจะเห็นว่า correlation = covariance / (sd_x * sd_y) เวลาได้ยินคำว่า normalization เทคนิคที่นักสถิตินิยมใช้คือการหาตัวหาร (i.e. denominator) ที่ทำให้ค่าสถิตินั้นๆอยู่ในช่วงที่เราต้องการ กรณีของ covariance ตัวหารที่เราต้องการคือ (sd_x * sd_y) เพื่อใช้ปรับค่า cov ให้อยู่ระหว่าง [-1, +1]

ซ้าย positive correlation | กลาง no correlation | ขวา negative correlation

วิธีการอ่านค่า correlation ก็จะคล้ายๆกับ covariance เพราะมันคิดมาจากสูตรเดียวกัน

  • Positive correlation (r > 0) ตัวแปร x และ y เคลื่อนที่ในทิศทางเดียวกัน
  • Negative correlation (r < 0) ตัวแปร x และ y เคลื่อนที่ในทิศทางตรงข้ามกัน
  • No correlation (r = 0) ตัวแปร x และ y ไม่มีความสัมพันธ์กันเลย i.e. ไม่มี pattern ที่โดดเด่น ข้อมูลกระจายตัวแบบสุ่ม

นอกจากทิศทางความสัมพันธ์ +/- เรายังสามารถบอกระดับความสัมพันธ์ได้อีกด้วย i.e. ตัวแปรสองตัวมีความสัมพันธ์กันมากหรือน้อย ภาษาอังกฤษเราใช้คำว่า magnitude หรือ strength ยิ่งค่า correlation มีค่าเข้าใกล้ |1| มากเท่าไหร่ (i.e. absolute) ความสัมพันธ์จะยิ่งสูงมากขึ้นเท่านั้น ในกรณีที่ r = |1| เราเรียกว่า “perfect correlation” มาลองดูเกณฑ์การวัดระดับค่า r ที่นักสถิตินิยมใช้ในตารางด้านล่าง

Absolute rInterpretation
0.1 – 0.3small
0.3 – 0.5medium
0.5 – 1.0large

Excel ใช้สูตร =CORREL(distance, fare) เท่ากับ .9864 มีค่าเป็นบวกแปลว่าตัวแปรสองตัวเคลื่อนที่ในทิศทางเดียวกัน แปลผลเหมือนกับ covariance โดยค่าที่คำนวณได้อยู่ในเกณฑ์สูงมาก i.e. very strong correlation

สำคัญมาก! ทั้ง covariance และ correlation ใช้วัดความสัมพันธ์ของตัวแปร (x, y) แบบ numeric/ continuous (i.e. สามารถคำนวณค่า mean, sd ได้) และความสัมพันธ์ของทั้งสองตัวแปรต้องเป็นแบบ linear เท่านั้น

Tip – วิธีการดีที่สุดที่เราใช้ตรวจสอบความสัมพันธ์ของตัวแปร numeric สองตัวคือการสร้าง scatter plot ใน Excel เลือกข้อมูล (x, y) ที่เราต้องการ ไปที่ Insert > Charts > Scatter Plot และดูความชัน (slope) ของกราฟ

R-Squared

Correlation บอกทิศทางและระดับความสัมพันธ์ แต่ไม่ได้บอกว่าตัวแปรทั้งสองตัวแชร์ variance กันเท่าไหร่ หรือพูดง่ายๆคือ x อธิบาย y ได้กี่ %? เราสามารถตอบคำถามนี้ได้ด้วยค่า r-squared ซึ่งก็คือค่า correlation ยกกำลังสอง! (i.e. เราใช้ r แทนค่า correlation ส่วนการยกกำลังสองในทางคณิตศาสตร์เรียกว่า squared)

Formula correlation ** 2

r-squared หรือ r2 ใน context นี้เรียกว่า “explained variance” (หรือชื่อทางการในวิชาสถิติคือ Coefficient of Determination) โดยค่า r-squared จะมีค่าอยู่ระหว่าง [0, 1] ยิ่งเข้าใกล้ 1 แปลว่าตัวแปรสองตัวมีความสัมพันธ์กันสูง และเราสามารถใช้ x อธิบายหรือทำนาย y ได้ค่อนข้างดี

correlation (r)r-squared (r2)
0.20.04
0.50.25
0.90.81

จากตารางด้านบน จะเห็นว่ายิ่งค่า correlation สูงขึ้นมากเท่าไหร่ เช่น r = .9 ตัวแปรสองตัวยิ่งแชร์ความแปรปรวน (variance) กันมากขึ้นเท่านั้น explained variance = .9 * .9 = .81 หรือสรุปว่าตัวแปร y ถูกอธิบายด้วยตัวแปร x ได้ประมาณ 81% (ที่เหลืออีก 19% ของค่า y ที่ยังไม่ถูกอธิบายด้วย x เรียกว่า unexplained variance)

## simple linear model taxi fare as a function of distance
y = 37.895 + 5.2471*x
r-squared = 0.9731

วิธีคำนวณ r-squared ใน Excel ทำได้หลายแบบ วิธีที่ง่ายที่สุดคือใช้ฟังชั่น =RSQ(A2:A21, B2:B21) หรือจะสร้าง scatter plot เสร็จแล้วคลิกขวาที่กราฟเพิ่ม linear trend line (i.e. Simple Linear Regression) และเรียกดูสมการ y = constant + slope*x และ r-squared บนกราฟได้เลย (ตัวอย่างอยู่ในไฟล์ Excel)

Note – สำหรับการอ่านค่า R2 ของโมเดล multiple linear regression y = f(x1, x2, x3, …) เวลาเรามีตัวแปรต้นมากกว่าหนึ่งตัว จะแตกต่างจาก simple model นิดนึง ไว้แอดมาเขียนสรุปให้อ่านในบทความต่อไป

Summary

R2D2 และ C3PO จาก Star Wars

ค่าสถิติทั้งสามตัวใช้วัดความสัมพันธ์ของตัวแปรสองตัว (x, y) เวลาที่ความสัมพันธ์ค่อนข้างเป็นเส้นตรง (i.e. approximately linear) ถ้าเรารู้ค่า covariance เราสามารถ derive correlation และ r-squared ได้ง่ายๆ หรือจะคิดจาก r-squared กลับไปเป็น covariance ก็ได้ ทำไมมันง่ายอย่างนี้ 😛

## easy formula
covariance  = sum((x - mean_x) * (y - mean_y)) * (1/(n-1))
correlation = covariance/ (sd_x * sd_y)
r-squared   = correlation ** 2

## values for our tutorial
covariance  = 183.6495
correlation = 0.9864
r-squared   = 0.9731

Example R Code

สำหรับเพื่อนๆที่เขียน R เป็นแล้ว สามารถนำโค้ดนี้ไปรันเพื่อสร้าง data frame คำนวณ cov, cor, r-squared ใน RStudio ได้เลย ใครยังเขียนไม่เป็น ลองดูคอร์สฟรีของเรา Data Analyst with R ได้ที่นี่

ตัวแปร y (line 3) ที่แอดสร้างขึ้นมาใช้สมการนี้ y = 35 + 5.5*x + random noise (จากฟังชั่น rnorm line 7) ตอนสร้างกราฟ scatter plot ข้อมูลดิบจะได้ไม่เป็นเส้นตรงเป๊ะๆ

References

อ่านเพิ่มเติมเกี่ยวกับค่าสถิติทั้งหมดได้ที่ wikipedia covariance, correlation, r-squared

One comment

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.