Poza istotność statystyczną: wielkość efektu
Wielkość efektu mierzy faktyczną wielkość różnicy lub związku, niezależnie od wielkości próbki. Podczas gdy wartości p mówią, czy efekt jest istotny statystycznie, wielkości efektu mówią, jak istotny jest on praktycznie. To rozróżnienie jest kluczowe dla podejmowania decyzji opartych na dowodach w badaniach naukowych, medycynie, edukacji i biznesie.
Rozważ badanie kliniczne, w którym nowy lek wykazuje istotną statystycznie poprawę (p < 0,001) w porównaniu z placebo. Bez wielkości efektu nie wiesz, czy poprawa wynosi 0,1% czy 50%. Wielkość efektu dostarcza tego kluczowego kontekstu, pomagając interesariuszom ocenić, czy efekt jest wart kosztów, skutków ubocznych czy wysiłku wdrożeniowego.
Najczęstszą miarą wielkości efektu do porównywania dwóch grup jest d Cohena, które wyraża różnicę między średnimi w jednostkach odchylenia standardowego. Ta standaryzacja pozwala na porównania między różnymi badaniami i skalami pomiarowymi.
Dlaczego wielkość efektu ma znaczenie
Istotność statystyczna jest silnie uzależniona od wielkości próbki. Przy wystarczająco dużej próbce nawet trywialne różnice stają się “istotne”. Odwrotnie, ważne efekty mogą nie osiągnąć istotności w małych próbkach. Wielkość efektu rozwiązuje ten problem, dostarczając miarę niezależną od wielkości próbki.
Pułapka istotności
Kluczowe powody stosowania wielkości efektu:
- Metaanaliza: Wielkości efektu można łączyć między badaniami w celu oszacowania efektów ogólnych
- Analiza mocy: Wymagana do obliczenia niezbędnej wielkości próbki w przyszłych badaniach
- Decyzje praktyczne: Pomaga określić, czy interwencje są warte wdrożenia
- Replikacja: Dostarcza cel, który badania replikacyjne powinny osiągnąć
d Cohena: standardowa miara wielkości efektu
d Cohena wyraża różnicę między średnimi dwóch grup w jednostkach łączonego odchylenia standardowego:
d Cohena
Gdzie M₁ i M₂ to średnie grupowe, a sp to łączone odchylenie standardowe obliczane jako:
Łączone odchylenie standardowe
Znak d wskazuje kierunek: dodatni gdy M₁ > M₂, ujemny gdy M₁ < M₂. Często raportuje się wartość bezwzględną |d|, gdy kierunek jest oczywisty z kontekstu.
Dlaczego łączymy odchylenie?
Alternatywne miary wielkości efektu
Choć d Cohena jest najpopularniejsze, istnieją alternatywy dla konkretnych sytuacji:
g Hedgesa: wielkość efektu z korektą obciążenia
d Cohena nieznacznie przeszacowuje populacyjną wielkość efektu w małych próbkach. g Hedgesa stosuje współczynnik korekcyjny:
Korekta g Hedgesa
Dla prób powyżej 20 na grupę różnica jest znikoma. Dla małych prób (n < 20) preferowane jest g Hedgesa.
Δ Glassa: gdy wariancje się różnią
Gdy jedna grupa jest kontrolną o znanej zmienności, używamy tylko odchylenia standardowego grupy kontrolnej jako mianownika:
Delta Glassa
Jest to przydatne, gdy interwencja może wpływać na wariancję (np. program, który pomaga słabszym uczniom bardziej niż lepszym).
Interpretacja wielkości efektu: wytyczne Cohena
Jacob Cohen zaproponował następujące konwencje interpretacji wartości d:
| Wielkość efektu (d) | Interpretacja | Pokrywanie się |
|---|---|---|
| 0,2 | Mały | 85% pokrywania się grup |
| 0,5 | Średni | 67% pokrywania się grup |
| 0,8 | Duży | 53% pokrywania się grup |
| 1,2 | Bardzo duży | 40% pokrywania się grup |
| 2,0 | Ogromny | 19% pokrywania się grup |
Kontekst ma znaczenie
Rozwiązany przykład: interwencja edukacyjna
Szkoła testuje nowy program czytelniczy. Grupa kontrolna (n=25): średnia=72, SD=12. Grupa eksperymentalna (n=30): średnia=79, SD=14. Oblicz d Cohena:
Oblicz łączoną wariancję
Oblicz łączone odchylenie
Oblicz d Cohena
Zinterpretuj
Oznacza to, że gdybyś losowo wybrał ucznia z grupy eksperymentalnej i ucznia z kontrolnej, uczeń z grupy eksperymentalnej uzyskałby wyższy wynik w około 64% przypadków (obliczone z pokrywania się).
Implementacja w Pythonie
Oblicz wielkości efektu programowo z przedziałami ufności:
import numpy as np
from scipy import stats
def cohens_d(group1, group2):
"""Calculate Cohen's d for two independent groups."""
n1, n2 = len(group1), len(group2)
var1, var2 = np.var(group1, ddof=1), np.var(group2, ddof=1)
# Pooled standard deviation
pooled_std = np.sqrt(((n1-1)*var1 + (n2-1)*var2) / (n1+n2-2))
# Cohen's d
d = (np.mean(group1) - np.mean(group2)) / pooled_std
return d
def hedges_g(group1, group2):
"""Calculate Hedges' g (bias-corrected effect size)."""
n1, n2 = len(group1), len(group2)
d = cohens_d(group1, group2)
# Correction factor for small sample bias
correction = 1 - 3 / (4*(n1+n2) - 9)
return d * correction
# Example usage
control = [68, 72, 75, 70, 69, 74, 71, 73, 76, 72]
treatment = [75, 79, 82, 78, 80, 77, 81, 76, 83, 79]
d = cohens_d(treatment, control)
g = hedges_g(treatment, control)
print(f"Cohen's d: {d:.3f}")
print(f"Hedges' g: {g:.3f}")