01 · Podstawy · 4 min czytania · Interaktywne · aktualizacja
Co to jest błąd standardowy i czym różni się od odchylenia standardowego?
W skrócie
Błąd standardowy mówi, jak bardzo wynik z próby zmieniałby się przy ponownym losowaniu. Maleje jak 1/√n: czterokrotnie większa próba to połowa błędu.
Co to jest
Próbkowanie to wnioskowanie o całej populacji na podstawie jej części — próby. Każda liczba policzona z próby (średnia, odsetek, dokładność modelu) jest statystyką, która przy innym losowaniu wyszłaby trochę inaczej. Rozkład wartości, jakie przyjęłaby statystyka przy wielokrotnym powtarzaniu losowania, to jej rozkład z próby.
Błąd standardowy (SE) to odchylenie standardowe tego rozkładu z próby: mówi, o ile typowo wynik z jednej próby różni się od wartości w populacji. Dla średniej z n niezależnych obserwacji SE = σ / √n, gdzie σ to odchylenie standardowe w populacji (w praktyce szacowane z próby).
Trzeba odróżnić dwie rzeczy. Odchylenie standardowe opisuje rozrzut pojedynczych obserwacji — jak bardzo różnią się od siebie ludzie. Błąd standardowy opisuje niepewność oszacowania — jak bardzo mylimy się co do średniej. Pierwsze nie maleje z liczebnością próby, drugie maleje.
Mechanizm — dlaczego tak działa
Skąd √n? Średnia to suma n obserwacji podzielona przez n. Jeśli obserwacje są niezależne, wariancje sumy się dodają: wariancja sumy to n · σ². Dzielenie przez n zmniejsza wariancję n² razy, więc wariancja średniej wynosi σ² / n, a jej odchylenie standardowe σ / √n. Intuicyjnie: błędy pojedynczych obserwacji częściowo się znoszą, bo jedne są w górę, a inne w dół — ale tylko częściowo, stąd pierwiastek, a nie samo n.
Konsekwencja praktyczna jest bolesna: precyzja rośnie wolno. Żeby zmniejszyć błąd o połowę, trzeba czterokrotnie powiększyć próbę; żeby zmniejszyć go dziesięciokrotnie — stukrotnie. Dotyczy to także oceny modeli: dokładność 0,85 policzona na 200 przypadkach testowych ma błąd standardowy około 0,025, więc różnica 0,01 między dwoma modelami to prawie na pewno szum.
Wzór σ / √n zakłada niezależność obserwacji. Gdy dane są skorelowane — pomiary tego samego pacjenta, kolejne dni szeregu czasowego, zdjęcia z jednego aparatu — efektywna liczebność próby jest mniejsza niż n i wzór zaniża niepewność. Zakłada też, że próba jest losowa: błąd standardowy mierzy tylko zmienność losowania, nie obciążenie wynikające z tego, kogo w ogóle dało się zbadać. Nawet nieskończenie wielka, ale stronnicza próba daje precyzyjnie błędny wynik.
Gdy losujemy bez zwracania znaczną część skończonej populacji, potrzebna jest poprawka na skończoną populację: SE mnoży się przez √((N − n) / (N − 1)). Gdy próba obejmuje całą populację, błąd spada do zera, bo nie ma już czego szacować.
Dzięki centralnemu twierdzeniu granicznemu rozkład z próby średniej jest przy większych n zbliżony do normalnego, nawet gdy dane nie są. Dlatego „średnia ± 2 SE” daje w przybliżeniu 95-procentowy przedział ufności. Dla statystyk, dla których nie ma prostego wzoru (mediana, AUC, współczynnik korelacji), błąd standardowy szacuje się metodą bootstrap.
Na przykładzie
Zbiór Titanic zawiera wiek dla 714 pasażerów: średnia 29,70 roku, odchylenie standardowe 14,53. Potraktujmy tych 714 osób jako populację i losujmy z niej (bez zwracania) po 10 000 prób różnej wielkości. Dla prób po 25 osób odchylenie standardowe uzyskanych średnich wynosi 2,84 roku, a wzór σ / √25 daje 2,90; 95% średnich mieści się między 24,2 a 35,3 roku. Dla prób po 100 osób rozrzut średnich spada do 1,35 i 95% z nich mieści się między 27,1 a 32,4 roku.
Dla prób po 400 osób symulacja daje 0,48, a gołe σ / √n aż 0,73. Rozbieżność znika po poprawce na skończoną populację (0,48): 400 osób to ponad połowa z 714, więc kolejne próby w dużej mierze się pokrywają. W praktyce mamy tylko jedną próbę: przykładowa próba 25 osób dała średnią 31,95 i odchylenie 16,73, więc oszacowany SE = 16,73 / 5 = 3,35 — rzetelnie sygnalizuje, że średnia z takiej próby może się mylić o kilka lat. Dla całego zbioru odsetek ocalałych 0,384 ma SE = √(0,384 · 0,616 / 891) = 0,016.
Dane: Titanic
W praktyce
- Błąd standardowy średniej:
scipy.stats.sem(x)albox.std(ddof=1) / np.sqrt(len(x)); w pandass.sem(). - Dla odsetka (np. dokładności) SE = √(p(1 − p) / n); przy p bliskim 0 lub 1 i małym n lepiej użyć przedziału Wilsona (
statsmodels.stats.proportion.proportion_confint). - Przy walidacji krzyżowej raportuj średnią i rozrzut wyników z foldów (
cross_val_score), pamiętając, że foldy nie są w pełni niezależne, więc prosty SE jest zaniżony. - Dla dowolnej statystyki błąd oszacujesz bootstrapem:
scipy.stats.bootstraplub ręcznie losując ze zwracaniem przezrng.choice(x, len(x), replace=True). - Typowy błąd: słupki błędów na wykresie bez informacji, czy to odchylenie standardowe, błąd standardowy czy przedział ufności — różnią się kilkukrotnie.
Najczęstsze pytania
- Kiedy podawać odchylenie standardowe, a kiedy błąd standardowy?
- Odchylenie standardowe, gdy opisujesz rozrzut w danych (jak różni są pacjenci). Błąd standardowy, gdy opisujesz niepewność oszacowania (jak dokładnie znasz średnią). Mylenie ich sprawia, że wyniki wyglądają na bardziej lub mniej pewne, niż są.
- Ile obserwacji potrzeba, żeby wynik był wiarygodny?
- To zależy od rozrzutu danych i od tego, jakiej precyzji potrzebujesz. Wzór n = (σ / pożądany SE)² daje odpowiedź dla średniej: przy σ = 15 i pożądanym SE = 1 potrzeba około 225 obserwacji.
- Czy duża próba chroni przed błędem?
- Chroni przed błędem losowym, ale nie przed systematycznym. Ankieta milionów osób, które same zgłosiły się do badania, może dawać bardzo mały błąd standardowy i jednocześnie mocno obciążony wynik.
Źródła
- Wasserman „All of Statistics”, Springer, 2004, rozdz. 5 (Convergence of Random Variables) i 6 (Models, Statistical Inference and Learning).
- Student, 1908, „The probable error of a mean”, Biometrika 6(1), 1–25.
- James, Witten, Hastie, Tibshirani „An Introduction to Statistical Learning”, 2nd ed., Springer, 2021, rozdz. 3.1.2 i 5.2 (The Bootstrap).
- Efron, Tibshirani „An Introduction to the Bootstrap”, Chapman & Hall, 1993, rozdz. 5–6.
- Dokumentacja SciPy: scipy.stats.sem, https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.sem.html