Jak obliczyć częściową korelację w pythonie
W statystyce często używamy współczynnika korelacji Pearsona do pomiaru liniowej zależności między dwiema zmiennymi. Czasami jednak chcemy zrozumieć związek między dwiema zmiennymi , kontrolując trzecią zmienną .
Załóżmy na przykład, że chcemy zmierzyć związek między liczbą godzin nauki studenta a oceną z egzaminu końcowego, kontrolując jednocześnie aktualną ocenę studenta z zajęć. W tym przypadku moglibyśmy zastosować częściową korelację do pomiaru związku między przepracowanymi godzinami a oceną końcową z egzaminu.
W tym samouczku wyjaśniono, jak obliczyć częściową korelację w języku Python.
Przykład: częściowa korelacja w Pythonie
Załóżmy, że mamy następującą ramkę danych Pandas, która wyświetla aktualną ocenę, łączną liczbę przepracowanych godzin i ocenę z egzaminu końcowego dla 10 uczniów:
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
Aby obliczyć częściową korelację między godzinami a egzaminemScore przy kontrolowaniu currentGrade , możemy użyć funkcji partin_corr() z pakietu penguin , która wykorzystuje następującą składnię:
częściowe_korr(dane, x, y, covar)
Złoto:
- dane: nazwa ramki danych
- x, y: nazwy kolumn w ramce danych
- covar: nazwa kolumny współzmiennej w ramce danych (np. zmiennej, którą kontrolujesz)
Oto jak użyć tej funkcji w tym konkretnym przykładzie:
#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
Widzimy, że częściowa korelacja między przepracowanymi godzinami a oceną końcową z egzaminu wynosi 0,191 , co jest małą dodatnią korelacją. Wraz ze wzrostem liczby godzin nauki wyniki egzaminów również rosną, przy założeniu, że aktualna ocena pozostaje stała.
Aby obliczyć częściową korelację pomiędzy kilkoma zmiennymi jednocześnie, możemy skorzystać z funkcji .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
Sposób interpretacji wyniku jest następujący:
- Częściowa korelacja między obecną oceną a przestudiowanymi godzinami wynosi -0,311 .
- Częściowa korelacja między oceną aktualną a oceną z egzaminu 0,736 .
- Częściowa korelacja między przestudiowanymi godzinami a wynikiem egzaminu 0,191 .