14.4 Nagy számok és centrális határeloszlás

14.4.1 Cél és konkrét helyzet

A Northstar kezdőlabor orders.csv fájljában a delivery_days pozitív egész, jobbra ferde eloszlású: sok rendelés 4-7 nap alatt megérkezik, de van egy hosszú farkú kisebbség, amelyik 10-20 napot is késik. Tegyük fel, hogy a termékmenedzser azt kérdezi: „Ha holnap 100 új rendelés érkezik, mennyire lesz pontos a 7 napos kézbesítési átlagunk becslése?” A kérdés megválaszolásához nem elég az adatok hisztogramját nézni: külön kell választanunk az adatok eloszlását és az átlag mintavételi eloszlását. Ez az alfejezet ezt a két fogalmat építi fel szimulációval, a nagy számok törvénye (law of large numbers, LLN) és a centrális határeloszlás-tétel (central limit theorem, CLT) segítségével.

Kiinduló becslés: ha a delivery_days várható értéke μ≈6\mu \approx 6 nap, szórása σ≈3\sigma \approx 3 nap, akkor 100 rendelés átlagának bizonytalansága nagyjából σ/100=3/10=0,3\sigma / \sqrt{100} = 3/10 = 0{,}3 nap lehet. Ezt a számot ebben az alfejezetben pontosan értelmezzük, és ellenőrizzük, milyen feltételek mellett igaz.

14.4.2 Fogalmi magyarázat: adateloszlás, mintavételi eloszlás, LLN, CLT és standard error

Legyen X1,X2,…,XnX_1, X_2, \ldots, X_n egy nn elemű minta. Minden XiX_i ugyanabból az eloszlásból származik, várható értéke E[Xi]=μE[X_i] = \mu, varianciája Var(Xi)=σ2\operatorname{Var}(X_i) = \sigma^2, és a megfigyelések függetlenek (iid, a Függetlenség, kovariancia és függő adat alfejezetben bevezetett értelemben). A mintaátlag:

X‾n=1n∑i=1nXi.\bar X_n = \frac{1}{n}\sum_{i=1}^n X_i.

Az átlag maga is véletlen mennyiség, hiszen másik mintát véve más értéket kapunk. Ha n=2n=2 és Xi∼Bernoulli(0,5)X_i \sim \text{Bernoulli}(0{,}5), azaz minden elem 0 vagy 1, fejenként 1/21/2 valószínűséggel, akkor a lehetséges minták és átlagaik:

Minta X‾2\bar X_2 Valószínűség
(0, 0) 0,0 0,25
(0, 1) vagy (1, 0) 0,5 0,50
(1, 1) 1,0 0,25

Itt μ=0,5\mu = 0{,}5 és σ2=0,25\sigma^2 = 0{,}25. Az átlag várható értéke 0,25⋅0+0,5⋅0,5+0,25⋅1=0,5=μ0{,}25 \cdot 0 + 0{,}5 \cdot 0{,}5 + 0{,}25 \cdot 1 = 0{,}5 = \mu, varianciája pedig 0,25⋅(0−0,5)2+0,5⋅(0,5−0,5)2+0,25⋅(1−0,5)2=0,125=σ2/20{,}25 \cdot (0-0{,}5)^2 + 0{,}5 \cdot (0{,}5-0{,}5)^2 + 0{,}25 \cdot (1-0{,}5)^2 = 0{,}125 = \sigma^2 / 2. Ez a kézi ellenőrzés mutatja a két alapazonosságot:

E[X‾n]=μ,Var(X‾n)=σ2n.E[\bar X_n] = \mu, \qquad \operatorname{Var}(\bar X_n) = \frac{\sigma^2}{n}.

A második azért igaz, mert a variancia skálázási szabálya szerint Var(aX+b)=a2Var(X)\operatorname{Var}(aX + b) = a^2\operatorname{Var}(X), és független tagok varianciája összeadódik. Az átlag tehát ugyanazon μ\mu körül ingadozik, de a szórása 1/n1/\sqrt n-szeresére csökken. Ezt a mennyiséget nevezzük standard hibának (standard error, SE):

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

A standard hiba mértékegysége megegyezik XX mértékegységével: a fenti szállítási példában nap. Fontos megkülönböztetni a minta szórásától, ss-től, amely az egyes adatpontok szóródását méri; a standard hiba az átlag becslésének bizonytalansága.

A mintavételi eloszlás (sampling distribution) egy statisztika — például az átlag — eloszlása az összes lehetséges azonos méretű minta felett. A gyakorlatban ezt úgy közelítjük, hogy sok független mintát veszünk ugyanabból a populációból, és mindegyikből kiszámoljuk a statisztikát. Amikor a fenti Bernoulli-példában n=2n=2-vel a három lehetséges átlagérték valószínűségeit soroltuk fel, valójában a mintavételi eloszlást írtuk le.

A nagy számok törvénye (LLN) azt mondja ki, hogy nn növekedtével az átlag egyre közelebb kerül μ\mu-höz: nagy mintán a véletlen átlagolás kiátlagolja az egyedi eltéréseket. A standard hiba 1/n1/\sqrt n-es csökkenése ennek a kvantitatív formája: n=100n = 100-nál tízszer kisebb a szóródás, mint n=1n = 1-nél.

A centrális határeloszlás-tétel (CLT) ennél többet állít: nemcsak azt, hogy az átlag koncentrálódik, hanem azt is, hogy az átlag eloszlásának alakja haranggörbéhez tart. Pontosabban, ha XiX_i iid, μ\mu és σ2\sigma^2 véges, akkor a standardizált átlag

Zn=X‾n−μσ/n=X‾n−μSE(X‾n)Z_n = \frac{\bar X_n - \mu}{\sigma / \sqrt n} = \frac{\bar X_n - \mu}{SE(\bar X_n)}

eloszlása n→∞n \to \infty esetén a standard normális eloszláshoz, 𝒩(0,1)\mathcal N(0,1)-hez konvergál. Ez akkor is igaz, ha maga XX erősen ferde vagy akár diszkrét. A konvergencia eloszlásbeli, nem pontonkénti: a ZnZ_n hisztogramja egyre jobban illeszkedik a normális sűrűségre.

A tétel feltételei:

  1. iid minta: a megfigyelések függetlenek és azonos eloszlásúak. Ha például ugyanazon ügyfél több rendelését is belerakjuk, a sorok nem függetlenek, és a σ/n\sigma/\sqrt n képlet általában nem megfelelő; pozitív korreláció esetén gyakran alulbecsli, negatív korreláció esetén akár túlbecsülheti a tényleges standard hibát — ezt a Függetlenség, kovariancia és függő adat alfejezetben a tervezési effektussal láttuk.
  2. Véges variancia: σ2<∞\sigma^2 < \infty. Ez a valós adatoknál általában teljesül, de egyes nehéz farkú eloszlásoknál (például Cauchy) nem, és ott a CLT nem működik.
  3. Elég nagy nn: a gyakorlati közelítés annál jobb, minél nagyobb a minta, és minél kevésbé ferde az alapeloszlás. Erősen ferde eloszlásnál n=30n = 30 lehet kevés, n=100n = 100 vagy n=300n = 300 lehet a biztonságos.

A CLT nem azt állítja, hogy az adatok maguk normálissá válnak nagy mintán. Egy exponenciális eloszlású adathalmaz n=1000n = 1000 elemnél is jobbra ferde marad; csak az átlag eloszlása lesz közel normális. Ez a leggyakoribb félreértés, a Hiány és anomália mint vizsgálati kérdés alfejezetben tárgyalt ferde eloszlásokra ugyanígy vonatkozik.

14.4.3 Minimális munkapélda: exponenciális adat és az átlag eloszlása

A szállítási idő utánzatául válasszunk Exp(λ=1/6)\text{Exp}(\lambda = 1/6) eloszlást, amelynek várható értéke μ=6\mu = 6 nap, szórása σ=6\sigma = 6 nap. Ez jobbra ferde: sok érték 0 és 5 nap között, de ritkán 20-30 napos késések is előfordulnak. Négy mintanagysággal dolgozunk: n=1,5,30,100n = 1, 5, 30, 100. Minden nn-re:

import numpy as np
import matplotlib.pyplot as plt
from scipy import stats

rng = np.random.default_rng(20261020)  # szimulációs seed, nem a Northstar-generátoré
n_sim = 10_000                         # ismételt minták száma B
mu = 6.0                               # az exponenciális várható értéke (nap)
sigma = 6.0                            # az exponenciális szórása (nap)
ns = [1, 5, 30, 100]                   # mintanagyságok

fig, axes = plt.subplots(2, 4, figsize=(14, 6), sharex="col")

for j, n in enumerate(ns):
    # Egyetlen adatminta: az adatok eloszlását mutatja
    one_sample = rng.exponential(scale=mu, size=n)  # shape: (n,)
    axes[0, j].hist(one_sample, bins=25, density=True,
                    color="steelblue", alpha=0.7, range=(0, 30))
    axes[0, j].set_title(f"Adat, n={n}")
    if j == 0:
        axes[0, 0].set_ylabel("Sűrűség")

    # B darab minta átlaga: a mintavételi eloszlás közelítése
    samples = rng.exponential(scale=mu, size=(n_sim, n))  # shape: (B, n)
    means = samples.mean(axis=1)                         # shape: (B,)
    axes[1, j].hist(means, bins=30, density=True,
                    color="darkorange", alpha=0.7)
    # A CLT szerinti normális sűrűség: N(mu, sigma/sqrt(n))
    xs = np.linspace(mu - 4 * sigma / np.sqrt(n), mu + 4 * sigma / np.sqrt(n), 300)
    axes[1, j].plot(xs, stats.norm.pdf(xs, loc=mu, scale=sigma / np.sqrt(n)),
                    "r-", linewidth=2)
    axes[1, j].set_title(f"Átlag, n={n}")
    axes[1, j].set_xlabel("nap")
    if j == 0:
        axes[1, 0].set_ylabel("Sűrűség")

fig.suptitle("Az adat eloszlása (fent) és az átlag mintavételi eloszlása (lent)")
plt.tight_layout()
plt.show()

A fenti kódot itt nem futtattuk; az alábbi leírás a megadott seeddel elméletileg várt, szemléltető kimenet, nem mért eredmény. A felső sor hisztogramjai minden nn-re jobbra ferde exponenciális alakot mutatnak: n=100n = 100-nál is a 0-5 napos sáv a leggyakoribb, és a farok 20 nap fölé nyúlik. Az alsó sorban n=1n = 1-nél az átlag eloszlása azonos az adat eloszlásával. n=5n = 5-nél a hisztogram még enyhén jobbra ferde, de n=30n = 30-nál és n=100n = 100-nál a piros normális görbe már szemmel láthatóan együtt fut a hisztogrammal. A harang alak középpontja mindvégig μ=6\mu = 6 nap körül van, a szélessége viszont nn növekedtével láthatóan csökken: n=100n = 100-nál a vízszintes tengelyen már csak a 4-8 napos sáv a releváns.

14.4.4 Eredmény értelmezése és ellenőrző számítás

A szimuláció numerikus ellenőrzéséhez az átlagok tömbjére vonatkozó két invariant használható. Mivel a B=10000B = 10\,000 átlag maga is egy minta a mintavételi eloszlásból, az ő átlaguk közelíti E[X‾n]=μE[\bar X_n] = \mu-t, a szórásuk pedig közelíti SE(X‾n)=σ/nSE(\bar X_n) = \sigma / \sqrt n-t. A Monte Carlo közelítés hibája nagyjából 1/B≈0,011/\sqrt B \approx 0{,}01 szintű a standardizált mennyiségekre, ezért a következő szemléltető tűréshatárokat fogadhatjuk el: az átlagok átlaga 6±0,056 \pm 0{,}05 nap, az átlagok szórása pedig σ/n\sigma/\sqrt n értékétől legfeljebb néhány százalékkal térhet el.

Például n=100n = 100-ra az elméleti standard hiba 6/100=0,66 / \sqrt{100} = 0{,}6 nap. Ha a szimulált átlagok szórása 0,580{,}58 és 0,620{,}62 nap közé esik, az összhangban van a képlettel. Az n=5n = 5 esetben a standard hiba 6/5≈2,686 / \sqrt 5 \approx 2{,}68 nap, tehát öt rendelés átlaga még nagyon zajos becslés — ezért nem érdemes kis mintából üzleti döntést hozni.

A standardizált értékekre is ellenőrizhetünk. Ha a means tömb átlaga m‾\bar m és szórása sms_m, akkor a z = (means - mu) / (sigma / np.sqrt(n)) tömb hisztogramjának közelítenie kell a 𝒩(0,1)\mathcal N(0,1) sűrűséget. Ennek ferdesége 0-hoz, lapultsága 3-hoz tart nn növekedtével; kis nn-nél az exponenciális alapeloszlás ferdesége miatt még látható eltérés maradhat.

A Northstar delivery_days oszlopára ugyanez a logika érvényes, de ott μ\mu-t és σ\sigma-t nem ismerjük, csak a mintából becsülhetjük. A becslés bizonytalansága a Standard error és konfidenciaintervallum alfejezetben tárgyalt konfidenciaintervallum témája lesz; itt a generáló paramétereket pontosan ismerő szimuláció volt a cél.

A centrális határeloszlás-tétel nem azt mondja ki, hogy a nyers adatok eloszlása normálissá válik, hanem a megfelelően standardizált mintaátlag közelítő eloszlásáról szól. Függő adatok vagy végtelen variancia esetén külön feltételek szükségesek.

14.4.5 Feladatok

1. Értelmezés. Egy elemző azt mondja: „Megnéztem 200 szállítási időt, és a hisztogram még mindig erősen jobbra ferde. Ez azt bizonyítja, hogy a centrális határeloszlás-tétel nem működik a mi adatunkon.” Magyarázd el, miért téves ez az érvelés. Melyik eloszlásra vonatkozik a CLT, és mit kellene inkább ábrázolnia?

2. Implementálás. A Bernoulli-példa szimulációja. Generálj rng = np.random.default_rng(42) seeddel B=20000B = 20\,000 ismételt mintát p=0,2p = 0{,}2 paraméterű Bernoulli-eloszlásból, n=10n = 10, 5050 és 200200 mintanagysággal. Mindegyik nn-re számold ki az átlagok átlagát és szórását, és hasonlítsd össze a μ=p\mu = p és σ/n=p(1−p)/n\sigma / \sqrt n = \sqrt{p(1-p)/n} elméleti értékekkel. Add meg, mekkora eltérést fogadsz el a Monte Carlo hiba miatt.

3. Hibadiagnózis. Egy kolléga ezt a kódot írta a standard hiba ellenőrzésére:

rng = np.random.default_rng(7)
samples = rng.exponential(scale=6.0, size=(5000, 30))
means = samples.mean(axis=1)
print(np.std(samples))      # 6.01 körüli értéket vár
print(np.std(means))        # 1.10 körüli értéket vár

Azt állítja, hogy a második print a standard hibát adja, ezért 1.10-et kellene kapnia, de ő 6.01-hez közeli értéket lát. Hol a hiba a gondolatmenetében? Javítsd ki a kódot, és add meg a helyes elméleti standard hibát n=30n = 30-ra.

4. Megváltozott feltétel: Cauchy-eloszlás. A CLT feltételezi a véges varianciát. Vizsgáld meg, mi történik, ha XiX_i standard Cauchy-eloszlású, amelynek nincs várható értéke és varianciája. Generálj rng = np.random.default_rng(99) seeddel B=10000B = 10\,000 mintát n=5n = 5, 5050 és 500500 mintanagysággal rng.standard_cauchy(size=(B, n)) használatával, számold ki az átlagokat, és ábrázold a hisztogramjukat a [−10,10][-10, 10] intervallumra vágva. Mit tapasztalsz, és miért nem mond ellent a CLT-nek?

14.4.6 Megoldások és indoklás

1. megoldás. A CLT az átlag mintavételi eloszlásáról szól, nem az adatok eloszlásáról. A 200 szállítási idő hisztogramja az adateloszlást mutatja, amely a CLT szerint is ferde maradhat tetszőlegesen nagy nn-nél. Az elemzőnek azt kellene ábrázolnia, hogy sok, egyenként 200 elemű minta átlaga hogyan oszlik el. Ha az alapeloszlás véges varianciájú, akkor ezek az átlagok egyre inkább harang alakú eloszlást követnek N(μ,σ/200)N(\mu, \sigma/\sqrt{200}) paraméterekkel. Az adat ferdesége tehát nem cáfolja a tételt.

2. megoldás. A következő kód ellenőrzi az invariánsokat. Az elméleti értékek: μ=0,2\mu = 0{,}2, σ=0,2⋅0,8=0,4\sigma = \sqrt{0{,}2 \cdot 0{,}8} = 0{,}4, így a standard hiba n=10n = 10-re 0,4/10≈0,12650{,}4/\sqrt{10} \approx 0{,}1265, n=50n = 50-re 0,05660{,}0566, n=200n = 200-ra 0,02830{,}0283. A Monte Carlo hiba a szórás becslésére nagyjából σm/2B\sigma_m / \sqrt{2B} nagyságrendű, ami B=20000B = 20\,000-nél elhanyagolható a három tizedesjegyhez képest, ezért ±0,005\pm 0{,}005 abszolút tűrés észszerű.

import numpy as np

rng = np.random.default_rng(42)
B = 20_000
p = 0.2
sigma = np.sqrt(p * (1 - p))  # 0.4

for n in [10, 50, 200]:
    samples = rng.binomial(n=1, p=p, size=(B, n))  # shape: (B, n), 0/1 értékek
    means = samples.mean(axis=1)                   # shape: (B,)
    se_theory = sigma / np.sqrt(n)
    print(
        f"n={n:3d} | átlagok átlaga={means.mean():.4f} (cél {p}) | "
        f"átlagok szórása={means.std(ddof=0):.4f} (SE cél {se_theory:.4f})"
    )

A szemléltető várt kimenet (a seeddel elméletileg, nem futtatott eredmény): minden sorban az átlagok átlaga 0,200{,}20 körül mozog ±0,005\pm 0{,}005-ön belül, az átlagok szórása pedig rendre kb. 0,1260{,}126, 0,0570{,}057 és 0,0280{,}028. A ddof=0 azért helyes, mert itt a BB darab átlagot a mintavételi eloszlás teljes szimulált populációjának tekintjük, nem egy részmintának.

3. megoldás. A kolléga két különböző mennyiséget kever össze. Az np.std(samples) a 30 elemű adatminta szórásának becslése a B×30B \times 30-as tömbön, ami σ=6\sigma = 6 napot közelíti — ezért lát 6,016{,}01-et. A standard hiba viszont ennek 1/301/\sqrt{30}-szorosa: 6/30≈1,0956/\sqrt{30} \approx 1{,}095 nap. A helyes ellenőrzés az np.std(means) értékét hasonlítja ehhez. A kódban tehát nem a print sor hibás, hanem az értelmezés: a második print valójában a standard hibát adja, és 1,101{,}10-hez közeli értéket kellene látni. Ha a kolléga mégis 6,016{,}01-et lát a második sorban, akkor valószínűleg véletlenül mindkét sorban az samples tömböt írta, vagy a két nyomtatást felcserélte. Javítás: print(np.std(means)) az egyetlen releváns sor a standard hiba ellenőrzésére.

4. megoldás. A Cauchy-eloszlásnak nincs véges várható értéke, ezért az átlag sem konvergál μ\mu-höz, és a standardizált átlag sem tart normálishoz. A szimulációban a hisztogramok nem mutatnak nn-nel csökkenő szélességet: a farokban mindig maradnak extrém kiugró átlagok, mert egyetlen nagy XiX_i érték dominálhatja a teljes átlagot. A [−10,10][-10, 10]-re vágott ábrán is látszik, hogy n=500n = 500-nál is széles, csúcsos eloszlást kapunk, nem haranggörbét. Ez nem mond ellent a CLT-nek, mert a tétel feltétele — a véges variancia — sérül. A Cauchy-példa azt tanítja, hogy a CLT-t nem szabad automatikusan alkalmazni, ha az adatokban extrém kiugrók dominálnak vagy a variancia nem véges; ilyenkor robusztusabb összegzés vagy más modell kell.

14.4.7 Gyakori tévedés, visszautalás és önellenőrzés

A leggyakoribb tévedés: „Nagy mintán az adatok normális eloszlásúvá válnak.” Ez hamis. Az exponenciális szimuláció felső sora mutatja az ellenpéldát: n=100n = 100-nál is jobbra ferde az adat, miközben az átlag eloszlása már normális. A CLT csak a mintavételi eloszlás alakjáról szól, az adateloszlásról nem.

Visszautalás: a Hiány és anomália mint vizsgálati kérdés alfejezetben a kiugrókat a mérési folyamathoz kapcsoltuk; a CLT érvényességéhez is azt kell ellenőrizni, hogy a farok nem olyan nehéz, hogy a variancia végtelen legyen. A Függetlenség, kovariancia és függő adat alfejezetben láttuk, hogy a függőség módosítja az átlag varianciáját: pozitív klaszteren belüli korreláció gyakran csökkenti az effektív mintanagyságot és az iid képlet alulbecsülheti a standard hibát; ez nem igaz minden lehetséges függőségi szerkezetre.

Önellenőrző kérdések: (1) Mi a különbség σ\sigma, a minta szórása és a standard hiba között? (2) Miért van szükség a függetlenségre a variancia 1/n1/n-es skálázásához? (3) Ha egy eloszlás ferde, mekkora nn-től bízhatunk a normális közelítésben — mi határozza meg ezt? (4) A Cauchy-szimulációban miért nem csökken a hisztogram szélessége nn-nel?

14.4.8 Rövid összefoglaló

A nagy számok törvénye szerint a mintaátlag a várható értékhez konvergál, és ingadozásának mértéke a standard hiba, σ/n\sigma / \sqrt n. A centrális határeloszlás-tétel ennél erősebb: független, azonos eloszlású, véges varianciájú megfigyelések esetén a standardizált átlag eloszlása a standard normálishoz tart, függetlenül az adatok eredeti alakjától. A tétel az átlag mintavételi eloszlásáról szól, nem az adatokéról; ferde adat nagy mintán is ferde marad. Az iid feltétel és a véges variancia sérülése érvényteleníti a közelítést, ahogy a Cauchy-példa mutatja. A következő Paraméter, becslő és likelihood alfejezetben ebből építjük fel a likelihood és a paraméterbecslés fogalmát.

További olvasmány és elsődleges dokumentáció: [SciPy] scipy.stats Reference, https://docs.scipy.org/doc/scipy/reference/stats.html (hozzáférés: 2026-10-21).