Come calcolare la correlazione parziale in python


Nelle statistiche, spesso utilizziamo il coefficiente di correlazione di Pearson per misurare la relazione lineare tra due variabili. Tuttavia, a volte vogliamo comprendere la relazione tra due variabili controllandone una terza .

Ad esempio, supponiamo di voler misurare l’associazione tra il numero di ore di studio di uno studente e il voto dell’esame finale, controllando il voto attuale dello studente nella classe. In questo caso, potremmo utilizzare la correlazione parziale per misurare il rapporto tra le ore studiate e il voto dell’esame finale.

Questo tutorial spiega come calcolare una correlazione parziale in Python.

Esempio: correlazione parziale in Python

Supponiamo di avere il seguente Pandas DataFrame che mostra il voto corrente, le ore totali studiate e il voto dell’esame finale per 10 studenti:

 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

Per calcolare la correlazione parziale tra ore ed examScore controllando currentGrade , possiamo utilizzare la funzione partial_corr() del pacchetto penguin , che utilizza la seguente sintassi:

correzione_parziale(dati, x, y, covar)

Oro:

  • dati: nome del frame di dati
  • x, y: nomi delle colonne nel dataframe
  • covar: il nome della colonna covariata nel dataframe (ad esempio la variabile che stai controllando)

Ecco come utilizzare questa funzione in questo esempio particolare:

 #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

Possiamo vedere che la correlazione parziale tra le ore studiate e il voto dell’esame finale è 0,191 , che è una piccola correlazione positiva. All’aumentare del numero di ore di studio, anche i punteggi degli esami tendono ad aumentare, presupponendo che il voto attuale rimanga costante.

Per calcolare la correlazione parziale tra più variabili contemporaneamente, possiamo utilizzare la funzione .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

Il modo di interpretare il risultato è il seguente:

  • La correlazione parziale tra il voto attuale e le ore studiate è -0,311 .
  • La correlazione parziale tra il voto attuale e il voto dell’esame è 0,736 .
  • La correlazione parziale tra ore studiate e punteggio esame è 0,191 .

Aggiungi un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *