Kapitola 10 Regrese a nelineární regrese 10.1 Regrese V testech nezávislosti jsme zkoumali, zda dv veli iny x a y jsou nezávislé. Pokud nejsou nezávislé, m ºeme zkoumat, jaká závislost mezi nimi je. 10.1.1 Lineární regrese Máme dva párové výb ry x a y, tedy mnoºinu dat {x i, y i } N i=1, a zkoumáme, jestli v nich je lineární závislost typu y = b 0 + b 1 x, tedy jestli pro m ená data rozumn platí y i = b 0 + b 1 x i + e i, i = 1, 2,, N kde N je délka výb ru a e i jsou chyby v jednotlivých rovnicích. P. V letech 1975-2015 jsme zaznamenávali poºadavky na parkovací místa v Praze 4. Zajímá nás (i) zda poºadavky mají tendenci nár stu, (ii) jaký je odhad po tu poºadavk pro rok 2020 a (iii) kdy bude poºadavek na parkování dvojnásobný, neº byl v roce 2015? Popis situace osa x, osa y, body (dvojice [x i, y i ]), predikce, rezidua. Konstrukce p ímky optimáln, tak aby N i=1 e i min 1. Spo teme pr m ry x, ȳ a sou ty tverc S x, S x = (x i x) 2, S y = (y i ȳ) 2 a S xy = (x i x) (y i ȳ) Odhady parametr jsou ˆb1 = S xy S x, ˆb 0 = ȳ b 1 x. 1
KAPITOLA 10. REGRESE A NELINEÁRNÍ REGRESE 2 2. Zapí²eme celou soustavu maticov Y = Xb + E kde Y = y 1 y 2 y N, X = 1 x 1 1 x 2 1 x N, E = e 1 e 2 e N Potom parametry ˆb = [ˆb0, ˆb ] 1 se spo tou takto ˆb = (X X) 1 X Y. Predikce Data jsou reprezentována odhadnutou regresní p ímkou y = ˆb 0 + ˆb 1 x. Odhad výstupu y pro dané x nazýváme predikce a zna íme ŷ. Pro x = x 0 platí predikce ŷ ŷ = ˆb 0 + ˆb 1 x 0 Naopak, jestliºe chceme v d t kdy asi (tedy znát x) bude výstup y = y 0 (daná hodnota), pak platí ˆx = y 0 ˆb 0 ˆb1. Chyba predikce Spo teme-li predikci ŷ i, i = 1 N pro v²echna x i, i = 1 N, m ºeme ur it chybu predikce ê i = y i ŷ i, i = 1 N. Ta je d leºitým ukazatelem kvality provedené regrese. V t²inou se udává jako standardní chyba reziduí N SE = i=1 ê2 i N 2. 10.1.2 Lineární multiregrese P. Sledujeme dopravní nehody a jejich závaºnost, kterou ozna íme y s hodnotami z intervalu (0, 5), kde orienta n bude: 1 - lehká nehoda bez zran ní, 2 - nehoda s v t²í hmotnou ²kodou, 3 - nehoda s váºn j²ím zran ním, 4 - nehoda s úmrtím. Zajímá nás, jaké okolnosti mají vliv na váºné nehody y > 3. Jako okolnosti vybereme veli iny x 1 : rychlost vozidla p i st etu, x 2 : viditelnost, x 3 : povrch vozovky. Modelujeme multiregresí. Regrese má obecn tvar y = b 0 + b 1 x 1 + b 2 x 2 + + b n x n
KAPITOLA 10. REGRESE A NELINEÁRNÍ REGRESE 3 Odhad - podle zp sobu 2. y 1 Y = y 2 y N kde b = [b 0, b 1,, b n ]., X = 1 x 11 x 21 x n1 1 x 12 x 22 x n2 1 x 1N x 2N x nn, ˆb = (X X) 1 X Y, Predikce ŷ = ˆbX. 10.1.3 Nelineární regrese V²imneme si exponenciální a polynomiální regrese. První lze linearizovat, druhou je moºno odhadovat p ímo. Exponenciální y = b 0 exp {b 1 x} Linearizace logaritmováním ln (y) = ln (b 0 ) + b 1 x Pouºíváme data ln (y) a x, dostaneme parametry B 0 = ln (b 0 ) a b 1. Predikce ŷ i = exp {ln (b 0 ) + b 1 x} = exp {B 0 + b 1 x} P. Sledujeme nár st po tu automobil v malé vesnici. Nam ili jsme data rok 1970 1990 2010 2015 po et 2 7 21 35 Zji² ujeme, zda po et automobil roste exponenciáln. e²ení: Pro výpo et pot ebujeme ur it logaritmy y - 0.69, 1.95, 3.05, 3.56. Nyní provedeme regresi pro log (y) a x a dostaneme koecienty log (b 0 ) a b 1. ˆb = ]0.062, - 120.68]
KAPITOLA 10. REGRESE A NELINEÁRNÍ REGRESE 4 Potom b 0 = exp { 120} = 3.9E 53. = 0. Regresní k ivka pak je podle predikce (vý²e) nebo y p = b 0 exp {b 1 x} // Exponenciální regrese // --------------------- exec SCIHOME/ScIntro.sce, mode(0) xo=[1970 1990 2010 2015]; x=xo-xo(1); // transformace dat x y=[2 7 21 35]; // po et aut y ly=log(y) // logaritmy y Y=ly'; X=[ones(4,1) x']; b=inv(x'*x)*x'*y b0=exp(b(1)) b1=b(2) // vektor Y // matice X // výpo et reg. koef. // absolutní len // sm rnice xx=min(x):.1:max(x); // vykreslení yp=b0*exp(b1*xx); // exponenciály plot(x,y,'o',xx,yp,'linewidth',2,'markersize',8) set(gca(),'data_bounds',[x(1)-1 x($)+1 0 max(y)+1]); Polynomiální y = b 0 + b 1 x + b 2 x 2 + + b n x n + e Odhadujeme podle metody 2. Pouºíváme data 1 x, x 2,, x n a dostaneme p ímo parametry ˆb = [ b0,b 1,b 2 b n ]. P íslu²né matice jsou Y = y 1 y 2 y N, X = 1 x 1 x 2 1 x n 1 1 x 2 x 2 2 x n 2 1 x N x 2 N xn N P. Pro data x = [1, 2, 3, 4, 5] a y = [10, 15, 18, 9, 1] prove te polynomiální regresi 3. ádu. Hodnoty odhadnutého parametru jsou b = 0.67, 61.48, - 6095.94.
KAPITOLA 10. REGRESE A NELINEÁRNÍ REGRESE 5 Predikce y = ˆb 0 + ˆb 1 x + ˆb 2 x 2 + + ˆb n x n // Polynomiální regrese // -------------------- exec SCIHOME/ScIntro.sce, mode(0) x=[1 2 3 4 5]; y=[10 15 18 4 1]; Y=y'; X=[ones(x(:)) x' (x^2)' (x^3)']; b=inv(x'*x)*x'*y // data x // data y // vektor Y // matice X // koeficienty xx=min(x):.1:max(x); // konsterukce yp=b(1)+b(2)*xx+b(3)*xx^2+b(4)*xx^3; // polynomu plot(x,y,'o',xx,yp,'linewidth',2,'markersize',8) set(gca(),'data_bounds',[0 6 0 max(y)+1]); 10.1.4 Dynamická regrese O dynamické regresi hovo íme tehdy, kdyº výstup závisí na svých zpoºd ných hodnotách. P. Modelujeme rozjezd závodního automobilu. Automobil je ízen pouze plynem - jede na 100% stla ení plynového pedálu. Automobil jsme sledovali od vte iny 0 do vte iny 8 a zm ili jsme následující hodnoty rychlosti 0, 55, 78, 103, 115, 130, 145, 150, 156 Pouºijeme model 1. ádu se vstupem u = 100+²um. Regresní vektor je ψ t = [ŷ t 1, u t, 1] a odpovídající odhady regresních koecient b = 0.71, 49.64, 5016.47. Predikce ŷ t = ψ t θ
KAPITOLA 10. REGRESE A NELINEÁRNÍ REGRESE 6 // Dynamická regrese s ízením // --------------------------- exec SCIHOME/ScIntro.sce, mode(0) y=[0 55 78 103 115 130 145 150 156]; n=length(y); u=100+.1*rand(1,n,'n'); for i=2:n Y(i)=y(i); X(i,:)=[y(i-1) u(i) 1]; end b=inv(x'*x)*x'*y yp=0; for i=2:n yp(i)=b(1)*yp(i-1)+b(2)*u(i)+b(3); end // tady je bu y nebo yp x=0:(n-1); plot(x,y,'bo',x,yp,'rx:') legend('y','yp',2); // Dynamická auto-regrese (bez ízení) // ------------------------------------ exec SCIHOME/ScIntro.sce, mode(0) y=[0 55 78 103 115 130 145 150 156]; n=length(y); for i=2:n Y(i)=y(i); X(i,:)=[y(i-1) 1]; end b=inv(x'*x)*x'*y np=30; yp=0; for i=2:np yp(i)=b(1)*yp(i-1)+b(2); end x=0:(n-1); xp=0:(np-1); plot(x,y,'bo',xp,yp,'rx:') legend('y','yp',2);
KAPITOLA 10. REGRESE A NELINEÁRNÍ REGRESE 7 Program pro jednotlivé druhy regrese // Regresní analýza - ukázky na p edná²ku REGRESE // ------------------------------------------------------------------- exec SCIHOME/ScIntro.sce, mode(0), rand('seed',0) // Data x=75:115; n=length(x); y=abs(exp((1:n)/10)+5*rand(1,n,'n')); // roky // poºadavky (simulace) set(scf(0),'position',[600 100 600 500]) plot(x,y,'.') // plot - data // ------------------------------------------------------------------- disp '---- lineární regrese ----' Y=y'; X=[x' ones(n,1)]; th=inv(x'*x)*x'*y // odhad parametr z matic yp=(x*th)'; // predikce r=correl(x,y) pv_pears=pearson_test(x,y) pv_f=f_test_reg(x,y) pv_wz=wz_test(y,yp,.05) pv_auto=auto_test(y,yp,.3,.2) // korela ní koeficient // Pearson v test // F-test // test nezávislosti reziduí // autokorelace reziduí set(scf(1),'position',[800 100 600 500]) plot(x,y,'.',x,yp) // plot - lin reg // ------------------------------------------------------------------- disp '---- exponenciální regrese ----' p=exp_reg(x,y) // odhad paramtr ype=exp_pred(x,p); // predikce pv_f=f_test_pred(y,ype,2) pv_wz=wz_test(y,ype,.05) pv_auto=auto_test(y,ype,.3,.2) // test - regrese (podle predikce) // test nezávislosti reziduí // autokorelace reziduí set(scf(3),'position',[800 200 600 500]) plot(x,y,'.',x,ype) // plot - exp reg // ------------------------------------------------------------------- disp '---- polynomiální regrese ----' p=pol_reg(x,y,3) // odhad parametr ypp=pol_pred(x,p); // predikce pv_f=f_test_pred(y,ypp,4) pv_wz=wz_test(y,ypp,.05) // test regrese (podle predikce) // test nezávislosti reziduí
KAPITOLA 10. REGRESE A NELINEÁRNÍ REGRESE 8 pv_auto=auto_test(y,ypp,.3,.2) // autokorelace reziduí set(scf(4),'position',[900 200 600 500]) plot(x,y,'.',x,ypp) // plot - pol3 reg set(scf(5),'position',[700 200 600 500]) plot(x,y,'.',x,yp,x,ype,x,ypp) // plot - v²e dohromady legend('y','lin','exp','pol'); 10.2 Ov ení výsledk regrese Regrese má smysl jedin kdyº lineární vazba y na x existuje. To lze testovat následujícími zp - soby: Pearsonovým t-testem Testuje H0: ρ = 0 proti HA: ρ 0. Statistikou je výb rový korela ní koecient r. Souborový korela ní koecient ρ = C [x, y] D [x] D [y], kde C [x, y] = (x Ex) (y Ey) f (x, y) dxdy, D [x] = (x Ex) 2 f (x) dx, D [y] = (y Ey) 2 f (y) dy. Výb rový korela ní koecient r = S xy Sx S y, kde S xy = (x i x) (y i ȳ), S x = (x i x) 2, S y = (y i ȳ) 2. H0: íká, ºe x a y jsou nezávislé, tedy nemá cenu mezi nimi hledat závislost a tedy regresi nelze d lat. Proto, aby regrese byla moºná musíme H0 zamítnout. tj. p-hodnota musí být malá (men²í neº hladina významnosti α). Koecient determinace V t²ina statistických program uvádí v souvislosti s regresní analýzou koecient determinace R R = r 2. Tento koecient se pohybuje v intervalu (0, 1). Pro R = 0 je regrese zcela nevhodná, pro R = 1 je naopak ideální (v²echny body y i leºí na regresní p ímce). Jestli je p ímka rostoucí nebo klesající tento koecient nerozli²uje. Fisherovým F-testem (testuje podíl vysv tleného a nevysv tleného rozptylu). Test je totoºný s testem ANOVA - je zaloºen na rozkladu celkového rozptylu na rozptyl regresní (vysv tlený) a reziduální (nevysv tlený). Rozklad je motivován následujícím vztahem y i ȳ = y i ŷ i + ŷ i ȳ
KAPITOLA 10. REGRESE A NELINEÁRNÍ REGRESE 9 kde len vlevo udává odchylku hodnoty y i od pr m rné hodnoty y - je to odchylka ze které po ítáme rozptyl v p ípad, kdy neuvaºujeme regresi, tedy (y i ȳ) 2. první len vpravo je odchylka m eného y i od regresní p ímky - tuto odchylku neumíme vysv tlit; hodnoty by m ly leºet na regresní p ímce a pro tahle ulétla, to nevíme. Tato odchylka je reziduum e i = y i ŷ i. druhý len vpravo je odchylka regresní p ímky od pr m rného y - tu vysv tlit umíme. Ta vzniká proto, ºe hodnoty veli iny y nejsou rozloºeny vodorovn, ale podél p ímka - tedy jsou vysv tlena regresí. Rozklad celkového sou tu tverc S c na regresní S r a reziduální S e je následující S c = S r + S e kde S r je vysv tlený sou tu tverc a S e je nevysv tlený sou tu tverc. Statistika F (s Fisherovým rozd lením) se v t²inou konstruuje v následující tabulce SS DF MS F p-hodnota regresní S r 1 S r F r = (n 2) Sr S e P (F > F r ) reziduální S e n 2 celkový S c S e n 2 kde SS je sou et tverc (sum squares), DF jsou stupn volnosti (degrees of freedom), MS je pr m r tverc (mean squares) - je to SS/DF, F je statistika daná podílem MS regresní a MS reziduální a p-hodnota je hodnota pravd podobnosti Fisherova rozd lení se stupni volnosti DF regresní a DF reziduální pro pravostranný test, tedy pro F > F r, kde F r je realizovaná statistika. H0 íká: regrese je nevhodná. Proto regresi lze pouºít jen kdyº se H0 zamítá. Test na nezávislost reziduí Máme jeden výb r x (nap íklad rezidua z regresní analýzy) a testujeme, zda kaºdý následující prvek posloupnosti je nezávislý na p edchozích. Spo teme rozdíly prvk posloupnosti od mediánu a spo teme sekvence posloupnosti rozdíl se stejným znaménkem a sou et ozna íme b. Statistika je z = 2b (n 2) n 1 N (0, 1) H0: prvky jsou nezávislé. Test na autokorelaci reziduí Rezidua modelujeme modelem 1. ádu e t = ae t 1 + k + ɛ t
KAPITOLA 10. REGRESE A NELINEÁRNÍ REGRESE 10 a musíme dostat, ºe a < 0.3 a k 0. Pokud ne, regrese, kterou jsme provedli, má ²patný typ - nap. není lineární. Poznámka íká se, ºe je také t eba kontrolovat, zda je pr m r reziduí roven 0. Ten bude ale nenulový jen v p ípad, kdy do modelu nevezmeme konstantu a neplatí, ºe y (0) = 0. Pokud ale konstantu uvaºujeme, tj. bereme regresní p ímku y = b 0 + b 1 x + e, bude vºdy pr m r reziduí nula. Dk. Optimální odhad konstanty je b 0 = ȳ b 1 x. Kdyº to dosadíme do modelu, dostaneme y = ȳ b 1 x + b 1 x + e Po zpr m rování ȳ = ȳ b 1 x + b 1 x + ē ē = 0