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
- Reporting a result as
mean ± SD— the band most values fall into. - Feature scaling in ML:
StandardScalerdivides each column by its SD. - Risk and volatility — in finance, SD of returns is the risk number.
- Sizing confidence intervals and detecting outliers (the
z-score).
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 x̄, 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
Nvsn − 1matters. In NumPy this isddof:np.std(x)usesddof=0(population, ÷N); passddof=1for the sample version (÷n−1). pandas defaults the other way —.std()usesddof=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 ± SDonly 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
- Ein Ergebnis als
Mittel ± SDangeben — das Band, in das die meisten Werte fallen. - Feature-Skalierung im ML:
StandardScalerteilt jede Spalte durch ihre SD. - Risiko und Volatilität — im Finanzwesen ist die SD der Renditen die Risikozahl.
- Konfidenzintervalle dimensionieren und Ausreißer erkennen (der
z-Wert).
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 x̄ 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
Nvs.n − 1zählt. In NumPy ist dasddof:np.std(x)nutztddof=0(Population, ÷N); für die Stichprobeddof=1(÷n−1). pandas macht es andersherum —.std()nutztddof=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 ± SDbeschreibt 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.