15.2 Standard error és konfidenciaintervallum

15.2.1 Cél és konkrét helyzet

A Northstar kezdőlabor orders.csv adatában szeretnénk megbecsülni egy rendelés basket_minor értékének sokasági átlagát, μ\mu-t, eurócentben. A megfigyelési egység egy rendelés; a minta nn függetlenül kiválasztott rendelés. A sokasági szórás nem ismert, ezért a mintából becsüljük. A feladat nem egyetlen pontbecslés: olyan intervallumot kell adnunk, amelynek eljárása a névleges 95%-os szinten lefedi az ismeretlen paramétert. Azt is ellenőriznünk kell, hogy ez a lefedettség tényleg közel van-e a névleges szinthez, mert a feltételek sérülésekor eltér.

Előzetes becslés: ha a sokaság közel normális, σ≈800\sigma \approx 800 cent, n=30n=30 és α=0.05\alpha=0.05, akkor a t-intervallum félszélessége körülbelül 2.045⋅800/30≈2992.045 \cdot 800/\sqrt{30} \approx 299 cent. A tapasztalt lefedettség 1000 ismételt mintán 0,95 körül várható, Monte Carlo-standard hibája körülbelül 0,0069. A 0,93 alatti vagy 0,97 feletti eredmény kivizsgálandó, de önmagában nem bizonyítja a modellfeltevések sérülését: a szimuláció véletlen ingadozását is figyelembe kell venni.

15.2.2 Standard error, konfidenciaszint és lefedettség

A Paraméter, becslő és likelihood alfejezetben a becslő (estimator) olyan függvény, amely minden lehetséges mintához számot rendel, a becslés (estimate) pedig egy konkrét mintán kapott szám. Az átlagbecslő X‾=1n∑i=1nXi\bar X = \frac{1}{n}\sum_{i=1}^n X_i, ahol

Ha az XiX_i-k függetlenek, azonos eloszlásúak, és Var(Xi)=σ2<∞\mathrm{Var}(X_i)=\sigma^2<\infty, akkor az átlag szórásnégyzete

Var(X‾)=Var(1n∑i=1nXi)=σ2n, \mathrm{Var}(\bar X)=\mathrm{Var}\left(\frac{1}{n}\sum_{i=1}^n X_i\right)=\frac{\sigma^2}{n},

tehát az átlag standard error-ja, azaz a becslő mintavételi eloszlásának szórása

SE(X‾)=σn. \mathrm{SE}(\bar X)=\frac{\sigma}{\sqrt n}.

Ez még a sokasági σ\sigma-tól függ, ami gyakran ismeretlen. A mintabeli szórásnégyzet a korrigált, n−1n-1 osztójú becslés:

s2=1n−1∑i=1n(Xi−X‾)2, s^2=\frac{1}{n-1}\sum_{i=1}^n (X_i-\bar X)^2,

és a becsült standard error

SÊ=sn. \widehat{\mathrm{SE}}=\frac{s}{\sqrt n}.

Fontos megkülönböztetni tehát a mintavételi eloszlás standard errorját (σ/n\sigma/\sqrt n, elméleti mennyiség) és a becsült standard errort (s/ns/\sqrt n, az adatból számolható mennyiség). Például ha σ=200\sigma=200 és n=25n=25, akkor SE=200/25=40\mathrm{SE}=200/\sqrt{25}=40; ha egy konkrét mintából s=220s=220, akkor SÊ=220/5=44\widehat{\mathrm{SE}}=220/5=44.

A konfidenciaszint (confidence level) a 100(1−α)%100(1-\alpha)\% névleges érték; a gyakori 95% esetén α=0.05\alpha=0.05. A lefedettség (coverage) az eljárás tényleges tulajdonsága: ha nagyon sok, egymástól függetlenül vett mintán megismételjük az intervallumkészítést, a minták mekkora hányadában tartalmazza az intervallum a rögzített paramétert. A cél az, hogy a tapasztalt lefedettség közel legyen a névleges szinthez.

A normális sokaságon a klasszikus intervallum két változata:

A t-intervallum pontos lefedettségének feltétele: az XiX_i-k függetlenek és azonos normális eloszlásúak. Ekkor a statisztika (X‾−μ)/(s/n)(\bar X-\mu)/(s/\sqrt n) pontosan tn−1t_{n-1} eloszlású, ezért minden nn-re a lefedettség pontosan 1−α1-\alpha. Ha a sokaság nem normális, de a szórása véges, a centrális határeloszlás miatt nagy nn-re a lefedettség közelít a névleges szinthez; a közelítés sebessége eloszlásfüggő, ferde eloszlásnál lassabb. A függetlenség sérülése (például ugyanazon ügyfél több rendelésének összekeverése) nem javítható pusztán nagyobb mintával.

15.2.3 Teljes minimális munkapélda

Előbb kézi kontroll egy n=4n=4 elemű mintán. Legyenek az értékek: x1=8x_1=8, x2=11x_2=11, x3=9x_3=9, x4=12x_4=12. Az átlag x‾=10\bar x=10. A korrigált szórásnégyzet:

s2=(8−10)2+(11−10)2+(9−10)2+(12−10)23=4+1+1+43=103≈3.333, s^2=\frac{(8-10)^2+(11-10)^2+(9-10)^2+(12-10)^2}{3}=\frac{4+1+1+4}{3}=\frac{10}{3}\approx 3.333,

így s≈1.826s\approx 1.826, SÊ=1.826/4=0.913\widehat{\mathrm{SE}}=1.826/\sqrt{4}=0.913. A t0.975,3t_{0.975,3} kvantilis 3.182, ezért a 95%-os intervallum:

10±3.182⋅0.913=10±2.906, 10 \pm 3.182 \cdot 0.913 = 10 \pm 2.906,

azaz [7.094,12.906][7.094,\;12.906]. Ugyanezt a géppel is kiszámoljuk, majd szimuláljuk a lefedettséget. A reprodukálható futtatást a korábbi uv projekt és ténylegesen rögzített függőségek szerint uv run --locked biztosítja; a kódot se_coverage.py néven mentjük a projektgyökérbe.

import numpy as np
from scipy.stats import t

rng = np.random.default_rng(20261020)

# 1) Kézi kis minta ellenőrzése
x = np.array([8.0, 11.0, 9.0, 12.0])
n = x.size
xbar = x.mean()
s = x.std(ddof=1)          # korrigált mintabeli szórás
se = s / np.sqrt(n)
crit = t.ppf(0.975, df=n - 1)
lo, hi = xbar - crit * se, xbar + crit * se
print(f"n={n}, mean={xbar:.3f}, s={s:.3f}, se={se:.3f}")
print(f"95% CI: [{lo:.3f}, {hi:.3f}]")

# 2) Lefedettség-szimuláció ismert parametrikus modellből
mu, sigma, reps = 5000.0, 800.0, 1000
for n in (10, 30, 100):
    rows = rng.normal(mu, sigma, size=(reps, n))   # shape (reps, n)
    means = rows.mean(axis=1)                      # shape (reps,)
    s_hat = rows.std(axis=1, ddof=1)               # shape (reps,)
    se_hat = s_hat / np.sqrt(n)
    crit = t.ppf(0.975, df=n - 1)
    lo = means - crit * se_hat
    hi = means + crit * se_hat
    coverage = np.mean((lo <= mu) & (hi >= mu))
    print(f"n={n:3d}: simulated t-CI coverage = {coverage:.3f}")

A kódblokk nem futtatott e szöveg írásakor; a közölt output szemléltető, elméletileg várt eredmény:

n=4, mean=10.000, s=1.826, se=0.913
95% CI: [7.094, 12.906]
n= 10: simulated t-CI coverage = 0.948
n= 30: simulated t-CI coverage = 0.952
n=100: simulated t-CI coverage = 0.949

A shape-ellenőrzés a kód szerződése: rows alakja (reps, n), mert minden sor egy független minta; az axis=1 szerinti összegzés átlaga means alakja (reps,), és ugyanez igaz az s_hat, se_hat, lo, hi vektorokra. A (lo <= mu) & (hi >= mu) rész elemenkénti logikai érték, amelynek átlaga a relatív gyakoriság. A Monte Carlo lefedettségbecslő standard hibája a binomiális szórásból közelítőleg

0.95⋅0.051000≈0.0069, \sqrt{\frac{0.95\cdot 0.05}{1000}}\approx 0.0069,

ezért az 1000 ismétléses futásnál a 0.94–0.96 közötti érték tekinthető a névleges 95%-kal egyezőnek. A seed (20261020) a NumPy generátorát rögzíti, de ez nem garantál bitazonosságot eltérő NumPy-verziók vagy platformok között.

A t-kritikus érték és a normális kvantilis közötti különbséget egy chart is mutatja; a pontok a scipy.stats.t eloszlásfüggvényéből számított értékek, nem mérések.

t-kritikus érték 95%-os intervallumhoz - Számított elméleti kvantilisek; a normális határérték 1.960.

Nagy szabadsági foknál a t-eloszlás a standard normálishoz tart, ezért a kritikus érték 1.96-hoz konvergál.

15.2.4 Eredmény értelmezése

A kézi kontroll visszaadja a levezetett [7.094,12.906][7.094, 12.906] intervallumot, tehát a ddof=1 és a n−1n-1 szabadsági fok együtt helyes. A szimulációban mindhárom mintanagyságnál a lefedettség a Monte Carlo hibahatáron belül 0.95. Ez nem bizonyítja, hogy az eljárás minden eloszlásra jó; csak azt, hogy ebben a normális szimulációban a névleges szintet visszaadja. Ha a kimenet például 0.91 lenne, akkor valamelyik feltétel sérül, vagy a kódban van hiba, például a nevezőben np.sqrt(n) helyett véletlenül n szerepel.

Szimulációs lefedettségnél az elfogadási sávot a replikációszámtól függő Monte Carlo-hiba alapján válasszuk, ne utólag az eredményhez igazítsuk. A becsült standard error és a nominális konfidenciaszint külön mennyiség.

15.2.5 Feladatok

  1. Értelmezés kézzel. Egy n=5n=5 elemű minta: [1020,980,1010,990,1040][1020, 980, 1010, 990, 1040], egységekben: EUR-cent. Számold ki papíron az átlagot, a korrigált ss-et, a becsült standard errort és a 95%-os t-intervallumot. Ellenőrzéshez használd a t0.975,4=2.776t_{0.975,4}=2.776 értéket.

  2. Implementálás szimulációval. Írj olyan függvényt, amely adott mu, sigma, n, reps paraméterekkel normális eloszlásból generál mintákat, kiszámolja a 95%-os t-intervallumokat, és visszaadja a lefedettséget. Futtasd mu=100, sigma=25, n=20, reps=2000 értékekkel, és add meg, mekkora Monte Carlo hibahatárt fogadsz el a 0.95 körül.

  3. Hibadiagnózis. Egy kolléga a következő kódot használja a lefedettség mérésére: se = rows.std(axis=1) / np.sqrt(n) (a ddof=1 elhagyásával), majd crit = 1.96 minden n-re. Kis mintán, például n=5 esetén mit várunk: a lefedettség magasabb, alacsonyabb, vagy egyenlő lesz a 95%-kal? Indokold a két hiba irányát külön-külön.

  4. Megváltozott eloszlás. Ugyanaz a paraméter, mint a minimális példában: μ=5000\mu=5000 cent. Most a minták lognormális eloszlásból származnak: rng.lognormal(mean=np.log(5000), sigma=0.5, size=(reps, n)). Futtasd a szimulációt n=10 és n=200 esetén, reps=2000 mellett. Milyen lefedettséget vársz kis és nagy mintán, és miért térhet el a 95%-tól?

15.2.6 Megoldások és indoklás

1. Az átlag:

x‾=1020+980+1010+990+10405=50405=1008. \bar x=\frac{1020+980+1010+990+1040}{5}=\frac{5040}{5}=1008.

A korrigált szórásnégyzet:

s2=(1020−1008)2+(980−1008)2+(1010−1008)2+(990−1008)2+(1040−1008)24. s^2=\frac{(1020-1008)^2+(980-1008)^2+(1010-1008)^2+(990-1008)^2+(1040-1008)^2}{4}.

A tagok: 122=14412^2=144, (−28)2=784(-28)^2=784, 22=42^2=4, (−18)2=324(-18)^2=324, 322=102432^2=1024; összegük 22802280, tehát s2=570s^2=570, s=570≈23.874s=\sqrt{570}\approx 23.874. A becsült standard error 23.874/5≈10.67723.874/\sqrt{5}\approx 10.677. A t0.975,4=2.776t_{0.975,4}=2.776 kritikus értékkel:

1008±2.776⋅10.677=1008±29.64, 1008 \pm 2.776 \cdot 10.677 = 1008 \pm 29.64,

azaz [978.36,1037.64][978.36,\;1037.64]. Ellenőrzésképp a Python-kód ugyanezt adja; a tolerancia kerekítésből adódóan ±0.1\pm 0.1 cent.

2. Egy lehetséges függvény:

def coverage_normal_t(mu, sigma, n, reps, seed=20261020):
    rng = np.random.default_rng(seed)
    rows = rng.normal(mu, sigma, size=(reps, n))
    means = rows.mean(axis=1)
    s_hat = rows.std(axis=1, ddof=1)
    se_hat = s_hat / np.sqrt(n)
    crit = t.ppf(0.975, df=n - 1)
    lo = means - crit * se_hat
    hi = means + crit * se_hat
    return np.mean((lo <= mu) & (hi >= mu))

coverage = coverage_normal_t(100, 25, 20, 2000)
print(f"coverage: {coverage:.3f}")

Szemléltető, nem e szöveg írásával futtatott eredmény: coverage: 0.951. A Monte Carlo hiba sqrt(0.95 * 0.05 / 2000) ≈ 0.0049, tehát a 0,945–0,955 sáv csak körülbelül egy Monte Carlo-standard hibányi, nem megfelelő 95%-os elfogadási tartomány. Közelítő 95%-os Monte Carlo-sáv: 0,95 ± 1,96·0,0049, azaz nagyjából 0,940–0,960. A 0,930-as eredmény indokolja a kód, a generálás és a modellfeltevések ellenőrzését, illetve a replikációszám növelését.

3. Két külön hiba van. Ha ddof=0 marad, akkor a minta szórása lefelé torzít, mert a nevezőben nn helyett n−1n-1 kell. A rows.std(axis=1) alapértelmezésben nn osztójú, így a nevező n\sqrt{n}-nel együtt nem a standard error torzítatlan változatát adja, hanem (n−1)/n\sqrt{(n-1)/n}-szeresét annak. A becsült intervallum túl keskeny lesz, tehát a lefedettség csökken. A z=1.96z=1.96 használata a t0.975,n−1t_{0.975,n-1} helyett ugyancsak túl keskeny intervallumot ad, mert kis nn esetén a t-kvantilis nagyobb, például n=5n=5-nél 2.7762.776 a 1.961.96-tal szemben. A két hiba egy irányba hat: a lefedettség várhatóan 0.95 alá esik, n=5n=5-nél akár 0.85 környékére is, mert az extra szórásbecslési bizonytalanságot és a ferdeséget az intervallum nem kompenzálja.

4. A lognormális beállítás várható értéke μ=exp(log(5000)+0.52/2)≈5000⋅1.133=5665\mu = \exp(\log(5000)+0.5^2/2)\approx 5000\cdot 1.133 = 5665 lenne, ezért a paraméter nem pontos, hacsak nem a móduszra gondolunk; itt a szimuláció várható értéke kissé eltér a nominális 5000-től. Még ha a paramétert helyesen is illesztenénk, a lognormális eloszlás erősen jobbra ferde. Kis n=10n=10 esetén a centrális határeloszlás közelítése rossz; az átlag mintavételi eloszlása még ferde, így a szimmetrikus t-intervallum lefedettsége 95% alá esik, tipikusan 0.85–0.90 közé. Nagy n=200n=200 esetén a közelítés javul, a lefedettség már 0.93–0.95 lehet, de a ferdeség miatt még nem garantált pontosan 95%. A diagnózishoz növeljük a reps értéket, és számoljuk ki a Monte Carlo hibát is.

15.2.7 Gyakori tévedés ellenpéldával

A leggyakoribb félreértés: „ez a konfidenciaintervallum 95% valószínűséggel tartalmazza a paramétert.” A klasszikus gyakorisági értelmezésben a μ\mu paraméter rögzített, nem véletlen; ami véletlen, az a mintából számolt intervallum. Ha például a kézi mintából a 95%-os intervallum [978.36,1037.64][978.36,\;1037.64], és a valódi paraméter μ=1000\mu=1000, akkor ez az intervallum tudottan lefedi a paramétert, tehát annak valószínűsége, hogy lefedi, itt nem 95%, hanem 1. Ha egy másik mintából [1010,1020][1010,\;1020] adódott volna, akkor az nem tartalmazná a μ=1000\mu=1000 értéket, és ugyanígy nem mondhatnánk rá, hogy 95% eséllyel tartalmazza; konkrétan itt 0 lenne a lefedettség valószínűsége, nem 0.95. A 95% az eljárás ismételt mintavételi tulajdonsága: hosszú távon a minták 95%-ában fedi a paramétert. Ezért a „valószínűséggel van a paraméter az intervallumban” állításhoz Bayesi megközelítés és prior eloszlás kell, ami a Credible interval és posterior predictive check alfejezetben kerül majd elő. E különbség a gyakorlatban is fontos: egyetlen döntéshez soha ne úgy hivatkozzunk a CI-re, mintha az adott intervallum belső valószínűséget hordozna.

15.2.8 Önellenőrzés

Ellenőrizd, hogy a kód ddof=1-et használ, a kritikus érték df=n-1 szabadsági fokkal készül, és a szimuláció mu-ja azonos a paraméterrel. Számold ki a Monte Carlo hiba nagyságrendjét, és ne nevezz pontosnak olyan lefedettséget, amelyet nem futtattál. A shape (reps, n) és a tengely szerinti műveletek egyezzenek; a logikai vektor átlaga a relatív gyakoriság. Ha a lefedettség 95%-tól távol esik, előbb a függetlenséget és az eloszlás ferdeségét vizsgáld, mielőtt a módszert elvetnéd.

15.2.9 Rövid összefoglaló

A standard error a becslő mintavételi szórása; az átlagé ismert σ\sigma mellett σ/n\sigma/\sqrt n, ismeretlen szórásnál s/ns/\sqrt n-nel becsüljük. A t-intervallum t1−α/2,n−1t_{1-\alpha/2,n-1} kritikus értéket használ, és független normális minta esetén pontosan a névleges szinten fed. A lefedettséget szimulációval mértük: 1000–2000 ismételt mintán a tapasztalt arány 0.95 körül várható, körülbelül 0,007 (1000 ismétlés) és 0,005 (2000 ismétlés) Monte Carlo-standard hibával. A konfidenciaszint az eljárás ismételt tulajdonsága, nem a konkrét intervallum valószínűsége. A következő alfejezetben a bootstrap használatát vizsgáljuk, amikor a normalitás vagy a szórás becslésének feltételei sérülhetnek.