Hoe gedeeltelijke correlatie in python te berekenen
In de statistiek gebruiken we vaak dePearson-correlatiecoëfficiënt om de lineaire relatie tussen twee variabelen te meten. Soms willen we echter de relatie tussen twee variabelen begrijpen terwijl we een derde variabele controleren .
Stel dat we bijvoorbeeld het verband willen meten tussen het aantal studie-uren van een leerling en het eindexamencijfer, terwijl we controleren voor het huidige cijfer van de leerling in de klas. In dit geval kunnen we partiële correlatie gebruiken om de relatie tussen het aantal gestudeerde uren en het eindexamencijfer te meten.
In deze tutorial wordt uitgelegd hoe je een gedeeltelijke correlatie in Python berekent.
Voorbeeld: gedeeltelijke correlatie in Python
Laten we zeggen dat we het volgende Pandas DataFrame hebben dat het huidige cijfer, het totaal aantal bestudeerde uren en het eindexamencijfer voor 10 studenten weergeeft:
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
Om de gedeeltelijke correlatie tussen uren en examScore te berekenen terwijl currentGrade wordt beheerd, kunnen we de functie Partial_corr() uit het Penguin-pakket gebruiken, die de volgende syntaxis gebruikt:
gedeeltelijke_corr(gegevens, x, y, covar)
Goud:
- data: naam van het dataframe
- x, y: kolomnamen in het dataframe
- covar: de naam van de covariabelekolom in het dataframe (bijvoorbeeld de variabele die u beheert)
Hier ziet u hoe u deze functie in dit specifieke voorbeeld kunt gebruiken:
#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
We kunnen zien dat de gedeeltelijke correlatie tussen het aantal gestudeerde uren en het eindexamencijfer 0,191 is, wat een kleine positieve correlatie is. Naarmate het aantal studie-uren toeneemt, stijgen ook de examencijfers, ervan uitgaande dat het huidige cijfer constant blijft.
Om de gedeeltelijke correlatie tussen meerdere variabelen tegelijk te berekenen, kunnen we de functie .pcorr() gebruiken:
#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
De manier om het resultaat te interpreteren is als volgt:
- De gedeeltelijke correlatie tussen het huidige cijfer en het aantal gestudeerde uren is -0,311 .
- De deelcorrelatie tussen huidig cijfer en examencijfer 0,736 .
- De gedeeltelijke correlatie tussen gestudeerde uren en examenscore 0,191 .