Ana içeriğe geç

Orta13 dk

t-testi

Önkoşul:z-testi ve p-değeri

Kanca

Önceki derste 2000 kişilik bir A/B testinde z-testi kullandık. Ama her deney bu kadar büyük olmuyor — bazen elinde sadece 14 kişilik bir pilot grup var. n bu kadar küçükken z-testi neden güvenilir olmaktan çıkıyor, ve yerine ne kullanmalıyız?

Sezgi

z-testi bir varsayıma dayanıyordu: popülasyonun standart sapmasını (σ) biliyoruz. Büyük örneklemde bu sorun değil çünkü örneklem std sapması (s) gerçek σ’ya çok yaklaşır. Ama n=14 gibi küçük bir örneklemde, s’nin kendisi de belirsiz — hem ortalamayı hem de standart sapmayı aynı küçük veriden tahmin ediyoruz, bu ekstra bir belirsizlik katmanı ekliyor.

t-dağılımı, bu ekstra belirsizliği hesaba katmak için Normal dağılımdan daha “yayvan” (kalın kuyruklu) bir eğri kullanır — küçük örneklemlerde uç değerlere Normal’in öngördüğünden daha fazla olasılık tanır. Örneklem büyüdükçe t-dağılımı giderek Normal’e yaklaşır — çünkü s tahmini de giderek güvenilir hâle gelir.

Mekanizma

14 kişilik iki küçük grupla ilerleyelim: eski öğretim yöntemi ve yeni yöntem.

İki küçük grup

# Küçük bir pilot çalışma: 14 kişilik eski yöntem grubu, 14 kişilik yeni yöntem grubu.
# n küçük olduğu için popülasyon std sapmasını BİLMİYORUZ — örneklemden tahmin etmemiz gerekiyor.
eski_yontem = rng.normal(70, 10, size=14).round(1)
yeni_yontem = rng.normal(76, 10, size=14).round(1)

print("Eski yöntem puanları:", eski_yontem)
print("Yeni yöntem puanları:", yeni_yontem)
print(f"\nEski yöntem ortalaması: {eski_yontem.mean():.2f}  (n={len(eski_yontem)})")
print(f"Yeni yöntem ortalaması: {yeni_yontem.mean():.2f}  (n={len(yeni_yontem)})")
Eski yöntem puanları: [73.  59.6 77.5 79.4 50.5 57.  71.3 66.8 69.8 61.5 78.8 77.8 70.7 81.3]
Yeni yöntem puanları: [80.7 67.4 79.7 66.4 84.8 75.5 74.2 69.2 88.2 74.5 71.7 72.5 81.3 79.7]

Eski yöntem ortalaması: 69.64  (n=14)
Yeni yöntem ortalaması: 76.13  (n=14)

Ortalamalar 69.64 ve 76.13 — belirgin bir fark var gibi görünüyor. Ama n=14 gibi küçük bir grupta bu şans eseri olabilir mi? Bağımsız iki örneklem t-testini uygulayalım:

Bağımsız iki örneklem t-testi

# H0: iki grubun gerçek ortalaması aynı. H1: farklı. n küçük ve popülasyon std'si bilinmediği
# için z yerine BAĞIMSIZ İKİ ÖRNEKLEM t-TESTİ kullanıyoruz.
t_istatistigi, p_degeri = stats.ttest_ind(yeni_yontem, eski_yontem)
serbestlik_derecesi = len(eski_yontem) + len(yeni_yontem) - 2

print(f"\nt istatistiği: {t_istatistigi:.2f}")
print(f"Serbestlik derecesi (df): {serbestlik_derecesi}")
print(f"p-değeri (iki yönlü): {p_degeri:.4f}")
print(f"α=0.05'e göre karar: {'H0 reddedilir' if p_degeri < 0.05 else 'H0 reddedilemez'}")

t istatistiği: 2.11
Serbestlik derecesi (df): 26
p-değeri (iki yönlü): 0.0442
α=0.05'e göre karar: H0 reddedilir

t=2.11, df (serbestlik derecesi)=26, p=0.0442 — α=0.05’in altında, H0 reddedilir. Serbestlik derecesi, kabaca “veride kaç bağımsız bilgi parçası olduğunu” gösterir — iki grubun toplam n’inden (28), her grubun kendi ortalamasını tahmin etmek için “harcanan” 2 serbestlik derecesini çıkarınca 26 kalıyor.

Çoğu kişi z-testi ile t-testinin “aynı şeyin farklı isimleri” olduğunu sanır. Değil, çünkü z-testi σ’yı bilinen bir sabit sayar, t-testi ise σ’yı da veriden tahmin edilen belirsiz bir miktar olarak ele alır — bu fark, küçük n’de sonucu gerçekten değiştirebilir.

Matematik

t-testinin formülü ve serbestlik derecesi
t=xˉ1xˉ2SHdf=n1+n22t = \frac{\bar{x}_1 - \bar{x}_2}{SH} \qquad\qquad df = n_1 + n_2 - 2
SembolAnlamı
xˉ1,xˉ2\bar{x}_1, \bar{x}_2İki grubun örneklem ortalamaları
SHSHStandart hata — iki grubun örneklem std sapmalarından hesaplanır (σ bilinmiyor)
dfdfSerbestlik derecesi — t-dağılımının şeklini belirler, küçük df daha kalın kuyruk demektir

Formül z-testine çok benzer — fark, kritik değerin z-tablosundan değil, ilgili df’ye özel bir t-tablosundan okunmasıdır. df büyüdükçe t-dağılımı Normal’e yaklaşır, kritik değerler de z’ninkilere yakınsar.

Kod

t-dağılımının df’ye göre nasıl değiştiğini doğrudan görelim:

Kritik değer, df'ye göre değişir

# t-dağılımı neden gerekli? Küçük n'de örneklem std sapmasının kendisi de belirsiz —
# bu ekstra belirsizlik, t-dağılımını Normal'den daha "kalın kuyruklu" yapar.
for df in [2, 5, 14, 100]:
    kritik_t = stats.t.ppf(0.975, df)
    print(f"df={df:>3}  %95 için kritik t değeri = {kritik_t:.3f}   (Normal'de sabit: 1.960)")
df=  2  %95 için kritik t değeri = 4.303   (Normal'de sabit: 1.960)
df=  5  %95 için kritik t değeri = 2.571   (Normal'de sabit: 1.960)
df= 14  %95 için kritik t değeri = 2.145   (Normal'de sabit: 1.960)
df=100  %95 için kritik t değeri = 1.984   (Normal'de sabit: 1.960)

df=2’de %95 için kritik değer 4.303 — Normal’in sabit 1.960’ından çok daha büyük. df=100’de ise 1.984’e iniyor, neredeyse Normal’e eşit. Küçük örneklemde daha güçlü bir kanıt (daha büyük t) gerekir çünkü belirsizlik daha fazladır.

Solda iki grubun puan dağılımlarının kutu grafiği; sağda Normal dağılım ile df=2 ve df=14 t-dağılımlarının karşılaştırması, küçük df'de t-dağılımının daha yayvan olduğu gösteriliyor.
t-dağılımı küçük df'de daha yayvan (kalın kuyruklu) — bu, küçük örneklemdeki ekstra belirsizliği yansıtır.

Nerede işe yarar

t-testi, “küçük örneklem, bilinmeyen popülasyon std sapması” durumunun standart aracıdır:

  • Pilot çalışmalar ve erken deneyler. Tam ölçekli bir A/B testinden önce küçük bir grupla ön test yapmak.
  • Tıbbi ve bilimsel araştırmalar. Katılımcı bulmanın pahalı/zor olduğu deneylerde (örn. 20 hastalık bir klinik çalışma).
  • Kalite kontrol. Küçük bir üretim partisinin ortalama özelliklerini test etmek.

Bu 3 hatayı yaparsın:

  1. Büyük örneklemde bile z yerine t kullanmayı unutmak — aslında zararı yok (t, büyük df’de zaten Normal’e yaklaşır), ama küçük örneklemde tersi (z kullanmak) kritik değerleri olduğundan dar gösterir.
  2. Eşleştirilmiş (paired) veriye bağımsız t-testi uygulamak — örneğin aynı kişilerin önce/sonra ölçümlerinde, gruplar bağımsız değildir, eşleştirilmiş t-testi gerekir.
  3. Çok küçük n’lerde (n < 5 gibi) t-testinin normallik varsayımının kırılgan olduğunu unutmak — böyle durumlarda dağılım şeklini görsel olarak kontrol etmek şart.

Kendini test et

1. t-testi, z-testinden temel olarak hangi varsayımda ayrılır?
  1. t-testi sadece kesikli verilerde kullanılır
  2. t-testi popülasyon std sapmasını bilinmeyen kabul eder, örneklemden tahmin eder (doğru cevap)
  3. İkisi arasında hiçbir fark yoktur
  4. t-testi sadece iki grup karşılaştırmasında kullanılır, z hiç kullanılmaz

Neden: z-testi σ'yı bilinen sabit sayar; t-testi σ'yı da veriden tahmin eder ve bu ekstra belirsizliği t-dağılımının daha kalın kuyruğuyla hesaba katar.

2. Serbestlik derecesi (df) küçüldükçe t-dağılımına ne olur?
  1. Normal'e daha çok benzer
  2. Daha kalın kuyruklu (daha yayvan) hâle gelir (doğru cevap)
  3. Simetrisini kaybeder
  4. Değişmez

Neden: Küçük df, örneklemden tahmin edilen std sapmadaki belirsizliğin daha yüksek olduğu anlamına gelir; bu da dağılımın kuyruklarını kalınlaştırır.

3. df=100 civarında t-dağılımı neye çok benzer hâle gelir?
  1. Uniform dağılıma
  2. Normal dağılıma (doğru cevap)
  3. Poisson dağılımına
  4. Hiçbirine

Neden: df büyüdükçe örneklem std sapması gerçek σ'ya çok yaklaşır, bu da t-dağılımını Normal'e neredeyse özdeş hâle getirir — notebook'ta df=100 için kritik değerin 1.984'e (Normal'in 1.960'ına çok yakın) indiğini gördük.

Özet

Özet

  • t-testi, popülasyon std sapması bilinmediğinde (neredeyse her zaman) ve/veya örneklem küçükken kullanılır.
  • t-dağılımı, örneklemden std sapma tahmin etmenin getirdiği ekstra belirsizliği kalın kuyruklarla yansıtır.
  • Serbestlik derecesi (df) küçüldükçe kritik değerler büyür — küçük örneklemde daha güçlü kanıt gerekir.
  • df büyüdükçe t-dağılımı Normal'e yaklaşır; büyük örneklemde t ve z testleri neredeyse aynı sonucu verir.
  • Eşleştirilmiş (önce/sonra) veriye bağımsız değil, eşleştirilmiş t-testi uygulanmalıdır.
Sonraki adım: Tip 1 / Tip 2 hata ve istatistiksel güç →