Come calcolare la correlazione in python


Un modo per quantificare la relazione tra due variabili è utilizzare il coefficiente di correlazione di Pearson , che è una misura dell’associazione lineare tra due variabili . Assume sempre un valore compreso tra -1 e 1 dove:

  • -1 indica una correlazione lineare perfettamente negativa tra due variabili
  • 0 indica alcuna correlazione lineare tra due variabili
  • 1 indica una correlazione lineare perfettamente positiva tra due variabili

Quanto più il coefficiente di correlazione si allontana da zero, tanto più forte è la relazione tra le due variabili.

Questo tutorial spiega come calcolare la correlazione tra le variabili in Python.

Come calcolare la correlazione in Python

Per calcolare la correlazione tra due variabili in Python, possiamo usare la funzione Numpy corrcoef() .

 import numpy as np

np.random.seed(100)

#create array of 50 random integers between 0 and 10
var1 = np.random.randint(0, 10, 50)

#create a positively correlated array with some random noise
var2 = var1 + np.random.normal(0, 10, 50)

#calculate the correlation between the two arrays
np.corrcoef(var1, var2)

[[ 1. 0.335]
[ 0.335 1. ]]

Si può vedere che il coefficiente di correlazione tra queste due variabili è 0,335 , che è una correlazione positiva.

Per impostazione predefinita, questa funzione produce una matrice di coefficienti di correlazione. Se volessimo restituire solo il coefficiente di correlazione tra le due variabili, potremmo utilizzare la seguente sintassi:

 np.corrcoef(var1, var2)[0,1]

0.335

Per verificare se questa correlazione è statisticamente significativa, possiamo calcolare il valore p associato al coefficiente di correlazione di Pearson utilizzando la funzione Scipy Pearsonr() , che restituisce il coefficiente di correlazione di Pearson e il valore p a due code.

 from scipy.stats.stats import pearsonr

pearsonr(var1, var2)

(0.335, 0.017398)

Il coefficiente di correlazione è 0,335 e il valore p a due code è 0,017 . Poiché questo valore p è inferiore a 0,05, concluderemmo che esiste una correlazione statisticamente significativa tra le due variabili.

Se vuoi calcolare la correlazione tra più variabili in un Pandas DataFrame, puoi semplicemente utilizzare la funzione .corr() .

 import pandas as pd

data = pd.DataFrame(np.random.randint(0, 10, size=(5, 3)), columns=['A', 'B', 'C'])
data

  ABC
0 8 0 9
1 4 0 7
2 9 6 8
3 1 8 1
4 8 0 8

#calculate correlation coefficients for all pairwise combinations
data.corr()

          ABC
A 1.000000 -0.775567 -0.493769
B -0.775567 1.000000 0.000000
C -0.493769 0.000000 1.000000

E se vuoi solo calcolare la correlazione tra due variabili specifiche nel DataFrame, puoi specificare le variabili:

 data['A'].corr(data['B'])

-0.775567

Risorse addizionali

I seguenti tutorial spiegano come eseguire altre attività comuni in Python:

Come creare una matrice di correlazione in Python
Come calcolare la correlazione del rango di Spearman in Python
Come calcolare l’autocorrelazione in Python

Aggiungi un commento

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