---
title: 'Dağılım Karşılaştırması'
source: 'https://academia.sh/tr/kurslar/kesifsel-analiz/dagilim-karsilastirmasi'
course: 'İstatistiksel Analiz ve Keşifsel Veri Analizi'
language: tr
updated: '2026-08-17T18:08:47+00:00'
license: 'CC BY-SA 4.0'
---

# Dağılım Karşılaştırması

Kuzey bölgesinin 921 okuması beş sayıya iniyor ve aynı beş sayıyı veren ikinci bir küme kuruluyor: iki kutu özeti de 0,00 | 15,74 | 19,66 | 24,63 | 45,47, çeyrekler açıklığı 8,89 m³ ve çitler 2,405 ile 37,965 m³. Aralık sayımları ikisini ayırıyor — kuzeyde tek tepe 16–20 m³ aralığında, ikizde iki tepe 12–16 ve 24–28 m³ aralıklarında ve ortanca çukurda kalıyor. Aynı ortancanın çentik aralığı geri koyarak örneklemeyle 0,920 m³ ve 3,146 m³ çıkıyor, çit dışında kalan gözlem sayısı 50 ile 35 arasında değişiyor.

Önceki ders tek bir sayı seçti ve payını yazdı. Rapordaki soruların çoğu ise tek sayı değil,
karşılaştırma ister: iki bölgenin tüketim dağılımı birbirinden farklı mı. Bu karşılaştırma
alışkanlıkla beş sayı üzerinden yapılır — en küçük, birinci çeyrek, ortanca, üçüncü çeyrek, en
büyük — ve beş sayı bir kutu özeti olarak yan yana konur.

Bu derste kutu özeti ve **yoğunluk gösterimi** çizilmez; ikisi de veri yapısı olarak kurulur ve
sayı olarak basılır. Çizim, eksen ve tasarım kararları M26/K06'nın işidir. Buradaki soru daha
öncedir: beş sayı bir dağılımı belirler mi. Ölçü, beş sayısı birbirinin aynısı olan iki kümenin
aralık sayımlarında kaç tepe verdiğidir.

- **UI6. Kutu özeti beş sayı ve iki çittir.** Çeyrekler açıklığı üçüncü çeyrek ile birinci çeyreğin
  farkıdır; çitler bu açıklığın 1,5 katı kadar dışarıda durur. M26/K03'te bu beş sayı bir
  **eleme** kararıydı; burada eleme yoktur, sayılar dağılımın biçimini anlatmak için kullanılır.
- **UI7. Beş sayı bir dağılımı belirlemez.** Aynı beş sayıyı veren birden çok küme vardır ve
  aralarındaki fark kutu özetine hiç yansımaz.
- **UI8. Aralık sayımı yoğunluğun sayısal karşılığıdır.** Değer ekseni eşit genişlikte
  **aralık**lara bölünür ve her aralığa düşen gözlem sayılır; tepe sayısı bu sayımlardan okunur.
- **UI9. Çentik aralığı ortancanın payıdır** ve geri koyarak örneklemeyle üretilir: 1.000 çekilişte
  ortanca yeniden hesaplanır, çıkan değerlerin orta yüzde 95'i çentiktir.
- **UI10.** Çentiğin genişliği gözlem sayısına **ve** ortanca çevresindeki yoğunluğa bağlıdır. Aynı
  ortanca, ortanca çevresi seyrek olan bir kümede çok daha geniş bir çentik verir.
- **UI11.** İki çentiğin kesişip kesişmemesi bir gösterim ipucudur, sınama değildir; aralıkların
  kesişmesinin ne anlama geldiği sonraki dersin konusudur.

## Kutu Özeti Bir Veri Yapısıdır

```python
# kume.py — MODELDIR: K03-K04'un kurgu olcum agi ayni tohumla yeniden uretilir.
# 3.199 satirlik uzun bicimli okuma tablosu, 1.329 abone, uc donem, bes bolge.
import math

TOHUM, HAM, M32 = 20260218, 1400, 0xFFFFFFFF
DONEM = ["2026-01", "2026-02", "2026-03"]
BOLGE = [("kuzey", 0.28, 21), ("guney", 0.22, 17), ("dogu", 0.18, 26),
         ("bati", 0.14, 14), ("merkez", 0.18, 23)]


def uretec(t):
    x = ((t ^ (t >> 16)) * 2246822507) & M32
    x = ((x ^ (x >> 13)) * 3266489909) & M32
    s = [(x ^ (x >> 16)) & M32]

    def sonraki():
        s[0] = (s[0] * 1664525 + 1013904223) & M32
        return s[0] / 4294967296
    return sonraki


def ayrik(u, w):
    t = 0.0
    for i, x in enumerate(w):
        t += x
        if u < t:
            return i
    return len(w) - 1


_k, _e = [], []
for i in range(HAM):
    r = uretec(TOHUM + i)
    b = BOLGE[ayrik(r(), [x[1] for x in BOLGE])]
    ayrik(r(), [0.06, 0.24, 0.30, 0.24, 0.11, 0.05])
    ayrik(r(), [0.08, 0.14, 0.27, 0.34, 0.17])
    (_e if r() < 0.046 else _k).append(
        {"abone_no": 10001 + i, "bolge": b[0], "taban": b[2]})
GECERLI = {a["abone_no"] for a in _k}

OKUMA = []
for a in _k + _e:
    r = uretec(TOHUM + 7000 + a["abone_no"])
    for d in range(ayrik(r(), [0.05, 0.12, 0.21, 0.62])):
        t = 0.0 if r() < 0.038 else math.floor(
            a["taban"] * math.exp((r() + r() + r() - 1.5) * 0.62)
            * (1 - d * 0.05) * 100 + 0.5) / 100
        if a["abone_no"] not in GECERLI:
            r()
            continue
        OKUMA.append({"abone_no": a["abone_no"], "bolge": a["bolge"],
                      "donem": DONEM[d], "tuketim_m3": t})
        r()


def yuzdelik2(v, p):
    s = sorted(v)
    i = p * (len(s) - 1)
    a = int(i)
    b = min(a + 1, len(s) - 1)
    return s[a] + (s[b] - s[a]) * (i - a)


def bes_sayi(v):
    return [min(v), yuzdelik2(v, 0.25), yuzdelik2(v, 0.50),
            yuzdelik2(v, 0.75), max(v)]


def kutu(v):
    b = bes_sayi(v)
    ac = b[3] - b[1]
    return b, ac, b[1] - 1.5 * ac, b[3] + 1.5 * ac


kuzey = sorted(o["tuketim_m3"] for o in OKUMA if o["bolge"] == "kuzey")
b, ac, ac_alt, ac_ust = kutu(kuzey)
print(f"kuzey: {len(kuzey)} okuma")
print("bes sayi ozeti: " + " | ".join(f"{x:.2f}" for x in b))
print(f"ceyrekler acikligi {ac:.2f} m3, citler {ac_alt:.3f} ve {ac_ust:.3f} m3")
print(f"cit disinda {sum(1 for x in kuzey if x < ac_alt or x > ac_ust)} okuma var")
```

```
kuzey: 921 okuma
bes sayi ozeti: 0.00 | 15.74 | 19.66 | 24.63 | 45.47
ceyrekler acikligi 8.89 m3, citler 2.405 ve 37.965 m3
cit disinda 50 okuma var
```

Kutu özeti burada bir çizim değil, yedi sayıdan oluşan bir kayıttır: beş sayı, çeyrekler açıklığı
ve iki çit. Kuzey bölgesinin 921 okuması bu yediye indi. Ortanca 19,66 m³, çeyrekler açıklığı
8,89 m³, çitler 2,405 ile 37,965 m³ arasındadır ve bu sınırların dışında 50 okuma kalır.

Kümenin en küçük değerinin sıfır olması, alt çitin altında kalan okumaların çoğunun sıfır
okumalar olduğunu düşündürür. M26/K03 bu okumaları bir temizleme kararı olarak ele almıştı; burada
hiçbiri elenmez, yalnız kaç tanesinin çit dışında kaldığı sayılır. Çit bir eleme eşiği değil, bir
biçim ölçüsüdür.

Yedi sayı raporda az yer kaplar ve karşılaştırmayı hızlandırır. Bedeli ise bir sonraki bölümde
ölçülür: bu yedi sayı, 921 okumanın nasıl dizildiği hakkında sanıldığından çok daha azını söyler.

## Aynı Beş Sayı, Başka Bir Küme

```python
# ikiz.py — KURGU: kuzeyin sirali degerleri her ceyrek diliminin icinde dilim
# ucuna dogru itilir. Sirali dizide 0., 230., 460., 690. ve 920. degerler yerinde
# kaldigi icin bes sayi ozeti birebir korunur, ic dagilim degisir.
def itele(dilim, uc, p=4):
    a, z = dilim[0], dilim[-1]
    u = [(x - a) / (z - a) for x in dilim]
    return [z - (z - a) * (1 - t) ** p if uc == "ust" else a + (z - a) * t ** p
            for t in u]


C = [0, 230, 460, 690, len(kuzey) - 1]
ikiz = (itele(kuzey[C[0]:C[1] + 1], "ust")[:-1]
        + itele(kuzey[C[1]:C[2] + 1], "alt")[:-1]
        + itele(kuzey[C[2]:C[3] + 1], "ust")[:-1]
        + itele(kuzey[C[3]:], "alt"))
b2, ac2, alt2, ust2 = kutu(ikiz)
print(f"ikiz kume: {len(ikiz)} deger (kurgu, kuzeyin sirali degerlerinden turetildi)")
print("bes sayi ozeti: " + " | ".join(f"{x:.2f}" for x in b2))
print(f"ceyrekler acikligi {ac2:.2f} m3, citler {alt2:.3f} ve {ust2:.3f} m3")
print(f"cit disinda {sum(1 for x in ikiz if x < alt2 or x > ust2)} deger var")
print(f"iki kutu ozeti ayni mi: {[round(x, 2) for x in b] == [round(x, 2) for x in b2]}")
```

```
ikiz kume: 921 deger (kurgu, kuzeyin sirali degerlerinden turetildi)
bes sayi ozeti: 0.00 | 15.74 | 19.66 | 24.63 | 45.47
ceyrekler acikligi 8.89 m3, citler 2.405 ve 37.965 m3
cit disinda 35 deger var
iki kutu ozeti ayni mi: True
```

İkiz küme kurgudur ve nasıl kurulduğu koddadır: sıralı dizi dört çeyrek dilimine ayrılır, her
dilimin içindeki değerler dilimin bir ucuna doğru itilir. İtme sıralamayı bozmaz ve dilim uçlarına
denk gelen değerler yerinde kalır, bu yüzden beş sayı birebir korunur. Alt ve üst yarının itme
yönü ters seçildiği için değerler ortancanın iki yanında birikir.

İki kutu özeti aynıdır: aynı ortanca, aynı çeyrekler, aynı çeyrekler açıklığı, aynı çitler. Kutu
özetini yan yana koyan bir rapor iki küme arasında hiçbir fark bildiremez. Bildirebileceği tek
şey son satırdadır ve o da beş sayının içinde değildir: çit dışındaki gözlem sayısı 50'den 35'e
inmiştir, yani aynı çitler iki kümede farklı sayıda değeri dışarıda bırakır.

Bu, kutu özetinin bir kusuru değil, kapsamıdır. Beş sayı **sıralamanın beş noktasını** bildirir;
o noktalar arasında değerlerin nasıl dağıldığı hakkında hiçbir şey söylemez ve söylemek üzere
tasarlanmamıştır. Kutu özetinin taşıdığı bilgi, 921 okumanın dördü dışında hepsinin sıralamadaki
yerinden bağımsızdır: dilim içindeki her düzenleme aynı yedi sayıyı verir.

İkiz kümenin gerçek ağda karşılığı olmayan bir kurgu olduğu bir kez daha yazılmalıdır. Amacı bir
bölgeyi taklit etmek değil, kutu özetinin ayırt edemediği farkın büyüklüğünü göstermektir. Aynı
etki gerçek kümelerde daha ölçülü biçimde ortaya çıkar ve genellikle iki farklı abone grubunun tek
satırda toplanmasından doğar.

## Aralık Sayımları

```python
# aralik.py — yogunluk gosterimi sayi olarak: deger ekseni 4 m3'luk araliklara
# bolunur, her araliktaki gozlem sayilir. Metin cubugu on gozleme bir isarettir.
GEN, N = 4.0, 12


def sayim(v):
    c = [0] * N
    for x in v:
        c[min(int(x / GEN), N - 1)] += 1
    return c


def tepe(c):
    return [i for i in range(1, N - 1)
            if c[i] > c[i - 1] and c[i] > c[i + 1] and c[i] >= 0.3 * max(c)]


ck, ci = sayim(kuzey), sayim(ikiz)
for i in range(N):
    print(f"{i * GEN:5.0f}-{(i + 1) * GEN:<3.0f} {ck[i]:4d} {'#' * round(ck[i] / 10):<34}"
          f" {ci[i]:4d} {'#' * round(ci[i] / 10)}")
print(f"tepe sayisi: kuzey {len(tepe(ck))}, ikiz {len(tepe(ci))}")
print(f"ikizin tepeleri {[int(i * GEN) for i in tepe(ci)]} m3 araliklarinda, "
      f"ortanca {b2[2]:.2f} m3 ise cukurda")
```

```
    0-4     32 ###                                  32 ###
    4-8      0                                       0
    8-12    41 ####                                  0
   12-16   175 ##################                  318 ################################
   16-20   234 #######################             114 ###########
   20-24   182 ##################                  110 ###########
   24-28   130 #############                       329 #################################
   28-32    66 #######                              11 #
   32-36    37 ####                                  4
   36-40    16 ##                                    0
   40-44     5                                       2
   44-48     3                                       1
tepe sayisi: kuzey 1, ikiz 2
ikizin tepeleri [12, 24] m3 araliklarinda, ortanca 19.66 m3 ise cukurda
```

Kutu özetinin ayıramadığı iki küme, on iki sayı çiftiyle ayrıldı. Kuzeyde sayımlar 16–20 m³
aralığında tek bir tepeye çıkıyor ve iki yana düşüyor. İkizde iki tepe var: 318 değer 12–16 m³
aralığında, 329 değer 24–28 m³ aralığında ve arada 114 ile 110'a inen bir çukur duruyor.

Çukurun yeri önemlidir: ortanca 19,66 m³'tür ve tam bu çukurun içine düşer. İkiz kümede ortancaya
en yakın değerler en seyrek olanlardır. "Tipik abone 19,66 m³ tüketiyor" cümlesi kuzey için
savunulabilir, ikiz küme için ise doğru olduğu halde yanıltıcıdır — o değerin çevresinde neredeyse
kimse yoktur.

Aralık genişliği bir karardır ve bu kararın kendisi de sayıyı oynatır: 4 m³ yerine 10 m³ seçilseydi
iki tepe tek aralığa girer ve fark yine görünmezdi. Aralık genişliğinin görsel etkisi ve seçimi
M26/K06'nın konusudur; burada kaydedilen tek şey, seçilen genişliğin çıktının altında yazılı
olmasıdır.

## Çentik Aralığı

```python
# centik.py — ortancanin payi: 1.000 kez geri koyarak cekilir, her cekiliste
# ortanca yeniden hesaplanir, cikan degerlerin orta yuzde 95'i centik araligidir.
CEKILIS = 1000


def yuzdelik(s, p):
    i = p * (len(s) - 1)
    a = int(i)
    z = min(a + 1, len(s) - 1)
    return s[a] + (s[z] - s[a]) * (i - a)


def centik(v, tohum, cekilis=CEKILIS):
    sec = uretec(tohum)
    n = len(v)
    d = sorted(yuzdelik2([v[int(sec() * n)] for _ in range(n)], 0.50)
               for _ in range(cekilis))
    return yuzdelik(d, 0.025), yuzdelik(d, 0.975)


merkez = [o["tuketim_m3"] for o in OKUMA if o["bolge"] == "merkez"]
for ad, v in (("kuzey", kuzey), ("ikiz", ikiz), ("merkez", merkez)):
    a, z = centik(v, TOHUM + 211)
    print(f"{ad:7s} n={len(v):4d} ortanca {yuzdelik2(v, 0.50):6.3f} "
          f"centik {a:.3f} - {z:.3f} genislik {z - a:.3f}")
ka, kz = centik(kuzey, TOHUM + 211)
ma, mz = centik(merkez, TOHUM + 211)
print(f"kuzey ile merkez centikleri kesisiyor mu: {ka < mz and ma < kz}")
```

```
kuzey   n= 921 ortanca 19.660 centik 19.230 - 20.150 genislik 0.920
ikiz    n= 921 ortanca 19.660 centik 18.203 - 21.349 genislik 3.146
merkez  n= 600 ortanca 21.535 centik 20.795 - 22.330 genislik 1.535
kuzey ile merkez centikleri kesisiyor mu: False
```

Çentik, ortancanın oynama payıdır ve önceki dersteki geri koyarak örneklemenin aynısıyla üretilir.
Kuzey ile ikiz kümenin ortancası aynı sayıdır, gözlem sayıları da aynıdır, buna rağmen çentikleri
0,920 ve 3,146 m³ genişliktedir. Aradaki üç buçuk kat, gözlem sayısından değil ortanca
çevresindeki yoğunluktan gelir: çukurda duran bir ortanca, çekilişten çekilişe çok daha uzağa
gider.

Bu, kutu özetinin eksiğinin sayısal ifadesidir. Beş sayıyı yan yana koyan iki kutu ayırt
edilemezken, aynı ortancanın payı üç katından fazla farklıdır. Ortancanın yanına çentiği yazılan
bir rapor, çizim yapılmadan da iki dağılımın aynı olmadığını bildirir. Çentik burada beş sayının
üzerine eklenen altıncı ve yedinci sayıdır ve maliyeti 1.000 çekilişlik tek bir koşumdur.

Son satır gerçek bir karşılaştırmadır: kuzey ile merkez bölgelerinin çentikleri kesişmiyor. Bunun
"iki bölgenin ortancası farklıdır" demek olup olmadığı burada karara bağlanmaz. Kesişme ve
kesişmeme üzerine kurulan yorum, sonraki dersin ilk sorusudur.

## Özet

- Kutu özeti çizim değil kayıttır: beş sayı, çeyrekler açıklığı ve iki çit; kuzeyin 921 okuması
  0,00 | 15,74 | 19,66 | 24,63 | 45,47 değerlerine ve 8,89 m³'lük açıklığa iner.
- Aynı beş sayıyı veren ikinci bir küme kurulabilir; iki kutu özeti birebir aynıdır ve fark yalnız
  çit dışındaki gözlem sayısında görünür, 50'ye karşı 35.
- Aralık sayımları iki kümeyi ayırır: kuzeyde tek tepe 16–20 m³'te, ikizde iki tepe 12–16 ve
  24–28 m³ aralıklarında, ortanca ise 114 ve 110 sayımlı çukurun içindedir.
- Ortancanın çentiği geri koyarak örneklemeyle üretilir ve aynı ortanca için 0,920 m³ ile 3,146 m³
  genişliğinde çıkar; genişlik gözlem sayısına ve ortanca çevresindeki yoğunluğa bağlıdır.
- Kuzey ile merkezin çentikleri kesişmiyor; bu bir gösterim ipucudur ve tek başına bir sınama
  sonucu değildir.

## Sonraki Adım

Bu derste iki kez aralık üretildi ve iki kez genişlik yazıldı, ama aralığın ne söylediği hiç
tanımlanmadı. Güven aralığı M15/K02'de bir araç olarak kullanılmıştı; sonraki ders aralığın
kendisini konu eder. Genişliğin gözlem sayısına nasıl bağlandığı ölçülür — gözlem sayısı dörde
katlandığında genişliğin ne olduğu sayılır — ve aralığın söylemedikleri açıkça yazılır. Sonunda iki
aralığın kesişmesi ele alınır: kesişme fark yok demek değildir ve bunun ispatı, farkın kendi
aralığının hesaplanmasıdır.
