İki Değişken Arasındaki Korelasyon: cor()
Korelasyon şunu sorar: bir değişken yükselirken diğeri de yükselme eğiliminde mi (pozitif), düşüyor mu (negatif) yoksa kendi bildiğini mi okuyor (sıfıra yakın)? R'de bu tek çağrıdır:
Yanıt yaklaşık −0.87'dir: ağır arabalar daha kötü yakıt tüketir ve ilişki güçlüdür. O tek sayı, evrensel olarak r diye yazılan Pearson korelasyon katsayısıdır.
r Nasıl Okunur
Katsayı her zaman −1 ile +1 arasına düşer. İşaret yönü verir; büyüklük gücü verir:
| |r| | Tipik okuma | | --- | --- | | 0.0 – 0.2 | ihmal edilebilir | | 0.2 – 0.4 | zayıf | | 0.4 – 0.6 | orta | | 0.6 – 0.8 | güçlü | | 0.8 – 1.0 | çok güçlü |
Bu bantları yasa değil, sohbet başlatıcı olarak görün - fizikte 0.6 bir r hayal kırıklığıdır, psikolojide kariyerin doruk noktasıdır. İçselleştirmeye değer iki özellik: r'nin birimi yoktur (ton cinsinden ağırlığı mpg ile ilişkilendirmek, kilogram cinsinden ağırlığı mpg ile ilişkilendirmekle aynı r'yi verir, çünkü r standartlaştırılmış değerler üzerinde hesaplanır) ve r yalnızca doğrusal ilişkiyi ölçer - mükemmel U biçimli bir ilişkinin r değeri ≈ 0 olabilir.
Ve söylenmesi gereken cümle: korelasyon nedensellik değildir. Dondurma satışları ile boğulma ölümleri yılın ayları boyunca güçlü biçimde ilişkilidir - dondurma insanları boğduğu için değil, yaz ikisini birden yönlendirdiği için. Bir korelasyon size iki değişkenin birlikte hareket ettiğini söyler; neden konusunda suskundur. Belki x, y'yi yönlendiriyordur, belki y, x'i, belki de üçüncü bir şey (bu örnekte mevsim) ikisini birden. Bunlar arasında karar vermek daha büyük bir r değil, deney ya da dikkatli nedensel akıl yürütme ister.
Spearman ve Kendall: Pearson Yanlış Araç Olduğunda
Pearson ham değerler üzerinde çalışır; bu da onu aykırı değerlere duyarlı ve eğri ilişkilere kör kılar. method argümanı sıralamaya dayalı alternatiflere geçer:
Spearman her değeri sırasıyla değiştirir ve sonra sıralar üzerinde Pearson hesaplar. y her zaman x arttıkça arttığı için tüm sıralar hizalanır ve Spearman tam olarak 1 bildirir - aykırı değerin büyüklüğü önemsizleşir, yalnızca konumu kalır. Veri sıralı olduğunda (anket ölçekleri), ağır çarpık olduğunda ya da ilişki monoton ama düz olmadığında Spearman'a uzanın. Kendall benzer bir soruyu uyumlu/uyumsuz çiftlerden yanıtlar; küçük örneklemlerde daha sağlamdır ama daha yavaştır ve yaygın varsayılan Spearman'dır.
Korelasyon Matrisi
Birçok değişken arasındaki ilişkileri aynı anda taramak için cor() fonksiyonuna birkaç sayısal sütun verin:
Her değişken diğer her değişkene karşı, köşegende 1'ler (her şey kendisiyle mükemmel ilişkilidir) ve köşegen boyunca bir ayna görüntüsü. İki ondalığa yuvarlamak kulağa geldiğinden daha önemlidir - yuvarlanmamış matris bir rakam duvarıdır ve matrisin amacı onu taramaktır. Burada tarama, mpg değişkeninin üçüyle de negatif ilişkili olduğunu (daha ağır, daha güçlü, daha büyük motorlu arabalar daha çok yakıt yakar), wt, hp ve disp değişkenlerinin ise birbirleriyle güçlü biçimde pozitif olduğunu gösteriyor - doğrusal regresyona ve onun çoklu doğrusal bağlantı baş ağrılarına geldiğinizde önem taşıyacak bir "büyük araba" değişkenleri kümesi.
Eksik Değerler: use Argümanı
Eksik veriyle cor() fonksiyonunun varsayılanı tahmin etmek yerine NA döndürmektir:
use = "complete.obs", herhangi birNAiçeren her satırı düşürür ve sonra tüm matrisi hayatta kalanlardan hesaplar. Tutarlıdır ama savurgandır - eksik birwtdeğeri o satırımpg–hpçiftinden de siler.use = "pairwise.complete.obs", her hücreyi o çiftin bulunduğu tüm satırlardan hesaplar. Daha fazla veri korur, ama farklı hücreler farklı alt kümelere dayanır ve bu çok nadiren kendi içinde tutarsız bir matris üretebilir.
Birkaç başıboş NA için ikisi de uygundur; yalnızca hangisini kullandığınızı söyleyin.
Anlamlı mı? cor.test()
cor() bir sayı verir ama bunun gürültü olup olamayacağına dair bir fikir vermez. cor.test() hipotez testini çalıştırır:
Çıktıyı blok blok gezelim:
- t = −9.56, df = 30 - test istatistiği. Sıfır hipotezi gerçek korelasyonun sıfır olmasıdır; gözlenen r, n − 2 serbestlik derecesinde (32 araba − 2) bir t istatistiğine dönüştürülür.
- p-value = 1.29e-10 - gerçek korelasyon sıfır olsaydı, 32'lik bir örneklemde sıfırdan bu kadar uzak bir r görme olasılığı yaklaşık 0,0000000001'dir. Bu, ilişkinin gerçek olduğuna dair ezici bir kanıttır - ama unutmayın, p değeri r'nin sıfırdan farklı olup olmadığına dair konuşur, ilişkinin büyük ya da nedensel olup olmadığına dair değil.
- 95 percent confidence interval: −0.93 to −0.74 - gerçek korelasyon için makul aralık. Çoğu zaman p değerinden daha yararlıdır: bu aralığın iyimser ucu bile güçlü bir negatif korelasyondur.
- sample estimates: cor = −0.87 -
cor()fonksiyonunun size verdiği aynı sayı.
Küçük örneklemler burada ekstra saygıyı hak eder: n = 10 ile ±0.5 korelasyonlar şans eseri endişe verici sıklıkta ortaya çıkar ve geniş güven aralığı bunu size söyleyecektir. Yalnızca p değerini değil, aralığı raporlayın.
Görmek: Her Zaman Çizin
Bir korelasyon katsayısı bütün bir ilişkiyi tek bir sayıya sıkıştırır ve bu sıkıştırma eğriliği, kümeleri ya da tüm işi yapan tek bir noktayı gizleyebilir. Herhangi bir r'ye güvenmeden önce saçılım grafiğine bakın:
plot(mtcars$wt, mtcars$mpg) # one pair
pairs(mtcars[, c("mpg", "wt", "hp", "disp")]) # every pair in the matrix
pairs(), korelasyon matrisinizle eşleşen bir saçılım grafiği ızgarası çizer - sayıların düşündüğünüz anlama geldiğini kontrol etmenin en hızlı yolu. Cilalı ısı haritası tarzı matris grafikleri için corrplot paketi (install.packages("corrplot"), sonra corrplot(cor(m))) standart araçtır.
Buradan Ne Çıkarıyorsunuz
cor(x, y)Pearson r değerini verir: işaret yön, büyüklük güçtür, her zaman [−1, 1] aralığında ve birimsizdir.- Korelasyon doğrusal birlikte hareketi ölçer ve nedensellik hakkında hiçbir şey söylemez - gizli bir üçüncü değişken her zaman adaydır.
- Sıralar için
method = "spearman": sıralı veri, aykırı değerler, monoton ama eğri ilişkiler. - Sayısal sütunlarda
cor(df)matrisi verir; onuround(, 2)yapın ve veri eksik olduğundause =argümanına dikkat edin. cor.test(x, y)p değerini ve bir güven aralığını ekler - aralığı raporlayın.- Sayıya inanmadan önce her zaman saçılım grafiğine bakın.
Sırada: soru "birlikte mi hareket ediyorlar?" sorusundan "bu grubun ortalaması diğerininkinden farklı mı?" sorusuna keskinleştiğinde - t-testi.
Sıkça Sorulan Sorular
R'de korelasyon nasıl hesaplanır?
cor(x, y), iki sayısal vektör arasındaki Pearson korelasyon katsayısını döndürür. Tam korelasyon matrisini almak için bunun yerine sayısal sütunlardan oluşan bir veri çerçevesi geçirin: cor(df). Bir p değeri ve güven aralığı için cor.test(x, y) kullanın.
R'de bir korelasyonun p değeri nasıl alınır?
Tek başına cor() bir p değeri vermez - cor.test(x, y) kullanın. Çıktısı t istatistiğini, serbestlik derecesini, gerçek korelasyonun sıfır olduğu sıfır hipotezi için p değerini, %95'lik bir güven aralığını ve tahmin edilen katsayıyı içerir.
Pearson ile Spearman korelasyonu arasındaki fark nedir?
Pearson (varsayılan) ham değerler üzerinde doğrusal ilişkiyi ölçer. Spearman ise değerleri önce sıralar; böylece ilişkinin tutarlı biçimde artıp artmadığını ya da azalıp azalmadığını (monoton) ölçer ve aykırı değerlere çok daha az duyarlıdır. Sıralı veri, çarpık veri ya da eğri ama monoton ilişkiler için cor(x, y, method = "spearman") kullanın.
cor() içinde NA değerleri nasıl ele alınır?
Varsayılan olarak herhangi bir değer eksikse cor() NA döndürür. Önce eksik değer içeren satırları düşürmek için use = "complete.obs" ya da bir matriste her değişken çifti için ikisinin de bulunduğu tüm satırları kullanmak üzere use = "pairwise.complete.obs" geçirin.