Como calcular a correlação parcial em python


Nas estatísticas, costumamos usar o coeficiente de correlação de Pearson para medir a relação linear entre duas variáveis. Porém, às vezes queremos entender a relação entre duas variáveis enquanto controlamos uma terceira variável .

Por exemplo, suponha que queiramos medir a associação entre o número de horas de estudo de um aluno e a nota do exame final, controlando a nota atual do aluno na turma. Neste caso, poderíamos utilizar a correlação parcial para medir a relação entre as horas estudadas e a nota do exame final.

Este tutorial explica como calcular uma correlação parcial em Python.

Exemplo: correlação parcial em Python

Digamos que temos o seguinte Pandas DataFrame que exibe a nota atual, o total de horas estudadas e a nota do exame final para 10 alunos:

 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

Para calcular a correlação parcial entre horas e examScore enquanto controlamos currentGrade , podemos usar a função parcial_corr() do pacote penguin , que usa a seguinte sintaxe:

parcial_corr(dados, x, y, covar)

Ouro:

  • data: nome do quadro de dados
  • x, y: nomes de colunas no dataframe
  • covar: o nome da coluna de covariável no dataframe (por exemplo, a variável que você está controlando)

Veja como usar esta função neste exemplo específico:

 #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

Podemos observar que a correlação parcial entre as horas estudadas e a nota do exame final é de 0,191 , o que é uma pequena correlação positiva. À medida que o número de horas de estudo aumenta, as notas dos exames também tendem a aumentar, assumindo que a nota atual permanece constante.

Para calcular a correlação parcial entre diversas variáveis de uma só vez, podemos usar a função .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

A forma de interpretar o resultado é a seguinte:

  • A correlação parcial entre a nota atual e as horas estudadas é de -0,311 .
  • A correlação parcial entre a nota atual e a nota do exame 0,736 .
  • A correlação parcial entre horas estudadas e nota do exame 0,191 .

Add a Comment

O seu endereço de email não será publicado. Campos obrigatórios marcados com *