Σ
SDCalc
ØvetBegreber·12 min

Robust statistik: MAD, IQR og outlier-resistente metoder

Komplet guide til robust statistik, herunder Median Absolute Deviation (MAD) og Interquartile Range (IQR). Lær, hvornår du skal bruge outlier-resistente spredningsmål med eksempler og Python-kode.

Hvorfor robust statistik?

Standardafvigelse er et kraftfuldt spredningsmål, men den har en kritisk svaghed: ekstrem følsomhed over for outliere. En enkelt ekstrem værdi kan dramatisk oppuste SA og give et vildledende billede af den typiske variation.

Robust statistik giver spredningsmål, der modstår påvirkning fra outliere, hvilket gør dem uundværlige for data fra den virkelige verden, hvor målefejl, dataindtastningsfejl eller ægte ekstreme tilfælde er almindelige.

Eksempel: Outlier-effekten

Data: 10, 12, 11, 13, 12, 11, 100 (én outlier) Standardafvigelse: 32,4 (domineret af outlieren) MAD: 1,0 (ignorerer outlieren) IQR: 1,5 (ignorerer outlieren)

Nedbrudspunkt

En statistiks “nedbrudspunkt” er andelen af data, der kan være ekstrem, før statistikken bliver meningsløs. SA har et nedbrudspunkt på 0% (én outlier kan ødelægge den). MAD og IQR har nedbrudspunkter på 50% – halvdelen af dine data kan være outliere, og de fungerer stadig.

Median Absolute Deviation (MAD)

MAD er det mest robuste spredningsmål. Den beregner medianen af absolutte afvigelser fra medianen:

MAD Formula

MAD = median(|xᵢ - median(x)|)
1

Find medianen

Beregn medianen af dit datasæt.
2

Beregn afvigelserne

Træk medianen fra hver værdi og tag de absolutte værdier.
3

Find MAD

Beregn medianen af disse absolutte afvigelser.

Skalering af MAD til estimering af σ: For normalfordelte data gælder MAD ≈ 0,6745 × σ. For at estimere SA fra MAD ganges med 1,4826:

SD Estimate from MAD

σ̂ = 1.4826 × MAD

Hvorfor 1,4826?

Denne skaleringsfaktor stammer fra forholdet mellem MAD og SA for normalfordelinger. Den sikrer, at den skalerede MAD er en forventningsret estimator af den sande standardafvigelse, når data er normalfordelt.

Interkvartilbredde (IQR)

IQR måler spredningen af de midterste 50% af data – afstanden mellem 25. og 75. percentil:

IQR Formula

IQR = Q3 - Q1 = 75th percentile - 25th percentile

IQR er udbredt, fordi den er nem at forstå, let at visualisere i boksplot og danner grundlag for den almindelige “1,5×IQR-regel” til outlier-detektion.

Skalering af IQR til estimering af σ: For normalfordelte data gælder IQR ≈ 1,35 × σ. For at estimere SA fra IQR:

SD Estimate from IQR

σ̂ = IQR / 1.35 ≈ 0.7413 × IQR

Sammenligning af robuste mål

Standardafvigelse

Bruger alle datapunkter · Mest effektiv for normalfordelte data · Meget følsom over for outliere · Nedbrudspunkt: 0%

MAD

Mest robuste mål · Bruger median (ikke gennemsnit) · Immun over for alle outliere · Nedbrudspunkt: 50%

IQR

Nem at forstå · Bruges i boksplot · Ignorerer de ekstreme 50% · Nedbrudspunkt: 25%

Hvornår skal man bruge robust statistik

  • Udforskende analyse: Når du ikke ved, om der findes outliere, start med robuste mål
  • Datakvalitetsproblemer: Når data kan indeholde fejl eller måleproblemer
  • Tunghalede fordelinger: Når ekstreme værdier er forventelige (finansielle afkast, forsikringskrav)
  • Små stikprøver: Når outliere har uforholdsmæssig stor indflydelse på grund af få observationer
  • Outlier-detektion: At bruge SA til at opdage outliere er cirkulært; brug IQR eller MAD i stedet

Implementeringseksempler

Python
import numpy as np
from scipy import stats

def mad(data):
    """Median Absolute Deviation"""
    median = np.median(data)
    return np.median(np.abs(data - median))

def scaled_mad(data):
    """MAD scaled to estimate SD (for normal data)"""
    return 1.4826 * mad(data)

def iqr(data):
    """Interquartile Range"""
    return np.percentile(data, 75) - np.percentile(data, 25)

# Compare on data with outlier
data = [10, 12, 11, 13, 12, 11, 100]
print(f"SD: {np.std(data, ddof=1):.2f}")
print(f"MAD: {mad(data):.2f}")
print(f"Scaled MAD: {scaled_mad(data):.2f}")
print(f"IQR: {iqr(data):.2f}")