R'de boxplot() Nasıl Yapılır BoxRStudio'da Grafikler

⚡ Akıllı Özet

BoxR'deki `plot` fonksiyonu, ggplot2'deki `geom_boxplot()` fonksiyonunu kullanarak sayısal bir dağılımı medyan, çeyrekler, bıyıklar ve aykırı değerler üzerinden özetler. Bu kılavuz, hava kalitesi veri kümesi üzerinde bir kutu grafiği oluşturur ve renk, noktalar, titreşim, çentikler ve grup karşılaştırmaları katmanlarını ekler.

  • 📐 Beş Maddelik Özet: Kutu birinci çeyrekten üçüncü çeyreğe kadar olan aralığı kapsar, çizgi medyanı işaretler ve bıyıklar çeyrekler arası aralığın 1.5 katına kadar uzanır.
  • 🧱 Temel Sözdizimi: ggplot(df, aes(x = group, y = value)) + geom_boxplot() grup değerlerinin her seviyesi için bir kutu oluşturur.ping faktörü.
  • ???? Sıradışı Stil: outlier.colour, outlier.shape ve outlier.size özellikleri, bıyıkların ötesindeki noktaların nasıl çizileceğini kontrol eder.
  • 💠 Gözlemler Gösteriliyor: geom_jitter() çakışmayı kaydırır.ping Noktalar yana doğru uzanarak her kutunun arkasındaki örneklem büyüklüğünü ortaya çıkarır.
  • 📉 Çentikli BoxÖyle: notch = TRUE, medyanın güven aralığını çizer ve örtüşmez.ping Çentikler gerçek bir farkı gösterir.
  • 🎨 Grouping: Haritaping `geom_boxplot()` fonksiyonu, her kategoriyi yan yana birkaç kutuya böler.

BoxR'de grafik çiz

R'de boxplot()

R'de boxplot() verilerin dörtte birlik dağılımını görselleştirmeye ve aykırı değerlerin varlığını tespit etmeye yardımcı olur. R'de bir boxplot() çizmek için ggplot2 kütüphanesinden geom_boxplot() geometrik nesnesini kullanabilirsiniz.

Bu çalışmada, ggplot kütüphanesini kullanarak R'da boxplot() fonksiyonunu tanıtacağız. Veri seti, Mayıs-Eylül 1973 tarihleri ​​arasında New York'ta yapılan günlük hava kalitesi ölçümlerini kaydetmekte ve 153 gözlem içermektedir. Aşağıdaki değişkenleri kullanacağız:

  • Ozon: Sayısal değişken
  • Rüzgar: Sayısal değişken
  • Ay: Mayıs'tan Eylül'e kadar. Sayısal değişken

Bir kutu çizmeden önce, kutunun her bir parçasının tam olarak neyi temsil ettiğini bilmekte fayda var.

Nasıl Okunur Box Grafik: Çeyrekler, Çeyrekler Arası Aralık ve Aykırı Değerler

Kutu grafiğinin her bir öğesi, beş sayılık özetten bir sayıyı kodlar. Hangisinin hangisi olduğunu bilmek, grafiği süsleme olmaktan çıkarıp analiz aracı haline getirir.

  • Alt menteşe: Birinci çeyrek, Q1. Gözlemlerin yüzde yirmi beşi bunun altında yer alıyor.
  • Orta çizgi: İkinci çeyrek. Kutunun içindeki konumu çarpıklığı gösterir: çizginin alta doğru itilmesi, verilerin sağa doğru çarpık olduğunu gösterir.
  • Üst menteşe: Üçüncü çeyrek, Q3. Gözlemlerin yüzde yetmiş beşi bunun altında yer alıyor.
  • Box yükseklik: Çeyrekler arası aralık, IQR = Q3 – Q1, verilerin orta yarısını kapsar ve yayılımın standart ve sağlam bir ölçüsüdür.
  • Bıyıklar: En uç gözleme kadar uzanırlar ve yine de en yakın menteşenin çeyrekler arası aralığının 1.5 katı içinde kalırlar. Bunlar minimum ve maksimum değerler değildir.
  • Bıyıkların ötesindeki noktalar: 1.5 IQR kuralına göre aykırı değer olarak işaretlenen gözlemler.

İki uyarı. Birincisi, buradaki "aykırı değer" istatistiksel bir işarettir, hata değil: ozon konsantrasyonu gibi çarpık bir dağılımda yüksek değerler beklenir ve silinmemelidir. İkincisi, kutu grafiği dağılımın şeklini gizler, bu nedenle aynı kutulara sahip iki grubun altında yatan veriler çok farklı olabilir. Aşağıda gösterildiği gibi, rastgele noktalar eklemek bunu önler.

Box R'de Grafik Çizimi, Histogram ve Keman Grafiği Karşılaştırması

Her üç grafik de sayısal bir dağılımı gösteriyor, ancak her biri diğerlerinin gizlediği bir şeyi ortaya çıkarıyor.

Kriterler Box Arsa Histogram keman arsa
Gösteriler Medyan, çeyrekler, aykırı değerler Her bir bölmedeki frekans Tam yoğunluk eğrisi
Revbirden fazla tepe noktası Yok hayır Evet Evet
Aykırı değerleri işaretler Evet, açıkça Sadece görsel olarak Dolaylı
Birçok grubu karşılaştırmak Çok İyi garip İyi
Bir ayar seçeneğine ihtiyaç var. Yok hayır Evet, çöp kutusu sayısı Evet, bant genişliği
ggplot2 nesnesi geom_boxplot() geom_histogram() geom_violin()

Yaygın bir uzlaşma yöntemi, yoğunluk şeklini ve çeyrek dilim özetini tek bir grafikte tutan, içine dar bir kutu grafiği yerleştirilmiş bir keman grafiği çizmektir. Bkz. histogram eğitimi Karşılaştırmanın çöpe atma tarafı için.

Oluştur Box Arsa

R'de ilk boxplot()'unuzu oluşturmaya başlamadan önce, verileri aşağıdaki şekilde düzenlemeniz gerekir:

  • 1. Adım: Verileri içe aktarın
  • Adım 2: Gereksiz değişkenleri bırakın
  • Adım 3: Ayı sıralı bir faktöre dönüştürün
  • 4. Adım: Her ayı üç bölüme ayıran yeni bir kategorik değişken oluşturun: Başlangıç, Orta ve Bitiş.
  • 5. Adım: Eksik gözlemleri kaldırın

Tüm bu adımlar dplyr ve %>% boru hattı operatörü ile gerçekleştirilir.

library(dplyr)
library(ggplot2)
# Step 1
data_air <- airquality %>%

#Step 2
select(-c(Solar.R, Temp)) %>%

#Step 3
mutate(Month = factor(Month, order = TRUE, labels = c("May", "June", "July", "August", "September")), 
       
#Step 4 
day_cat = factor(ifelse(Day < 10, "Begin", ifelse(Day < 20, "Middle", "End"))))

Verilerin yapısını bakış() işleviyle kontrol etmek iyi bir uygulamadır.

glimpse(data_air)

Çıktı:

## Observations: 153
## Variables: 5
## $ Ozone   <int> 41, 36, 12, 18, NA, 28, 23, 19, 8, NA, 7, 16, 11, 14, ...
## $ Wind    <dbl> 7.4, 8.0, 12.6, 11.5, 14.3, 14.9, 8.6, 13.8, 20.1, 8.6...
## $ Month   <ord> May, May, May, May, May, May, May, May, May, May, May,...
## $ Day     <int> 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,...
## $ day_cat <fctr> Begin, Begin, Begin, Begin, Begin, Begin, Begin, Begi...

Hem Ozone hem de Solar.R, NA değerleri içeriyor. geom_boxplot() bunları sessizce yok sayıp bir uyarı vereceği için, bunları açıkça kaldırmak daha temiz bir çözüm.

# Step 5
data_air_nona <-data_air %>% na.omit()	

Temel kutu grafiği

Şimdi ozonun aylara göre dağılımını gösteren bir grafik çizelim.

# Store the graph
box_plot <- ggplot(data_air_nona, aes(x = Month, y = Ozone))
# Add the geometric object box plot
box_plot +
    geom_boxplot()

Code açıklama

  • Grafiği daha sonra kullanmak üzere saklayın
    • box_plot: Temel grafik, box_plot nesnesinde saklanır; bu sayede tüm çağrıyı tekrarlamadan daha sonra katmanlar ekleyebilirsiniz.
  • Geometrik nesneyi ekleyin
    • data_air_nona veri kümesini ggplot boxplot'a geçiriyorsunuz.
    • aes() argümanının içine x eksenini ve y eksenini eklersiniz.
    • + işareti, R'nin kodu okumaya devam etmesini istediğiniz anlamına gelir. Kodu kırarak daha okunabilir hale getirir.
    • Kutu grafiği oluşturmak için geom_boxplot()'u kullanın

Çıktı:

Temel Box Arsa

Grafiğin tarafını değiştir

Grafiğin yan tarafını çevirebilirsiniz.

box_plot +
  geom_boxplot()+
  coord_flip()

Code açıklama

  • box_plot: Sakladığınız grafiği kullanırsınız. Grafiğe her yeni bilgi eklediğinizde tüm kodları yeniden yazmaktan kaçınırsınız.
  • geom_boxplot(): kutuları ve bıyıkları çizer
  • coord_flip(): Grafiğin yan tarafını çevirin

Çıktı:

Grafiğin Tarafını Değiştir

Aykırı değerin rengini değiştir

Aykırı değerlerin rengini, şeklini ve boyutunu değiştirebilirsiniz.

box_plot +
    geom_boxplot(outlier.colour = "red",
        outlier.shape = 2,
        outlier.size = 3) +
    theme_classic()

Code açıklama

  • outlier.colour=”red”: Aykırı değerlerin rengini kontrol edin
  • outlier.shape=2: Aykırı değerin şeklini değiştirin. 2 üçgeni ifade eder
  • outlier.size=3: Üçgenin boyutunu değiştirin. Daha büyük sayılar daha büyük işaretleyiciler çizer.

Çıktı:

Aykırı Değerin Rengini Değiştir

Özet istatistik ekleyin

Kutu grafiğinin kendisinde görünmeyen grup ortalaması gibi özet bir istatistiği üst üste ekleyebilirsiniz.

box_plot +
    geom_boxplot() +
    stat_summary(fun.y = mean,
        geom = "point",
        size = 3,
        color = "steelblue") +
    theme_classic()

Code açıklama

  • `stat_summary()` fonksiyonu, hesaplanan istatistiği kutu grafiğinin üzerine ekler.
  • `fun` argümanı hangi istatistiğin döndürüleceğini kontrol eder. Burada ortalama değer döndürülmüştür. Eski kodların ggplot2'nin 3.3.0 sürümünde kullanımdan kaldırdığı `fun.y` fonksiyonunu kullandığını unutmayın.
  • Not: Minimum ve maksimum gibi diğer istatistikler de mevcuttur. Aynı grafikte birden fazla istatistik sergilenebilir
  • geom = “point”: Ortalamayı bir noktayla çizin
  • boyut=3: Noktanın boyutu
  • color =”steelblue”: Noktaların rengi

Çıktı:

Özet İstatistik Ekle

Box Noktalı Grafik

Ardından, kutuların üzerine bir nokta grafiği katmanı ekleyin. Her nokta tek bir gözlemi temsil eder ve bu da her kutunun arkasındaki örneklem boyutunun görünmesini sağlar.

box_plot +
    geom_boxplot() +
    geom_dotplot(binaxis = 'y',
        dotsize = 1,
        stackdir = 'center') +
    theme_classic()

Code açıklama

  • geom_dotplot() fonksiyonu, her bir gözlem için, her bir bölme içinde üst üste yığılmış bir nokta çizer.
  • binaxis='y': Y ekseni boyunca noktaların konumunu değiştirin. Varsayılan olarak x ekseni
  • dotsize=1: Noktaların boyutu
  • stackdir='center': Noktaları istiflemenin yolu: Dört değer:
    • “yukarı” (varsayılan),
    • "aşağı"
    • “merkez”
    • “merkez bütünü”

Çıktı:

Box Noktalı Grafik

Kontrol Estetiği Box Arsa

Kutunun rengini değiştir

Grubun renklerini değiştirebilirsiniz.

ggplot(data_air_nona, aes(x = Month, y = Ozone, color = Month)) +
    geom_boxplot() +
    theme_classic()

Code açıklama

  • Grupların renkleri aes() haritasında kontrol edilir.pingAylara göre kutu ve bıyık grafiğinin rengini değiştirmek için color=Month özelliğini kullanabilirsiniz.

Çıktı:

Rengini Değiştir Box

Box birden fazla grupla arsa

Birden fazla grup eklemek de mümkündür. Ölçüm gününe göre hava kalitesindeki farkı görselleştirebilirsiniz.

ggplot(data_air_nona, aes(Month, Ozone)) +
    geom_boxplot(aes(fill = day_cat)) +
    theme_classic()

Code açıklama

  • aes() haritasıping Geometrik nesnenin kontrolleri, görüntülenecek grupları belirler (bu değişken bir faktör olmalıdır).
  • aes(fill= day_cat) x ekseninde her ay için üç kutu oluşturulmasına izin verir

Çıktı:

Box Çoklu Gruplarla Arsa

Box Titreşimli Noktalarla Arsa

Bireysel gözlemleri göstermenin bir başka yolu da rastgele dağılmış noktalar kullanmaktır. Rastgele dağılmış noktalar, kategorik bir x ekseninin birçok noktanın aynı konuma düşmesine neden olduğu durumlarda genellikle tercih edilen yöntemdir.

Bu yöntem örtüşmeyi önler.ping ayrık verilerin.

box_plot +
    geom_boxplot() +
    geom_jitter(shape = 15,
        color = "steelblue",
        position = position_jitter(width = 0.21)) +
    theme_classic()

Code açıklama

  • geom_jitter() fonksiyonu, her noktaya küçük bir rastgele yer değiştirme ekleyerek örtüşmeyi azaltır.ping Değerler görünür hale gelir.
  • shape=15 noktaların şeklini değiştirir. 15 kareleri temsil eder
  • color = “steelblue”: Noktanın rengini değiştirir
  • position = position_jitter(width = 0.21): Noktaların yana doğru ne kadar kaydırılacağını kontrol eder, x ekseni birimleri cinsinden ölçülür. Varsayılan değer, kategoriler arasındaki boşluğun %40'ıdır.

Çıktı:

Box Titreşimli Noktalarla Arsa

Jitter yöntemiyle ilk grafik ile nokta yöntemiyle ikinci grafik arasındaki farkı görebilirsiniz.

box_plot +
    geom_boxplot() +
    geom_point(shape = 5,
        color = "steelblue") +
    theme_classic()

Box Titreşimli Noktalarla Arsa

Çentikli Box Arsa

geom_boxplot()'un ilginç bir özelliği, R'deki çentikli kutu çizimi fonksiyonudur. Çentik çizimi, medyanın etrafındaki kutuyu daraltır. Çentikli kutu çiziminin temel amacı, gruplar arasındaki medyanın anlamlılığını karşılaştırmaktır. Çentikler örtüşmediğinde iki grubun farklı medyanlara sahip olduğuna dair güçlü kanıtlar vardır. Bir çentik aşağıdaki gibi hesaplanır:

Çentikli Box Arsa

Burada IQR, çeyrekler arası aralığı ve n, gruptaki gözlem sayısını ifade eder. Çentik, medyanın yaklaşık %95 güven aralığını kapsar.

box_plot +
    geom_boxplot(notch = TRUE) +
    theme_classic()

Code açıklama

  • geom_boxplot(notch = TRUE): Ortanca değerin etrafına çentikler yerleştirilmiş kutu grafiğini çizer.

Çıktı:

Çentikli Box Arsa

Bir içeriğe başlık, etiket ve özel renkler nasıl eklenir? Box R'de grafik çiz

Yukarıdaki grafikler, değişken adlarını doğrudan veri çerçevesinden alan ggplot2 varsayılan ayarlarını kullanmaktadır. Yayınlanabilir bir grafik, okunabilir etiketlere ve bilinçli bir renk paletine ihtiyaç duyar.

Başlıklar ve eksen etiketleri. Her bir labs() çağrısı, tüm metin öğelerini ayarlar:

box_plot +
    geom_boxplot(fill = "coral", alpha = 0.7) +
    labs(title = "Ozone concentration by month",
        subtitle = "New York, May to September 1973",
        x = "Month",
        y = "Ozone (parts per billion)",
        caption = "Source: airquality dataset") +
    theme_classic()

Kendi renklerinizi seçmek. `aes()` içinde `fill` fonksiyonu kullanıldığında `scale_fill_manual()`, `colour` fonksiyonu kullanıldığında ise `scale_colour_manual()` fonksiyonu kullanılır.

ggplot(data_air_nona, aes(x = Month, y = Ozone, fill = Month)) +
    geom_boxplot() +
    scale_fill_manual(values = c("#0e9cd1", "coral", "#7dc27d", "#c9a227", "grey60")) +
    theme_classic() +
    theme(legend.position = "none")

Burada gösterge devre dışı bırakıldı çünkü x ekseninde her ayın adı zaten belirtilmiş durumda, bu nedenle tekrar edilmesi yer israfına yol açacaktır.

Kutuların sırasını değiştirmek. Faktör seviyeleri eksendeki sıralamayı belirler. Ay, sıralı bir faktör olarak oluşturulduğu için zaten kronolojik olarak okunmaktadır. Sıralı olmayan bir faktör için, bunun yerine medyana göre sıralayın:

ggplot(data_air_nona, aes(x = reorder(Month, Ozone, FUN = median), y = Ozone)) +
    geom_boxplot() +
    theme_classic()

Grafiği kaydediyorum. ggsave() fonksiyonu, son grafiği sizin belirlediğiniz çözünürlükte diske kaydeder:

ggsave("ozone_boxplot.png", width = 8, height = 5, dpi = 300)

Box R'de grafik çizme: Code Referans

Aşağıdaki tabloda, yukarıda ele alınan her kutu grafiği varyantı için ggplot2 çağrısı listelenmiştir:

Hedef Code
Temel kutu grafiği
ggplot(df, aes(x = x1, y = y)) + geom_boxplot()
Yönünü değiştirin
ggplot(df, aes(x = x1, y = y)) + geom_boxplot() + coord_flip()
Çentikli kutu grafiği
ggplot(df, aes(x = x1, y = y)) + geom_boxplot(notch = TRUE)
Box titrek noktalarla çizim
ggplot(df, aes(x = x1, y = y)) + geom_boxplot() + geom_jitter(position = position_jitter(0.21))
Gruplara göre renk
ggplot(df, aes(x = x1, y = y, color = x1)) + geom_boxplot()
Her kategori için birden fazla grup
ggplot(df, aes(x = x1, y = y)) + geom_boxplot(aes(fill = x2))
Grup ortalamasını ekleyin.
ggplot(df, aes(x = x1, y = y)) + geom_boxplot() + stat_summary(fun = mean, geom = "point")

Ayrıca Kontrol Edin: - Yeni Başlayanlar İçin R Eğitimi: R Programlama Dilini Öğrenin

SSS

Bıyık çizgileri, en yakın çeyreklik dilimin çeyrekler arası aralığının 1.5 katı içinde kalan en uç gözleme ulaşır. Bunlar minimum ve maksimum değerler değildir ve bunların ötesindeki her şey aykırı nokta olarak çizilir.

Otomatik olarak değil. 1.5 IQR kuralı bir gelenektir, hata kanıtı değildir. Her noktayı önce inceleyin: ozon ölçümleri gibi çarpık veriler doğal olarak gerçek ölçümler olan yüksek değerler üretir.

üst üste gelmeping Çentikler, iki medyanın birbirinden farklı olduğuna dair güçlü bir kanıt olmadığını göstermektedir. Örtüşmemeping Çentikler, yaklaşık %95 güven aralığına denk gelen, muhtemel gerçek bir farkı gösterir.

Box Grafikler, eğitim öncesinde standart bir keşif adımıdır: sınıflar arasında çarpıklığı, aykırı değerleri ve farklı özellik ölçeklerini ortaya çıkarırlar. Ekipler ayrıca bunları çapraz doğrulama katmanlarında model doğruluğunu karşılaştırmak için de kullanırlar.

Evet. Yapay zekâ asistanları, sürekli bir x ekseninin tek bir kutu üretmesi gibi hataları açıklayabilir ve doğru aes() haritasını önerebilir.pingAyrıca, fun.y gibi kullanımdan kaldırılmış argümanları işaretleyin. Düzeltilmiş kodu her zaman kendi verileriniz üzerinde yeniden çalıştırın.

Bu yazıyı şu şekilde özetleyin: