Pandalarda korelasyon katsayısının p değeri nasıl bulunur?


Pearson korelasyon katsayısı iki değişken arasındaki doğrusal ilişkiyi ölçmek için kullanılabilir.

Bu korelasyon katsayısı her zaman -1 ile 1 arasında bir değer alır; burada:

  • -1 : İki değişken arasında mükemmel negatif doğrusal korelasyon.
  • 0 : İki değişken arasında doğrusal bir ilişki yok.
  • 1: İki değişken arasında mükemmel pozitif doğrusal korelasyon.

Bir korelasyon katsayısının istatistiksel olarak anlamlı olup olmadığını belirlemek için karşılık gelen t-puanını ve p-değerini hesaplayabilirsiniz.

Korelasyon katsayısının (r) t-puanını hesaplama formülü şöyledir:

t = r√ n-2 / √ 1-r 2

P-değeri, n-2 serbestlik derecesine sahip t-dağılımı için karşılık gelen iki kuyruklu p-değeri olarak hesaplanır.

Pandalarda Pearson korelasyon katsayısının p değerini hesaplamak için SciPy kütüphanesindeki pearsonr() fonksiyonunu kullanabilirsiniz:

 from scipy. stats import pearsonr

pearsonr(df[' column1 '], df[' column2 '])

Bu işlev, sütun1 ve sütun2 arasındaki Pearson korelasyon katsayısını ve bize korelasyon katsayısının istatistiksel olarak anlamlı olup olmadığını söyleyen karşılık gelen p değerini döndürecektir.

Bir DataFrame’deki her olası ikili sütun kombinasyonunun Pearson korelasyon katsayısının p değerini hesaplamak istiyorsanız, bunu yapmak için aşağıdaki özel işlevi kullanabilirsiniz:

 def r_pvalues(df):
    cols = pd. DataFrame (columns= df.columns )
    p = cols. transpose (). join (cols, how=' outer ')
    for r in df. columns :
        for c in df. columns :
            tmp = df[df[r]. notnull () & df[c]. notnull ()]
            p[r][c] = round(pearsonr(tmp[r], tmp[c])[1], 4)
    return p

Aşağıdaki örnekler, aşağıdaki pandalar DataFrame ile pratikte korelasyon katsayıları için p değerlerinin nasıl hesaplanacağını gösterir:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' x ': [4, 5, 5, 7, 8, 10, 12, 13, 14, 15],
                   ' y ': [10, 12, 14, 18, np.nan, 19, 13, 20, 14, np.nan],
                   ' z ': [20, 24, 24, 23, 19, 15, 18, 14, 10, 12]})

#view DataFrame
print (df)

    X Y Z
0 4 10.0 20
1 5 12.0 24
2 5 14.0 24
3 7 18.0 23
4 8 NaN 19
5 10 19.0 15
6 12 13.0 18
7 13 20.0 14
8 14 14.0 10
9 15 NaN 12

Örnek 1: Pandas’ta iki sütun arasındaki korelasyon katsayısı için P değerini hesaplayın

Aşağıdaki kod, Pearson korelasyon katsayısının ve DataFrame’in x ve y sütunları için karşılık gelen p değerinin nasıl hesaplanacağını gösterir:

 from scipy. stats import pearsonr

#drop all rows with NaN values
df_new = df. dropna ()

#calculation correlation coefficient and p-value between x and y
pearsonr(df_new[' x '], df_new[' y '])

PearsonRResult(statistic=0.4791621985883838, pvalue=0.22961622926360523)

Sonuçtan şunları görebiliriz:

  • Pearson korelasyon katsayısı 0,4792’dir .
  • Karşılık gelen p değeri 0,2296’dır .

Korelasyon katsayısının pozitif olması iki değişken arasında pozitif doğrusal bir ilişkinin olduğunu gösterir.

Ancak korelasyon katsayısının p değeri 0,05’ten küçük olmadığı için korelasyon istatistiksel olarak anlamlı değildir.

Korelasyon katsayısından p-değerini çıkarmak için aşağıdaki sözdizimini de kullanabileceğimizi unutmayın:

 #extract p-value of correlation coefficient
pearsonr(df_new[' x '], df_new[' y '])[1]

0.22961622926360523

Korelasyon katsayısının p değeri 0,2296’dır .

Bu, önceki çıktıdaki p değeriyle eşleşir.

Örnek 2: Pandas’taki tüm sütunlar arasındaki korelasyon katsayısı için P değerini hesaplayın

Aşağıdaki kod, pandas DataFrame’deki sütunların her ikili kombinasyonu için Pearson korelasyon katsayısının ve karşılık gelen p değerinin nasıl hesaplanacağını gösterir:

 #create function to calculate p-values for each pairwise correlation coefficient
def r_pvalues(df):
    cols = pd. DataFrame (columns= df.columns )
    p = cols. transpose (). join (cols, how=' outer ')
    for r in df. columns :
        for c in df. columns :
            tmp = df[df[r]. notnull () & df[c]. notnull ()]
            p[r][c] = round(pearsonr(tmp[r], tmp[c])[1], 4)
    return p

#use custom function to calculate p-values
r_pvalues(df)

             X Y Z
x 0.0 0.2296 0.0005
y 0.2296 0.0 0.4238
z 0.0005 0.4238 0.0

Sonuçtan şunları görebiliriz:

  • X ile y arasındaki korelasyon katsayısının p değeri 0,2296’dır .
  • X ve z arasındaki korelasyon katsayısının p değeri 0,0005’tir .
  • Y ve z arasındaki korelasyon katsayısının p değeri 0,4238’dir .

Özel fonksiyonumuzda p değerlerini dört ondalık basamağa yuvarladığımızı unutmayın.

Farklı sayıda ondalık basamağa yuvarlamak için fonksiyonun son satırındaki 4’ü farklı bir sayıyla değiştirmekten çekinmeyin.

Not : SciPy pearsonr() işlevine ilişkin tüm belgeleri burada bulabilirsiniz.

Ek kaynaklar

Aşağıdaki eğitimlerde diğer yaygın panda görevlerinin nasıl gerçekleştirileceği açıklanmaktadır:

Pandalar’da gruba göre korelasyon nasıl hesaplanır?
Pandalarda kayan korelasyon nasıl hesaplanır
Pandalarda Spearman sıralama korelasyonu nasıl hesaplanır?

Yorum ekle

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir