Korrelation och kausalitet
Kunna beräkna korrelation och förklara varför den inte visar orsak.
Öva i Mattegrafen ↗ · Regressionsanalys och korrelationskoeffiIntuition
Korrelation (r mellan −1 och 1) mäter hur mycket två variabler samvarierar linjärt. Glassförsäljning och drunkningar korrelerar starkt — men glass orsakar inte drunkning. Sommaren orsakar båda: en förväxlingsfaktor.
Andra fällor: omvänd kausalitet (brandmän orsakar inte bränder fast fler brandmän = större brand), urval (bland antagna studenter korrelerar högskoleprov negativt med betyg — för att båda användes vid antagningen), slump (med 1 000 variabler hittar du alltid några som korrelerar).
En ML-modell hittar korrelationer. Den vet ingenting om orsak. Det är du som måste veta det innan modellen används för att påverka något.
Formellt
Skolans AI-handledare: Anta att elever själva väljer mellan gammal och ny version. 40 % av användarna av den gamla och 48 % av användarna av den nya slutför en lektion. Skillnaden är verklig i de observerade grupperna, men valet kan bero på motivation. Motivation kan också påverka slutförandet.
Motivation → versionsval och Motivation → slutförande skapar en bakdörrsväg. Skillnaden 48 % minus 40 %
kan därför inte ensam tillskrivas handledaren. Den mäter ett samband mellan version och utfall bland dem som
valde respektive version.
För att pröva om handledaren orsakar en förbättring: slumpa version innan eleven använder tjänsten, håll utfall och tidsfönster lika för båda grupperna, och räkna även elever som tilldelades men aldrig började. Slumpning balanserar möjliga förväxlingsfaktorer i förväntan. Därefter behövs fortfarande ett intervall för den uppmätta skillnaden; ett randomiserat experiment kan också ge ett osäkert resultat.
Kod
import numpy as np
rng = np.random.default_rng(0)
sommar = rng.uniform(0, 1, 200) # dold förväxlingsfaktor
glass = 100 * sommar + rng.normal(0, 10, 200)
drunkning = 5 * sommar + rng.normal(0, 1, 200)
print(np.corrcoef(glass, drunkning)[0, 1]) # ≈ 0.8 — stark korrelation utan orsak
# kontrollera för sommar: residualer
res_g = glass - np.polyval(np.polyfit(sommar, glass, 1), sommar)
res_d = drunkning - np.polyval(np.polyfit(sommar, drunkning, 1), sommar)
print(np.corrcoef(res_g, res_d)[0, 1]) # ≈ 0 — sambandet försvinner
För att påstå orsak: randomiserat experiment (A/B-test) eller mycket noggrann kontroll för alla förväxlingsfaktorer — och även då med förbehåll.
Behärskning innebär
- Beräknar och tolkar Pearson-korrelation
- Ger exempel på förväxlingsfaktor och omvänd kausalitet
- Förklarar vad som krävs för att påstå orsak
Förkunskaper
Logga in för att göra övningarna och bygga upp din behärskning.
Källor
- NIST — Choosing an experimental design
- Wikipedia — Korrelation (CC BY-SA 4.0) — CC BY-SA 4.0
- arXiv — Intelligible Models for HealthCare (Caruana m.fl.) — arXiv (öppen åtkomst; licens per artikel)