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.
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ı:
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ı:
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ı:
Ö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ı:
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ı:
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ı:
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 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ı:
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()
Ç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:
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ı:
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












