Merhaba dostlar!
Bir önceki “teknik mola”mızda, bir veri setinin ruhunu anlamak için kullandığımız temel istatistiksel kavramları (ortalama, medyan, standart sapma, çarpıklık, basıklık) hatırladık. Bu kavramlar, verinin karakter haritasını çıkarmak için kullandığımız en temel araçlardı. Bize verinin kalbinin nerede attığını, ne kadar dağınık olduğunu ve kişiliğinin (şeklinin) nasıl olduğunu fısıldadılar.
Ancak, Claus Wilke’nin (2019) de vurguladığı gibi, bir dağılımı anlamak, verinin hikayesini anlamanın ilk ve en önemli adımıdır ve bazen bu hikayeyi en iyi anlatan şey rakamlar değil, görsellerdir.
İşte bu bölümde, o teorik bilgileri ve istatistiksel ölçüleri alıp,
onları herkesin bir bakışta anlayabileceği, canlı ve konuşan grafiklere
dönüştüreceğiz. Atölyemizdeki en hassas ölçüm cihazlarını, yani
ggplot2
’nin dağılım geometrilerini kullanarak, verinin bize
fısıldadığı o sırları duymaya ve görmeye tamamen hazır olacağız.
Bu yolculukta kullanacağımız alet çantamız oldukça zengin:
geom_histogram
ve bu kutuları pürüzsüz bir
eğriye dönüştüren geom_density
.geom_boxplot
(kutu-bıyık) ve bu iskeletin etrafındaki yoğunluğu gösteren
geom_violin
(keman).Raincloud
grafikleri.Ridgeline
grafikleri.Hazırsanız, bu güçlü aletlerle verinin ruhuna yapacağımız bu derin ve görsel yolculuğa başlayalım!
library(tidyverse)
# Bu bölümde, DALEX paketinden gelen meşhur titanic veri setini kullanacağız.
# Eğer yüklü değilse: install.packages("DALEX")
library(DALEX)
geom_histogram
)Amaç: Sürekli bir değişkeni (örneğin, yaş) eşit aralıklara bölerek, her bir aralığa kaç gözlemin düştüğünü saymak. Bu, verinin en yoğun ve en seyrek olduğu bölgeleri bir bakışta görmemizi sağlar.
ggplot(data = titanic, mapping = aes(x = age)) +
geom_histogram(binwidth = 5, fill = "steelblue", color = "white") +
labs(
title = "Titanic Yolcularinin Yas Dagilimi",
x = "Yas",
y = "Yolcu Sayisi (Frekans)"
)
Titanic Yolcularinin Yas Dagilimi (Histogram)
binwidth
’in (Kutu Genişliği) Kritik
ÖnemiBir histogramın anlattığı hikaye, seçtiğiniz kutu genişliğine
(binwidth
) derinden bağlıdır. Çok dar bir aralık, verideki
her küçük “gürültüyü” bir tepe gibi göstererek ana deseni görmemizi
engeller. Çok geniş bir aralık ise önemli detayları “yutarak” hikayeyi
aşırı basitleştirir.
Doğru binwidth
’i bulmak, bir sanat ve bilim karışımıdır.
Gelin, aynı verinin farklı binwidth
değerleriyle nasıl
farklı hikayeler anlattığını görelim.
library(patchwork)
# Ortak tema ayarlarımızı bir değişkene atayalım ki tekrar yazmak zorunda kalmayalım
ortak_tema <- theme(
plot.title = element_text(size = 7), # Ana başlık boyutu
axis.title.x = element_text(size = 7), # X ekseni başlığının boyutu
axis.title.y = element_text(size = 7) # Y ekseni başlığının boyutu
)
p1 <- ggplot(titanic, aes(x=age)) +
geom_histogram(binwidth=1) +
ggtitle("Binwidth = 1 (Cok Detayli)") +
labs(x="Yas", y="Sayi") + # Eksen etiketlerini ekleyelim
ortak_tema # Ortak tema ayarlarımızı uygulayalım
p2 <- ggplot(titanic, aes(x=age)) +
geom_histogram(binwidth=5) +
ggtitle("Binwidth = 5 (Dengeli)") +
labs(x="Yas", y="Sayi") +
ortak_tema
p3 <- ggplot(titanic, aes(x=age)) +
geom_histogram(binwidth=20) +
ggtitle("Binwidth = 20 (Cok Genel)") +
labs(x="Yas", y="Sayi") +
ortak_tema
(p1 | p2 | p3)
Farkli Kutu Genisliklerinin Dagilim Uzerindeki Etkisi
Gördüğünüz gibi, binwidth = 5
bize en dengeli hikayeyi
anlatıyor: yolcuların çoğunluğunun genç yetişkinler olduğunu, çok az
sayıda yaşlı bulunduğunu net bir şekilde görebiliyoruz.
geom_density
)Amaç: Histogramın “köşeli” yapısını, pürüzsüz bir eğri ile göstererek dağılımın genel şeklini daha akıcı bir şekilde ortaya çıkarmak.
ggplot(data = titanic, mapping = aes(x = age)) +
geom_density(fill = "skyblue", alpha = 0.7) + # alpha ile şeffaflık katıyoruz
labs(
title = "Titanic Yolcularinin Yas Yogunluk Grafigi",
x = "Yas",
y = "Yogunluk"
)
Titanic Yolcularinin Yas Yogunluk Grafigi
Yoğunluk grafikleri harikadır, ancak bir dezavantajları vardır. Doğaları gereği, verinin olmadığı yerlerde bile (örneğin, Titanic’te negatif yaşta yolcular olmamasına rağmen) bir yoğunluk varmış gibi gösterebilirler. Grafiğimizin sol tarafta sıfırın altına hafifçe sarktığını görebilirsiniz.
Ustanın Notu: Bir yoğunluk grafiğini yorumlarken, her zaman verinizin mantıksal sınırlarını aklınızda tutun ve grafiğin bu sınırların dışına taştığı yerleri “aletin bir özelliği” olarak kabul edin.
Dostlar, bu bölümde dağılımları anlamak için en temel iki aracımızı,
geom_histogram
ve geom_density
’yi tanıdık. En
önemlisi, bu araçları kullanırken bir usta gibi düşünmeyi,
binwidth
gibi kritik ayarların anlattığımız hikayeyi nasıl
şekillendirdiğini öğrendik.
Bir sonraki bölümde, bu temel üzerine inşa ederek, birden fazla grubun dağılımını nasıl karşılaştıracağımızı ve boxplot, violin plot, raincloud plot gibi daha modern ve daha zengin görselleştirme makinelerini nasıl kullanacağımızı keşfedeceğiz.
Şimdiye kadar tek bir grubun dağılımını inceledik. Peki ya “Kadın ve erkek yolcuların yaş dağılımları birbirinden farklı mı?” gibi bir soruyu cevaplamak isteseydik? Bunun için, atölyedeki aletlerimizi gruplar üzerinde kullanmamız gerekir.
position = "stack"
)İlk akla gelen yöntemlerden biri yığılmış histogramdır. Ancak bu yöntem, genellikle kötü bir fikirdir.
ggplot(titanic, aes(x = age, fill = gender)) +
geom_histogram(binwidth = 5, position = "stack", color = "white") +
# Çubuklar arasına beyaz çizgi ekledim
scale_fill_discrete(
name = "Cinsiyet", # Lejant başlığını buradan da kontrol edebiliriz
labels = c("Kadin", "Erkek") # ÖNEMLİ: Orijinal etiketlerin sırasına göre ('female', 'male')
) +
labs(
x = "Yas",
y = "Yolcu Sayisi",
title = "Cinsiyete Gore Yas Dagilimi (Yigilmis)",
subtitle = "Bu grafik turu karsilastirma icin yaniltici olabilir."
)
Yigilmis Histogram: Karsilastirma Neden Zor?
Gördüğünüz gibi, alttaki grubun (bu durumda ‘erkek’) dağılımını yorumlamak kolayken, onun üzerinde “yüzen” ‘kadin’ grubunun gerçek dağılım şeklini anlamak neredeyse imkansızdır. Çünkü başlangıç noktaları sabit değildir. Bu nedenle, dağılımları karşılaştırmak için yığılmış histogramlardan kaçınırız.
alpha
)İki (veya birkaç) grubun dağılımını karşılaştırmak için en estetik ve
en etkili yöntemlerden biri, geom_density
’nin
alpha
(şeffaflık) özelliğini kullanmaktır.
ggplot(titanic, aes(x = age, fill = gender)) +
geom_density(alpha = 0.5) + # alpha=0.5 ile %50 şeffaflık veriyoruz
scale_fill_discrete(
name = "Cinsiyet",
labels = c("Kadin", "Erkek")
) +
labs(
title = "Cinsiyete Gore Yas Dagilimlarinin Karsilastirilmasi",
x = "Yas",
y = "Yogunluk"
)
Seffaf Yogunluk Grafikleri: Grupları Karsilastirmanin Uygun Yolu
İşte bu kadar net! Şeffaflık sayesinde, her iki grubun dağılım eğrisini de baştan sona görebiliyoruz. Bu grafik bize çok katmanlı bir hikaye anlatıyor:
-Ana Hikaye: Hem kadınların (pembe) hem de erkeklerin (turkuaz) yaş dağılımı, en yoğun noktasını 20-30 yaş aralığında buluyor. Bu, yolcuların çoğunluğunun genç yetişkinlerden oluştuğunu teyit eder.
-Gizli Detay: Ancak grafiğin en soluna, 0-10 yaş aralığına dikkatle baktığımızda, bu sefer kadın yolculara ait pembe eğride ikinci, daha küçük ama belirgin bir tepe olduğunu görüyoruz. Erkek yolculara ait turkuaz eğride ise bu tepe o kadar belirgin değil. Bu, bize Titanic’teki küçük kız çocuklarının sayısının, küçük erkek çocuklarına göre oransal olarak daha fazla olduğunu fısıldayan çok önemli bir içgörüdür.
Dostlar, dağılımları görselleştirmenin en klasik iki yolu olan histogram ve yoğunluk grafiklerini ve bunları gruplar üzerinde nasıl etkili bir şekilde kullanacağımızı öğrendik.
Ancak bu grafikler bize dağılımın “şekli” hakkında harika bilgiler verirken, medyan, çeyreklikler, aykırı değerler gibi spesifik istatistiksel özetleri doğrudan göstermezler.
Bir sonraki adımda, atölyedeki daha modern ve istatistiksel olarak
daha zengin makineleri tanıyacağız: Kutu Grafikleri
(geom_boxplot
), Keman Grafikleri (geom_violin
)
ve bu ikisinin gücünü birleştiren Yağmur Bulutu Grafikleri
(Raincloud Plots
). Bu aletler, dağılımın hem
şeklini hem de istatistiksel özetini aynı anda görmemizi sağlayacak.
Histogramlar bize yoğunluğu gösterir, ama bir bakışta “bu verinin ortası neresi?” veya “aykırı değerler var mı?” gibi sorulara net cevap vermez. Şimdi, bu soruları cevaplamak için tasarlanmış daha modern ve istatistiksel olarak daha zengin makineleri tanıyacağız.
geom_boxplot
(Kutu-Bıyık Grafiği): Beş Sayılık
ÖzetAmaç: Bir veri setinin temel istatistiksel özetini (“Beş Sayı Özeti”: minimum, ilk çeyrek, medyan, üçüncü çeyrek, maksimum) ve aykırı değerlerini tek bir bakışta görmek.
ggplot(data = titanic, mapping = aes(y = age)) +
geom_boxplot() +
# Tek bir değişkenin dağılımına bakarken x eksenine gerek olmadığı için kaldıralım.
theme(axis.text.x = element_blank(),
axis.ticks.x = element_blank()) +
labs(title = "Yolcularin Genel Yas Dagilimi", y = "Yas")
Titanic Yolcularinin Yas Dagilimi (Kutu Grafigi)
Kutu Grafiğini Okuma Sanatı:
Şimdi bu aletin asıl gücünü, grupları karşılaştırmak için kullanalım.
ggplot(data = titanic, mapping = aes(x = class, y = age, fill = class)) +
geom_boxplot() +
theme(legend.position = "none") +
labs(title = "Yolcu Siniflarina Gore Yas Dagilimi", x = "Yolcu Sinifi", y = "Yas") +
coord_flip() # Eksenleri çevirerek okunabilirliği artıralım
Yolcu Siniflarina Gore Yas Dagilimi (Kutu Grafigi)
Grafiğin Yorumu:
Merkezi Eğilim: Birinci sınıf (1st
)
yolcuların medyan yaşının, diğer tüm gruplardan belirgin şekilde daha
yüksek olduğunu görebiliyoruz.
Yayılım: Yaş yayılımının en dar olduğu grup,
yani yaşları birbirine en yakın olanlar, restaurant staff
(restoran personeli) gibi görünüyor. Bu, bu gruptaki kişilerin benzer
bir yaş profilinde olduğunu düşündürür.
En İlginç Hikaye: En ilginç hikaye
üçüncü sınıfta (3rd
) saklı. Bu grubun
medyan yaşı oldukça genç. Fakat grafiğin bütününe baktığımızda,
özellikle yukarıya doğru uzanan çok sayıda aykırı değer (siyah
noktalar) görüyoruz. Bu durum, üçüncü sınıfın aslında çok daha
çeşitli bir yaş yapısına sahip olduğunu ve bu grupta,
“tipik” yaş aralığının dışında, beklenenden daha yaşlı
birçok yolcunun da bulunduğunu kanıtlıyor.
Peki bu aykırı değerler, sadece rastgele uç noktalar mı, yoksa verinin içinde göremediğimiz ikinci bir yoğunlaşma noktasının habercisi mi? İşte kutu grafiği, bize bu sorunun tam cevabını veremez.
Merak etmeyin dostlar, bu gizemi birazdan, atölyemizdeki daha modern bir alet olan Yağmur Bulutu Grafiği (Raincloud Plot) ile aydınlatacağız. O grafik, bu dağılımın gerçek “şeklini” bize çok daha net bir şekilde gösterecek.
geom_violin
(Keman Grafiği): Dağılımın Gerçek
Şeklini GörmekAmaç: Kutu grafiğinin göremediği, verinin yoğunluk “şeklini” ve çok modlu (multimodal) yapısını göstermek.
# İki grafiği yan yana görmek için patchwork paketini kullanalım
library(patchwork)
p_box <- ggplot(titanic, aes(x = class, y = age, fill = class)) +
geom_boxplot() +
coord_flip() + # Eksenleri ters yüz ediyoruz!
theme(legend.position = "none") +
labs(title = "Kutu Grafigi", x = "Yolcu Sinifi") # x eksenine bir isim verelim
p_violin <- ggplot(titanic, aes(x = class, y = age, fill = class)) +
geom_violin() +
coord_flip() + # Eksenleri burada da ters yüz ediyoruz!
theme(legend.position = "none") +
labs(title = "Keman Grafigi", x = "Yolcu Sinifi")
p_box + p_violin
Kutu ve Keman Grafiginin Karsilastirilmasi
Grafikleri Birlikte Okuma Sanatı:
Bu iki grafiğe baktığımızda, her ikisi de bize aynı temel hikayeyi anlatıyor ama farklı detaylar sunuyorlar.
Kutu Grafiğinin Anlattığı: Sol taraftaki Kutu Grafiği, bize her grubun istatistiksel bir özetini sunar. Bir bakışta, 1. sınıf yolcuların medyan yaşının (~38 yaş) diğer tüm gruplardan daha yüksek olduğunu net bir şekilde görebiliriz. 3. sınıf yolcuların ise medyan yaşının (~24 yaş) en düşük olduğunu ve bu grupta çok sayıda aykırı değer (dışarıdaki noktalar) bulunduğunu fark ederiz. Mürettebat grupları ise genellikle 25-40 yaş aralığında yoğunlaşmış. Kutu grafiği, bu tür özetleri ve aykırı değerleri tespit etmek için harikadır.
Keman Grafiğinin Fısıldadığı Sırlar: Sağ taraftaki Keman Grafiği ise, bu özetin ötesine geçerek bize dağılımın “şeklini” gösterir. Kemanın genişliği, o noktadaki veri yoğunluğunu temsil eder.
3. Sınıf: Kutu grafiğinde göremediğimiz bir detayı fark ederiz: 3. sınıftaki yoğunluk, sadece gençlerde değil, aynı zamanda bebek/küçük çocuk yaşlarında da (0-5 yaş) küçük bir “şişkinlik” yapıyor. Bu, bu sınıfta çok sayıda genç ailenin seyahat ettiğinin bir işareti olabilir.
Mürettebat: Örneğin, “engineering crew” (mühendislik) ve “deck crew” (güverte) gruplarının kemanları, verinin tek bir tepe noktasında (unimodal) toplandığını gösterirken, “victualling crew” (tedarik) grubunun kemanı daha yayvan ve neredeyse iki tepe noktalı bir yapıya sahiptir. Bu, bu grupta hem çok genç hem de daha deneyimli çalışanların bir arada olduğunu fısıldar.
Ustanın Kararı: Kutu grafiği, hızlı bir özet ve aykırı değer tespiti için mükemmeldir. Keman grafiği ise, dağılımın şekli ve içindeki gizli kümeler hakkında daha derin bir hikaye anlatır. En güçlü yaklaşım ise, genellikle ikisini bir arada düşünmektir. Tıpkı bizim az sonra tanıyacağımız “Yağmur Bulutu Grafiği”nin yaptığı gibi!
geom_raincloud
(Yağmur Bulutu Grafiği): Gizemi Çözme
Zamanı!Dostlar, hatırlarsanız Kutu Grafiğini incelerken aklımızda bir soru kalmıştı:
“Üçüncü sınıftaki (3rd
) o çok sayıdaki ‘aykırı’
olarak görünen yaşlı yolcular, sadece rastgele uç noktalar mı, yoksa
verinin içinde göremediğimiz ikinci bir yoğunlaşma noktasının habercisi
mi?”
Kutu grafiği bize bu gizemin varlığını fısıldamıştı. Şimdi, atölyemizdeki en modern aletlerden birini kullanarak bu gizemi tamamen aydınlatma ve hikayenin tüm parçalarını bir araya getirme zamanı.
Felsefe: “Neden birini seçmek zorundayız ki? Hepsini bir arada görelim!”
Yağmur bulutu grafiği, son yılların en popüler yaklaşımlarından biridir. Genellikle üç katmanı birleştirir:
geom_density
ile dağılımın
pürüzsüz şekli.geom_jitter
ile her bir veri
noktasının kendisi.geom_boxplot
ile istatistiksel
özet.Bu grafiği oluşturmak için ggdist
paketini kullanacağız
(eğer yüklü değilse install.packages("ggdist")
ile
kurun).
library(ggdist)
ggplot(titanic, aes(x = class, y = age, fill = class)) +
# Dağılımın yarısını (bulut) çizelim
stat_halfeye(
adjust = 0.5,
justification = -0.2,
.width = 0,
point_colour = NA
) +
geom_boxplot(
width = 0.12,
outlier.color = NA, # Aykırı değerleri noktalarla göstereceğimiz için kutudan kaldıralım
alpha = 0.5
) +
# Ham veri noktalarını (yağmur) ekleyelim
stat_dots(
side = "left",
justification = 1.1,
binwidth = 0.25
) +
theme(legend.position = "none") +
labs(
title = "Yolcu Siniflarina Gore Yas Dagilimi (Yagmur Bulutu)",
x = "Yolcu Sinifi",
y = "Yas"
) +
coord_flip()
Yagmur Bulutu Grafigi: En Kapsamli Dagilim Gorseli
Bu grafik, sadece sayılardan ibaret değil; içinde insan hikayeleri barındıran, adeta geminin sosyolojik bir portresidir. Gelin bu hikayeyi birlikte okuyalım.
1. Sınıf (1st Class):
2. Sınıf (2nd Class):
3. Sınıf (3rd Class):
Mühendislik ve Güverte Ekipleri (Engineering & Deck Crew):
Restoran ve Tedarik Personeli (Restaurant Staff & Victualling Crew):
Dostlar, şimdi bu harika yağmur bulutu grafiğine bir dedektif gibi bakalım. Gözümüzü özellikle 3. Sınıf (3rd) yolcuların olduğu sıraya çevirelim.
Grafik bize bu grubun medyan yaşının oldukça genç (~24 yaş) olduğunu ve yoğunluğun (bulutun en şişkin olduğu yer) 20-30 yaş arasında toplandığını net bir şekilde gösteriyor. Ancak, bıyıkların çok ötesinde, sağ tarafa doğru saçılmış bir sürü “yağmur damlası”, yani 60 yaş ve üzeri yolcular görüyoruz.
İşte bir veri kaşifinin sorması gereken o can alıcı soru:
“Bu aykırı görünen yaşlı yolcular, sadece istisnai durumlar mı, yoksa grafiğin bize tam olarak gösteremediği, 3. sınıfta aslında ikinci bir ‘yaşlı yolcu’ kümesi olduğunun habercisi mi?”
Cevabı Grafikte Arıyoruz:
Bu sorunun cevabını bulmak için yağmur bulutunun üç katmanını da birlikte okumalıyız:
Yağmur Damlaları (Noktalar): Evet, 60 yaş üstünde epey bir nokta var. Bu, bu yaş grubunda yolcuların var olduğunu teyit ediyor.
Kutu Özeti (Box Plot): Bu noktaların tamamı, kutu grafiğinin bıyığının dışında kaldığı için istatistiksel olarak “aykırı değer” olarak sınıflandırılmış.
Bulut (Yoğunluk Eğrisi): İşte en önemli ipucu burada! Eğer bu yaşlı yolcular ikinci bir yoğun küme oluştursaydı, yoğunluk eğrisinin (yeşil bulutun) 60 yaş civarında tekrar şişkinleşmesi, ikinci bir tepe yapması gerekirdi. Ancak grafiğe baktığımızda, bulutun 40 yaşından sonra hızla inceldiğini ve sağa doğru sadece ince bir “kuyruk” olarak uzandığını görüyoruz.
Ustanın Yorumu:
Bu üç ipucunu birleştirdiğimizde şu sonuca varabiliriz: Grafik, 3. sınıftaki yaşlı yolcuların, ikincil bir yoğunlaşma noktasından ziyade, ana genç nüfus grubunun dışında kalan istisnai ve rastgele uç noktalar olduğunu kuvvetle düşündürüyor. Yani, 3. sınıftaki yolcuların ezici çoğunluğu gençti ve aralarında az sayıda, istatistiksel olarak aykırı kabul edilen yaşlı birey bulunuyordu.
İşte dostlar, bir yağmur bulutu grafiği bize sadece özetleri değil, aynı zamanda bu tür derin ve nüanslı hikayeleri okuma ve yorumlama gücü de verir.
Şimdiye kadar, bir veya daha fazla grubun dağılımının “anlık fotoğrafını” çektik. Peki ya bir dağılımın, zaman veya başka bir sıralı kategori boyunca nasıl değiştiğini, evrildiğini göstermek isteseydik?
Onlarca yoğunluk grafiğini üst üste bindirmek yerine,
ggridges
paketi bize Ridgeline Grafiği
adında harika bir çözüm sunar. Bu grafik, birden fazla yoğunluk
grafiğini, hafifçe üst üste gelecek şekilde, bir “sıra dağlar” gibi
dizer ve karşılaştırmayı inanılmaz derecede kolay ve estetik hale
getirir.
Amaç: Yıllara göre Amerika’daki yeni doğan bebeklere verilen isimlerin popülerliğinin dağılımını incelemek.
Bunun için babynames
paketini kullanacağız (eğer yüklü
değilse install.packages("babynames")
ile kurun). Bu veri
seti, 1880’den günümüze ABD’deki bebek isimlerinin yıllık popülerliğini
içerir.
library(ggridges)
library(babynames)
# Sadece 'Mary' isminin verisini alalım ve 10 yıllık periyotlar oluşturalım
mary_data <- babynames %>%
filter(name == "Mary", sex == "F") %>%
mutate(decade = floor(year / 10) * 10)
ggplot(mary_data, aes(x = prop * 100, y = factor(decade, levels = sort(unique(decade),
decreasing = TRUE)), fill = factor(decade))) +
geom_density_ridges() +
theme_minimal() +
theme(legend.position = "none") +
labs(
title = "'Mary' Isminin Populerliginin Zaman Icindeki Degisimi",
x = "Tum Kadin Isimleri Icindeki Orani (%)",
y = "On Yillik Periyotlar"
)
Yillara Göre ‘Mary’ Isminin Populerlik Dagilim
Grafiğin Yorumu: Bir İsmin Kültürel Yolculuğu
Bu harika “sıra dağlar” grafiği, bize sadece rakamları değil, aynı zamanda “Mary” isminin Amerikan kültüründeki yaklaşık 130 yıllık inanılmaz yolculuğunu, zirveye çıkışını ve gözden düşüşünü adeta bir film şeridi gibi anlatıyor.
Zirve Dönemi (1880 - 1920’ler): Grafiğin en tepesindeki “dağlara” baktığımızda, 19. yüzyılın sonu ve 20. yüzyılın başında “Mary” isminin ne kadar baskın olduğunu görüyoruz. O dönemde doğan her 100 kız çocuğundan 5 ila 6’sına bu ismin verilmesi, onu tartışmasız bir şekilde zamanının en popüler ismi yapıyor. Dağılımın sağa ne kadar yığıldığı, ismin ne kadar yaygın olduğunu gösteriyor.
Popülerliğin Zirvesi ve Plato (1920 - 1960’lar): 1920’lerden itibaren zirveden hafif bir düşüş başlasa da, “Mary” ismi popülerliğini on yıllar boyunca korumaya devam ediyor. Dağılımın şekli (yoğunluk eğrisi) bize, ismin hala çok yaygın olduğunu ama artık tek başına “zirvede” olmadığını, yavaş yavaş başka isimlerin de popülerleşmeye başladığını fısıldıyor.
Büyük Kırılma (1960’lar ve Sonrası): Grafikteki en dramatik değişim 1960’lardan sonra başlıyor. “Dağlar” hızla sola doğru kayıyor ve küçülüyor. Bu, “Mary” isminin popülerliğinde yaşanan keskin düşüşün görsel bir kanıtıdır. 1970’ler, 80’ler ve 90’larda bu düşüş devam ediyor.
Günümüz (2000’ler): Grafiğin en altına geldiğimizde, “Mary” isminin dağılımının artık sıfıra ne kadar yaklaştığını görüyoruz. Bir zamanların en popüler ismi, artık çok daha nadir tercih edilen, niş bir isim haline gelmiş durumda.
Sonuç: Bu ridgeline grafiği, bize sadece bir ismin popülerlik oranını göstermekle kalmıyor. Aynı zamanda, kültürel trendlerin, toplumsal tercihlerin ve hatta jenerasyonlar arası zevk farklılıklarının zaman içinde nasıl değişebileceğinin de güçlü bir görsel özetini sunuyor. Bu, tek bir ismin biyografisi, bir dönemin kültürel parmak izidir.
Bu bölümdeki konuların felsefesi ve anlatım yapısı oluşturulurken aşağıdaki değerli eserden ilham alınmıştır.
Wilke, C. O. (2019). Fundamentals of Data Visualization. O’Reilly Media. https://clauswilke.com/dataviz/
Dostlar, tebrikler! Bu bölümde, bir veri bilimcinin en önemli görevlerinden birini, yani verinin “karakter haritasını” çıkarmayı başardık. Artık bir veri setine baktığınızda, onun sadece rakamlardan ibaret olmadığını, içinde zengin bir hikaye barındıran canlı bir yapı olduğunu biliyorsunuz.
Bu yolculukta atölyemizdeki en hassas ölçüm cihazlarını kullandık:
geom_histogram
ve
geom_density
ile bir değişkenin genel
“kişiliğini”, nerede yoğunlaşıp nerede seyrekleştiğini gördük.
geom_boxplot
ve
geom_violin
ile farklı grupların
dağılımlarını birbiriyle kıyaslayarak, gizli kalmış farklılıkları ve çok
modlu yapıları ortaya çıkardık.
Raincloud
grafikleriyle, bir
dağılımın en dürüst ve en eksiksiz resmini tek bir tuvalde nasıl
çizeceğimizi öğrendik.
Ve son olarak, Ridgeline
grafikleriyle, bir dağılımın sadece anlık bir fotoğrafını değil,
zaman içindeki evrimini, yani hareketli filmini
izledik.
Artık elinizdeki verinin sadece özetini değil, aynı zamanda şeklini, ruhunu ve hatta zaman içindeki yolculuğunu bile bir tuvale dökebilirsiniz. Bu, sizi veriyi sadece “analiz eden” birinden, onu “anlayan” ve “anlatan” birine dönüştüren kritik bir adımdır.
Şimdiye kadar harika heykeller yonttuk, verinin en güzel formunu ortaya çıkardık. Ama bir sanat eseri, doğru ışık altında, doğru bir kaide üzerinde ve doğru bir etiketle sergilendiğinde gerçek değerini bulur.
İşte bir sonraki bölümde tam olarak bunu yapacağız. Bu anlattığımız
hikayeleri daha da güzelleştirip, onları sunuma hazır, profesyonel birer
sanat eserine dönüştüreceğiz. Grafiklere başlıklar ekleme
(labs
), renk paletlerini yönetme (scale_...
)
ve temalarla (theme
) grafiğin her bir detayına
hükmetme gibi “cila” ve “vernik” tekniklerini keşfedeceğiz.
Atölyenin en keyifli ve en yaratıcı kısmı şimdi başlıyor! Lütfen takipte kalın dostlar.