Bortom statistisk signifikans: Att förstå effektstorlek
Effektstorlek mäter storleken på en skillnad eller ett samband, oberoende av stickprovsstorlek. Medan p-värden berättar om en effekt är statistiskt signifikant, berättar effektstorlekar hur praktiskt meningsfull effekten är. Denna distinktion är avgörande för evidensbaserat beslutsfattande inom forskning, medicin, utbildning och näringsliv.
Tänk dig en läkemedelsstudie där ett nytt läkemedel visar en statistiskt signifikant förbättring (p < 0,001) jämfört med placebo. Utan effektstorlek vet du inte om förbättringen är 0,1 % eller 50 %. Effektstorlek ger detta avgörande sammanhang och hjälper intressenter att bedöma om effekten är värd kostnaden, biverkningarna eller implementeringsinsatsen.
Det vanligaste effektstorleksmåttet för jämförelse av två grupper är Cohens d, som uttrycker skillnaden mellan medelvärden i standardavvikelseenheter. Denna standardisering möjliggör jämförelser mellan olika studier och mätskalor.
Varför effektstorlek är viktigt
Statistisk signifikans påverkas starkt av stickprovsstorlek. Med ett tillräckligt stort stickprov blir även triviala skillnader “signifikanta”. Omvänt kan viktiga effekter inte nå signifikans i små stickprov. Effektstorlek löser detta problem genom att ge ett mått som är oberoende av stickprovsstorlek.
Signifikansfällan
Viktiga skäl att använda effektstorlek:
- Metaanalys: Effektstorlekar kan kombineras över studier för att skatta totala effekter
- Styrkeanalys: Krävs för att beräkna nödvändig stickprovsstorlek för framtida studier
- Praktiska beslut: Hjälper att avgöra om interventioner är värda att implementera
- Replikering: Ger ett mål som replikeringsstudier kan jämföra mot
Cohens d: Standardmåttet för effektstorlek
Cohens d uttrycker skillnaden mellan två gruppers medelvärden i enheter av poolad standardavvikelse:
Cohen's d
Där M₁ och M₂ är gruppernas medelvärden och sp är den poolade standardavvikelsen som beräknas enligt:
Pooled Standard Deviation
Tecknet på d anger riktning: positivt när M₁ > M₂, negativt när M₁ < M₂. Ofta rapporteras absolutvärdet |d| när riktningen framgår av sammanhanget.
Varför poola standardavvikelsen?
Alternativa effektstorleksmått
Medan Cohens d är vanligast finns alternativ för specifika situationer:
Hedges g: Biaskorrigerad effektstorlek
Cohens d överskattar populationseffektstorleken något i små stickprov. Hedges g tillämpar en korrektionsfaktor:
Hedges' g Correction
För stickprov över 20 per grupp är skillnaden försumbar. För små stickprov (n < 20) är Hedges g att föredra.
Glass Δ: När varianserna skiljer sig
När en grupp är en kontrollgrupp med känd variabilitet, använd enbart kontrollgruppens standardavvikelse som nämnare:
Glass's Delta
Detta är användbart när behandlingen kan påverka variansen (t.ex. en intervention som hjälper lågpresterande mer än högpresterande).
Tolkning av effektstorlekar: Cohens riktlinjer
Jacob Cohen föreslog dessa konventioner för tolkning av d-värden:
| Effektstorlek (d) | Tolkning | Överlappning |
|---|---|---|
| 0,2 | Liten | 85 % överlappning mellan grupper |
| 0,5 | Medelstor | 67 % överlappning mellan grupper |
| 0,8 | Stor | 53 % överlappning mellan grupper |
| 1,2 | Mycket stor | 40 % överlappning mellan grupper |
| 2,0 | Enorm | 19 % överlappning mellan grupper |
Sammanhanget avgör
Genomarbetat exempel: Pedagogisk intervention
En skola testar ett nytt läsprogram. Kontrollgrupp (n=25): medelvärde=72, SA=12. Behandlingsgrupp (n=30): medelvärde=79, SA=14. Beräkna Cohens d:
Beräkna poolad varians
Beräkna poolad SA
Beräkna Cohens d
Tolka resultatet
Detta innebär att om du tog en slumpmässig elev från behandlingsgruppen och en slumpmässig elev från kontrollgruppen, skulle behandlingseleven prestera bättre ungefär 64 % av gångerna (beräknat utifrån överlappningen).
Python-implementering
Beräkna effektstorlekar programmatiskt med konfidensintervall:
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}")