Ana içeriğe geç

Orta12 dk

Pareto

Önkoşul:Log-normal

Kanca

10.000 oyunculu bir mobil oyunda uygulama içi harcamaları simüle ettik: en yüksek harcayan tek bir oyuncu 6185.98 TL harcamış, ama medyan sadece 7.92 TL. En çok harcayan %20’lik dilim, toplam gelirin %59.2’sini oluşturuyor. Bu “80/20 kuralı” dediğimiz şeyin ta kendisi — ama neden bu kadar sık, bu kadar farklı alanda karşımıza çıkıyor?

Sezgi

Log-normal’de gördüğümüz çarpıklık zaten “ortalama medyandan büyük” seviyesindeydi. Pareto bunu bir adım öteye taşır: kuyruk o kadar ağırdır ki, en uçtaki birkaç değer toplamın büyük bir kısmını oluşturabilir. Bir oyunda oyuncuların çoğu hiç veya az harcar, ama “balina” denen birkaç oyuncu devasa harcamalar yapar — ve bu birkaç kişi toplam gelirin yarısından fazlasını oluşturabilir.

Pareto dağılımı, bir alt sınırın (xm) üzerinde, büyük değerlerin küçük değerlere göre “yavaş sönen” bir olasılıkla devam ettiği durumları modeller. Bu yavaş sönme, Normal veya Log-normal’in kuyruğundan çok daha ağırdır.

102030405060708000.050.100.150.20değeryoğunluk / olasılık
  • PDF — olasılık yoğunluğu
  • CDF — birikimli olasılık

Eşiğin (80) üzerinde kalma olasılığı: %1.6

α (şekil parametresi) küçüldükçe kuyruk daha da ağırlaşıyor — çok büyük değerlerin olasılığı Normal’de olduğu gibi hızla sıfıra inmiyor.

Mekanizma

Oyuncu harcamalarını simüle edelim: alt sınır xm=5 TL, kuyruk ağırlığı α=1.5.

10.000 oyuncu harcaması

# Bir mobil oyunda 10.000 oyuncunun uygulama içi harcamasını (TL) simüle edelim.
# En az xm=5 TL harcayan biri "harcama yapan" sayılıyor; çoğu az harcar, azı çok harcar.
xm, alpha = 5, 1.5  # xm: alt sınır, alpha: kuyruğun ağırlığı (küçük alpha = daha ağır kuyruk)
u = rng.random(10_000)
harcamalar = xm / (1 - u) ** (1 / alpha)  # ters CDF örneklemesi

print(f"Ortalama harcama: {harcamalar.mean():.2f} TL")
print(f"Medyan harcama:   {np.median(harcamalar):.2f} TL")
print(f"En yüksek harcama: {harcamalar.max():.2f} TL")
print(f"En düşük harcama:  {harcamalar.min():.2f} TL")
Ortalama harcama: 15.18 TL
Medyan harcama:   7.92 TL
En yüksek harcama: 6185.98 TL
En düşük harcama:  5.00 TL

Ortalama (15.18 TL), medyanın (7.92 TL) neredeyse iki katı — ve en yüksek harcama (6185.98 TL), medyanın 780 katı. Şimdi ünlü 80/20 kuralını doğrudan test edelim:

Gelir yoğunlaşması

# Ünlü "80/20 kuralı": en çok harcayan oyuncuların küçük bir kısmı, toplam gelirin
# büyük kısmını oluşturur mu?
siralanmis = np.sort(harcamalar)[::-1]  # büyükten küçüğe
toplam = siralanmis.sum()

for yuzde in [1, 5, 10, 20]:
    n_ust = int(len(siralanmis) * yuzde / 100)
    pay = siralanmis[:n_ust].sum() / toplam
    print(f"En yüksek harcayan %{yuzde:>2}, toplam gelirin %{pay * 100:.1f}'ini oluşturuyor")
En yüksek harcayan % 1, toplam gelirin %22.6'ini oluşturuyor
En yüksek harcayan % 5, toplam gelirin %38.1'ini oluşturuyor
En yüksek harcayan %10, toplam gelirin %47.5'ini oluşturuyor
En yüksek harcayan %20, toplam gelirin %59.2'ini oluşturuyor

En yüksek harcayan %20, toplam gelirin %59.2’sini oluşturuyor — klasik “80/20”den biraz farklı ama aynı mantık: küçük bir azınlık, büyük bir çoğunluğu oluşturuyor. α’yı küçültürsen (kuyruk ağırlaşırsa) bu yoğunlaşma daha da keskinleşir.

Çoğu kişi “80/20 kuralı her zaman tam %80-%20 çıkar” sanır. Değil, çünkü bu sadece Pareto ailesindeki belirli bir α değeri için yaklaşık doğru bir gözlemdir — gerçek oran, verinin α parametresine göre değişir; önemli olan oran değil, yoğunlaşmanın var olması.

Matematik

Pareto dağılımının formülü
f(x)=αxmαxα+1,xxmf(x) = \frac{\alpha \, x_m^\alpha}{x^{\alpha+1}}, \quad x \ge x_mP(X>x)=(xmx)αP(X > x) = \left(\frac{x_m}{x}\right)^{\alpha}
SembolAnlamı
xmx_mAlt sınır — dağılımın altında hiç değer olmayan eşik (min. harcama 5 TL)
α\alphaŞekil parametresi — küçüldükçe kuyruk ağırlaşır, büyüdükçe kuyruk incelir
P(X>x)P(X>x)Hayatta kalma fonksiyonu — bu eşitliğin kapalı ve basit bir formda olması Pareto’yu ayırt eder

Pareto’nun imzası, log-log eksende (hem x hem y ekseni logaritmik) çizildiğinde düz bir çizgi olarak görünmesidir — çünkü P(X>x)=(xm/x)αP(X>x) = (x_m/x)^\alpha‘nın logaritması, logx\log x‘in doğrusal bir fonksiyonudur. Gerçek dünya verisinde bu düz çizgiyi görürsen, güç yasası (Pareto benzeri) bir süreçle karşı karşıyasın demektir.

Kod

Eşik olasılıkları

dagilim = stats.pareto(b=alpha, scale=xm)

p_50den_fazla = 1 - dagilim.cdf(50)
p_10dan_fazla = 1 - dagilim.cdf(10)

print(f"\nP(harcama > 10 TL) = {p_10dan_fazla:.4f}")
print(f"P(harcama > 50 TL) = {p_50den_fazla:.4f}")

P(harcama > 10 TL) = 0.3536
P(harcama > 50 TL) = 0.0316

P(harcama > 10 TL) = %35.36, P(harcama > 50 TL) hâlâ %3.16 — Normal veya Log-normal’de bu kadar uzak bir değerin olasılığı çok daha hızlı sıfıra iner. Pareto’nun “kalın kuyruğu” tam olarak bunu ifade ediyor.

Solda farklı alpha değerleri için Pareto PDF eğrileri, küçük alpha daha ağır kuyruk gösteriyor; sağda harcama verisinin log-log grafiği yaklaşık düz bir çizgi oluşturuyor.
Log-log eksende düz çizgi, güç yasasının (Pareto'nun) parmak izidir.

Nerede işe yarar

Pareto, “az sayıda büyük, çok sayıda küçük” yapısının olduğu her yerde karşına çıkar:

  • Ürün ve gelir analitiği. Kullanıcı başına gelir (ARPU), “balina” oyuncular, en çok satan ürünlerin toplam satıştaki payı.
  • Şehir ve ağ bilimi. Şehir nüfusları, web sitesi trafiği, sosyal ağlarda takipçi sayıları.
  • Dil ve bilgi. Bir metindeki kelime frekansları (Zipf yasası, Pareto’nun yakın akrabası).

Bu 3 hatayı yaparsın:

  1. Ağır kuyruklu veride ortalamayı “tipik değer” olarak kullanmak — birkaç uç değer ortalamayı anlamsız hâle getirebilir; medyan veya yüzdelik dilimler çok daha güvenilir.
  2. Küçük bir örneklemden α’yı tahmin edip genellemek — kuyruk davranışı az sayıda uç gözlemle belirlendiği için tahmin çok değişken olabilir.
  3. Her çarpık dağılımı Pareto sanmak — Log-normal de sağa çarpıktır ama kuyruğu Pareto kadar ağır değildir; log-log grafikte düz çizgi testiyle ayırt edilir.

Kendini test et

1. Pareto dağılımının Log-normal'den en belirgin farkı nedir?
  1. Pareto her zaman simetriktir
  2. Pareto'nun kuyruğu çok daha ağırdır — uç değerlerin olasılığı daha yavaş söner (doğru cevap)
  3. Log-normal sadece kesikli veride kullanılır
  4. İkisi arasında pratikte fark yoktur

Neden: Her ikisi de sağa çarpık olsa da Pareto'nun kuyruğu güç yasasıyla söner (çok daha yavaş), Log-normal'in kuyruğu üstel olarak sönmeye devam eder — bu yüzden Pareto'da aşırı uç değerler çok daha olasıdır.

2. Bir veri kümesini log-log eksende çizince yaklaşık düz bir çizgi elde ediyorsan bu ne anlama gelir?
  1. Veri Normal dağılıyor
  2. Veri bir güç yasasına (Pareto benzeri) uyuyor olabilir (doğru cevap)
  3. Veri hatalı toplanmış
  4. Hiçbir anlamı yoktur

Neden: Pareto'nun hayatta kalma fonksiyonu log-log eksende doğrusaldır; gerçek veride bu düzlük görülürse güç yasası davranışının bir işaretidir.

3. "En yüksek harcayan %20, gelirin %59'unu oluşturuyor" bulgusu neyi gösterir?
  1. Verinin hatalı olduğunu
  2. Gelirin küçük bir azınlıkta yoğunlaştığını — Pareto tipi bir dağılımın tipik sonucu (doğru cevap)
  3. Herkesin eşit harcadığını
  4. Ortalamanın medyana eşit olduğunu

Neden: Bu tam olarak Pareto dağılımının beklenen sonucudur: ağır kuyruk, gelirin/değerin küçük bir üst dilimde yoğunlaşmasına yol açar.

Özet

Özet

  • Pareto, bir alt sınırın (xm) üzerinde ağır kuyruklu değerleri modeller — büyük değerlerin olasılığı yavaş söner.
  • α (şekil parametresi) küçüldükçe kuyruk ağırlaşır, uç değerler daha olası hâle gelir.
  • "80/20 kuralı", Pareto tipi dağılımların gelir/değer yoğunlaşmasının popüler bir yansımasıdır — kesin oran α'ya bağlıdır.
  • Log-log eksende düz çizgi, güç yasası (Pareto benzeri) davranışın karakteristik imzasıdır.
  • Ağır kuyruklu veride ortalama yanıltıcıdır — medyan ve yüzdelik dilimler tercih edilmelidir.
Sonraki adım: Merkezi limit teoremi →