Ana içeriğe geç

İleri13 dk

ANOVA

Önkoşul:Ki-kare testi

Kanca

Üç farklı öğretim yöntemini (A, B, C) karşılaştırmak istiyorsun. İlk içgüdün: A-B, A-C, B-C arasında üç ayrı t-testi yapmak. Ama bunu simüle ettiğimizde, üç grubun gerçek ortalaması TAMAMEN AYNI olsa bile, üç testten en az birinin yanlışlıkla “anlamlı” çıkma ihtimali %11.7 — hedeflediğimiz %5’in iki katından fazla! Neden, ve doğrusu ne?

Sezgi

Her t-testinin kendine ait bir yanlış alarm riski (α=0.05) var. Üç ayrı test yaparsan, bunlardan en az birinin yanlışlıkla anlamlı çıkma ihtimali tek bir testinkinden daha yüksek olur — tıpkı üç zar atıp “en az biri 6 gelir mi” sorusunun, tek zar atmaktan daha olası olması gibi (2. dersten hatırla: P(A veya B) hesabı).

ANOVA (varyans analizi), birden çok grubu TEK bir testte karşılaştırarak bu sorunu çözer. Mantığı: gruplar arasındaki farkı (gruplar arası varyans), gruplar içindeki doğal değişkenlikle (gruplar içi varyans) kıyaslar. Gruplar arası fark, grup içi gürültüye göre büyükse, “en az bir grup farklı” sonucuna varırız — tek bir p-değeriyle, tek bir yanlış alarm riskiyle.

Mekanizma

Üç öğretim yöntemiyle eğitilen 15’er kişilik sınıflarla ilerleyelim:

Üç grup

# Üç farklı öğretim yöntemiyle eğitilen üç sınıf (15'er kişi). Ortalamaları farklı mı?
yontem_a = rng.normal(70, 8, size=15)
yontem_b = rng.normal(75, 8, size=15)
yontem_c = rng.normal(78, 8, size=15)

for isim, grup in zip(["A", "B", "C"], [yontem_a, yontem_b, yontem_c]):
    print(f"Yöntem {isim}: ortalama={grup.mean():.2f}  std={grup.std(ddof=1):.2f}  n={len(grup)}")
Yöntem A: ortalama=69.98  std=7.36  n=15
Yöntem B: ortalama=75.29  std=5.08  n=15
Yöntem C: ortalama=79.06  std=6.84  n=15

Ortalamalar 69.98, 75.29, 79.06 — belirgin bir artış eğilimi var. ANOVA ile tek bir testte hepsini karşılaştıralım:

Tek yönlü ANOVA

# H0: üç grubun da gerçek ortalaması aynı. H1: en az biri farklı.
# ANOVA, gruplar ARASI varyansı gruplar İÇİ varyansa oranlayan tek bir F istatistiği üretir.
f_istatistigi, p_degeri = stats.f_oneway(yontem_a, yontem_b, yontem_c)

print(f"\nF istatistiği: {f_istatistigi:.2f}")
print(f"p-değeri: {p_degeri:.4f}")
print(f"α=0.05'e göre karar: {'H0 reddedilir — en az bir grup farklı' if p_degeri < 0.05 else 'H0 reddedilemez'}")

F istatistiği: 7.39
p-değeri: 0.0018
α=0.05'e göre karar: H0 reddedilir — en az bir grup farklı

F=7.39, p=0.0018 — H0 reddedilir: en az bir grup diğerlerinden farklı. Şimdi başta sorduğumuz soruyu test edelim: üç ayrı t-testi yerine tek ANOVA kullanmanın gerçek bedeli nedir?

Çoklu karşılaştırma sorunu

# Neden tek tek ikili t-testleri (A-B, A-C, B-C) yapmıyoruz? Çünkü her test kendi başına
# %5 yanlış alarm riski taşır — üçünü art arda yapınca risk katlanır.
# Bunu, H0'ın GERÇEKTEN doğru olduğu (üç grubun da aynı ortalamaya sahip olduğu) bir
# senaryoda simüle edelim.
tekrar = 2000
en_az_bir_yanlis_alarm = 0
for _ in range(tekrar):
    g1 = rng.normal(70, 8, size=15)
    g2 = rng.normal(70, 8, size=15)  # gerçekte hepsi AYNI ortalama (70)
    g3 = rng.normal(70, 8, size=15)
    ciftler = [(g1, g2), (g1, g3), (g2, g3)]
    herhangi_bir_anlamli = any(stats.ttest_ind(a, b).pvalue < 0.05 for a, b in ciftler)
    if herhangi_bir_anlamli:
        en_az_bir_yanlis_alarm += 1

print(f"\n3 ayrı t-testi ile, H0 tamamen doğruyken en az bir yanlış alarm oranı: "
      f"%{en_az_bir_yanlis_alarm / tekrar * 100:.1f}  (tek bir testin hedefi %5 idi)")

3 ayrı t-testi ile, H0 tamamen doğruyken en az bir yanlış alarm oranı: %11.7  (tek bir testin hedefi %5 idi)

Üç grubun gerçek ortalaması TAMAMEN AYNI (hepsi 70) olduğu bir senaryoda bile, üç ayrı t-testinden en az birinin yanlışlıkla “anlamlı” çıkma oranı %11.7 — hedeflenen %5’in çok üzerinde. Çoğu kişi “her testin kendi α’sı %5, sorun yok” sanır. Değil, çünkü birden fazla test yaptığında, “en az bir tanesi yanlış alarm verir” olasılığı testlerin sayısıyla birlikte katlanarak büyür — bu çoklu karşılaştırma sorunudur, ve ANOVA’nın tek bir p-değeri üretmesinin sebebi tam olarak budur.

Matematik

F istatistiğinin formülü
F=gruplar arası varyansgruplar ic¸i varyansF = \frac{\text{gruplar arası varyans}}{\text{gruplar içi varyans}}
SembolAnlamı
Gruplar arası varyansGrup ortalamalarının, genel ortalama etrafında ne kadar dağıldığı
Gruplar içi varyansHer grubun kendi içindeki doğal değişkenlik (gürültü)
FFBu iki varyansın oranı — büyükse gruplar arası fark, doğal gürültüye göre büyük demektir

F, 1’e yakınsa gruplar arası fark, grup içi gürültüden ayırt edilemiyor demektir (muhtemelen H0 doğru). F büyükse, gruplar arası fark tesadüften büyük demektir. ANOVA sadece “en az bir grup farklı” der, hangisinin farklı olduğunu söylemez — bunun için ANOVA’dan sonra “post-hoc” (sonrasında yapılan, çoklu karşılaştırma için düzeltilmiş) testler kullanılır.

Kod

Üç öğretim yönteminin puan dağılımlarının kutu grafiği, F ve p değerleri başlıkta gösteriliyor.
Üç grubun kutu grafiği — F istatistiği, gruplar arası bu görünür farkı gruplar içi dağılımla kıyaslıyor.

Nerede işe yarar

ANOVA, “ikiden fazla grubu aynı anda karşılaştır” ihtiyacının standart cevabıdır:

  • Çoklu varyant testleri. 3 veya daha fazla tasarım/fiyat/mesaj varyantını aynı anda test etmek (A/B/C/D testi).
  • Tarım ve üretim deneyleri. Farklı gübre türlerinin veya üretim ayarlarının verim üzerindeki etkisini karşılaştırmak.
  • Segment analizi. Farklı müşteri segmentlerinin ortalama harcamasının birbirinden farklı olup olmadığını test etmek.

Bu 3 hatayı yaparsın:

  1. ANOVA anlamlı çıkınca “hangi grup farklı” sorusunu ANOVA’nın kendisinden cevap almaya çalışmak — bunun için post-hoc test (örn. Tukey HSD) gerekir.
  2. ANOVA yerine art arda ikili t-testleri kullanıp çoklu karşılaştırma sorununu görmezden gelmek.
  3. Grupların varyanslarının birbirine yakın olduğunu (ANOVA’nın bir varsayımı) kontrol etmeden teste girmek — çok farklı varyanslı gruplarda ANOVA güvenilirliğini kaybedebilir.

Kendini test et

1. Üç grubu karşılaştırırken neden 3 ayrı t-testi yerine tek bir ANOVA tercih edilir?
  1. ANOVA her zaman daha hızlı hesaplanır
  2. Ayrı ayrı testler, gerçek fark olmasa bile en az birinin yanlışlıkla anlamlı çıkma riskini katlar (doğru cevap)
  3. Ayrı testler matematiksel olarak imkansızdır
  4. Aralarında hiçbir fark yoktur

Neden: Notebook'ta gördüğümüz gibi, gerçek fark olmasa bile 3 ayrı t-testinden en az birinin yanlış alarm verme olasılığı %11.7'ye çıktı — ANOVA bunu tek bir testle önler.

2. F istatistiği neyi neye oranlar?
  1. Örneklem büyüklüğünü örneklem sayısına
  2. Gruplar arası varyansı gruplar içi varyansa (doğru cevap)
  3. Ortalamayı standart sapmaya
  4. p-değerini α'ya

Neden: F, grup ortalamaları arasındaki farkı (gruplar arası varyans) her grubun kendi içindeki doğal değişkenlikle (gruplar içi varyans) kıyaslar.

3. ANOVA "p < 0.05, H0 reddedilir" sonucunu verdiğinde bu tam olarak ne anlama gelir?
  1. Tüm gruplar birbirinden farklıdır
  2. En az bir grup diğerlerinden farklıdır, ama hangisi olduğu belirtilmez (doğru cevap)
  3. İlk grup en iyisidir
  4. Test geçersizdir

Neden: ANOVA yalnızca "en az bir grup farklı" bilgisini verir. Hangi spesifik grupların birbirinden farklı olduğunu bulmak için post-hoc testler gereklidir.

Özet

Özet

  • ANOVA, ikiden fazla grubun ortalamalarını TEK bir testte karşılaştırır.
  • F istatistiği, gruplar arası varyansı gruplar içi varyansa oranlar — büyük F, gerçek bir fark olduğuna işaret eder.
  • Birden fazla ayrı t-testi kullanmak, gerçek fark olmasa bile en az bir yanlış alarm riskini katlar (çoklu karşılaştırma sorunu).
  • ANOVA sadece "en az bir grup farklı" der — hangisinin farklı olduğunu bulmak için post-hoc testler gerekir.
  • Gruplar arasındaki varyansların birbirine yakın olması, ANOVA'nın güvenilir çalışması için önemli bir varsayımdır.
Sonraki adım: Bayes teoremi →