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 .