Jak obliczyć korelację w pythonie


Jednym ze sposobów ilościowego określenia związku między dwiema zmiennymi jest użycie współczynnika korelacji Pearsona , który jest miarą liniowego związku między dwiema zmiennymi . Zawsze przyjmuje wartość z zakresu od -1 do 1, gdzie:

  • -1 oznacza całkowicie ujemną korelację liniową pomiędzy dwiema zmiennymi
  • Wartość 0 oznacza brak liniowej korelacji pomiędzy dwiema zmiennymi
  • 1 wskazuje doskonale dodatnią korelację liniową pomiędzy dwiema zmiennymi

Im współczynnik korelacji jest bardziej od zera, tym silniejszy jest związek między obiema zmiennymi.

W tym samouczku wyjaśniono, jak obliczyć korelację między zmiennymi w Pythonie.

Jak obliczyć korelację w Pythonie

Aby obliczyć korelację między dwiema zmiennymi w Pythonie, możemy użyć funkcji 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. ]]

Można zauważyć, że współczynnik korelacji pomiędzy tymi dwiema zmiennymi wynosi 0,335 , co jest korelacją dodatnią.

Domyślnie funkcja ta tworzy macierz współczynników korelacji. Gdybyśmy chcieli tylko zwrócić współczynnik korelacji między dwiema zmiennymi, moglibyśmy zastosować następującą składnię:

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

0.335

Aby sprawdzić, czy ta korelacja jest istotna statystycznie, możemy obliczyć wartość p powiązaną ze współczynnikiem korelacji Pearsona za pomocą funkcji Scipy pearsonr() , która zwraca współczynnik korelacji Pearsona, a także dwustronną wartość p.

 from scipy.stats.stats import pearsonr

pearsonr(var1, var2)

(0.335, 0.017398)

Współczynnik korelacji wynosi 0,335 , a dwustronna wartość p wynosi 0,017 . Ponieważ ta wartość p jest mniejsza niż 0,05, można wyciągnąć wniosek, że istnieje statystycznie istotna korelacja pomiędzy obiema zmiennymi.

Jeśli chcesz obliczyć korelację między wieloma zmiennymi w ramce danych Pandas, możesz po prostu użyć funkcji .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

A jeśli chcesz obliczyć tylko korelację między dwiema określonymi zmiennymi w ramce DataFrame, możesz określić zmienne:

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

-0.775567

Dodatkowe zasoby

Poniższe samouczki wyjaśniają, jak wykonywać inne typowe zadania w Pythonie:

Jak utworzyć macierz korelacji w Pythonie
Jak obliczyć korelację rangi Spearmana w Pythonie
Jak obliczyć autokorelację w Pythonie

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *