İçeriğe geç
academia.sh

Ders 06 / 13

Betimsel Özetlerin Seçimi

Aynı 557 okumadan üç savunulabilir özet çıkıyor: ortalama 24,674 m³, ortanca 24,120 m³ ve yüzde on kırpılmış ortalama 24,581 m³, aradaki en büyük fark 0,554 m³. Geri koyarak örnekleme üçünün de oynama payını ölçüyor ve genişlikler 1,552, 1,762 ve 1,458 m³ çıkıyor: seçimin oynattığı fark, payların üçte biri kadardır ve üç aralık da 25 m³'lük tarife basamağını içine alır. Aynı hesap 557 okumalık gruptan 142 okumalık gruba inince seçim farkı 1,679 m³'e, pay genişliği 2,917 m³'e çıkar ve karar bu kez paydan bağımsız okunamaz.

İçindekiler

Keşif aşaması bir karar üretmedi. Beş ders boyunca dağılımlar açıldı, kırılımlar denendi, ilişkiler tarandı ve geriye bir soru listesi kaldı; listedeki soruların hiçbiri henüz sınanmadı. Keşifte bakılan her kırılım da sınamaya bir borç bıraktı ve o borç konunun sonunda sayılacak.

Sınamanın ilk adımı, sanıldığı gibi bir sınama seçmek değildir. Ondan önce gelen ve çoğu zaman atlanan bir adım vardır: sınanacak sayı hangi özetle yazılacak. Doğu bölgesinin okumaları için “ortalama tüketim” istendiğinde en az üç savunulabilir cevap vardır ve üçü aynı kümeden üç ayrı sayı verir. Bu dersin ölçüsü, bu seçimin rapordaki sayıyı kaç metre küp oynattığı ve o oynamanın sayının kendi payının yanında ne kadar kaldığıdır.

  • UI1. Betimsel özet bir karardır. Aynı küme için ortalama, ortanca ve kırpılmış ortalama üç ayrı sayı verir; hiçbiri diğerinin yaklaşık değeri değildir, üçü üç ayrı soruya cevaptır.
  • UI2. Her özetin bir oynama payı vardır ve pay geri koyarak örneklemeyle ölçülür: küme kendi içinden aynı büyüklükte, geri koyarak, çok kez çekilir ve özet her çekilişte yeniden hesaplanır. Çekiliş sayısı yazılır; pay o sayıya da bağlıdır.
  • UI3. Payı dar olan özet tek başına doğru özet değildir. Darlık, özetin neyi cevapladığını değiştirmez; yalnız o cevabın örneklemden örnekleme ne kadar oynadığını söyler.
  • UI4. Seçimin oynattığı fark, payın yanında okunur. Paydan küçük bir fark üzerinde yürütülen tartışma, gürültü üzerinde yürütülen bir tartışmadır.
  • UI5. Grup küçüldükçe pay büyür. Rapor edilen her özetin yanına kaç gözleme dayandığı yazılır; n yazılmayan özetin payı okunamaz.

Üç Özet, Üç Sayı

# 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 ortalama(v):
    return sum(v) / len(v)


def ortanca(v):
    s = sorted(v)
    n = len(s)
    return s[n // 2] if n % 2 else (s[n // 2 - 1] + s[n // 2]) / 2


def kirpilmis(v, p=0.10):
    s = sorted(v)
    k = int(len(s) * p)
    return ortalama(s[k:len(s) - k])


dogu = [o["tuketim_m3"] for o in OKUMA if o["bolge"] == "dogu"]
U = [ortalama(dogu), ortanca(dogu), kirpilmis(dogu)]
print(f"kurgu kume (tohum {TOHUM}): {len(OKUMA)} satir, {len(GECERLI)} abone")
print(f"dogu bolgesi: {len(dogu)} okuma, {sum(1 for x in dogu if x == 0.0)} sifir okuma")
print(f"ortalama {U[0]:.3f} | ortanca {U[1]:.3f} | kirpilmis(%10) {U[2]:.3f}")
print(f"ucu arasindaki en buyuk fark {max(U) - min(U):.3f} m3")
kurgu kume (tohum 20260218): 3199 satir, 1329 abone
dogu bolgesi: 557 okuma, 20 sifir okuma
ortalama 24.674 | ortanca 24.120 | kirpilmis(%10) 24.581
ucu arasindaki en buyuk fark 0.554 m3

Küme kurgudur ve K03–K04’ün ölçüm ağından aynı tohumla yeniden üretilmiştir; 3.199 satır ve 1.329 abone, önceki kursun bıraktığı sayıların aynısıdır. Doğu bölgesinin 24,674 m³’lük ortalaması da oradan gelir ve bu kursun açılışında sorulan sayıdır.

Şimdi yanında iki sayı daha duruyor. Ortanca 24,120 m³’tür: okumalar sıralandığında ortada duran değer, yani kümenin yarısının altında kaldığı sayı. Yüzde on kırpılmış ortalama 24,581 m³’tür: en küçük 55 ve en büyük 55 okuma çıkarıldıktan sonra kalan 447 değerin ortalaması. Üçü de doğrudur, üçü de aynı 557 okumadan çıkmıştır ve aralarındaki en büyük fark 0,554 m³’tür.

Ortalamanın ortancadan büyük olması bir bilgidir: dağılım sağa çarpıktır, yani birkaç büyük okuma ortalamayı yukarı çeker. Yirmi sıfır okuma ise ters yönde iş görür ve ortalamayı aşağı bastırır. Bu iki etki aynı sayının içinde birbirini kısmen götürür ve tek başına ortalamaya bakan biri ikisini de göremez.

Payın Ölçülmesi

# pay.py — oynama payi geri koyarak orneklemeyle olculur: kume kendi icinden
# ayni buyuklukte ve geri koyarak 1.000 kez cekilir, ozet her cekiliste yeniden
# hesaplanir, cikan 1.000 degerin orta yuzde 95'i alinir.
CEKILIS = 1000


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


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


E = [12, 10, 10, 10, 10]
y = lambda h: "".join(str(v).rjust(E[k]) if k else str(v).ljust(E[0])
                      for k, v in enumerate(h))
OZET = (("ortalama", ortalama), ("ortanca", ortanca), ("kirpilmis", kirpilmis))
print(y(["ozet", "sayi", "alt", "ust", "genislik"]))
for ad, f in OZET:
    a, b = pay(dogu, f, TOHUM + 101)
    print(y([ad, round(f(dogu), 3), round(a, 3), round(b, 3), round(b - a, 3)]))
print(f"\n{len(dogu)} gozlem, {CEKILIS} cekilis, ucu de ayni cekilisler uzerinde")
print("tarife basamagi 25 m3 uc araligin da icinde kaliyor")
ozet              sayi       alt       ust  genislik
ortalama        24.674    23.889    25.441     1.552
ortanca          24.12    23.248     25.01     1.762
kirpilmis       24.581    23.876    25.334     1.458

557 gozlem, 1000 cekilis, ucu de ayni cekilisler uzerinde
tarife basamagi 25 m3 uc araligin da icinde kaliyor

Geri koyarak örnekleme tek bir soruyu cevaplar: aynı ağdan aynı büyüklükte başka bir okuma kümesi gelseydi bu özet ne çıkardı. Elde başka bir küme olmadığı için kümenin kendisi kütle yerine konur, içinden geri koyarak 557 değer çekilir, özet yeniden hesaplanır ve bu 1.000 kez tekrarlanır. Çıkan 1.000 değerin orta yüzde 95’i, o özetin oynama payıdır.

Üç özet aynı çekilişler üzerinde hesaplandı; aradaki fark özetten gelir, çekiliş kurasından değil. Genişlikler 1,458 ile 1,762 m³ arasındadır. Seçimin oynattığı fark ise 0,554 m³’tü, yani en dar payın bile üçte biri kadar. Üç özet arasında hangisinin yazılacağı tartışması, bu kümede payın içinde kalan bir tartışmadır.

Bunun rapordaki karşılığı tek cümledir: doğu bölgesinin tüketimi 25 m³’lük tarife basamağının altında mı. Üç sayı da altındadır, ama üç aralık da 25’i içine alır. Basamağın altında kalma iddiası, hangi özet seçilirse seçilsin, payı yazılmadan savunulamaz. Payı yazılan bir raporda ise iddia kendiliğinden yumuşar ve doğru biçimini alır: gözlenen üç sayı da basamağın altındadır, fakat aynı ağdan gelecek başka bir okuma kümesinin basamağı aşması bu veriyle dışlanamaz.

Hangi Özet Neyi Cevaplıyor

# secim.py — ozet secimi rapora ne yaziyor: toplam hacim ve kirpilan satirlar.
k = int(len(dogu) * 0.10)
print(f"ortalama x n = {ortalama(dogu) * len(dogu):.2f} m3 raporlanan hacim")
print(f"ortanca x n = {ortanca(dogu) * len(dogu):.2f} m3 ayni carpim, baska sayi")
print(f"iki hacim arasindaki fark {(ortalama(dogu) - ortanca(dogu)) * len(dogu):.2f} m3")
print(f"kirpilmis ortalama {2 * k} okumayi disarida birakir; bunlarin "
      f"{sum(1 for x in sorted(dogu)[:k] if x == 0.0)} tanesi sifir okumadir")
sifirsiz = [x for x in dogu if x > 0.0]
print(f"sifir okumalar hic sayilmazsa ortalama {ortalama(sifirsiz):.3f} m3 olur")
ortalama x n = 13743.34 m3 raporlanan hacim
ortanca x n = 13434.84 m3 ayni carpim, baska sayi
iki hacim arasindaki fark 308.50 m3
kirpilmis ortalama 110 okumayi disarida birakir; bunlarin 20 tanesi sifir okumadir
sifir okumalar hic sayilmazsa ortalama 25.593 m3 olur

Üç özetin üç ayrı soruya cevap verdiği burada görünür. Ortalama, kümenin toplamını taşır: 557 ile çarpıldığında 13.743,34 m³ çıkar ve bu, ağdan geçen hacmin kendisidir. Ortanca aynı çarpımda 13.434,84 m³ verir ve bu sayı hiçbir şeyin toplamı değildir; aradaki 308,50 m³ ortancanın hacim sorusuna cevap vermediğinin ölçüsüdür. Faturalanacak hacim sorulduğunda ortanca yanlış özettir.

Kırpılmış ortalama üçüncü soruyu cevaplar: uç okumalara dayanıklı bir merkez. Bunu 110 okumayı dışarıda bırakarak yapar ve dışarıda bıraktıklarının 20 tanesi sıfır okumadır. Payı en dar özet budur, ama darlığın kaynağı kümenin kendisi değil, kümenin yüzde yirmisinin hesaba girmemesidir. Dar pay burada bir üstünlük değil, bir kapsam daralmasının işaretidir.

Son satır kapsam kararının tek başına ne yaptığını gösterir. Sıfır okumalar hiç sayılmazsa ortalama 25,593 m³ olur ve tarife basamağını aşar. Sıfır okumaların ne olduğu M26/K03’ün temizleme dersinde ele alınmıştı; burada eleme yapılmaz, yalnız kapsam kararının özeti 0,919 m³ oynattığı ve bu oynamanın seçim farkından büyük olduğu kaydedilir.

Grup Küçüldüğünde

# kucuk.py — ayni uc ozet ve ayni pay, kucuk bir kirilimda yeniden hesaplanir.
alt = [o["tuketim_m3"] for o in OKUMA
       if o["bolge"] == "dogu" and o["donem"] == "2026-03"]
for ad, v in (("dogu / tumu", dogu), ("dogu / 2026-03", alt)):
    s = [f(v) for _, f in OZET]
    g = [b - a for a, b in (pay(v, f, TOHUM + 101) for _, f in OZET)]
    print(f"{ad}: n={len(v)}, secim farki {max(s) - min(s):.3f} m3, "
          f"pay genisligi {min(g):.3f} ile {max(g):.3f} m3 arasinda")
    print(f"    ortalama {s[0]:.3f} | ortanca {s[1]:.3f} | kirpilmis {s[2]:.3f}")
dogu / tumu: n=557, secim farki 0.554 m3, pay genisligi 1.458 ile 1.762 m3 arasinda
    ortalama 24.674 | ortanca 24.120 | kirpilmis 24.581
dogu / 2026-03: n=142, secim farki 1.679 m3, pay genisligi 2.527 ile 2.917 m3 arasinda
    ortalama 22.394 | ortanca 20.715 | kirpilmis 22.112

Aynı bölge, tek dönem: 142 okuma. Seçim farkı 0,554 m³’ten 1,679 m³’e çıktı, yani üç katına. Payların genişliği de büyüdü ve 2,5–2,9 m³ bandına oturdu. İki büyüme birlikte okunur: küçük kırılımda hem özetler birbirinden uzaklaşır hem de her birinin kendi oynaması artar.

Uzaklaşmanın kaynağı görünür durumda. Bu dönemde ortalama 22,394 m³, ortanca 20,715 m³’tür ve aradaki 1,679 m³’lük açıklık, tek dönemlik kırılımda birkaç büyük okumanın ortalamayı çekmesinden gelir. Kırpılmış ortalama 22,112 m³ ile ortalamanın yanında durur, çünkü çekmeyi yapan okumalar kırpılan yüzde ondan fazladır.

Rapor bakımından sonuç şudur: 557 okumalık grupta özet seçimi payın içinde kalan bir ayrıntıdır, 142 okumalık grupta ise seçim farkı payın yarısına yaklaşır ve karar artık paydan bağımsız okunamaz. İkisinde de yazılması gereken şey aynıdır — sayının yanına n ve pay.

Payın Kendisi de Bir Sayıdır

# cekilis.py — pay bir hesaptan degil bir kosumdan cikar; kosum sayisi degisince
# payin sinirlari da oynar. Ust sinir bu kursta 1.000 cekilistir.
for c in (200, 500, 1000):
    a, b = pay(dogu, ortalama, TOHUM + 101, c)
    print(f"{c:5d} cekilis: {a:.3f} - {b:.3f}, genislik {b - a:.3f} m3")
  200 cekilis: 23.955 - 25.406, genislik 1.451 m3
  500 cekilis: 23.949 - 25.426, genislik 1.477 m3
 1000 cekilis: 23.889 - 25.441, genislik 1.552 m3

Pay bir formülden değil bir koşumdan çıkar ve koşum sayısı değişince payın sınırları da oynar. İki yüz çekilişte genişlik 1,451 m³, bin çekilişte 1,552 m³ olur; aradaki 0,101 m³ payın kendi belirsizliğidir. Aralığın uçları en çok oynayan kısımdır, çünkü uçlar 1.000 değerin en dıştaki yirmi beşincilerine dayanır ve o bölgede az sayıda çekiliş vardır.

Bu kursta çekiliş sayısı 1.000’i aşmaz. Sınır bir kolaylık değil bir kayıttır: rapor edilen pay, kaç çekilişten çıktığı yazılmadan tam değildir. Aynı kural sonraki derslerde yeniden karıştırma sayısı için de geçerli olacak ve orada payın çözünürlüğünü doğrudan koşum sayısı belirleyecek.

Özet

  • Aynı 557 okuma üç savunulabilir özet verir: ortalama 24,674 m³, ortanca 24,120 m³, yüzde on kırpılmış ortalama 24,581 m³; seçimin oynattığı en büyük fark 0,554 m³’tür.
  • Geri koyarak örnekleme, kümeyi kütle yerine koyup 1.000 kez geri koyarak çeker ve her özetin payını ölçer: genişlikler 1,552, 1,762 ve 1,458 m³ çıkar, yani seçim farkının üç katı.
  • Payı en dar özet kırpılmış ortalamadır, ama darlık 110 okumanın hesaba girmemesinden gelir; dar pay doğru özet anlamına gelmez, kapsamın daraldığı anlamına gelir.
  • Üç özet üç ayrı soruya cevap verir: ortalama toplamı taşır ve 557 ile çarpımı 13.743,34 m³’tür, ortancanın aynı çarpımı 13.434,84 m³ ile hiçbir hacme karşılık gelmez.
  • Kırılım 557 okumadan 142 okumaya inince seçim farkı 1,679 m³’e, pay genişliği 2,917 m³’e çıkar; bu yüzden her özetin yanına dayandığı gözlem sayısı yazılır.

Sonraki Adım

Tek bir sayı seçildi ve payı yazıldı, ama tek sayı bir dağılımı anlatmaz. Rapordaki asıl soru çoğu zaman iki grubun karşılaştırılmasıdır ve 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. Sonraki ders bu beş sayının bir dağılımı belirlemediğini gösterir — beş sayısı birbirinin aynısı olan iki küme kurulur, aralık sayımları yan yana basılır ve birinin tek, diğerinin iki tepeli olduğu sayıyla ortaya çıkar. Ortancanın çentik aralığı da yine geri koyarak örneklemeyle üretilir.

İlerlemeni kaydetmek ve not almak için Giriş yap

Notlarım

Not almak için giriş yapmalısın.

Aramak için yazmaya başlayın.

↑↓ Esc gezin · aç · kapat