---
title: 'Yanıltıcı Analizler'
source: 'https://academia.sh/tr/kurslar/kesifsel-analiz/yaniltici-analizler'
course: 'İstatistiksel Analiz ve Keşifsel Veri Analizi'
language: tr
updated: '2026-08-17T18:08:47+00:00'
license: 'CC BY-SA 4.0'
---

# Yanıltıcı Analizler

Kümenin kendisinin bir seçim olduğunun ve gürültünün bulgu üretebildiğinin sayılması: ağdaki bütün sayaçların kütlesinde doğu ile kuzey arasındaki fark 4,659 m³, okunabilmiş sayaçların örnekleminde 4,463 m³, sıfır okumalar atılınca 4,655 m³ ve yalnız üç dönem kalan abonelerde 4,454 m³ çıkar; dört kararın açıklığı 0,206 m³'tür. 1.329 abonenin 69'u hiçbir tabloda görünmez. Yirmi kırılımlık on tarama tümüyle rastgele bir sonuç değişkeni üzerinde 200 sınama yapar ve 11 bulgu verir; beklenen 10,0'dır ve on taramanın 7'sinde en az bir bulgu çıkar. Kurs kapanışında on üç dersin gözlenen sayısı, oynama payı ve kararın değişip değişmediği tek tabloda toplanır.

Üç derste sayının yanına payı yazıldı ve payı büyüten üç kaynak sayıldı: bileşim sayısı, modelde
bulunmayan değişken, kohort tanımı. Üçünde de küme verilmiş kabul edildi. Bu ders o kabulü
kaldırır. Küme ağın kendisi değil, ağın **görünen kısmıdır**: okunabilmiş sayaçlardan ve en az
bir okuma üretmiş abonelerden oluşur.

Bu dersin sayısı iki tanedir. Birincisi **eleme kararlarının rapor edilen farkı ne kadar
oynattığı**, ikincisi **gürültüden üretilebilen bulgu sayısı**. İkisi de aynı şeye çıkar: bir
sayının payı yalnız örneklemden değil, o sayıya giden yolda kaç kez seçim yapıldığından da gelir.

- **UI43.** Küme K03'ten devralınır ve **kurgudur**. Bu derste elenen sayaçların okumaları da
  saklanır, böylece **kütle** ile **örneklem** yan yana konabilir.
- **UI44.** Kütle, ağdaki bütün sayaçların okumalarıdır; örneklem, kayda girebilmiş sayaçların
  okumalarıdır. Aradaki eleme kümenin üretiminde vardır ve **ölçülen değerden bağımsız çekilir**.
- **UI45.** İki eleme kararı daha sınanır: sıfır yazılmış okumaların atılması ve yalnız üç dönem
  boyunca kalan abonelerin sayılması.
- **UI46.** Gürültü taraması için sonuç değişkeni **tümüyle rastgele** çekilir; kırılımlar gerçek
  kümeden alınır. Hiçbir kırılımda gerçek bir etki yoktur.
- **UI47.** Yirmi kırılım, on tarama, 200 karıştırma, eşik 0,05. Eşik bir karardır ve beklenen
  bulgu sayısı bu eşikten hesaplanır.

## Küme Kendisi Bir Seçimdir

Kursun çıpası doğu ile kuzey arasındaki farktır. Bu fark, hangi satırların sayıldığına göre
değişiyor.

```python
# yaniltici.py — MODELDIR. K03'un kurgu kumesi ayni tohumla uretilir, ama bu kez
# elenen sayaclarin okumalari da saklanir: kutle ile orneklem yan yana konur.
import math

TOHUM, HAM, M32 = 20260218, 1400, 0xFFFFFFFF
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


ABONE, ELENEN = [], []
for i in range(HAM):
    r = uretec(TOHUM + i)
    b = BOLGE[ayrik(r(), [x[1] for x in BOLGE])]
    hane = 1 + ayrik(r(), [0.06, 0.24, 0.30, 0.24, 0.11, 0.05])
    memnun = 1 + ayrik(r(), [0.08, 0.14, 0.27, 0.34, 0.17])
    (ELENEN if r() < 0.046 else ABONE).append(
        {"abone_no": 10001 + i, "bolge": b[0], "taban": b[2], "hane": hane,
         "memnuniyet": memnun})
GECERLI = {k["abone_no"] for k in ABONE}
KUTLE, ORNEKLEM = [], []
for k in ABONE + ELENEN:
    r = uretec(TOHUM + 7000 + k["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(
            k["taban"] * math.exp((r() + r() + r() - 1.5) * 0.62) * (1 - d * 0.05) * 100
            + 0.5) / 100
        satir = {"abone_no": k["abone_no"], "bolge": k["bolge"], "donem": d + 1,
                 "tuketim_m3": t}
        KUTLE.append(satir)
        if k["abone_no"] in GECERLI:
            ORNEKLEM.append(satir)
        r()

AB = {}
for s in ORNEKLEM:
    AB.setdefault(s["abone_no"], []).append(s["tuketim_m3"])


def ozet(satirlar, ad):
    t, c = {}, {}
    for s in satirlar:
        t[s["bolge"]] = t.get(s["bolge"], 0.0) + s["tuketim_m3"]
        c[s["bolge"]] = c.get(s["bolge"], 0) + 1
    d, k = t["dogu"] / c["dogu"], t["kuzey"] / c["kuzey"]
    print(f"{ad:<34} {len(satirlar):>6} {d:>8.3f} {k:>8.3f} {d - k:>8.3f}")
    return d - k


print(f"{'kume':<34} {'satir':>6} {'dogu':>8} {'kuzey':>8} {'fark':>8}")
farklar = [ozet(KUTLE, "kutle (agdaki butun sayaclar)"),
           ozet(ORNEKLEM, "orneklem (okunabilmis sayaclar)"),
           ozet([s for s in ORNEKLEM if s["tuketim_m3"] > 0], "sifir okumalar atilmis"),
           ozet([s for s in ORNEKLEM if len(AB[s["abone_no"]]) == 3],
                "yalniz uc donem kalan aboneler")]
print(f"\ndort kararin urettigi fark acikligi: {max(farklar) - min(farklar):.3f} m3")
print(f"elenen abone: {len(ELENEN)}, elenen okuma: {len(KUTLE) - len(ORNEKLEM)}")
print(f"hic okuma uretmeyen abone: {len(ABONE) - len(AB)} / {len(ABONE)}")
print(f"sifir okuma: {sum(1 for s in ORNEKLEM if s['tuketim_m3'] == 0)} / {len(ORNEKLEM)}")

print("\nokuma sayisi   abone   abone ortalamasi   ilk donem ortalamasi")
for n in (1, 2, 3):
    alt = [v for v in AB.values() if len(v) == n]
    print(f"{n:>12} {len(alt):>7} {sum(sum(v)/len(v) for v in alt)/len(alt):>18.3f}"
          f" {sum(v[0] for v in alt)/len(alt):>22.3f}")
hepsi = [sum(v) / len(v) for v in AB.values()]
print(f"{'hepsi':>12} {len(hepsi):>7} {sum(hepsi)/len(hepsi):>18.3f}")
```

```
kume                                satir     dogu    kuzey     fark
kutle (agdaki butun sayaclar)        3364   24.784   20.125    4.659
orneklem (okunabilmis sayaclar)      3199   24.674   20.210    4.463
sifir okumalar atilmis               3080   25.593   20.938    4.655
yalniz uc donem kalan aboneler       2514   24.604   20.150    4.454

dort kararin urettigi fark acikligi: 0.206 m3
elenen abone: 71, elenen okuma: 165
hic okuma uretmeyen abone: 69 / 1329
sifir okuma: 119 / 3199

okuma sayisi   abone   abone ortalamasi   ilk donem ortalamasi
           1     159             20.858                 20.858
           2     263             19.776                 19.818
           3     838             19.627                 20.895
       hepsi    1260             19.813
```

İlk tablo **seçim yanlılığının** iki yüzünü ayırıyor. Kütle ile örneklem arasındaki fark
4,659'dan 4,463 m³'e iniyor: 165 okuma ve 71 abone eksik. Ama bu eleme kümenin üretiminde
tüketimden bağımsız çekilmiştir, dolayısıyla aradaki 0,196 m³ bir yanlılık değil, örneklemin
kendi payıdır. Elemenin yanlılık üretip üretmediğini belirleyen şey elemenin büyüklüğü değil,
**ölçülen değerle ilişkili olup olmadığıdır**.

Üçüncü satır ilişkili bir eleme gösteriyor. Sıfır yazılmış 119 okuma "geçersiz okuma" sayılıp
atıldığında doğu ortalaması 24,674'ten 25,593 m³'e çıkıyor. Karar savunulabilir — sıfır bir
tüketim değil, bir okunamama kaydı olabilir — ama sıfırlar rastgele dağılmadığı için sonucu bir
yöne itiyor. Dört kararın açıklığı 0,206 m³ ve bu, kursun çıpa farkının yaklaşık yirmide biridir.

İkinci tablo **ayakta kalan yanlılığını** veriyor. Üç dönem boyunca kalan 838 abonenin ortalaması
19,627 m³, kümenin tamamının ortalaması 19,813 m³. Fark küçük ve kaynağı son sütunda: üç dönem
kalan abonelerin **ilk dönem** ortalaması 20,895 m³ ile tek dönemliklerin 20,858 m³'üne neredeyse
eşit. Yani ayakta kalanlar baştan farklı aboneler değil; farkı yaratan şey, uzun kalanların
sonraki dönem okumalarının da ortalamaya girmesi.

Tablonun dışında kalan sayı en önemlisi: 1.329 abonenin **69'u hiç okuma üretmemiştir** ve bu
derste kurulan hiçbir abone tablosunda görünmez. Abone başına hesaplanan her özet 1.260 aboneye
aittir. Ayakta kalan yanlılığının en sessiz biçimi, paydanın kendisinin görünmez olmasıdır.

## Gürültü Bulgu Üretir

İkinci sayı çözümleme serbestliğinin sınırıdır. Sonuç değişkeni tümüyle rastgele çekilir,
kırılımlar gerçek kümeden alınır ve her kırılım için yeniden karıştırma sınaması yapılır.
Bulunacak hiçbir şey yoktur.

```python

# Gurultuden bulgu uretme: sonuc degiskeni tumuyle rastgele cekilir, kirilimlar
# gercek kumeden alinir. Hicbir kirilimda gercek bir etki yoktur.
KAYIT = {k["abone_no"]: k for k in ABONE if k["abone_no"] in AB}
VERI = [{"bolge": k["bolge"], "hane": k["hane"], "memnuniyet": k["memnuniyet"],
         "basamak": ("10 alti" if AB[n][0] < 10 else
                     ("10-25" if AB[n][0] < 25 else "25 ustu")),
         "sifir": min(AB[n]) == 0.0, "tuketim": sum(AB[n]) / len(AB[n])}
        for n, k in KAYIT.items()]
N = len(VERI)
KIRILIM = []
for alan in ("bolge", "hane", "memnuniyet", "basamak"):
    for a in sorted({x[alan] for x in VERI}, key=str):
        KIRILIM.append((f"{alan}={a}", [i for i, x in enumerate(VERI) if x[alan] == a]))
KIRILIM.append(("sifir okumali", [i for i, x in enumerate(VERI) if x["sifir"]]))

KARISTIRMA, ESIK, TARAMA = 200, 0.05, 10
rs = uretec(TOHUM + 33000)
PERM = []
for _ in range(KARISTIRMA):
    h = list(range(N))
    for i in range(N - 1, 0, -1):
        j = int(rs() * (i + 1))
        h[i], h[j] = h[j], h[i]
    PERM.append(h)


def tara(deger):
    """Her kirilim icin: kirilim ici ile disi arasindaki farkin karistirma sinamasi."""
    toplam, bulgu = sum(deger), []
    for ad, idx in KIRILIM:
        m = len(idx)
        ic = sum(map(deger.__getitem__, idx))
        goz = ic / m - (toplam - ic) / (N - m)
        asan = 0
        for h in PERM:
            p = sum(deger[h[i]] for i in idx)
            if abs(p / m - (toplam - p) / (N - m)) >= abs(goz) - 1e-12:
                asan += 1
        if asan / KARISTIRMA <= ESIK:
            bulgu.append((ad, asan / KARISTIRMA))
    return bulgu


rg = uretec(TOHUM + 22000)
print(f"{N} abone, {len(KIRILIM)} kirilim, {KARISTIRMA} karistirma, esik {ESIK}")
print("gurultu taramasi (sonuc degiskeni rastgele, gercek etki yok)")
toplam, en_az_bir, en_cok = 0, 0, 0
for t in range(TARAMA):
    b = tara([rg() for _ in range(N)])
    toplam += len(b)
    en_az_bir += 1 if b else 0
    en_cok = max(en_cok, len(b))
    print(f"  tarama {t + 1:>2}: {len(b)} bulgu")
    if b:
        print("      " + ", ".join(f"{ad} p={p:.3f}" for ad, p in b))
sinama = TARAMA * len(KIRILIM)
print(f"\ntoplam sinama {sinama}, gozlenen bulgu {toplam}, beklenen {sinama * ESIK:.1f}")
print(f"en az bir bulgu cikan tarama {en_az_bir}/{TARAMA}, "
      f"beklenen {TARAMA * (1 - (1 - ESIK) ** len(KIRILIM)):.1f}")
print(f"tek taramada cikan en cok bulgu: {en_cok}")
print(f"ayni tarama gercek tuketim uzerinde: {len(tara([x['tuketim'] for x in VERI]))} bulgu")
```

```
1260 abone, 20 kirilim, 200 karistirma, esik 0.05
gurultu taramasi (sonuc degiskeni rastgele, gercek etki yok)
  tarama  1: 1 bulgu
      bolge=dogu p=0.050
  tarama  2: 0 bulgu
  tarama  3: 1 bulgu
      sifir okumali p=0.040
  tarama  4: 1 bulgu
      bolge=kuzey p=0.050
  tarama  5: 5 bulgu
      bolge=kuzey p=0.030, hane=1 p=0.010, hane=6 p=0.010, basamak=10-25 p=0.000, basamak=25 ustu p=0.010
  tarama  6: 0 bulgu
  tarama  7: 1 bulgu
      basamak=25 ustu p=0.015
  tarama  8: 0 bulgu
  tarama  9: 1 bulgu
      memnuniyet=4 p=0.000
  tarama 10: 1 bulgu
      bolge=dogu p=0.035

toplam sinama 200, gozlenen bulgu 11, beklenen 10.0
en az bir bulgu cikan tarama 7/10, beklenen 6.4
tek taramada cikan en cok bulgu: 5
ayni tarama gercek tuketim uzerinde: 8 bulgu
```

İki yüz sınama 11 bulgu verdi; eşik 0,05 olduğu için beklenen sayı 10,0. Gözlenen ile beklenen
neredeyse aynı, çünkü bulgu sayısı kümeden değil eşikten ve sınama sayısından geliyor. En az bir
bulgu çıkan tarama sayısı 7, beklenen 6,4. Yirmi kırılımlık bir taramanın hiçbir şey bulmama
olasılığı, hiçbir etki yokken bile üçte birden küçüktür.

Beşinci tarama tek başına okunmaya değer: aynı rastgele sütun beş ayrı kırılımda eşiği aşıyor ve
birinin p değeri 0,000. Bu beş satır bir rapora "bölge, hane büyüklüğü ve tarife basamağı
kırılımlarında anlamlı fark bulundu" diye girebilir. Beşinin de arkasında hiçbir şey yoktur.

Son satır ayrımı imkânsız kılan şeyi veriyor. Aynı tarama gerçek tüketim üzerinde 8 bulgu
buluyor, gürültü üzerinde tarama başına ortalama 1,1. Toplu bakıldığında gerçek yapı ayırt
edilebilir; ama **tek bir bulguya** bakan kişi onun hangi kümeden geldiğini göremez. Ayrımı yapan
tek şey, kaç kırılımın denendiğinin yazılmış olmasıdır. Denenmiş kırılım sayısı yazılmayan bir
bulgu, gürültü taramasının bir satırından ayırt edilemez.

Bu, keşif konusunun bıraktığı borcu ödemenin de yeridir. Keşifsel analiz beş kırılım alanında
232 hücre gezmiş, bunların 33'ünün 30 satırdan az olduğunu saymıştı; sınanacak soru o 232
hücrenin arasından seçildi. Yukarıdaki tarama 20 kırılımda 200 sınamayla 11 bulgu üretiyorsa,
232 hücrelik bir keşif taramasının aynı eşikte üreteceği beklenen bulgu sayısı 11,6'dır — ve
keşif aşamasında bu bulguların hiçbiri bir sınama olarak sayılmadı. Borç şudur: keşifte gezilen
hücre sayısı rapora yazılmadığında, sonradan yapılan tek bir sınama kendi payını olduğundan dar
gösterir. Ödemesi bir hesap değil bir cümledir: kaç kırılım gezildiği yazılır.

Seçim yanlılığı ile p değeri avcılığı burada birleşiyor. Birincisi kümeye hangi satırların
girdiğini seçmektir, ikincisi kümeden hangi sorunun sorulduğunu. İkisi de sonucu görüldükten
sonra yapılabilir ve ikisi de yazılmadıkça görünmez.

## Özet

- Aynı çıpa farkı dört kararla dört değer alır: kütlede 4,659, örneklemde 4,463, sıfır okumalar
  atılınca 4,655 ve yalnız üç dönem kalan abonelerde 4,454 m³; açıklık 0,206 m³'tür.
- Eleme büyüklüğü değil, elemenin ölçülen değerle ilişkisi yanlılık üretir: tüketimden bağımsız
  çekilen 71 abonelik eleme farkı 0,196 m³ oynatır, sıfır okumaların atılması doğu ortalamasını
  24,674'ten 25,593 m³'e taşır.
- Ayakta kalan yanlılığı iki yerdedir: üç dönem kalan 838 abonenin ortalaması 19,627 m³ ile
  kümenin 19,813 m³'üne göre düşüktür, ve 1.329 abonenin 69'u hiçbir abone tablosunda görünmez.
- Gürültü üzerinde 20 kırılımlık 10 tarama 200 sınama yapar ve 11 bulgu verir; eşik 0,05
  olduğundan beklenen 10,0'dır ve on taramanın 7'sinde en az bir bulgu çıkar.
- Tek bir tarama beş bulgu üretebilir ve bulguların hiçbirinin arkasında bir etki yoktur; denenmiş
  kırılım sayısı yazılmayan bir bulgu gürültü taramasının satırından ayırt edilemez.

## Kurs Kapanışı

On üç dersin hesabı tek tabloda duruyor ve her sayı kendi dersinden okundu.

| Ders | Gözlenen sayı | Oynama payı | Karar değişir mi |
|---|---|---|---|
| Keşif 01 keşifsel analizin amacı | doğu - kuzey 4,463 m³ | 2.000 koşumda aşılmadı | hayır |
| Keşif 02 tek değişkenli inceleme | doğu ortalaması 24,674 m³ | çit dışı eleme 25,154 m³ | evet, fark 4,622 |
| Keşif 03 iki değişkenli inceleme | katsayı +0,600 | tek nokta çıkınca -0,057 | evet, ilişki kalmaz |
| Keşif 04 çok değişkenli inceleme | 15 çiftin 5'i eşiği aşar | eşik 0,0354, 2.000 koşum | evet, bağımsız bulgu 1 |
| Keşif 05 veri görsel denetimi | küme ortalaması 19,693 m³ | sıfırlar sayılmazsa 20,454 | evet, yüzde 3,9 açıklık |
| Uygulama 01 betimsel özet seçimi | ortalama 24,674 m³ | pay genişliği 1,552 m³ | hayır, 142 okumada evet |
| Uygulama 02 dağılım karşılaştırması | ortanca 19,66 m³ | çentik 0,920 ↔ 3,146 m³ | evet, iki tepe gizlenir |
| Uygulama 03 güven aralığı yorumu | doğu ortalaması 24,674 m³ | 23,894–25,431 m³ | evet, kesişme yanıltır |
| Uygulama 04 hipotez sınaması | fark 0,957 m³ | p 0,01249 ↔ 0,00300 | hayır, dörtte birde evet |
| Uygulama 05 A/B testi analizi | fark 0,123 m³ | [-0,698, 0,952] m³ | evet, 108 bileşimin 4'ü |
| Uygulama 06 regresyon | katsayı -0,605 m³/yıl | [-0,714, -0,503] | evet, katsayı 1,825 |
| Uygulama 07 kohort ve huni | elde tutma 0,619 | kural değişince 0,867 | evet, yön ters döner |
| Uygulama 08 yanıltıcı analizler | 11 bulgu / 200 sınama | beklenen 10,0 bulgu | evet, hiçbiri gerçek değil |

Üçüncü sütun kursun kuralıdır: **yanında oynama payı yazılmayan bir fark, bulgu değil bir
gözlemdir; payı yazılmayan sayı ölçülmemiş sayılır.** Dördüncü sütun payın ne işe yaradığını
söylüyor. **On üç dersin onunda karar değişiyor** — sayı aynı kaldığı halde, savunulabilir ikinci
bir kararla rapora giren cümle başkalaşıyor. Üçünde değişmiyor ve bu üç satır kursun asıl
çıktısıdır: payı yazılmış bir sayı, kararın **değişmediğini** de gösterebilir. Pay bir uyarı
işareti değil, kararın dayanağıdır.

On üç derste her sayının yanına payı yazıldı. Ama bütün bu sayılar analistin ekranında, çıktı
bloğu olarak kaldı. Kararı verecek kişi ne payı gördü ne de sayıyı; bulgunun **görülebilir ve
aktarılabilir** hale gelmesi hiç ele alınmadı. Payın kendisinin bir gösterimde nasıl duracağı da
sorulmadı: bir aralık nasıl çizilir, iki aralığın kesişmesi bir okuyucuya nasıl gösterilir, kaç
kırılımın denendiği bir raporun neresinde yazar. Sonraki kurs, Görselleştirme, Raporlama ve
Ölçekli Analiz, bu soruları ele alır.
