---
title: 'Nicel ve Nitel Verinin Birleştirilmesi'
source: 'https://academia.sh/tr/kurslar/kullanici-deneyimi/nicel-ve-nitel-verinin-birlestirilmesi'
course: 'Kullanıcı Deneyimi ve Davranış Tasarımı'
language: tr
updated: '2026-08-17T18:09:39+00:00'
license: 'CC BY-SA 4.0'
---

# Nicel ve Nitel Verinin Birleştirilmesi

İki kaynağın huni adımı ekseninde birleştirilmesi, sıralamalar örtüşmediğinde ortaya çıkan sorunun daraltılması, kapsamın raporlanması ve nitel oranın güven aralığıyla okunması.

Önceki ders bir farkın gerçek olup olmadığını söylemeyi öğretti; farkın niçin olduğunu
söylemedi. Ödünç formundaki terk oranı yüzde elli dördün üzerindeyse, kullanıcıların o
ekranda **ne yaptığı** sayıda görünmez. Tersi de doğrudur: on iki oturumluk bir gözlem
çalışmasında beş katılımcının aynı yerde takılması bir sorunun varlığını gösterir ama o
sorunun kaç kişiyi etkilediğini söylemez.

Bu ders iki kaynağı aynı eksende buluşturur. Eksen, huni adımıdır: nicel kayıt her adımda
kaç oturumun düştüğünü, nitel kayıt aynı adımda hangi sorunun kaç katılımcıda görüldüğünü
bildirir. Buluşma noktası olmadan iki kaynak yan yana konamaz; adım eşleşmesi bu dersin
ilk kuralıdır.

## İki Kaydın Aynı Eksende Toplanması

Nicel taraf huni adımlarının giren ve tamamlayan sayılarından oluşur. Nitel taraf gözlem
oturumlarında kodlanmış olaylardır: her kayıt bir katılımcının bir adımda yaşadığı bir
sorunu bildirir. Kodlama işi Kullanıcı Araştırması Yöntemleri dersinde kurulmuştu; burada
kodların **hangi adıma** iliştirildiği önem kazanır.

İki kaydın ortak alanı adımdır, kullanıcı değil. Gözlem oturumundaki katılımcı ile alan
verisindeki oturum aynı kişi değildir ve olamaz; bu yüzden birleştirme kişi düzeyinde değil
adım düzeyinde yapılır. Aşağıdaki hesap bu birleştirmeyi kurar ve iki kaynağın sıralamasını
karşılaştırır.

```js
// karma.mjs — ayni adimda nicel terk orani ile nitel gozlem kodlarinin yan yana konmasi

// 1. Nicel kaynak: huni adimlari ve adima giren / adimi tamamlayan oturum sayilari.
const HUNI = [
  { adim: "arama-sonucu", giren: 4820, tamamlayan: 3140 },
  { adim: "kayit-ayrintisi", giren: 3140, tamamlayan: 2610 },
  { adim: "odunc-formu", giren: 2610, tamamlayan: 1180 },
  { adim: "kimlik-dogrulama", giren: 1180, tamamlayan: 1044 },
  { adim: "onay", giren: 1044, tamamlayan: 1002 },
];

// 2. Nitel kaynak: 12 gozlem oturumunda kodlanmis olaylar.
// Her kayit bir katilimcinin bir adimda yasadigi bir sorunu bildirir.
const KODLAR = [
  { oturum: "K01", adim: "odunc-formu", kod: "sube-secimi-anlasilmadi" },
  { oturum: "K02", adim: "odunc-formu", kod: "sube-secimi-anlasilmadi" },
  { oturum: "K03", adim: "odunc-formu", kod: "sube-secimi-anlasilmadi" },
  { oturum: "K05", adim: "odunc-formu", kod: "sube-secimi-anlasilmadi" },
  { oturum: "K07", adim: "odunc-formu", kod: "sube-secimi-anlasilmadi" },
  { oturum: "K02", adim: "odunc-formu", kod: "tarih-bicimi-reddedildi" },
  { oturum: "K06", adim: "odunc-formu", kod: "tarih-bicimi-reddedildi" },
  { oturum: "K09", adim: "odunc-formu", kod: "tarih-bicimi-reddedildi" },
  { oturum: "K04", adim: "arama-sonucu", kod: "suzgec-sonucu-bosaldi" },
  { oturum: "K08", adim: "arama-sonucu", kod: "suzgec-sonucu-bosaldi" },
  { oturum: "K10", adim: "arama-sonucu", kod: "siralama-beklenmedik" },
  { oturum: "K11", adim: "kayit-ayrintisi", kod: "raf-kodu-anlasilmadi" },
  { oturum: "K12", adim: "kimlik-dogrulama", kod: "kod-gelmedi-beklendi" },
];
const OTURUM_SAYISI = 12;

// 3. Nicel taraf: adim basina terk orani ve mutlak kayip.
const nicel = HUNI.map((h) => ({
  adim: h.adim,
  terkOrani: (h.giren - h.tamamlayan) / h.giren,
  kayip: h.giren - h.tamamlayan,
}));

console.log("adim                  giren  tamamlayan   terk orani   mutlak kayip");
for (const h of HUNI) {
  const n = nicel.find((x) => x.adim === h.adim);
  console.log(
    h.adim.padEnd(20) + String(h.giren).padStart(7) + String(h.tamamlayan).padStart(12) +
      (100 * n.terkOrani).toFixed(1).padStart(12) + "%" + String(n.kayip).padStart(14)
  );
}

// 4. Nitel taraf: adim basina kod cesitliligi ve kodun gorüldügü katilimci sayisi.
const kodOzeti = new Map();
for (const k of KODLAR) {
  const anahtar = k.adim + "|" + k.kod;
  if (!kodOzeti.has(anahtar)) kodOzeti.set(anahtar, new Set());
  kodOzeti.get(anahtar).add(k.oturum);
}
console.log("\nadim                  kod                        katilimci  orani");
for (const [anahtar, oturumlar] of [...kodOzeti].sort((a, b) => b[1].size - a[1].size)) {
  const [adim, kod] = anahtar.split("|");
  console.log(
    adim.padEnd(20) + kod.padEnd(28) + String(oturumlar.size).padStart(6) +
      ("  " + (100 * oturumlar.size / OTURUM_SAYISI).toFixed(0) + "%").padStart(9)
  );
}

// 5. Iki kaynagin siralamasi yan yana.
const nicelSira = [...nicel].sort((a, b) => b.kayip - a.kayip).map((x) => x.adim);
const nitelSayim = new Map(HUNI.map((h) => [h.adim, 0]));
for (const k of KODLAR) nitelSayim.set(k.adim, nitelSayim.get(k.adim) + 1);
const nitelSira = [...nitelSayim].sort((a, b) => b[1] - a[1]).map(([adim]) => adim);

console.log("\nadim                  nicel sira  nitel sira  fark  gozlem sayisi");
let uyusan = 0;
for (const h of HUNI) {
  const n = nicelSira.indexOf(h.adim) + 1;
  const q = nitelSira.indexOf(h.adim) + 1;
  if (n === q) uyusan++;
  console.log(
    h.adim.padEnd(20) + String(n).padStart(10) + String(q).padStart(12) +
      String(n - q).padStart(6) + String(nitelSayim.get(h.adim)).padStart(15)
  );
}
console.log(`ayni siraya dusen adim: ${uyusan} / ${HUNI.length}`);

// 6. Kapsam: en buyuk kaybin ne kadari kodlanmis bir nedene baglanabiliyor?
const enBuyuk = [...nicel].sort((a, b) => b.kayip - a.kayip)[0];
const oAdimKodlari = [...kodOzeti].filter(([a]) => a.startsWith(enBuyuk.adim + "|"));
const kodlananKatilimci = new Set(KODLAR.filter((k) => k.adim === enBuyuk.adim).map((k) => k.oturum));
console.log(
  `\nen buyuk kayip: ${enBuyuk.adim} (${enBuyuk.kayip} oturum, %${(100 * enBuyuk.terkOrani).toFixed(1)})`
);
console.log(`  o adimda kodlanmis ayri neden: ${oAdimKodlari.length}`);
console.log(`  sorunu yasayan katilimci: ${kodlananKatilimci.size} / ${OTURUM_SAYISI}`);

// 7. Iki kaynagin ayristigi adimlar: siralamalar ortusmuyorsa neden?
console.log("\niki kaynagin ayristigi adimlar");
for (const h of HUNI) {
  const n = nicelSira.indexOf(h.adim) + 1, q = nitelSira.indexOf(h.adim) + 1;
  if (n === q) continue;
  const olcum = nicel.find((x) => x.adim === h.adim);
  const katilimci = new Set(KODLAR.filter((k) => k.adim === h.adim).map((k) => k.oturum)).size;
  console.log(
    `  ${h.adim.padEnd(18)} nicel ${n}. / nitel ${q}.  ` +
      `terk %${(100 * olcum.terkOrani).toFixed(1)}, kayip ${olcum.kayip}, ` +
      `gozlemde ${katilimci}/${OTURUM_SAYISI} katilimci`
  );
}

// 8. Nitel sayidan oran uretmenin siniri: 12 oturumluk kumede guven araligi.
function oranAraligi(basari, n) {
  const z = 1.96, p = basari / n;
  const payda = 1 + (z * z) / n;
  const merkez = (p + (z * z) / (2 * n)) / payda;
  const yayilim = (z * Math.sqrt((p * (1 - p)) / n + (z * z) / (4 * n * n))) / payda;
  return [merkez - yayilim, merkez + yayilim];
}
console.log("\nnitel orani nicel gibi okumanin siniri (12 oturum)");
for (const [anahtar, oturumlar] of kodOzeti) {
  if (oturumlar.size < 3) continue;
  const [alt, ust] = oranAraligi(oturumlar.size, OTURUM_SAYISI);
  const [adim, kod] = anahtar.split("|");
  console.log(
    `  ${kod.padEnd(28)} ${oturumlar.size}/12 = %${(100 * oturumlar.size / OTURUM_SAYISI).toFixed(0)}` +
      `   %95 aralik: %${(100 * alt).toFixed(0)} - %${(100 * ust).toFixed(0)}`
  );
}
```

```
adim                  giren  tamamlayan   terk orani   mutlak kayip
arama-sonucu           4820        3140        34.9%          1680
kayit-ayrintisi        3140        2610        16.9%           530
odunc-formu            2610        1180        54.8%          1430
kimlik-dogrulama       1180        1044        11.5%           136
onay                   1044        1002         4.0%            42

adim                  kod                        katilimci  orani
odunc-formu         sube-secimi-anlasilmadi          5      42%
odunc-formu         tarih-bicimi-reddedildi          3      25%
arama-sonucu        suzgec-sonucu-bosaldi            2      17%
arama-sonucu        siralama-beklenmedik             1       8%
kayit-ayrintisi     raf-kodu-anlasilmadi             1       8%
kimlik-dogrulama    kod-gelmedi-beklendi             1       8%

adim                  nicel sira  nitel sira  fark  gozlem sayisi
arama-sonucu                 1           2    -1              3
kayit-ayrintisi              3           3     0              1
odunc-formu                  2           1     1              8
kimlik-dogrulama             4           4     0              1
onay                         5           5     0              0
ayni siraya dusen adim: 3 / 5

en buyuk kayip: arama-sonucu (1680 oturum, %34.9)
  o adimda kodlanmis ayri neden: 2
  sorunu yasayan katilimci: 3 / 12

iki kaynagin ayristigi adimlar
  arama-sonucu       nicel 1. / nitel 2.  terk %34.9, kayip 1680, gozlemde 3/12 katilimci
  odunc-formu        nicel 2. / nitel 1.  terk %54.8, kayip 1430, gozlemde 7/12 katilimci

nitel orani nicel gibi okumanin siniri (12 oturum)
  sube-secimi-anlasilmadi      5/12 = %42   %95 aralik: %19 - %68
  tarih-bicimi-reddedildi      3/12 = %25   %95 aralik: %9 - %53
```

## Sıralamalar Örtüşmediğinde

Çıktının üçüncü bölümü iki sıralamayı yan yana koyuyor: beş adımın üçü aynı sıraya düşüyor,
ikisi yer değiştiriyor. Bu iki adım dersin asıl konusudur.

Arama sonucu ekranı **mutlak kayıpta birinci**: bin altı yüz seksen oturum orada düşüyor.
Ama gözlemde yalnızca üç katılımcı orada bir sorun yaşadı. Ödünç formu ise mutlak kayıpta
ikinci, gözlemde birinci: yedi katılımcı orada takıldı ve iki ayrı neden kodlandı.

Bu ayrışmanın iki açıklaması vardır ve ikisi de veriyle sınanabilir. Birincisi, arama
sonucu ekranındaki düşüşün bir **sorun olmayabileceğidir**: tarama yapan bir kullanıcının
sonuç listesinden çıkması beklenen bir davranıştır, huni bunu terk olarak sayar ama görev
başarısızlığı değildir. İkincisi, gözlem çalışmasının o adımda **görev tanımı gereği**
kısa kalmasıdır: katılımcıya aranacak kitap verildiyse arama zorluğu hiç oluşmaz.

Hangi açıklamanın doğru olduğuna bu tablo karar veremez. Verebildiği şey soruyu
daraltmaktır: arama sonucu ekranı için görev tanımı serbest bırakılmış yeni bir gözlem
turu gerekir. Nicel ve nitel verinin birleştirilmesi bir sonuç üretmez; **bir sonraki
çalışmanın konusunu** üretir.

## Kapsam: Kaybın Ne Kadarı Açıklanabiliyor

Dördüncü bölüm en büyük kaybı ve o adımda kodlanmış nedenleri sayıyor. Arama sonucunda iki
ayrı neden kodlanmış ve bunlar on iki katılımcının üçünde görülmüş. Bu sayı bir kapsam
göstergesidir: kaybın büyüklüğü ile onu açıklayan gözlemin gücü arasındaki mesafeyi ölçer.

Mesafe büyükse iki yanlış karar yolu açılır. Birincisi, az sayıda gözlemden çıkan nedeni
bütün kayba genellemektir — üç katılımcının süzgeç sorunu, bin altı yüz seksen oturumun
nedeni sayılır. İkincisi, gözlemi hiç kullanmayıp yalnız sayıya bakmaktır; o zaman da
düzeltilecek şey belirsiz kalır. Doğru okuma, kapsamın kendisini raporlamaktır: "bu adımdaki
kaybın açıklanabilen bölümü üç katılımcının bildirdiği iki nedenle sınırlıdır."

## Nitel Oranı Nicel Gibi Okumak

Son bölüm sık yapılan bir hatayı sayıyla gösteriyor. On iki oturumda beş katılımcının
yaşadığı sorun için "kullanıcıların yüzde kırk ikisi" demek, örneklem büyüklüğünü gizler.
Aynı gözlemin yüzde doksan beş güven aralığı yüzde on dokuz ile yüzde altmış sekiz
arasındadır. Bu genişlikte bir aralık, bir tasarım kararını gerekçelendirebilir ama bir
öncelik sırasını tek başına belirleyemez.

Kural şudur: nitel çalışma **sorunun varlığını ve biçimini** bildirir, yaygınlığını
bildirmez. Yaygınlık sorusu alan verisiyle ya da sorunun bir ölçüte dönüştürüldüğü bir
ölçümle yanıtlanır. Beş katılımcının şube seçimini anlamaması, o alanın yeniden
tasarlanması için yeterli gerekçedir; "kullanıcıların yüzde kırk ikisi" cümlesi ise
yazılmamalıdır.

## İki Kaynak Birbirini Yalanladığında

Bir adımda terk oranı düşük ama gözlemde birden çok sorun kodlanmışsa, ya sorun görevi
tamamlamayı engellemiyordur ya da alan verisi o adımı yanlış ölçüyordur. Tersi durumda —
terk yüksek, gözlem yok — ya gözlem görevleri o yolu hiç kullanmıyordur ya da düşüş bir
başarısızlık değildir.

Her iki durumda da izlenecek sıra aynıdır: önce ölçümün kendisi denetlenir (adım tanımı,
olay kaydının tetiklendiği an, oturum tanımı), sonra görev tanımı denetlenir, en son
tasarım değiştirilir. Ölçüm hatası düzeltilmeden yapılan tasarım değişikliği, sonucu
yorumlanamaz hâle getirir.

## Özet

- Nicel ve nitel kayıtlar kişi düzeyinde değil **adım düzeyinde** birleştirilir; gözlem
  katılımcısıyla alan verisindeki oturum aynı kişi değildir.
- İki kaynağın sıralaması örtüşmediğinde tablo bir sonuç değil bir soru üretir: beş adımın
  ikisi yer değiştiriyor ve her ikisinin de veriyle sınanabilir iki açıklaması var.
- Kapsam raporlanır: en büyük kaybı açıklayan gözlem on iki katılımcının üçünden geliyor;
  bu mesafe hem aşırı genellemeyi hem de gözlemi yok saymayı engeller.
- Nitel çalışma sorunun varlığını ve biçimini bildirir, yaygınlığını bildirmez: 5/12
  gözlemin güven aralığı yüzde on dokuz ile altmış sekiz arasındadır.
- İki kaynak çeliştiğinde sıra ölçümü denetlemek, görev tanımını denetlemek ve en son
  tasarımı değiştirmektir.

## Kurs Kapanışı

Bu kurs kullanıcıyı tasarımın girdisi hâline getirmenin zincirini kurdu. Araştırma ve
Tanımlama konusu yöntemin seçimini katılımcı onayı ve veri sınırlarıyla birlikte ele aldı,
profilleri gerçek veriye bağladı ve problem tanımını çözümden önce yazmayı kural yaptı.
Bilgi Mimarisi ve Akış konusu yapıyı içerikten türetti, gezinme modellerini derinlik ve
genişlik ödünleşimiyle hesapladı ve kullanılabilirlik testini küçük örneklemin ne
söyleyebildiği sınırıyla kurdu. Davranış Tasarımı konusu kararın nasıl verildiğini
modelledi ve her mekanizmayı tek bir ölçüte bağladı: kullanıcı bilseydi de aynı seçimi
yapacaksa karar meşrudur, kararın gücü kullanıcının bilgisizliğinden geliyorsa karanlık
kalıptır. Ölçme konusu ise bu kararların sonucunu görev başarımı, süre ve hata oranıyla
raporlamayı, huniyi okumayı, deneyi doğru kurmayı ve bu dersteki gibi iki kaynağı
birleştirmeyi öğretti.

Buraya kadar her karar tek tek doğrulandı. Bir sonraki soru ölçeğe aittir: aynı kararların
onlarca ekranda, birden çok ekipte ve zaman içinde tutarlı kalması nasıl sağlanır?
Bir sonraki kurs, **Tasarım Sistemleri**, bu soruyu ele alır. Tasarım dilini belirteçlere
çevirir, bileşen kataloğunu belge ve sürüm disipliniyle yönetir, sistemin benimsenmesini
ölçer ve yönetişimini kurar. Bu kursta verilen kararlar orada birer sözleşmeye dönüşür.
