Hipotézis teszt — nem aszimptotikus esetekre (Student t eloszlás)

Aszimptotikus esetekben általában elég könnyű dolgunk van Hipotézis tesztekre. A Central Limit Theorem segítségével, lényegében minden kérdést standard normál eloszlásra tudunk alakítani. Innen pedig már könnyem tesztelünk. De mi van ha túl kicsi a mintavételünk, és a CLT-t nem hívhatjuk segítségül? Ezt fogjuk most megvizsgálni. Lényegében fény fog derülni arra miért a Student T eloszlást használjuk a leggyakrabban.


Az alap eset ilyenkor, hogy van ugye n mintavételünk egy Normál eloszlást követő populációból. És itt álljunk meg egy kicsit. Ez az első eltérés az aszimptotikus esetekkel szemben. Amikor nagy számú mintánk van akkor a bármi lehet a populáció eloszlása, nem törődünk vele mert a CLT segít, viszont kis elemszám esetén ez sajnos nem áll fent. Ha nem Gauss akkor itt meg is állhatunk, a továbbiak mind nem lesznek igazak. Ez pedig külön tesztelnünk kell, de most tekintsünk el ettől és fogadjuk el, hogy a populációnk normál eloszlást követ.

Az adatokat szokás szerint vektor formában így írhatjuk fel1:

(1)  X^T = [x_i, x_2,\dots x_n]

Az is ugye köztudott, hogy a Maximum Likelehood estimator Normál eloszlásra pedig a következő:

(2)  \hat{\mu} = \bar{X} = \frac{1}{n} \cdot \sum_{i=1}^n X_i

(3)  \hat{\sigma}^2 = \frac{1}{n}\cdot \sum_{i=1}^n (X_i - \bar{X})^2

Mit lenne a teszt statisztikánk ha sok mintánk lenne? Valami ilyesmi:

(4)  T_n = \sqrt{n}\cdot \frac{\mu_0-\hat\mu}{\sqrt{\sigma^2}}

Persze ez még nem igazi teszt statisztika, lévén a nem ismert valós variancia értéktől függ, de a CLT segítségül híva egyszerűen behelyettesítenénk a mintából becsült varianciával ( \hat{\sigma}^2 ). Viszont most ezt nem tehetjük meg. Hogy feloldjuk ezt a problémát ezt a mintából becsült értéket kell egy kicsit gyúrnunk tovább. Nézzük.

Első lépésben szorozzuk meg n-nel, az és írjuk fel vektorként:

(5)  n\cdot  \hat{\sigma}^2 = \left\|  \begin{bmatrix} x_1\\x_2\\  \vdots \\  x_n \end{bmatrix} - \begin{bmatrix} \bar{X}\\  \bar{X}\\  \vdots \\  \bar{X} \end{bmatrix} \right\|^2

Most dolgozzunk egy kicsit a kivonás második tagján. Először is írjuk fel az átlagot ezt is vektor formában:

(6)   \bar{X} = \frac{1}{n} \begin{bmatrix} 1\\ 1 \\ \vdots \\1 \end{bmatrix}   \begin{bmatrix} x_1\\x_2\\ \vdots \\ x_n \end{bmatrix}

Most akkor nézzük meg, hogy néz ki ennek az n szeres vektora:

(7)   \begin{bmatrix} \bar{X}\\ \bar {X}\\ \vdots \\ \bar{X} \end{bmatrix} = \frac{1}{n} \begin{bmatrix} 1\\ 1 \\ \vdots \\ 1 \end{bmatrix}  \begin{bmatrix} 1\\ 1 \\ \vdots \\ 1 \end{bmatrix}^T \begin{bmatrix} x_1\\x_2\\ \vdots \\ x_n \end{bmatrix}

És most jön egy trükk aminek később nagy hasznát vesszük. Rendezzük át, ugy, hogy két egyenlő vektort kapjunk:

(8)   \begin{bmatrix} \bar{X}\\ \bar {X}\\ \vdots \\ \ \bar {X} \end{bmatrix} = \frac{1}{\sqrt{n}} \begin{bmatrix} 1\\ 1 \\ \vdots \\ 1 \end{bmatrix} \cdot  \left( \frac{1}{\sqrt{n}} \begin{bmatrix} 1\\ 1 \\ \vdots \\ 1 \end{bmatrix} \right)^T \cdot \begin{bmatrix} x_1\\x_2\\ \vdots \\ x_n \end{bmatrix}

Most az egyenletben lényegében kétszer szerepel ugyanaz a vektor, helyettesítsük is v_1 szimbólummal. Hogy miért az 1-es index? Ezt később egyszerűsítésre, fogjuk használni (lsd. (17) és (18) ):

(9)   v_1  = \frac{1}{\sqrt{n}} \begin{bmatrix} 1\\ 1 \\ \vdots \\ 1 \end{bmatrix}

Tehát a (8)-ba visszahelyettesítve:

(10)   \begin{bmatrix} \bar{X}\\ \bar{X}\\ \vdots \\ \bar{X} \end{bmatrix} = v_1\cdot v_1^T\cdot \begin{bmatrix} x_1\\x_2\\ \vdots \\ x_n \end{bmatrix}

Hogy ez mire volt jó? Nézzük mi történik, ha ezt visszahelyettesítjük az (5)-be:

(11)   n\cdot \hat{\sigma}^2 = \left\| \begin{bmatrix} x_1\\x_2\\ \vdots \\ x_n \end{bmatrix} -  v_1\cdot v_1^T\cdot \begin{bmatrix} x_1\\x_2\\ \vdots \\ x_n \end{bmatrix} \right\|^2

Most vezessünk be egy újabb változott, a normalizált értékét az X-nek. Nevezzük Y-nak. Tehát:

(12)   Y = \begin{bmatrix} \frac{x_1-\mu}{\sigma^2}\\  \frac{x_2-\mu}{\sigma^2}\\ \vdots \\  \frac{x_n-\mu}{\sigma^2}\ \end{bmatrix}

Most írjuk fel a (11)-et ennek a Y-nek a segítségével:

(13)   \frac{n\cdot \hat{\sigma}^2}{\sigma^2} = \left\| Y - v_1\cdot v_1^T\cdot Y \right\|^2

Most jön még egy trükk. Fel tudjuk-e írni az Y másféleképpen? Vegyük észre, hogy ez Normál eloszlást követ, mégpedig:

(14)   Y \approx N(0,1_n)

Ahol 1_n egy n x n dimenziós egységmátrix:

(15)   1_n  = \begin{bmatrix} 1 & 0 &  \hdots & 0 \\ 0 & 1 & \hdots & 0 \\ \vdots & \vdots  & \ddots & \vdots \\ 0 & 0 & \hdots & 1   \end{bmatrix}

Amit felírhatunk összegzéssel is:

(16)   1_n  =  \sum_{i=1}^n \cdot v_i \cdot v_i^T

Ami jó, mert egységmátrix bármikor behelyettesítünk egy egyenletbe, lévén nem változtatnak semmit. Tehát tegyük is ezt meg:

(17)   \frac{n\cdot \hat{\sigma}^2}{\sigma^2} = \left\| \sum_{i=1}^n \cdot v_i \cdot v_i^T \cdot Y - v_1\cdot v_1^T\cdot Y \right\|^2

Vegyük észre, hogy ha ahhoz, hogy elvégezzük a kivonást csak el kell hagynunk az első oszlopot. Ez lényegében ugyanaz mintha az összegzést 2-től indítanánk. Vagyis:

(18)   \frac{n\cdot \hat{\sigma}^2}{\sigma^2} =  \left\| \sum_{i=2}^n \cdot  v \cdot v^T \cdot Y   \right\|^2

Szoval mivel is szorozzuk az Y-t? Lélnyegében egy n-szer (n-1)-es mátrixal. Nevezzük el ezt W-nek. És helyetesítsük be a (18)-ba, és egyszerüsítsünk:

(19)   \frac{n\cdot \hat{\sigma}^2}{\sigma^2} =   \left\|  \cdot  W \cdot W^T \cdot Y   \right\|^2 =   \left\|   W^T \cdot Y     \right\|^2

Mi lesz ennek az eredménye? Egy n-1 vektor. És mi lesz az eloszlása? Ez lényegében attők függ mi a W és a Y kapcsolata. Ezt pedig a kovariancia mátrixal írhatjuk fel:

(20)   Cov(W^T, Y) = W^T \cdot Cov(Y) \cdot (W^T)^T =  W^T \cdot Cov(Y) \cdot W

Azt ugye tudjuk, hogy a Y-ok variancia mátrixa egy egységmátrix, tehát:

(21)   Cov(W^T, Y) = W^T \cdot I_n \cdot W = I_{n-1}

Ok. Mire volt ez jó? Lényegében még mindig a (4)-el birkozunk. Vagyis azzal a kérdésel, hogy lehetünk függetlenek a nem ismert populációs varianciától. Amire a fentiek jók voltak az az, hogy megtudtuk néhány dolgot ennek a nem ismert varianciának az eloszlásáról. Lényegében, ha kicsit továbbvisszük a (19)-et és a (21)-et akkor, rájövünk, hogy:

(22)   \frac{n\cdot \hat{\sigma}^2}{(n-1) \cdot \sigma^2} = \chi_{n-1}

Ahol \chi_{n-1} Egy olyan Khi négyzet eloszlás aminek a szabadsági foka n-1.

Most már visszatérhetünk a (4)-hez. készitsünk egy új teszt statisztikát, amiben már nem szerepel a nem ismert paraméter. Legyen ez mondjuk T_n' . Ezt pedig ugy fogjuk ellőállítani, hogy a (4)-es osztjuk a (22)-es győkével:

(23)   T_n' = \frac{T_n}{ \sqrt{\frac{n\cdot \hat{\sigma}^2}{(n-1) \cdot \sigma^2} } }

Ami:

(24)   T_n' = \frac{  \sqrt{n}\cdot \frac{\mu_0-\hat\mu}{\sqrt{\sigma^2}} }{ \sqrt{ \frac{n\cdot \hat{\sigma}^2}{(n-1) \cdot \sigma^2}}  }

Egyszerüsítés után:

(25)   T_n' = \frac{ \sqrt{n-1} \cdot ( \mu_0-\hat{\mu})}{\sqrt{\hat{\sigma}^2}}

Készen vagyunk. Most már van egy olyan teszt statisztikánk ami nem függ semmilyen ismeretlen paramétertől és aszimptotikus esetekben is megállja a helyét. A kérdés csak mi ennek a teszt statisztikának az eloszlása. Ha az megvan, akkor már tudunk kritikus értékeket számolni. Ez az eloszlás pedig egy Student’s t eloszlás aminek a szabadsági foka n-1.

Vagyis kis minták esetekben a Student t eloszlás segítségével határozhatjuk meg a kritikus értékeinket, feltéve ha a populációnk normál eloszlású. A gyakorlati életben, általában aszimptotikus esetekre is ezt használják. Ennek egyszerűen az az oka, hogy nagy mintanagyságnál a Central Limit Theorem akcióba lendül, és biztosan tudjuk garantálni a normál eloszlást. Másrészt a Student’t nagy mintanagyságnál közelit a Normál eloszláshoz, tehát nem lövünk nagyon mellé ha ezt használjuk ilyenkor is.

Példa számítás

A bőséges elméleti bevezető után nézzünk egy egyszerű példát: egymintás kétoldali t teszt. Legyen egy 5 elemből álló mintavételünk egy normál eloszlású populációból:


minta = [5.34359049, 3.98679168, 3.16149018, 7.39324407, 5.83134884]
n = 5

A hipotézisünk, hogy a populáció átlaga 5.


h0 = 5

Mi a T_n' ? A (25) alapján ehhez a minta átlagára, és a minta varianciájára van szükség:


minta_atlag = np.sum(minta)/n
minta_szorás = np.sum(np.power(np.subtract(minta, minta_atlag), 2))/n

Most számoljuk a teszt statisztika értékét:


tn = np.sqrt(n-1)*(minta_atlag-h0)/np.sqrt(minta_szorás)

Ami: 0.19462934161528575. Most már csak kritikus értéket kell megnéznünk. Ez egy két oldali teszt, lévén az átlag mindkét irányba eltérhet a null hipotézisben feltételezett értéktől. A Student t eloszláshoz tudnunk kell mi a szabadsági foka az eloszlásnak. Ez ugye n-1, ami 4 jelen esetben. A másik kérdés amit tisztáznunk kell mekkora kritikus régió. Legyen mondjuk 10%. Vagyis \alpha = 0.1, mivel két oldali tesztünk van ne feledjük, hogy a 5%-os \alpha-hoz tartozó érétket kell megtalálnunk. Ez az érték pedig:


from scipy.stats import t
s = t.ppf(1-0.05, n-1)

Ami: 2.13184678133629. A T_n' -nek ennél az értéknél kellene nagyobbnak lennie, ahhoz, hogy elutasítsuk a Null hipotézist. Amit jelen esetben nem tehetünk meg, a minta alapján.

Alternatív tesztként számíthatnánk p-értéket is:


p_ertek = 2*(1-t.cdf(np.abs(tn), n-1))

Ami: 0.8551686340344629. Ennek meg ugye az \alpha -nél kellene kisebbnek lennie, ami szintén nem igaz.

Persze a fenti számítás oktatási célokat szolgál csak, a gyakorlatban vannak erre szoftver csomagok. Pythonban például a scipy:


from scipy import stats

# egy mintás t teszt
stats.ttest_1samp(minta,h0)


Lábjegyzet

  1. Vegyük észre a T felső indexet, ami a “Transpose” jele. Vagyis X egy oszlopvektor, csak a könnyebb olvashatóság kedvért elforgattam.
Hírdetés

Hipotézis teszt — nem aszimptotikus esetekre (Student t eloszlás)” bejegyzéshez 2 hozzászólás

Vélemény, hozzászólás?

Adatok megadása vagy bejelentkezés valamelyik ikonnal:

WordPress.com Logo

Hozzászólhat a WordPress.com felhasználói fiók használatával. Kilépés /  Módosítás )

Twitter kép

Hozzászólhat a Twitter felhasználói fiók használatával. Kilépés /  Módosítás )

Facebook kép

Hozzászólhat a Facebook felhasználói fiók használatával. Kilépés /  Módosítás )

Kapcsolódás: %s