Saçılım Grafiği Neyi Gösterir
Bir saçılım grafiği, iki sayısal değişken arasındaki ilişkiyi gösterir: her gözlem, ilk değerine göre yatay eksende ve ikinci değerine göre dikey eksende konumlanmış bir nokta olur. İki değişken birlikte hareket ediyorsa noktalar bir desen oluşturur; etmiyorsa biçimsiz bir bulut elde edersiniz. Herhangi bir model uydurmadan önceki standart ilk bakıştır - ve R bunu plot() rehberinde ele alınan aynı plot() fonksiyonuyla çizer.
32 arabadan oluşan yerleşik veri kümesi mtcars kullanacağız ve fiziksel bir soru soracağız: ağır arabaların motorları daha mı güçlü?
Grafiği Yapmak
wt, bin libre cinsinden ağırlık; hp ise beygir gücüdür:
plot(mtcars$wt, mtcars$hp,
main = "Horsepower vs. weight",
xlab = "Weight (1000 lbs)",
ylab = "Horsepower",
pch = 19,
col = "steelblue")
Resim: grafiğin alt köşesinden (hafif arabalar, ağırlık ölçeğinde 1.5 civarı, 60–90 beygir civarı) 200 beygiri aşan 5'in üzerindeki ağır arabalara doğru yükselen otuz iki dolu nokta. Tırmanış açık ama derli toplu değil - belirli bir ağırlıkta noktalar epey geniş bir beygir bandına yayılır.
Biçimlendirme alışıldık temel grafik takımıdır: dolu daireler için pch = 19 (içi boş varsayılan ekran görüntülerinde kaybolur), renk için col, noktaların daha büyük olması gerekiyorsa cex = 1.3. Noktaları üçüncü ve kategorik bir değişkene göre renklendirmek için bir renk vektörünü bir faktörle indeksleyin - col = c("tomato", "steelblue", "darkgreen")[factor(mtcars$cyl)], her silindir sayısına kendi rengini verir.
Okumak: Yön, Güç, Biçim
Bir saçılım grafiğine her baktığınızda sırasıyla üç soru:
- Yön. Yatay eksen boyunca tararken noktalar yükseliyor mu (pozitif ilişki) yoksa alçalıyor mu (negatif)? Burada yükseliyorlar: daha ağır, daha güçlü demek. Bunun yerine
mpgdeğeriniwtkarşısında çizin; bulut alçalır - daha ağır, daha çok yakan demek. - Güç. Noktalar tek bir yola ne kadar sıkı sarılıyor? Kalem inceliğinde bir bant güçlü bir ilişkidir; gevşek bir püskürtme zayıf olanıdır. Bu bulut orta derecede sıkıdır.
- Biçim ve sürprizler. Yol düz mü, eğri mi? Kümeler ya da her şeyden uzak noktalar var mı?
mtcarsiçinde Maserati Bora sürünün belirgin biçimde üstünde durur - orta bir ağırlıkta 335 beygir. Böyle tek bir nokta uydurulmuş bir çizgiyi gözle görülür biçimde çekebilir; uydurmadan önce bakmanızın nedeni tam da budur.
Eğilim Çizgisini Eklemek
Bir saçılım grafiği bir ilişkiyi ortaya koyar; içinden geçen bir çizgi iddiayı özetler. Doğrusal bir model uydurun ve doğrudan abline() fonksiyonuna verin:
plot(mtcars$wt, mtcars$hp,
pch = 19, col = "steelblue",
xlab = "Weight (1000 lbs)", ylab = "Horsepower")
abline(lm(hp ~ wt, data = mtcars), col = "tomato", lwd = 2)
lm(hp ~ wt) en küçük kareler çizgisini uydurur - formülü "wt tarafından açıklanan hp" diye okuyun, dikey eksen değişkeni ~ işaretinden önce - ve abline() onu grafiğin boyunca çizer. Çizgi bin libre başına yaklaşık 46 beygir tırmanır. O modelin ne anlama geldiği ve özetinin nasıl okunacağı doğrusal regresyon sayfasının konusudur.
Düz bir çizgi varsaymak istemiyorsanız lowess(), veriyi nereye giderse gitsin izleyen pürüzsüz bir eğri çizer:
lines(lowess(mtcars$wt, mtcars$hp), col = "darkgreen", lwd = 2, lty = 2)
Lowess eğrisi ile düz çizgi kabaca uyuştuğunda doğrusal bir özet adildir. Eğri uzaklaşarak büküldüğünde ilişki doğrusal değildir ve düz bir çizgi onu yanlış temsil ederdi.
cor() ile Sayıları Kontrol Etmek
Grafik size biçimi verir; cor() gücü tek bir sayı olarak verir. Bu adım tamamen metin çıktısıdır, o yüzden burada çalıştırın:
Ağırlık ve beygir gücü yaklaşık 0.66 düzeyinde ilişkilidir - orta derecede sıkı yükselen bulut, sayı olarak. Matris, mpg değerinin ikisiyle de güçlü biçimde negatif ilişkili olduğunu ekler (ağırlıkla yaklaşık −0.87). Yine de işlem sırasını koruyun: önce grafik, sonra katsayı. Tek bir r değeri bir eğriyi gizleyebilir ya da tek bir aykırı değerle şişebilir - onu yanıltıcı kılan klasik yollar için bkz. korelasyon.
Saçılım Grafiği Matrisi: pairs()
Birkaç sayısal sütunla her eşleşmeyi elle çizmek çabuk sıkıcı olur. pairs() bunu tek çağrıda yapar:
pairs(mtcars[, c("mpg", "wt", "hp")],
pch = 19, col = "steelblue")
Sonuç 3 × 3 bir ızgaradır: değişken adları köşegen boyunca uzanır ve köşegen dışındaki her panel bir çiftin saçılım grafiğidir - mpg karşı wt, mpg karşı hp, wt karşı hp, her biri eksenler takas edilmiş hâlde iki kez görünür. Yeni bir veri kümesini ayıklamanın en hızlı yoludur: tek bir bakış hangi çiftlerin ilişkili olduğunu, hangi ilişkilerin eğrildiğini ve aykırı değerlerin nerede saklandığını gösterir. Buradaki gibi önce sütunları alt kümeye indirin - altı yedi değişkenin ötesinde paneller okunabilirliğin altına küçülür.
ggplot2 Sürümü
ggplot2 içinde saçılım grafiği artı uydurulmuş çizgi iki katmandır:
library(ggplot2)
ggplot(mtcars, aes(x = wt, y = hp)) +
geom_point(color = "steelblue", size = 2) +
geom_smooth(method = "lm", color = "tomato") +
labs(title = "Horsepower vs. weight",
x = "Weight (1000 lbs)", y = "Horsepower")
geom_smooth(method = "lm"), bir bonusla birlikte abline(lm(...)) demektir: çizginin etrafında gölgeli bir güven bandı. method ayarlanmadan bırakılırsa bunun yerine bir loess eğrisi uydurur - lowess() fonksiyonunun ggplot2 karşılığı. Hızlı bir bakış için yazma hızında temel R kazanır; noktaların otomatik açıklamayla gruba göre renklendirilmesini istediğiniz anda ggplot2 kazanır.
Buradan Ne Çıkarıyorsunuz
- İki sayısal vektörle
plot(x, y)bir saçılım grafiğidir;pch = 19ve etiketli eksenler onu sunulabilir kılar. - Herhangi bir şey hesaplamadan önce yönü, gücü ve biçimi okuyun - ve aykırı değerleri fark edin.
abline(lm(y ~ x, data = df))regresyon çizgisini ekler;lines(lowess(x, y))doğrusallık varsaymayan bir eğri ekler.cor(), grafiğin gösterdiğini niceler; grafik sayıyı dürüst tutar.pairs(df[, cols])tüm ikili saçılım grafiklerini aynı anda çizer - yeni bir veri kümesinin en hızlı ayıklaması.
Sırada: çubuk grafiği - sayısal çiftleri geride bırakıp kategoriler arası sayımları karşılaştırmak.
Sıkça Sorulan Sorular
R'de saçılım grafiği nasıl yapılır?
İki sayısal vektörle plot(x, y) çağırın - örneğin plot(mtcars$wt, mtcars$hp). Her gözlem bir nokta olur. Dolu noktalar için pch = 19 ve etiketler için main, xlab, ylab ekleyin.
R'de bir saçılım grafiğine nasıl regresyon çizgisi eklenir?
Modeli uydurun ve abline() fonksiyonuna verin: abline(lm(hp ~ wt, data = mtcars)), en küçük kareler çizgisini var olan grafiğin üzerine çizer. Formül sırasına dikkat edin - dikey eksen değişkeni ~ işaretinden önce gelir.
R'de birçok değişken çifti aynı anda nasıl çizilir?
pairs(df) bir saçılım grafiği matrisi çizer: her sütun çifti için küçük bir panel. Önce alt küme alın - pairs(mtcars[, c("mpg", "wt", "hp")]) - çünkü altı yedi sütunun ötesinde paneller okunamayacak kadar küçülür.
Bir saçılım grafiği, korelasyonun söylemediği neyi söyler?
Biçimi. Korelasyon katsayısı tek bir sayıdır ve temiz bir doğru, bir eğri ya da tek bir uç aykırı değeri olan bir bulut için özdeş olabilir. Saçılım grafiği eğriliği, kümeleri ve aykırı değerleri doğrudan gösterir - önce çizip sonra cor() hesaplamanızın nedeni budur.