Ders 21 / 24
Deneyim Ölçütleri
Görev başarımının güven aralığıyla birlikte raporlanması, süre dağılımının çarpıklığı nedeniyle aritmetik ortalamanın yanıltması ve üç ölçütten ağırlıklı bileşik ölçüt üretilmesi.
İçindekiler
Davranış Tasarımı konusu boyunca ölçütü uygulayabilmek için sürekli bir şeye ihtiyaç duyuldu: kullanıcının bilgili tercihini, gerçek görev süresini, yararlı ziyaret oranını bilmeye. Bunların hiçbiri tahminle elde edilmez.
Bu konu ölçmeye ayrılmıştır ve en temel soruyla başlar: bir arayüzün iyi olduğu nasıl gösterilir? Kullanılabilirlik testinden çıkan ham kayıt üç sütun taşır — görev tamamlandı mı, ne kadar sürdü, kaç hata yapıldı. Bu ders o üç sütunun nasıl okunduğunu ve ne zaman yanılttığını ele alır.
Üç Temel Ölçüt
Görev başarımı (task success), görevi tamamlayan katılımcı oranıdır. Tanımın işe yaraması için “tamamlandı”nın önceden yazılmış olması gerekir. Katalog arayüzünde görev “belirli bir cildi bulup ödünç almak” ise başarı ölçütü, doğru cildin ödünç kaydına girmesidir; yanlış cildi ödünç alan katılımcı görevi tamamlamamıştır.
Görev süresi (time on task), göreve başlama ile bitirme arasındaki süredir. Başarısız oturumların süresi başarılı oturumlarınkiyle aynı havuzda toplanmaz: başarısız oturum zaman sınırında kesilmiştir ve gerçek süresi bilinmez.
Hata oranı (error rate), görev boyunca yapılan hatalı eylemlerin sayısıdır. Hata, görevden uzaklaştıran her eylemdir: yanlış süzgeci uygulamak, yanlış kaydı açmak, geri dönmek zorunda kalmak.
Aşağıdaki hesap on dört oturumluk bir kaydı bu üç ölçütle işliyor.
// olcutler.mjs — gorev basarimi, sure ve hata oranindan bilesik olcut // 14 oturumun ham kaydi: gorev tamamlandi mi, sure (sn), hata sayisi. // Gorev: katalogda belirli bir cildi bulup odunc almak. const OTURUMLAR = [ ["K01", true, 42, 0], ["K02", true, 58, 1], ["K03", false, 180, 3], ["K04", true, 37, 0], ["K05", true, 91, 2], ["K06", true, 46, 0], ["K07", false, 180, 4], ["K08", true, 63, 1], ["K09", true, 39, 0], ["K10", true, 154, 2], ["K11", true, 51, 1], ["K12", false, 180, 2], ["K13", true, 44, 0], ["K14", true, 72, 1], ]; const n = OTURUMLAR.length; const basarili = OTURUMLAR.filter(([, b]) => b); const basariSayisi = basarili.length; // ---- 1) Gorev basarimi ve Wilson guven araligi ---- function wilson(k, N, z = 1.96) { const p = k / N, d = 1 + z * z / N; const merkez = (p + z * z / (2 * N)) / d; const yari = (z * Math.sqrt(p * (1 - p) / N + z * z / (4 * N * N))) / d; return [merkez - yari, merkez + yari]; } const [alt, ust] = wilson(basariSayisi, n); console.log(`gorev basarimi: ${basariSayisi}/${n} = ${(basariSayisi / n * 100).toFixed(1)} %`); console.log(`Wilson %95 guven araligi: [${(alt * 100).toFixed(1)} %, ${(ust * 100).toFixed(1)} %]`); // ---- 2) Sure: aritmetik ortalama ile geometrik ortalama ---- const sureler = basarili.map(([, , s]) => s); const aritmetik = sureler.reduce((a, b) => a + b, 0) / sureler.length; const geometrik = Math.exp(sureler.reduce((a, s) => a + Math.log(s), 0) / sureler.length); const sirali = [...sureler].sort((a, b) => a - b); const ortanca = sirali.length % 2 ? sirali[(sirali.length - 1) / 2] : (sirali[sirali.length / 2 - 1] + sirali[sirali.length / 2]) / 2; console.log(`\nbasarili oturum suresi (${sureler.length} oturum): ${sirali.join(", ")}`); console.log(`aritmetik ortalama ${aritmetik.toFixed(1)} sn, geometrik ortalama ${geometrik.toFixed(1)} sn, ortanca ${ortanca.toFixed(1)} sn`); console.log(`ortalamanin ustunde kalan oturum: ${sureler.filter((s) => s > aritmetik).length} / ${sureler.length}`); // ---- 3) Hata orani ---- const toplamHata = OTURUMLAR.reduce((a, [, , , h]) => a + h, 0); const hatasiz = OTURUMLAR.filter(([, , , h]) => h === 0).length; console.log(`\ntoplam hata ${toplamHata}, oturum basina ${(toplamHata / n).toFixed(2)}, hatasiz oturum ${hatasiz}/${n}`); // ---- 4) Uc olcutu tek sayiya indirgemek ---- // Her olcut once 0-1 araligina getirilir; sure ve hata ters cevrilir. const SURE_HEDEFI = 40, SURE_TAVANI = 180, HATA_TAVANI = 4; function oturumSkoru([, b, s, h]) { const basari = b ? 1 : 0; const sureSkoru = b ? Math.max(0, Math.min(1, (SURE_TAVANI - s) / (SURE_TAVANI - SURE_HEDEFI))) : 0; const hataSkoru = Math.max(0, 1 - h / HATA_TAVANI); return { basari, sureSkoru, hataSkoru, bilesik: 0.5 * basari + 0.3 * sureSkoru + 0.2 * hataSkoru }; } console.log("\noturum basari sure hata sure skoru hata skoru bilesik"); for (const o of OTURUMLAR) { const s = oturumSkoru(o); console.log( `${o[0].padEnd(7)} ${(o[1] ? "evet" : "hayir").padEnd(7)} ${String(o[2]).padStart(4)} ${String(o[3]).padStart(5)}` + ` ${s.sureSkoru.toFixed(2).padStart(11)} ${s.hataSkoru.toFixed(2).padStart(11)} ${s.bilesik.toFixed(3).padStart(8)}` ); } const bilesikler = OTURUMLAR.map((o) => oturumSkoru(o).bilesik); const bOrt = bilesikler.reduce((a, b) => a + b, 0) / n; const bSapma = Math.sqrt(bilesikler.reduce((a, b) => a + (b - bOrt) ** 2, 0) / (n - 1)); console.log(`bilesik olcut: ortalama ${bOrt.toFixed(3)}, standart sapma ${bSapma.toFixed(3)}, %95 aralik +-${(1.96 * bSapma / Math.sqrt(n)).toFixed(3)}`); // ---- 5) Agirliklarin sonuca etkisi ---- console.log("\nagirlik (basari/sure/hata) bilesik ortalama en dusuk oturum"); const AGIRLIKLAR = [[0.5, 0.3, 0.2], [1.0, 0.0, 0.0], [0.34, 0.33, 0.33], [0.2, 0.6, 0.2]]; for (const [wb, ws, wh] of AGIRLIKLAR) { const skor = OTURUMLAR.map((o) => { const s = oturumSkoru(o); return wb * s.basari + ws * s.sureSkoru + wh * s.hataSkoru; }); const ort = skor.reduce((a, b) => a + b, 0) / n; const enDusuk = OTURUMLAR[skor.indexOf(Math.min(...skor))][0]; console.log(`${`${wb} / ${ws} / ${wh}`.padEnd(26)} ${ort.toFixed(3).padStart(16)} ${enDusuk.padStart(15)}`); }
gorev basarimi: 11/14 = 78.6 % Wilson %95 guven araligi: [52.4 %, 92.4 %] basarili oturum suresi (11 oturum): 37, 39, 42, 44, 46, 51, 58, 63, 72, 91, 154 aritmetik ortalama 63.4 sn, geometrik ortalama 57.6 sn, ortanca 51.0 sn ortalamanin ustunde kalan oturum: 3 / 11 toplam hata 17, oturum basina 1.21, hatasiz oturum 5/14 oturum basari sure hata sure skoru hata skoru bilesik K01 evet 42 0 0.99 1.00 0.996 K02 evet 58 1 0.87 0.75 0.911 K03 hayir 180 3 0.00 0.25 0.050 K04 evet 37 0 1.00 1.00 1.000 K05 evet 91 2 0.64 0.50 0.791 K06 evet 46 0 0.96 1.00 0.987 K07 hayir 180 4 0.00 0.00 0.000 K08 evet 63 1 0.84 0.75 0.901 K09 evet 39 0 1.00 1.00 1.000 K10 evet 154 2 0.19 0.50 0.656 K11 evet 51 1 0.92 0.75 0.926 K12 hayir 180 2 0.00 0.50 0.100 K13 evet 44 0 0.97 1.00 0.991 K14 evet 72 1 0.77 0.75 0.881 bilesik olcut: ortalama 0.728, standart sapma 0.380, %95 aralik +-0.199 agirlik (basari/sure/hata) bilesik ortalama en dusuk oturum 0.5 / 0.3 / 0.2 0.728 K07 1 / 0 / 0 0.786 K03 0.34 / 0.33 / 0.33 0.712 K07 0.2 / 0.6 / 0.2 0.688 K07
Bir Oran Tek Başına Yanıltır
Görev başarımı 11/14, yani yüzde 78.6. Bu sayı bir raporda tek başına yazıldığında kesinlik izlenimi verir. Wilson güven aralığı gerçeği söylüyor: yüzde 52.4 ile 92.4 arasında.
Aralık, on dört oturumun neyi belirleyip neyi belirlemediğini gösteriyor. Gerçek başarım oranı yüzde 55 de olabilir, yüzde 90 da. Bu genişlikte bir aralık, “arayüz iyi mi” sorusuna yanıt vermez. Yanıt verdiği soru başkadır: arayüz kullanıcıların yarısından fazlasında işe yarıyor mu? Buna evet der.
Buradan iki kural çıkar. Birincisi, oran her zaman güven aralığıyla yazılır; aralıksız bir oran, örneklem büyüklüğünü gizler. İkincisi, küçük örneklemli bir testin işi oran kestirmek değil, sorun bulmaktır. Kullanılabilirlik testi az sayıda katılımcıyla sorunları ortaya çıkarır; oranı hassas ölçmek için gereken katılımcı sayısı çok daha büyüktür.
Aralığın hesabında Wilson yönteminin kullanılması bir ayrıntı değil. Oranın standart hatasına dayanan basit aralık, küçük örneklemlerde ve uçlara yakın oranlarda sınırların dışına taşabilir; Wilson aralığı taşmaz ve küçük örneklemde daha güvenilirdir.
Süre Dağılımı Simetrik Değildir
Başarılı on bir oturumun süreleri 37 ile 154 saniye arasında. Aritmetik ortalama 63.4 saniye. Bu ortalamanın üstünde yalnızca üç oturum var; sekiz oturum altında.
Nedeni dağılımın çarpıklığıdır. Görev süresi aşağıdan sınırlıdır — hiçbir oturum sıfır saniyeden kısa olamaz — ama yukarıdan sınırsızdır. Bir kullanıcı takılırsa süre iki üç katına çıkar. Bu yapıdaki dağılımlarda aritmetik ortalama, birkaç uzun oturum tarafından yukarı çekilir ve “tipik” kullanıcıyı temsil etmez.
Geometrik ortalama 57.6, ortanca 51.0 saniye. Ortanca, oturumların yarısının altında kaldığı süredir ve tek bir uzun oturumdan etkilenmez. Geometrik ortalama, sürelerin logaritmalarının ortalamasıdır; çarpık dağılımlarda merkezi aritmetik ortalamadan daha iyi yakalar ve ortalamanın tersine, oturum sürelerinin oranlarıyla tutarlı davranır.
Kural: süre raporlanırken ortanca ya da geometrik ortalama yazılır, aritmetik ortalama yazılacaksa dağılımın uçları da verilir. Katalog arayüzünde 154 saniyelik oturum bir aykırı değer değil; ödünç akışında gerçek bir takılmanın izidir ve silinmez, ayrıca incelenir.
Bileşik Ölçüt ve Ağırlıkların Sınavı
Üç ölçüt ayrı ayrı raporlandığında karşılaştırma zorlaşır: bir tasarım başarımı yükseltip süreyi uzatıyorsa hangisi iyidir? Bileşik ölçüt bu soruyu yanıtlamak için kurulur.
Kurulum üç adımlıdır. Her ölçüt önce 0–1 aralığına getirilir; süre ve hata “yüksek kötüdür” yönünde olduğu için ters çevrilir; sonra ağırlıklarla toplanır. Süre skoru için 40 saniye hedef, 180 saniye tavan alınmış — bunlar ölçümden değil karardan gelen sayılardır ve raporda yazılmaları gerekir.
Dördüncü tablo bileşik ölçütü oturum oturum veriyor. K10 oturumu görevi tamamlamış (başarı
- ama 154 saniye sürmüş; bileşik değeri 0.656. K12 görevi tamamlayamamış ama az hata yapmış; 0.100. Tek bir sayı, üç sütunun taşıdığı bilgiyi sıraya sokuyor.
Son tablo bileşik ölçütün en önemli sınavıdır: ağırlıklar değişirse sonuç değişir mi? Ortalama bileşik değer 0.688 ile 0.786 arasında oynuyor — yüzde 14’lük bir aralık. Yani bileşik ölçütün mutlak düzeyi ağırlıklara bağlıdır ve tek başına anlam taşımaz.
Aynı tabloda değişmeyen bir şey var: dört ağırlıklandırmanın üçünde en düşük oturum K07. Sıralama ağırlıklara karşı daha dayanıklı. Bileşik ölçütün doğru kullanımı budur: iki tasarımı ya da iki oturumu sıralamak için kullanılır, bir eşiğe karşı ölçmek için değil. “Bileşik ölçüt 0.75’in üstünde olsun” biçiminde bir hedef, ağırlıkları seçen kişinin hedefi belirlemesi anlamına gelir.
Bileşik değerin standart sapması 0.380 ve on dört oturumdaki yüzde 95 aralığı ±0.199. Bu genişlik, iki tasarım arasında 0.2’den küçük bir bileşik farkın on dört oturumla ayırt edilemeyeceğini söyler.
Ölçütlerin Birlikte Raporlanması
Ham sayılar bileşikle birlikte verilir. Bileşik ölçüt hangi bileşenin değiştiğini gizler; başarımı düşürüp süreyi kısaltan bir değişiklik bileşikte iyileşme gösterebilir.
Ağırlıklar ve eşikler yazılır. Süre hedefi, süre tavanı, hata tavanı ve üç ağırlık raporun parçasıdır. Yazılmadıklarında bileşik değer denetlenemez.
Başarısız oturumlar süre havuzuna girmez. Zaman sınırında kesilen oturumun süresi ölçülmemiştir; havuza katılırsa süre dağılımını hem yukarı çeker hem de yapay bir tavan üretir.
Sorun listesi ölçütlerin yerine geçmez. Bu ders sayıları ele aldı; sayılar hangi adımın kötü olduğunu söylemez. O soru sonraki dersin konusudur.
Özet
- Görev başarımı oranı güven aralığıyla yazılır; on dört oturumdaki yüzde 78.6’lık başarım yüzde 52.4–92.4 aralığına karşılık gelir ve oran kestirmeye yetmez.
- Görev süresi dağılımı sağa çarpıktır; aritmetik ortalamanın üstünde on bir oturumdan yalnızca üçü kaldı, dolayısıyla ortanca ya da geometrik ortalama raporlanır.
- Başarısız oturumların süresi zaman sınırında kesilmiştir ve süre havuzuna katılmaz.
- Bileşik ölçüt üç ölçütü 0–1 aralığına getirip ağırlıklarla toplar; hedef, tavan ve ağırlık değerleri ölçümden değil karardan gelir ve raporda yazılır.
- Bileşik ölçütün mutlak düzeyi ağırlıklara duyarlıdır (0.688–0.786), sıralaması daha dayanıklıdır; bu yüzden karşılaştırma için kullanılır, eşik için değil.
- Ölçütlerin belirsizliği ölçülür: bileşik değerin yüzde 95 aralığı ±0.199, yani bundan küçük farklar bu örneklemle ayırt edilemez.
Sonraki Adım
Bu ders bir görevin bütününü ölçtü: tamamlandı mı, ne kadar sürdü, kaç hata yapıldı. Ölçmediği şey, tamamlanmayan görevin nerede kaldığı. Üç başarısız oturumun üçü de aynı adımda mı takıldı, yoksa üç ayrı yerde mi? Sonraki ders ödünç alma akışını adımlara bölüp her adımdaki terki ayrı ayrı ölçer, en büyük kaybın hangi adımda olduğunu bulur ve en yüksek terk oranı ile en çok kullanıcı kaybının aynı adım olmayabileceğini gösterir.
İlerlemeni kaydetmek ve not almak için Giriş yap
Notlarım
Not almak için giriş yapmalısın.