Hoppa till innehållet
AI-grafen
E· Universitetstatistik-sannolikhet· ca 60 min· utvecklande· verifierad 2026-09-20

Konfidensintervall

Kunna beräkna och tolka konfidensintervall för medelvärden och andelar.

Förkunskaper

Intuition

Ett 95 %-konfidensintervall är ett intervall beräknat så att, om du upprepade hela stickprovsproceduren många gånger, 95 % av intervallen skulle täcka det sanna värdet. Det är inte «95 % sannolikhet att sanningen ligger här» — sanningen är fast, intervallet slumpar.

För ett medelvärde: x̄ ± 1,96·s/√n (stort n). För en andel: p̂ ± 1,96·√(p̂(1−p̂)/n). Vid små n eller andelar nära 0/1: Wilson-intervall.

Användning i ML: rapportera testmått med intervall; två intervall som överlappar mycket → skillnaden är inte visad. Bootstrap ger intervall för vilket mått som helst (F1, BLEU, agentens lösningsgrad) utan formel.

Kod

import numpy as np
from scipy import stats

# medelvärde, t-fördelning (litet n)
fel = np.array([3.1, 2.4, 4.0, 3.3, 2.9, 3.8, 3.5, 2.7])       # MAE per körning
m, se = fel.mean(), fel.std(ddof=1) / np.sqrt(len(fel))
lo, hi = stats.t.interval(0.95, len(fel) - 1, loc=m, scale=se)
print(round(m, 2), round(lo, 2), round(hi, 2))                  # 3.21 2.75 3.67

# andel: Wilson
def wilson(k, n, z=1.96):
    p = k / n; d = 1 + z**2 / n
    c = (p + z**2 / (2 * n)) / d; h = z * np.sqrt(p * (1 - p) / n + z**2 / (4 * n**2)) / d
    return c - h, c + h
print(wilson(87, 100))                                          # (0.79, 0.92)

# bootstrap för F1
from sklearn.metrics import f1_score
rng = np.random.default_rng(0); idx = np.arange(len(y_true))
f1s = [f1_score(y_true[i], y_pred[i], average="macro") for i in (rng.choice(idx, len(idx)) for _ in range(2000))]
print(np.percentile(f1s, [2.5, 97.5]))

Behärskning innebär

  • Beräknar konfidensintervall för medelvärde och andel
  • Tolkar intervallet korrekt (frekventistiskt)
  • Använder bootstrap för godtyckliga mått

Logga in för att göra övningarna och bygga upp din behärskning.

Källor

Alla källor och licenser