---
title: Örnekleme
source: 'https://academia.sh/tr/kurslar/veri-hazirlama/ornekleme'
course: 'Veri Toplama ve Hazırlama'
language: tr
updated: '2026-08-17T18:08:45+00:00'
license: 'CC BY-SA 4.0'
---

# Örnekleme

1.877 satırlık kütleden çekilen dört örneklem aynı iki soruya dört farklı cevap veriyor: kolay örnek ortalamayı 19,99 m³ ve üst tarife basamağının payını yüzde 33,0 verir, basit rastgele örnek 20,04 m³ ve yüzde 32,0, döneme göre tabakalı örnek 20,50 m³ ve yüzde 35,0, çekim birimi abone olan örnek 20,70 m³ ve yüzde 35,0; kütlenin kendi cevabı 20,61 m³ ve yüzde 35,4'tür. Kolay örneğin bölge temsil hatası 0,0 puandır ve tam da bu yüzden güven verir — aynı örneklemin dönem temsil hatası 25,4 puandır, çünkü ikinci dönemin 477 satırının tamamı ve 1.400 abonenin 1.200'ü dışarıda kalmıştır. Aynı rastgele karar on iki tohumda n=50 için 3,90 m³ genişliğinde, n=800 için 0,71 m³ genişliğinde bir aralık verir: tek bir örneğin hatası bilinemez, yayılımı ölçülür.

Dört derste veri dört yoldan geldi ve her yolda kaç satırın kaybolduğu sayıldı. Bu derslerin ortak
varsayımı kümenin tamamının toplanabilir olmasıydı: dosya okunabiliyordu, sorgu koşabiliyordu,
arayüz sonuna kadar sayfalanabiliyordu, sayfa baştan sona ayrıştırılabiliyordu. Kütle büyüdüğünde
bu varsayım düşer ve yerine bir karar gelir — bütün kayıtlar yerine bir alt küme alınır.

Örneklemenin ölçüsü, alt kümenin doğru olup olmadığı değildir; bir alt küme kütle değildir ve her
zaman farklı bir sayı verir. Ölçülen şey **temsildir**: örneklem, kütlenin hangi boyutunu ne kadar
doğru yansıtıyor ve dışarıda kalan satırlar kimler. Bu dersin dört kararı da savunulabilirdir ve
dördü de aynı soruya farklı cevap verir.

- **VT20.** Kütle kurgudur ve önceki dört dersin kümesinin aynısıdır: 1.877 okuma satırı, 1.400
  abone, 38.690,7 m³. Okuma satırı başına ortalama 20,61 m³, yani bu kursun ikinci dersinde
  hesaplanan sayının aynısı. **Modeldir.**
- **VT21.** Üreteç bu dersin kendi üretecidir ve tohumu görünürdür (20240). Aynı tohumla çıktı her
  koşumda aynıdır; karıştırma yerinde değiştirme yapmaz, kütlenin kopyası üzerinde çalışır.
- **VT22.** Tarife basamakları 10 ve 25 m³'te ayrılır ve karşılaştırma desi-m³ tamsayısı üzerinde
  yapılır; böylece sınır değerleri kayan noktalı eşitliğe hiç girmez.
- **VT23.** **Temsil hatası**, aynı boyutta örneklem payı ile kütle payı arasındaki en büyük mutlak
  farktır ve yüzde puan olarak yazılır.
- **VT24.** İki ortalamanın aynı sayılması için eşik 0,05 m³'tür, çünkü okumalar bir ondalıkla
  tutuluyor ve altındaki bir fark yalnızca yuvarlamadan gelebilir.

## Kütlenin Kendi Cevabı

```js
// kutle.mjs — orneklemenin uzerinde calisacagi kutle. MODELDIR: onceki dort
// dersin 1877 okuma satirinin aynisi, ayni tohumla uretiliyor. Tarife
// basamaklari 10 ve 25 m3'te ayrilir; karsilastirma desi-m3 tamsayisi uzerinde
// yapilir, boylece sinir degerleri kayan noktali esitlige hic girmez.
export const TOHUM = 4711;
export const uretec = (t) => { let s = t >>> 0;
  return () => { s = (Math.imul(s, 1103515245) + 12345) >>> 0; return s / 4294967296; }; };
export const BOLGE = ["kuzey", "doğu", "merkez", "güney", "batı"];
export const KUTLE = [];
const r = uretec(TOHUM);
for (let i = 0; i < 1877; i++) {          // once 1400 abonenin ilk donemi, sonra 477 ikinci
  const n = i < 1400 ? i : i - 1400, desi = 50 + Math.floor(r() * 321);
  KUTLE.push({ abone_no: 10000 + n, donem: i < 1400 ? "2024-01" : "2024-02", desi,
    bolge: BOLGE[n % 5], basamak: desi <= 100 ? "10 alti" : desi <= 250 ? "10-25" : "25 ustu" });
}
export const m3 = (k) => k.desi / 10;
export const ortalama = (kume) => kume.reduce((t, k) => t + m3(k), 0) / kume.length;
export const ustPay = (kume) =>
  100 * kume.filter((k) => k.basamak === "25 ustu").length / kume.length;
// Bir boyutun kategori paylari (yuzde).
export const pay = (kume, alan) => {
  const s = new Map();
  for (const k of kume) s.set(k[alan], (s.get(k[alan]) ?? 0) + 1);
  return new Map([...s].map(([a, n]) => [a, 100 * n / kume.length]));
};
// Temsil hatasi: ayni boyutta orneklem payi ile kutle payi arasindaki en buyuk
// mutlak fark, yuzde puan olarak.
export const hata = (kume, alan) => {
  const o = pay(kume, alan), k = pay(KUTLE, alan);
  return Math.max(...[...k.keys()].map((a) => Math.abs((o.get(a) ?? 0) - k.get(a))));
};

if (import.meta.url === `file://${process.argv[1]}`) {
  console.log(`tohum ${TOHUM}; kutle ${KUTLE.length} okuma satiri, ` +
    `${new Set(KUTLE.map((k) => k.abone_no)).size} abone, ` +
    `${KUTLE.reduce((t, k) => t + m3(k), 0).toFixed(1)} m3`);
  console.log(`kutlenin cevabi: ortalama ${ortalama(KUTLE).toFixed(2)} m3, ` +
    `ust basamagin payi yuzde ${ustPay(KUTLE).toFixed(1)}`);
  for (const alan of ["donem", "bolge", "basamak"])
    console.log(`${alan.padEnd(8)}` + [...pay(KUTLE, alan)]
      .map(([a, p]) => `${a} ${p.toFixed(1)}`).join(" | "));
}
```

```
tohum 4711; kutle 1877 okuma satiri, 1400 abone, 38690.7 m3
kutlenin cevabi: ortalama 20.61 m3, ust basamagin payi yuzde 35.4
donem   2024-01 74.6 | 2024-02 25.4
bolge   kuzey 20.0 | doğu 20.0 | merkez 20.0 | güney 20.0 | batı 20.0
basamak 10-25 46.6 | 10 alti 18.0 | 25 ustu 35.4
```

Kütlenin cevabı bilindiği için bu ders diğerlerinden ayrılır: örneklem hatası tahmin edilmez,
doğrudan ölçülür. Gerçek bir çalışmada bu satır yoktur ve doğru cevap bilinmediği için tek
denetlenebilir şey **kararın kendisidir**.

Alt üç satır kütlenin üç boyuttaki yapısıdır ve örneklemin karşılaştırılacağı ölçek budur. Dönem
boyutu dengesizdir: satırların yüzde 74,6'sı ilk dönemden gelir, çünkü 1.400 abonenin yalnız
477'sinin ikinci dönem okuması vardır. Bölge boyutu ise neredeyse tam dengelidir, beş bölgenin
payı yüzde 20 civarındadır. Bu ayrım dersin geri kalanını belirler: bir örneklem dengeli bir
boyutta hiç çabalamadan doğru görünebilir.

## Dört Örnekleme Kararı

```js
// ornekle.mjs — ayni kutleden dort ornekleme karari. Uretec bu dersin kendi
// uretecidir ve tohum gorunurdur; ayni tohumla cikti her kosumda aynidir.
// Olculen sey ornegin "dogru" olup olmadigi degil, kutleyi hangi boyutta ne
// kadar temsil ettigi ve disarida kalanin kim oldugudur.
import { KUTLE, uretec, m3, ortalama, ustPay, hata } from "./kutle.mjs";
const N = 200, TOHUM_ORNEK = 20240;

const karistir = (dizi, tohum) => {
  const g = uretec(tohum), a = [...dizi];
  for (let i = a.length - 1; i > 0; i--) {
    const j = Math.floor(g() * (i + 1)); [a[i], a[j]] = [a[j], a[i]];
  }
  return a;
};
// O1: listenin ilk N satiri. O2: basit rastgele ornek. O3: doneme gore
// orantili tabakali ornek — her tabakadan kutledeki payi kadar satir alinir.
const O1 = (n) => KUTLE.slice(0, n);
const O2 = (n, tohum = TOHUM_ORNEK) => karistir(KUTLE, tohum).slice(0, n);
const O3 = (n, tohum = TOHUM_ORNEK) => ["2024-01", "2024-02"].flatMap((d) => {
  const t = KUTLE.filter((k) => k.donem === d);
  return karistir(t, tohum + d.length).slice(0, Math.round(n * t.length / KUTLE.length));
});

// O4: cekim birimi satir degil abonedir. N abone secilir ve secilen abonelerin
// butun satirlari alinir; cikan satir sayisini karar degil, abone basina satir
// sayisi belirler.
const O4 = (n, tohum = TOHUM_ORNEK) => {
  const ic = new Set(karistir([...new Set(KUTLE.map((k) => k.abone_no))], tohum).slice(0, n));
  return KUTLE.filter((k) => ic.has(k.abone_no));
};

const ESIK = 0.05;                    // iki ortalamanin ayni sayilmasi icin esik
const y = (h) => h.map((v, j) => (j ? String(v).padStart([0, 7, 7, 10, 9, 8, 7, 7, 9][j])
  : String(v).padEnd(21))).join("");
console.log(`kutle: ortalama ${ortalama(KUTLE).toFixed(2)} m3, ust basamak yuzde ` +
  `${ustPay(KUTLE).toFixed(1)}; son uc sutun temsil hatasi (yuzde puan)`);
console.log(y(["ornekleme karari", "giren", "cikan", "ortalama", "fark m3", "ust %",
  "donem", "bolge", "basamak"]));
const sonuc = {};
for (const [ad, f] of [["O1 kolay (ilk 200)", O1], ["O2 basit rastgele", O2],
  ["O3 tabakali (donem)", O3], ["O4 birim abone", O4]]) {
  const o = sonuc[ad] = f(N);
  console.log(y([ad, KUTLE.length, o.length, ortalama(o).toFixed(2),
    (ortalama(o) - ortalama(KUTLE)).toFixed(2), ustPay(o).toFixed(1),
    hata(o, "donem").toFixed(1), hata(o, "bolge").toFixed(1), hata(o, "basamak").toFixed(1)]));
}

// Ayni karar, on iki tohum: tek bir ornegin hatasi bilinemez, yayilimi olculur.
const y2 = (h) => h.map((v, j) => (j ? String(v).padStart([0, 8, 11, 11, 9, 14][j])
  : String(v).padEnd(12))).join("");
console.log(`\nO2, on iki tohum (${TOHUM_ORNEK}-${TOHUM_ORNEK + 11})`);
console.log(y2(["orneklem", "tohum", "en kucuk", "en buyuk", "aralik", "ust % aralik"]));
for (const n of [50, 200, 800]) {
  const t = [], u = [];
  for (let i = 0; i < 12; i++) { const o = O2(n, TOHUM_ORNEK + i);
    t.push(ortalama(o)); u.push(ustPay(o)); }
  console.log(y2([`n = ${n}`, 12, Math.min(...t).toFixed(2), Math.max(...t).toFixed(2),
    (Math.max(...t) - Math.min(...t)).toFixed(2),
    (Math.max(...u) - Math.min(...u)).toFixed(1)]));
}

const o1 = sonuc["O1 kolay (ilk 200)"], o3 = sonuc["O3 tabakali (donem)"];
const iciAbone = new Set(o1.map((k) => k.abone_no));
console.log(`\nO1'in disinda ${KUTLE.length - o1.length} satir kaldi: ikinci donemin ` +
  `${KUTLE.filter((k) => k.donem === "2024-02").length} satirinin tamami ve kutledeki ` +
  `${new Set(KUTLE.map((k) => k.abone_no)).size} abonenin ` +
  `${new Set(KUTLE.map((k) => k.abone_no)).size - iciAbone.size} tanesi`);
console.log(`O1'in ortalamasi kutleden ${Math.abs(ortalama(o1) - ortalama(KUTLE)).toFixed(2)} ` +
  `m3 ayrisiyor, esik ${ESIK} m3'un ` +
  `${Math.round(Math.abs(ortalama(o1) - ortalama(KUTLE)) / ESIK)} kati; ama bolge temsil ` +
  `hatasi ${hata(o1, "bolge").toFixed(1)} puan, yani ornek bir boyutta kusursuz gorunuyor`);
console.log(`O3 donem boyutunu ${hata(o3, "donem").toFixed(1)} puana indiriyor, bolge ` +
  `boyutunda ise hatasi ${hata(o3, "bolge").toFixed(1)} puan: tabakalama yalnizca ` +
  `tabakalandigi boyutu garanti eder`);
const o4 = sonuc["O4 birim abone"];
console.log(`O4 ${N} abone secti ama ${o4.length} satir cikardi: secilen abonelerin ` +
  `${o4.length - N} tanesinin ikinci donem okumasi da var. Cekim birimi abone oldugu icin ` +
  `abone basina ortalama ${(o4.reduce((s, k) => s + m3(k), 0) / N).toFixed(2)} m3 dogrudan ` +
  `okunabilir; kutlenin abone basina ortalamasi ` +
  `${(KUTLE.reduce((s, k) => s + m3(k), 0) / new Set(KUTLE.map((k) => k.abone_no)).size)
    .toFixed(2)} m3`);
```

```
kutle: ortalama 20.61 m3, ust basamak yuzde 35.4; son uc sutun temsil hatasi (yuzde puan)
ornekleme karari       giren  cikan  ortalama  fark m3   ust %  donem  bolge  basamak
O1 kolay (ilk 200)      1877    200     19.99    -0.63    33.0   25.4    0.0      3.5
O2 basit rastgele       1877    200     20.04    -0.58    32.0    1.1    2.5      3.4
O3 tabakali (donem)     1877    200     20.50    -0.11    35.0    0.1    2.0      0.5
O4 birim abone          1877    274     20.70     0.09    35.0    1.6    3.7      0.5

O2, on iki tohum (20240-20251)
orneklem       tohum   en kucuk   en buyuk   aralik  ust % aralik
n = 50            12      18.41      22.32     3.90          22.0
n = 200           12      19.26      21.55     2.29          11.5
n = 800           12      20.33      21.04     0.71           4.3

O1'in disinda 1677 satir kaldi: ikinci donemin 477 satirinin tamami ve kutledeki 1400 abonenin 1200 tanesi
O1'in ortalamasi kutleden 0.63 m3 ayrisiyor, esik 0.05 m3'un 13 kati; ama bolge temsil hatasi 0.0 puan, yani ornek bir boyutta kusursuz gorunuyor
O3 donem boyutunu 0.1 puana indiriyor, bolge boyutunda ise hatasi 2.0 puan: tabakalama yalnizca tabakalandigi boyutu garanti eder
O4 200 abone secti ama 274 satir cikardi: secilen abonelerin 74 tanesinin ikinci donem okumasi da var. Cekim birimi abone oldugu icin abone basina ortalama 28.36 m3 dogrudan okunabilir; kutlenin abone basina ortalamasi 27.64 m3
```

Dört karar da aynı 1.877 satırdan çekildi ve dördü de aynı iki soruya farklı cevap verdi. Ortalama
19,99 ile 20,70 m³ arasında, üst basamağın payı yüzde 32,0 ile 35,0 arasında değişiyor. Hiçbir
karar hesap hatası yapmadı; dördü de kendi kümesinin doğru ortalamasını verdi.

O1 dersin tuzağıdır. Bölge temsil hatası **0,0 puandır** — beş bölge örneklemde kütledeki payla
birebir aynı orandadır. Liste abone numarasına göre sıralı olduğu ve bölge de abone numarasından
türediği için ilk 200 satır bu boyutta kusursuz çıkar. Aynı örneklemin dönem temsil hatası ise
**25,4 puandır**: örneklemin tamamı ilk dönemdendir, ikinci dönemin **477 satırının tamamı** ve
1.400 abonenin **1.200'ü** dışarıda kalmıştır. Bir örneklemin bir boyutta kusursuz görünmesi,
başka boyutlarda da doğru olduğunu göstermez ve dengeli boyutlar bu yanılgıyı besler.

O2 ile O1'in ortalama hataları birbirine yakın: 0,58 ve 0,63 m³, ikisi de eşiğin on katından
büyük. Aradaki fark hatanın büyüklüğü değil, **denetlenebilirliğidir**. Alt tablo O2'nin hatasını
bir yayılım olarak veriyor: aynı karar on iki tohumda n=50 için 18,41 ile 22,32 m³ arasında,
n=200 için 19,26 ile 21,55 arasında, n=800 için 20,33 ile 21,04 arasında değer üretiyor. Aralık
3,90'dan 0,71 m³'e iniyor ve üst basamağın payındaki aralık 22,0 puandan 4,3 puana düşüyor.
Rastgele bir kararın hatası tek bir örnekte bilinemez ama yayılımı ölçülebilir ve örneklem
büyütülerek daraltılabilir. O1'in hatası ise tohuma bağlı değildir; listenin sırasına bağlıdır,
tekrar denenerek daraltılamaz ve bir aralıkla ifade edilemez.

O3 kütlenin dengesiz olduğu boyutu düzeltiyor. Dönem temsil hatası 25,4 puandan **0,1 puana**
iniyor, ortalama hatası 0,11 m³'e, üst basamağın payı yüzde 35,0'e — kütlenin yüzde 35,4'üne en
yakın değer. Ama aynı örneklemin bölge temsil hatası **2,0 puandır**, yani O1'inkinden büyüktür.
Tabakalama bir kalite mührü değil, hedefli bir garantidir: yalnızca tabakalandığı boyutu güvenceye
alır, geri kalan boyutları rastgeleliğe bırakır. Hangi boyutta tabakalanacağı, örneklemin
cevaplayacağı sorunun hangi kırılımda okunacağına bakar.

O4 çekim biriminin kendisini değiştiriyor ve tablodaki tek düzensiz satırı üretiyor: 200 abone
seçildi ama küme **274 satır** çıktı, çünkü seçilen abonelerin 74'ünün ikinci dönem okuması da
var. Satır sayısını karar değil, abone başına satır sayısı belirledi. Buna karşılık bu örneklem
abone başına ortalamayı doğrudan verir — 28,36 m³, kütlenin 27,64 m³'üne karşılık. Bu kursun
ikinci dersinde satırın birimi bir sorgu sorunuydu; burada bir örnekleme sorunudur ve cevabı
aynıdır: **çekim birimi, raporun satırıyla aynı olmalıdır.** Satır düzeyinde çekilen bir örneklem,
iki okuması olan aboneye iki kez seçilme şansı verir ve abone başına bir soruyu sessizce
ağırlıklandırır.

## Özet

- Örneklemenin ölçüsü alt kümenin doğruluğu değil temsildir: örneklem payı ile kütle payı
  arasındaki en büyük fark, boyut boyut yazılır.
- Aynı kütleden çekilen dört örneklem ortalamayı 19,99, 20,04, 20,50 ve 20,70 m³ verir; kütlenin
  cevabı 20,61 m³'tür ve dört kararın hiçbiri hesap hatası yapmamıştır.
- Kolay örnek bölge boyutunda 0,0 puan hata verir ve tam da bu yüzden güven verir; aynı örneklemin
  dönem hatası 25,4 puandır, çünkü ikinci dönemin 477 satırının tamamı ve 1.400 abonenin 1.200'ü
  dışarıda kalmıştır.
- Rastgele bir kararın hatası tek örnekte bilinmez, yayılımı ölçülür: on iki tohumda aralık n=50
  için 3,90 m³, n=800 için 0,71 m³'tür. Kolay örneğin hatası bu şekilde daraltılamaz.
- Tabakalama yalnızca tabakalandığı boyutu garanti eder: dönem hatası 0,1 puana inerken bölge
  hatası 2,0 puanda kalır.
- Çekim birimi raporun satırıyla aynı olmalıdır: 200 abonelik örneklem 274 satır çıkarır ve abone
  başına ortalamayı doğrudan verir, satır düzeyinde çekilen örneklem ise aynı soruyu sessizce
  ağırlıklandırır.

## Sonraki Adım

Beş ders boyunca tek bir hesap tutuldu. Dosya 2.076 fiziksel satır verdi ve bir ayrıştırma kararı
142 satırı sessizce düşürdü; sorgu 1.877 satır döndürdü ve bir birleştirme 766 satırı düşürüp 669
satırı çoğalttı; arayüz dar bir kapsamla 477 satırı hiç vermedi ve sayfalama 35 kaydı atlayıp 35
kaydı iki kez getirdi; yayın sayfası yapısı değişince 1.877 satırın tamamını bir sürümde düşürdü,
başka bir sürümde tamamını yanlış alandan okuttu. Bu dersin 1.677 satırı ise bir kayıp değil,
**yazılmış bir karardır** ve aradaki fark kursun kuralıdır: kaybını yazamadığın temizlik bir
temizlik değildir.

Ama beş dersin hepsi satırları **dışarıdan** saydı. Kaç satır geldi, kaç satır düştü, kaç satır iki
kez geldi — hepsi kayıt sayısı üzerinden okundu. Gelen satırların **içi** hiç açılmadı: bir alanın
boş olup olmadığına, aynı abonenin iki farklı yazımla iki kez geçip geçmediğine, bir tarihin
metinden sayıya dönüşürken bozulup bozulmadığına hiç bakılmadı. Sonraki konu satırın içine girer
ve aynı hesabı bu kez alan düzeyinde tutar: eksik değer silindiğinde hangi grup orantısız elenir,
benzerlik eşiği hangi kayıtları yanlış birleştirir, sessiz bir tip dönüşümü kaç kaydı bozar.
