Ölçeklendirme ve Oranlar
Problem Tanımı
Bölüm başlığı “Problem Tanımı”Bir grafik yalan söylemek için veriyi değiştirmek zorunda değil. Eksenin nereden başladığını seçmek yeterli.
Dört takımın maç başına xG değerleri 1.92, 1.74, 1.61, 1.48 olsun.
En iyi takım en kötüsünden %30 daha iyi. Ama eksen 1.40’tan başlatıldığında
çubuklar 0.52, 0.34, 0.21, 0.08 uzunluklarına düşer ve en iyi takımın
çubuğu en kötüsünün 6.5 katı olur. Veri dokunulmadı; sadece sıfır silindi.
Aynı problemin üç yaygın biçimi var:
- Kesik eksen — uzunlukla kodlanan veride tabanın sıfırdan kaydırılması.
- Oran/fark karışıklığı — “3 puan arttı” ile “%3 arttı” ifadelerinin aynı grafikte yer değiştirmesi.
- Normalize edilmemiş örneklem — 90 dakika oynayan ile 2700 dakika oynayanın aynı eksende karşılaştırılması.
Matematiksel / Mantıksal Model
Bölüm başlığı “Matematiksel / Mantıksal Model”Yalan katsayısı
Bölüm başlığı “Yalan katsayısı”Tufte’nin ölçütü, grafikteki efektin veridekine oranıdır:
Kesik eksenli çubuk grafikte, taban ve uç değerler , için bu şöyle açılır:
iken : grafik veriyi olduğu gibi aktarır. iken payda sıfıra gider ve . Tufte’nin kabul aralığı:
Yukarıdaki xG örneğinde için — grafik farkı beş kat abartıyor.
90 dakikaya normalizasyon ve küçültme
Bölüm başlığı “90 dakikaya normalizasyon ve küçültme”Ham sayımlar oynanan süreyle karşılaştırılamaz. Standart normalizasyon:
Burada ham sayım, oynanan dakika. Ama bu, düşük ‘de patlar: 90 dakikada 2 gol atan oyuncu “maç başına 2.00 gol” görünür.
Çözüm, popülasyon ortalamasına doğru küçültmektir (empirik Bayes / toplamsal düzleştirme):
- — popülasyonun 90 dakika başına ortalaması
- — önsel gücü, “kaç maçlık hayali kanıt” olarak okunur
Etkisi asimetriktir; küçük örneklemi sertçe çeker, büyüğüne neredeyse dokunmaz. , ile:
| Oyuncu | Ham | Küçültülmüş | Kayma | ||
|---|---|---|---|---|---|
| A | 2 | 90 | 2.000 | 0.625 | −69% |
| B | 4 | 450 | 0.800 | 0.575 | −28% |
| C | 12 | 2700 | 0.400 | 0.393 | −2% |
A ile C’nin ham değerleri 5 kat fark ediyor; küçültülmüş değerleri 1.6 kat. İkincisi kanıtın gerçekten desteklediği fark.
Çarpımsal veride log ölçek
Bölüm başlığı “Çarpımsal veride log ölçek”Büyüme, katsayı ve oran gibi çarpımsal büyüklüklerde eşit oranlar eşit mesafeye karşılık gelmelidir:
Doğrusal eksende 10 → 20 ile 100 → 110 aynı mesafeyi kaplar; oysa biri iki
katına çıkmış, diğeri %10 artmıştır.
Arayüz Kararları
Bölüm başlığı “Arayüz Kararları”Kodlama kanalına göre karar ver. Kural eksen tipine değil, verinin nasıl kodlandığına bağlıdır:
| Kodlama | Örnek | Taban kuralı |
|---|---|---|
| Uzunluk / alan | Çubuk, alan, hacim | Sıfır zorunlu |
| Konum | Çizgi, dağılım | Kırpılabilir, ama işaretlenir |
| Açı | Pasta | Toplam %100 olmalı, yoksa kullanma |
Kırpma işaretlenir. Çizgi grafikte eksen kırpıldığında eksen kırığı simgesi veya “eksen 1.40’tan başlıyor” notu doğrudan eksen üzerinde yer alır — dipnotta değil.
Örneklem eşiği rozeti. Payda bir eşiğin altındaysa değer soluklaştırılır ve
n = 3 biçiminde işaretlenir. Sıralamalarda küçültülmüş değer kullanılır, ham
değer detayda gösterilir.
Eksen aralığı doldurma. Sıfır tabanı zorunlu olduğunda üst sınır olarak alınır; veriye “nefes payı” vermek için tabanı kaydırmak yasaktır, tavanı yükseltmek serbesttir.
Doğru / Yanlış Karşılaştırması
Bölüm başlığı “Doğru / Yanlış Karşılaştırması”Aşağıdaki iki panelde veri aynı. Kaydırıcı yalnızca sol paneldeki eksenin nereden başladığını değiştirir. Yalan katsayısı canlı hesaplanır.
Kesik eksen · taban 1.40
Yalan katsayısı5.01
Sıfır tabanı
Yalan katsayısı 1.00
0.95 < L < 1.05.Konfigürasyon düzeyinde fark tek bir satırdır:
Yanlış
// Çubuk grafikte taban veriye göre "otomatik" seçiliyor.const eksen = { tip: 'cubuk', y: { // Kütüphanelerin çoğunda varsayılan bu — ve sessizce yalan söyler. taban: 'otomatik', // → 1.40 tavan: 'otomatik', },};// L ≈ 5.01 · işaret yok · okuyucu farkı 6.5x sanıyorDoğru
// Uzunlukla kodlanan veride taban sabit.const eksen = { tip: 'cubuk', y: { taban: 0, tavan: 1.05 * Math.max(...degerler), },};// L = 1.00 · fark %30 · okuyucu farkı %30 sanıyorKüçük örneklemde sıralama üretirken de aynı ayrım geçerlidir:
Ham oran
const gol90 = (o) => (o.gol / o.dakika) * 90;
siralama = oyuncular.sort((a, b) => gol90(b) - gol90(a));// 1. Oyuncu A — 2.00 (90 dk, 2 gol)// 2. Oyuncu B — 0.80 (450 dk)// 3. Oyuncu C — 0.40 (2700 dk)Küçültülmüş oran
const MU0 = 0.35; // lig ortalaması / 90 dkconst K = 5; // önsel gücü ≈ 5 maç
const gol90 = (o) => (o.gol + K * MU0) / (o.dakika / 90 + K);
siralama = oyuncular.sort((a, b) => gol90(b) - gol90(a));// 1. Oyuncu A — 0.63 (n işaretli: 90 dk)// 2. Oyuncu B — 0.58// 3. Oyuncu C — 0.39Alanlar arası karşılık
Bölüm başlığı “Alanlar arası karşılık”Aynı iki hata alan değiştirince isim değiştirir, biçim değiştirmez.
| Kavram | Futbol | Finans / İş zekâsı | Ürün analitiği |
|---|---|---|---|
| Normalizasyon birimi | 90 dakika | Çeyrek, çalışan başına | Aktif kullanıcı başına |
| Kesik eksen kurbanı | Takım xG çubukları | Çeyreklik gelir çubukları | Haftalık aktif kullanıcı |
| Küçük örneklem tuzağı | 1 maçta %100 isabet | 3 müşterilik segment kârlılığı | 12 oturumluk A/B testi |
| Log ölçek gereği | Şut mesafesi–gol olasılığı | Bileşik büyüme | Kohort tutundurma eğrisi |
Kesik eksenin en sık göründüğü yer yatırımcı sunumları; en az sorgulandığı yer maç yayınları. İkisinde de düzeltme aynı: uzunlukla kodluyorsan sıfırdan başla.