R'deki Korelasyon: Pearson ve Spearman Korelasyon Matrisi
R'de İki Değişkenli Korelasyon
İki Değişkenli ilişki, R'deki iki değişken arasındaki ilişkiyi -veya korelasyonu- tanımlar. Bu derste, korelasyon kavramını tartışacağız ve bunun R'deki herhangi iki değişken arasındaki ilişkiyi ölçmek için nasıl kullanılabileceğini göstereceğiz.
R Programlamada Korelasyon
R Programlamada iki değişken arasındaki korelasyonu hesaplamak için iki temel yöntem vardır:
- Pearson: Parametrik korelasyon
- mızrakçı: Parametrik olmayan korelasyon
R'de Pearson Korelasyon Matrisi
Pearson korelasyon yöntemi genellikle iki değişken arasındaki ilişkinin birincil kontrolü olarak kullanılır.
The korelasyon katsayısı, , gücünün bir ölçüsüdür doğrusal İki değişken arasındaki ilişki ve . Aşağıdaki şekilde hesaplanır:
ile
- , yani standart sapması
- , yani standart sapması
Korelasyon -1 ile 1 arasında değişmektedir.
- 0'a yakın veya XNUMX'a eşit bir değer, ve arasında doğrusal bir ilişkinin çok az olduğunu veya hiç olmadığını gösterir.
- Bunun tersine, 1 veya -1'e ne kadar yaklaşılırsa doğrusal ilişki o kadar güçlü olur.
T-testini aşağıdaki gibi hesaplayabiliriz ve dağıtım tablosunu aşağıdakine eşit bir serbestlik derecesi ile kontrol edebiliriz:
R'de Spearman Sıra Korelasyonu
Sıra korelasyonu, gözlemleri sıraya göre sıralar ve sıralar arasındaki benzerlik düzeyini hesaplar. Sıra korelasyonu, aykırı değerlere karşı dayanıklı olma avantajına sahiptir ve verilerin dağıtımıyla bağlantılı değildir. Sıralı değişken için sıra korelasyonunun uygun olduğunu unutmayın.
Spearman'ın sıra korelasyonu, her zaman -1 ile 1 arasında olup uç noktaya yakın bir değer güçlü bir ilişkiye işaret eder. Aşağıdaki şekilde hesaplanır:
ile sıra arasındaki kovaryansları belirttik. Payda standart sapmaları hesaplar.
R'de cor() fonksiyonunu kullanabiliriz. Üç argüman ve yöntem alır.
cor(x, y, method)
Argümanlar:
- x: Birinci vektör
- y: İkinci vektör
- yöntem: Korelasyonu hesaplamak için kullanılan formül. Üç dize değeri:
- “Pearson”
- “kendall”
- “mızrakçı”
Vektörler eksik değer içeriyorsa isteğe bağlı bir argüman eklenebilir: use = “complete.obs”
BudgetUK veri setini kullanacağız. Bu veri seti, 1980 ile 1982 yılları arasında İngiliz hanelerinin bütçe tahsisini rapor etmektedir. On özelliğe sahip 1519 gözlem bulunmaktadır; bunların arasında:
- yemek: yiyeceği paylaş harcamayı paylaş
- yakıt: yakıt harcamasını paylaş
- kumaş: giyim harcaması için bütçe payı
- yürüyüş: alkol harcamasını paylaş
- wtrans: ulaşım harcamalarını paylaş
- başka: diğer mal harcamalarının payı
- totex: pound cinsinden toplam hane harcaması
- gelir: toplam net hane geliri
- yaş: hane yaşı
- çocuklar için: Çocuk Sayısı
Örnek E-posta
library(dplyr) PATH <-"https://raw.githubusercontent.com/guru99-edu/R-Programming/master/british_household.csv" data <-read.csv(PATH) filter(income < 500) mutate(log_income = log(income), log_totexp = log(totexp), children_fac = factor(children, order = TRUE, labels = c("No", "Yes"))) select(-c(X,X.1, children, totexp, income)) glimpse(data)
Kod Açıklama
- Önce verileri içe aktarıyoruz ve dplyr kütüphanesinden bakış() fonksiyonuyla bir göz atıyoruz.
- Üç puan 500K'nın üzerinde, bu yüzden onları hariç tutmaya karar verdik.
- Günlükte parasal bir değişkeni dönüştürmek yaygın bir uygulamadır. Aykırı değerlerin etkisini azaltmaya yardımcı olur ve veri kümesindeki çarpıklığı azaltır.
Çıktı:
## Observations: 1,516## Variables: 10 ## $ wfood <dbl> 0.4272, 0.3739, 0.1941, 0.4438, 0.3331, 0.3752, 0... ## $ wfuel <dbl> 0.1342, 0.1686, 0.4056, 0.1258, 0.0824, 0.0481, 0... ## $ wcloth <dbl> 0.0000, 0.0091, 0.0012, 0.0539, 0.0399, 0.1170, 0... ## $ walc <dbl> 0.0106, 0.0825, 0.0513, 0.0397, 0.1571, 0.0210, 0... ## $ wtrans <dbl> 0.1458, 0.1215, 0.2063, 0.0652, 0.2403, 0.0955, 0... ## $ wother <dbl> 0.2822, 0.2444, 0.1415, 0.2716, 0.1473, 0.3431, 0... ## $ age <int> 25, 39, 47, 33, 31, 24, 46, 25, 30, 41, 48, 24, 2... ## $ log_income <dbl> 4.867534, 5.010635, 5.438079, 4.605170, 4.605170,... ## $ log_totexp <dbl> 3.912023, 4.499810, 5.192957, 4.382027, 4.499810,... ## $ children_fac <ord> Yes, Yes, Yes, Yes, No, No, No, No, No, No, Yes, ...
Gelir ve wfood değişkenleri arasındaki korelasyon katsayısını “pearson” ve “spearman” yöntemleriyle hesaplayabiliriz.
cor(data$log_income, data$wfood, method = "pearson")
Çıktı:
## [1] -0.2466986
cor(data$log_income, data$wfood, method = "spearman")
Çıktı:
## [1] -0.2501252
R'de Korelasyon Matrisi
İki değişkenli korelasyon iyi bir başlangıçtır ancak çok değişkenli analizle daha geniş bir resim elde edebiliriz. Birçok değişkenle bir korelasyon bir grafikte resmedilmiştir. korelasyon matrisi. Korelasyon matrisi, tüm değişkenlerin ikili korelasyonunu temsil eden bir matristir.
cor() fonksiyonu bir korelasyon matrisi döndürür. İki değişkenli korelasyonun tek farkı, hangi değişkenlerin olduğunu belirtmemize gerek olmamasıdır. Varsayılan olarak R, tüm değişkenler arasındaki korelasyonu hesaplar.
Faktör değişkeni için bir korelasyonun hesaplanamayacağını unutmayın. Veri çerçevesini cor() içine geçirmeden önce kategorik özelliği bıraktığımızdan emin olmalıyız.
Korelasyon matrisi simetriktir; bu, köşegenin üzerindeki değerlerin aşağıdaki değerlerle aynı olduğu anlamına gelir. Matrisin yarısını göstermek daha görseldir.
Children_fac'i faktör düzeyinde bir değişken olduğu için hariç tutuyoruz. cor kategorik bir değişken üzerinde korelasyon gerçekleştirmez.
# the last column of data is a factor level. We don't include it in the code mat_1 <-as.dist(round(cor(data[,1:9]),2)) mat_1
Kod Açıklama
- cor(veri): Korelasyon matrisini göster
- yuvarlak(veri, 2): Korelasyon matrisini iki ondalık sayıyla yuvarlayın
- as.dist(): Yalnızca ikinci yarıyı gösterir
Çıktı:
## wfood wfuel wcloth walc wtrans wother age log_income ## wfuel 0.11 ## wcloth -0.33 -0.25 ## walc -0.12 -0.13 -0.09 ## wtrans -0.34 -0.16 -0.19 -0.22 ## wother -0.35 -0.14 -0.22 -0.12 -0.29 ## age 0.02 -0.05 0.04 -0.14 0.03 0.02 ## log_income -0.25 -0.12 0.10 0.04 0.06 0.13 0.23 ## log_totexp -0.50 -0.36 0.34 0.12 0.15 0.15 0.21 0.49
Önem düzeyi
Anlamlılık düzeyi, Pearson veya Spearman yöntemini kullandığımız bazı durumlarda faydalıdır. Hmisc kütüphanesindeki rcorr() fonksiyonu bizim için p-değerini hesaplar. Kütüphaneyi şuradan indirebiliriz: ilçe ve terminale yapıştırmak için kodu kopyalayın:
conda install -c r r-hmisc
rcorr(), matris olarak saklanacak bir veri çerçevesi gerektirir. P değeri ile korelasyon matrisini hesaplamadan önce verilerimizi bir matrise dönüştürebiliriz.
library("Hmisc") data_rcorr <-as.matrix(data[, 1: 9]) mat_2 <-rcorr(data_rcorr) # mat_2 <-rcorr(as.matrix(data)) returns the same output
Mat_2 liste nesnesi üç öğe içerir:
- r: Korelasyon matrisinin çıktısı
- n: Gözlem sayısı
- P: p değeri
Üçüncü unsur olan p değeriyle ilgileniyoruz. Korelasyon matrisini korelasyon katsayısı yerine p değeriyle göstermek yaygındır.
p_value <-round(mat_2[["P"]], 3) p_value
Kod Açıklama
- mat_2[[“P”]]: P değerleri P adı verilen öğede saklanır
- yuvarlak(mat_2[[“P”]], 3): Elemanları üç rakamla yuvarlayın
Çıktı:
wfood wfuel wcloth walc wtrans wother age log_income log_totexp wfood NA 0.000 0.000 0.000 0.000 0.000 0.365 0.000 0 wfuel 0.000 NA 0.000 0.000 0.000 0.000 0.076 0.000 0 wcloth 0.000 0.000 NA 0.001 0.000 0.000 0.160 0.000 0 walc 0.000 0.000 0.001 NA 0.000 0.000 0.000 0.105 0 wtrans 0.000 0.000 0.000 0.000 NA 0.000 0.259 0.020 0 wother 0.000 0.000 0.000 0.000 0.000 NA 0.355 0.000 0 age 0.365 0.076 0.160 0.000 0.259 0.355 NA 0.000 0 log_income 0.000 0.000 0.000 0.105 0.020 0.000 0.000 NA 0 log_totexp 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 NA
R'de Korelasyon Matrisinin Görselleştirilmesi
Isı haritası, korelasyon matrisini göstermenin başka bir yoludur. GGally kütüphanesi ggplot2'nin bir uzantısıdır. Şu anda conda kütüphanesinde mevcut değil. Doğrudan konsola kurulum yapabiliriz.
install.packages("GGally")
Kütüphane, tüm değişkenlerin korelasyonu ve dağılımı gibi özet istatistiklerini göstermek için farklı işlevler içerir. matris.
ggcorr() fonksiyonunun birçok argümanı vardır. Yalnızca eğitimde kullanacağımız argümanları tanıtacağız:
ggcorr İşlevi
ggcorr(df, method = c("pairwise", "pearson"), nbreaks = NULL, digits = 2, low = "#3B9AB2", mid = "#EEEEEE", high = "#F21A00", geom = "tile", label = FALSE, label_alpha = FALSE)
argümanlar:
- df: Kullanılan veri kümesi
- yöntem: Korelasyonu hesaplamak için formül. Varsayılan olarak, çiftler ve Pearson hesaplanır
- molalar: Katsayıların renklendirilmesi için kategorik bir aralık döndürün. Varsayılan olarak kesinti yoktur ve renk gradyanı süreklidir
- basamak: Korelasyon katsayısını yuvarlayın. Varsayılan olarak 2'ye ayarlıdır
- düşük: Renklendirmenin alt seviyesini kontrol edin
- orta: Renklendirmenin orta seviyesini kontrol edin
- yüksek: Renklenmenin yüksek seviyesini kontrol edin
- geom: Geometrik argümanın şeklini kontrol edin. Varsayılan olarak “döşeme”
- etiket: Boole değeri. Etiketi görüntüleyin veya görüntülemeyin. Varsayılan olarak "YANLIŞ" olarak ayarlanmıştır
Temel ısı haritası
Paketin en temel grafiği bir ısı haritasıdır. Grafiğin açıklaması -1'den 1'e kadar bir degrade rengi gösterir; sıcak renk güçlü pozitif korelasyonu, soğuk renk ise negatif korelasyonu gösterir.
library(GGally) ggcorr(data)
Kod Açıklama
- ggdüzeltme(veri): Yalnızca bir bağımsız değişkene ihtiyaç vardır, o da veri çerçevesi adıdır. Faktör düzeyindeki değişkenler çizime dahil edilmemiştir.
Çıktı:
Isı Haritasına Kontrol Ekleme
Grafiğe daha fazla kontrol ekleyebiliriz:
ggcorr(data, nbreaks = 6, low = "steelblue", mid = "white", high = "darkred", geom = "circle")
Kod Açıklama
- nbreaks=6: 6 sıra ile efsaneyi kırın.
- düşük = “çelikmavi”: Negatif korelasyon için daha açık renkler kullanın
- orta = “beyaz”: Orta aralık korelasyonu için beyaz renkleri kullanın
- yüksek = “koyu kırmızı”: Pozitif korelasyon için koyu renkler kullanın
- geom = “daire”: Isı haritasındaki pencerelerin şekli olarak daireyi kullanın. Dairenin boyutu, korelasyonun mutlak değerine orantılıdır.
Çıktı:
Isı Haritasına Etiket Ekleme
GGally pencerelerin içine bir etiket eklememize olanak tanır:
ggcorr(data, nbreaks = 6, label = TRUE, label_size = 3, color = "grey50")
Kod Açıklama
- etiket = DOĞRU: Isı haritasının içindeki korelasyon katsayılarının değerlerini ekleyin.
- renk = “gri50”: Rengi seçin, yani gri
- etiket_boyutu = 3: Etiketin boyutunu 3'e eşit olarak ayarlayın
Çıktı:
ggpairs İşlevi
Son olarak, GGaly kütüphanesinden başka bir fonksiyon tanıtıyoruz. Ggpair. Bir matris formatında bir grafik üretir. Bir grafikte üç çeşit hesaplamayı görüntüleyebiliriz. Matris, gözlem sayısına eşit bir boyuttur. Üst/alt kısım, pencereleri ve diyagonalde görüntüler. Matrisin her bir kısmında hangi bilgileri göstermek istediğimizi kontrol edebiliriz. ggpair formülü şudur:
ggpair(df, columns = 1: ncol(df), title = NULL, upper = list(continuous = "cor"), lower = list(continuous = "smooth"), mapping = NULL)
argümanlar:
- df: Kullanılan veri kümesi
- sütunlar: Grafiği çizmek için sütunları seçin
- başlık: Bir başlık ekleyin
- üst: Grafiğin köşegeninin üstündeki kutuları kontrol edin. Döndürülecek hesaplama veya grafik türünü sağlamanız gerekir. Eğer continuous = “cor” ise, R'den korelasyonu hesaplamasını isteriz. Argümanın bir liste olması gerektiğini unutmayın. Diğer argümanlar kullanılabilir, daha fazla bilgi için [vinyet](“http://ggobi.github.io/ggally/#custom_functions”)'a bakın.
- Alt: Köşegenin altındaki kutuları kontrol edin.
- Haritalama: Grafiğin estetiğini belirtir. Örneğin grafiği farklı gruplar için hesaplayabiliriz.
Gruplandırmalı ggpair ile iki değişkenli analiz
Sonraki grafikte üç bilgi gösterilmektedir:
- Hanenin çocuğu olup olmamasına göre gruplanan log_totexp, log_income, age ve wtrans değişkenleri arasındaki korelasyon matrisi.
- Her değişkenin dağılımını gruba göre çizin
- Grup bazında trendi içeren dağılım grafiğini görüntüleyin
library(ggplot2) ggpairs(data, columns = c("log_totexp", "log_income", "age", "wtrans"), title = "Bivariate analysis of revenue expenditure by the British household", upper = list(continuous = wrap("cor", size = 3)), lower = list(continuous = wrap("smooth", alpha = 0.3, size = 0.1)), mapping = aes(color = children_fac))
Kod Açıklama
- sütunlar = c(“log_totexp”, “log_gelir”, “yaş”, “wtrans”): Grafikte gösterilecek değişkenleri seçin
- title = “İngiliz hane halkının gelir harcamasının iki değişkenli analizi”: Başlık ekle
- üst = liste(): Grafiğin üst kısmını kontrol edin. Yani köşegenin üstünde
- sürekli = sarma(“kor”, boyut = 3)): Korelasyon katsayısını hesaplayın. Grafiğin estetiğini kontrol etmek için argümanı sarma() fonksiyonunun içine sürekli sarıyoruz (yani boyut = 3) -lower = list(): Grafiğin alt kısmını kontrol edin. Yani köşegenin altında.
- sürekli = sarma(“pürüzsüz”,alfa = 0.3,boyut=0.1): Doğrusal eğilime sahip bir dağılım grafiği ekleyin. Grafiğin estetiğini kontrol etmek için argümanı sarma() fonksiyonunun içine sürekli sarıyoruz (yani boyut=0.1, alfa=0.3)
- eşleme = aes(renk = çocuk_fac): Grafiğin her bir bölümünün children_fac değişkeni ile istiflenmesini istiyoruz. Bu değişken, hanede çocuk yoksa 1, yoksa 2 değerini alan kategorik bir değişkendir.
Çıktı:
Kısmi gruplandırmalı ggpair ile iki değişkenli analiz
Aşağıdaki grafik biraz farklı. Üst argümanın içindeki eşlemenin konumunu değiştiriyoruz.
ggpairs(data, columns = c("log_totexp", "log_income", "age", "wtrans"), title = "Bivariate analysis of revenue expenditure by the British household", upper = list(continuous = wrap("cor", size = 3), mapping = aes(color = children_fac)), lower = list( continuous = wrap("smooth", alpha = 0.3, size = 0.1)) )
Kod Açıklama
- Aşağıdakiler dışında önceki örnekle tamamen aynı kod:
- eşleme = aes(renk = kids_fac): Listeyi üst = liste() konumuna taşıyın. Hesaplamanın yalnızca grafiğin üst kısmında gruba göre istiflenmesini istiyoruz.
Çıktı:
ÖZET
- İki Değişkenli ilişki, R'deki iki değişken arasındaki ilişkiyi veya korelasyonu tanımlar.
- İki değişken arasındaki korelasyonu hesaplamak için iki temel yöntem vardır. R Programlama: Pearson ve Spearman.
- Pearson korelasyon yöntemi genellikle iki değişken arasındaki ilişkinin birincil kontrolü olarak kullanılır.
- Sıra korelasyonu, gözlemleri sıraya göre sıralar ve sıralar arasındaki benzerlik düzeyini hesaplar.
- Spearman'ın sıra korelasyonu, her zaman -1 ile 1 arasında olup uç noktaya yakın bir değer güçlü bir ilişkiye işaret eder.
- Korelasyon matrisi, tüm değişkenlerin ikili korelasyonunu temsil eden bir matristir.
- Anlamlılık düzeyi, Pearson veya Spearman yöntemini kullandığımız bazı durumlarda faydalıdır.
R'deki tüm Korelasyon fonksiyonlarını aşağıdaki tabloda özetleyebiliriz:
Kütüphane | Nesnel | Yöntem | Kod |
---|---|---|---|
baz | iki değişkenli korelasyon | Pearson |
cor(dfx2, method = "pearson") |
baz | iki değişkenli korelasyon | mızrakçı |
cor(dfx2, method = "spearman") |
baz | Çok değişkenli korelasyon | Pearson |
cor(df, method = "pearson") |
baz | Çok değişkenli korelasyon | mızrakçı |
cor(df, method = "spearman") |
Hmisc | P değeri |
rcorr(as.matrix(data[,1:9]))[["P"]] |
|
Ggally | sıcaklık haritası |
ggcorr(df) |
|
Çok değişkenli grafikler |
cf code below |