วิธีการคำนวณความสัมพันธ์บางส่วนใน python


ในสถิติ เรามักจะใช้ สัมประสิทธิ์สหสัมพันธ์แบบเพียร์สัน เพื่อวัดความสัมพันธ์เชิงเส้นระหว่างตัวแปรสองตัว อย่างไรก็ตาม บางครั้งเราต้องการเข้าใจความสัมพันธ์ระหว่างตัวแปรสองตัว ในขณะที่ควบคุมตัวแปรตัวที่สาม

ตัวอย่างเช่น สมมติว่าเราต้องการวัดความสัมพันธ์ระหว่างจำนวนชั่วโมงเรียนของนักเรียนกับเกรดการสอบปลายภาค ขณะเดียวกันก็ควบคุมเกรดปัจจุบันของนักเรียนในชั้นเรียน ในกรณีนี้ เราสามารถใช้ ความสัมพันธ์บางส่วน เพื่อวัดความสัมพันธ์ระหว่างชั่วโมงเรียนกับคะแนนสอบปลายภาค

บทช่วยสอนนี้จะอธิบายวิธีคำนวณความสัมพันธ์บางส่วนใน Python

ตัวอย่าง: ความสัมพันธ์บางส่วนใน Python

สมมติว่าเรามี Pandas DataFrame ต่อไปนี้ที่แสดงเกรดปัจจุบัน จำนวนชั่วโมงที่เรียนทั้งหมด และเกรดการสอบปลายภาคสำหรับนักเรียน 10 คน:

 import numpy as np
import panda as pd

data = {'currentGrade': [82, 88, 75, 74, 93, 97, 83, 90, 90, 80],
        'hours': [4, 3, 6, 5, 4, 5, 8, 7, 4, 6],
        'examScore': [88, 85, 76, 70, 92, 94, 89, 85, 90, 93],
        }

df = pd.DataFrame(data, columns = ['currentGrade','hours', 'examScore'])
df

   currentGrade hours examScore
0 82 4 88
1 88 3 85
2 75 6 76
3 74 5 70
4 93 4 92
5 97 5 94
6 83 8 89
7 90 7 85
8 90 4 90
9 80 6 93

ในการคำนวณความสัมพันธ์บางส่วนระหว่าง ชั่วโมง กับ คะแนนการสอบ ในขณะที่ควบคุม currentGrade เราสามารถใช้ฟังก์ชัน Partial_corr() จาก แพ็คเกจ Penguin ซึ่งใช้ไวยากรณ์ต่อไปนี้:

Partial_corr (ข้อมูล, x, y, covar)

ทอง:

  • data: ชื่อของกรอบข้อมูล
  • x, y: ชื่อคอลัมน์ใน dataframe
  • covar: ชื่อของคอลัมน์ covariate ใน dataframe (เช่น ตัวแปรที่คุณควบคุม)

ต่อไปนี้เป็นวิธีใช้ฟังก์ชันนี้ในตัวอย่างนี้:

 #install and import penguin package 
pip install penguin
import penguin as pg

#find partial correlation between hours and exam score while controlling for grade
pg.partial_corr(data=df, x='hours', y='examScore', covar='currentGrade')


         n r CI95% r2 adj_r2 p-val BF10 power
pearson 10 0.191 [-0.5, 0.73] 0.036 -0.238 0.598 0.438 0.082

เราจะเห็นได้ว่าความสัมพันธ์บางส่วนระหว่างชั่วโมงเรียนกับคะแนนสอบปลายภาคคือ 0.191 ซึ่งเป็นความสัมพันธ์เชิงบวกเพียงเล็กน้อย เมื่อจำนวนชั่วโมงเรียนเพิ่มขึ้น คะแนนสอบก็มีแนวโน้มเพิ่มขึ้นเช่นกัน โดยถือว่าเกรดปัจจุบันคงที่

ในการคำนวณความสัมพันธ์บางส่วนระหว่างตัวแปรหลายตัวในคราวเดียว เราสามารถใช้ฟังก์ชัน .pcorr() ได้:

 #calculate all pairwise partial correlations, rounded to three decimal places
df.pcorr().round(3)

	     currentGrade hours examScore
currentGrade 1.000 -0.311 0.736
hours -0.311 1.000 0.191
examScore 0.736 0.191 1.000

วิธีการตีความผลลัพธ์มีดังนี้:

  • ความสัมพันธ์บางส่วนระหว่างเกรดปัจจุบันกับชั่วโมงเรียนคือ -0.311
  • ความสัมพันธ์บางส่วนระหว่างเกรดปัจจุบันกับเกรดสอบ 0.736
  • ความสัมพันธ์บางส่วนระหว่างชั่วโมงเรียนกับคะแนนสอบ 0.191

เพิ่มความคิดเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *