15.4 Predikciós, paraméter- és Monte Carlo intervallum

15.4.1 Cél és konkrét helyzet

Egy kísérleti tanulóprojektben a 7 napos vásárlói bevételt vizsgáljuk. A megfigyelési egység egy ügyfél, a kimenet revenue_7d_minor, azaz a 7 nap alatti bevétel EUR-centben. A teljes Northstar lab helyett most egy tíz elemű, teljesen előállított szintetikus mintát használunk, hogy minden lépés kézzel is ellenőrizhető legyen:

x = [10, 12, 9, 14, 11, 13, 8, 15, 10, 12]  # EUR-cent

Modellfeltevésünk tanulási célból: a megfigyelések független, azonos eloszlású (iid) minták egy N(μ,σ2)N(\mu, \sigma^2) normális eloszlásból. Ez statisztikai tanulómodell, nem üzleti tény.

Három különböző bizonytalanságot fogunk riportálni ugyanahhoz a modellhez:

A cél ellenőrzési feltétele: a paraméter-intervallum és a predikciós intervallum a levezetett t-képletet kövesse, a predikciós intervallum legyen szélesebb a paraméter-intervallumnál, és a Monte Carlo-kvantilisek a megadott tolerancián belül közelítsék az analitikus predikciós intervallumot.

Induló feladat: a minta alapján számold ki fejben vagy papíron az átlagot és a korrigált tapasztalati szórást, majd becsüld meg, hogy a 95%-os predikciós intervallum nagyságrendileg mennyivel lesz szélesebb, mint a 95%-os paraméter-intervallum. A részletes levezetés után ugyanezt ellenőrizni fogjuk.

15.4.2 Három bizonytalansági forrás, matematikai híd

A variancia felbontása a kulcs. Ha X1,…,XnX_1, \dots, X_n független, σ2\sigma^2 varianciájú megfigyelés, akkor a mintaátlag varianciája

Var(X‾n)=σ2n, \operatorname{Var}(\bar X_n) = \frac{\sigma^2}{n},

míg egy új megfigyelésé

Var(Xn+1)=σ2. \operatorname{Var}(X_{n+1}) = \sigma^2.

Az új megfigyelés tehát az egyedi zajt is hordozza. Ha a mintaátlagot használjuk középpontnak, a predikciós hiba varianciája a kettő összege:

Var(Xn+1−X‾n)=σ2+σ2n=σ2(1+1n). \operatorname{Var}(X_{n+1} - \bar X_n) = \sigma^2 + \frac{\sigma^2}{n} = \sigma^2\left(1 + \frac{1}{n}\right).

Ebből már látható, miért lesz a predikciós intervallum mindig szélesebb, mint a paraméter bizonytalanságát leíró intervallum: ugyanahhoz a σ\sigma-hoz egy 1+1/n1+1/n szorzó társul.

15.4.2.1 Paraméter-bizonytalanság (parameter uncertainty)

A μ\mu paraméter pontbecslése x‾\bar x. Ha σ\sigma ismeretlen, a standardizált becslő Student-féle t-eloszlást követ n−1n-1 szabadsági fokkal:

X‾n−μs/n∼tn−1. \frac{\bar X_n - \mu}{s / \sqrt n} \sim t_{n-1}.

Itt ss a korrigált tapasztalati szórás,

s=1n−1∑i=1n(xi−x‾)2, s = \sqrt{\frac{1}{n-1}\sum_{i=1}^{n}(x_i - \bar x)^2},

amely s>0s>0, mértékegysége itt EUR-cent. Az 1−α1-\alpha szintű konfidenciaintervallum:

x‾±t1−α/2,n−1sn. \bar x \pm t_{1-\alpha/2,\,n-1} \frac{s}{\sqrt n}.

A tt-kritikus érték stats.t.ppf(1 - alpha/2, df) módon kapható. Az intervallum a becslő mintavételi ingadozását írja le. Frekventista értelmezése: ha az eljárást sok független mintán megismételjük, a lefedettség hosszú távon 1−α1-\alpha lesz. Ez nem azt jelenti, hogy az aktuális μ\mu 95% valószínűséggel esik az aktuális intervallumba.

15.4.2.2 Predikciós intervallum (prediction interval)

Egy új megfigyelésre vonatkozó intervallum más célt szolgál: egy jövőbeli Xn+1X_{n+1} értéket szeretnénk előre megragadni. Ismeretlen σ\sigma mellett

T=Xn+1−X‾ns1+1/n∼tn−1, T = \frac{X_{n+1} - \bar X_n}{s \sqrt{1 + 1/n}} \sim t_{n-1},

ezért az 1−α1-\alpha szintű predikciós intervallum:

x‾±t1−α/2,n−1s1+1n. \bar x \pm t_{1-\alpha/2,\,n-1}\, s \sqrt{1 + \frac{1}{n}}.

A képlet alakja: loc = xbar, scale = s * np.sqrt(1 + 1/n); a scipy.stats.t ilyen paraméterezést használ. A predikciós intervallum tehát kettős forrásból táplálkozik: a paraméterbecslés bizonytalanságából (s/ns/\sqrt n) és az új megfigyelés saját zajából (ss). Kis mintán a 1+1/n1+1/n korrekció érdemi; n=10n=10 mellett 1.1≈1.0488\sqrt{1.1}\approx 1.0488.

15.4.2.3 Szimulációs hiba (simulation error)

Ha a predikciós eloszlás kvantiliseit Monte Carlo-mintavétellel közelítjük, akkor a véges BB szimulációszám miatt a becsült kvantilisnek külön numerikus hibája van. Legyen q̂p\hat q_p az empirikus pp-kvantilis. Közelítő standard hibája:

SE(q̂p)≈p(1−p)/Bf(qp), \operatorname{SE}(\hat q_p) \approx \frac{\sqrt{p(1-p)/B}}{f(q_p)},

ahol f(qp)f(q_p) a szimulált eloszlás sűrűsége a valódi qpq_p kvantilisnél, p∈(0,1)p\in(0,1), BB pozitív egész. A képlet azt mutatja, hogy a Monte Carlo hiba 1/B1/\sqrt B sebességgel csökken: BB négyszerezése körülbelül felezi a numerikus standard hibát. Ez a hiba nem a modell statisztikai bizonytalansága, hanem a számítás felbontásából adódik; tetszőlegesen csökkenthető nagyobb BB-vel, míg a predikciós intervallum szélessége a mintából adódó valódi tanulási korlát.

15.4.2.4 Érzékenység (sensitivity)

Az érzékenységvizsgálat azt kérdezi: mennyire változik a konklúzió, ha a modellfeltevést vagy egy-egy adatpontot módosítjuk? A normális predikciós intervallum különösen érzékeny a kiugrókra, mert mind x‾\bar x, mind ss a teljes mintából számítódik. Ha egy extrém bevételű ügyfél kerül a mintába, az átlag és a szórás is eltolódik, és az intervallum drámaian kiszélesedhet. Ilyenkor vagy robusztusabb összegzést, vagy transzformált modellt (például logaritmikus skálát) kell választani; a sensitivity célja nem az, hogy egyetlen „helyes” intervallumot adjon, hanem hogy láthatóvá tegye, melyik feltevésre támaszkodik az eredmény.

15.4.3 Teljes minimális munkapélda

A kód önálló, csak NumPy-t és SciPy-t használ. Futtatás a projektgyökérből:

python s060_intervals.py
import numpy as np
from scipy import stats

# Rögzített, teljesen szintetikus tanuló-minta: revenue_7d_minor, EUR-cent.
x = np.array([10, 12, 9, 14, 11, 13, 8, 15, 10, 12], dtype=float)
n = x.size                       # int, mintanagyság
df = n - 1                       # int, szabadsági fok
alpha = 0.05

xbar = x.mean()                  # float, EUR-cent
s = x.std(ddof=1)                # float, korrigált minta-szórás
t_crit = stats.t.ppf(1 - alpha / 2, df)  # float, kritikus érték

# 1) Paraméter-intervallum mu-ra
se_mean = s / np.sqrt(n)
ci_lo = xbar - t_crit * se_mean
ci_hi = xbar + t_crit * se_mean

# 2) Predikciós intervallum egy új megfigyelésre
pi_scale = s * np.sqrt(1 + 1 / n)
pi_lo = xbar - t_crit * pi_scale
pi_hi = xbar + t_crit * pi_scale

# 3) Monte Carlo-szimuláció a t-predikciós eloszlásból,
#    hogy a numerikus kvantilis-hibát is lássuk.
rng = np.random.default_rng(20261020)  # reprodukálható seed
B = 10_000                             # szimulációszám

mc_sample = stats.t.rvs(
    df=df,
    loc=xbar,
    scale=pi_scale,
    size=B,
    random_state=rng,
)
mc_lo = np.quantile(mc_sample, alpha / 2)
mc_hi = np.quantile(mc_sample, 1 - alpha / 2)

# A felső 0.975 kvantilis Monte Carlo standard hibája.
# Sűrűség az y-skálán: f_T((y-loc)/scale) / scale.
f_upper = stats.t.pdf(t_crit, df) / pi_scale
mc_se_upper = np.sqrt((1 - alpha / 2) * (alpha / 2) / B) / f_upper

print(f"n={n}, df={df}, t={t_crit:.6f}")
print(f"xbar={xbar:.4f}, s={s:.4f}")
print(f"95% CI:   [{ci_lo:.3f}, {ci_hi:.3f}]")
print(f"95% PI:   [{pi_lo:.3f}, {pi_hi:.3f}]")
print(f"MC 95% PI: [{mc_lo:.3f}, {mc_hi:.3f}]")
print(f"MC SE felső kvantilis: {mc_se_upper:.4f}")

A kimenetben a levezetett értékek a rögzített lista kézi számításából adódnak; az alábbi táblázat ezt mutatja. A tényleges helyi futtatáskor a Monte Carlo-kvantilisek a seed miatt determinisztikusak, de az utolsó tizedesjegyekben a SciPy-verzió numerikus részletei miatt lehet minimális eltérés.

Mennyiség Érték (EUR-cent) Mit fejez ki
95% CI μ\mu-re [9.81,12.99][9.81, 12.99] a mintaátlag mintavételi ingadozása
95% PI új ügyfélre [6.13,16.67][6.13, 16.67] paraméterbizonytalanság + egyedi zaj
MC kvantilis SE ≈0.1\approx 0.1 a szimulációs numerikus hiba nagyságrendje

A CI szélessége körülbelül 3.183.18, a PI szélessége körülbelül 10.5410.54 EUR-cent. A predikciós intervallum tényleg szélesebb, és a különbség a 1+1/n\sqrt{1+1/n} tényezőből, illetve az egyedi zajból következik.

15.4.4 Eredmény értelmezése

A mintaátlag x‾=11.4\bar x = 11.4 EUR-cent. A becsült szórás s≈2.221s\approx 2.221, a standard hiba s/10≈0.702s/\sqrt{10}\approx 0.702. A 95%-os paraméter-intervallum félszélessége 2.262⋅0.702≈1.5892.262 \cdot 0.702 \approx 1.589, tehát a CI [9.81,12.99][9.81, 12.99]. A predikciós intervallum félszélessége 2.262⋅2.221⋅1.1≈5.2702.262 \cdot 2.221 \cdot \sqrt{1.1} \approx 5.270, tehát a PI [6.13,16.67][6.13, 16.67].

A Monte Carlo-szimuláció ugyanabból a t-eloszlásból vesz mintát, ezért a B=10000B=10\,000 replikációból becsült kvantiliseknek a fenti analitikus PI-t kell közelíteniük; a kvantilis Monte Carlo standard hibája a sűrűségbecslés alapján nagyságrendileg 0.10.1 EUR-cent. Ez azt jelenti, hogy a szimulációs numerikus hiba a predikciós intervallum szélességéhez képest elhanyagolható, de külön kell jelenteni, mert a célja és a skálája más, mint a statisztikai intervallumé.

Ellenőrzési invariánsok:

A paraméterintervallum a sokasági mennyiség bizonytalanságát, a predikciós intervallum egy új kimenet szóródását is tükrözi. A Monte Carlo-konfidenciaintervallum pedig egy szimulációs becslés numerikus mintavételi hibájára vonatkozik; ezeket nem szabad felcserélni.

15.4.5 Feladatok

  1. Értelmezés. Magyarázd el saját szavakkal, miért tartalmazza a predikciós intervallum a σ2+σ2/n\sigma^2 + \sigma^2/n varianciát, és miért nem elegendő az új ügyfél becsléséhez a paraméter konfidenciaintervallum. A 95%-os szint mit jelent a két intervallumnál?

  2. Megvalósítás. Módosítsd a fenti kódot 90%-os szintre. Számold ki a 90%-os CI-t és PI-t, és hasonlítsd össze a 95%-os intervallumok szélességével. A stats.t.ppf hívásban mely argumentum változik?

  3. Hibakeresés. Egy kolléga a következő kódot írta a predikciós intervallumhoz:

z = stats.norm.ppf(0.975)
pi_lo = x.mean() - z * x.std(ddof=1)
pi_hi = x.mean() + z * x.std(ddof=1)

Nevezd meg a két statisztikai hibát, és becsüld meg, mennyivel lesz keskenyebb vagy szélesebb ez az intervallum a helyes 95%-os PI-nél a fenti mintán.

  1. Megváltozott feltétel/transzfer. A mintához hozzáadunk egy új ügyfelet, akinek revenue_7d_minor = 300. Futtasd újra a CI-t és a PI-t. Hogyan változik a két intervallum szélessége, és miért jelzi ez a normalitási feltevés érzékenységét? Javasolj egy alternatív modellt vagy transzformációt, amely robusztusabb lehet erre a kiugróra.

15.4.6 Megoldások és indoklás

  1. A mintaátlag szórása σ/n\sigma/\sqrt n, mert nn független megfigyelés átlagolása csökkenti az ingadozást. Egy új megfigyelés viszont egyetlen húzás, amelynek szórása σ\sigma, ezért az új érték és a becsült átlag eltérésének varianciája σ2+σ2/n\sigma^2 + \sigma^2/n. A paraméter-CI azt az intervallumot adja, ahová a becslő μ\mu körül esik; az új ügyfél ettől még szinte bizonyosan kívül lesz, mert az egyedi zaj hiányzik belőle. A 95% frekventista értelemben az eljárás hosszú távú lefedettségére vonatkozik; a CI a paraméterre, a PI az új megfigyelésre ad eljárási garanciát.

  2. alpha = 0.10, és t_crit = stats.t.ppf(0.95, df=9) értéke 1.8331.833. A mintaátlag és a szórás változatlan. A 90%-os CI félszélessége 1.833⋅0.702≈1.2871.833 \cdot 0.702 \approx 1.287, tehát a CI [10.11,12.69][10.11, 12.69]. A 90%-os PI félszélessége 1.833⋅2.3295≈4.2711.833 \cdot 2.3295 \approx 4.271, tehát a PI [7.13,15.67][7.13, 15.67]. A CI szélessége 2.572.57, a PI szélessége 8.548.54 EUR-cent, mindkettő keskenyebb, mint a 95%-os változaté. Ez a példa is mutatja, hogy a szint megadása nélkül az intervallum szélessége nem értelmezhető.

  3. Két hiba van. Egyrészt a kolléga a standard normális kritikus értéket, z0.975=1.96z_{0.975}=1.96 használja a t9,0.975=2.262t_{9,0.975}=2.262 helyett, ami kis mintán alulbecsüli a bizonytalanságot. Másrészt a predikciós skálából hiányzik a 1+1/n\sqrt{1+1/n} korrekció. A hibás félszélesség 1.96⋅2.221≈4.3531.96 \cdot 2.221 \approx 4.353, a helyes 5.2705.270, tehát a hibás intervallum körülbelül 17%-kal keskenyebb. Ha emellett nn nagyobb lenne, a zz és tt közötti eltérés csökkenne, de a 1+1/n\sqrt{1+1/n} akkor is megmaradna, mert az egyedi zaj minden mintanagyságnál jelen van.

  4. Az új minta n=11n=11 elemű, az átlag x‾=(114+300)/11≈37.64\bar x = (114 + 300)/11 \approx 37.64, a korrigált szórás s≈87s\approx 87. A szélsőséges kiugró miatt mind a CI, mind a PI félszélessége drámaian megnő, és a normális predikciós intervallum alsó határa akár negatív is lehet, ami a bevételi adatoknál nem értelmes érték. Ez érzékenységi jelzés: az eredmény nem robusztus a normalitási feltevés megsértésére. Alternatíva például a log(revenue_7d_minor + 1) transzformáció, majd a log-skálán normális modell és a végén visszatranszformálás, vagy egy ferde eloszlást megengedő bootstrap predikciós intervallum; mindkettő külön feltételek mellett érvényes.

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

Az intervallum szélessége önmagában nem jelent jóságot, ha nem mondjuk meg, mire vonatkozik és milyen szintű. A fenti mintán a 95%-os CI szélessége 3.183.18, a 95%-os PI szélessége 10.5410.54. Egy felületes összehasonlítás azt mondhatná, hogy a CI „jobb”, mert keskenyebb; valójában egyszerűen más kérdésre válaszol. Ellenpéldaként vegyünk egy 50%-os CI-t ugyanerre a mintára: a félszélesség 0.703⋅0.702≈0.4930.703 \cdot 0.702 \approx 0.493, a teljes szélesség 0.990.99, tehát keskenyebb, mint a 95%-os CI. Ez mégsem erősebb állítás, hanem alacsonyabb lefedettségi szint. Ugyanígy egy rosszul megválasztott bootstrap intervallum is lehet szűkebb, ha figyelmen kívül hagyja az ügyfélszintű függést (Bootstrap a megfelelő mintavételi egységgel). A szélesség értékelése előtt tehát mindig rögzíteni kell: mi a cél, mi a megfigyelési egység, milyen a szint és milyen modellfeltevés mellett készült az intervallum.

Visszautalásként a Nagy számok és centrális határeloszlás standard hibája itt a tt-eloszlással kombinálódik, a Bootstrap a megfelelő mintavételi egységgel bootstrap-logikája pedig emlékeztet, hogy a megfelelő mintavételi egység nélkül a szimulációs intervallum is félrevezető lehet. A Kernelregisztráció és tiszta újrafuttatás reprodukálhatósági elve itt is érvényes: a Monte Carlo seed rögzítése nélkül a kvantilis-hiba sem reprodukálható.

Önellenőrző kérdések: a kódban a pi_scale mindig nagyobb-e, mint se_mean? A Monte Carlo szimulációnak melyik eloszlásból kell mintát venni? Ha BB-t négyszerezed, milyen arányban változik a Monte Carlo standard hiba?

15.4.8 Rövid összefoglaló

A paraméter-intervallum a μ\mu becslésének mintavételi bizonytalanságát adja meg, a predikciós intervallum ezen felül egy új megfigyelés egyedi zaját is tartalmazza, ezért utóbbi mindig szélesebb. A Monte Carlo szimuláció kvantiliseinek külön numerikus standard hibája van, amely 1/B1/\sqrt B szerint csökken, és nem keverhető a statisztikai bizonytalansággal. A normalitási feltevésre érzékenységvizsgálattal kell rákérdezni, például kiugró hozzáadásával vagy log-transzformált modellel. A következő alkalmazásban ezeket az intervallumfajtákat hipotézisvizsgálati döntésekkel kötjük össze: egy hatásméret, egy predikciós tartomány és egy szimulációs hibahatár együttes értelmezése ad korrekt statisztikai állítást.