← CS Lab Math & Theory / Standard Deviation & Variance Open standalone ↗

Variance and standard deviation say how far data spreads around its mean. The mean tells you the center; these tell you the width. Same average, different spread — completely different data.

Where you meet it

What it does

Variance averages the squared distances of points from the mean. Standard deviation is its square root, which pulls the number back into the data's original units, so it's the one you actually report. Both are zero only when every value is identical; they grow as points scatter wider.

The squaring that gives you clean, differentiable math is the same squaring that lets one outlier hijack the whole spread.

How it works

Take each deviation x − μ, square it, average, then root:

variance  σ² = (1/N) · Σ (xᵢ − μ)²
std dev   σ  = √σ²

Why square, not absolute value? Squaring kills the sign so positive and negative deviations don't cancel — but unlike |x − μ| it stays smooth and differentiable, which is why every least-squares method, Gaussian, and ANOVA is built on it. The price: big deviations count quadratically.

Population vs sample. When your data is the whole population, divide by N (above). When it's a sample estimating a larger population, divide by n − 1 instead — Bessel's correction:

sample variance  s² = (1/(n−1)) · Σ (xᵢ − x̄)²

The reason: you measured deviations from the sample mean , and the sample mean sits closer to its own points than the true mean does. That makes the raw average of squares too small. Dividing by n − 1 instead of n nudges it back up to an unbiased estimate of the population variance.

Watch out

  • N vs n − 1 matters. In NumPy this is ddof: np.std(x) uses ddof=0 (population, ÷N); pass ddof=1 for the sample version (÷n−1). pandas defaults the other way — .std() uses ddof=1. Mismatched defaults bite.
  • Outlier-sensitive. Squaring magnifies far-off points, so a single extreme value can dominate σ. For heavy tails, prefer robust measures like the IQR or MAD.
  • Symmetry assumed. mean ± SD only describes the data well when it's roughly symmetric. On skewed data the band is misleading — summarise with quantiles instead.
  • Bessel's correction unbiases the variance, not the SD itself (the square root re-introduces a small bias). Usually negligible, occasionally not.

Go deeper

Varianz und Standardabweichung sagen, wie weit Daten um ihren Mittelwert streuen. Der Mittelwert nennt das Zentrum; diese Maße nennen die Breite. Gleicher Mittelwert, andere Streuung — völlig andere Daten.

Wo es vorkommt

Was es tut

Die Varianz mittelt die quadrierten Abstände der Punkte vom Mittelwert. Die Standardabweichung ist ihre Wurzel und holt die Zahl zurück in die ursprüngliche Einheit der Daten — deshalb berichtet man sie. Beide sind nur dann null, wenn alle Werte gleich sind; sie wachsen, je weiter die Punkte streuen.

Dasselbe Quadrieren, das dir glatte, differenzierbare Mathematik schenkt, lässt einen einzigen Ausreißer die ganze Streuung kapern.

Wie es funktioniert

Nimm jede Abweichung x − μ, quadriere sie, mittle, dann ziehe die Wurzel:

Varianz  σ² = (1/N) · Σ (xᵢ − μ)²
SD       σ  = √σ²

Warum quadrieren statt Betrag? Das Quadrat tilgt das Vorzeichen, sodass positive und negative Abweichungen sich nicht aufheben — anders als |x − μ| bleibt es aber glatt und differenzierbar. Genau darauf bauen alle Kleinste-Quadrate-Verfahren, die Gauß-Verteilung und die Varianzanalyse auf. Der Preis: große Abweichungen zählen quadratisch.

Population vs. Stichprobe. Sind deine Daten die ganze Grundgesamtheit, teile durch N (oben). Sind sie eine Stichprobe, die eine größere Population schätzt, teile stattdessen durch n − 1 — die Bessel-Korrektur:

Stichproben-Varianz  s² = (1/(n−1)) · Σ (xᵢ − x̄)²

Der Grund: Du hast die Abweichungen vom Stichproben-Mittel gemessen, und dieses liegt näher an seinen eigenen Punkten als der wahre Mittelwert. Dadurch fällt der rohe Quadratmittelwert zu klein aus. Das Teilen durch n − 1 statt n hebt ihn auf eine erwartungstreue Schätzung der Populationsvarianz an.

Worauf achten

  • N vs. n − 1 zählt. In NumPy ist das ddof: np.std(x) nutzt ddof=0 (Population, ÷N); für die Stichprobe ddof=1 (÷n−1). pandas macht es andersherum — .std() nutzt ddof=1. Unterschiedliche Defaults sind eine Falle.
  • Ausreißerempfindlich. Das Quadrat vergrößert weit entfernte Punkte, ein einziger Extremwert kann σ dominieren. Bei schweren Tails sind robuste Maße wie IQR oder MAD besser.
  • Symmetrie vorausgesetzt. Mittel ± SD beschreibt die Daten nur bei einigermaßen symmetrischer Verteilung gut. Bei Schiefe ist das Band irreführend — dann lieber mit Quantilen zusammenfassen.
  • Die Bessel-Korrektur macht die Varianz erwartungstreu, nicht die SD selbst (die Wurzel bringt einen kleinen Bias zurück). Meist vernachlässigbar, gelegentlich nicht.

Mehr dazu

Next up
Math & TheoryEigenvectors & PCA Math & TheoryNumPy Broadcasting All concepts →