Menu

R'de Kutu Grafiği: Örneklerle Gruba Göre boxplot()

R'de boxplot() ile nasıl kutu grafiği yapılır - kutu ve bıyıkları okumak, grup karşılaştırmaları için formül arayüzü, biçimlendirme ve arkasındaki sayıları bulmak.

Bu sayfada çalıştırılabilir editörler var - düzenle, çalıştır ve sonucu anında gör.

Kutu Grafiği Nasıl Okunur

Bir kutu grafiği, bütün bir dağılımı beş sayıya sıkıştırır ve onları tek ve derli toplu bir simge olarak çizer. Okumayı öğrenmek otuz saniye sürer, o yüzden önce onu yapalım - her parçanın kesin bir anlamı vardır:

  • Kutunun içindeki kalın çizgi medyandır: verinin yarısı altında, yarısı üstünde durur.
  • Kutunun kendisi çeyrekler arası aralığı (IQR) kaplar - birinci çeyrekten (verinin %25'i altında) üçüncü çeyreğe (%75'i altında). Verinizin orta yarısı kutunun içinde yaşar.
  • Bıyıklar, kutudan dışa uzanan çizgilerdir. Her biri, kutu kenarının 1,5 × IQR sınırı içinde kalan en uç veri noktasına uzanır - yani verinin tüm aralığını değil, "olağan aralığını" kapsarlar.
  • Bıyıkların ötesindeki tekil noktalar, kutudan 1,5 × IQR'den daha uzaktaki değerlerdir: şüpheli aykırı değer olarak işaretlenir ve sayabilmeniz için tek tek çizilir.

Uzun bir kutu yayılmış veri demektir; kutunun içinde merkezden kaçık duran bir medyan çizgisi çarpıklık demektir; bir bıyığın ötesinde uzayan bir nokta dizisi o tarafta ağır bir kuyruk demektir. Bir histogram aynı dağılımı daha ayrıntılı gösterir - ama kutu grafiğinin süper gücü, bir düzinesinin yan yana sığmasıdır; bu da onu grupları karşılaştırmanın asıl grafiği yapar.

Tek Değişkenin Kutu Grafiği

Fonksiyon boxplot()'tır ve tek bir sayısal vektör için tek çağrıdır:

scores <- c(52, 55, 58, 60, 61, 63, 64, 66, 68, 70, 72, 95)

boxplot(scores,
        main = "Test scores",
        ylab = "Score")

Bunun çizdiği resim: 59'dan 69'a bir kutu, 63.5'te medyan çizgisi, aşağıda 52'ye ve yukarıda 72'ye uzanan bıyıklar ve 95'te süzülen yapayalnız bir nokta - ortalama-ve-standart-sapma özetinin sessizce yutacağı aykırı değer. O anlık "bir değer diğerleri gibi değil" hissi, kutu grafiklerinin var olma nedenidir.

(Bu bölümdeki her sayfada olduğu gibi grafik çağrıları statik parçacıklardır - aşağıdaki çalıştırıcı yalnızca metin çıktısı gösterir. Çizimi görmek için onları yerel olarak çalıştırın.)

Grupları Karşılaştırmak: Formül Arayüzü

Asıl gündelik kullanım grup başına bir kutudur ve bunun için boxplot() bir formül kabul eder: y ~ group, "y'nin gruba göre ayrıştırılması" diye okunur. R'nin yerleşik ToothGrowth veri kümesi - portakal suyu (OJ) ya da askorbik asit (VC) yoluyla C vitamini verilen 60 kobayda diş uzunluğu - klasik gösterimdir:

boxplot(len ~ supp,
        data = ToothGrowth,
        main = "Tooth growth by supplement",
        xlab = "Supplement",
        ylab = "Tooth length")

Ortak bir dikey ölçekte iki kutu belirir: OJ kutusu VC kutusundan gözle görülür biçimde yüksekte durur, medyanı yaklaşık 19'a karşı 22 civarındadır. Her iki kutu da tek bir ekseni paylaştığı için karşılaştırma yapısı gereği dürüsttür - farklı ölçekli iki grafiğin bir grubu kayırma ihtimali yoktur. Gruplama sütunu bir faktör (ya da character vektör) olmalıdır; her seviye bir kutu olur.

Formüller iç içe de geçer: boxplot(len ~ supp * dose, data = ToothGrowth), takviye ve doz kombinasyonu başına bir tane olmak üzere altı kutu çizer. Kutularda bir grup farkı gerçek göründüğünde, doğal olarak gelen soru - bu gürültüden fazlası mı? - bir t-testinin yanıtladığı sorudur.

Etiketler, Renkler ve Yatay Kutu Grafikleri

Biçimlendirme argümanları temel grafik geleneklerini izler. names kutuları etiketler, col onları doldurur - her grubu farklı renklendirmek için bir vektör geçirin:

boxplot(len ~ supp,
        data  = ToothGrowth,
        names = c("Orange juice", "Ascorbic acid"),
        col   = c("orange", "lightblue"),
        main  = "Tooth growth by supplement",
        ylab  = "Tooth length")

Ekmeğini çıkaran iki anahtar daha:

  • horizontal = TRUE, tüm grafiği döndürür ve kutular yatay eksen boyunca uzanır. Grup adları uzun olduğunda bunu yapın - yatay etiketler, dikey olanların çakıştığı yerde okunabilir kalır.
  • notch = TRUE, her medyanın etrafına bir çentik açar; iki grubun çentikleri örtüşmediğinde medyanları makul biçimde farklıdır. Bunu bir test değil, görsel bir ipucu olarak görün.

Kutunun Arkasındaki Sayılar

Grafiğin çizdiği her şey yazdırabileceğiniz sayılardan gelir. quantile() beş sayılı özeti verir ve boxplot.stats() size grafiğin kullandığı şeyi tam olarak verir - aykırı değerler dahil. Bunu tam burada çalıştırabilirsiniz:

İkisinin kuzen olduğuna, ikiz olmadığına dikkat edin: quantile() gerçek minimum ve maksimumu bildirir, s$stats ise bıyıklarda biter - 1,5 × IQR çitinin içindeki en uç noktalarda. Aralarındaki boşluk tam olarak s$out'tur, burada yalnız 95. Biri "o aykırı noktalar hangi satırlar?" diye sorduğunda, x[x %in% boxplot.stats(x)$out] - ya da çit değerleri üzerinde bir filtre - bunu yanıtlar.

ggplot2 ile Kutu Grafikleri

ggplot2 içinde gruplama, bir formül yerine estetik eşlemeye girer:

library(ggplot2)

ggplot(ToothGrowth, aes(x = supp, y = len, fill = supp)) +
    geom_boxplot() +
    labs(title = "Tooth growth by supplement",
         x = "Supplement", y = "Tooth length")

Aynı iki kutu, üstüne bedavaya bir açıklama ve tema. ggplot2 sürümü grafik büyüdüğünde daha iyi ölçeklenir - dose değişkenine göre yüzeylere ayırın, ham noktaları geom_jitter(width = 0.1) ile bindirin ve kod bildirimsel kalsın. Analiz sırasında tek seferlik bir karşılaştırma için boxplot(y ~ g, data = df) yazabileceğiniz en hızlı şey olmayı sürdürür.

Buradan Ne Çıkarıyorsunuz

  • Kutu anatomisi: medyan çizgisi, kutu = IQR, bıyıklar = 1,5 × IQR içindeki en uç noktalar, ötedeki noktalar = şüpheli aykırı değerler.
  • Tek değişken için boxplot(x); tek ve dürüst bir ortak ölçekte yan yana grup karşılaştırması için boxplot(y ~ group, data = df).
  • names, grup başına bir col vektörü ve etiketler uzun olduğunda horizontal = TRUE ile biçimlendirin.
  • boxplot.stats(x)$stats ve $out, sayı hâlindeki grafiktir - grafiğin işaret ettiği aykırı değerleri çıkarmak için onları kullanın.
  • ggplot2: grubu x ya da fill değişkenine eşleyerek geom_boxplot().

Sırada: saçılım grafiği - tek bir değişkenin dağılımından iki değişken arasındaki ilişkiye.

Sıkça Sorulan Sorular

R'de kutu grafiği nasıl yapılır?

Tek bir kutu için sayısal bir vektör üzerinde boxplot(x) çağırın ya da yan yana grup başına bir kutu almak için boxplot(y ~ group, data = df) formül arayüzünü kullanın. İkisi de temel R ile gelir - paket gerekmez.

Kutu grafiğinin parçaları ne anlama gelir?

Kutunun içindeki kalın çizgi medyandır. Kutu, birinci çeyrekten üçüncü çeyreğe kadar çeyrekler arası aralığı kaplar. Bıyıklar, kutunun IQR değerinin 1,5 katı içindeki en uç veri noktalarına uzanır ve bıyıkların ötesindeki her şey tek tek nokta olarak çizilir - şüpheli bir aykırı değer.

R'de gruba göre kutu grafiği nasıl yapılır?

Bir formül kullanın: boxplot(len ~ supp, data = ToothGrowth), supp seviyesi başına bir kutu çizer. Gruplama değişkeni bir faktör ya da character sütun olmalıdır; her seviye ortak bir ölçekte bir kutu olur.

Bir kutu grafiğinin gösterdiği aykırı değerler nasıl bulunur?

boxplot.stats(x)$out, grafiğin bıyıkların ötesinde nokta olarak çizeceği değerleri tam olarak döndürür ve boxplot.stats(x)$stats, kutunun arkasındaki beş sayıyı verir - bıyık uçları, menteşeler ve medyan.

Coddy programming languages illustration

Coddy ile kodlamayı öğren

BAŞLA