mmzm these September 29, 2016 1 Testování hypotéz Z předchozího měření (nebo teorie) činíme hypotézu o hodnotě neznámého parametru 6q (odhad 6q ± 5 s pravděp. obsahem p), ev. o rozdělení měřených hodnot. Následující měření umožní test hypotézy HO: měření dává statistiku t (yi, yi, • •, y n ), úkolem je stanovit, jaká je pravděpodobnost pozorování t za předpokladu platnosti/neplatnosti HO určujeme tedy, s jakým rizikem nastane jedna ze 2 možných chyb • chyba 1. druhu = hypotéza platí, ale HO zamítneme: P(t e K\Ho) = a • chyba 2. druhu = hypotéza neplatí, ale HO přijmeme: P(t ^ Ä"|notiío) = P kde K je kritická oblast "nepřijatelných" hodnot í (pokud í zde leží, můžeme HO zamítnout na hladině významnosti a - jinak je naše statistika nedostatečná a vyžaduje další měření). Pravděpodobnost 1 — j3 je pak síla (mohutnost) testu (závisí na a)... pokud HO neplatí (platí alternativa Hl, pokud je jediná) In [6]: %matplotlib inline M,N=12,10 ívellkostl vzorků mu=2 . sig=l from matplotlib.pyplot import * from scipy import stats from numpy import r_ x=r_[-3:8:0.01] hypO=stats.t(M+N-2,loc=0) hypl=stats.t(M+N-2,loc=mu) yl=hypO.pdf(x) y2=hypl.pdf(x) plot(x,yl) plot(x,y2) prob=0.05 pos=hyp0.ppf(1-prob) # hodnoty menší nez tato axvline(pos,color='r') fi11([pos]+list(x[x>pos]), [0]+list(yl [x>pos]), 'b',alpha=0.4,hold=l) fi11(list(x[x 1.0.1 Neyman-Pearsonův test Volba kritické oblasti podle poměru /n(X\6i)/f^{X\9o) > ca, hodnota cQ zvolena podle dané hladiny významnosti; v principu jde o poměr věrohodností. In [4]: import numpy as np -np.log(0.1)*0.1+2.4 np log(0.05)/np.log(0.6) Out[4]: 5.8644910008005713 In [ ] : 1.1 Test dobré shody určení stupně shody získaných dat s hypotézou o jejich rozdělení 1.1.1 Pearsonův test z naměřených hodnot sestavíme histogram o K buňkách, do každé z nich padne nj z měřených hodnot (53 ni = N). Hypotéza HO stanoví distrib. funkci rozdělení F, tedy pro každou buňku pravděpodobnost pj = P[x e< li,rrii)] = F(rrii) — F(k), kde k, ml jsou hranice i-té buňky (obvykle k = m,_i). Náhodné proměnné nj mají binomické rozdělení a očekávanou hodnotu E(rii) = Npl. Pearsonova statistika 2 v limitě JV -> oo (kdy rozdělení nj se blíží normálnímu) má T rozdělení Xk-i (Pearsonova věta). Podmínkou je malé množství buňek, kde není dostatečné množství měřených hodnot (lze řešit úpravou mezí buňek / slučováním tak, aby pt byly vyrovnané). Rozdělení může být závislé na parametrech 9i,...,9r - pak hledáme hodnotu 6 dávající ne-jlepší shodu, testovaná statistika má rozdělení s méně stupni volnosti, někde mezi Xk-i a Xk-t-i (rozdíl je malý, pokud K » r). In [50]: from scipy import stats import numpy as np %matplotlib inline from matplotlib import pyplot as pl N=100C dx=0.5 dset=stats.chi2(5).rvs(N) x=np.r_[0:15:dx] ok=pl.hist(dset,x) pred=stats.chi2(5).pdf(x+0.25) pl.plot(x+0.2 5,pred*N*dx, 1 r 1,lw=2) Out[50]: [] C 2 4 t 8 10 12 14 16 3 In [56]: cumpred=stats.chi2(5).cdf(x) pred2=cumpred[1:]-cumpred[:-1] pi.plot(x[1:-1],pred[1:-1]*dx/pred2[1:]-1) pi grid() 0.005 0.004 0.003 0.002 0.001 0.000 -0.001 -0.002 0 2 4 6 fl 10 12 14 In [57]: resid=ok[0]-pred[:-1]*N*dx pl.plot(x[:-l]+dx/2.,resid,1d1) pi.axhline(0) pi grid() sum(resid**2./(pred[:-l]*N*dx)), stats.chi2(len(ok[0])-l).isf([0.1,0.05,0.( Out[57]: (31.590190917491448, array([ 37.91592254, 41.33713815, 4 8.27823577])) 25 20 -15 -10 - : -5 - -L0 - -15 - -20 I— O ♦ k....... ♦ * ♦ ♦ ♦ ♦ ♦ ♦ ♦ ♦ ........a 10 14 16 In [20]: def testN(ndf,dat,dx=0.5): pred=stats.chi2(ndf).pdf(x[:len(dat)]+dx/2.) return sum((dat-pred*sum(dat)*dx)**2 . /(pred*sum(dat)*dx)) testN(4,ok[0]),testN(6, ok[0] ) Out[20]: (155.49945566272714, 14 9.73151462190449) nulovou hypotézu (teor. křivka a histogram se neliší) nemůžeme zamítnout ani na hladině spolehlivosti 90%. 1.1.2 Kolgomorův test sestavení distribuční funkce z N naměřených dat Sn(X) = (počet měření80) má rozdělení oo FKlg(VŇDN) = 1 - 2^(-l)^1exp(-2j2iVD2r) 3 HO zamítáme s rizikem a, pokud vyšlo VWDn > za a za (Kolgomorov-Smirnovo rozdělení) 0.01 1.63 0.05 1.36 0.10 1.22 5 In [46]: edf=np.cumsum(ok[0]) edf/=float(N) pred=stats.chi2(5).edf(x[1:]) pi.plot(x[1:]+0.2 5,edf,x[1:],pred) pi grid() Dn=max(abs(edf-pred)) Dn,Dn*np.sqrt(N) Out[46]: (0.020252210725574704, 0.64043113546507324) Z 2 4 6 8 10 12 14 16 In [48]: multest=np.array([max(abs(np.cumsum(np.histogram(stats.chi2(5).rvs(N),x)[( multest*=np.sqrt(N) pi.hist(multest,30) pi axvline(1.22,color='r' ) pi axvline(1.36,color='r' ) multest.mean(),multest.std() Out[48]: (0.72901387077572011, 0.25713257574053389) 6 t-1-1-1-n-1 i-1-r 0.2 0.4 0.6 0.S LO L2 L4 L6 L8 2.0 In [49]: sum(multest>l.22)/1000.,sum(multest>l.36)/1000. , Out[49]: (0.056000000000000001, 0.021999999999999999) 2 Test homogenity 2.1 rovnost rozdělení 2 vzorků dat 2.1.1 Smirnovův test srovnáváme empirické dist. funkce Sn, Sm: statistika Dnm = max 115^(x) — 5m(x)|| má asymptotické rozdělení jako v předchozím případě se \Jnmjin + m)Dnm < za nebo jednostranné testy D^m = max{±(S'n(x) — Sm(x))} má jednodušší rozdělení K±{z) = lim P(\Jnm/(n + m)D^m < za) = 1 — exp(—2z2) pro n —> oo,m —> oo úpravou vzniká 2.1.2 Wayneův test Wnm = y/nm/(n + m) max{\\Sn(x) - Sm(x)\\/Sm(x)} pro x splňující S(x) > a (kde a > 0 je konstanta) má rozdělení p2 rzy/a/{l-a) /f2\ lim P(W=m < za) = y - J exp i^-J dt pro z > 0. 7 2.1.3 Wilcoxonův (-Mann-Whitney) test 2 vzorky spojíme, (n+m) čísel uspořádáme podle velikosti a určíme pořadí (pozice) čísel xi,..,xr z první sady: jejich součet je Tn a výraz nm+n(n+l) rp U0- 2 " y/Hff (n + m + 1) má rozdělení N(0,1). 2.2 rovnost středních hodnot ídpokládáme no hypotéza HO: [ix = [iy předpokládáme normální rozdělení N([ix, ax), N(jUy,