Ders 02 / 13
Tek Değişkenli İnceleme
Doğu bölgesinin 557 okuması ile aynı ortalamayı (24,674 m³) ve aynı standart sapmayı (9,198) veren simetrik bir model dağılım yan yana konur ve rapor edilen iki sayının biçimi hiç anlatmadığı gösterilir: beş sayı özeti 0,00 / 19,23 / 24,12 / 29,85 / 51,90 ile 0,66 / 18,37 / 24,61 / 31,43 / 47,79 olarak ayrışır, çeyrekler açıklığı 10,62'ye karşı 13,06 çıkar, ortalama ile ortanca arasındaki açıklık 0,554'e karşı 0,064 kalır. Aralık sayımları beş sayının göremediğini verir: gözlemde ilk aralıkta 20, ikincisinde 1 değer vardır ve aralık genişliği 10 seçilirse bu kopukluk tek bir 21 sayısına gömülür. Çit dışındaki 30 değer elenmez, etkisi ölçülür: eleme doğu ortalamasını 25,154'e, doğu ile kuzey arasındaki farkı 4,463'ten 4,622 m³'e taşır.
İçindekiler
Önceki ders iki bölge ortalamasının farkına baktı ve yanına payını yazdı: 4,463 m³’lük fark 2.000 karıştırmanın hiçbirinde ortaya çıkmadı. Ortalamanın kendisi ise hiç sorgulanmadı. Doğu bölgesi için yazılan 24,674 m³, 557 okumanın tek bir sayıya sıkıştırılmış halidir ve o 557 sayının nasıl dizildiği hakkında hiçbir şey söylemez.
Bu ders bir sütunun tek başına nasıl incelendiğini ele alır ve ölçüsü şudur: özetin gizlediği biçim. Aynı ortalamayı ve aynı standart sapmayı veren iki dağılım kurulur, ikisi de aynı iki sayıyla raporlanır ve aralarındaki farkın rapora hiç girmediği gösterilir.
- EA6. Tek değişkenli inceleme (univariate) bir sütuna üç soru sorar: merkez nerede, değerler ne kadar dağınık ve dağılımın biçimi ne. Üçü birlikte yazılmadıkça sütun tarif edilmiş olmaz.
- EA7. Beş sayı özeti en küçük değer, birinci çeyrek, ortanca, üçüncü çeyrek ve en büyük değerdir. Çeyrekler açıklığı Ç3 ile Ç1 arasındaki uzaklıktır ve Veri Toplama ve Hazırlama kursunda tanımlanmıştır.
- EA8. Çarpıklık (skewness) bu kursta ortalama ile ortanca arasındaki açıklıkla ölçülür. Açıklık pozitifse uzun kuyruk sağdadır; ortalama kuyruğu izler, ortanca izlemez.
- EA9. Aralık sayımları dağılımın biçimini sayı olarak verir: her aralığın sınırları ve içine düşen değer sayısı basılır. Aralık genişliği bir karardır ve biçimi değiştirir.
- EA10. Aykırı değer bu kursta elenmez. Eleme Veri Toplama ve Hazırlama kursunun temizleme kararıydı ve ölçüsü satır sayısıydı; burada aynı değerler kümede kalır, yalnız özetin üzerindeki etkileri sayılır.
Merkez, Değişkenlik ve Biçim
# dagilim.py — MODELDIR: K03 ve K04'un kurgu olcum agi ayni tohumla uretilir. # Kume kurgudur; hicbir gercek abone, sayac ya da bolge temsil edilmez. import math TOHUM, HAM, M32 = 20260218, 1400, 0xFFFFFFFF DONEM = ["2026-01", "2026-02", "2026-03"] TARIFE = [10, 25, 40] BOLGE = [("kuzey", 0.28, 21), ("guney", 0.22, 17), ("dogu", 0.18, 26), ("bati", 0.14, 14), ("merkez", 0.18, 23)] def uretec(t: int): """Dogrusal eslemeli uretec: tohum koda yazilidir, cikti kosumdan kosuma ayni.""" x = ((t ^ (t >> 16)) * 2246822507) & M32 x = ((x ^ (x >> 13)) * 3266489909) & M32 s = [(x ^ (x >> 16)) & M32] def sonraki() -> float: s[0] = (s[0] * 1664525 + 1013904223) & M32 return s[0] / 4294967296 return sonraki def ayrik(u: float, w: list[float]) -> int: 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])] k = {"abone_no": 10001 + i, "bolge": b[0], "taban": b[2], "hane_kisi": ayrik(r(), [0.06, 0.24, 0.30, 0.24, 0.11, 0.05]), "memnuniyet": ayrik(r(), [0.08, 0.14, 0.27, 0.34, 0.17]) + 1} (_elenen if r() < 0.046 else _abone).append(k) _gecerli = {a["abone_no"] for a in _abone} OKUMA = [] 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 if k["abone_no"] not in _gecerli: r() continue OKUMA.append({"abone_no": k["abone_no"], "bolge": k["bolge"], "donem": DONEM[d], "tuketim_m3": t, "hane_kisi": k["hane_kisi"], "memnuniyet": k["memnuniyet"], "basamak": 1 if t < TARIFE[0] else 2 if t < TARIFE[1] else 3 if t < TARIFE[2] else 4}) r() def ort(v: list[float]) -> float: return sum(v) / len(v) def ss(v: list[float]) -> float: """Standart sapma; payda n-1, cunku elde bulunan bir orneklemdir.""" m = ort(v) return math.sqrt(sum((x - m) ** 2 for x in v) / (len(v) - 1)) def ortanca(v: list[float]) -> float: s = sorted(v) n = len(s) return s[n // 2] if n % 2 else (s[n // 2 - 1] + s[n // 2]) / 2 def ceyrek(v: list[float], p: float) -> float: """Dogrusal aradegerlemeli ceyrek; K03'teki tanimla aynidir.""" s = sorted(v) i = p * (len(s) - 1) a = int(i) return s[a] if a + 1 >= len(s) else s[a] + (s[a + 1] - s[a]) * (i - a) def bolgenin(ad: str) -> list[float]: return [o["tuketim_m3"] for o in OKUMA if o["bolge"] == ad] dogu, kuzey = bolgenin("dogu"), bolgenin("kuzey") print(f"kurgu kume (tohum {TOHUM}): {len(OKUMA)} satir, {len(_gecerli)} abone") print(f"dogu: {len(dogu)} satir, ortalama {ort(dogu):.3f} m3, " f"ortanca {ortanca(dogu):.2f} m3, standart sapma {ss(dogu):.3f}") print(f"ortalama - ortanca = {ort(dogu) - ortanca(dogu):.3f} m3, " f"standart sapmanin {100 * (ort(dogu) - ortanca(dogu)) / ss(dogu):.1f} yuzdesi")
kurgu kume (tohum 20260218): 3199 satir, 1329 abone dogu: 557 satir, ortalama 24.674 m3, ortanca 24.12 m3, standart sapma 9.198 ortalama - ortanca = 0.554 m3, standart sapmanin 6.0 yuzdesi
Bir sütun tek sayıyla tarif edilemez. Merkezî eğilim iki ayrı sayı verir: ortalama 24,674 m³, ortanca 24,12 m³. Değişkenlik üçüncü sayıdır: standart sapma 9,198’dir, yani okumalar merkezin çevresinde ortalama olarak dokuz metre küpten fazla dolaşır. Bu üç sayı henüz biçimi söylemez, ama biçim hakkındaki ilk işareti verir.
İşaret, ortalama ile ortancanın ayrışmasıdır. Ortanca sıralamaya bakar ve bir değerin ne kadar uzakta olduğunu umursamaz; ortalama her değerin uzaklığını taşır. İkisi arasındaki 0,554 m³’lük açıklık, uzun kuyruğun sağda olduğunu söyler: birkaç büyük okuma ortalamayı yukarı çekmiş, ortancayı yerinde bırakmıştır. Açıklık standart sapmanın yüzde 6,0’sı kadardır ve bu, çarpıklığın ölçüsü olarak doğrudan raporlanabilir.
Aynı Ortalama, Başka Dağılım
# esdeger.py — ayni ortalamayi ve ayni standart sapmayi veren ikinci bir dagilim. # Kurgudur: uc duzgun cekilisin toplami simetriktir, sonra dogunun ortalamasina # ve standart sapmasina oturtulur. Amac karsilastirmadir, benzetim degil. def simetrik(n: int, hedef_ort: float, hedef_ss: float, tohum: int) -> list[float]: r = uretec(tohum) ham = [r() + r() + r() - 1.5 for _ in range(n)] m, s = ort(ham), ss(ham) v = [round(hedef_ort + (x - m) * hedef_ss / s, 2) for x in ham] kayma = hedef_ort - ort(v) # yuvarlama ortalamayi bir miktar kaydirir return [round(x + kayma, 2) for x in v] MODEL = simetrik(len(dogu), ort(dogu), ss(dogu), TOHUM + 601) def bes_sayi(v: list[float]) -> list[float]: return [min(v), ceyrek(v, 0.25), ortanca(v), ceyrek(v, 0.75), max(v)] BAS = ["en kucuk", "C1", "ortanca", "C3", "en buyuk", "CAA", "ortalama", "carpiklik"] G = [17] + [10] * 8 y = lambda h: "".join(str(v).ljust(G[i]) if not i else str(v).rjust(G[i]) for i, v in enumerate(h)) print(y(["dagilim"] + BAS)) for ad, v in [("dogu (gozlem)", dogu), ("model (simetrik)", MODEL)]: b = bes_sayi(v) print(y([ad] + [f"{x:.2f}" for x in b] + [f"{b[3] - b[1]:.2f}", f"{ort(v):.3f}", f"{ort(v) - ortanca(v):.3f}"])) print(f"\niki dagilimin ortalamasi da {ort(dogu):.3f}, standart sapmasi da {ss(dogu):.3f}") print(f"ortalama - ortanca acikligi: gozlem {ort(dogu) - ortanca(dogu):.3f}, " f"model {ort(MODEL) - ortanca(MODEL):.3f}")
dagilim en kucuk C1 ortanca C3 en buyuk CAA ortalama carpiklik dogu (gozlem) 0.00 19.23 24.12 29.85 51.90 10.62 24.674 0.554 model (simetrik) 0.66 18.37 24.61 31.43 47.79 13.06 24.674 0.064 iki dagilimin ortalamasi da 24.674, standart sapmasi da 9.198 ortalama - ortanca acikligi: gozlem 0.554, model 0.064
İki satır aynı iki sayıyla raporlanır. Ortalama üçüncü basamağa kadar aynıdır, standart sapma da öyle. “Doğu bölgesinde ortalama tüketim 24,674 m³, standart sapma 9,198” cümlesi her ikisi için de doğrudur ve ikisini birbirinden ayırmaz.
Beş sayı özeti ayırıyor. Gözlemin en küçük değeri 0,00, modelinki 0,66’dır. Gözlemin üçüncü çeyreği 29,85, modelinki 31,43’tür. Asıl fark çeyrekler açıklığında: gözlemde 10,62, modelde 13,06. Aynı standart sapmayı veren iki dağılımdan birinin orta yarısı belirgin biçimde daha dar. Bunun anlamı şudur: gözlemin standart sapmasını büyüten şey ortadaki dağınıklık değil, uçlardaki birkaç değerdir.
Son sütun ölçüyü tek sayıya indiriyor. Çarpıklık gözlemde 0,554, modelde 0,064 — sekiz kattan fazla. Simetrik bir dağılımda ortalama ile ortancanın örtüşmesi beklenir ve model bunu yapıyor; kalan 0,064 çekilişten gelen artıktır. Gözlemde açıklık artık değildir, dağılımın kendi biçimidir.
Biçim Sayı Olarak
# aralik.py — dagilimin bicimi sayi olarak basilir: her aralikta kac deger var. # Grafik cizilmez; aralik genisligi bir karardir ve bicimi degistirir. def sayim(v: list[float], genislik: int, ust: int = 55) -> list[int]: k = [0] * (ust // genislik) for x in v: k[min(int(x // genislik), len(k) - 1)] += 1 return k GEN = 5 a5, m5 = sayim(dogu, GEN), sayim(MODEL, GEN) print(f"{'aralik':>12}{'dogu':>8}{'model':>8} dogu cubugu") for i, (x, y2) in enumerate(zip(a5, m5)): print(f"[{i * GEN:2d},{(i + 1) * GEN:2d})".rjust(12) + f"{x:8d}{y2:8d} " + "#" * round(x / 4)) a10 = sayim(dogu, 2 * GEN) print(f"\ngenislik {GEN}: ilk iki aralik {a5[0]} ve {a5[1]}; " f"genislik {2 * GEN}: ilk aralik {a10[0]}") print(f"sifir yazilmis okuma {sum(1 for x in dogu if x == 0)}, " f"[{GEN},{2 * GEN}) araligindaki gercek okuma {a5[1]}")
aralik dogu model dogu cubugu
[ 0, 5) 20 7 #####
[ 5,10) 1 32
[10,15) 35 51 #########
[15,20) 111 83 ############################
[20,25) 135 112 ##################################
[25,30) 119 98 ##############################
[30,35) 71 92 ##################
[35,40) 35 57 #########
[40,45) 16 23 ####
[45,50) 11 2 ###
[50,55) 3 0 #
genislik 5: ilk iki aralik 20 ve 1; genislik 10: ilk aralik 21
sifir yazilmis okuma 20, [5,10) araligindaki gercek okuma 1
Aralık sayımları beş sayının göremediğini gösteriyor. İlk aralıkta 20 değer, ikincisinde 1 değer var. Bu bir kuyruk değil, bir kopukluktur: sıfıra yığılmış 20 kayıt ile gerçek okuma bölgesi arasında neredeyse boş bir aralık duruyor. Sayım bunu söylüyor, çünkü sıfıra yığılan 20 kayıt sayaç okunamadığı için sıfır yazılmış satırlardır; ölçülmüş bir tüketim değil, bir kayıt biçimidir. Modelde böyle bir kopukluk yoktur: 7 ve 32 ardışık ve düzgün gider.
Aralık genişliği bir karardır ve bu kararı değiştirmek biçimi değiştirir. Genişlik 10 seçildiğinde ilk aralık 21 değer taşır; 20 ile 1 tek bir sayının içinde erir ve kopukluk tabloda kaybolur. Aynı veri, aynı yordam, iki farklı biçim. Bu yüzden aralık genişliği raporun içinde yazılır, dipnotta değil.
Aykırı Değer Elenmez, Ölçülür
# aykiri.py — cit disindaki degerler burada ELENMEZ. Veri Toplama ve Hazirlama # kursunda eleme bir temizleme karariydi; burada degerler kalir, etkisi olculur. def cit(v: list[float]) -> tuple[float, float]: q1, q3 = ceyrek(v, 0.25), ceyrek(v, 0.75) caa = q3 - q1 return q1 - 1.5 * caa, q3 + 1.5 * caa C = [9, 6, 9, 9, 10, 10, 10, 10, 8] k = lambda h: "".join(str(v).ljust(C[i]) if not i else str(v).rjust(C[i]) for i, v in enumerate(h)) print(k(["kume", "n", "alt cit", "ust cit", "alt asan", "ust asan", "ortalama", "cit ici", "fark"])) kalan = {} for ad, v in [("dogu", dogu), ("kuzey", kuzey), ("model", MODEL)]: alt, ust = cit(v) kalan[ad] = [x for x in v if alt <= x <= ust] print(k([ad, len(v), f"{alt:.2f}", f"{ust:.2f}", sum(1 for x in v if x < alt), sum(1 for x in v if x > ust), f"{ort(v):.3f}", f"{ort(kalan[ad]):.3f}", f"{ort(kalan[ad]) - ort(v):+.3f}"])) print(f"\ndogu / kuzey farki: butun satirlarla {ort(dogu) - ort(kuzey):.3f} m3, " f"cit disi elenseydi {ort(kalan['dogu']) - ort(kalan['kuzey']):.3f} m3") print(f"dogu standart sapmasi {ss(dogu):.3f} -> {ss(kalan['dogu']):.3f}, " f"ortancasi {ortanca(dogu):.2f} -> {ortanca(kalan['dogu']):.2f}")
kume n alt cit ust cit alt asan ust asan ortalama cit ici fark dogu 557 3.30 45.78 20 10 24.674 25.154 +0.480 kuzey 921 2.41 37.96 32 18 20.210 20.532 +0.321 model 557 -1.22 51.02 0 0 24.674 24.674 +0.000 dogu / kuzey farki: butun satirlarla 4.463 m3, cit disi elenseydi 4.622 m3 dogu standart sapmasi 9.198 -> 7.416, ortancasi 24.12 -> 24.22
Çit dışındaki değerler burada silinmiyor; tablo yalnız silinseydi ne olacağını sayıyor. Doğuda çit dışında 30 satır vardır ve bunların 20’si alt çitin dışındadır. Eleme ortalamayı düşürmez, 24,674’ten 25,154’e çıkarır, çünkü elenen satırların çoğu sıfır yazılmış okumalardır. Aykırı değeri “büyük değer” saymanın yanıltıcı olduğu yer burasıdır.
Aynı karar kuzeyde ortalamayı 0,321 m³ oynatır ve iki oynama aynı yöne gitmediği için bölge farkı da değişir: 4,463 m³ yerine 4,622 m³. Önceki dersin ölçtüğü fark, hiçbir yeni veri gelmeden, tek bir çit kararıyla 0,159 m³ kaymıştır. Bu, örneklemden gelen paydan ayrı ve ona eklenen bir oynamadır.
Model satırı ölçünün ne olduğunu netleştiriyor. Simetrik dağılımda çit dışında hiçbir değer yoktur ve eleme ortalamayı tam olarak yerinde bırakır. Çit dışı sayısı verinin “hatalı” olmasının değil, dağılımın biçiminin bir sonucudur; 30 sayısı doğunun kuyruklarını ölçer, kalitesini değil.
Son satır ortancanın niçin dirençli sayıldığını gösteriyor. Otuz satır çıkarıldığında standart sapma 9,198’den 7,416’ya iner, yani yüzde 19,4 düşer; ortanca 24,12’den 24,22’ye, yani 0,10 oynar. Değişkenlik ölçüsü uçlara bağlıdır, sıralama ölçüsü değildir.
Özet
- Bir sütun üç ölçüyle tarif edilir: doğu için ortalama 24,674 m³, ortanca 24,12 m³ ve standart sapma 9,198; aradaki 0,554 m³’lük açıklık biçim hakkındaki ilk işarettir.
- Aynı ortalamayı ve aynı standart sapmayı veren simetrik model dağılım, beş sayı özetinde ayrışır: çeyrekler açıklığı 10,62’ye karşı 13,06, çarpıklık 0,554’e karşı 0,064.
- Aralık sayımları beş sayının göremediğini verir: gözlemde ilk aralıkta 20, ikincisinde 1 değer bulunur ve bu kopukluk sıfır yazılmış okumalardan gelir.
- Aralık genişliği bir karardır: genişlik 10 seçildiğinde ilk aralık 21 olur ve kopukluk tabloda görünmez.
- Çit dışındaki 30 satır elenmez; eleme doğu ortalamasını 25,154’e, doğu ile kuzey arasındaki farkı 4,463’ten 4,622 m³’e taşırdı ve standart sapmayı yüzde 19,4 düşürürdü.
Sonraki Adım
Bu ders tek bir sütuna baktı ve o sütunun biçimini sayıyla yazdı. Kümedeki soruların çoğu ise tek sütunla cevaplanmaz: tüketim ile hane büyüklüğü birlikte mi artıyor, tarife basamağı ile bölge arasında bir bağ var mı, memnuniyet düzeyi tüketimle nasıl ilişkileniyor. İki sütunun birlikte incelenmesi yeni bir özet getirir — korelasyon katsayısı — ve o katsayı da tıpkı ortalama gibi tek bir sayıya sıkıştırır. Sonraki ders iki değişkenli incelemeyi ele alır: aynı katsayıyı veren iki farklı ilişki kurulur, çapraz tablo katsayının göremediğini gösterir ve sıralayıcı ölçekte niçin sıra korelasyonunun doğru ölçüt olduğu yazılır.
İlerlemeni kaydetmek ve not almak için Giriş yap
Notlarım
Not almak için giriş yapmalısın.