Şu açıdan bakalım: Elimizde bir veri seti var ve bu veri setine baktığımızda hem sağa çarpık hem de mesokurtik bir dağılım görebiliyoruz. "Ee bu nasıl olur? Hem sağa çarpık hem de mesokurtik ne demek?"
Temelde iki ayrı kavramdan bahsediyoruz:
Çarpıklık: Dağılımın simetrisini ya da asimetrisini ifade eder. Sağa çarpık dağılımlarda uzun kuyruk sağ tarafa doğru uzar. Sanki hafif eğimli bir dağ yamacı düşün. Zirve sol tarafta, dağın uzayan eteği sağ tarafta. Bu durumda ortalama, medyandan büyüktür.
Örnek: Gelir dağılımlarına baktığında genelde sağa çarpıklık görürsün, çünkü çoğu insan benzer seviyede kazanırken, az sayıda kişi çok yüksek gelir düzeyine sahiptir ve bu da dağılımın sağ kuyruk bölgesini "uzatır".
Basıklık (Kurtosis): Dağılımın tepe ve kuyruk kalınlığını anlatır. Mesokurtik, normal dağılımla aşağı yukarı aynı kuyruk "kalınlığı"na, aynı tepe "dikliği"ne sahiptir. Normal dağılımı kıyas noktası olarak düşün. Eğer mesokurtik diyorsak, demek oluyor ki ne çok basık (platykurtik), ne de çok sivri (leptokurtik). Tam ortada, normalin tadında.
Şimdi bu ikisinin bağımsız olduğunu unutmayalım. Yani bir dağılımın çarpıklığı, onun mutlaka basık ya da sivri olmasıyla alakalı değil. Tıpkı bir yemek yaparken baharatın acılığının (çarpıklık) yemeğin kıvamının (kurtosis) bağımsız olması gibi. Yemek acı olabilir ama ne çok sulu ne de çok katı olabilir. Bizim için çarpıklık dağılımın sağa ya da sola kaydığı, kurtosis ise o dağılımın kuyruklarının normalle kıyaslandığında ne kadar "ağır" veya "hafif" olduğu ile ilgili.
Diyelim ki log-normal dağılım gibi bir dağılım kullandık. Log-normal dağılım genelde sağa çarpıktır. Fakat parametrelerini öyle ayarlamalısın ki, bu dağılımın kurtosis değeri, neredeyse normal dağılımla birebir örtüşsün. Böylece ortaya sağa çarpık fakat mesokurtik bir dağılım çıkar. Örneğin, bir e-ticaret sitesindeki alışveriş sepeti değerlerini düşün. Çoğu insan benzer miktarda harcama yaparken, çok az sayıda kişi binlerce dolarlık alışveriş yapabiliyor. Bu yüzden dağılım sağa çarpık. Ama sitenin genel müşteri kitlesinin alım gücü, fiyat segmentleri, ürün çeşitliliği vb. öyle bir denge kurar ki dağılımın tepesi ve kuyruk kalınlığı normal dağılım seviyelerinde olabilir.
Ben bunu sana bir garson, bir mutfak ve bir yemek üzerinden de anlatayım. Garson çarpıklığı temsil ediyor. Garson dağıtımı yaparken tabakların çoğunu masanın soluna koyuyor, ama bir iki tabak çok lüks, pahalı yemek sağ tarafa konuyor. Yani tabak dağılımın şekli sağa doğru uzuyor (sağa çarpıklık). Ama masadaki tabakların çeşitliliği, her tabaktaki yemeklerin sos miktarı (kurtosis) normal bir sofradaki gibi. Ne aşırı baharatlı (leptokurtik), ne de tatsız tuzsuz (platykurtik). Yani sofradaki genel "lezzet dengesi" normal bir akşam yemeğine benziyor.
Bu kombinasyon istatistiksel olarak iki ayrı eksende konumlanan ölçütlerin (çarpıklık ve basıklık) birbirinden bağımsız olmasından kaynaklanıyor. Çarpıklık yatay asimetriyi anlatırken, basıklık dikey "tepelilik" veya "kuyruk kalınlığı"nı anlatır. Dolayısıyla bir dağılım sağa doğru uzun bir kuyrukla asimetrik olabilir, ama yine de kuyruklarının "ağırlık" açısından normal bir dağılımla benzer özelliklere sahip olabilir.
Peki nbe yaparız, nasıl test ederiz?
Önce veriye bir çarpıklık ölçümü (skewness) uygularız. Örneğin `scipy.stats.skew` fonksiyonuyla Python'da çarpıklığa bakabiliriz.
Sonra kurtosis ölçümünü yaparız (örneğin `scipy.stats.kurtosis` ile).
Verinin sağa çarpık (skewness > 0) ve kurtosisinin de normal dağılıma yakın (yaklaşık 3.0 – Pearson tanımı, ya da 0 sıfır merkezli Fisher tanımı kullanılıyorsa buna dikkat etmek lazım) olduğunu görürsek "hah, işte sağa çarpık ama mesokurtik" deriz.
Her ikisi de dağılımın farklı boyutlarına bakan bağımsız ölçütler olduğundan, 3x3 kombinasyonlu o matristen istediğin kareyi elde etmek pekâlâ mümkün.
Umarım bu açıklama kafandaki soru işaretlerini giderir. Eğer hâlâ merak ettiğin bir nokta varsa, veriyi birlikte inceler, histogramlar, Q-Q plot'lar, kernel density estimate grafikleri çıkarır, duruma bir bakarız tabii bunun için önce müsait bir vaktimin olması lazım 😅.
Ayrıca şu attığın linki de yorumlayayım:
Yazıda bahsettiğin 9 örnek (3 çarpıklık türü x 3 basıklık türü) teorik olarak tüm kombinasyonların varlığını ortaya koyuyor. Yani istatistiksel ölçütler olan çarpıklık ve basıklık birbirinden bağımsız olduğu için, teorik olarak sağa çarpık ve mesokurtik bir dağılımın var olması da mümkün.
Fakat burada dikkat edilmesi gereken bazı önemli noktalar var:
Teorik olarak tüm kombinasyonlar mümkün gibi görünür. Ancak pratikte, kolayca üretebileceğin veya tanıdık bir dağılımdan türetebileceğin bazı dağılımlar bu kombinasyonları elde etmeyi zorlaştırabilir. Dolayısıyla bir dağılım ailesi (örneğin gamma dağılımı, log-normal, beta, Pearson ailesi vb.) seçtiğinde, bu dağılımın parametreleriyle istediğin çarpıklık ve basıklık değerlerine ulaşmak her zaman kolay veya mümkün olmayabilir.
Pandas `DataFrame.kurt()` fonksiyonu varsayılan olarak Fisher tanımını kullanır. Normal dağılımın Fisher tanımına göre aşırı basıklığı (excess kurtosis) 0'dır. Pearson tanımına göre normal dağılımın kurtosis değeri 3’tür. Bu fark bazen karışıklığa sebep olur.
Fisher tanımı: Normal dağılımın kurtosis = 0
Pearson tanımı: Normal dağılımın kurtosis = 3
Senin kodunda kullandığın `df['value'].kurt()` Fisher tanımıyla sonuç verir, yani normal dağılıma yakın bir basıklık için bu değerin 0'a yakın olması gerekir. Eğer elde ettiğin değer 0'dan çok uzaksa, bu dağılım "mesokurtik" sayılmaz.
Gamma dağılımı her zaman pozitif çarpık bir dağılımdır (yani sağa çarpıktır). Ancak gamma dağılımının basıklık özellikleri özellikle küçük shape parametrelerinde leptokurtik (pozitif excess kurtosis) olma eğilimindedir. `shape=2` gibi bir parametre seçtiğinde teorik olarak gamma dağılımının aşırı basıklığı (excess kurtosis) 3 civarındadır (Fisher tanımında 3 yani), ki bu mesokurtik olmaktan uzaktır. E bu nedenle da örneğin bir gamma dağılımı seçip, parametreleri “rasttgele” koyarak hemen mesokurtik ve sağa çarpık bir dağılım elde edememen çok normal.
"Olmaz" denilen kombinasyonlar belki seçtiğin spesifik dağılım ailesi ile üretilemeyebilir. Bu da söz konusu kombinasyonun teorik olarak imkansız olduğu anlamına gelmez. Pearson dağılım ailesi, Johnson dağılımları ya da mixture dağılımlar kullanarak istenen çarpıklık ve basıklık değerlerine daha hassas şekilde yaklaşmak pek tabii mümkündür.
Ayrıca log-normal dağılımın belirli parametrelerle sağa çarpık, ancak normal’e çok yakın bir kurtosis değerine yaklaşacak hale getirilebilmesi de teorik olarak mümkün. Fakat tabii bu parametre "ince ayar" gerektirir. Gerçek veri setlerinde de bazen nadir durumlarda böyle şekillerle karşılaşılabilir.
AI araçlarına veya herhangi bir scripte "Hadi bana şu an sağa çarpık ve mesokurtik veri seti üret" dediğinde, araçlar genelde bilinen dağılımlardan örnekler çekmeye çalışır. Eğer parametreleri otomatik seçiyorlarsa, tam aradığın kombinasyonu tutturamayabilirler ki genelde tutturamazlar. Yine pek tabii bu o kombinasyonun imkansız olduğu anlamına gelmez, sadece o dağılım ailesi ve parametre kombinasyonlarıyla ilgili bir optimizasyon sorunu ortaya çıkar.