12.2 Sűrűség és eloszlásfüggvény

12.2.1 Cél és konkrét helyzet

A Northstar szintetikus rendelési adatában a distance_km oszlop a szállítási távolságot tartalmazza kilométerben. Tegyük fel, hogy a csapat a szállítási távolságot vizsgálja, és két egyszerű modellt vet fel:

A kérdés: mennyi annak a valószínűsége, hogy egy rendelés szállítási távolsága 35 és 65 km közé esik, azaz P(35<D<65)P(35<D<65)?

Előzetes becslés. Az egyenletes eloszlásnál a 35–65 km sáv az 5–95 km tartomány egyharmada, tehát a várt valószínűség 30/90=1/3≈0,33330/90=1/3\approx0{,}333. A normálisnál a 35–65 sáv éppen az átlagtól mért ±1\pm 1 szórásnyi környezet; haranggörbénél ennek ismert közelítő területe 0,680{,}68. Ebben az alfejezetben a pontos értéket integrállal és szimulációval is ellenőrizzük.

A megfigyelési egység egy rendelés; a megfigyelt változó a distance_km, folytonosnak modellezett valószínűségi változó. A becslés célja nem a távolság megjóslása, hanem egy döntéshez használható intervallumvalószínűség megadása.

12.2.2 Sűrűség, eloszlásfüggvény, normalizálás és kvantilis

12.2.2.1 Sűrűségfüggvény és terület

Egy folytonos valószínűségi változó sűrűségfüggvénye (probability density function, PDF) nem valószínűség, hanem valószínűség-sűrűség: ahogy az anyagsűrűséget is térfogattal kell szorozni, a PDF-et intervallumhosszal kell szorozni, hogy valószínűséget kapjunk.

Az intervallumba esés valószínűsége a sűrűséggörbe alatti terület:

P(a<X<b)=∫abf(x)dx. P(a<X<b)=\int_a^b f(x)\,dx.

Ha a változó mértékegysége km, akkor f(x)f(x) mértékegysége 1/km, az integrál szorzata pedig dimenzió nélküli valószínűség. Ez a Terület, összeg és numerikus integrál területfogalmán alapul: a valószínűség a görbe alatti terület, amelyet véges összeggel közelíthetünk.

12.2.2.2 Eloszlásfüggvény, avagy CDF

A eloszlásfüggvény (cumulative distribution function, CDF) a PDF balról felhalmozott területe:

F(x)=P(X≤x)=∫−∞xf(t)dt. F(x)=P(X\le x)=\int_{-\infty}^{x} f(t)\,dt .

A CDF értéke mindig 0 és 1 közötti, monoton nem csökkenő, és F(x)→0F(x)\to0, ha x→−∞x\to-\infty, illetve F(x)→1F(x)\to1, ha x→∞x\to\infty. Fontos kapcsolat a Parciális derivált és gradiens alfejezetben tanult egyváltozós deriválttal: a CDF meredeksége a PDF, azaz F′(x)=f(x)F'(x)=f(x) ott, ahol ff folytonos.

Intervallumvalószínűséget CDF-különbséggel is számíthatunk:

P(a<X<b)=F(b)−F(a). P(a<X<b)=F(b)-F(a).

Ez azért hasznos, mert a CDF értékeit gyakran táblázatból vagy könyvtárfüggvényből kapjuk; nem kell minden alkalommal numerikusan integrálni. A DuckDB: helyi analitikus SQL szerver nélkül alfejezetben megismert explicit függvényhívás-elv itt is érvényes: cdf(b) - cdf(a) egyértelmű definíciót ad, szemben egy „varázslatos” kerekített konstanssal.

12.2.2.3 Normalizálás

A normalizálás (normalization) azt jelenti, hogy a teljes tartomány alatti terület pontosan 1:

∫−∞∞f(x)dx=1. \int_{-\infty}^{\infty} f(x)\,dx = 1 .

Hisztogramnál a normalizálás azt követeli meg, hogy ne az oszlopmagasságok összege legyen 1, hanem az oszlopok területének összege: ∑khkΔk=1\sum_k h_k\,\Delta_k=1. A sűrűség értéke ebből következően lehet 1-nél nagyobb is — erre a gyakori tévedésnél térünk vissza.

12.2.2.4 Kvantilis

A kvantilis (quantile) az az érték, amelynél a CDF egy előírt qq szintet ér el: F(xq)=qF(x_q)=q. A medián a q=0,5q=0{,}5 kvantilis. A kvantilisfüggvény a CDF inverze, jelölése Q(q)Q(q) vagy F−1(q)F^{-1}(q); a SciPy-ban ppf (percent point function).

Kézi kontroll az egyenletes U(5,95)U(5,95) modellen:

f(x)=195−5=190km−1,F(x)=x−590,Q(q)=5+90q. f(x)=\frac{1}{95-5}=\frac{1}{90}\ \text{km}^{-1}, \qquad F(x)=\frac{x-5}{90}, \qquad Q(q)=5+90q .

Ellenőrzés: f(50)=1/90f(50)=1/90, F(50)=(50−5)/90=0,5F(50)=(50-5)/90=0{,}5, Q(0,5)=5+90⋅0,5=50Q(0{,}5)=5+90\cdot0{,}5=50, tehát a medián éppen 50 km. A normális modellnél a medián μ=50\mu=50, a q=0,975q=0{,}975 kvantilis pedig μ+1,96σ=50+1,96⋅15=79,4\mu+1{,}96\sigma=50+1{,}96\cdot15=79{,}4 km.

12.2.2.5 Folytonos esemény és pontvalószínűség

Egy folytonos eloszlásnál az egyes pont valószínűsége nulla:

P(X=a)=0, P(X=a)=0,

mert a sűrűséggörbe alatt egyetlen pont fölött nulla szélességű terület van. Ebből következik, hogy P(a<X<b)=P(a≤X≤b)P(a<X<b)=P(a\le X\le b): a végpontok hozzávétele nem változtat a területen. Ez a tulajdonság csak folytonos modellben igaz; diszkrét eloszlásnál egy pontnak lehet pozitív valószínűsége.

12.2.3 Teljes minimális munkapélda

Az alábbi kód az előző alfejezetben használt NumPy/SciPy környezetet használja. A quad adaptív numerikus integrál, a szimuláció pedig ugyanazt az arányt becsli véletlen minta relatív gyakoriságaként. A seed rögzíti a szimulációs véletlent; numerikus reprodukálhatóságot ad, de nem feltétlenül bitazonos eredményt minden gépen.

import numpy as np
from scipy import integrate, stats

# Egyenletes U(5, 95)
a, b = 5.0, 95.0

def uniform_pdf(x):
    return np.where((x >= a) & (x <= b), 1.0 / (b - a), 0.0)

# Normális N(50, 15)
mu, sigma = 50.0, 15.0
normal_pdf = lambda x: stats.norm.pdf(x, loc=mu, scale=sigma)

# 1) Elméleti érték CDF-különbségből
p_unif_theory = (65.0 - 35.0) / (b - a)
p_norm_theory = stats.norm.cdf(65.0, mu, sigma) - stats.norm.cdf(35.0, mu, sigma)

# 2) Numerikus integrál
p_unif_quad, err_unif = integrate.quad(uniform_pdf, 35.0, 65.0)
p_norm_quad, err_norm = integrate.quad(normal_pdf, 35.0, 65.0)

# 3) Szimuláció seeddel
rng = np.random.default_rng(20261020)
n = 100_000
sample_unif = rng.uniform(a, b, n)
sample_norm = rng.normal(mu, sigma, n)
p_unif_sim = np.mean((sample_unif >= 35.0) & (sample_unif <= 65.0))
p_norm_sim = np.mean((sample_norm >= 35.0) & (sample_norm <= 65.0))

print("egyenletes: elmélet, quad, szimuláció")
print(p_unif_theory, p_unif_quad, p_unif_sim)
print("normális:   elmélet, quad, szimuláció")
print(p_norm_theory, p_norm_quad, p_norm_sim)

A kimenet szemléltető — a kapcsolódó példaprojektben még nem ellenőriztük, de elméletileg várt:

egyenletes: elmélet, quad, szimuláció
0.3333333333333333 0.3333333333333333 0.33377
normális:   elmélet, quad, szimuláció
0.6826894921370859 0.6826894921370859 0.68118

A szimulációs értékek a seedelt rng mellett is véletlenszerű eltérést mutathatnak; a 100000100\,000 elemű minta mellett a bináris arány standard hibája körülbelül 0,68⋅0,32/100000≈0,0015\sqrt{0{,}68\cdot0{,}32/100\,000}\approx0{,}0015, tehát a harmadik tizedesjegy körüli eltérés normális. A laborban a pontos értékeket a saját futtatás adja.

Az ábra a normális sűrűséget és a 35–65 km közötti kitöltött területet mutatja:

import matplotlib.pyplot as plt

x = np.linspace(0, 100, 400)
y = normal_pdf(x)

fig, ax = plt.subplots(figsize=(8, 4))
ax.plot(x, y, label="N(50, 15) sűrűség")
mask = (x >= 35) & (x <= 65)
ax.fill_between(x[mask], y[mask], alpha=0.35, label="P(35<D<65)")
ax.set_xlabel("szállítási távolság (km)")
ax.set_ylabel("sűrűség (1/km)")
ax.set_title("Sűrűségfüggvény és intervallum alatti terület")
ax.legend()
plt.show()

A fill_between a görbe alatti területet színezi; annak nagysága a keresett valószínűség.

12.2.4 Eredmény értelmezése

A három számítási út ugyanazt a definíciót ellenőrzi:

Ellenőrző invariáns. A normalizálás teljesülése: az egyenletes PDF integrálja 5-től 95-ig pontosan 1, a normális PDF integrálja a teljes valós tengelyen numerikusan is 1-et ad. A CDF monotonitása: F(65)>F(35)F(65)>F(35), és a különbség 0 és 1 közötti. A kvantilis inverz ellenőrzése: stats.norm.ppf(stats.norm.cdf(65,50,15),50,15) visszaadja 65-öt.

A modellválasztás fontos üzenete: ugyanaz a kérdés a két modellben egészen más valószínűséget ad (0,330{,}33 és 0,680{,}68). A sűrűség alakja tehát nem pusztán matematikai dísz, hanem az intervallumvalószínűségeken keresztül közvetlenül befolyásolja a döntési becsléseket.

Folytonos változónál egyetlen pont valószínűsége nulla, de a sűrűségérték akár 1-nél nagyobb is lehet, mivel nem valószínűség. A CDF mindenhol nemcsökkenő, jobbról folytonos és 0-ról 1-re tart.

12.2.5 Feladatok

  1. Értelmezés. Az egyenletes modellben f(50)=1/90≈0,0111f(50)=1/90\approx0{,}0111 km⁻¹. Miért nem annak a valószínűsége ez az érték, hogy a távolság pontosan 50 km? Mennyi lenne annak a valószínűsége, hogy a távolság 49,5 és 50,5 km közé esik?

  2. Implementálás. Írj egy interval_prob(f, a, b, x_left, x_right, h) függvényt, amely a Terület, összeg és numerikus integrál alfejezetben tanult trapézszabállyal közelíti ∫xleftxrightf(x)dx\int_{x_{\text{left}}}^{x_{\text{right}}} f(x)\,dx-et a megadott hh lépésközzel. Ellenőrizd f(x)=1/90f(x)=1/90-nel a U(5,95)U(5,95) modellen 35 és 65 között; hasonlítsd össze a pontos 1/31/3 értékkel.

  3. Hibadiagnózis. Egy kolléga azt mondja: „A normális sűrűség értéke 50-nél 0,02660{,}0266, tehát körülbelül 2,7% annak a valószínűsége, hogy a távolság pontosan 50 km.” Mi a hiba az állításban? Milyen intervallumhossz mellett lenne a sűrűséggel becsült valószínűség körülbelül 0,02660{,}0266?

  4. Megváltoztatott feltétel. Változtasd a normális modell szórását σ=25\sigma=25 km-re, a várható értéket hagyd 50 km-en. Előre becsüld meg: P(35<D<65)P(35<D<65) nőni vagy csökkenni fog? Számold ki a pontos értéket, és magyarázd meg az irányt a sűrűséggörbe alakjával.

  5. Kvantilis. Mennyi az egyenletes U(5,95)U(5,95) modell 90%-os kvantilise? Mennyi a normális N(50,15)N(50,15) modell középső 90%-os intervallumának két határa? Ellenőrizd SciPy ppf-fel, és magyarázd el, miért nem a 90%-os kvantilis jelenti a középső 90% felső határát.

12.2.6 Megoldások és indoklás

12.2.6.1 1. feladat

A sűrűség értéke nem valószínűség, mert a valószínűség területet, nem magasságot jelent. Pontosan 50 km valószínűsége P(D=50)=0P(D=50)=0, mert egy pont fölött nulla szélességű terület van. A 49,5–50,5 km intervallum hossza 1 km, tehát a valószínűség a konstans sűrűséggel:

P(49,5<D<50,5)=f(50)⋅1=190≈0,0111. P(49{,}5<D<50{,}5)=f(50)\cdot 1 = \frac{1}{90}\approx0{,}0111.

Általában kis Δ\Delta intervallumra P(x<D<x+Δ)≈f(x)ΔP(x<D<x+\Delta)\approx f(x)\Delta.

12.2.6.2 2. feladat

def interval_prob(f, x_left, x_right, h):
    xs = np.arange(x_left, x_right + h/2, h)
    ys = f(xs)
    return np.trapezoid(ys, xs)

# Ellenőrzés
f_uniform = lambda x: np.ones_like(x) / 90.0
approx = interval_prob(f_uniform, 35.0, 65.0, 0.001)
print(approx, approx - 1/3)

A trapézszabály konstans függvényre pontos minden hh-ra, mert a trapézok nem közelítik, hanem egzakt módon fedik a téglalapot. Így a várt kimenet 0.3333333333333333 és a hiba 0.0 — a lebegőpontos kerekítésből legfeljebb 10−1510^{-15} nagyságrendű eltérés lehet. Ez a Terület, összeg és numerikus integrál alfejezetből ismert tulajdonság: konstans integrandusra a hiba nulla.

12.2.6.3 3. feladat

A kolléga a magasságot területtel téveszti össze. A 0,02660{,}0266 érték sűrűség, mértékegysége 1/km. Ahhoz, hogy valószínűséget kapjunk, meg kell szorozni egy intervallum hosszával. Ha 1 km széles intervallumot veszünk, akkor

P(49,5<D<50,5)≈f(50)⋅1≈0,0266. P(49{,}5<D<50{,}5)\approx f(50)\cdot1\approx0{,}0266.

Ez viszont már valószínűség: körülbelül 2,7%. Pontosan 50 km-re a valószínűség nulla, nem a sűrűség értéke.

12.2.6.4 4. feladat

σ=25\sigma=25 km mellett az intervallum az átlagtól mért ±0,6\pm0{,}6 szórásnyi környezet:

P(35<D<65)=Φ(0,6)−Φ(−0,6)=2Φ(0,6)−1. P(35<D<65)=\Phi(0{,}6)-\Phi(-0{,}6)=2\Phi(0{,}6)-1.

A standard normális CDF-ből Φ(0,6)≈0,7257\Phi(0{,}6)\approx0{,}7257, így a valószínűség 2⋅0,7257−1=0,45152\cdot0{,}7257-1=0{,}4515. A korábbi 0,68270{,}6827-hez képest csökken, mert a szórás növelésével a sűrűséggörbe ellaposodik: a tömeg nagyobb része kerül a 35–65 sávon kívülre. Ez jól mutatja, hogy a szélesebb bizonytalanság nem a „középső” tartomány valószínűségét növeli, hanem a szélsőségekét.

Ellenőrzés: stats.norm.cdf(65, 50, 25) - stats.norm.cdf(35, 50, 25) a fenti értéket adja.

12.2.6.5 5. feladat

Egyenletes U(5,95)U(5,95): Q(0,9)=5+90⋅0,9=5+81=86Q(0{,}9)=5+90\cdot0{,}9=5+81=86 km.

Normális N(50,15)N(50,15): a középső 90%-os intervallum határai a 0,050{,}05 és 0,950{,}95 kvantilisek. A z=1,645z=1{,}645 standard kvantilissel:

Q(0,05)=50−1,645⋅15=25,32km,Q(0,95)=50+1,645⋅15=74,68km. Q(0{,}05)=50-1{,}645\cdot15=25{,}32\ \text{km}, \qquad Q(0{,}95)=50+1{,}645\cdot15=74{,}68\ \text{km}.

SciPy-ellenőrzés: stats.norm.ppf([0.05, 0.95], 50, 15). A 90%-os kvantilis Q(0,9)=69,22Q(0{,}9)=69{,}22 km nem a középső 90% felső határa, mert a 90%-os kvantilis alatt a valószínűség 90%-a balról helyezkedik el; a középső 90% intervallum viszont az alsó 5%-ot és a felső 5%-ot egyaránt kihagyja, ezért a két határa a 0,050{,}05 és 0,950{,}95 kvantilis.

12.2.7 Gyakori tévedés ellenpéldával, visszautalás és önellenőrzés

Gyakori tévedés: „A sűrűség értéke valószínűség, ezért legfeljebb 1 lehet.” Ez hamis. Vegyük az U(5;5,1)U(5;5{,}1) eloszlást: a sűrűség f(x)=1/0,1=10f(x)=1/0{,}1=10 km⁻¹, tehát a görbe magassága 10, és semmi sem sérti a valószínűségi axiómákat. A valószínűség a terület: például P(5<D<5,05)=10⋅0,05=0,5P(5<D<5{,}05)=10\cdot0{,}05=0{,}5. Ugyanígy egy pont valószínűsége mindig nulla, bármilyen magas is a sűrűség az adott pontban.

Visszautalás Terület, összeg és numerikus integrál alfejezetre: a sűrűség alatti terület ugyanaz a Riemann-féle területfogalom, amelyet a x2x^2 integráljánál kézzel közelítettünk. A trapézszabály most is konstans függvényre egzakt numerikus eszköz; az adaptív quad pedig finomabb rácson pontosabb eredményt ad.

Visszautalás Parciális derivált és gradiens alfejezetre: a CDF FF deriváltja a PDF ff. Ez az egyik legegyszerűbb példa arra, hogy a derivált egy felhalmozott mennyiség változási rátája. Ugyanaz az intuíció, mint a parciális deriváltnál: ha a CDF meredek, ott a valószínűségi tömeg sűrűn helyezkedik el.

Visszautalás DuckDB: helyi analitikus SQL szerver nélkül alfejezetre: ha a Northstar orders táblából a 35–65 km közötti rendelések arányát számoljuk COUNT(*) FILTER (WHERE distance_km BETWEEN 35 AND 65) / COUNT(*) kifejezéssel DuckDB-ben, akkor az empirikus gyakoriság a valószínűség becslése. Ez nem a sűrűség értéke; a sűrűséget külön kell becsülni hisztogrammal vagy kernelsimítással, és az értéke a választott sávszélességtől függ.

Önellenőrzés. 1) Integrál-e a PDF a teljes tartományon 1-et? 2) Monoton nem csökkenő-e a CDF? 3) A CDF-differencia-e a P(a<X<b)P(a<X<b)? 4) A könyvtárból kapott ppf tényleg a CDF inverzét adja-e? Ha bármelyik nem teljesül, ne a statisztikai következtetést hibáztasd először: ellenőrizd magát a modellfüggvényt.

12.2.8 Rövid összefoglaló

A sűrűségfüggvény (PDF) valószínűségi magasság, nem valószínűség; intervallummal szorozva területet, azaz valószínűséget ad. Az eloszlásfüggvény (CDF) a balfelé felhalmozott terület, így P(a<X<b)=F(b)−F(a)P(a<X<b)=F(b)-F(a). A normalizálás a teljes terület egységnyi volta. A kvantilis a CDF inverze, ppf a SciPy-ban. Folytonos eloszlásnál minden pont valószínűsége nulla. Az egyenletes U(5,95)U(5,95) példában P(35<D<65)=1/3P(35<D<65)=1/3, a normális N(50,15)N(50,15) példában 0,68270{,}6827; integrál és szimuláció konzisztensen ellenőrzi ezt. A következő Várható érték és Monte Carlo közelítés ezt a területfogalmat a várható értékre és a Monte Carlo-közelítésre viszi át.