Hoe de correlatie in python te berekenen
Eén manier om de relatie tussen twee variabelen te kwantificeren is door dePearson-correlatiecoëfficiënt te gebruiken, een maatstaf voor de lineaire associatie tussen twee variabelen . Er is altijd een waarde tussen -1 en 1 nodig, waarbij:
- -1 geeft een perfect negatieve lineaire correlatie aan tussen twee variabelen
- 0 geeft aan dat er geen lineaire correlatie is tussen twee variabelen
- 1 geeft een perfect positieve lineaire correlatie aan tussen twee variabelen
Hoe verder de correlatiecoëfficiënt van nul verwijderd is, hoe sterker de relatie tussen de twee variabelen.
In deze tutorial wordt uitgelegd hoe u de correlatie tussen variabelen in Python kunt berekenen.
Hoe de correlatie in Python te berekenen
Om de correlatie tussen twee variabelen in Python te berekenen, kunnen we de functie Numpy corrcoef() gebruiken.
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. ]]
Het is duidelijk dat de correlatiecoëfficiënt tussen deze twee variabelen 0,335 is, wat een positieve correlatie is.
Standaard produceert deze functie een matrix van correlatiecoëfficiënten. Als we alleen de correlatiecoëfficiënt tussen de twee variabelen wilden retourneren, zouden we de volgende syntaxis kunnen gebruiken:
np.corrcoef(var1, var2)[0,1] 0.335
Om te testen of deze correlatie statistisch significant is, kunnen we de p-waarde berekenen die is gekoppeld aan de Pearson-correlatiecoëfficiënt met behulp van de Scipy- peasonr()- functie, die zowel de Pearson-correlatiecoëfficiënt als de tweezijdige p-waarde retourneert.
from scipy.stats.stats import pearsonr pearsonr(var1, var2) (0.335, 0.017398)
De correlatiecoëfficiënt is 0,335 en de tweezijdige p-waarde is 0,017 . Omdat deze p-waarde kleiner is dan 0,05, kunnen we concluderen dat er een statistisch significante correlatie bestaat tussen de twee variabelen.
Als u de correlatie tussen meerdere variabelen in een Pandas DataFrame wilt berekenen, kunt u eenvoudig de functie .corr() gebruiken.
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
En als u alleen de correlatie tussen twee specifieke variabelen in het DataFrame wilt berekenen, kunt u de variabelen opgeven:
data['A'].corr(data['B']) -0.775567
Aanvullende bronnen
In de volgende tutorials wordt uitgelegd hoe u andere veelvoorkomende taken in Python kunt uitvoeren:
Hoe u een correlatiematrix in Python maakt
Hoe de Spearman Rank-correlatie in Python te berekenen
Hoe autocorrelatie in Python te berekenen