From 03f2959f92cb53285a90bcd72c77edde25b130ec Mon Sep 17 00:00:00 2001 From: Michael Fierro Date: Sat, 21 May 2016 20:04:01 -0600 Subject: [PATCH 1/3] Fixed the initial chunk declarations --- .../fig/unnamed-chunk-1-1.png | Bin 0 -> 144422 bytes .../fig/unnamed-chunk-10-1.png | Bin 0 -> 144422 bytes .../fig/unnamed-chunk-2-1.png | Bin 0 -> 63716 bytes .../fig/unnamed-chunk-3-1.png | Bin 0 -> 76471 bytes .../fig/unnamed-chunk-5-1.png | Bin 0 -> 71620 bytes .../fig/unnamed-chunk-7-1.png | Bin 0 -> 53876 bytes .../fig/unnamed-chunk-9-1.png | Bin 0 -> 13834 bytes .../index.Rmd | 327 ++++----- .../index.html | 657 ++++++------------ 9 files changed, 390 insertions(+), 594 deletions(-) create mode 100644 07_RegressionModels/02_04_residuals_variation_diagnostics/fig/unnamed-chunk-1-1.png create mode 100644 07_RegressionModels/02_04_residuals_variation_diagnostics/fig/unnamed-chunk-10-1.png create mode 100644 07_RegressionModels/02_04_residuals_variation_diagnostics/fig/unnamed-chunk-2-1.png create mode 100644 07_RegressionModels/02_04_residuals_variation_diagnostics/fig/unnamed-chunk-3-1.png create mode 100644 07_RegressionModels/02_04_residuals_variation_diagnostics/fig/unnamed-chunk-5-1.png create mode 100644 07_RegressionModels/02_04_residuals_variation_diagnostics/fig/unnamed-chunk-7-1.png create mode 100644 07_RegressionModels/02_04_residuals_variation_diagnostics/fig/unnamed-chunk-9-1.png diff --git a/07_RegressionModels/02_04_residuals_variation_diagnostics/fig/unnamed-chunk-1-1.png b/07_RegressionModels/02_04_residuals_variation_diagnostics/fig/unnamed-chunk-1-1.png new file mode 100644 index 0000000000000000000000000000000000000000..1a7cc1b2853d31ae6f8607c32c177711a92bcd04 GIT binary patch literal 144422 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

)s44=MxNi&NfVHP9ktH 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 N!QO>dWOv}~e*seU`5*uQ literal 0 HcmV?d00001 diff --git a/07_RegressionModels/02_04_residuals_variation_diagnostics/fig/unnamed-chunk-10-1.png b/07_RegressionModels/02_04_residuals_variation_diagnostics/fig/unnamed-chunk-10-1.png new file mode 100644 index 0000000000000000000000000000000000000000..1a7cc1b2853d31ae6f8607c32c177711a92bcd04 GIT binary patch literal 144422 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

)s44=MxNi&NfVHP9ktH zbv7=$%i_=DeY}%fQCV4Y!Nl_yo-kMDYBT}>L?*njPRzupIrm@}o$M#)c^RnPxDmMvw@(3#IfsYTU4RqjMRQax5yP_f^ z!QivB^RvkApj^O1UgHV4x~@Gtvsr-EL^UNPCv$Uh-YRlw#B>6feTVG1Op5Ay)Jz(cu34WzgFw zG4t=SQrsG%larGWJIVh%2qi0jL`6wK@oRY*L9?ht1G*5zvi6Z&OSF=+DzEDQqR{hRJWdpztk{NBlKuxLGuUO=7pOuR08^ix zl6n;|q3@ZS_x43)P1&1@iPs%R zWaG4(!&hGlv?I@jALp(GHT{O$hN}^~U5?~SbaZr}^kIUjv55&Xiq&uq^u4TzCI1OI zAG$4;#dkel`t#?{%8GS++RM_?Et)eMUp}Xy&qC2Z#?Mb02zVGUGKs0|WCt*dv8h}Z zM{Cgx!}&C2$!i-MCB($;Ch_-SNAO zl@JqYKJ1A=8%FJj=k*`a&`Ei&9lt={P^2lTk*tp@)WQWMl-UUqrbw(|tb22}wF%UtbJ30f0!jnHa~i zcNRs3g&DgN|HQczG(LPFy7>3>i; z5OBtWjX@z`AA%Zib=M3J`xiSw#p7 zzKoH-1*vNiZ57zm2t$P04e2hN@Q z55$mUYUojDwJDnazOzVJ^(Dv$3V^gDQ`F2>duC(dyoCjy^+9*{zfcqL#BLSZRo2yA z*4EaRE!$QTinfMLt_w?0hC`XWxv7aX6)>M8qwNqS#pUzDHU{p(hJoujX@~G1pfGSI zguid!E-B5bpXrTeoJ6YP= zW+%QGQJA0tYY25Fr|}r=5bSka(SIO{V#$j)-q7c8#iPytQ_&i7ja*gLFs0>UA|WYxDhZ zi^%(ZLcj55s5~Cx_<6?pB{H)x0y%xVy1M~fklfW$RObOMAWaq5#R?L?Y{{_Nv;7@l z6R1Ac9qmCMRw3+dREr0i$-C0c9?S*&V(j3cpuH3qAiP~7|FyJ~o_Q9NighKe@JU;< z3vgck`}ZzL4k6Tyu1E?y+l_q#a#6p2odur-&Irx-r9;qyH_`?SvM$$pfBd*DOI|#q zN@7XD;~l+n%F0$y%rW-yX{Dfyz%OQe!d#=2dql!i@#CBVmGi%H*fKH;XD{UY#)0C}}jx0Sk)+u`K-TH2WbZ$KJ__nudm{ z!FmrJ9JqwnCjeAKiH4w za<#O!)_wn;m3=QKN0gX|reGniU7szM3h`1>dJxFu3>1pb)3qVopFVx^r8PJIY4khw z?uQ#my12J1vp$9T`1oKLri@q=U@W$Naq%|wV2I^9fAM1K z)Ha4~FF)IWgCjr(CJc2hBa=`}R_*>%uO52Dl!h=cFlL{JIRf98x4r?7g(|vS@uOxs z2{#@WRQ3@F2|I%5d#l*(#zuDg1uotdw@3-=!^DcdzM_;A|GKfwKfTtz!KhCWi2`J6 ztDmx7CO>$}E>Vu-rBzDrIW4%_(UFbuU_U60>E3)nQ2~a)N;d?Eo*Y6xt68;cYPlYx zTB(B+Wuo>g*Di>QyEpf~>Zkljtzo}zX_kmX&3jB?1O|jDUH$g9wzXwsWnpyNs;Q|J z|LJpxPrg}- z6FaDQ2(W-uMI(ZafUJWMV_sF)B6K@Gf96kEB$`VZ-m`$EMATW@_7YQIt zb@1vrlysEPoo#~!bPk-ypyl>3&`c-lnr;G?kQ1>?@B;s{SswX|HoLbl-y_R+^T^J;)R`o z+1)ctg1Q!iCI9@`y!?ZLNbbe^I}f@ZJhXlz;o;jTqu9AP!2H4=YxU^iL!b?7P*~{i z4xb9Zzi{}bX0-d|t5?e8Q*Egs!6FdMpy{S%Wf{FXbAS9cdK@-MFKqq{&77FnSZI%k z2T$=pp~aKIQl36`j69^3tVaCInNkER`1vzQVes#o7j~P2NUB`E{28{%k8vcaun%!u z1**XbAtAH|Z~%uVyVFuqu;~ayLrngJP1+9`UN;tijmU{1TvznNfZJ$gcTq7XzIk&# ze3^7$|&%W~ro}{6Ehc+PDzl+Pu+6s^! zUpvB)BD;NH|GjzN($X`;3iQ#cq4p__8D?f?80k2v<>5JjwCy0;{QK@1&?ES=NNd~% zkpVTt(WWGwfrG$8pb!wKu|Xm9+P8YLbYCmo?>xmSVgZF4WrdvUvL*ftf}^1k0gW3d z9zRd=>vEhx_(^iQpWjlfVUtJG{Xd8cnnznbsTmLhXvEj3)5nON>odWb;UtOgo9VDm?jrXn@Z)&MEM#utgJ}4fJrl9d$#-qZeUAXWF zfB?2hUS8hQr^<-fVZt`_vG1q&pEvB*FsW^za`?7VgwQ!Xy)(kXw)hroAO=1gi1DCF zAI;j$@TXxKm7dD#>Ul_=DAQ#>NunGgItclrLng6~`jTR4rC$GF$^MxiRGGiOi22o% zV@yNz{ccaua7k0M8=wS>8>z5nssn=lfrL*ZMg6R)IS9e09kQZ(UWCCxKq0o2-P!5g zq7orAgsnwNN4KZ7W4CDVb-*P9Zg(862!I~fx=ZZQt5*Y%9|7w-PP{(v)Sj*&{b;ZG zJ-8YtW>oCQzU{kMJ>UTZ6ey#ZZ`8o-Ca#8RLEIt!V=YkA(F5_JpxI{42|G`32g-y~ zQnU9@54at)<-gJH1>RebPnAEFLHEn$xRkyr=`eI4tG^NXagL(pbzOxR!mdbeA{^{a2N|67K(z#*5Q`x&{)$yKDN zzWMK%2>gb@KANSzS)e7DSs6Gi(hm9J-v@q8DpSPV*6Luf2T)9X`!tkDL*nZQ-n?iV&gDB z5UcwfVOf%-`RmawUZ_StPm?h`+RL#0`kdo3#&_9ne<_Da8<4V#eq3BKGBTv@l~juw zFQ0Bt#|eW&@6&;jdl;(9%HltLin6wZ#}*r_!+K5Pf8x1Y>C0!RdJM(wU(MA-Gz&W+ z9#H<^&ir_o! zyBN5X4oFzt(!fzo6BF#lM~^OmAox)o`g1zQ3*`)`FnZ_-@2OL37)=8IeF4P$?upOO zUja3Pst(^(u*+UmS9hSYatxL!pwzR&r|D%BsRJu}J~^hx#`c30k{Dr3Oa`d)e-g-N zKyGFQ9zt!xo8vfmk(gJSfy@%Niql-5D`pTHcz}c?!9;6qZ4H?)55OoduaZZPs$d{+ zaB!fadvR01Hvg7eRp4e}J#ZS8baW9nI|%xRwuytM)CYvVbaaUG^Iri?MP~sHeX)6L zkc@7VoYvy)gGcAm_mZo_sAc1V61;|FIW7)5Aow3Zi-|UQU}f68r5_fVURKrDtN$x6MG(@i>{#?tu~V^^v3 z+M>4~112FkC1r@i562^*O~(##2^${ZO1$yx|7HR1xx`4jwlp@rgMxztclDOvfR4~Z ztYAu^sX#7SMX!Ou1Ni^5pb>jqmOOT?Kzx}fuSIWo5#AorcSVw45g|X?7tfy)lOhOl z0RRj*`hl56Ckt4A8Uz|tmLvu1?)wk(gPJ4L1p^GCACj=S=ABlUum|eZeM+7e;Eaug zOQ(a}#P|5ptk5vPP_? zXsji9buA~gHsr!_T1(QwV+;~j$IVB&)RQO13GBr%4$%KWb*%dehQ`L;rlq+-S^+H; zQ4u-}hK*4K7YFdp4s#tNHOJD-#3bWZ;fs}X3bduxoO55J2YpAxqswak;WjolnDhAQ zolUHeOpko|@@;136+h#BoZQ^`@S%Zwfh>_1OIArL0f^1(rr#wBV5=UpqST5)%z^u14W03sQScaKvEX z0g@suf}n#CMh&_=HpkQQAutP|8=U4b$H<4|?1B)tr{D1hNlQ;E`cd3`cl;lqc>s@- z1WsgDm>&*EJ$~|JpW34=k}2Llkpkif?;PTv*Wzfv!-tg^U*LG@85y@=l#GnzU=w$B zbphsKls#U$X$p4>o_%0tOGn3r!F8_RKi`$2G%X;j6clt-SNjP_dv8j6690EV6piX4 zpA5m|m_YbvfD34jnDAS;dxsZKa8^~;ADtFwDG}X+U=7AhQes9%fL*gvQo3@CRV3}5 zjEs_e&kz=9J=G)szv=EkkH#kuw@zO4BQ$9MNCJ{IH#gt8bLZpBLQ*!^S2;n|8GP!` z@89hm9VnAm(yn$Gcer-gM5lp|pfDk&flTApLOIQoe*{McdU{y{At9lr&Q4M!AMJK3 z)T@aR@CJq(Xbg00VaMq2C;*jx6n&*mU-vy-L0qEp!P+k{(_)$ znH-=Gr=5_#77-U$zIYL`0;2h!&}TC<`Eh9CGNttRa4V=}8hnQ9dH_;fH1KN@Bd9?T72eWn_ zN$~&>4N^G!`jI>5pG?OVD9FnroNyf$P%#(wBWjCdkeNoqhosFX#?qhVnd$%B`Q-~c zUKjE0+cYL-{UXK?&Mj?X!a=q}+}!7Ze1|;X8X)XzD2;fn03F@)s3?TU!|{+?#t#Z> z;1~ot0B|If`h5%x*MQSiRq?imi^=|y4wFrgODh;^SITi)H8mzE{1?&z{ih$ znOadTulVOiy$uG)6vZ$~(Edr4A};O(F^)8*hy2)Js+52Ix`&dIf(XGu8VABTo+ZG} z-z&u~j^Pb68Rwo#;X2H>C!iI=!FZpS_X=VS^bL@;U!jTQFl~?9ZqJ3p5xo!LQsmy+y)b!tyCCIkD ztNe%l3FLrv21vzG%03b!sQC7chm(_&o&7e5Fnm1d=2%5pqhEx3RX?GDySNkp;Nhf_ ztgH_}5b{X4B>;5j%QHhmWe$dnM?j4~d{Eol+`($O+>e7uPb{SYnsEA%(-%)!z3+K# z?m|sA3pLVj=Gf=htGV>6c!o&F zJP!%scy;d~nmU3|$mBL6ERw0DuYZInckWz#T-@2~)zB1<5i8(HUzZA%#PvcfI^v5r zdW5Amo*TWI|G?$?&6_P{6lf|idL~^+2f~3vssH4F@GxTPXfh7ZUiV`JxiW3yE=g1hND+`obwx*vbfC!YWDIy7lBw-ClVHR^ z7e(TR)Q<7mh?C_ZcW^m4Lc4-FfN$Q!>0Bfzpa`H&I!*@d;M zTebdSd*WD=ij~zIb~Cc!vggkOhQR z?v)V`Po+MY8C7BVCfdD3^^$s6F?6{kpAw>xtTXZKq&vqcFNG@*Y1Xbx(ja z5m8ZG$R;p32=>;mYPPS@#GeU>$6+&qSCe?)76*tp@BxN)Y|1We2gGi&_2oe+0VL2Z zU_xMZ^@?2RaFd4*E0ZIm%}_*^mY6s?KK=(Eyt?Xw!sE%}E?pVfV$c>VTp%n=9LCgaQU(8Ef$ECmJI4j^IcABAyhgs~mpxVE&mF+zK>+0M91v6?U&jn(^dA~7x(OaO*Y4Mn zj(Z4DKskGACy%7|J{0YPbqG|xpcWx&Ol?(Rr47miNf8g>YccxE7FmlENd1R6W#EzF!5P_bSzZdE&{+0kTiUxBjgYYM^RnK86hlx{2&uk=dwM! zKa^{aK&)=(z~!)I*zuX~4%cCR{yGuOaX}PsF2R)9L4azH8EAi!rSH2@4y3%}+}yhf z=%?1*(N7e4oFB6_ASQtJ)~|D5K|)c-l#yQq6%>_&L8fM+c>I1ZZ9O!b)**UGa#M*hvl+7XHa4FTN< zrv<;0;murtCWId&BdxjlUk*FsQ*lNyC7ZN`tEzUb>~WJL_wf%1Ae}+QxQ9tu1hWu% z%$DHH25bq!*~^#Hzi-pkpjNtgk%EBC{&WoS=+T`7_)dqsb)hbU(_^7=ROc#+Lyw@{mEnSwVcaE#*xnt8wkNvz#xbtAb#_;q!A`)@R$1ADm`;if=o zp?^?TU^lks)1RHsLqib_l?AZD=*CvHu(qZlV8D^y#iW}53+@m?LLl@hIi|;6Rbshd z7nse@;us3y7%wlfaquGeb&CrAM4;i6uk3BEvcb-T$^Aj)VzNjIW>H_AhvbNYir*2*{XsWaP;l+7oX& z{O?)WZE~YWre4dTJnq;<7lPs|{$1 z`b|lhMD`ET{m?HLcxPy_pPxNb!67P;f4GHE^LG#sQcp6o{}*)iX*!!S5Lau)>G;R{ z{11RAAuhXznp*kFmA9=^*jErUqW~_wZ?0M~cb(6LKyzQXAm6n85N>rhp)2x(jLkd> z7N8JWE)a4{6BAsN<6dnAOo@-M^3fsSgdl+!S7ktWCGW}q6Zr%LdLYklCpdl@Mg6%W zcqlBKz5cC`eE8?j&&ZB5Kfwui49p$~r@)LDG>BC|5CC0^IcY14G|G?>H48O2)K*^J z%eQV7p(XejKW>^@M%I%G(Zw@kK%a56HxT=Q)8%xFPX55&3*b0-joE|mj(k%{6G-Ak zLAW@Bh2-bYRXse4K)92WC(w={hsL~m1p(kyOw3-wwIn4X!|P*S0=}YsIJ48VTGmFt z_k+tXeY|Ak(UY&t2M!%#*g@=~e|w&eg=J=P(tpzcr?jSVI1$?i#FQ$!^vd?)Hprl6 zUyLg6Jz;K$SoQFN69)W+$T(yT{9j41xYN_MM>K9prwUTj?Sj$2#Qpy+`CHm>x`Ar zo^z6R+d|;DnK7`k#$py@NI|M9udI|me||fmqOuY_t#{a(`OqOs0^feh^r((;JkiOw z`<3Pbz*k`tKB;@9oZJ{Gs_;IJ^BgUnDFN?5Y`V8MV#M0g@(K0$`l14b4+?AhlM4ny z2Y}^#dI7+w3DACV|EWt~aL~A=Q~6CZK%%9kB|O{OpipSQ;z?R{=(F*g6SSV5|G-Oc zb3B9m*Cw-p^!jMd6CiL1pJ0+o-;ot4{pjT?@?7b5f{CAlVZU;-kcUhuf&`5dco*Xg zDg|YX_0-6}S9Tk&(s0x?K6=e#6QNT=9CSt4n~)4Sbd;efph53AcRTEPYN{zj@cjJz zH*Ywm*I>MK7TEfW|A!LZz5RJkXdxGa7f}a%olzWqde-m89B$}bogI3#*q$OBtLX0O z*>(?&wnNQA6S;2!0aPJX=l4-ACWTq>zZA~X`wAQHace$V<^XPtGnpJOEwaVP z1=~(Sf+-0|0d}b$@3T-OMhj-VEt&HE5A*Z;1K9~&oM$HuFIjDigFQ*9q0;PlICw=# zNeN-hL6>`7!(9xM#Pf$(&`E%4bxB)x*B!_$fJ#4`x0GU8_Mx&e@R?PdQe35*oq+^p-A*$D|A-rnB9)^8VmO@6eM zS(Tu>D0k=Bt%*Q0Kpa9nb){bzsdNO)Ts3A-Fw&T zp(}b`S0@u*?Eg3LS4~kjCz(MYEwTaNrbWZ7&_UmeZKrena1RcG^A`gnBaOUFQ7gRk zfdWDE#g+|g*5nkWdM-A9Zk+hDQ}e&(bz9$@!rbAa&c4_NS3^CaIKy{Uq?B%{+I_&o zj&(e~+>kJU(4x_%BP9s>$>D1|ak~EO3V$wNGQTk@>|p%cVbz26^tz9F!}O&f`S{VJ zB2*S0duU$g-rLO2m&8o&);l;zihjjhAuLo8s4(p#@kssYp|(f{<4exyQalsPjmB3Q znGN>!dp!9pUr<@-t>y5%a@2-?V`JC))42=y%A{`Ba~|2JCL{W7`dtDpv4T6@G?H^j z)NlOpqlbszFT4U}cbLZ%@b0T4I<%_A#>NJU$>D)JvywGDN&d(?o+aAf)ZKO$mQj|L7|UsFRI>>vTCrWcFRob`!8!115rCzT3K!O^IKvv z4uZT-#wexzXwVZLju<+0^7?;MX3iv}#PJJ(^0|)mp6^=*dg9{&lq&I_Q4e9*YIpYo zR@YKe#7F!3o0ZF6k`oW_?cbOGJ3TI4dzi-3_Vl+f|q7Mk3w>Q&y8=QDNBo8Y0 zxAlMO7APM;HqU6;`(}LnS8B@qCr?Dt6E0!s(}iO08Dc2uycJVkC%HVUY5-;A#5tEc zicjkDXI{?Op)2$qNbFxSXSk(vqktv+V69qB9pa%H1obJ~|JqR55m( zV!nh|dmvSF)ObIjI>C%O45=t2LGCsa`{aLFX=!5r93)BrezI7BWmTV{^zj+~Eclbml%Jg!yv z`n7m2PcEdUNFUoppmGq8)vsUQ$fTE|M&CVj=B}Cy3=}zmdRKeGy8CCAY!-cx1hWMT zBCQ<~Y;YevZj%tX<;_Z}1c_{dwu(~T=bw7dX6YVkB->;MX!T^_D=b0JHHk%N>ZQoxZf1qpENR2!lh2VE{M)riJ?k@sS#QDVwR$ zlS_&j2Jtv|`br|>S5Z?de;sA+B<6;XA%KNpwL**8_*4#&$RGFTY!@y z2-UQagVH8kSO^bIMaka5;Xze{yTM6Uy|$1Lg+O(d_n)Kr zSAb|jDPh97Wh}IR{}cMjD=+1PrVKb59`#C{NJ6t=wOezcg`!PN-sWY{^(9=%xy(va z{~-TcGVow<@bsF;RzKQW{RG!54!)lbX$%>Hg6+`$D~Cfu!r&k}I4GGbP-{vAFaR>t zZKjoyFq=B{E0vq?$xoD-UFGE59diFu>O9s7thJ-gIj-e6%f{-s{MDksoij4_Nf1Go`W`T>9YU3CHn_S5F-LZ3Li=n$2{P*o5%FOBGxnfCPlRmrP)a%xP^?`DkAHRR6Ty7iBOJFpw}0dtf(P?* zHz8m~++<5joJhL8dWVMXVevJHJ=Wp+q6HBh5?m9dxHiP%ArsU!j_lpglTl92ix+DF z%@`N2^YJ;w@d7lawpMx2v&MbTxz&B1dLL@l0Xm5v5!>wJ{qb~2i0yL4bSCG7+miVi zUdWDno>#_^0EbLwq1#q9y&OQv_u*mBwcb;v$n6R_(}v}OUF5p8H=Gmhwq&)pCUqQm zIJ2JfQq^;q`C za&Onfx06mYmhdTcO*#ZY1$^#mbRaK#cn0PFayPfdmgjfwyu&2GZWD*_FANWQ77F|O z7s4of%d`B|`q;@_I)!z^d&nf7TQf{0Xv^aF-KyIyrKG4?R zCA`ypV`fqc*o0-taQKLtL)hllfQ`iz}&Kw)VU%9~d4I4SD2v`S= zp9=B=%+LVS^rg05qcwC z;opzPI(PnjOdxj0?6WexOGrX^vnOj9l?Oj~i}sfkKr055UlyxjTYTJO_xDBn6c3mW z_BC0Setoj$$F^%B5fLpoXdP4;-8D-ei3fE;=k==w(vVpEeg{cUKr07M#3U2l(S8tH zZUom*g0tJcyl%x-SMO%t-HshQYDTq+hIIlHEsqkXmm0{9cHjecHd|TA8ig=E z3BG=P^gg=6ZCnYh)!9q+Mg8SS=PxxiPR`EIIvRL)K({6L7Oxs89uDTX57Puv(a&GM z@ay#h(}I%Aq|I@&3m_Zp+RH($d(ZgXbRV_qwU$5(?Njmv8lL!EL~Ge|=d%C!7Li~` z9>Dtf@Tl|iJwZL{Z_imNr5kRIL~3~AnFel8`=PZV?wt${09a|LO*e0_kA?+B`k>`r zwQ}WEhXnHM-;4biIW6(jVRl1(hUQJ1R7^Ucx>9(c+IPa1jd`tmt3U89;N?+$NCbfK zF@Bq4ZT$o`NM4>)RL?1Z7!pFu*AzJz$bqRY%=oC3UqRa;;a@G*#S9WCnJZiG3qFNs z9JvJs&`p*-Y&jn7?!;|^nM~w_dxMKYjaJizn3#1fjh;E3;`n<)w%auz18N9A{+b|i zRdBf#@RAa7v*Kc71gNwZ5R#c5UbRR&ZX7N^o5*=4@g8rLdDsw}PfN--l&OChp-al5y~QEM(G6i-%GUP)vV z^UaNZyu*Y$6_b@f_4>YME-qQ{Ryn7%&hlNmW&)+Z?ru?kuRdy9WGtXcFj!jeVBg=> zb6%{(g-pqCkg zS%(gFOItfwbV)+>3Zgeasfp+-A;5j5FmjmHA8tubpDh#0Ar;Mt8x_uUW6HdFMKncB zBac4*H~~C~ltCFv?&~Zk2NavScke?uU&Lc~%0^t&x?kBWl z(~gfT-x7*Ty`jE*D;3Gcg(;u`D+VX^ z%<5hIyQ@u5xN*Z$C1}x}4{KMhqXRtzk&Tr}6k!FKC(e$sJ)=MH9&|(9Uz6Ch;!{dp za-?nmbD1yC!^irr1lD-yA8xI&%XZq-sTI8k4T_2VXl(a#@09BG6^l##8`Fvz$B466 z3M3?xkft#dD{&(AemUric&l^gRqO0C)7EzD(&cW{b+8)P!7-;!mF-vAP=4o*#r)0V zv)AffIpP1$+&ROt^w!j!yLuE9SUUG>sE|5*a+;zdmKL5HM|w^K@96zv@f8QMHCnSD zfBuxGd8&jPyh*vL-NkjqijIN^qk3g?{2OX6B_`fG>k9aVb4{Y&{>LAo?@O79SoHVH z=3riBs?vT{dg0cz{5d^-P@mpyKs>v#SE^a8PJ|5tj1lvCj2$a&*13J^)b9KCS^lZB zOj@|}aCg1U26~Gm^)`&e-@BrETEB5qPED|pmhI6^t;f`GI843YYF7_Jv#ResdW?J+Q8H(p5FDHW|L@L{4OWQJh}9^x>oPU7s-&|Q3>lJpZIn&i$6}w&98MCk(IN4Fz{Z48L<$k zL1uhl`n&&)XgS)RBTmbi^{pFdL0Eh9_Mj#5L?D!M-=W?d-!eMXxp2^Dj!!q8OW)B+XBKbpL+b(_gVh z+wWJ=Kg&oJ{bT63N8d5*)oVcio(9& zU}_4~D`a!h2FMe6?BwCYuCk~=NEM*!AR%-N7e#D51AIs{01WrDb z=~?hRU~kVwF9s(k3&Vy9Q!XS_YjE(AX|3CLenlpCg({;`@AtK*W^ ze|!maNg-Oo!`It*-KYJ#gCFxrqt8kfduVFytX`?9v-`!Y3yHfb7i($<<>qc~Pj|j> zF)%^v!K0O56cZQ9IK7QM<#%7*(C}4hso2w`Zn%5r4sa15WEqLdFU{W8XDO;q)|2pR zB?Ju(jsH=B8BITa@IU|;(tBc&nwCZueEsreKbVM{=ZJE>L4&X^sC@rEIw@)9CrLY7 z1Jw%oKlCSpkTI%e2|P{#=%}>cmHEdBZf9OWGf8EtXcuF3xQok5TZF`_s+rtk)`FmJ z3_E%9pt9jb-=NDKDTTZ%B!zECC0(v~dc5}&M)wcs)oa;mHw~A$jlTdAsZ&F52f%1kcB(_mF~x3+4)KJzkgp& zNRY=o9&U)(+Pk|ySbT+2V%^%c|ILTMb+{m5d9%w`4htNx-1nqyU`XGc%zy6oq%drv z+n}2K&FTPlX#KhHGdoDg-!BZdxah91AK)JxPE#vy=QzjjV zqYT7!*9h`0Gn!}B@R2r@*PPlIx7%*Y$&WN-@c8-o?7UfFc`oO&%4R;T7FfgD}6UHcHP~>a5 zFJ9>5)A{H~%ok%6b$l`aW$4PN~-*oQ0d5<4G ziamGEwe>zVCVe;Gc#UyC*&W^0)RK~t%I__o)G%t$skV=6ZwMi%va*$ON~;?Ma|H-7 z5&?)Kz%oXETZAKD3ep%tP--fO6|1OhBUI`LI1m-UEnzb(-MR!7Jiq=FLOt-whQju4 zzrGobwEmJ6pRn`d#gnhct=7_(8QG^(=bEwyA1AI@k$*rgs(kS?LHNw_Mehx}cXXh( z`|y$fQdBgv>)!rBQPKI=@9#X*h8IID935?Eb8tTSwc^zUE3x9^$KN!@I);Y5R&A3A zfNjD|2=w{T*6-ezZ&|(3(bQ6O-jsbia80#u;D)Ze#tt1itgWJe29-btxP~It>$R>R zBoJ(&6$6J5D;dxk=H8PFqz=AMseds`r{IE=&ot|oXwl1`O`6xIw|1b5f6(_`8@n** z8s(ZDK>cexcI-kH`{cMnw1?~f4fj9p1U!LX*c*Xa@2{GSjzfYxa=zk-r<|i>2pM8Q z!~~1opYhlsUP%TJ2we*&J1bA*J{o$K7$66y$NSsdY}aetu(6^=H}z#ZJ>rAmdZ{_z zCTv*%s7cbGD#PuQJeufu?GvpA-!mQ2Z3?3VrUpk}%_y*DQV)E2Bs7#SWJE4-XvWmdGH8%m1;#Dr-F&v%cb7iQ z?g_VR5`x9v>eJJlZZ3=M(X%l0SkT4c7ZP?})ko5JKIQ1Ms)9?GO#1ZNd*XzJV_$D$ zOJCpEtNKn8CDWbH|MI!ZRk$oGC=MUi%cr)JP{l>{j3-JCTu-^ z;o{1{gOi8a^q4t)hmMQ7PPg-mH`K{jR!&o!Ab)7@jn2{k8U`7U>9xLQZuEH>Fh#B7 z$IlHW6YT4xIpSLQ6FOS{Ob78fzG1Lj;Qgvacjg1})9WyA7sRO#CCLs8TV}c z!1Iw~e{X7@HPWcJ+`x6!FE`8Q_ zLg4lP$T(a06=pq_II)Fafi)N)kNThH0OvXwG%P~1cXo!c;l5;v#c}5giHS2(Vujq|t*yiIA}8LVhJjQD zdzD$)8ZZ^QYwD9tn{K>UQa-@kbV^jPs06p-dG_w#-$vmMT`*%FHx{pWdFh~~9W>|~ zq9mRU@DPP-=gz@AJ7x!|ZEx)MDCPF8e-+AdTzI@P@ERw z@FMqnVrgQo@dw?zM(sCKi~8NVeVZ9j(D;@3F=+K30gJ8Bg_-=L&p)vreegvtQ2jyK zSg0UNby+L(12pa7CagXlE|=x;U6o(A)t(-(qFPmeHkx*C_Pu-h<(^6VyQ#f+^hmcZ z=*zp7^7v`f?JFxYZC+)yw?_;g`?oxP{kIU1)p>J2DJquU^gi>g<@eO$lJzsE=Y{Om zSJqyZD_tu39eWRr^D1b+d-vhbPjj~Y88Sl4ap2Fk*3t3(`WL!AYco1_V&0$S&!X*z z+RoFdDI5Rs=J&x>KR-**s_E<7&YxE0oqp_?Lsrn^k8?eX)qmCxxV5FD$NF6{gFG8O zItEM(u=a1SD~~vO?CaO_2@Val(xXQ0E=xbtMNl)%eR$;I=cliqVaE7RR^@?(^9H4@t4k$M6%o%nX@JG3KZzD#7@=><-_Idk` z2;L||!B`}z`#Vtb@Z)#AxzhAdoi4^H-Fv{j7hp#zuZE1pJ48A1;#g(MMX7+l3G4YC zrEHw~SO0d5^qkg{XS-A4%BW4QS(kWt{106nTNsPCrReH&TY)Z{Qkf z6u5~KK7nLS{Vza@$ECAfX?u{kima)UDFIdYiVt>>(uD2BrJr>D+x{W`?Yg_L$%0xz zMM=q+ze1iyTFQNaB8jL65TxHRxdT>%T8>Du9x|7KK0694opr^!0nwGAJqqr6FelW=Ps)yVUgJO6FD zaPh^h^#|rIuzCK~@O6uvvN>I0zs2pMSh9^7Y*$WIIrlka^}qTa&>bB|Mu4F%uT>suY0_Cf$YTS zRw5@_MAaF`SxlDc-|t*nLQjtg0cUJ#4}d{1gGW&bns@3uhQbW#=pTWvQQW$sfEU^C z)|)zoawb_V_Pb`o$BrVu>O=m?8F3iwR?S>;XHWMpyKHT3sjc`?5H0~2b3JDNn7oEK z4PhO(L@pJHVX64{WWF5Jsg)DB2q<_^Z9ynaE=moK6rNk^I0+xjV~x-tfJ zk;qi$q%Ep@4?gFg;^8|hW@$05UtI;JQ}&uMAY4&Ue>MT$h@rr!A zW~TYHb(a~5R*`p}3EPFDo9l-()(x3)N`2&lfd^HG;Qetba>?e#{lfdh zJB}UQ(`$s>_SH6nQKk)T%ixD119O=_f8SeZ4-6&tT^|UhuKZ2~6r1qj$7m(xSh#g8 z(L=|!C>=MJOH*k>mC~IlD+d z+}MJ4ZLx~S5c7r|3RB;eDdt6f7`if8WF_Z3nT_EHq7K0L{nY9Rzjz+6U%eVKXt9LZ zv}wcD)uS(;yL`D6`E9`TcH%Vpshc!dNlD-7OP)ucIC@m%OpaLbb^sTu$#odkP+ngC zR3pqfiQ%FBt+41T{P3{-Z;j5sfn4F0-*0be*59_(wb&FQu&+LwBWK={Ht#oKi&E549#U3t<2DaE_}ug7Z|VwU1j%Rvl9^(~wYW z#vsdSZ^`P1PoLgP-J^^LJlj{#JS_aNah!oTZ(mRz#_R7Qu!o=|tRwtV>J_dTMKg4i zlj^fz-L05iF))d(bIoBZ-Q4a~cvqYBR>_nMU{&7MCB%7eBdT@TrDj9n21T9p?&Nup z6TRpS`13+}GBb0gbZPo@1GbgxtGeR7?Wz4KtG;v`D zhbIsAZSg<%6=JfhjJ-!<+a8aT#d0N1jlU3JumuX!Fp>JReHd=PEMUO#8OsOi6l5>h zx+>uXdN#S$WxfoHLr@Noa>Q)dR1c!y;{!FFP%zW0;AzZRbFK$M(W6sBtIGkO@g-x zjg#h?IgdYYYVO?L0=;LiUdJFZiRj)^^}=L6JH)6OkE-4AlEU-sbxA-NU=);PR8E$! zOj@R5DsYL|1c{YQg*0%7%1qb20{|Yc@R2kWAN*aDvMIhC?2k*#+}yBD;omU3lwMSU z5Kr-%9QZgNa~>FkqJt`*fqCN5qg?J7riBE*W#uYeDL5E9@~lu^FWMZseLLt<4_K(o z(D-r;xczB!w)}!56&eyE*RkV@EqZ`c74F4}LvK1&Woa9anj~erFnoRIv|*y^Uup?G zb4HYt|0V-wo<>HEjFV`XIrD-p&AIHoCH;G8jaljCNk|S z+Q|Ud9=el8(3G$l0d?`ba;eiSrkggc(~UkohuX&F{4uZ>6ngd?WngfW@DnXLhwF$r zN$Kn5)(u^_f3p{9b?Q_guE|PxIRX1=q>KE*T84nWn{x=ode?n%Ok?1R1C&T^(JMBHk|-qGy)D=XVpoV*Bmm}~$QJnwOFvdQ`( z9ReVFb?vLqq>wpb1+ARmx@gfF0KS}Xz4OzOduz)~3jV3K%kRMPs37g46Q=_!mrFnH zj91@U<9-nC#@-)1WC*HYvF`Ex{rXs4`=X^w4M3deWiWFH+PU+kX1xoJh1_9^M_9|a zC^jwDY4^ z!p#^ycDhB(4&y15p>AfAwK($I|O%%O=GX@Z*4raXJkP zE9O?b_xrj5eMv>d6+rU2<7e(WIQ8w=f5WPGb~?7=I>9Q%M#bS9&4aYy%8s+@YaBL-2z^mUh*xV=K_k??G?H6qs)>gRcPvRao95S6%-0+?EAQ!h@$j zH2uEz+?0`VohH%w@CTly)DpZ9sbAq?LuhIpYU&s7vQNz%G&*fBlr^Q+z`h%lm6b2V z6HEE!T-ms^ZP`bDZnhKrvfhVqotckP%By~D6 zd*jr<9=*$XtEWv)+mWc-FLfpb?|5{PqoQP%3QbPy0lE)Itv6i-Chc6Cdz~%NJ+Z(c zY2cbQ4YDUA^uwQ^xJDW9wzwFJha%K#z(0IyubNS@7y9tMY-Z<-Q=O@+b|E@C``x>( z2;K=K?F9{o&vv(cbbGx0f&~YD&td9;z;H@hmCf|&oQZqiS948$RoQcV8Ld4V;KOrV z*(Fb9^%{Zr_O%DJCvtXyR){JVW!uOC$OB#^`=!d_iAWmzAWyIj9OC}zS(M9ir}8Kn zhMN-yxEJBsoB33)w$OX%wzgSWirQ0{&Hg7Nz}<{e*eZtDwB&g+$@2M`gWLXyEDP1u zUB38az$sQ^&^vM>TLst@chzd0`@Y6QOp?#c@uv7oSy9MWcsLU8k)Xi4-@>e8lajoq zKYnv1`lz2t9N!%Nh0aE7=VMV?eo|AvoczD?^qGT zC;(hfcn%@t>PSD5&b??Bvr1));=if}-6?MP6`zwtp}KzU+FZ$6)?y*Eq~Y+YDLm^w zQ0y1%bBF*-fAn3Ee&o#W5U>^sVc3UzM#u`JQRo@=v=igP?1tHie z{PJZhXXk#h$4KtqF-{&g?jOm60pgIGL0DfT*hu#jDV0slWd0w`|KOdR=|ro&8KuFP zUHYXF-Oj)DH@N1OFBu?G0q)dUCmt0Zj)gGbSM42we&WEE=ydFD_+}SK5T>CKyB?V zOGYxntLeuU!1K}3f&e+(ec7A&M?m|2`8hf`gzS}|P@k}|!)2Z9zyB-Dr{wi-ha!FV zqB0qm;E;a!|3A2rWHN3mU3c%Wd2TUrBKX6u^_$GhM7Ds@O;`PJ$XUX3>bR*#=p?5u zvb3R@4SLjm#{C%_thl0u*H#CRStSKWosNR)ge`IcinKw~=PuEoj7-mVl)deq;aqFy zksI*szF@vGCNc5gr7aL1k4P&e(b^29a%L%0k`Ws_^?&wsKW7QqQY^!)ri$4N972n@`n z5Z3E@?5rnP)LSCBvf1$tZPTh=pYdaXL6soA!JB+9A`n5$IM9%Z*~a3Bzx^`*{+ zQP02exWXHc2?Z6E>2ZaQTE_tb5Kd5VAZrlkTKuER%EKLWf&x z(2ya_vo@eKW?slgew`f~?S7qwQ>6G1tC&`Z4BSn4gSPYLap=XZrl9GYe|_1W2av|p zVd26u;5JIb1)X66N}yFc~5KT?)FKDl!hgSLKMC$q=-S31gh{CNfFYfhb~ zPctv*ic$m4W;x4_AmI|v=tVp|Jec}Z!r-BVhuGoBNSm%Bb#&UB8V2372VpYMt))!+ zPq@D9JTpxaG>3#=C9bwXPD5vt^uH+>%Gkp*-(ME~TSXuU`^R4H1{fUux~8P3filhq zbHLi5QEO{zy02Qpn-y)@!RwA$#W1C3;W)y(MRpI^7&NOJS{}U6xM8pF-~UXRr=93G zOmka5>oZpTuGi0=>EKOGfeHr=v5l<295SKiTTP80W^e=}iEMP>f2Gcyk9MD)?wok} zaxK*eL_|nP%b$d8k9U(cXS=7?f(!$Cbi@mg&d02&yaVv3J4F@{q?C(rMcUqz%q1m2 zt5{*af@T&f42f#`Y9=pO4RK2{DK2>zqJ1G@Vr=lJG-FUl;uJQ5u-Cg3*TJim6|@dd zEjYO5p<1Mc5|JLc0?B=)7 zYuVz0&@j4e{e}(q)24~C|5fqB=69sB$_;uXWRnZkpbvAYdE6N{ZlL)OX&a?+J7#)*RT8-m1cMb$>pz5%;)?%c*-q2zxAWynh z3xY$BW78_Xe!a2yZl^%?FFt=6+o5hh85O0bs(M;fL2*!7Ow1nNx$8EP4EPw$TQYG& z0kI$3JOxqB=lqEKpMSD9jt-2ScN;Om6dAV9SS_Wy;#iKWuF`&NTgKhV$*JHbd`Vx~ zl`DYtHtZ>Ed{4Pr`EA?QhV2FA_22;my7%ut9yHJ`^KkP1eq(;%=E5qgaF$Pu$ntf9 zNMtu_mZa!IAuH&giq->HZPmPD*&o^1=byvgmCgDG_l_zJh=2sQ&exayL6~;uZR<|G z%3a=u00#ddZW}OgJ-icU`{0$SsV@~T?{=?l{FGk9G?UIIeoox3hTp$EOXjTu%1ApN zSt*)s3elvW-(9j_TyP&^y0JdGF@Q&0GBXV%g+5zbb2)^GzA0`j;$&V_vV`n{cDbcd zCV;N1hxGQ>D*qAGF~3t9EEd6-DY!Q6;~M=`xygDUd1V8+a(CKjRKuc-k3NhxO8`9k z2OB1TOK|Lf(8uvzEPA))`UlOj@f^`SvrDhxg@H@m+|I7=)UDh7-4Eev9r3$T-GAX{ zM0%TB8nyouk0Xll)EqTw#2{2*!-l8x^5}l~N0ZLn2U3QT?MP*Rwny79c5+dljp!t` z?IQis>Q!%swaKhf@%iA0JTAMF`lvw6Mu58_xl-QH|y zG)rMASSrU}pO=deCyFjg8^x(f4~_Gz8>q03Q7H>y~d#?>YA)@4((cadE-IdrWGYj8(xd zxE0u1zyYMfT5PdH+4YR*3@p22`>Q}KB#A2jaqtgcy($i(cgyz`Wqt$$isj?ISSC`0 z4cmYL679=$m1zDT7{j$D64HljYVJwMgB>NVtib_QARN%+k3Mui!f@4bmL}AOYinuY zBa1UtiO3&~GR+EK3x5|^GIt2Hv!NSz*B;?0O9ik@GSZKXUmvH(p5s7u z_Ju8IY3NlLM{iYlHLzjhEz+)J012L{gz&zWK|v$`B1K&X!O$=j>c9_$7kd~L-U(@? z1poU9P05MSP|1L?kH78_27Wzu#(lSK#_fk}!WgQdp*q%w{mTxzUQo&D$2wnp!xs@% z1$;1RbM}`@3y7Qdeh>P7;rzF*K_bstenWy&2eC@e)^eUCc4q^+yKCbtx5DBt_@G>g;vNF}+Ns`$VPfl}nwWN|j zC%C7qvh-O{Wp6M+`@Ittn!E-_sps?TtZy??7^uu`He@V-@!K|b+o{G6TfpCJ-1FI2#Mci z;xa<1;0h~>51Y6y8}zOy!Lf><_WgSn#yDp*;-cL@!wFo?rk}jLC3v}m&0+oXG1`2G zyTN?s)#d)}2ZFDGd~;TzkAaVfB4BQ3-)9SKZBgVQ-2DM;!}vTud{o?d>Aa!Uq{Oe3 zLK`=}x1v?idEk~tEeRC&?O{nSyYpl;bO#)>!rwmn-3DQI#4`~O{SR<@5Xs07gP1OY8Sp+Ri$DAA- zj3GC$G(9?6m;dqO0wWWEP7$?7K~7P^oNzOsD$Xk~A|iBNz*O8cPBr*0(h4ZZeGXV5 z6%zfVIAxTwyd&~aBkuP7{$XXl%YMak$W8b~>9&REr}x3|h(QSU8z3- z%!)9YrKT%fT>~;jG!Mw7r}Xx^sK24kK{8!dDIZ`h*VGviQBjBNz6#IjH3?;*nIi-| zFM9q;TJm8>diq97OKEcjwngCTm+BitpuO-ZanHGVR+>ykDVc<5Dn_C~pkYh%mTe9W z#Y7N^Y~mA0x0tWLjhA`9#@V6AkKfZKiK@$ifcAkh%3+zO z*na4Ci@f{rugb!f9-F`S_c0>())m1IOO(9FDfdka?1@fI@UDd+&Zr;U1u5z)2DW4GPfgW zcDcPd$hTg$j+5{IGFZ89UzTPMOs&GXi%@$ne9S2dNYeF<(~H=fp>)!3^XAIk^NAoB z{!otPJ+XV47Eg6%dht!J#bA>^UOkkQfJ%u^r>X5vXYJu-J|+a3|T2uA1z$hwik*)l0xHyvL~HKgjoY z4B8!zsBdH2OB4&HKt5Uj1rQ*+Lyz$#iSyK7u?j(J!20rG!>F-FZ~Czm${u(7)bAqj zQUOqjz)!~wb@59&LNOua`0=L?9;6fR8PIu89A~~~msjUfP~|GIr=!~ArNY=5^mH>0 zjaM#TMx}a}36CHy3TZM4Q@_(iV+D&IPjmH2T5eCm^fv!;AKra15`9(S{q1-)aZA?5 z9qITJOw;%Y`U|u_6Y=;es1$gC0o(<+MPnq%)&F;N7w_ zY{R$W0+4eMaqMakxP9}#o^e>gh^rN(v&eS3cTgU+RMSh1iSjRtir_g*3$XIT4(3PpIlG^iEq(#hQPkzn z7z9zSW5*|@zw*4g?CG`EB(*iSb;7yx=bXY>5|CEd0xIJFJ^h{=Wt z?CK_(>P6}Owp)<8a*mBnm(;7^Fb%6M_1TLlc&}U6nHvS)>CmCiB~zJ5b{f4>;mR-l zftyTzN4(en2<>BTwX55BVpV49v|oD`l`mYdU@O%Zpb;edY6>0>i)jCW!PdNaB4+A_ zrBLM1r`ywGbTC27c*m)d z&R;v|qd{)`%s-xjNILj#?)x%~1v`j~ZEnncT^T8{a^$va_uOW}N^%$5f5pK#sg=$<*{qFEA)#I+Bt2s(Q7CA3EG1PK9x z1}teze4tyj{I1#Uc&+|94JGH!e7r)TrIn@SdqtgtnG_M@%q&b@9&fMa0<)VCxl0H~rhU2{5{%H7dd)B9a`h$@-hpK~-8l zqfTY?~^!M+Nx-*ZL z>QjyE>IJP;=EcMU^$A=3;H|O7YND?tXvnFW-+C7PA=~a!!HIr)Z667NoANfx-_&in z%gy!L#}>(ECUiY%u%buo;fjI7hH-YE9^dBQqta?{%laPaod-31EuAz6sJOAuEo?y2 z@7?e}id`BIn5~Nk^>tj=1zFqrPrgPmu-jyN)vZ~`Bc3kLw)9}u;r?+Bzq7LdTwz+J zNHFB1&zd`znav@u0`4eX1>?2hfNkV@u7a`ZA&WDnRiopY6pm!#xuX=*2pn<$-o4jF zMa1DnyRY%^PMweuC@HC!ySy6R2JVPZTM#>3P{lX!8{WQ+nD3Mn8@tP7R#nuko9{)i z2&1C&WA^Rb*yCYl>s!e`Ms54p1Iv80J+V>2Bdyq{?(BiPi|K+qvDg$<^=%km8(9>&(J1rNr zcj@Q0%jgRZR7Gn8yKQS}yc`|zCUful@~2Dn0ZsW_tU2!^Jb(TAo?QUI*ROt|%@D$?Zm&FFAv(O=@XXKPzu z{c1#6{xiAC<(DpB?$WKBKTt0|YBcLi191N_3%b081_ol@)A=*PXR7am%n1(3{2Yg!G1u~ zWgrl)Ix-)E+%%|r;0GptjULuNuYwyn zm*9=ODgoBhcI>M`+S!@>#z2|gSIgAYAJ`rnK1L-TMsJ@!?K--5bm3PZMDA!4K0WU+ zDR>s9m&ZVA#PUAodoq)DHNGsJJcBw51~|bHtf;*8iRE-lzuBLLcI?{qla0AHmjr)( z%%07!A53C>)PHhEj$||N8p&e8ym|NMbm(&tWa8+x5GcAD9Wa?n9CDF>Off2$#TEKD zZk1~5`Oq%he~^hu3m_9Ts2NkHK;=;IS-0~gQ6=;Hi6>NLGVdDIFjbb{FpV>Lck2n- z1hx`2+>~E_-F{vDh1v6%d|7K8xx1Jn{`}!XI76%10Z$za;(oW&O9vC*Nc5QK!EIub zdwPmzW1dxM;fojSYHcXT3yVL1zCf7U@LR&lVMorMLx=9i@Dk`cFaqH5bJ^2d#+ujf zK5?SY>WoE;7wh9mzhp@j$U6i?UK*hvc=ZTO%UGl_ZQ(DK0bS3Y4^qbyBts+rYfs2;7Cx(8!daJSUPQQ zr%b(rCqhC%1F2hJSF;N|Z~QTahNVd^rqy$bT~>EQAO$6pZP)Ic8B_0?v4QR<<{zqA zb6!s1{@G@&q5LH4?OYKixFS0sYMHhU-DNyrP+j?8QGSST5szqISp&ieXYVn{4b2T_ zs(b6qfffg*Qx;>qKJntk`OeNy{Ltix`-N}yRl!exqkUGe?BRaLnl+#{2w1lc{IV-$ z6ylk_<&vgzYj1mXlb82cuhWN11JwiOnuLH}V%ITp?axTo+ws{i;9c)T)Tph;<-l@9`n1zu_r~js1=lOPMVZX{}mMGd#)(Q_W0!J7ewI zt0ztrF}k8ahadfi&lp_4f6#wP*R9z=U!MgQy?mT3!{vU}GQ26?4*r5!(8#f4VL2DN z8$6j9ETt(#pF3xn|Gb7`U-(j8T^U80-XxDGiF3@`vbM3g>mo^vK=ne^i$rjQlbzjw zIw+?6d#Kpcl9S&*+9B#Ay~@U|oFXrvqoYQH)IAnP7DyGVryFipNN24X`Hq1U zwf7~b_$O`UT4#5LVat5e@6X5sR;+C7JZF#n3nbbS0ah`d?=lRb0x)iZa|8bf5iODs zw&RWy{RLm$y?Y+Q0wI<^1Uf7xP>42-!$%4e*QW0PvH*@oCI?Qd?=h08yOY&G4n;fX zHEmG#;wwVH!=-I0R(rd0gqwO~UYE95f9lVWT~zXL=|IDt_+7}zC}B;Jo*r@-aiJ3^ zPT{Lpj2WANVOR{ZhHt^|xOe~l5reMM=I3H#jSLNucG#|~7laL4MDjWWynXwoVUUO^ z39*`ojLe)9q^zJ2FeU*GO<#GdS+ib{Y>6%Ps_Md&Y18;2?71OA@K#1TUR_GI%rC1R zASXHH{nHM-vqO9KG#%^!MY6U2-X2wJTLoOEUcTJ;S zoV z^~`|x{d5L&>oe7ALOcL&bbUwlUndt5ZRkna+?%-1I(MR9di7ib@M ze81dtC8!L;WDYpB(x?3;c0kmL3vZ8Q07Oxh=#r&sZ>4Z{-!G#(^A?@G2tuzPZvC`- z1C0wh&%Z4#V8c4|Q#3)#MhqQ1co7^nCXZsLZpsA4TAH@o$}Ddq8mpq#tXI zLfBx1d+V!NT?K5Z!_K>g%1J%adr~Jckvxbu35xsZw-e<8s9cU8C$`yHT1qe9FqR=a zsnE~QPaJpa>SDE3z!ZW-0I{*M0>3oo!i9~^KbBpIOqilzIyXY{4-^BQzkkgD((QMz zKISQJa)UZU#u8UPLs2Emij*cqCunf^Eg-Ypef}@`qL*k2@QKr}IFvefr$rM63Um zCj~SYxH957UVuWt>m&Exmz2YVn2@?x;S?qS%u(Q=(Oz7iWkZhevKhG3^1nDB+VDW+ z5>shmAyaQ2@0h$bG-rVIV7th8D3F+|Pz7+~8FL;!7AxH#bvRysrzYSEB`_pLy86A? z?-0Ib&rZ2|^(1^Y2)fZuL(l0-feCS^DZdyUG7N(TLKrn&dC zK~TP%xF=)PkK4Y|E*MVGTafQPVV_f65)o-mP=Gh$BI@o=y;#noS>6!tfva6+?g?WW ziR_*Fh2dW5X{anqQK4{^#Vrc)Oq*F<4&DTZB&L8-?>@(3%tSXge*60Vy)K*`^qsut zBav!ym7jZjNW1(ml&m2Bu%p+an$nJTzF(dX z5I|zUGbiKQJ*TX=I2}u=C&5|#w?tZqspZvm?HW8!!5et}qI6*##O}kx!>OJ`0|qCd zwr8)2udaV)tAg86e*D?A+-xr^h*SXZKPS}Fn-zOOC^{b-D?Tg`xtCt!0u@vNV@9v@ zcecK@t#vb05x%hiu3t?5i~msBvu9rLxP*GBAsp+9uCdYsE;1b;qS3gHA2*I#3@!tT zC~@&8M~+f|w4ot8q1|yk2wbhvP*@>redOa{13cf39D>%2EXj7?yRj zgRn9cKmO0CcDZCv>2gw++w$dodiAm!67~#L=$o7ziRs>V2Q1f|nc~7xrzjw7GRYF0Hawc1a1SAsDg%bkb$AG!e0%733gwIR?!p`j~9;+$ajnA%cC^%!$K}g50 zZq8yiH(3!XoZa!@qia)7mp5VoCqFNl#(LMjl3`&h7~jUT-}UGHElh*V%(8)J==FGE zD-7l%g3TO3;iaP2e+@2NwC}P3ykA4797IIKcY4N;UN_|?>cX#$JasD5H`ryO=(+fl z?v%zYw{|ztm4FPh%7?lH_jmda+%ljbHTC#E_Wm?1=k{ykhtEi6O(bJV85$HS4U{1v zsiZ_j#!S(KM1#2!85#|V2nm%)NQy{EB0~dBGA0#Lnx4GkSJlpnv_kVl$;&=H` zXXkl*k7FHc?Q7rn^<4J5J=nFc?;TvzptNi`Sm~PLs^l zT(f%h^VQlX+@HKTC%gNt?90sP7cU~Mh(YB~y2(zF+P(TXiwHo3sU9OsesW#V0V8@) zt#kV@bf_5f9r`Fd5m9+fjr!+@G97ZYUPc0Q<6t`qAkm?in13@nY;Ll>xj*ThfbQ`l z1OTX;wFRb9;$?wfYzELjB2+b9^;S+Kgbr(YCMB*ol&&^IM1&C^lqLP}Y92IjAc7FV zi2BTCa>uI+7K)b_&r=QP6-l$3#FIugRRgZi*45;S*nLL1QICj3+>`es8)d}not9}= zKJ%V&(DcllC@n>%fBx4ttGw)k?OxNky2(-|hPIB5KIDL$G-wHEHhT>iw}R7hqD5CK zOt9G9vuEtlr-Ux`v07R)XU+sA1QlT{Idm&xn;k*b#W2WU^34FKySIwY5D@5kkhY&> z3Gi)4cF!kYwFiI?jB6j%S~?O6c`Ds@?vn3POCOX2Ie`_We$mnS&QdX=;P&lpM130X zdh1S7Ttg8QZ9lrd`_9!~$BrE%+eD}~&%t4KKfxY1Gjj>Yn4jyvq-6I|8U`OX&Y(<( zao2yzw!oOI_wUhqz*fHF+mZ?wGQHo0h1xt8KJG~)-&<&XM9kF^9FaKM%TtQrRxn6T z(y3&Q)b1$p+O)lUA1qtRG2x)x^b9a4Bvx|b!Lh1hf`Wqhq)hYdETTv%b=y5GurcoR z>7|?_+IphrOkV8TwJY^A7YX?#X-i(z*x{tXPoB(vo~PU`iz)|nm=RPAL~EqB<8j_p zB|n0nEeNo1oFT06E3iqpl9-4aeCGE#Ou8n&Rtrp(-JK>IoOy@4g7Y@O3G9jiC){MG zGctzKuO4ChlcY)hI+W!f{|MDDI<3>5B2~7IRsru0mIe7N<%dl(*EzV%9f00Dcd(=z z`z>M1-w6YD3mB)u+an5b1k)a*f?$BYV&@J{htC?}YJQ8CRk>H75t4Y9FGbZz(q zDMc<$PGv+>uAgBP#h+d=0))mt@Ynz^RV*etvX$H-!^4HCHE()Pp@YPmq}%hfXAn2W zi~|F8fOG^0-RLP(&ACf`+FKXWfq)f33jI89&0^GPSlZg1CIT~)m_l`a;^H~ZuAMW9 znAEK1=LMlz&G+y6lEg}QlH|o?yFjY@6^s|J?nw04Eqydqn^(R>FPJ3p?NP7K&npfZ zw*&K451A>kotzy?R^MzRMPK3%f<_(gC{i}2y%G-+5)yK9a^Px^lK<1Jz|9g9v5AG5 zjnAG%967>l4Myq6Y%J+M^-|FE^7rZn(HmB*$nGZr;UK{LptPF#h@b3d;0>Sp$}SOP zi~4$c=#6HrKJUt;!Flzg81nr--++^XP05M)py8{-Xf}3SOTOe z90S1!lUf-X)rII8yZ6DAU%h(Ns$3|Yv@x5>0FWIq$!LL9Z&@7djKoFH28?s0Gew3p zNJ`9ada2QDRp; z0*R%CfYToYD$0UOoXP1kW{ey;5=-wIP*3IF7HVA5yp4AHnonD|pfo{nD?e~xk6Vkx zr(Bz9{xeNhd{-8FMVE~muc7**lm!+x_HTEzxBtuS%c;QA7Oa}U+p$ULc!d4ZLKI`CAV)Eq3a}7CDBK~NJUm}Ht^fmuf^?BW1Vy!bmh(xuw^(+A}-wb zJy=a9t!7~K664?Q%>WM(uj8uw>?Qm(9i2rOK&WhE>~M7+-1v>?Js(wfV#BHA1p^~JGW2IuDFhYvn)3k zxQ$?l$6Tl$J#T0GS!nD;$m6F77OhkD= zi$*;(*CnowKKs84gTh&zf;b!)Co zr&PI@LLV2;)PNYE2x!TCH8Vu*+Kb=PyB|sAW-L-SEybq&4`=4bwi=#PdvyW>x+nR! zr*k=fmxPpI27*J!tfP9itOny>L?YFX8|IUciH5;^PEDN;Z@DMgbDG@VPMPFNq*jEA zs*fLEqaGIF1T%407Tc|9zySuQ*{1v(Kn?{EiwZh%#8(tIw{IK1UyyX;2Ek=M6$p=< ztvzRwF#R!oTcC%Ki#eE@ex#@@RJu!my@cTdDHYJ%htfq`$U4A>np{~swABJnIwHc_ zE^%RA>gi3qpM(4Nr*Hi70(GN^Lt`|4yeG|=rm4gM1)a5pJY0sthP zGU@&1+6=(0HkXBTKls$SY>|uZpt5EzC?D5F!88pxW%VEP2Bi|kAF9MO_Xhbqu`Ao@(5UA zI0z$u=o$*+Hgc9|k*mupDEOCWieWZdn&k&Yoy?3aaAHS`P}9W3q$DwriR6lA3a~zn zGaGLZL(wq&_{O`TL>{K|u)An|x^$V#Ap3ykH*ht#?=ZBGz2`mdGx;OpB!MNz=HN2? zQC<$8rfwk!AqD#Uk=~~n>0+D)pFw5}3XT*)TxRoj6JCm%>AlEbIwk5?QLk}L`d$sn! zFX`EX`{;3GuUmhDwJSOm7xyY+hr#~B`0G(<7K9oVpr4P2QfV7n6C|3?0?((XJI)Zk zKCvNq5HMIsiU>c*`{PKiLAL?|W>7I4_toIWC4TV%+S$K%JK7B`vd(kn28dvn{31|- zs&s%$%BL-#`i;v*7zH(9LjU1WfHH0)40DEz)tB9be;$__%k}Ncm-^J~va${$FczUv zt;dUx?s>2bN5U%6cR(&Ug(S`T3W1-tRov?$io&)6&tZtb+Fs z4M#*fg3-vuQXdZ}3xuSD04NNSl;%DHZy$%ln(nF~+F3JaLCx=PAZ6Lq4FE)B8r@ z+(|@NoxeJM?3ml8=+mbwxN(q9O*#J(ln&tg@o&`=o~8A9`!%y1R^dLslvhO1Y#$Fnae4s)DM`~*Uj3>!(-gZCU{yj0P0oh zy51*~jMuL%Y_8Odr7h)l(ly1il>U60fm*M>q>FW*vS^7MZ}W%Y^&TvOu_z21(#2U4 zY?W?q!+hCX??Yu@>C;^P^qetP8ydfMmx2bgvR@cALfvb@mTYJ^L^NI9_PJ%g+)~XC zf0T6eM-<|l7w@CuO z)!~M~N~8@1ib#m1^#2RgclU>Ohsv|sNGVT1wBWhr!g$wcgD%Q$Bj38{9w(RHD$>%{ zKKokF1OIGne>NJlv0)axa484d!^e9@>G?GTK*xlM^~cZfRsy~c=q2%c^3&QQhYx3M zDEVq>(xq1Ko`$006b<7z#GybF0N=&M_Rl;{T#DBXG&u|lcSh9hz>ZeTiW@2EY;)Sh(hm$v+vC$ifsp_T7)-ji?S zIWrFgs0C}yd5JqUvfoB--IB7ya7-;PG(0pHe&zX>U&za$ix3R~wivd1;X=2OxmG)H z{Lws~_b_vkq2ZuU-6|%YfZjg$(-ZIT3qLn`dUg)kJrT&fY2JI(27E-kH`X z8F#{4{E*XReIAf=ld(I54Zd3!sTRiwSdm~-XS8p^+kE}Phhv9<8|_6NWxq$wXaoG_kWMVJ^)sZl|PLNR0Y5_G5VelvFo5GkeBhA0EF{C zZfsm0BD}Z5a#vI?d+ci8HY+RnKHq=t+z3_gi6Tr?pU{jweOeKP4o6aSBsBDUP0i4W zTZWAs>BY$G_3OXWfFgPahXnV&-9FqV+_gw93iQF29`+k@1P8CC+=}A66m~` zd+|PDpSQApWSorgZfby*;wdn=-gDF-UWXeHI@tL+zdFjoJ_bwjrYIcT$(Ych=pKIu zw8FCJ85(-}-Eufj(NtdUM!mpQ2RDYQ{4crKiGDmWU4D$BC-tdUPF@tr_8{g^KX&fR zd*#*9fN-G?8n>dGEk0W=>(}EAAarA%sWgC-i*~kGXS$NW+%rBh$F#Kh95^8n{KVKE z2TTV+kP)idwW;G?_k&`3{v}E2v1rx%&MD-YWM9ym&duesUjS0F*zZl^qNb3~Zi)W6 zM=v19t#-@o_{TUbXiYwR=#Z9-M@@2aXs zGRAKdI*25XIdcyDhlawyz*-!z`dCCn>V|g)UzZ2Rv_XB~O+)ja^RNGWP=0JD5l-Y6 z?m=1QlMSNX1qQ<}nK={I6ev$U^;6SSy@h>#z=)jB%~S|jNw^s>N)A~k@f6DyN51l<}aDIP70TQuVk5OORE5Y5#FSElyQBSy*7L~sr z!^zEGpgtcaC{LMl!dRISm+061&sWNi*LivD&tjqZCpHW?N=>b&h_d)#b=qIS*zd-% zpX68(#S_u%2%3A_+5Ozs_OJ*?q6$bU(pvdA3^;7wY-4U0z0Q9U$Mo_=XfIO7L?N#K z`osKjeTH%pFkT%{XiB;LPY6<@68E4ZL z-Pkb1NGkGC=gDN&-jR>0j*Gp?j={`I2%`abo1%nTC=>M!zXIJ~Hh9-YU)sZZaQZ|9mtomRhDK_ow5z|!&H zHSR^dLUgdw!R3b6KTw>z6qZ8a^fQfzbhWkNZ77{oUuCu(yeaeU0#oyD-HD(j^ZKhB z%`6|Y+g`GiAecWOso`OwUpX z$NLjLN_dY_s4#-A<5-FXI)Z46PrXYW7Rm$Oh>O@nCrZYQlNb2(}*b-aK{v_ats&CD%`AFKk>Nerixl@7>=cCG5&hLho8$Av?kxmhy*73n|Co z&55k$&u{exm$pph<|`e zZd!{ME@WVGuNWLS4*Y#viK}d~NruMpu?W!ziR#kb^zqj0A^P>BEM}dzfkZ9j6#iwo z|A1lVb(cTfq)AQGWjm1O+}R)8=XFc(mS%FYEzSX`CoCf3-0N{m|ICaN&-?^@{Xo}k z{X_F>PHg+0a}SzY2`gMIlQv`e^op4DdNrizNlB2L*wK*)qgR!G`}C=+(|rGBvsk`Q zU-Kh))KwQ=ks9iq51zD{2qmo@q<2In++zP|bJ z?ul+WuRZ|Q>jj0(UcUUyfdjqWN>8ox4Vq{g0~f1&|Jj=nkCtzaC#kQJ@xD?$%F(TO ztD9RA@qm#tcCo6CerMw1_V`ymVeWL@n8QD~!e0Ze>O(E(!(AU71J|^1)>?0aRpqr+ zRl6j!=iRq6pEV2fJgzlBvAUJ+YvF5fOzKZ|-tcAn><>jwoxB{KOny(*I~Zuc#kb+Z ztfp~KMky;Rj~UZP7`4}w*m1wRm@L3Yy4?9xaaoHSMkP_h>~|D>hPd$Dy34==y4A;&Jm0&63tG}GkET|dxhfI)E4LHO7%2gr*wRbhP z+jNiUJN<%IawVrS=nQ0!r*o&oiNj<(#3F1iXQwoUZojm30$a9AepZ5In zu;Q_Ut03vAee_r(7vcuoODgRd!Egy$+DHue<%@56sE~M376D5FmAbS|#}*xF0;M$N z#gY{(c>e^7d4NN7ognps$9vRH-%3~nTbMm-7Lo%s`Z0NV-wE)J|efnLF_MZV%SrCi8*}9$u$zy z*f!ZRuJgh~ytN7|BDcJ#hLBa|jUqU2b+)x|6 z|K~I2AAQ=shbAES%hbD>V_m)mn6SNxJPXxdvrbTUQwoGlz@?YpndcH-0H5-(f1nf3~ysacJ#1f6R2K3&?0o5~^%|@v^(o34 zRR$uk1Gty);~*lh6jUvOK)_@o=(UV+^w%4 zi8*X~=F8{L&>gB?_m-cAn@l^ZA4j#IuDu7IJ#!|MjZx!#LEyR5nAn^06kP;oMYwFo zjtPmR51Nlg`7!NT z*47?~_CQBryx24i8Zf|{IgVr{M1H8J(0HQOZT-vkrNsyZa#lFU0WvDJ0`5=c>o~Y= z^*IXaa>AwS6l`(6>Q@vi>(e(hm)Ui`tm^NHG>hh)GxvtHNV`&m7_W0C%Ss!rtmc=z z&pmoPo<@opx%&AxGBOsMnvNJgyo%^e41RcET(_z6-B-`OtqI{66j@7nXzA(dzbu8!3Ef8kagVJbC`2aCU&+^32?hJR`Z5cSrc}sqOXro`c zwx5^ngcjts)bxZ-+K^;V7Y{oiUJLhJfO=%dmEKoy^o3c z>b$aa*Z?mJh$ROh+H83E^yd1X>;eRweS|_W>b*el6-MJtwA!(4;ld(#{+wc=$+ueg zBHCX7E8B91}3^a8A zIpnd!qmr%D;`MFp_J{bJp|{ri1D2lD;GSup&3iO{J> ziniy=_cHbKGYXGeAkVc*fWH>DYL4KuNqE@3R>>J!7kkHcBK!xB0*Rori)-72Ap8ApMJ#XPhLCuTQ1-nOXA%o2|Y5atOpF!DavbE&oxo@rIE84S&R|p^~4Y*#gxtWreFYPzA zNvHUh5FAdN5J2TnuZkQw~$4D&YyLrF9-NrBzwu_jiPm!bC^{ z9{i;ahv`zWbF%+#9#=VLKUlS3|JI&9AAEM{($kEqI@or!#T7X!I}5Fp_VEVuVf3_t zvsoDX{I8joTs7))vl*@vXX4Qs;2lp8+pXL&Hu!-mP+h_5^|{?I&=py=>d((XuR`vi zqNMo-m!D48&JDA-y>cnL!c&ind$2@HV8OtFxSXH6L<>$T9h30cbDIRIQIQKDSn=jd zp|4(8$oEZGd0$}-4|>Ho{yBcqvOR-qXQBPj|$eteL~rReJP=e^f-EzWVBu@mM0c{2+OyeY`yM~`^8At)(t_6TlBwg0&& ziTm6-sFv2=Iksa*77fp)m&*Lu&PXeB&EZT+5g&!yIbblmCO==(z+fx)i)hLE^+N^? zVyC~OghMpJlx@0M$NM&~n-(d*nFb(ZR7lubE zUCf5DDIkpTM>vG{I`)F4Nr}h6-w=K?gaR=Um4|6K=1)v6o7%~C=a~kVt3|rJMmeyH z@J#}AAcC@oUFkVURf3V-aVCG$zknqywmr`|hH2>;;=g#|-IM?KXK;1JfIiQ;g}Dw} zw|3eNUy+O$HbE9_?@6M=zVc9f!95-$hoJ<(Zbz!Qjt1I#Y zHZ1sIPIk5kF@SK~y1X$LR$@kju<}wu2&JDlB6K0zBNd7r5OJhg{4WoZtb~hOIY?L& z(Z3J9v&ox@o&4e6`0%Nmeoo1S_BXpDCFpL}qwCO-_xRIk5HH~sYV@1K==R(Q?-R{XA?+^~VO9;3k1_tfbBDC?2srr1@$rs4+t^o_afA&4ea32z!GczQo zOgMX)oRMacwp;mR;r|I%su?~QL8?t8BCu54EO1l^X*)LrC;hke^e~1P`1=PC{Ugjm zk9=E%S;g06`d~VrWN!5i&AX(wPJkKFkWA{pU(R_zxnu986 z86Hc_k6)(t8*hJ3A$RoOpT{A*PSHO2KSwY1sXLkQF!7N8`Txk`z!19M>c`7u+Z~b? z&P}X0?k;R2vMt`m&J8{J4O9MYpul9bFcMw5Kw~+aFi}NC=;^Z(RI0+}VKN}X-A9up z*&9m^|9dHS;u9~kRp`x9Vo*h$>O(CqG~WrCj*^ImgV9bpIn3f$xDE6Cx3euMpXj@D ztJhf?wB7Y`V$K)`N^7kGdNn`-4^N?vV+QXkHa&%;^l;N|=L+}$%l_w64xx`PjHl8p zR9yPMT!1K=6qI6QK~vW+z)l&?T4xdYH_nw1@kIg<4dMB&ZwsG9*TBHut+!Aytott> zYW9+tW@(v7eoqxopZY^_&>B)*0P2Xau%`@XdHM3pcS#7?NzrB zVwWarBkm`T5;D8$cg8wMn?-{M4^E5qM6YsU?oWokXXu0zUCT}W1+IFUf?^{28hkkh z2pZe=wrwJ}&6__OFa-E=LPAdw^@Gov5&u7%Lj|sVyBAwU5LuNgA4zv z)DT{Hwe){MBUoVD(q4Q&O+Kvyx-?~X<)pu?(a4!>NJ@-O?DnTc?*c~ zruDr4od-q*Afk1i7wIg7*;3kakfs*{ii<&V`9pPbq8i|0w1&nWxlVs*Q&btV4cmT} z%oMiZuCu$KpGs+x0#l>X>Y%g}yp^>=6652O8Dwc@#^=t>%fpcAlh4deo33+XZ{D2B z2otD2TRaPR5hA-ew`msa z2MQq-C$DsGS%j57Tb^h@!DOcv{M~k~i%V-=#We0@2UY&Bj2|@wj5TI#_i_%x6)J}0 z%ExEor;OQ@M)KF8ZiAWEfQ2cq9hoilC8t}(lv_)ZWf@cof(S21cboRai2@)=dzOlj zU`h1B=5Kw_vXa{*%m6F28z9a>i$xXbeQ$U7G}+#o_337?GPpQsTGK=MTo@k;bBJyQ ztqOaBl#4Il@jV!CQE)~YIBVCfqcedNA??U*=FKdJRzie_=GX+t0oAk1E1TF&F1m)} z#x>k16FyT6pBc>|BoCf3$&vWGYl%Ut4>)K`SoWM}1 z;Dkzsv8^BUqX4dpP7AYS-QkS3x@wehBLj0ZoJ>RCM9=f4YVar9i;0Ohu3ul@n9c2h zEac`_{!Xde4qRo(v|SrzS2;V&DJW=umhkH$5sCeS)W&IP*T4ChujZHD;g{|auU&RF zHg;#R&7KKv7#WCN(f?L*;|DL#2PX33qOkKf(4NL2-Jer7ZPIam1x9Ru-h{VF0R<_~ zEp#T=C^*u^t8W*_Q9D=YKRY^JAj+^exGu2d)Dt&Ef<=Q;_!gC&Qh|iO%77<@g}+#Q zFxKF}KwMbvdkY$RXzn{VEQiKMmcM_uR<_HVwy5WeZ7sh4^;Mg!?ACuch{RdHXAKgy zTn&O_p3~yR7X6?$(*hT+&r9*~6|UQwv-9&MML3dxsOmkzhqcZ=dZPCc)xP-&h0mXF ze|ZYH<>4m5m3&J$gsUn2_WfHn0z0=;XQ2kQv$b^}Dp)lh{B&tyiukMa`Q=hUT(Y{> zZ>K)pTzs&5vu)h9vOkwI4`(iNJb~IlnEQd-)RxX(=D#FFLfqO4+NV5}fqSY7B~M10 zk3i$7AOfYkw{0T_nWN`OKc;HJ!nd5!^`v-;qeuk|r%RN1=lS%f92;&0u_a{n=`#eXr(iO6r0duWv&+hd zPJ8UP+LYa>D!qF$o37H>O*!fbnUL5i(vhU3Ly387ZON@^^WEz|HEsOlZ8bT&J1%;x zJ@~^xkwmh9vx9;lC()VoI&WGMlwXr055B ztX-LW$Be{co|TnoI|CgWJDjKW?A|@gANrA~LowAZXqdQ=ssCYess6h);8PHAi^-ZtkJssbh3-`3{wtAsa3WQke?wAzznWyxp?Li*FE zzZx5{Etw=j`{POUS+MZmGus^*X$KjFkCie5az`J*HfxyJ^9hP=Z}Uyx-zb}7{k-=u zzbi!O+T!c8K~wm({6Y=e`xZUy_SM~M%b$KV^j^?@vdFt_je}NgXrYwk3uHcE&mO4j zGCdzOs)}u=jOLUiBz&XuPH%TsIB}AiWhE@v!Z*kDoH%Hz^ssT!F%p&A%!>U!(|E+> z556S^RE&=q0PQ}v5$39(Z8Xb!Z8%yTsne3+(sS-+&;J! z#v((8{0D98--i{EXZ|POIGJ!FcLlK*E%aQKN}up+GofM?07)BFm+v;IA&48bv%!;zrx_a4U3mk z{j)i#YnK^~s&qK)x8L|tOQYeT%thK{XG{B5mzQVi)Cdt%1Sa&*7?P-jlWBi0d$c@1 zQYu`GAp>Td?Ci9p{7OQ??CRm4Oxh}Q;_LXxk zk3*Rfp18`fl*m-kxht-6Tdu1J5S&{bi;>rDV#=8AWCSSGlC9XomQ*+{dv7YJcw=AwP#5SraM8@K!SuL}@B z*{ePV-`-xfvQt>4ae2}02-^o>ek;jeVu3JHS3f$W=u?@qaJFbfGSUjAtI5d_zqK|k z{FQC0hNop%e9wlCZg+;L9l!p#MfA*JUe*w=rbIwPQYNGeI(m9r9_;G}MW(*K-ng}{ z^YN|%x7TIMCCPlULjaW)n7)GJ3tkiJUf00+MGv*?WiQOfylAlbd_0&EVR~TTb%Z>m z==r26G+A-qiJyDsA>A=pC~$~ont%k6DwY5AKXF}ri3~5H6l)f)x+frD-J`}=c242* zgN&qB=j`wC>2kYy+Y>Rfa9uQ%~;?@e=+Z5}RD!NBHkBQMXbt;Sb`X9frbxw~L0kbrt>~B@(X{{wwOVJ#&cg z-^n7Ww9djGx`{gd-;4aeSrgBB|DHzqv=QNEg2E1lEEph=7lcKWKdQDDqi#74o0wMB zC+;ieTK(6YPfLpmBx=~iv3G4Rs^fZ9xKhvq2AjkJ%0;waVIj)!H{i5M}?)ui> zYc(7!oQX>&Tn~ngpXds~2AA z*A~uHmXV&jVM8sHIKac7tSpmjsDNwv!1OoHjTtBGUabSLA?z+#Rop3(=rcIb@Uy7y zaDu>jzi8V}W}&P-Yz{EcW3g5%rx&H0E2Gdug%72sxOgiCAQex969uF&KNI=^J=|8* zGS~_T6FS=%Ngs9b+AY=No7xX&&Y2?|m}$ot74&Ur3KM_!T!>z^a^-abKX`#`0iT5p zu=wJ1@ugE)<74-p*pjcw1)0zT8WwBZ(Hg3OrMXq)n7i>Dd(xw;@R7i1pak^k(SyF) zJk07EEFgdQH&p}>ElD)zU$9afHmn@VT%=iCao?unt{KunCU9XW#~#lH7<=+~GnAJI zCLDC|W(Ba8j}BP?{1Z5oV#4qD*YJ-+-lcnouE(Wtx_3P2;!Ne@JKJtdz10{lMKef7 z<^{e2lxaALz=tK5rMs|hUU!kz>kl74l5gH-pMb!UGxX$r-f)e1{6^`ztBPJo38X3d z)3k!8Fw{R+R$5=S*NNVI@$_N4KYgy4kLW2W5QFbf z7t=YW84N_mXn-(DlOLNGM1xw+FN6|Lc`65rS~OX>);ggz~|Objr52aS$1y- zlV~OB34ZwY4Y>Uq+9U2gc1QiHJwrELk-1_h@lY%*mi}V0tR@tZK*XZ^g6 z5~skboGpK~mA|rDT#WacQbS!G18+a-jZsuQ%{8WaH;RS~+pOFUwTS*~R3b*RZ!*k% zHs*Ho-yeojCCz3Jwk(L3@oTQ`AFdA}<;0OAvGxAFL}oz@#E{lm^TK42L`GXFOmk>! zVRs8)>0S2mi?$B}_u4e!2vi7ETH(P0$yHwdk&)eHd)xETYgd2hH%8W+=MU+sLHEJ3 zdh8B9NS;;xo@Bs#cGidKAE!T3fO&<1Qj-|*2}z?yjtscIood5EGLMJOy4xo$*)i16w&;(BJ$q;xP;SI^cis*q_7SIzsJl`H z6Qh(cwDHMd_(shg5n8WLX@VulTcx}mhB@vm-7qC!h30R)bKKEPjx4!HEYb^68#5;L z#*L9TO9oAB%q)b3sp;0evsbjLBE0oLZlkd1XpNYk35gj>N(6-Vt-VAe&ia;HmaiRm{mD1w!9w6mR{#8VZJx!qVGV@r)>{o4 z-v3Gdq{)|(!emnKf8}^hR&;z_L*#aO()v;qZNDWtWNQ1}f=PdAB>a~sflZ)%QEC5Sch}ue*iy6A(aLJcg)HAq z7sX$tA+ z<&ct0(1I;_FXO|POsKiN@k`~$kLM1(g!l*8VzLoV%bw}N;I7s7eCP>5|B zSUo;uTP}FLbOD>*cJI5^;O|6pxPUdDfc{~g`%Gf#h}3y&O9h#9mgv<4^@ht;>F~@2 z!9Kimm>NiFtCL+-WOAvP=_~SuH44bs`(wJL?1tWdXnSNI>_Yj_g{AcGSgAhO_~%P z*f(~;xv6`4P=;AsOmH#ev79)3xW4hbgT~L4PO^vZC5~S7Wn*8}Z#moD*x=%|bvu^d zABRORUu&K{G@i90asB9d`o;Ur)ZP5iz4Ez>9!Xq^F{ccCTeW7y=+SF{2a$*!j?oe9 z_s9@vklNSI9wa5a~kX0H2=sngH{oM#rlh)@#v!swmUyo%II8r2g+{k^f%zf78 ziz*qCll%ucbRK^F{`%r;O9%PmWT4v&!ETDlvg9;C@*jDZO79K&vDR9K`>%T^ucpl8 zfRy5EC%Md4DWF~skMtP)hc1_f*W;~EqzWKst{7Lu>XJ8bs6VV4f$La3{UWj~@Gz8; zV4T0mKd}~Bq%Ma;)0&&Z!=czbYwPf~y_P8M4W3CZ;E?84L3YC4LaRF4gfg0xKz&xd z=v1#4oU$sxp4O(?`t^)hwpGKA(-A)B?JqJ`@^)VSK~E)3HMMX5j_A;pixN0l!f-O* z@~#{0gwZQ_mFXUx3#zqci=Om#*Rqp${m<_3=;@lCFl!d~jdHiriq3CXL?yxF_;KwQ zN(KzB3WyOwk6yjH&gE-z4T%VnnnOQ19IBd~zb0i)!cPVe?o!PDd&jL^E}jFJClPd5 zx~MwxmbO(!LiS0m$1gKv&RVZQ1B2_#4VNONm>f1BMgcAjeZ%KTGRAOCnVHmFh{A!N z`DKXDd+7gcXaM$n(2#y3GSI^C6}Bu4c@#;1M-JY+C?7PM*n64O@sf_Njp3#8mzKsW zqm?@_@$#E*WZQ1&dedZ&6dtzzv&Ci zW!c~dbg`U#e}~_@696-d>sgo*OV+Hu65X_kFfI&d!`!kLGc7G+NE$63BskotCGnYR z!u7OtSC1!uLQnfED5b<#eRv6CbrUjDUd~Jpngm&Ew@_SJ`{`cvRSA4hiT-o(t&M9? znaKp17_GuZ|MuZ?4b_W8QrgkS%w8W$UYJmQeDqOsT@0b+^3){fEVvilpsl^X*YRot zUETQ=y6dUeAd>}+($b=CIc8ScXI;{YTp8k8yiGBonXblYb)3&KkO+Zqd@GE<->IH! z?a`mmg7`fX-p{T3wP47bANU>uYkw!7DJHalfGX!$T7LTU#wxO%Bbjml zw_P^?8&Vp8sXkl*nzwx#a!0oAmlPVc0Y}M8_67t93r$I&e)x{=ulL=fwivfJ4VO;d zW)b7l5OmKv!-iSaz`E&Vh~x{fB-bomnswL27&J|3NCD>tnr+GFiN@9OWfm1Q=+j1Jt(xIY3R zTAiAb8wX!SEl`I?cI4js-|GT&N>D{Uab2@UA0LtCS!=0zAm?YzSVle7Lss%j;k|Dg z`yT5sd~37Ixb0Wyl}%T!dJy>}#A~fC_L50cd%6b@GEsk#(&7DsCWP3;^I(A9T8A>q z>w?FxC<4LNW|M1@rPVFj%xpDZx`w^5ZHMg+2+x#(O-l#7wOzRK_?F7-?$sj;FerqR zSTp)E5!qJ-rtsA#$Hyfvcn~Z<`+vCr>c(dtY z5w|hU^VqbBaQ}speu#oXVq0?O?Q;iAbX#@JRW;7~3!n@6!v{uGfi-;i(0B0Qbc)zL zPmlf2`h87x0^y^&k<+lZxnOnL@umkus0NQ+w!3w`>$wl#lbo5fIC#AC{(HMmnG@>- zXr7#Jvr{^y1xZ<`lU4P|G=uuFd8o(K7YQj!9qH^8;%n=tmWtmMs-uu!zQYq^8?>n?&DG>q;XSAi|e~vuew!>3qR3x;fquncMT}p2b@&AO3_-*jD5Zfc@iMP2$_iT8- z|2hIyXQ!3>VS}u6jO3mA?9QD#L7!PY@C04PQR2`pO}IB_fSJmn3xy_L+Wu%c{bVYz2M&}_L?0qcO|J#;3Krbmio9ZNrQRsv&8FN zDVE!Dz@_a=lt^$%Y=}R@l$wJg-rm`~%RIfuIeK)V_?ypXoB%ZvfOoXMr!#Zzz<0Rm?dTbj zaxcQ1zi{PQa=Bm=s_$$+%Yh}pD@C>TsV)n9+*UJ`Ywg)qX0%0K+k6`zN9h2N3}q7L z3AnCjIcd+Cc~`T6hUeRgr^hGcub%$WZ1jYt5%mR&S5CGwD0O$`fszUOH&;i3-H?n5 zj{P!0XL;tWL%f1at~%!pRJusLKK5~sxMA?lfC%~gssQINsQVd+xf-;NE+7jL=QvSo zFJc6m2{MNnMd0J4r*w=#8!dH|6xUZ5+!Nok%Q{Pp!4;*Xe2HMx-5pioowF6jHP# zmfu*!&}!$UOQ#4$#6lh!yurZL6dVsnYskN$lH{Ksx)1)hHBRUil$Aj+z>s5U_Px)hqFYu2+%X=sx)xIh7%A*H14Q6gVE_J(a@~PrwHBmpc260cr-IM}Fw?Dss zFTy2|)&hM}z5*FF7wo??6?TDtR zz4d3lD?bNq&E(qZf>=_+(^=x%WnL({jf`cpps;8~jRH|Bk>ZSPN<*XLwxXveeJTP1 zt>m0i#~XQ57fMM>*E8Ed3364*ZLdV1!e=ST$&8>|3Gd`hp+@C4U@sw@$>KiopE0`D6lFGLXR=k z5FeGm3s8t-fXj=sxXm5#3xIv)2J9@b3-IWNWJ8Av$;aRIk8#hn7K}i`!fYHJYd(II zqaE;Z+7``FyK@p-75d8d@9#wi`s`U{%-hIwo0^-GuXtHK)><8Pm_J`%^HSjF2-U9d zrlMc#g!yJe5ihWkRIQ*EcSw9mcMGegg7k752v`!~1z;6db;kVIy*cnXJ86B`>912< zM`(%?3&;4V6cHN@F?!+H3Cvi!4b9WH#>fxO;T#B4o2lS8d3nA0VtZnoyhi#ACbUWG zV$syXgnFnU zbB**t)S15!9UdN+E@vDumtNYvSmb?3-QGWYX0db~_TJPsyI=pV?;t@BC<`2#z*sKe z2HWOEi(!bC1#iQf(K%jpk@NfeWn{!@9;!MH&^JGHeULgo-dZK3iuDmJq>}^+ z)o>-HYl#cA`V#t;if?+3Y#Fbk6W+Gd0P1|qC)UZtCdGME>AGaQbQ`moGnaUC-LPPW_vN;auCO&dFB`8M za4BcN6ARN{XlGHqFV5=d)~>aGhxAoQW9GXJjF^@4<=0MA zmqTZ;@QvACnSr`4^3p_aHoNEGoW=96Se+JzTRyR}vH69Uu@0oRrME%ced7*@A$ZC1KEYmg6Y-$7mf&>b8_Osccz&5a(_QF8l>emVacw<8Ivw# z#|~5S*tqe7<(4jVX2(AnPe*81|Lvo5ZB5_E&iXO!^^g74o&ONt9vL4Amn{8lIF@#2 z>iXli#A*lXtQC4NjSKbNCRksy>cI*fQ=6Oe!dPb1X$sc*4qu>wdC2CkI0POza6L8E z*`cW>B_9$Cj8<0u0H{*^l=mba)pppX_vr}78s!ZH0Cs#U3&rCIQ7}F!`Gwr&a*}5F z_bu-3V~sm8V*NL|?|gJQunU0fB_1!K>3Qzk=`Zij;zoiS%*o3R6psS2lEX((!wzya zro&EW=@yK-w7?*I0N&El(pm3yN5oQMP6uWMX!ZRYw$jS`&YPA~Z(pN5De`xsp(8{T zzK$NfNzUQt5j>Qd<0F|`v7tCNqKiS7S|2wW zx)RMB+ltkWnm=?+B5h&mw*7}a^U>OiR>dU$Vwf&j+oQy|hTwGYML$gxng1jIwXrFL zl=W!u;|f>hL8|{AnbV{T_fP6c7jO`4ow>*dJjpBz)Nv6@lW|=6%kc0oy%l#7lWKk? za6h1-3Y@7fhZ8JgC$d0bRu1@OG!_@XXPVz%UoH_E@rMq%@j-<4SEXwj(UOye{Ps`nqUKim7Omys9A!vq_Cx!g@d|x>FsZM+{Dq`> z@itKYR;L24-lFN~w`R@!5oNzOgPr#Xwpsk+x6vrSbuLaljG-j>JW_~!95Q){4QWQ` zU3auNC?!+9!?JdO^|N1uh6n7-;gQcba$(j(Ed>G5c)@vSM6>DJ-UB? zSK=rliCUJe>0Q}b2dBMm=|LosTgvHZ#b}|&?Uz5Y59O}#d2?*Qc;``f|cSiEZyEj-?s243@{o0q*IzG>-_?ul<_7wcSKFFsl zlXw`q_;%C;lV9wU(dyP4a^kGlT(-Zypc3pc>;^oWW`}P4te@-pM=uj+&9Sif=(=#y zmb%IM)6k6@j|ufzRcU?2Ji3$D9Z564bu^SN&EC5cggT`cU9Gu`dpz7s#*Ra&7~`d) z4I>X0>xZm+c}^fAz$k}TFlRyf)oGsPW5Uf~se=yb0*N&`&@HvEcp!PFBmsmqCEGQl z+0^?o-H1S8KGvnWi$@yzdkc`LKG;!mR5Z6TE=P}H4d=d+|>N{TVk{40wcExYl${> z9;&Uz$lPeKg()~rT}%)3y!p}Ch9MGuCLPc};!8bXw?ENB6KzxvC509VSVOzuK@__226TQd9 zEO;CqKd=1CpDDSn>p|~T?LKsUa@(z9=dAmrw>qzlEQ=`K-H>*b6TA02TynM>a5%J_th?m);kW>UM@|3%cxK)WqU6c zwOtvfa#cD0UqtHe=a^xy`5w=)vxJG4K_SzNqV_O-gqK3bIdZ zuG+lLY_gNL>~=O?8E18F$pxo7T!92UUoi6?U$)+`Yn^-mw#v!zt1K8{IW(?PFQh{$ z;kZ@-25TJHtuBt8JEzW-i0|r6>vD+#$)#ot(|>YCME?5oCsIM>WqFt9mb1qA7!0{O zkde@6^lAI66XVg+xW2tbGrz3N z>8IMK9}g^T&n&%V;&*9bv%=I7iRQh38IAI$|E@iA>10#j1$*LQDz-7NP@U0{7=Y8WrBrC?}4NC7o4>a z8Y{sFaqpMSw|gkrwxXAc%b8x*k_~@R18vpC-BuXI>@)EXIB>Eg+hW36v0rEY1eq8N z^_aCeI{|yuZ3kzz$PU-ljqtVdI<2h4r09%qqw|O5EHg9M6ppp$Vj{3kuemvx$_)H5 zKrG4(**zh!+Q0a9g5AL%3m)Fmq4?djeD<2RE?c&2p5{O ze2k5Ad4S1>U%r94mbP-TvS-E|v{7Bz*}3HH+q$4Q$D{nFf|gSsZh)Vh^_cFr#cX5v zSl#Fh^&aMnHott?P%XGoGz1`XB9R zCaFAgy0tahqH~|FYc2@U{kb|b2G>t%Uq8L^S~mAsTd&YnZ##YV3Ll*tboQlU*n`6&+j;n&pPmlTbK=U7#|rwzUCkRW9#QV)v=)(0&Js2 zbar~DlLWJ7)3-|Av9Koe9>OoOqCdXk^FdFicQ1GzkO1Vs4Zs@lzbzAzla~<8j}G1j zza*bpU#m4l^Y=c(d&y@)Lfjtco@S=IQyB$`M1djcse^!{abEzRuFuHFwHU?=!6vd2 zrF^?XFpad??r&9ISj*I1%3Ewc@}BYL7_18eA99?b%g5J1F0wcX>YADwG|pgkEvv3x z#@fO+1zkTn)JUBnhk_E(9xMn3!Zy}L3T6zB?1G{VzTS(7XeqIDZ*K3ldiTww59o>2QY3vs8 zrlFzR!-88>?48r+RaKK_R~8{m9eE&*xeEBrpct@!@i}L#Zw&t0wv#msTLNJt>u7KB z0Ab~xB1wy@#o*WwN9tFjV85cs02Z33=@I?41@1o;h~Iv4Ayc9^m-Tbdb@ZM`0b7lh zBN4HHh4RzCI0-|FzxuUXbe7fkjYLUz{H_;Aw^>%!j?U}Ik-fsgG20gn2ElT~Z@J|y z`cVC*!W2Hw?o3>w4iLfsBuP5pl7M_a06b`>fho;{j09+4AS~j{j)b57!G6_AH1QsnfCifYyBza zrM_A{ffeLbonSDd`N4g4)Hm?YHf{TK$panB>FIipPEcm=tBir5e}>mxN>XycQ~kLq z9`o;k%6W9_@C9>k->wXlBB2T;Yy5jDTNjts!)u5VKYHYd(cPm13L?K7%8txN_8$IW z%1kF>`t)sf437WPr%v&#E?d~4Hs~&S{ok4saPoiCSXn!9&1PCtS5MEl%p*R~mot*h zGgE!|UC4*8>-#kY4B!Gn!vEqGC$Lx0(6DaVa%*XsH8Rlu&l1kYm5w7^)5TKLhvXLZ zQ@3mAr~(SWq5&Qyif_Vr(-fF|U@K5|ewpb^|Y*C6QnRhBQi z_WmP)r_OI9>@!=u^f`0?cS>)TXW+`-Ue$i?$`$#vTyI|>1=;9aP`qfr$are;ob(_s zycd_=ASe(U+TM7a<)Ml|tm8sdF@s2DJ!H0dD-u@SGA%p)rAPjjzW|U36BZ#O`=6a5 zej}B*A%&;OEPYzSP1l!u^9Og+_+LAS6u1@!7#LT$PtCSim85UsrS$eHQ(5bgjhKT# zbYbh9ZVSFP;|UevZNQK0e?Neeu<&lKwB5TmZ>*xvgy!P!PLgJc?wk0lM=RH^BAEis zsh_RL_D{e8@i(3PX#uCADAXu9KcsYNr$asjv(PPpW&1FF=|DP3(e}}hdbjoDXv!VLO>*y9uLC0s1T1%o22Ste;Y|dSAfB2myUOu(Ic`QGhDM?-bwpz7--!mtlk-P9Y}G3 zDIYVBTupUKUQt?PEM0ou?K2A{igu%x*8h|w7A}%T3p5oioS4CyC;5uuFnz^)KV#0h zm%jnoT%}u9PT0Pb%E*{EVt-M%cp=qILmEo}=|k~7SUf#(2Lxbl`u@EdDYf8EZGYh2 zHA?)n1Gq)CtUsnPCcLTs+WXjKZ*W;D=5Bo*T7GK!EVY)#gh}#$lzcs!Jw&~V+*v{W z<2o#ZcuI5u${S%ZBA|6Z$c2;vO`_W3SWQg1Jzr2lZ z(?&*xh4e_x$(KxdO`kq*lKqukNsQV2H?PyVMLbf#{fn`|5STwG=m9L#)7SUsXG^q* z(QVs3^nl_|mN=?vKqay*tu|!*HwH$eT>v{TZ~-Y}y4J4~q5i?zSt#yD9xwUq9 z;zZ>4sHytdG(f@eY&D~j2AaAs?em0g6tflVN!0E za2Y0n*&j>KO;_r5@~P!u>Bh|h02I8-b0}lh_K`C0uU&?VopJs?tQ;H|6PSt<8&{90 zWyPIC7SAl6i@2C;JK5N4$fY{DvufejHue(h!4! zzKJ5IfdeOkegPx3-+J8B6XM3RCzaUs3X6yUUFUIn{r*h z@waaar1|4yosdM-6hip@{&kvO4PS|=6Ct$?c%{;B8&oua`xwbK6w+Lcd(0TTEQpKB z;YqZvK*tG1&wKSklOHR2V}6sg@OSCK2F9pAn!zgj)CE& z`$#Rm+kdmE;C4moz4OHFgiSzR5PoWvgzxoadY4i4oHO7Vt`q#3V0QNOe>1^@Z?;>> znrQ*~gPW{1wMKZu6o@Yf`u1C8HL$y$9ZiO8QB$a=BlZ;c|iioU5uEM4C~m`={Dk8?5q{I1e1M zBp_fLCxNQce|^n0I|Qv6fIejCRg{-cpXJR_a{n&3Pf*YvBF~o5hNXoC9(hmg>fhEn z$;MHm0I|C;E=%k6YRAWv$_%-o1~E(Vtfr zSzB*K!M}pP#sj0v%Uzy;Cy)#eYCqcptjtUKnEmiOk5jOk&5Fw4`aushCI>p;TsO^` z=qnwp%7Mn{f~D=GTq$&Y;`fXMA8%Fvd|vCf+v1T6GhgJ+L5)VYGZCi~sT&fC`(MBu z5-oelCmsqpE41GL?+!$6YJlB15jtC(Fu3EP?LDRe6d%*FU#yrZqJORS`js5=;+e{3 z6c*T<+qk)xffR>ne8J>xj1GWK2%g#bV`FbU`k^et;#ykz=Ysj~Sn4PN8k?JSEY}bL z09@@5?2LFOt*v>ezC}{h?jyn?6=1`EToMj`l(J7TgkbPb7>5QX>iWi*V({1_!-ps$ zK0P-1`N}0exaE^db_veM5AC0xP8ivmD!8? zmE?($-2kX24;3QHb(44A4{E?*Q2bO)r;agoW>>PE%-yy7Fj_nG#dx&fhM-phRkQo^ zfIT=wgxqWm!z{wf6OC8)qw{vCpq`2}79n+XXQDCJwi9MY@{ylEzny~v6TcphaLN#4NCRFy2vy8Yse1Kw#Wdx@E6!iu(9P3H@0;`N&Z?2)FN&i62Izy0G>0 zH=VUH`IMF*sj>7=1YrTzQ|#wz5nNnv-e?Cugx+Zq8FB{m#IIX^LGYUG3> zuY#S1AoQ#t3P4k50r~@Qfx4QSGsdx`t5W&;E~D)xwE(~^;LL;xW{q*2g3xPiY#f8P zX%X6O1XU|9PZk58Ml2;dB+~bQQPqew0f3}IX8rlG^)UxAUF$y(sh7jxZBGz41eBGB znwq`?^45^X3?7-e8ZcxCa{oFx3CR3AuDp8+-ch0C=qyMqL5UFo+9L5qBU+1#VcY)x z>^hHSAavQF+XokZC*#(->|=ImE}wE=heRp@->{~q!x+pU)jC2Y6h#z3#LM{P3kwS% z)d0n#(}Ca)S+>vJ`cCAeyt|&>o-0YJ5FzvR16>9^GY&JvN=)yUq96hStUAPrfTFkX zXzrJgD8v9$92j8fA#9M)UL@rSL;!=rV?CGyvEq|cQYvwUQ=R)yBJr2A$ubDf?tefy zW2HItV|*lqzk`;BsXyuVdUd2F5PX5hh7ZH7W$AY~0>RZ>&nC&s7p9#~k@kdB>H<?4DT9w zXj}=|IXN)@dSU@-`~{|wP;!dcPKN%Wk!ZC87oSWf;vz~1yNzrb@D}lQP=&cpP*Un+ z@?wkUqG}z;G?cLsc(R1vo9Qj$fG7uETx{y<>e}3}tbGeq0WfvROM8abN96E>yjyKl_v;57W&zf z*Yku>+%`5g-CeAu)UenUnz`EB3szSeBI@;wzCO;r9c&Rt{C^9MeED(#jyfPeM(kOU zwdvM0fu+3ZcdiAv`Tk#?^7n(b&wv_9*kS%0o%BV(PP6_BgfMB1dsMw--wW$U7$T_a zKT)%Yx4Bhn@4`lC0}*-7!D0AxzLgr2#u?UI2QEppFtNlczu&LH9G1%ZTy~95xuDeY zrtbxScOCa$qp5@)xh^HE#rPNkV1NB`n=rg83J4q^hqJY{0W5VGH~5VK5nC`K&CSlr z1Lm#GL)DJw6rG~cI5)TAFnzOmp2aCotbHV zOHRN+p*Y2{?ZAn`7AMs@QgP7>AyV2OdI20L7@-A^kR@)-|7lsE%e9vMVJ~SOOt%dT zOO;*oZTwE-Cl>#33BcQkbwiSIFP;O96;|d%0fO^seKcAbRrfYF9HBV2AEWo;dTg*L z?1NTa)|y^O0`LXajC=1u>Vl(nhq$^ySLsC_9QrDxX)1I;S#e0@Vd8E< z9bR7e`SkRYC2K?#`UI5LydSp4U`(3gL36|B&duI4)}_CChdgc?)=jl&XlbQX?AT7u zD8OfIRo1|2fWfr^rN!0@h@akU04c1=xwEL|HA=jGSp@&Z6Jm*th-d}dhFvXv=POPs z{!Fm-#mazM;eS!n0Bp}G?Whk{GAW7k=PGHaj2eZSzdH@SJ+alkIFQPIwteQ1Dl6Or zu$kMJ3@iz01KYw`SXpaNOum26gt7#AsqVO#@VSa*-yt0WO+@yp!5hHslq{&!oXiF| zQZZ;2W{?>lNf+rZAlVp=RDdrjW^pUCdGAFm!V7rAK-pJqcf#0!tjN@WJh zAUON6D8|lvUR(XwW%%e$d;UT9Gz7k}tb#LdbQ$d!5y+U5U5z9Mk7-~hqu#2_sHt$2$& z1<;@3*!UARXSyh15oE4X^8nNCOp*ud8xe?oQ(JqT zIW!5^4@>ObyX;LKcrIu23e*r{$ZCKlzUL|aFDQm5zJEXK;&KxBCscfJxtN-oCY;4c z=asl6@ckIj2^LNJp&|Z>z!DA%T#n7GFZ`+IQQVZc_S`n1_hszDJa*iJuC#kTzd%sS z&*F9^+v8$@9-$t9OvDFMnMhRPE^|6Aqn>C%0kYiiJ=FnIO4KMY0~HNuuVy#CYpGFM zhvrLz9KF_Z)&~SE3-!j0fA&Drbv6Z~4Uq7QgiIG4V&>uZ?+?JU_RUmlI5q!00CQYH z^=m`R;KL?r>AHRUypr@na#wc>#Ce>3=N`22;^)unjD}C1ya=Rvfq8ZpQWn)?;_80& z)G>0^ACz0!fBl(REVn{JYkQZURK@dOwvDt(?m4W&t2-BCcDV1SMhin$V(=)_e|rd) z1rjraV1t}+*n=i8OoMg%_H{TKSPa0dFDU#)533}_ zWp(IEo1fKYB7f@-qTLr4oKSLTK%|ZfaC~S=V)D{7?$a&rF($72sd@P+{9sgWMF|o1 zsj}z!`aS^;T|A$M92txhgwUgY%}(}&xj>VLDBJE#_&ld&3mR-BemWq{r<*TKSXvsR zTW*KuKY4OUQ86?Z$pF~3AnPDq56NUAY1)6BsMufraT(&(e%S zy^rbf!<>tIO)uQyTHUX0S^D;qy$ClQU3vBTSYzbKDa-YfQlOfuOHa7@I*WKONy}dN z>R+~hyyn`y+eo7FIv%A-gBu1f90gr9?aysOVq$F#4Z+)7@hdb+(9mNy;2}jce1T*M7r~bISiNDw zqN0(!zwv<6e(@{BDJisQ1O3?zul|M5Ufy{Ia4Lj+tz|1JLrctAz8+yOF1Z;U!?YitxFi0^KEmqEz65mzUq4v7;CRh&mW0 zJq9Cg-nLCs1GHy86$AJA)X>9`91Qi$;|h5c=vBc?d>REgIY@*dmHGp>>$k6sdWZ*bXxbas4E15yc*OoHN1Skb z>+lbU{wQNU8^C9Ik1zEo?y`^F*VO>(;))9~TW>?M`nUqk z&wdFAAl&8_Ue~2t6ZW+^X}2r(h)PNQ=sn=vbKBKbw+zz=k~p8cKDq)0u;-F==VQ%* zN~5l)pNa&3NZ)GyU2Wv2#PWWk({t(`MYyw_JWn5fFga`B+c)$gd)VlvH3Xoung-YU z5yA*0o?>Igzh)WI6GWmp?qT$2@=t7D&JrvDSnh>(cifslYDZ`&s(JwDXfMn%D=U|= znzvoR_>G5vbD%t)fK$JA$2n*hQRd>YAcvkDRizD?w5dAuI-sp%#BhNwc zw=w~y3{J4G>rk#qvfxSJ(8nam>-UWj1?C7@De(Se+4ILV@ZT8Mp@Yi{*KRwdH~jCo zTD%NbaW4T}K)vhwWj7pMe%ZU$jtpdK()&fDsB+az(j%t;h14P!eDQ1C@z8OsXkzr|+ zxu`5B^^nuB%0x%t+AoTkLYMc~_npq#ecZ7}(xNnyhxd`K*2L#qCHKY_hrHj8kH2RY zb3a>m0wQuve&_EHQ9?o01(X0n4Jk_RLEMG_8lN_W0|{B754AEAed%Cy>v7#`pa1YH zDiLyO2I822n_xr1f0l4Y8p1IY+zh<((mQroVJD(Dd}R7;5VBzGR0RxF62J?b$Nxm$ z@5Hxn@RL@N^P?DlR^bT%W+|lTHK)M535@4BLi!7_0+F=_*ghlGhK#+Aa z^9umT7G!Z+n<`jSc75v_AgLw8FU{>mK;6a8ci6vOM6Kw-J*iwmZqK#}zAPWJvs&2g>u1FtLz81Ut8^Ia6K4`e8Gv|U; zSVkAPjJar_Z_VJ8=2E&U_tUTKTpyCbhflRk5_?BC&0yYS@GC*$Bd@JjQ^xeueGkAC%sDdNk-m+2nrEOzRwAZ_*|#`RnW zxF)wzt4>l+4w%_AgdR}ay7jt&>SBI9>)uRSVS&t0%bM$+F@vq|R@da@dnWho9WOeP zG(R(A{kuQuVDYziNf+B!?@K`liDL;h{KNJr<$EnHy8I5qCr)v6NRFIgGVpePL8)G+ znr!}xBNhcj0sb|R!5AQn5itl-X6BN1MEBKi;sln3gO3k{4*!(N!qLnl`u_t$;Q!H+#a;2|>i z;{LWU1zb{gMa6&I+CU}+S`NrK@8Q~61*U~257-#GXD(S>tr z0TEPQ`WfPflo4;hNdrTIF9&g9e;m|-g&D;FiC^5i7b({N$R6)$r7!>_;T{nYz{ZC$ zceBj_0X6Z1b{GwfYabo<$DZ{Ss}Hfk!I}eY=Nw3G?}L!|bgfMx3?p&?2@(Jzd%nce%eyN6>cSreorgraf|xG9WI_2r;49Rl2k< z{8r^@vJj1m&m|6Ld;Yf@Qp{kK)UR2~;e@Blr|HX+>5pVzz5nB5%8kc*hj`|3)O?x#1-{qPfE5pGd=o_gMp@RG^%+|6 zcuVM?J{^^J5Hl@ay?i-a^(l`8;jw^bQeL`r?W?GEZ{p3PL`O67L@j+Z%G#DK0;FAS zu`lLOAqfgleZhqZs4Je*f1n)o=qFWiNc!RanSsF^q)Gx08jX;T6Cy`RkzS!0;_;z} zla-V-)YmU~{#>)`ps+Av@9~Fj|MoUa2-=o-ChzG}6rOgdY(2|idWL2f%py6l)5YS3 z!c=)d=bJYq(h5ffK+~F+m!Sup`pL-5tVMkdP#tO|6kAX55N**2dG|a0dyMmR_GMCe z>3JLraP%npf{z*J1 ziD%OxWo1a6e<6oEI{G+lU%>DT4ky3c+|ku_o+bJPN({71;YOL4y?((N8s&mzU#UgC6A}a#(3; zX}ilk9>jd73)FhR>wVSS$cP*ej`ITJO5VJA(>o_{<5Y!b^XJbeP$eEc>V`SrP&1tY zxK=%S+Q0xg%aAp2S4@btfo+gbs77OfG6>TWYP{P&e%zvLgAj30EEUS5<)d*qn0tHp za7Yak&Qp#n^K)}-#cpkz8a=-A@8AEd>+S|-bl^BT+mM5XujsP{){I~3`}WiQ%ttIm z%DNm@$UyN~=0hzr(PBJIaPypny9qJt$QDC0h(T*x08<7oHpMu;$kB5yF7yQY8nq>> zH8WJ94Gt!Mf;{?PWC+vIOSw2Yo_gsM>-!N>KK)E%Ev=h=iS>g2@EakT5EKi~oRx>2WQE^(Mi8Y>+x=$#cLl@Ybb+77qgI_zeu~{yEz?FFo7X?hrTl zs`+)$ZJA?w;!z6xHxONLZt!K&&^1{psXzbAN;{{2@g!~J=sv&y1fMWQyiPmyx`Q_3 z{376n$4`zUW)*!Dy!}7S?|`)9!B}qP9(-S;LA0Q7pO%ZKqVHi8wtvS}&GOs%u398#xv_4H99`QEjTPz|GOC4_ z7jC1@&5h5^IGXMUs?wtFZq&JrZm{#A|9^uoa3Zf57N7IOlQ3JPZREM92);IZ!2w&&WlRXjUD zuB89wh0ZT=adBxIw=r(GjEja$~col9jWw z$ca`9)*G8ov5CHvIrS$!JDcXa`}hudWmFR~5)ym%@2^I*T`8usDkzY%$w;;fa4Uum zd3buhefQ4G+qia#K(DN=8Iz=febZBb>}R z6%`hk4dJ5M74qW6B5=F+JD=s|;(#|RxZYsH32u*@8~Wov5VGJvArrZQ(-m;=$fBFv zstJ%Kv=U$D_~O|>1MR8CE4)v_-ap}1yiDogv6+1%A7A=oI^}hSx{%i$8CF(1oJKj; zG!sXWJfgbt9M@2B^QElP0!Gq2sBUWuyoqd1Fy4i1!c!Fwo*z^sGleV%Fs^~*MUZ-p zUWW|UuXgQ`)Zy-PRXuwrQ#kNSej9`6HdBNFVt|#Y;}{t)I+c%^&loBN+0-Aa2N@Y8 zd1PawwsGvm>!Q#2*zS;k4Ye5kv=~-sA256N;DE%+s&x|+?WVvyQ~q5WE?n3l$8kM~ zf>@dh?$D2kiz^9ZApSkR*McIjrb86D(#U@&VSZeca4Lt?t|+2<2GG6jZlR>~=GwaU zwoQ257>Ei7IBqxWh)t75r%tV)1tAJbOB>hGziEn9HMJz{qdpEks#<)rgJ`a zYc~+xRo4`5*0FS3GM0f6AZyGPZ z7?+R`a!?%Sz={BwZNl*Z5h;yqOgD?IUQ_aDqCCXfnMZuEtvDZn5b|TDE8h&_ALZuO zSiFb!fXrCEZ~>!8HwJ(uc%QTEd{jQUg6D~5$CJM5+3AoFyD_~BD?YYHN%?7y^|oZZ zP~?>qmsXPFi9(h=U}Sir0Q?NWzK$14HvTVP_P4jgc6;uq%JqN@%?~9Sb-=gIwk3C> zcZV?=V+D5Ze1KO8nIr8av{h|3g zTjfCi^FQ7a^E^-vTnTsCs$^o)_fky^e+iup@5;&V-+B%T`0uPM4jW?VQdJ^BJZFgZs+( zMH%=GQR-a{4-4cww9AbX&ksa76u!>b3Aal%JwNR=!Td>E9Ibf9fFZk)HhbRAPGkE~ z3yURyl#H^f9cosF_7iW==>hhw{}Ydd%T;La1l_nUV=P-rn?s=)DzLF3%=w1t-jskq zDSW}rb~uANyQL#KVxj1?H)FHKyQ7#CD$+p}fH?y2t&IHmaS)J?tAwm<4*h%w5A18# zP5Bi~Lh44ygizokm}FujqgMn79PgtO12_x}$bbS&nL!Wa52<3-FPmItYU;0P{%^vz zd_B_pp}N2Nc!JnYRn=VwOkBsLTaA;h$dMvA&%f8b`VsXMC@ zCe_JJT>^8sWk}fG{u{{K@)s|T-jg#}ZKX^G^LXU5A~-Q35t@BBUg&<&oWk3ktjpvf z72?sKk~>;u+r&hWGwv;78;6FrZ@h^m_GhwIZi<27w)K~K|BGLa>b;5Ngi?8S>}XJG zvAO)zzr;X<%j+FKezwpI@3k?8M$-Tro*>=)U@3uE0HF=58(D!~=3fP)xcH~L_`=W3 z3a@A8Vh$F5Ki)frQIb(aSfNlq*%bG{uK*M*Ha!^E$%X*H)1fN? zCDJ(NnxbCkn_F2^^!5%F?g>^e2&^hnX6f$zu?vqp3+o zqeB@1Bh+d2?v|PWOr9pSpqp#c%7su{paX)22P1}DVR8cqEXT6TK{#CZ=uzr`UP<#< zw8}85i(}T=DX*}2K)ztl#WDB-f8*G(cW>Xi!r+Lff~zsE#EC&1!-A*o9{sESx=0`O z?AIZH`XK;R5cPZo5G=4`=g>PdsG7yhi?UE7O;x7%``}h`;{|e;Zf|_d-qEAvJhSgS zC9#!V-FR#NEBcX<>1lpDdnjbZ9XF$R;j9y;yLxS;gI`;3!+`@FG7O4}!+Fn3#@d3u zw_oOd{(PkW1&!pNGZU#IK{~Y1S$MVr8>bjXZgbX2$V3U1lP4?r9X47p={=5gzaA7s zQPa^;P*h}SwJ|&sB5n!-c&bh5t-}~=O5mIC$cm1LpeK+(AKoT1qhjz0$Q*_p)l&l! z$0e|?-K%oi!s@Z!A0kf`m%jEeEK1M5ltuZ9ZnJ*;7N=SDuTruG{H?5@?BgVSz@YCl z8l_Fj+W0ll{NpYR)1myfwIPHYy0}Y7NcZa`!zGL)(l~s(M#b>-yUHKUTV_8Vw;NPs z<W$I6@5{3gna_?_J?_eX@aOy(^J@E>@xIA?_J5(}wlM)G z8i@dMc4Cb$AMEDz#7b)&Cx-^@yJ#>cCC;6?RvXzOzJ2*J3po*_EHM9tcb4ymEu#Tp z30hhgpAC+MY`#ui0gX(9OEMuG4&yg)OlEWw7)L-JyBOBh_U9k=&KwZJLNjz?SZGD1 zrB8EnL!+XgmI;rJ#$*Op@Efo$YWQwq5Xf)}3jv%DRpSD7C?z8|o-r6fApJ$y4?r)& zUyl8R{Re~B3{AH8RFa{{YFM%wE}LXY{0<=*C;}#)o7&iX!A*wFK6D8m=mN+ciy}MH z=fvIkcF6-h7|u2iSlJRO8al4V#0UGWs-)|8zVhA7Mq_O~{F9#OC=~;0^~zWM_n?(6 z)v2m+@0mHV$sy)nz4(#=AIkDhy#8HXS9NV#uu_8%6pV?bn48rL;i& zIX<4PfvOo6$g9|?I8TAC-4!*z9!w0q@|6X32W+%!J^=rKG5~)`qL^pnAiRRO3`+xI zC!hpk$@Es6sd1#BEJ1yuINuJPgIhU4rCEm=X2`Bsof*|?PHLw2YeItth!*-!gQQe$ z3=79}Kmw+MES19P#=~f%zRYinfobb0>T4AF(=4~gu>7H+LER5swI>jJbe;f9u;Jlf z5!<`h7sM0#oiWob6CjpxDuTg3fg!Zw;+S0f2}4mI=j92yu~V_T%0zNe`_9!2RO*}2 z&i@X|*{zqnAtXfKi0aWJN-rIqK>547mfk)*Qe*RadSt!y&6}F(5v;$$!sk=*cQz0^ z9`(#tX!Vodxe{}z=aCP%ej3AK&*1g37fDjy8_*+8&G{6mC> z``*)cR(>A;|LRTTok}Zsvkp_k zDFaZnY*B;l+vCF}bYZNe@$})DJ~vYG^Ya&$hySt@7}JaPW^{;E!fc`YSgY!1nWMXT zCXXMwRi0;#+RbXCH?xZTG7)_zncB`?;*Fu<&esg5EH{dR^jyv zQ+&@mJ69mR)8Y%;&MDl;0A~O%0?L<^mOfQvr-S2t9-=T-@b~tvuA(5uGcw-8M>4f2 zpW4ub%RB2AXb(<|4FSqjS}Ie$O1X0iwKgioZRINnCzwT}c*(DtbC=e+r^NjQ@86-3 z3=}&W8|$0HR@M~4B3++kQr7OAa_il^W}h@QwIN``#;%I4clS30xb|x=&F>Zw(KwS9 z$)l5*S@rMAgw`sZILV;)pYg^#xtA{$`#&L+-gUAwkNtt_@_q5BN_TwNZcI*XiwX;S zO|~O&5uUPn9R%I~hGI!@Lcw{)EK^zJRLbw)zaME4SJOuMd!iVAc=m3Jpf5O}vi--- zPu0K+hSAtOhw(ywx_Q>s$W4_eE+bbc<0OLS33AN#-}dh~mWd8nxHt6(bKv)( zz_Qq;g#~XVizt?cb)kmvo?}^2QOjim>P}rR^Yhiqe93}L5T*)F$wZ| z$jcc~GS$3(9jK%Rq@>YY-g`>Xu_GOo>6b*{>eiF)C|l0>Em9KzTYmojod%7DTQ#I~ zkSM4uFY?YKy5E=yNHnO_UMyFHfRnS1un8u{$A{-{&J3i8P*Z1lpRaYexVtlvlBoIe z<0JKNLjzTUcIczh%$yKW-<0$DVq4Om#jU&wtY^=D$YG|~ARCPez!?2I0biXTIJpml~){%7uZus=E3eAh0kn-JGP#94}*G_P$Pd%mBhiw2i5 zkfKEIAEnT%j27<7g0LE^COmh6I<{t8V+#WxEx z8fUh5rl0NdI@0oX7g7H?q3n=&3=#9>q|2e!7=De@sTe19{)ibzY`h>Hoks4Rd)m2W zqo=utWS%$e*xcx`j(1Bf9E*BH4vKZpP^bfDU|r6jM_-%*8#7Kg#QPEmzE7*?{RXlX zka^?9BQ-o!{83Dc7t)|QemW{qIC%#pONncPQpuTYeeT>E zGSmQnjzscAG|tm^dY7c-OiD+uDn|M0=xkED@kyvD>F(W|h3k!_v?(JgP7ks+ zs2SRee;Lf6Id;51bMJ zbw&h0<{G1vD-(C(d$JdF>KL1SL{G1NJYPjW7n)|jTi>5pkpVCS_9xAmv9DiGReCWJ z*aCX);lDXV~+pz^{W zG%l1Xa0Gjw-I~N=c2-0}A~rJ@^6O38wKp>|-a>G)``yL|><#>XFRXw%lRtRS#Ml^; zjK3&L0dA7M?fum&YRcSilMm2W-=zHY8xs*U4U$gLmZS;o+LeXjHt2o;hEXaYT!!mg zkil$324@Y+RB}s;T8d1~8Ah&?RTe>E8@E3H`mAM_^TaQ5Qq_5AZSZC>V*(OTxi}^Q z`ad-L2&K&|jR{m02P6WSBZo~arWqqo`15BzAb==%aV)E}c9Tk664I<3?+eCmf@%P#bo3~!ZWrZvnC7z~ z6$sCCrwh&$1~7^+H~hgZPCyFxbt*FY;@?nR+6>u|VxGf~g3~iHUJtz)amTL4O$b*T zIyKBi%>>;I1vzdP{Aw&j1m-c_lmec*rdI5@4w%|=Ekb44so>qzapl!rS>j?(o30H` zSFx+xs+zJF6$NOWr;ESue6fG;UVf=93)1;S9R=f=;0iy3o4^C0Rmb5K=d%F90T*9cSt#WA&pL2?@T%=k-bFq20;7VC8%KmPsN<=PP6O*p zdw~j|k;hkQybDFuU!hYSNq-JdC|@-O5AHq#Rc2+C zo}0UXt9*FaDpk^}WEHZS6|K)t8is0j1W#{beEV>uYn#1eX(T6Adz!j7ZAaOz@asRj zRFBYO{^IZ3Y0OuySh>*8|6b2IB+o^p8|8#Zv!|bCnFptegvrb<1d4nDVv8%W<0OcL zJv(=9fp`}EY!|BhK|>lE)vw>btBbMla^bxa$RgYlcl0QP1wsX8`MAfehHs^T0EJ4P z%lGqY0VrE^J|8+dLc_v-;90>FfvG{#XjxEJp%VW7^=o%;Z>szyUG0tt)fL>0n>6br zrKH}w$Vy9V+|nlGfG}M7g;Sw6T}YkEKwm$mUD;!um&Bq>OfKQ9DKFh%U~DWcE)D`% zt!W-WG1O1^`%<#9;1WRb9`JggJ^;)%G3>OyzRGu_*LNScmuDxP!-XO(CB=>DfbMnf zi<9^Y`%b^?21*9D;W%m$ty$cpD=SyoB7y}rKr1)gbGLNp-Me!f?22=L0-`x7cScL2 zZVv9X^bc{MooKG8q&l?t(tE$%*}8ml73H5NOkUq)j=8t8_^?!FWkpIuE9lw&j-i!t z$L=!b-seH@A8_}61@;A4sr>doIM%ShfDnJ%$5V`^34xPnA5eEcu%M<2;!shoGY)*t zQ5AC=iKxQ5Z7LrNZPABoVP9cMttIcr;@U2I?$o7A8tiv_FjhMMagf)2NGNC12lKhTnAd9E`SRghz4rW%@;-+8SlBn!>-1E z6(u5;@a*h`r5!lMfFyxn8Br>SOa#4D&a(zyj}ElHz$j5lpo;8vi*LGwSc!_avzMlQIK6iPMHS*T$+Al+FXU^!G-dy~XarStk3?mIg zfYLP;UAicq!1b1QGPIXW<6qk~LH^nymdIK+uyOkklyssWwv~u69X83H8h)Z_WK@g> zvs5YfDQue}$Lf+d;L~$RA!Y^2A2;Bvkk8i~cLov={ z%yWXnsSK4=X8-1E(@>+Oe|~c7RvV6>=^S`KLzKOY<4G$@*`aa<2e@+ycaUC@Z9gX_ zjwOm)!+Al5v3F!pg@*urAZpMmxxac88~Yy0Z3q|Z+^YYR$rKJsxo26R&pO2@RvTw~4Ag&ein|EQG+` z<+R56-_7?9W?l0Y*sUch*8KO!u7l=(*>{9u@pBY>hn>AWX?LMan}EW}3lKkC;}&!kFM#AKqE>_)1G7Gi zKZHojRy`iwce~}$N(vey@vdNBm;YC2f}7FU#NIZXY=~xZjP9j8c$K ziI-;J9lSh@66U`yJ>l-%vVsCLIN3n|o@4z|KI#E#Cp9gt8ZZ>de^imsPok2Jzk3&z z!4NbkIb;2s6@S6AxP#EqP&MxFC*g&*X89+6L0ktAK39dd-r07ea`dR@sVp_>q!x<<&Th&l*Nf|l5~NMBK+g7bI2+nvk%ds@$n6I zME^wLPDM~t2j97~HINrH_l;%?9Q5IS`2~vv;PXM~+wQ10Tqd$Z?Jj0M z#0=ULFYrzk!9yO(80toh|NI%z-@!&bTHeLZ%*_0E07@MEAU|wnsJc6Jy>Ll7T#b^) z&1`S6VsPZh&zsx*(z|Fd^Z0b7*U=9&G7vHxqg|XHq54$?y#yx2Q3Q~TP^wMY(K|xY zrPToKaVnx7n4O=GzIDqjl+r7)<|EqIiqCtFq8|Rdc^rulWu39xYDvp(*Dq9USJ1f$ zD6`uK4z8(-5a(Dz*rN*qj@@B&mC&;kew;rY^PK@akv+zU6 z4A2;=(Fh1cQKbgw-?nkAfO3fUqZLszILIf}UCuiX%JjqRakOoW&Ys0NIt){{VsPu@ zcR=6Y-`v~`Hm9#IWz*)*_W{y8-zW>1Mt@Z|I+6+4)DapxLrVH)@b-0|FE+$NZO^^mL-mHuLB~HwMUFaHR58$(N$4-Q?hM@kAv9_NH7_C8$0fLd|ub6CPFe*S%GNmiB}K-T{FURX)15fzHrRqs1QE0E>dM0Vo*vHgCDJIU@%j3d>u`Ca7IgzJ z*4m02_vG_yBL;!03q%>9C&H}UJtOp)#)tp!bK>k!77=;O&)QP0d+E}F@H$+$Re(cb z745gBk7!U^-3RsyMN5eI4rOI!e*O{EDU2TOAqhIgp8Y>fb%Ppg#LNn6dU_Vo6+m^Z zqpK?-DvE;*lnlvJkq)#pyZ&5ZF|k(wh_tn}fsKD=2k;2C9eo>!)%QSMp$CPGEMSjh zZO0olW}NUUBh@jYVPf!AWqiB|>UsP~2Zu3`x-g$!#(4o6R1^l0RWUBmsJNHFVBO8} z+QW8Y1xnW&_e$`yJ&%WsZ8-6B>**|p;1HB|4R%JYRC!Dk1W1ncL$E(dW7y-7BQDtU zBv83`uWg|jbmAX6JHasAf_z_B7a@=6K%schy07&<6AWW^w$N-H2y&?^dq!RZ|;8{&Y8R&M<@;IizU3w2ag{+LqUk`ie94p0C-*eWHYuy z5G3>Sc+=2?ROsWVH;utaW75!@@z#k$j^`a-DI(7T_CrMh4_(f~hn-NuU{RqcM>&qT z4}d~AbDrVU#W#l-7X+gf?A_lU~$$*-4aWGIPy5@#Kct>7X?j1#^E z+#=;Nu{Y5G4*9S168dLCGx+~wDYt6Qe60?k2dyxwUs?MFob@}+gw zlUsOrBCnw_sCVU~s*~*yz1Y8gEp<%V{SRI0RMIUSz#*m0eE`A_Cs|^?;U*P90V5k;^V2oC<#)2wD?bIT#oYu z_3y`9_z$3Q7s(Mh&2fOl{{H)i#uGlMS`h9Sc!+Bh2vG)V43z0`fH8VHG2ABI=)zoc zV2rpqIUy#dEFSz0xZSFTz~zGNLRo_;jt z#ey+{C(eiGX1A0s6eVkz89g;xqv-jd~grNaYYRBHD%# zb&#t-pV9ucT=ob+vd~OxJQz6F5RgYjC@WXv;i0A2%2>C9R=wB`Wb?wu6Hp{}Lw*|M z_v!etV{B>mYR&EKDAaBP<4{pi@$~fEa^V;UN7bz>U(1VoCP~Hy=T&R#UU>3xS7AIl z9yew24A*hKU5&R0lK-9Zg$|7>pe8;aasleN-uKT~wZYD=@e2wD>+V=dABt`#q@n5H zmUi4c_Lfj_a@s@l8^|Gr%HhM=6&2**UKABMck?Brxsxj#IqJMYV0{2cjWb~l#|}^) z#p)SADA;8P2t?EtiIj%fH{VW3D1~@tef76Lwx;KU)YL)j`2~|=4vu8TfA0M+Ofwbz z*G?^DUQl~e#w}>*7+8$v6}GkFC|_K(Q~^;@$JCP=YNnqIN5Z@935!6@r5mKV;AT>i zxm)H19H%wx77<}#FhGZ6pCGaWognO$K@`jAE#R=e4BP{5JM5%)=&SczR_yAHuyNca ztqJ6a43y#5Fl25#cI+6Gd+^ahYG{t(2CrVd0!)F7J1l>&Ztzs#D=J~U^NkxDpr{Ko z( z#nP*}tql_qI0^9=FBxuahRY0G0#@QG@*pS`I_5v&Np^X~;E*6xpm%&h5_p^Vaa)4) zy9#U#&mWHi|9Ry~MNUo*o-5E4z-*|3R=@zpS~9EeOotB==Q6~yF(v$BT;Z8$R59e? zAWxJALruJ^C|e%V4KP9;rKlr<($Fsz*|#DH5`tOq)z^O-d2l9XsT}IZeT`=d-zwe+ znevFo2)q~@7l<%D6O#j<5@+&Wyv#p8)$7bx7@;hsAn?hck%J&&33|Q2EtEV=V1y<> z89Xm40&5Pa@NAYdS}%Me99bIzu>WWFvw&UA;6_ze2w4Tria%NPFeFR@79c>0z34M| z!})CoiYvXNN1;P;a(33usY^;s#QA%3bM1Ye_6`Q&J$o=78CY0h7Na#0(|_j@kekEN zd`D?PLhwl1X@guPRCIL6lo^mHKK^f8TkFoT7H&pvrX{jDZ{0eI35VWoav*e&Q;4}? z2JoW{4FU35W|h7jn30iN$zvDifOp={c^>x#?msjn;D(=rkU@VeAu)1{8?l=>)2?Ub z+kf4WvIPqtO*Idb){UktVY+M3Z#iKE8SDu)~x4J{OsZS)Ms zSk!RMqplFtV7_~mGh66*s_3yg4le#SL#CpKs3K!}l?hb4rNvJ;atHbIA`yCLR*BPd7qBgfQU<5>&im2Zt6oEifb;56;B}f%bqqpPw7B z_|PaR?S_yFC0O8aOuQGvyT%8?A59MmC>s@VZSb2C5=-kQDbSnBGgvx z7{&?W0=gtKYw%reyjCdm7_T%u;-z+07xSwLk|oW-at&L)!M5F zk~upoYk0`>fMeh=5s#b1Mv;z91wxuq z0TCrz3Gj2@cvOqu8JzT4P2u85QgR-V zZVgp{Ech@-)2kn91{f~!ib#jt1RGiLBZcf$_dz7p!mu9 z{?py;qKC(2_&(K70uKm@O8{CwGGt+C`6MGFP-t;^nSRpB)|QHZp~unDh?DCeObO>z z4^I6P5EW(EvJ60RZdD5cC1KcXeEmN-wwOwMx{Hd4sKKS+a^$u2|7K*ZfHebWMDk0& zm2EXOsXv1|0W}@C>AsMV5PGyLOMjhkGw2>Uf_LkZH!TSY9;R5x$g44g5h$JFNpzmr z0lUS2oA0tRZbxc~HbwGwzXerjmk>||TJVg{b7tm^$B!?3-(JJhQ+9r&y5b*$G*GkK zGJzDd{JD2N015D%X=sFd5tCBdEw69w3ZQ@n>T_qO7|wotAv!vF-?@CyLEy2t-X)?U zK~sdv?GLjmu|rI3l|*4BIsEF=*TGQbcLY_?`jpa>eYSXWKW;Hao~@Iin7KRkVRAeVjH{$-QdkS#J2itLb?tSFg@ zj8Zbn$S5;=gh(Z$NMxj_6w1nq%#2FPPAMxh8NcIuzwi5d{<`mOkN94n>vNvxaUP@N zenR5U2#U5k_GlJBk&wfKuS|LA$&-lgN44GCkKamfi!jQz9oJ)5IR2tfN-}Dv2JQa( zha!6E@&6FS6p_P!b?Nur8#ii`&|@+e z!XAq&D8B74?YzOMz`*bz#LTBCwzV+N7e6{0V4|kE`6r%17>lfIDe#$n`-)&rkdEH& ze$Ynq`}h9M7XA`7; zVJ{JUduMAJP3%sx?H*?w6`=!y8C%Q)&i!0*yTo(l@RYG6)QEyBAy#_?pMpXephS|0 z8D)28rkk6aFHkTP4CE+bi(CwXJQzl3P*7v>;o?6iDJsHyWSq<8e~ls##9?p0`>QYD zOvD8A_v~@kv$CcZaE++31P6Au`%gP zU}VNAMY(Igxw`|}TyAdg47403%|930Q4nAp+HPTCMiaTh2R2@Ohrz2$H@mXw(hLw{ z`Lq8PC3TYJ!hYw_lj$vdyqsT18>*PCBu*-M4WJoROELnT+vWQJI}{zL*#7b$tD)-M z`#%h9u-qt^`7;jS%2PGW^P^E$Z!b(GS<60RTSL_J_OjaSWMhjpUdYV{SK%NQqt{db zbUdyRsy0YISFT{1GJ3j0J9v|CL+pZ~%*)!!lAAX*9~Y_qa~;?e7uRu<%-32izLv?# z`myL#Q}wL}B3611PEM9-DXa2u<-9)q7{n68X9$cO1%8VPf$N-kdA;}3r?QvIUdf*S zA>{~R@qu*>#?+>Fq=*OS*8wrYQA29$Qlw~dKW2JPvmhfI7hc`30bB&kK*4~xZj?8jztuJ ziw`ibge-?^YUbS8);sOWX3{v>)`b06TS*F3}Z1%K&WGdBURVp@Li z^~r)kLG<*gbC6zPhppO0?jt~;uEcw9tX)wi*#}y;1EY>V$$<_D+ZAswuN>1aVDhLX zoIy2y^oV6|41A93L$;v@UjO#%QlhPBGNfVEM^vxp?hEy#rl!%Ci+Hq*d*%l;99=^FMsvzAYHAWuw|5Rlx9niMX^PCq}#_!Yhx z78SXC@uMq8FS@w2W>eb0Ap?fB1bn;IHBPzjM_Y=8T0(l#vmnUs_x z3mG5I>WXh|fRt2J8du`&4f!kImj|OW$1WspXJJtrJj1dxR@QfR2w0lzfG%{cuxs7- zs1xWC1_G=*Su_B;NeV*DVP?Xt0C0UeJm)mXZr8e=VoI3fmfO9XeA0AY=kUYaTzEG7 zf;yr7$Z-8r&im@<-(M>dN1L?DBL43KTf(W-*3#-V`%=cAsg>7*k?6$>-+><}71-A9jr`j3B|qfK~3>*bRgUF${YGASY>ag;iEuZM&E;MDmATfl!xlyl^49yO^4^K?H0-4E_AM_aSqE z6e4h~FYkPLn7wKJmx)= zPiXmT>5z6r{4{@Y{akJdUr-OCa_)o}c?UOBSy|03vCKSL^CxNvyf!~C*^#NJ6g#t} zE7JuA&i>fSt;*DtpxG2Jd5QPvU2>bk6=NS@FYr;*HA;T-#vkAgnibr;sP*7DA_)uJ zw6_^gKd=CM7^v`~Ct&=pAzyW6UYL)MAdRA)K!_1j_812EK%y}`z6Las>|hqUcysg)T)>NFp*hQgrJw>78U>;(vp%M6cynS#Fg%a9FEaSPYP&w@5hgW@G- z$O959f+qtR;%H++?n)029K3Nebbcbsrn+J}?;)k<#M^;#7B2d#D!0iU%0W!AJ8M&A zhsG%9zh8@EBp~TO4Fm%-n3B>dpb(9XB%;T_76%Ol;CrCD)AED!ge-*2Wo!Y_509c* zf!D9It!<|pD-9VECjcj&(9+6*$_t=+Y+T$SL}y?b?Cy+2R$S<^*viSu;)LRf&KlvN zzp1F;q;MhEU$Vb@VpzyrOHGR^{U8N?yv>b?o%;GI^31u%XrBD_iI|xH%!$$M8k<~N z5eo9T|5nfTUUI~{)>g1Yp=Zm4qYPX^&(%D)5Z9nJ6R7>5gO?hUGPe4PZbOKOUR?zm z5A&RAh~BBbqC<7NLE=dBlYoBI(z=FRJd}ScbJ@AM-ysm`%*fQ}F1_@@N^QSm{4K zc|mX}wf~alZffa#sZtH2`nEWNg@fZy#>_EwGO)fg6xYRe!9p=FG?d?F!CFhp0Y8bd zjUQ7af+6wYf5r<8<3%@xbP(xr{#ayWuiIXE3rKw@D{H`=agEx)B((CLpXyF)K*po{ z^DbjTjCt^)w3LibMrHv!F2dHqp~15i^Q7HCAsN-z?c3h9+&XN%K7YQefc36SbXa)w z`9tpXM{n63t`mHVLKgF&{_c=r)pdOoNp!x$`JY75Djm9B{MjWr6Sf2RSl=FXgdYL! zrEHclbYL)5|K6TKPvDg7&?t>V(#2I`_%qd$O$~U-X;^&rcICSu$ftXN(@a;f0OJB z6d?V=_wHSehOW%P`n;gMBnn(h3@c@@j&7pyqr={VjSiH{0XUN?=ho6*=hvmh5(;kB9Ws*8%qE6Lrq_b zF;*R_-6tS04@e&!m;cX^5e?dt#kOPw1G}Uxk{O6%P|WU~*^kvV0kMzPrHclPbWFmk zn@3?dvET2t_t}5ma0glS>@}pnJaEPKa9zEo0QVOf26ln~ohIxCY9Yiw6uT^_SQbEv)rszRQ3$<8Jn7hi>=^BX`eE& z6|4e)pRylqf!|iMN?VH(dnzI&HPxe#wfpdqBO?P*Zbq588Zanve3=hcjakj&j@DpOW@$#wo*o(-6I7?y()s@eFY`Qo8(d)>=F0ffh50}}u6G+fRJ zJW5Nbf+(N3x3kq4d+u${?|b<0MsML}K;)N~Le(33D*h~==YGM*M*4x>NY>W)DUrSI zi<74O0d5C>CJE`!3Prg5RHr5&j8ep_?Eeh8PkL)E;7o`}*}iD1OK? zaZrI@HHrMgGw1}4qp$xSyyWf^bGT5CI+Gs!x^_Ls@YWe)0OCO&^D6HXol4YWw-ITj^E3roH z&uGGBLgkd1w^;Dj;FuV_H+-Lc0hg@po87TX3+@P&m502MCc1((0f0Fyu;%dNJ!rb* z>bjm$^$+fu6eNBSMn{}Xf`AYJGLNpveIg>6=69Z1h^G(1#R&e4wMQxj=;X0)=!b)u zI7^TE~$Z6{aTuO}*|H(gwnH9I|#O*s|!5D_C zediv)b0r64*4H2iU4Pn*%?4PzQO_wYG$DZB#J+hPU&qhSkDt}PFnnX((aA|F-f#Qp zyTlH<&NMmMP7VN7R@(z4p()*3XpiJW@26NY7ngU#a`-H&yyk zC8Kib`Ta%Z>hqvE&}Jd9^|I(2c@UGzuDJv_Ja`Cb>X|ODU z9SOd8_7Os)%pE^Gv|+^vits)Sv9qVdUJS=u-+QCaNcwam`~>o|<6lc|r-MjNl|ZW3 z=AUu>QbxCS#gBh@Gyrd30t?!g9Hs)7aUbYk0enEh0N{Xd?;h`jpe9Qgw$E_k0i`)l z+yX*DTu;V4Xaw0}-Azv!ghb5Xq{6B*9rREXPW1mp&1aiBBmP~&&E~(ch9>L?OWihZ zuvFSMh3?4>1i8=c-nLbpaQy30n^E7_x0ApK;Ot^_8hfokJ|Zn9*xc+$p?P)~Wq~e^ z!eW#jB6O7%<>lG@WJ>h+!gRRsAK(_3qvl^tecZU)QAD~rY_Gx$$Eq!i{9hfWeDq{) zw=FORV1{wpGBZrEb?dut8%>35>X{{HoF!6(E<4s$j>kllil^F<2`34bXjTIKP3K?& zw24o65SSN}z~jCJ%<^@82MrU*NOA^ni0Ye~M&F!R;V57t((ReiRcE{S2;VHXtBZha z3uNJ;IBb7fnwz&aHgv!6w#*rB559T=Y;Ay?05P%ez*_K4KNEo_ALkGsrh9~rNT&NB5(o(j!XFL<8+;sP6*x?nJv_*RvA~d75iR~{ zV`K#XoYht02DDtbBQXhsfkRD6iT0b!xkOh-2jB`-WE(W?__f^joxo~zVS_#?Y;%J` zOzg+tu8ZF&sVQ;|!&BJHyo;7XPReMUM;A@ZRzunyspUQ;r0W563%US;5FLq)m|>yh z-@W^-t)vKt$Z$F-{04&^N;HHC@M-*oNdv235-AJ#F=(wrZ<)|^D`8~&SOO#!j|AKg zE!srEW?M{8*KsY4GTs>ZGAP% zZy6x#tbIv(dOF^IpwtFVfwqc8&@12jT^s(ny^|ZS^F5Kc> zzRFHA_vkVBF*b&ftdnbo*O!r?#H2KZ#}QWE`cd>kcZ8pYMn#p%y{a>Wf^|1(7rttU z*YU8H7F|f5t`CwVw39jK_86|;?6{9yave)f<}&{p;(4kyfLSLiewp;4R@L^E73_@} zcB!PtXz!tYfb)%R@X20=13+U`rRGjz=!_YZ!AWq3C(~m?4-Y2dJ~i`xTdDG0w=FFl ze_OzmYzv*b*Kvc5g`eB|mU54i%@Qj|yz(-G&7K~~&oA}v9qWuxa{BwgZePfEgw(iNDOh!v6A7O-(WCPv{{a$@2&2|XjDIoNkUysuE3s(5Sd zZ@mGfg}}b`y>c(Bg2Hn{E6VmRmYzOHEcil}d_U1qJK`8>l%7BZ>3? zWebcI4So$_RUi0o`ToEQlwbXPS>LGsisAVCu9)?+Ub=Bi)ACylerjxt*c5Qpmzi(2 z=2N~Jc6F&>WKY@x5Xk-9vi|tQ zQI>je5Vr?X-^CvBHv(Swlr!-vm-S!%0QxM6>K7al(FjHt7PA}aa%~)Z5p^QRC_hn2 z8kx$*JfDS!`W8m5Z{HjzO&&hBT3;4$B7q;9UTdH-ujL z0Q+^+Ka9vwXtp&s(@799QBiB)R0`^@{{4H>((=T9>MK|Nf=2uUn53wv_pd%i^Ozdr zT59=MAMxO9+qt1@_}v33u?^G)r^{Z0`Ecn>OS3wcJc!CcMX+T)e)F>U6C_EJ?DADq z@XA~TY>aUi@G7Bp^yp)+9b~TA$+xn`&MvGRsJKiw^*MB7mEPdqT9I~wiSYB^6Q1V< z33V3S+orctzu*ZolDBg_Dj42C@cml+`_06cLa7sD`$arFI^k4HOEh~;e80jDrJKEBZ!Td+4y@9}GoItfGK^W|&ZWWBSx9{xAe%H&&$R6C&<3y+LAeH!J zf2!*Jq*!>%lnRikfun}#jd>QQ?`Ng%VhaV~H`l#?NH~6c!gJ@gkiq=!Jv5b9LZ`oJ?J>+WNb6kt>)0c5*2OBD?dOE*Ha>mJs}YG? zHyFXlhi|c`_dp+`&sqTw{P|q-oyrhsIl^YOk?>+)R|JEPjSc8k1WTyV_ur4-oh2uj zhuy5UyheW&a#P}Zbo5DdXD|?01UHzGa{))xm|9UIs_h(Nr(*s{;;FbhJphe!A+l(8 zVehjSYpmYSoO;7Elu8~s0X+nT8PEy@<&c!3bK6{B-gOV<-Kw)=H5c?a**F$9V!9`P zyHBy-m4k}DEMC*CvZVpkpRyjl@LXR#60W#|HLK&k(Pfz}3~!|D-jWB`<>rcr&<3nU z6-X!S6t^G>^G1-h=wi34r7M9ss)sgzL zVkofS9eIi@`@V4vQl!pD`i z>s3w`|JBtUT;n*z!|o_y3TA=`Yj6}OY5@kY=V(fBMhgL(X<2mN?ad=JWMuCKxYrr( z(YX!=3f4$uFZzI6iWpy=r22~m6SA=xkPvzQ=p1f3C6g9+;>2-Bk^bsk7o0a0*g~(# z$R=i3=cJu#Eca{}te#)~19+dD0Ej-`Mg7atL#qw0ufy6K*rejpN3`V8q%ij>VqV6Zi-$D9!@M_`X z$Mvf_ckkY!L@>{a1d%Tf>I!da0iQUT0UxyZaXW`??SdU_fO zy99!Q#-`%XHO0p})(|~8^xIgA8Whcss~z%tkfoV;bGv0F=M_JE)ees6D*vp7aA3A2 zHC+J73h$-EF#Vn~2LV+{p825Jg|gT_hi7#bCr=_crSZ!bKhh0bpaSc0Qeh)R=9D;7 zo$~UCW5;G^gP%#=ND2wsxHkU&T61f)4>OV1+v~(nt8w~t6@q5biCfeaMPN7r%zsy~ z84FF~xS3h*y|dK^T-X`7sC}ku;(0`5dZgq(Zp+*;v{g+~ZKoQ$+HPWc7~>9R3Jhb= z6rGo3w+h)uKznv0ouRq;L38sX1mlrig*?2x{J7CvVO)V|S^2f+(mHzN!6L!Wi2c0KK`6i^kEsjWF6-|2H&Myu#3!EsjnhFKZ{5ZybA95uRcry*jK@lj;%>ig!&%52O>;2Obv2{{G#0 z?@->u!?bro_q2_3m%0=lX(d@85R#~aPVW(eLRK>{fVU;+-x3_89DL`($h9lQL`0H5 zs$Wm4?&MwGDasjPtwq>6J9DwH)QsN2-pOO4oyRJUi~zMV?4V(c<;2q1*je6^kT{`3 zNX9c&jS~@l*4Ek{6J10UQ~c0iF<)CJQ`6K8^)SIwsf8m!UmlY8ut_Dv67;`sK0#2< zYMHz!u#T|V019c9pwFlK!hya$+WzFJ4i43O&ozaFa)8O12Ph6v-Np7+Zk5Z0YX@8Q zitoZK|DQ#zFR!wN^lyYxNJ(otIeB@cbFpWtZm6}l|F|F2Ib8SSyTJ~gIOG`o$GOC` zGum|yzMrK1N4)Awy#znFI6-wyH^__O881weVJRpY2+}+;Ee}PKI&(#Dw<6(R~`w0wUmqYXS$}pViuIKRf}Wp za@yQVdBRwef+oq(P$?(pJb68@a?}aqUr#(+B~U@B2~3~pZ&1z}o$p{f555vg4PO5us>af{Pvf>1u*YI$KeJgGq zut`UUhTH(LBQtVnN62F(^QX^p9EnK2Y}a4Iw>F z@hEjZKKZVl>F2L(?>5UO3ahM_P=YM@eI%-S)>!3eT)EZew{&~c-z9oz#MqY^8D4Kd>S`h2u=;OeQWo_p<`nMEcl`nkV< z*TWoLA|lVx*xD9rCd6i8N@~}^{6(7O5N9T4_L$UdUAa*V-&rJR? zmU_^mu}biOwin^vID}xK<9Gs6z)GquXJf4rzdWN&Tj>vZR-ZfIUfrJy{JdMQkTQ zHT#PpxjkerE@o2r#g;AbdL>0xB6++p`p=`S>`*Qc!LmWllr?owa1P;QN&3|0u z)G00kTMJHAOsOW^Os6Hl{NP|X0<<=*4WAz%rOg4;K#v7eC-^12+3^(bvY?Rc$X6vI*dVP%RP3NOxYsg>B~20p z_mm_d8l=appCl#a61+`Xx~;hQ6rmCy|JA1YoFx0F&rkF7VRq8Gva*5(4`gz1ry-aJ zOOe{&+<&bzgzD}{IC=r}|^US}$ z2ZElQNzTbN6BH&V@Dub>>FMfXhls_4QG{RblVXu_nBz~!_!t%6)~nQTa17HFqk~Dh z+Lu?GH;6mQho`6Wm`dJ*2W2sMr}^v#sJlSvtdU=L>lW*VAta)CA%_k0amyDK?W>BO z)!66oa2sU_77ztFNQNZP$i!-2>ahw{C8;Y3zTLZ@k?O}|@i(xA9s_3O8(x9d)xe^K z%SIumtm&*2Mr9d58o-*IYDuvjR@%dz^lQ(y^75W`?MNEc6FSAZ!aBlb@O@8cT9Kf_k<$rN_f zm!9Sq78q0Zn!;o;lEa|@BRQizemK@@yF*u(pGe|kB6ob(4BhU7 z{~X{(7g!0&0|$N%R#)S@qPtB`AGjK#Mz|BmDF8bl-{{blKa}@1z#~R~Ud6_~eS0>( zXMR4%u3ZT&?_+b1*79>FBqx9PR<&>MUXTT9S9N%Kc@@q<(oRx=*!_3Sd*sdWLsifEur{ypCbh&BOlPo1io4d z($oaZuHxnG#r#30P*z-+pQixKNIjGwzVkg;(#t5UA1eJ|fvNesiJU+tjIg+HNW*Th zeW50RB}u%&X+sE=i@n-~=74XD50J#W{rBLdF`G_LVCd5*Pu+#39sDCo0yGcVmovcf z%EQIQ0Ah*gMhixZxQAFC5B|!%vWnnzao1*!Hi@H78DF4lSb{@5KP}rx?;DsSxZe|l zkZR8uoUcY%HPDsgzD6(3MJN*KcW&^JvD9b>Ct6y941k-j;ad!V_i9 zI?8PKIkvsVKI`9dSL@yCX09Ky?K}W8nQa7mfs9B?ru`N5`Q0Hb6#@ScSa072KQBX2vTJ06DzVJ1<(^ccJ6Zg z6`@qc2;s4BPi-T4$Lv3HF@t~$wGpqYHxu;oD6gfbgR^UJh;O3~XGJd^+D`*l(9+aS zz5*50xAciq8*P#xH1c5HL^($xiu0M1IY?E&xd7XdTB0C{hjt_lol`fZvd0)L0ewM) zvyyk{0d@w2wrpcszlMzygsrxFtd1UK2%Lf|H+gyRWG16ekG)nMUcUCf9%9IsfLsT% zbDUpH?vK%!Dk>_P6v?>Al4Pg(N51$ofT{cRsf64!Y@a88{*3k{+42?d+b=8(Z>Tub zbr`uKvJw{NS4n%{LAzrPhJ_s3gC2TKT zfR=5M#C@fq0d-sc+$Z0ui@R%T%P_Qaxn=Y@K5d2eLa zlSbL)Si@JY5M-EF`k9lQt0 z#Gk$V{!uqgsk!;bU{GS#u!Ntr*-mhfm3(d-KTRHf6qgu!Aq-an!om^vh4CT>1_qj5 z;_i2&A%MfuY;@pWD7;GLSeGI3Lb9$>T{mwZ8%#C`tO-ZEa={JsBg^l6hW_C=_0`_D zf7sy)h10)fd^aZ()5suJl?ifX-w)UNHcoS%W!}%!&VX*_i*jQ;vU9j@BxRR;0v(Z z;Rx}aZ`AtNK)lWG@PiN0{e$p@d}iC3*9arW2H0tfNu3ifT0Vu@ncI~C&ByfT(y9WN zQe}VqH11Q~Odgr^P*I`f7k?8f8~;~o2;&)9Fwh}`1Co!6i=Q49CeLGG(^j@-*mtk> z=;a}TQ*ucA+73c+e|%%SR$$=Uy^SBoZU{DWup6_IKDZTZZxGrty9qgSYpJL@*R+3@ z5XW=^@4B7_&jE6wJ@SjeluUhn><8>A6Xc-QT}fD(I$w-41MPun!%y@}7{Xy&JP7OQ zwF4p|IwBvt)Mm$F;@0;f74(K{89(p^g%xa1(*UGcRr!C$$^zsf*s|dNOUs`m2r)zW z*F6^MR*qN&$GJJa^i?QHjQG0Hw9W68^pK76>WWr0#x$5x-` z(J>e?Mki$RNZJwv1Fiw5wsT>f*dHp9haDfEx-G75YGPn1_xJCQR*r?HUDcB*F;RTZ z&X?B|M(&1xqRwLUAqep}*hUyCljRo{B4GKrE9vmad}&^nUr7$@AAzw*ZM8oy(?b#s z50sq=CsKyaZ(CkTTarf;Vhi*Ce8-2Ppj8Uo4TOe}%7`Q2bw~A9eTCboYj7N-@un{E zo}?31bQbR+;J4BAQ6Lu3LxLTq?3ccE^-{Flz=beP&wF3c3lqWf*G{ue3d_pLK{DFN z$_1+S7C+kw*C*NYcb^9JuvE8_yKlE~3#C7a?6Ep+Rpm~QtB|fuP+u|G)#G#=S z1Pi76R152iz;$Nx7vWTT`lF*nYQ!_C%Zs8Omk%c;RewudUDWhj${ZBpxqy1M9yuJZ zikEdHSqT;g1;qzl%jUzsE0=F(G74t(9Y*5HJ$gt1Pa1P^vr9u@*B%F~)S_`10CO*| zDc*hO1`Hr`S33R2vAR}Zd57F`=`~oZ(u06 z3DU;)R#O>}Got^brL#TGH`Lby{aDKWT68Kez>hLm(fcqN*&0vi4cq5kqfL&@+j>ey zCHyM2na8G2OJt0{q;oCXJXaDcg6_mL6R~ef9)YDr7adG5;#rRy{|Y`JTmjWE*{g-aTHz8 zgE$lON^;My$sGU_>Q59w299Fa&@74z0!h*ZSaax7u0<5=emMT&?(P|wE9Ow~n zK7hCI)o?tEC{AB$8$pujpxNq__8YyB8{x;LuQ9G}XUD()NH^dU6s{Ap&KNFXiQ<;` z1Crgc__y}7Z>Sbgh8fr5X;@hx=xjERo63p(uYzlPOK<`$^`zEuUh1_KUknb`&;MDh#{ zfdvCnlB(})CN$MxFX^o$AHu486-Wgt8LYbV8rMcYoRIOEX8z*SBhth0A^8eIGCX`> z6k7e;3z0u#VH^LLW%W-!`p)25W_|`|K__WpX{oVM50s6ccPr;)wCgITgtGn!%gREJ z$iCT+HWlVp+NKOt!LaNzZTnguUR%hykp3oUla~OdvgcjN{LQkmG7KGlSFe&RX4%r6 zqVcJ2eEsmiE+qHl&oXl)WHEnKryw9K!7T`s4YG%kJ+E=im~S+rc+10F2>c3E?RU-1 z?i_QJ>POS$_F?!bE_MTy-6F!Rj-7Q` zdw=>)qI!33)~Q#Pr#y;SvKW^q8GVkz0(-xncE|6yM^`weU1jM?%~0gPXe=|i0Rur# z^hQo3jU9_qcVhiw-Id7h&RL#*x2EdTmNG{>XYYLhq=iYIj&9h<;bbN^3S7Y-)?Bc3 zz~fSm$GisDbyDR+Tm&w8Qn2md7!>#UcgS2_U1?|{0l*pea^YKahuxLqWL?ZwNPH|_ z5pc?PVqD!@4%=ERg!Mld9cB3ZB|DbQXjIg+i?83!24O0=*TtLy=Mgtso8-OF`b{S_ zad>(rVFzoFP}cV`nZ@8#9zk7fYraFQ3^WOKSlJRb*917^> ztSzL7-7~V(0D93E8+`#i9k2E5U;vOf1BJJwyV5)^>>)lk_2;q!SV9ps@VDr%1RX+Q zzyYUnaS}ExY=p1l8#pCzAuvQt%3D?yX>=`7@Sk-IuewA~Heu_N&FuZjxC z(Ib{0j51&7)mgvjca*yho*o_t0fQMH;vOQhvJbF<4))mZOzOG%(Waph@=Jr{#C3K^ zzdFl3w=?InW+5C7Cl(fn;gOLbp2F=0sRXh}$Riq~u@b-@xh;~EUfFn^Kk zjqur_eN%*ci!pOd#C;6sYcoNch-4$}{P5ap9X<@{*hyD?K!j-IXlQ5v)QdjIHG`3g zDiW3U?>7`OG;sh>jq0R>_s7r>nDfPV4l*g#8zC3J+P3VVWe8Ib9a?fdZa%Sj^7NbF zShm^@<`3OLE=IT77Sp%OFv=i&5ktRg|6{Vl zTI(!&=H}Ymg_&_eD!l9S%#(dncY-Pd{A7IgUtK8{qHBKT-=E%;k;~}*S4!N9_VZ^o zmZ34qZ{KF;`3>rPun7P$Vq$c39*n((h08!s0EXyACq(4_Rb#2gTMS(}+<{@Hly+62 zh&zmBKQ9`ilf4BO8C>L$>!ctlISX3?+ANUeL6nzbzYcc3<*8E;2u}ldM%}}=!~ljJ zzyOSv&6xpXZQHgD>s<67RxJq_k`Teu(bhITAhKsqWX@ndZDA@n@MMHlRT15fuUz*I zg>DrXnmQ#ZO(8FDQOTLoO1*?7eqf;6FgXU+GqK4#uy!`i4bI?Mn|_>?b%Fg2gU_yA zyV_6fNAa2+&DyFM9SwyJB{eyL{3Y%9;JYV{6Y>rCBqS0%O)og6rh}73PAok(cR<_} z5JF78KnLFPn13PXKb#~;p#9daTL&Nmg-W*{`@b@VLND5y*oJHK9 z_Giz^U|4T&1eTBAky3r=@(HIJlnB-TTxoy)jN?6Isih?(CiV-hJX$xDtuvDB@RLGq zN!}1(1F;s+rk&JXpc11W7yG#O?W3iq*t4h1i(bwJ26YNoceJ+s>e9Tp->Qm%P2%ln zlUfo%92Nf5|2BEAM40k}V;MqmM|OdvViwI&C)#jq(wy0YJ=VmpB&*DVlO z2o2R8LBsWx8P$imOPU+L-`?~~o9XLy25s_dYYPf5>3?vqAwZf)t>Bbl%r%W@>5TC6 zJj@=UWKCCEYHVh<6E_AY=PGXU+=9$+C(w^@4j=zDa1V^(hX*E%unw;de`9$UdgemXhp@9$3p^F?7^>{gqLo=+4(3l z6t6wn)0)!NbH>ROcK1j|1N;JmXn0#O@+w>4zDl9c0m}e8hfTQH!9w9p4u()%1~#uQ z@|?eNCiNx5KF&Vn{62P9NpNt%zUP7{1+(d_k|xa4NSIA75NK3cv|K=87E!cbxqk7+ zpoc#O1ckt)KiEp4sG=JsW-*t;KEdJq`LxtjxDfxt>y2C6Z*GLjYv;~bR&dhb?}Flr zmW_*@eP{|BR%{P!9UVmo@srO46%_EnH{hipSXf!d;je`&p0EH12gvKBmo+X(NdAOj zv(wp`q7qP1Ri%R1F=l3xkKW@fik*Lejzj13ZyYlu--B<~RDnh(pttVViKm z$Oy5MpW#)}?xzk80J;;6<1sae{6N?x=lu#y1Hk^8_S2BqFoAk(9}42-ez-r}nK8edDg*xQ45}xSgaH(777}rky@rZ8;CxBif?+A>+X`$8?F`N`z)n1Y?`C*qWP# zSFqoWjp?n-0K9R?2t4w1E_bbmn3dNK?AymkAhFEt@IM?AcOhXzb_OsPq}|$jaQa3+ z|Hkq4H2{(HW?3OTef-fx1nfPvhD($rCW1k@AK*GncP)V_@|RBI&7*ko9*)xlzK3y9 zgU#{d!B5@6>|^|qo|eLX_T19@)8JM;Kc78hdzfa|OP2oh;dZLn1}p&UE_J{~X5`Iz zog~;fy>(cMVBTd&(<8S{<=Aw(Zr+I#m$w!0@#%Vuy-WNgr2=!E^Y_fqbT1iUXJ2Va zcQ()n!}7<^Akv>+&!LY^It;l zM<|`&Hu)~`@;1?3{JK(r#PPl(T!B;0g`GgdbVN(b)D;CS`cmBLPKKu>Huwrtk>wGZ zoA>VR7XT*;2AUyUNAw>ua!$(_XcT$=gIfS5seX|Q$@i_wJ*Y?)A`0>&3(~-rT~_Q} z14H;k&TvjBzqka?ou#QwXsp8N+3-Uh^Z~7MG{NFTV}Czq&>NVH;4@ROUc?sl(|M8! zWupy~u%sjl0VJ$ zWB~UAnQ9tQg1XrCyZrG0X!~d4eh@AXMI|MQV32u8vcM@L5?~Q_075&)xw+@ME^eB(Tw9qxS5@ zuGUlk#|2<)9}NVI^YyjsVpwEkN1FUo%(>H%L!8_oLNKa|0k*y}Z#!YQQrX92aHcG1 zvkFKl*bewD`p%FAoB7JYIDtMV z6qJS6Z{U`|+wfB5vt7j`{3 zO<+-!#esjFpT9S>))yoP1YO{oK*Rt@$Jes!^C8EFNEIfqp!T@A=0d_pGFe0@2x&Qj zcbDX4_&y&Eb3HB-YwOB6w(y(II65ua1_-6w+2d3kg||8i!V!3;fe?Zchsy<{(CFwW zJT&k>W*$W_ec(1TULbK$M&@niG_Q~UYq)pZ)8=|(At4}8S8X1p$02Aew|MlaE}mq6Gd`*C15HO9~)cu;T_<)ano&d$dqF6_fm1cHb~gu%s+c3q&n8(a1?ep$H!%)-HBO@ob1Q-bu&UfWv5<_&& z)L;A5DJ1|Lii(_t`%T`HEYLD@|BROY8Lp!NphEHj&CMl;Vz&i;znhTf>y_Wl&5=a& z@MIsLUGy|{^a03&!6F;@AMP9MA$<>M!v-GZ!hRunw@z{6?rN)YH1XgGuYgX7uH6Go z5wa^5v6p~A0oMowQv~i2G?SW1XJM!biVn%Xg@Z%4x!y<<2~h6Pv(M>$#Z&-%FOFsM zL(Y5rJmB^G#iI$~!^YjMLX-e?1F{D&^nif|0ThMW2#hH#cCk5*d$SuG4Gc@);2Z+1 z1ERm0r$Xs4UVr`iH3cD?vg(0(1Y8p|(f5>m;zc*~z*-0b=hqJ|bTCIuRr1*%sG60v zRn%*_>=HbFca01W8_7;(w4Ed6Vag9BFc@>?@*kLnN3J%rBAsa`zPE8{ZGIdWrKG{V zSZ@_&h^z(_sQDTkgvW=(6^!0h2tKmU_#Pqj2&*=;f64Ij!%#hOC!tu^F_hP5zhjr= zFyGOGI$N-+;kJ7l9v!WVj^$!^p}EA+Pp#8%N-7nm3~c&T9kiJ$>s;Ib!_5lY+7P(d zOP2 zBt}ezHA2fzM*y5tr^UjVQMCh;Kpr(|n?)dstTxUd)8hu*!5ZaP05jmi0pkHOP|Uz3 zPo#;*R^>^%*t%o@L7~GY;PGSHD{zX9l1;*VJH}TmVF0PQpojxrK^BV_d^20fA|Hu^ zzL$E|0+?r;Lq0?YXW)aT(7{T;7m^eay0(dq*^Or!_Q9p&Z69L+$Jy-(!HGr>PO>k< zwFVU0w&^fRBRFVW0|%$Ww$(nqjX12%WsTU(BCcuLEQGaK@e~Q8(hXMn?fIep>guFj znenaT91Jp-c(*+~s=%o616L*i=4f5%Ar%$g$TpXOvaS4Krfi5~oc)FqJ<`+)D+VgX zH~2k<>>!IA!(IL9Qj2{FhMR;#PFRsLmT7__G22ZFE-_sO$g^#Rk%{ShovaMii($jq z2w5N{5_00XIpw_~P>THLpX;;?h0`|Y1{22l?OV4FuTj&6e0t`f-^+_ITt+nKy#Cyt zXz@$c%h5==v=#`1@7ZCqe=qO;;+l3mR4)JBoWq@>jLWOx=YRhCg`ky2WL*HBL{pvq z8nV~#zkk0$hK0+sPTKVP!){*TnS4a>>B^yZTUoA~(J}5(I3xxn!5IL=S5j0uVxAFR zqXH7kBN;R^DhRE^or8u>SoaSS3+e+oYhj2mJ~J~jHnwBiHv5YgzdyeCsKwkWpFW5+qU!wqPs|U>w&YA%@_n4B( z()kVM!%z?juz(kg zJwwNen~d+mg%{3jBauHO46JpI9cwD3fbr@HuNhG6-T0K)DAh^QPKo|jFaCoEvDH5r zuSvXc+H&X3n>Dz0{o0lSm2Q|sOyu=CPQ~Pyf zeyf$0H_4Av7T|1+J|nn;Msa0_z={0}66?Qe_w6-wEs1*0E6WFbIhfRpw> zRu>=l-s#`Jt){+#oQ56LiH>sYERWum8VBg8!7Hc%GjL@&x!Zr{U@|QMAPyfh__y+X zXQ+dr8tJpNIfQGBlqPybzV3Y=8emdWtShm5H_i{z^+@rb+*^*a9G*{CgIZ9Ys3 z2|-|1{niHTpN!@@8c)3iL8*lDUytc$jFF{5Rp+d zWS59CN?FM!Wki%&QL++JAuXaQTNxRNko7svuJ`AA`+UCt!1tH0AKq`T>*|u{c|IQZ zaU93}xbywSb&Rc&2-EtH5$w~bOcLWk)@5U}7#~;c%_%=kDsmQQxVX6uWH+&`!{%d) zIUDSj>wbZ3b5IV65az!duganV@SJJA@6h*=8@|y<3f{q+$d0Hz6wwD&=kcc-Iyw^` zc~)Vjn848H9+ao7dp@L|U~84XUNbm6d`Zv}?)x|wAUUd0+{1vm>}O(lxbCTV`nI=k zo40;NS#$SMSa!A`5gCIfeK}oUv&uj?sdcEV;}CkgCYQ45NC-tMuG+aTOG`-&VMWlq z?>YvL|4!z=8StBh+D6ksyGWCt26)e-cZK#4Qr(Re!Byx0-B`|n()AX?YXVzvo=@?( zSq$TCuq%yY1q86~W7u^Ghk4LLeg2zNRjZF~n$vI6vr{3>cd&|v!U@9*Pv>bLN<*i# z2s4|nnCLIiM%#*J;dD0EI{8!{o@%dOTWzb|>|VLJu+Z7rhX~hsxCWMZ zCJZm#mA``XBK}PEIyM)xt_MSjbe)4q;6He>oyj}eZp}((xe-oyIRR`0L37dh=+QIq z4&ic>wY0WI!XMzI+PCKl_Xa`1-p*UM3OAQ_c;AaCV!GH!eoT;MsK75?xBw$^Sk0i? z^7%yk2l>BMRFu66G%$`&wF4d;FsjBgGM3nX;DA4xV5Gae@`~%JK+cFzv>08lEE)9m zo5{43$^oS<&`;E;|NI%XTubiFL5#7LX&p6w3J+pg}@8XHmyYR-h$AgAj3CI9}A0aB_<@4frwiU zLFIsfKREV5Qi;!k?BeW5tO2t+RN>YI7aN$@PNOFS-iCGzQQ&TQxuT+p);EnwFeh|V ze5KcpPNw9X*Z>TiXh0!#_93(h>z6IRLkQ3V;^)p=D`R7K_yXYz{Z`eV9PH6SuBZ-d zcsqkCZcx{zr|0yRZH-pek6OVG*uTqlrp$f*dSV9?4NEP^ZTrRRh%2bU18Oj6{hHE%N@Y&7+b9`iK*p`xtYOMH!+6A>T=`i2aGzhZ< z3{T;s!m9*5g5tJq&hp%-#=(Tp5Ktqb9Qx-$$+wsI?=-woPOyP0Uj3qtkI!gL~PYJX8%5JJMj$Uzb# zBAn0yT!Rk+s-_E@Xz@Tp@aI(h#w=k7r2M>y8X)TI2!`r!T)S3~lS7*2f+cd+XvXVD zb_13W`1-mMr~_!1W^fe#{Mlz{n4>KX1p=4sL0nl0^zC=<(2__5n&^_zD?7H_LC?8d zXLEgzg{5UO_K!@+U%yQ$Jd1o79-p5t9!IAljGgA+(T$=1|Mua7GKeKSY&0HIhZWNC z{~@6TSB|Lf|NiQOMr;pQ#=*+g41u-o$M$x_?9&xWwjdA~ndKUEMRy$R_LVW&E~cb} z*Um&tez?iU%g-2rMZnQ5gI-|PA>*eXdf{Muk=~m+u4Li;&fTy3EUq#iAw);+@FF$Lz-iFU!V%6# zk1k{FL+259I=tDZiJLN5*KNa~l$v&l-#Zx{*9G?~tkH(57}gV4x7JnIf=j%-)k#_f zT?i%-?jFJmK?En{G2@wGLIO_vHGzwk4t7UyW@0yDDl8Z)AmwABeL0VtF2`wi2^8bM z>}}0IFHx9rkR68)f!Gh?^+*V*|NpD?5kES?uX;NU?Z;hTzeIuunO9=ACaDnti@JW;H8 z<;x}dnCD**u28r`fUH`%J>3{{`-mD~BQ-SYu(ErL&HbB2M-Ts&M5)x?URG5VfS^DQ znD(B8gn*REi^PS8#P-x4q1<}u$I7i4Vw3izDQ@@5vKVCt2p?KOxIip)aW zw!!YV7z#tud=*R7dTgLv1)^jPiJCO%LK9UKgt!U?)Xhb!jGKj9OFRC_gO!w09`GGBfi1gI5~ZSS8rQb!_lkn3 zPOIGELfTI13G}Klk2Hrda=ew1k&)S{-VkidK=sjB>rJ;)kd!#aJck`J;26#yd!Ha` zVUdcBjSVJBAjiUUiw^k#fsBa&H(7o3%kdq2*8K$T;OCmGW9>ElCo{-G7ZSfxpiCPP zs-`=`_lFe^qdh0y)%trmufKA63RWTKL4lKG7T8oBZEf#4UqJYHsnO+tJ6v2`SWJkwv$02H^X4E- z8ummiEiF-nVn1e_GGG*H^qd#}UX6Wz*qMR{YICSS@75utHj5v`!V>e|tVKqTsvlhu zw*}l8Z!f-`AS)rmttbSF9)&?2OBn3kTiHGPy06cPc-Pf6+zy-0O$6NqC^Xr=G#p>p zhmwNat>%PSxgctoh(!vCDJl7>uK;7caZvzbGb$J;dSW$cr->*korbd+R#+?z?zQxY zCN!lB1@MJ7>)%F~gE|WSMgOEssK3w7#^1ORb8$ztQL*=74-aOd*t)c6us~{hy90RZ zqOPl|=l?1a@Wi}(LX!C(G+OZnV+pkMf!U<06i@8-I5iwY#c zm51cirA&GNA^HO55a8yv>3wq|oE&^b7K8}ndZ18gI)J=EoALQQHxuCv+pwV{3knGM`L%Ki8W_m)=Ef+Fy`R}t1RyNNTQU2v&3`GgieUc{$9=Nu zMRW6hJB%>V6Hw^(eR;?~3Dz**;Y zTU#+jzM@av>7PsYxRzI02;_;miHtq0s2GFqT}701ZoiL@qB6&ACo5(MTn)qVWuJfE z=A~M{!Q9FUWBsPoRr&IZ2uqmFgv<`Um}n@*zkh!OnGotS|FO;!s7UeU_p=#(JVKE$ z;e?jpLnmqPE1UOQc z;(uu~n2g^PfPyR5x2L$OhC5jK2o6r4|NbnD#3Z48L>Sw!?pOWV$~~NP`yd!&VNzU9 zM1&*;4|;qCtVDR9Idiv=B#N^d&n`W{>KuO{ehzhk`FHMMkPx>A6AJ*7^-N8tkXKNs zL%9BwI&f?+iLCWKe|f#(?em%v`FC{5Nav8J8-TybftLj*APFi0ic%8|3toy2APq#H z$2vIwnaN(-bNqM#z-c@ZH0DsX0NlZ^=B>CF@C14zL_+xdnx)-^k{dAyR+ym6iapGL zGr;(oxTbi*LNsCpxfygLQoV9{_GK)~BI__rhxQd#Ju%MSl_?a7g6H>nC&kztfy=eG zZ%Ys`AiMab17pAo=j)h)hHrSML;R8c8&4;@Zt3dDvA>i=u(lSR&N^2EE!}5Pxzv0+ z8e$n~50+I`loo$b3m#b4Saulb9oI6E0Cp)j{gQkTu>Cj()9@X zDp)y?=2@K+Tn$Gblr`7=!MqFfI1oC^+`qcB(A01EB`3W{i-ST(ohOi9rhiK~>|pha z$^@|ittVJ)J#gj_G$L2AV671k$`!bGCw-^K#V^ju@xlIUpr8VA&Gp4qRi6M-;n|y9 zSKM%RJA0Rky1>sKto8`Ky8haYrex{(RO`80N8f~JX;81l^6X#gf05nGB!Hg)LsGmVQ}7)CwBR?|amn(M1s&Kcj51*FAi9c3caj?BuD>XRa4fCHGYIGYUN?q_o0Ocv>17YsnA1L0C|6u@Pci z$Rb2GVf=)ifGq9R;IFYA%E2~Pd-7v0gTgV%R7<&Xod^Z`>w#(Q`}fUU2FcAYip7IM z^eI)3lIWFz^&o?@ed6ThHM;s6qT8`80)dU+kwv0T?sst5H#uc>_VbWG>7}dl2~{QJ zoI?HN(1PVGa8>Fx(feZ9J(+8?zv9qTDGR}$KP5-wK4+d=T zihYrt`D17Z+ktoph{>Ruxl=GrXWZSIIED5zr!qcY97YqmUcz4AP`zyy+Vu;4wU&Z1 z1v&!*6BAC)xTv5M%uToQG&;$HU3`M`i#v{ePQH??1h_MMhpNcjDvOC-Y78v!`Yhza=%&{?*1q|?{mzO4*0if!T zZQ8gTxnA|`JpSh}6^%Sb5&KUegC~1paI+kr1-Ah+c`C=> z!K$LWz1;^)50HlCt-7=*s_d+-v5ga}=7P|_K@zW`QVH=yf4y{Cn+Do25SY9wp05s< zVc8-SXA5Xu6Po+c{6Mft?nJGqr~nUy)|{7v!_vY+TctqF$MMk>%9~dOR{ZzsQFj$= z=z1tE-VZxJX=*LmLo$zcdnC&GNbcZUzxI+GeIa*y1NwsY;y{T_PWZ|;8U60(8nUt; zpg~awC@U&rcce2)ZZH=z-dRH88#y?1%NgjquD2c!#~&~XF2ZyiJ|DpislZx(^aA`@ zs`Vt!T6KOwzT2}ky9anZm^DCEqzVaLmDovA{!Q5=D(@qCa#9`klRf2UCJqv$>vLuN zKo(FSE8WoCl+@J3{h{aDS5`>d;NE=)rpe9p(?2#yOm@I+G7}4jr_GjVn0c`RqUudK ztjd8A7&!#uttQ%`ikX877%ohGj-n+61+Z-seyS>URx)I9=F%EZp4S!yAFw7WCmzEz zLQN3MzMw_wbEJb6n}eY9ttacSyi{1qo)>X<2q}91LvOP05Cu9B&y)*Hx(vI` zJ=o9sXnOaB!t8uH2wwLG`j}&rZPENytJWTAUZ23+qJIJSv*N~I5VIwo+{`m#xT`EN zk@Edr=l`t*NJNom^s=VXt;?u??;+nE8JJs4FwS(u%M~m6YndkRgBb_PP*7nVb_m#1 zYZHzk(3le3yu30ZTJ2bn#zLU?MiVpq&sfQqb7eTqah*W!P*f0FAK0lJx-8a+;(KLf zC4zYqxt|M|*gd<-Nn}kwKC(S->D@b{?K=>^NuPL!h>I6Qt}TE_G|y9sK!S>>r_%fT z;%U?p+603KsKkw`wqxtBiLVL3LNuVyUc3O*i_PlS-1%gmzl(u^fQ9rrVoxluAE0l* zyg(IFGM>69Y0yX28dF4WlF`|70)kXrd(=3ha&nXSt=5)$*IMS+P|3B+juJRPd4QYT zx{3fd09OLxkQBJKf&jp8sWAOZL62}VeD9rpkGd`j6uqllW|05_@sXDP{>9FN5TGOo z;+8+F&IDhpO5)WA#F$^Xj0;AtJu&nWejf>^f`UjwPn3}ob1tR61g@LQ4!-mAJ3#r(9=Xb^ z6ulOwXKsl#Fq)GO5?WGh^PR zOk)L2tE=$+#ob-4zE7_U2^?yw=M~$Sq^&?MysP$xB{aS|<}X8s@!~2!ikdIbpr9Fi z2K>Ig-8?5jCJl8y3}wg__Ics57aK>qtAC@B#QiENlpf7={0jOLkn}XVRG8(R2GNU7 z*7d<>6q_WIP#C-8$P1>?&GLW7y2jC=;sk0!w1@i`pe~Tq3fh0^;fePWCfD;CYJ4e? zdVyPvm#|SMMpah&L%Z+fbTcQXA0;Cyh{c%8;N;AWY!$C0H{V{;T`aXJBTc5gFc9|e zcss5phs~XQUa1pCGTEwBK0dkrqhn7mP)~b2n$$Gf>pX5PCBwE7|7XH^K({gW*Dvqo z9g&PL+8E&ls`lo(@c50f@$sZ5F6r?O-u(QTfaMa_Z-A++C{TY~2h6)`U{ZK=IHhn~ zeP3T6*fI+ar4t=_WbpIPq!X?1K`EcJ)?5Du_8Mb-Sj&MCogs;$A;*_JJw46M5o?D$ zJU!9UypVbS=sInDW+rNV3gYy)>Az_5jkKD=C%kIa1TS0)@dWtqFjN6yZgj=O66{!hE_cgiiX0Uek6~7l`9vOn5gax1Uh3 zO6mU<05P$!>Av3H+f<)0$~CRiB6|U0Cn+Ln;0Ecr;)%85n*fPz+^8QoU}!PaQ@x#& zLzg~ti~f(-qFWELvO4A5p=G=LGG1W*%*49NB!T&&+v)TNA4XE%JTsL#VP2lpIc0EL z@;6*CcR(`_TU-JrcOYM)Umqo{@FgS?@A*JXhqu_ZaP-PE6fAHL;3eMq2VcT(p9SZ1 zG{6|+j4s+(Yzco?1DWfwaOVP>23IyF8c|8fAF$@Y*fI2FaGwPK3{?;VlP`uUpkzl~ zk8rpQTX$^JgNPitz%r=-S4r3Ula_(PKc(|8xcdLvT8@EPGJ2w|MBYl21#-AFQQ6DE zaf=Riz9Aq8u=!_N)P-J)bwjtwg*yR4fnK-v2zCEf zb0XZoto!^qS8!lx-P%O;I>M%m^12e$dVSp>3HB$kboZ?C29-56vvZ|vy>7%``e9(s z>+BLZj8-1Svh9{sB=v z&5aF@jM&TxW_n52ArmrAxyo}R7Jx}9tRogM6bju2>4AWTF(xjq{``{iH-EV+S-Nuj z@U+gHc~q4e%d0fjd6!@PEalEKTE?$x+tMidJnb`vXGi-6sn%YrVncl^OLdY2r`KnZ zQLBoI#!uV}FMcmybWiZJZOGDaZsRJrXyuzPIQXXDyCw7~Qk^5FGeg#~#Wgdsut=ta zqGr1?_}eYA{=nsuAk&ccjS=VGUX6_{O(Ieby1B`;o*%tnzYO~1)$7+`_gs{;KMn5N zUz+O-_=z^uy7XXFapd2{-^UbodLU=#ZL&)b>Q0bHo|u^rTwARhN>vw_f}9dFj`Q`e zH;7SD>;0LtIJb9y(oBMal7z-&cw8I{|B(4=(S^e<$BtnxChf8836mSjq)!&0hoNRj zwJtsknHx)Kp>c6#YPE9BW6`pY3&IvolrPj{%m5hh^fH&XbPvjvf8QDsx3jK++{H)z zm0wjG3Fga}*>3{U`nlke?2C#NczKf>II0Yjq=>R4leU)yv!`V=9le)QHggbGOMCfR zrm0T?bOM^=MH03F3t&VS>#b4IpumNhMbnEH-@(bwDtcR<0um+kyyoN(hsB%~)iBvI zZk3jXIl5@ECIiq^QEDF2?@G+GN>Y0)y45A|`sBJBuX|8q;Xt?iEfit2lYWQ0LIJ`q z2i^NdIeVc8whNfeoFw<5z%yRS^<}cULY`GH6binsySv<(igfD=mGXYCer6bMu}2{3v%Jx!|+Z1OeI|_>Aaqhkh(?1@K8E1WYLl zV;cjkNUWaJ?3gY6?%sbx`{aj)l_fKW^+%7&A71DF>E_4Bs{eMaC9>NqEEh5e2s8{f zR(k0Ygt|cZrLc6K9jZ~m2A*>FKg%DF@B4EN%Xm&WJiMGYQ*~n#9oNm zoRYR*P}AaEal1Jctp(AU9bz&2DT$Uv>d>L0v!{ywcvIl zYS-u}1}Y+Nt<%Qw^~EMBnhR_@uv>fvsf1-i7wF52~IW`atMPOk$(t zKahRK4`f#T_-=9F?nAGRb;O75=`Mt^BSBy%QpL3QNsGPEyWTjLn_zo?3)kKu z+7;kKz}AA7f9V@tf0mhBaQ3$p@$y6Jb&VUmJL1tKo;(>H;&ZoZ2SaGbhgJW!2o}r1 z7aYX!Ph*n|gSknQZQRLW6n;yO@-`;2^RW3Ra>4shTYHml3G5v7fL)R2wXnc z{92s8@^T+D`@CD;4Mn|XIg;r_+JqJZ{lc>f=#0N%(gwW(idWE1;|l5rkzom;UAr8H z90cMvLQ#r-s;Ky70Ys0{h#e5S8CDAw?0}LwulF64jok{yc^5Fa1iOTu04UhYeZT?( zWCSz{*v#WYNjjFSXbfE1HBQa@-t?(s^UBjo&a-&%_z5nLN#~^JE7Yxh%($~*V}oeF zhibzjSHG``?B%^^#y=0{UEwXO*q^F44#KdTT4n+pxHl3w9P88=0HGSk4dsk?MH+M? zBnPiZF*7rSCTBXbXxZAB^@fD}wA*bFX5|YPTeUMk=?Hio2-^XwZp{eaAi9UH+YaeU ze9jz8qxKr2ld0|$3^AMdV$RHKCLz(8ENvP1H-wi?a*{*u{IbF8Yr89s?;ag7^Y~(x zB)Q)ZE**NoE_g|?Vz99C`BtMY;03Cffc2r|*=Ae20QD@k4{z8Fy78B{@Qd5oeO+41 zltt00llTzPaL?!OvC<6bNpI>cYvp~zc4F;srk>SaV7b6G7|B(_m5Wcte+N7!yWB0i zo&2=KjPVw;FBt>GoYZ_&UOx8mUN7uLXx8%?#L1RDdbA7u?+W+#oPxF|L(eiDLJjFP zQ(R_{woy>em^!$>zfEF=I1xqj;oy`c-@;}HT<=IQk3d{n23V&Vm-0%0KBy>e2|geE zg?>)|41F@^9e5Kasc#B70>BHo8(VgVkU%Z&W*7l)3R7Iqz`(W`Ln;gvF&kQs5d^4A zVS)&azAoE-$kKc&OirNgo0TTD|M&se9y-xoo#g)T(WBH1@~x)pbf6alvwG~uURoi{qV@`(a$@!iBj(SWg@)-04( zfq~-~QUXIvYEZyiS_ovdy6n-{e_z(_4CN0Nv(17~!QaF}M<ZzZZT zu#bh^zS1+(TcBasceGZ_=I_j7LAZ5@$9=K(n)=5kl8Oi=fDJImpJ&y-F8AC303?R z?rquu-%cVYp}L2dAtCNBxNVBi=ZASVZ93`Z1|za6blIqtp#WWmNf(d8WPkr|-c!}x zAT}{G`svv--J9FiPDStS#?ECF*5RQJ26L*<6&kE-xNSy?*-PfALDXU;$yuqwG) z9cM)X+;eji0Js4&W@R}bMq`gX%lZhNRFzb9Rja=QIuFdYf55x~GBjj0e=i$im^M3` z1QFqqhjFnHNVD7D-kY91;nwpw;?biC3S){?N;9H*Wr>kii+vw{9~nr9n3zBU=|d}F zvnBQ7MX+Q0pRM>nc0>BhgZc!yiJ3!SP0*oduf^q0k`EB*msnHbbIhZ_(#y|-R(A9H zh^Bhuvam36v;-#dN&4R&!5Ed#o&N4+KIgBRRhaaD0NAU_#H z)ClR%)(m?htP+CJL@?8%>3jIr{{VdB!XFDl{^LcjolwkB6WD@HKOcz`pPQ2dj>4CE ztW#vywW^OFbDf6{-yM-!wQ?Ph(+J#P5)ASVj-t5S<}D?&WRejXuIvqF7qGw}t&v>4 z=F04T69;juA&1foE_y;jP6!v!`LfA?Kh_TI@=W7UevwI2UO&J?np(yeEW8OZjN(bFVOGi{YZXjrb%9YEvhbxRy@!t- zo5#LAy=Ey|s0=8i1K%6oTL#89E+JzT9u;(6me+cUeI6Ta0)w|hON`z>@iO)}=1(@C zOFSruwtGOLi;PE&PFN%dww+Q7Umg*dJfYQoznMB-@g5qA3;Tk?DRR|VnUy1i695e^lkkx4hlFWVBzgyRJ0@7(SD?w zl8^_8=`%cm!ubR20{}__%D(TZEwXWK*ZIE&$AQ*n<3Fq~xtKC$b>JYcef|3Oc6lEW zIx)R(HI2O?7t?vpZ8C~=yYVV&=WFn-@aesp)0v1fGjnzj)w=4*I~dT%QO0NDE?>`O zVM0YiZWz@H4E&3b1kJ}M_cOS42F!(jbI_r}y&dctn6f-cQwXK(&CL@)^c@mn6Lv8`!(xr-h44=zVELe3>6(7FC07KQ|2_Vp2)qOl>0^WcUM2) zOT?MaW+`7HD*{Jac@p)1FbciDue+r##?l0h8Z^1%KwkhxWS5^IFz`Ook>^!YI= zXl1O=pbABHwDij7&XYi6LrtI?C8rTv`4@i$JjT?U19sIAd*TF2Ll-(Orw*FtLrcQ@yW@3A(h<^j6K3^2(PAsy{sM88r$;TMcb1+Eij13u zCf>jR`kM~TF^pLdPO#`a>0@}|NOwYVOWg@(=2+x$`YG|fez<&3u={cH$bR7+FAjmK zHYCkC02@fFMTfMOUESH*hDpkB|HY-Hrpl+bhzogI&Uo@z_0cyr_R>in8f^Rr`zlc? z2@`xfya|GwseOGz(o-~|N!af-LNp4gUbsRaO~Hm4v}JUzf#c2-eS?EX(CAJ~XdsCq zj5bxW)j?ZCLzKI$K$ipn)>LLb>YS>D%^{~r>B3J2!2n?ylUlKgpx^7hTbInjqYn#6 z4!d6+&Y0aMDgLT8P$Lq=d+&+c?#fCYyncVSJd} zug!XiOfxceipCY4ZUcZ`v62I0Duz6Bn0_C#(^kioS36bbGkE#-?W2&ujZ|zm+yo&Y z#(Fw_8|it9xw0Y-?7KIQjz)tkrVFtKRY|$TdLEsx_#P}~BFya;AreHG$0szFNW$?s zeIdlRs3omf!ROA}jf@Oq!EgwgN!qol>e_%Et7Z3$!qA!ggamWM)|BSQPo(9z%C>Ee z`MY?`?Y+d<;%_w;gVjzAAIbNMXrL|cy0KL^F~W=b>)W?mm6ffB2JZ2#msC>=1STpW zAwe`8F5{S!#s^IlNNYRv$UVJfcNrWZi>&NYj z13<9$b37mR1vv5g)hnY_yA&@B4G^%lQkrp0R0N%oTp!yKi!G-pD{r6t$tLEg3C}s$ zufvp?Uh8Jo42$M6LAdm1q1jJj(0dwH+W?D+sw8t2EZq=ai;a%Hux6bhmO05pL(a-A zkH@6p7CS!4U=sNR|Hf-g_JSJcji}d|!Cae{x3kD9`s(d7t*KR-A^RxI;sihXnkk7l z4Rr!3qiR5RVo3Xl;n(yuVn!3-KHPOfLq1IO;TwSI_(F4n9n1K_!LhW|7087z5tu69 zhz-K7w?PL2#sT|)N=Ou=pc)$d1d_pJCZ6)+?IONOyuv36?A!1Ejkuzm;AC?(T{iv+3%-VPn}!&=6poU5@QJP;SgyQ{ayHMh02 z+^kGWutXEBxjfyJDr?vBr3*)B?#~~DZW=-^ZSRXhT-`5EpB{$X4~d3#aoj*|O{4?b z3>4~bGgL{JLqh0;+Tu}dn1B94@&R@O?obs9X8?#8PQ+0L?$oOI2+4}1$+ zul4Wm5T|3ll$RHx>~>u1)*c4ty{*f?B63CJqnV<1rl0x-9`YdLZ7x|bUC*DpLjD6j zg^172HkEiucSHegcoqf;UzG3{#)E}~vV)bBwn0WcqV!@z5sj5Jul1Tib~!tGPt-XB ze-Z~|U0N-IU3TeUV18{+g5%o-6)b6*4tNYkl}=Nbh>z=pTmZt=F+gQ_pOvWhDk_xZ z*C0H0 z`i+6~%KaZw^()AyG8Bk`yL#0$1%sEEwYB@~a@N1=xj0|?<)x{S(Mt^KLVViN@~)#p0TteV zVvYw7HbJz7N0xh0ui*N^fi*n?36Q9QTY+yWe=oXa&f5A@Syl$02=aS3Gx7FWEoEf zOniRO{PgJn&^sVC2#-*hk=pz@>nCtezZHVy8npDMRO=$@LXf2p{Cq&Uq@!~Ln2<=e zzK#yLvH?l;-X5l+oV;~UUT<4StKG@BlSWzjUER)3r}LqI-KQLc#A47o(qpV0iN=pX^ zxy50FoJc^u@oT=--OyXp-Qz4RE+)rHaRcC$@%-DjZ`$8dr(eCiu(IUbrzNi#&a-{p zyh6IXGv(|^m~E|%PQ=q|+u-z6(2^|A69|y%C27(#7^jK(E$~}cF@p8sgLQWS8z(bpYnt1_Vwb*C51eaBG3Fi%%utl>-Sldh8fPGA6gFuYiH3An9IvIe!$61AkZ1%D@e12Ve@kKd1_k zVO7M%pEos$Dk@su97geJ$Zx1rb1N&2wz1LsJ5zTJHQyV}O`uKzGr*+ zS*E6b9E7gP0Xn<8YKNfM)={Hcko+bZZdR99qt`Sht{NQ5%fkatdNJ_LC@{b#xPN&# zieKepiS3bN#}33Ed;j4BhMl@GbPUla5MV?@C>61P!XRqTsNcvt68u4|K!llxSLHMD zNqqAJ`bSV@cOB}A^7Fe;0z(oB37k&VFl>vU9!7r)b(%wL@80Jy-rBvJm5XLpmQi1y zdneb6tCzTBIe623`@H+UC{_7Vul|jZk)sLizGKSCpQOGGG9s|~B(R1|VBKz+`gyV_ zs|q6}iHi$LYkG*yuprRhcs=(azKi>3RQte|wqK<-2!1 z0p0G|b2<8hfEgzeIx2olDT(|zZovV+8ja{&bhhHYt~6qA0Gea#HO3*jH7)aU9p}U) zb$)+eJ1y-0lWy=uW0jB7$>Ndw$*o)Kv9V%EUyx={Uau5(g@3*3tyUVO_hXnkV3|83 z!%gMs^@N;ejkLSs;VwRCfJ2(iH>Bjx_J#%?Ie?u4NW#$-Wx|SoLe=m@|d* z3f$V{OqFnRP~}2*Jt|m^Y8Kyvd}4KaM*%3C54rTK25H1{NsJE>^>p~c77dVGe@3( zsbHYHm)aU%wO16=H#0-67ipLe77x&##E$uyz#`lS>^C&J9kGs@+Di4CfN=PbE5-zX zKtsF*a-CbrExDu(>U1d>NJdl0iZxmv7URzFC5-U%f+lCBZHZN zcHx%R!DjCf)(kc3AFFn+(H|L+s>V(s>u=9)J-mP1=1`)yhgU})J%JH( z?-6moWCvg0^0KmRw)+jm!B%0k5g$g{kR{Xh_jhYGwXGf=Z4WE@XI!h!*;e5hx1#(h zwJKuSwRv+)N!DhQBP&;!+GtsLB_*ElsmM7le9XY&1EF04F2>O=wT}dMF-5Sn%`P(t z>+sJ{Jz2t|dDGl{42cR#^5jdG^iW^IK%;dLYp9TvSRgG1)QH`(U3v>0{l3+>cR0nu zYbdowK0mmFLygJ{b4w9T;B&B`*3i^6?&?*!CFKilkUyXh-EYtUcVqlHhO;NaJFQWE zp&sSrr!IOc=J*xk!H9Klpy*xC57hQxT3C)+A0bcI$EwBInyOYt#my+s6)KloN#|7j z*fBrr&{x-m8bdCz+>Hk4mLW1jd>=w}&|0Yl1Ru2rz;F_2jp33liuEr30e)N3b_w%w z=<0{Y#=hL#O_d-E^#PW_9l!jB|1pwF?Otfc1b za~U9_7-7RxusWhQc@UeD8~VKwU~o`4_}erQd_cM2%0EusbFVrhgO7C6u}HiwrY->V zAg<8~CPepMzCav?)T2T$nW0!kuZhE8rUJTT{$1y6P+@_AIxE+b2yq1p8-;XZv>|%U zBC@`5hwyLU)#d5X9-903Wn1m39mI70?u%yIcp}#sE$~>1&qSdUmr?kBJ3rquJzbWO zk>V!NCr3myMs8QWs-iNr_2bgo-1L`yo}VDD3NK<%odsH%Um4%#kCFenVbml9S>ecJ zm%c&DR~UH;jG}qa@HgxFh(S_M1@yIOVw%Gf(gLFI$B#QW#!6U*N{|g#F4bZhx%S4s zF3_qyY&nK0F)Aiz|7oE$k+ft~j(W5+EFB+jf{Y*0vLqdm?@E#20wgggAUiGFw|%gi zU2#y*vl7RSE(*d{#mFi?XcVl|fzv_?-abAQp_pLPqZKKQj%JuSilW2(^p?3;CdZSI zbx?$c=$hboQS^aFpXKV9TLm1M{zSdA2w*opAw_6*c6KsP-j+p??5${_M2jS+6p1PLY zjDZz`oTvxTN6vEMchg<}9YF*%7>4Z6f^Niun-_=6xa90@el&`Nn;l}eRfMzUG|qqv zqcksOiOG>wnJq?mb3x^$yGQ~B1s7EQfzv8CUSExh`V5xA*!T*bJK}9zT$}}`4=sUd zR6xOi_b_SD_4eNv0MgFRWaAo0De~O4F$Ms?ud|VN?@l6?r=wmJmhsW0>2>VEiAN4zZTI^wt zRMF$d8I4X-Z#z^Uf_T7G7Z#hVVlEQkHk!nLc!UlnYQa9Eg~b0wqJc-+^0$3-!j@B* zN%@K2Fiq~zSZ}@N=Ug_uCRS~OZ!Pgv*hZ;*1KYJla!h~>fnPuP@c8bRZ={65oM3K9 zMvVajO-;A<>=q7ZEwYn2sK|u!#)va&r>$%XWPDip$cx#O z@IO$PqqbUrvV4f0AHR%RUi80T=DcM>6&SRP)kTPuFi^8>$BOexRpjvR2Zb|Px!yL- zzUs#|o{hSVN(+yJgTJL-UhIS-miEBA4VnVPv0_XEAzHoMp8T|-K?{r4?j7tX5Y%h3 z%!DQ)Cr3D<3F~X3uj(BfDl)hmUvxpYIC|UWu4C~o#u5(z4T&(Zx`BTc2&9Q1P8BznwY>MZzp*&vw%&4 z^Uo*bVZ_pVnA1K6KR}EXs>O!@CxZDaHY9Gw|G?ThZCqaTbM0YLJ83SOyAHq`a|s~P z*vLq7YATc(W8ZNL?d2*lI1#;Gmj+j`5`f9}?FiQ$h?!R+BS*f~Rx*6si9$0F%o*q} z4*p0ci0F3kU3IHVx4K{%wS;a6O&}Z;<{=0F?FETj7p5BF>e)E>i)er=XjhRHDg^Va zbBs9P2Fv14AytPrm1s_* zuhanTLyJ$zLW(?5Xq{9#jtHq_StpPR+DmYUx7K8%5DNXvdF>mpDge@ov$!jZ_b$Jv zFIF<=0BWXJ{s)5ufdK(S;>9Kt|vZ#@Dk>YU=PDl&+z`*-?ML<^h0q5gqtlaL2r z>e`lC;qlda@7|c7@LF&HoWBPdNJxyymFvZMQBYLZgG^niyt zjln3OK@9HX`vgx0asz4Uh@0CN5akegdgp(iM-QI|I3+!S(vxz258xisNcM0I zX=V?E>t8kTCP4&8f*mT(#EQ60Dw8->2#2};xX1~I@U(!!0m8wqi6Ee~$UGE6LPA>R z+eE`z*=|%}+=YPvyM~tGMg0oU0_?9AlJG$q6j|)Y+-cIWYiLP^*8Pjy(fAKQ*#oN~ z8n)IiC&E8Q8D1ZNw>e1m1EvUK)A5*|wko!!2t^?=dSf?GBX>6oMJ58Zrsc65{H6nv z%05_+jlz&N6weeI55O|3Gi_U8D?Tf02{O56TU>L{bYB<>ENO`c;N`|-Z^z;xKl<;P zm>*{MC%6HCfn+6a78HztqlM~0BrOOA1+sRJ-n|Aq?TTU6fdMFS>-YcF5>kdyJO6nx!;T6jf_X+)%F2ELgZGA(YSpd)atb^>()<974l;H|7B$|L9fuedg zq_`9X<*c_Mj*`)Z+yZoLnn8a`09s+NMfB`B{53H#ZAgqbu-H7a&<5c?xJx`HxVyQ7 z!p4Kyq8ZAn%^;kspV8`q8}(tikoxWt`6(&>=Tqi3qsKO@tHkUytboE|QJ|ycIlUN$ zPbmvZBUz9j3l5a3d{j|@V=jDj6w`*k3`)*3XO#8KkqGvIk3`nS6qi8U0oNlH8b&DA zkf)Fh5^k4$5fC4a0AzK|{tdNyPEmM7!TP@4)_Kt7kc-3N{`(8p5V9r|IMS9O)HF2f zv8NOHO=KQBYw{5*XTRRUM@A+4!?)Ux&*fX&n>Sf1UIH50TBfF6Ff0bIDYB{fhxveS zHMxVivhrg`2PNt1gyHz{acGUi%Ig9J#I2qU{(@>(can60M#RG#UqrlByIQm>p{+Vp z(lW&@I5I%p!N%qqcI^Slgmnu*5NJHmfjXjl3vw<_{SqK(v~O=b0W&yB!6rqpevqGG zj6%-w$ua^QQrNwM0<+T@2D|WlP@es}h5=J(%5{Tlf6vaA^a`?|RxLwkwfcM$*4@Gz z=bep4oCOAmii?X|9J^scjyFm<(e+zOSj<@N2W6I-Rnej_J{%w=_C+xq3?#RE6OOwV zyIw4r`5wFwPN8QG_>08IU=j_%p&r)=%&uWrk608U$ja&sBXXqV^%1w=v-1k;k4N>a z!r#UNS4&hqhO!B@5!409h@`;AkX*LDS?s%-891RLH+T?0+@-j4Cuv{}a8oo!7mor# zwj;LdkCd#<{m|vBD16CX={S0a4-X)r;d2oL3gUr!iGm4pZG+JN-n>|vj&5o+Z79+< zsOlXcLtwFteCrZ$4Kq97jNFzsnjfwBwJSLzRVYC#VE?{-ZxCAzWUzENB=HH|aoAYk zY-8{U1MKh^{fsGqnSjSNaRRN+zJ9&2%E*u{j1H7=a&}HgOVjrn@~zG@2tg4vHqKoH zNQN>L^)PVWg-QtJ5{~%6S2OTdpg=y_F9oJAZEbs zObcYXmRUJBZrsGfL!pI9Q{?eQ|3h_wDfYt>`!Z}cw--nL&#^ENVe@wuOX-Dild0xP zC+ZrEC-qxqF;U+@d51`b`5=54$FDh}>3FIf#6P-3Dr|c=M<5jh8k%9WNGO><8R+Q? zn*zq^(%LHS-zP#r1<_BDL(UKhk$udJBd!>LjG;KpG6 zr3r2nrURhh;ZgDAOE0lDGn)f>~9;{kh zQ40lULq(bpF9X z*ZS|EC$UeO#@o_*x zQqluV4~OkmLfG_WVCymf1_hiQ>X7emv!^B}<;qPgEZE2qPKK>V@0OOD+_i;ty=d5g zGxSQtHUK?fM^nht4AbqTC3hF>tGkOi%XmS|JsSm^{h!a&q4_g5p91_9*?2RLaUB}q zPIV_MvEKO{#S`>wclL0e1^NQ})VjJlfP(nBt!(=sr^tj^70T15r%#7C#EKG9HXp!V z)hawsmr~t?mQY$CBnc-)uBWF{XrXnRpe~dGY(zs?RQ<(c$B{;<4gEA?D;z6qwR2n0m=!*2j)l{;jG)5C{93nfWpMT!^R_yO`CGaSFVrVO1zpc7tU)x zhKF%EjfQ&Oy)z?@Lq+^WVshrZpixq)kdI>V{QY`N&R~Lz)av{AZ2No|j}wFwz6J&^ zY(6a&hmefF(NJIi2Yx&JUIW(?P9++@-ms_W#>cj|Gzy+?J3CLqB@tC&UZo^NUSeWE zk1;)x19;Nq7V-gc4Gssm^AKl2f^R)7xpckS zUd~o3rw23M)S$k}^-dsF$?=8>9Z>L!n4=G)0@gG(IQYP;cbD1Vt!Kl&ICRKAZ=K|U zrw&g{c)&(3H5KU`BhNMP%TR|l3>Ac!|AGJGL>H#6ZwEX^+Gk6Ye);?va^k{?9X#>x zcc)6r?jEo_E8 zxY1}Au`XtAdGQo#k^k4(70iYEnKLpn3MZEd+g?N&`sN}?K=N+?uRkhMaKf+PJj2nm## zK=tM#_4tcGKD0_y4gS67CG8a-05br?LK_PA!1yplw;*H&q5m>N>n~Pw4w$pi!@Qt; zBoST)?(RQPX6wp1-m-QJj(0WL8^5C~TaR2`4Sf(Y*2`_YVq0;U#A0}n{s-$@&J7?Q zB(A|+mw0kM{SE3UvP+Ov5hwu(u3{}B$Q|nr{ZIP9w5Q0TyZmxE~6gs$87Hqh<`9eSH zT=9mibfb4)4Y&Vaf4N^IPRx&~DHZ~nGn^D;haKyG-0WX6JKK5O(jEzPh?6$)9(-os zwRJL%fPRFtI3hs^hCPV;gSt8j3n3IP?hmMY7#NxyIOM$ps1v`E z8^@YlbZ*PRb*LkTp?%Ddz-F zlF$MQkKiz-+@YquC(y>u4t65bUXoO`)K^nbRe*|5(&?X?dOP@Q!5_7B?9Z7$e{QQ3 z{XjwVKc%qcZ=G4x8dRuD5ac~&X^V^8rp`;r$?g`xIQ*GsnZif|q{#v%AMW7(15Bu2 zTfLENMG=a&Ra)$e8YJO{Y6swsf!6Xn{seRn08ir`A0z1?kDop=r)~ti02qNp{UGEI zu$SXuXFmnMV4m$qS`-UyAyDu&J}UW&B2H%}QqS zRr{V-Pvw2mqH5|HyW)qoi-Dbl+6uH1%1<0X5RLKQ$9**bGe5x7!AmYd^ACIvATgNt zEt@y9eQVJ&2aw zKVfL*C|4*n`rI6PhQE(u=_|T0I%(E7H}?Gd)_~e+06jduk7sBgc}nto&d{ixU~j zy%1mC^o(D+0_Poh3STfy4;&1qXNS{dT3VXc5udOB-u)Pbi5@NN(J^!i@rbzMyLSy< zDgO?@+Ee`Zd!SU?q~vDlx*gow&)xry1|^@&#s5y45l)(P1yC~u>FqKy3;N~-rA0ecT2g(ZoRdADn2n7pU_|*e20AjhI2kI8_bE2>B=AAnq3(Rjp zGeqwAY8y6Up9a_ou`i%X^oW<{$*mvH&R~e3JpbXt)95Qv*P|{14D0#jVIg+CK~;vz zRlMHJ-F?g1BFwt>*P-r*2pgR+<=1>oI&`H-oqpclkohBePC$?p4)o>C*r$PLcA6^v?il_VIBJ;CDa*?r$CMB1cC=9acCzbG zAJ~SRv|KZ%>&gM*nxx|3>3LUi0*TUa35ndCqXIHT1hT_r1Zkb|8Xh%2p_lUc+M0yK z0uGAiqVV!68hz7!`@V-fM_+^4obHZq-_DboPSRS6o&vu~{2w?DvG(AXupyiteCAsp zky`*15Cuh~`ZoB4EMRW_Zx~{z*jKb7yB}c@-ZgiS#2bT!$^C?wTji+JyL}NYgK~l_ z6o`OW#a5r=vL8iCpbkZ)VD#SRWpTRkfg_{$;%D!4ph5uC(()GUyUV@V1AfuDz!W=R zp532{f@T@yFNG88`|{Nf1wA-#U4^_7li@J>BCc#w*>|(7Y64xoglPw2-p!jg(Y(V% z3MU~U79vVu$$74rCxBIM%O3#w{F=ebc>Ab*D#)x0>{ZJuYG+)t=%KBoaO)E&VcjPO z!P>{mLcT?VCq^!~gVF#RNK8PEhpa7Sqrk*E!LFEK_t)(Hqb%B|Pb)6Ed!Ih74&f_u zhKtJ(Ia~1pDDK{cIZ#l%P%-2`zTSFTDRq^>@PAcz?f*>ge|*Z7L0{N=g?c zWumE=OJeOS(S=iI%cW36E?pi)xjdY*SQjFexfLZgGmes|qs+b(;xti&B8hGKK6lRJ z`$v5D%je-?m(S&Wd0n2Dm=!4^{|%9NuqrB8WR92*@(u!mD?ILcRx>)E@F4-ZtQi3% z!H{gFh!=h(Wlhf15A)!Cc&tQB+WI&g`edC|z44Kd0eW@_d}xN7TaDP%(lTvJg&4h} zcYS?3$_l)NoTsu^X29N|jO2P!DHh3-^Y~LT%c(lkhRQ?kv(82ju9~4mnfofZ_Ah_w zO|Kl^L^H>fm94$}hirGczn}h#y}R@477`0G8acaL<{#v&-NvTfojEPbG->&vx0T04 z)e}=+UXOnY9UhC&HCNn{M^UE)h~`=2rBqe2_96Y0n~Htjp5Zv{%m|sm~$>O@Xw`7mYfp#_%c<9Pk+Yt&vR847#q1-kF~%)>T4Z`FPJisEeNVS=nwsq^s86zMCWLR(J8c0 zO1baek2Th3HOZ%U1=&n=`?$H?))|MUqTSQcdP?%$8FTxe;&W~^Fw_@vol$0S))+_E zMLKeMb(MMGY7-M;%I4upcO~pD5iH`>B9;EqQVaBphu&mVyn{v-cKRtooFy&S%iZf0w!{>4{79_8 zz*VNEn?rgN-ueT04FoeL#ZAGJp9qqs-4^RS6V1l*0A$v-a!)JnKeM$Pk(5yhFlH|$ ziPU@XgBDo}M$2UlC@`#Dmn`oAK0Ll2Xvf;RK;^FrG}MxxW>a~&xfjad4FbOjX*-Rm zukVg!8HEHDC1RS|*l)hDQ$_%X2CyA3M^Am4SozHhJa@dH`h+wD>Y&R_h2f`q_3SVN zB(65z42HC|^%3HBrq8J-gD3m?`cR@@5B(p;eZoG^|BZ|&;gp@n-Nrp9a1y=N?mw97 z4vvmom~1!oU2pT*&-RGZRS%VEhqM|U zduc$xAR2$j&8QaEp25K*pdKii>8rg@NEz;y8wlpO%laYGHg-k>wxDh8X$Ace%t_g& z?I3xy?hA2-o$ap3dKi8xe0J5$30m=L-kR+R@D5P2Isv_h%kF;-q&JrA{PQ zMp-@!Mj}M}qsCGdat#%nY*;W*1nHgcr>oGnP_g@fXAuhJIBBfyX^#znKi|3Q_{JEb zha6N`jO-gQWxRhMkcC8uwIc}Fasrwk-a?G#gyF+#)uAPOUp)8l&5v54dyxV&iG0E2 zcGA4LbG15mI7?hIsMhJC?LSk>DGhnTbRr%iHja;lu@y>8#r8P>IkOx9z+ zhIO9n;Gqjv43#1Lg9mpvmm+8G*QVQ>>6RRNa>*;OV#$Xflr{XPE^BCNo-4b%%q!tJ z`8=8m7^_G|7)<7ZcH?EsKy+jjZU{#1Jc@H%?pMYAxXLSW*~=sU#?6#`tdu2frrjwk z+we7Xv__Mx9+1u_8R-x^4l=P^9xg+1@C`spdU~*YTKs{#)x&859|OLcY?6Z75=CA33NUx1XVUT$(> z8AbY4OMsI01uDyT$`IXQR7VX!R4sh;R!4nW9ml7bDKh-!+k0<9ng+*F5d50GNi^M>)0{`k2iM2 z8AOI)K#CCf@OV7j-Q~+!D8aL<>r&lckk2D+%;N+;5&|kL5-9;=U@#c{&o{z%S*GJj zFh9jM7)NAFH+$at^5ro|bxPY#TS)ASu%!PKxksn}u@hrluEeIpmH~)eg>oNgh93cl zLX+VZOeqA1VPn**oj`n**qy|(SW@F{X3JY(V31U4P1J(*0=45u;qM$y@0aj|u5e&} z?v*|*?;PTC=hJICzdI=~{mw=Yj73OI-EE6R-`@209*#N;w$MVeeaBkY4_*(da_d`6 z;Ym=V&0Okgt`Rn>Su;GIf8{rmi?wdv-T}emYSnk>(uLXR=t|pmJ1~uyzVxW=TG&Pf zxhw$JZ%b@ZYW)w8G*_?2)#Lj%ogo&>8C6Q}OnT z1`#F*t>EE?DXYT$;Q1L6wUo^mP|$BgLD%Z03r~^`*F874HE@LZ>mvD5YIhN9uZv4k z9LCqZf$Iphqp|D!gJT9itMSDPv(>AaOlQ=};M9?lmImt7_Q6>--V%`e%aB@JYXm5! z0OyH=O58#|%spM#9r)33UuF1xuyDY10xlCx64dem#&6m(>J$`IJQ1ZyxU%wJVNXu~ zeet8Ji|3~Di^4^3ukDZCWNjUVPoN78UYCk&Z{dvQu$R_z4sAds? z(5(Z9jy9xQm|CQ#;+3E2&!);+*3Qd8HWSY)x&W3|Nr1;vTK)D*PN})P+Shd N!QO>dWOv}~e*seU`5*uQ literal 0 HcmV?d00001 diff --git a/07_RegressionModels/02_04_residuals_variation_diagnostics/fig/unnamed-chunk-2-1.png b/07_RegressionModels/02_04_residuals_variation_diagnostics/fig/unnamed-chunk-2-1.png new file mode 100644 index 0000000000000000000000000000000000000000..6418e8f0d29d03a918e3c52013eb06e1ed7df63c GIT binary patch literal 63716 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

I+rN16BFuXb5qj4@20jFX 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 SpEi?Ye$ej7zMD4Q3I76q*J8Z@ literal 0 HcmV?d00001 diff --git a/07_RegressionModels/02_04_residuals_variation_diagnostics/fig/unnamed-chunk-3-1.png b/07_RegressionModels/02_04_residuals_variation_diagnostics/fig/unnamed-chunk-3-1.png new file mode 100644 index 0000000000000000000000000000000000000000..f1f9cc8cf26d3aec21552c4f4dc5867ef3533fba GIT binary patch literal 76471 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 literal 0 HcmV?d00001 diff --git a/07_RegressionModels/02_04_residuals_variation_diagnostics/fig/unnamed-chunk-5-1.png b/07_RegressionModels/02_04_residuals_variation_diagnostics/fig/unnamed-chunk-5-1.png new file mode 100644 index 0000000000000000000000000000000000000000..f24b9b88bdc4677dd018512d75e1557b53083f0a GIT binary patch literal 71620 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

wC!NAe}YjffBoKv6JyKUQ9Jt<>zjG8gy_i*yC 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 GLjMmWL_1Od literal 0 HcmV?d00001 diff --git a/07_RegressionModels/02_04_residuals_variation_diagnostics/fig/unnamed-chunk-7-1.png b/07_RegressionModels/02_04_residuals_variation_diagnostics/fig/unnamed-chunk-7-1.png new file mode 100644 index 0000000000000000000000000000000000000000..548321efc91555fa955dc6f27fd397a595fa133b GIT binary patch literal 53876 zcmeFXRZyHy^esAr1b6qrf?KfQgIjR-;10nZ1_>^M26uP2AOV8AJA~jK+~M&1pSo4| z`PQxTbRPPlzv|xIyLb2cy7yWU%8Jrx$i&D1002!^MnV+;fCc?m5MkfHoK)ZHzE=Rs zU(_Yvt3V(S1_lNe78VW;4jvx>L~%pFVx! zmeS`7<9MA3s08fPjFYprDYDkg%|@h=>Rn3>Fm?6%!K^7Z;b1 zkdTy=l#-H?mX?;0k&%^^m6MZ`mzV$Y<%@!Xf}*0Ll9H0Lva*VbimIxrnwpxry1Isj zhNh;bmX?;bwziIrj;^k*o}Qk*zP^EhfuW(Hk&)5YuV0OgjZI8UOifMA%*@Qq%`Ge} zEG;dqtgNi9t!->gwv|=H~A1?&0C# z>FMd^<>l?|?c?L)>+9?1=jZS59}o}#fj|NS1A~Hsf`fxYLPEZO{~j6|8Wt879v&VM z5fK>~85I>39UUDL6B8R78y6P`g+k-w;}a4R5)%`Xl9G~>lT%Vse*E~6nwpxHmX@BL zo{^D}nVFfDm6e^Hos*N3o12@LmzSTPUr&CzrTNAU|?`?aA;^~czAeZWMp)7bZl&Fe0+Rj zVq$V~a%yU7dU|?hW@dJFc5ZHNetv#oVPSD`acOC3d3kwdWo31Bb!}~JeSLjnV`Fo3 z^Ut3@TU%Ry|Nhlqo)z$U&_07%A?d|Q|-QE5D{lmk<+9>=+uPq-1Hbn( zfb>m9#{~c&@BOa;9j4rb0RRv{Rzg(WGxH=1;VW+c>Of9sioBAH3`}6iluy`{56&T3 zydf?;7FM!@C{Prvf~x{n1~Vg4;VY+8y-M~6!52li!WGhi_cE5(f3DHCH28RAV8C3_ zw{>=|r>!qPoL=9-zaOL-T!(9TM5OgGYzQKf6Ab_h`>zauispAbKtd**8W;}6l!n2i zq>P0FiHVUSfkQ$*|KEoHAD5?v1!Tk(hhEdYVmb)5l57|kK9piu>`%awKjFTa5tYK+rmDnQonaw`*zOo)bEYxXkP}i49pZl>3GEz$w*U ze&$7-SJ}iO^lg1D(ILs%$j+M7@AJIQLr=qNmXsm^i*q{S`^W~#y-6{DKj)tjhqt!G zQF!wqqkIuMlo}rFm-=i2s?z+N@OE+BSa~)>AOUdpIV{Jmwkzz>pfuvM$9U2XZe`|F z`k&bnfuAkJUXLRcUo)lfjhV3^YdpmKsYf2Vi9^utfzliY^P)eHg*IT;^&4xIz!-8L z$;s81LRZ756aA7GBEw{jb~sQ=L}lf8ZG`%O%IzuRUuW_uQoW`Lw1dJo59*Mg*D6ItqK z+JJ=~2N6X*#1>E3=$1+cHLxZFEaCRL8sn#J(!u3@L!W#L7pmO*+ai~KUWj(P%G zp-cC`uMl5qvToRp?f4K4bZFb zevg>L$`aS7%2(ayqP<`jH73cAO@_l&Oz^HVF{;&3w8t5e((?haYCV^J#EI|FAVc5s z|34x)c!0ZfYF<|JcpHVR^$lH_F{(eZxjIeD-ra6Gnz7M6Z?>P9F8H2rjA=VBb^6&& zo8R3ko$pTHtnak117(vMIlYyv^n!FDK9_%;FTs$pvVKL09cT3?^p>z1pfzzU^vh_G{S*kFyCPk1`~+*4w=AkK*&3M z0we&v?@;>QW9uDO|6kqOMIp~!l;_tanuR(7&J?6U(w0_br0v$P3+Uq=z000rObeqK zS7(~MMhlTQzoiyAf|XbO=FO+qJ5PUWFYZ}Mw0d|*N#410H@Y|y{1Vg(7vSm?dQS6b zY2WhLZX5lwP6&Rj1)ZA-lwuv{3r5eGwi}_Njg4v}*!1gCv6&haVjYU=kxSV;^yQFR zq&uL3^uDrXYt@_k_zmZkU?v|QU`DO8WJI&98#ie)^JMV;#;;I-p^T;nV}_%4gArDJwmU7myc7rkH+)?rKSMUDb6Jyww}rT{`9$5m7WB_v^v zt!>4PQ9E7A�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 E0Q1|ScmMzZ literal 0 HcmV?d00001 diff --git a/07_RegressionModels/02_04_residuals_variation_diagnostics/index.Rmd b/07_RegressionModels/02_04_residuals_variation_diagnostics/index.Rmd index b1fead2bb..e233e74d0 100644 --- a/07_RegressionModels/02_04_residuals_variation_diagnostics/index.Rmd +++ b/07_RegressionModels/02_04_residuals_variation_diagnostics/index.Rmd @@ -1,163 +1,164 @@ ---- -title : Residuals, diagnostics, variation -subtitle : Regression -author : Brian Caffo, Jeff Leek, Roger Peng -job : Johns Hopkins Bloomberg School of Public Health -logo : bloomberg_shield.png -framework : io2012 # {io2012, html5slides, shower, dzslides, ...} -highlighter : highlight.js # {highlight.js, prettify, highlight} -hitheme : tomorrow # -url: - lib: ../../librariesNew - assets: ../../assets -widgets : [mathjax] # {mathjax, quiz, bootstrap} -mode : selfcontained # {standalone, draft} ---- -```{r setup, cache = F, echo = F, message = F, warning = F, tidy = F, results='hide'} -# make this an external chunk that can be included in any file -options(width = 100) -opts_chunk$set(message = F, error = F, warning = F, comment = NA, fig.align = 'center', dpi = 100, tidy = F, cache.path = '.cache/', fig.path = 'fig/') - -options(xtable.type = 'html') -knit_hooks$set(inline = function(x) { - if(is.numeric(x)) { - round(x, getOption('digits')) - } else { - paste(as.character(x), collapse = ', ') - } -}) -knit_hooks$set(plot = knitr:::hook_plot_html) -runif(1) -``` -## The linear model -* Specified as $Y_i = \sum_{k=1}^p X_{ik} \beta_j + \epsilon_{i}$ -* We'll also assume here that $\epsilon_i \stackrel{iid}{\sim} N(0, \sigma^2)$ -* Define the residuals as -$e_i = Y_i - \hat Y_i = Y_i - \sum_{k=1}^p X_{ik} \hat \beta_j$ -* Our estimate of residual variation is $\hat \sigma^2 = \frac{\sum_{i=1}^n e_i^2}{n-p}$, the $n-p$ so that $E[\hat \sigma^2] = \sigma^2$ - ---- -```{r, fig.height = 5, fig.width = 5} -data(swiss); par(mfrow = c(2, 2)) -fit <- lm(Fertility ~ . , data = swiss); plot(fit) -``` - ---- -## Influential, high leverage and outlying points -```{r, fig.height = 5, fig.width=5, echo = FALSE, results='hide'} -n <- 100; x <- rnorm(n); y <- x + rnorm(n, sd = .3) -plot(c(-3, 6), c(-3, 6), type = "n", frame = FALSE, xlab = "X", ylab = "Y") -abline(lm(y ~ x), lwd = 2) -points(x, y, cex = 2, bg = "lightblue", col = "black", pch = 21) -points(0, 0, cex = 2, bg = "darkorange", col = "black", pch = 21) -points(0, 5, cex = 2, bg = "darkorange", col = "black", pch = 21) -points(5, 5, cex = 2, bg = "darkorange", col = "black", pch = 21) -points(5, 0, cex = 2, bg = "darkorange", col = "black", pch = 21) -``` - ---- -## Summary of the plot -Calling a point an outlier is vague. - * Outliers can be the result of spurious or real processes. - * Outliers can have varying degrees of influence. - * Outliers can conform to the regression relationship (i.e being marginally outlying in X or Y, but not outlying given the regression relationship). -* Upper left hand point has low leverage, low influence, outlies in a way not conforming to the regression relationship. -* Lower left hand point has low leverage, low influence and is not to be an outlier in any sense. -* Upper right hand point has high leverage, but chooses not to extert it and thus would have low actual influence by conforming to the regresison relationship of the other points. -* Lower right hand point has high leverage and would exert it if it were included in the fit. - ---- -## Influence measures -* Do `?influence.measures` to see the full suite of influence measures in stats. The measures include - * `rstandard` - standardized residuals, residuals divided by their standard deviations) - * `rstudent` - standardized residuals, residuals divided by their standard deviations, where the ith data point was deleted in the calculation of the standard deviation for the residual to follow a t distribution - * `hatvalues` - measures of leverage - * `dffits` - change in the predicted response when the $i^{th}$ point is deleted in fitting the model. - * `dfbetas` - change in individual coefficients when the $i^{th}$ point is deleted in fitting the model. - * `cooks.distance` - overall change in the coefficients when the $i^{th}$ point is deleted. - * `resid` - returns the ordinary residuals - * `resid(fit) / (1 - hatvalues(fit))` where `fit` is the linear model fit returns the PRESS residuals, i.e. the leave one out cross validation residuals - the difference in the response and the predicted response at data point $i$, where it was not included in the model fitting. - ---- -## How do I use all of these things? -* Be wary of simplistic rules for diagnostic plots and measures. The use of these tools is context specific. It's better to understand what they are trying to accomplish and use them judiciously. -* Not all of the measures have meaningful absolute scales. You can look at them relative to the values across the data. -* They probe your data in different ways to diagnose different problems. -* Patterns in your residual plots generally indicate some poor aspect of model fit. These can include: - * Heteroskedasticity (non constant variance). - * Missing model terms. - * Temporal patterns (plot residuals versus collection order). -* Residual QQ plots investigate normality of the errors. -* Leverage measures (hat values) can be useful for diagnosing data entry errors. -* Influence measures get to the bottom line, 'how does deleting or including this point impact a particular aspect of the model'. - ---- -## Case 1 -```{r, fig.height=5, fig.width=5, echo=FALSE} -x <- c(10, rnorm(n)); y <- c(10, c(rnorm(n))) -plot(x, y, frame = FALSE, cex = 2, pch = 21, bg = "lightblue", col = "black") -abline(lm(y ~ x)) -``` - ---- -## The code -``` -n <- 100; x <- c(10, rnorm(n)); y <- c(10, c(rnorm(n))) -plot(x, y, frame = FALSE, cex = 2, pch = 21, bg = "lightblue", col = "black") -abline(lm(y ~ x)) -``` -* The point `c(10, 10)` has created a strong regression relationship where there shouldn't be one. - ---- -## Showing a couple of the diagnostic values -```{r} -fit <- lm(y ~ x) -round(dfbetas(fit)[1 : 10, 2], 3) -round(hatvalues(fit)[1 : 10], 3) -``` - ---- -## Case 2 -```{r, fig.height=5, fig.width=5, echo=FALSE} -x <- rnorm(n); y <- x + rnorm(n, sd = .3) -x <- c(5, x); y <- c(5, y) -plot(x, y, frame = FALSE, cex = 2, pch = 21, bg = "lightblue", col = "black") -fit2 <- lm(y ~ x) -abline(fit2) -``` - ---- -## Looking at some of the diagnostics -```{r, echo = TRUE} -round(dfbetas(fit2)[1 : 10, 2], 3) -round(hatvalues(fit2)[1 : 10], 3) -``` - ---- -## Example described by Stefanski TAS 2007 Vol 61. -```{r, fig.height=4, fig.width=4} -## Don't everyone hit this server at once. Read the paper first. -dat <- read.table('http://www4.stat.ncsu.edu/~stefanski/NSF_Supported/Hidden_Images/orly_owl_files/orly_owl_Lin_4p_5_flat.txt', header = FALSE) -pairs(dat) -``` - ---- -## Got our P-values, should we bother to do a residual plot? -```{r} -summary(lm(V1 ~ . -1, data = dat))$coef -``` - ---- -## Residual plot -### P-values significant, O RLY? -```{r, fig.height=4, fig.width=4, echo = TRUE} -fit <- lm(V1 ~ . - 1, data = dat); plot(predict(fit), resid(fit), pch = '.') -``` - ---- -## Back to the Swiss data -```{r, fig.height = 5, fig.width = 5, echo=FALSE} -data(swiss); par(mfrow = c(2, 2)) -fit <- lm(Fertility ~ . , data = swiss); plot(fit) -``` - +--- +title : Residuals, diagnostics, variation +subtitle : Regression +author : Brian Caffo, Jeff Leek, Roger Peng +job : Johns Hopkins Bloomberg School of Public Health +logo : bloomberg_shield.png +framework : io2012 # {io2012, html5slides, shower, dzslides, ...} +highlighter : highlight.js # {highlight.js, prettify, highlight} +hitheme : tomorrow # +url: + lib: ../../librariesNew + assets: ../../assets +widgets : [mathjax] # {mathjax, quiz, bootstrap} +mode : selfcontained # {standalone, draft} +--- +```{r setup, cache = F, echo = F, message = F, warning = F, tidy = F, results='hide'} +library(knitr) +# make this an external chunk that can be included in any file +options(width = 100) +opts_chunk$set(message = F, error = F, warning = F, comment = NA, fig.align = 'center', dpi = 100, tidy = F, cache.path = '.cache/', fig.path = 'fig/') + +options(xtable.type = 'html') +knit_hooks$set(inline = function(x) { + if(is.numeric(x)) { + round(x, getOption('digits')) + } else { + paste(as.character(x), collapse = ', ') + } +}) +knit_hooks$set(plot = knitr:::hook_plot_html) +runif(1) +``` +## The linear model +* Specified as $Y_i = \sum_{k=1}^p X_{ik} \beta_j + \epsilon_{i}$ +* We'll also assume here that $\epsilon_i \stackrel{iid}{\sim} N(0, \sigma^2)$ +* Define the residuals as +$e_i = Y_i - \hat Y_i = Y_i - \sum_{k=1}^p X_{ik} \hat \beta_j$ +* Our estimate of residual variation is $\hat \sigma^2 = \frac{\sum_{i=1}^n e_i^2}{n-p}$, the $n-p$ so that $E[\hat \sigma^2] = \sigma^2$ + +--- +```{r, fig.height = 5, fig.width = 5} +data(swiss); par(mfrow = c(2, 2)) +fit <- lm(Fertility ~ . , data = swiss); plot(fit) +``` + +--- +## Influential, high leverage and outlying points +```{r, fig.height = 5, fig.width=5, echo = FALSE, results='hide'} +n <- 100; x <- rnorm(n); y <- x + rnorm(n, sd = .3) +plot(c(-3, 6), c(-3, 6), type = "n", frame = FALSE, xlab = "X", ylab = "Y") +abline(lm(y ~ x), lwd = 2) +points(x, y, cex = 2, bg = "lightblue", col = "black", pch = 21) +points(0, 0, cex = 2, bg = "darkorange", col = "black", pch = 21) +points(0, 5, cex = 2, bg = "darkorange", col = "black", pch = 21) +points(5, 5, cex = 2, bg = "darkorange", col = "black", pch = 21) +points(5, 0, cex = 2, bg = "darkorange", col = "black", pch = 21) +``` + +--- +## Summary of the plot +Calling a point an outlier is vague. + * Outliers can be the result of spurious or real processes. + * Outliers can have varying degrees of influence. + * Outliers can conform to the regression relationship (i.e being marginally outlying in X or Y, but not outlying given the regression relationship). +* Upper left hand point has low leverage, low influence, outlies in a way not conforming to the regression relationship. +* Lower left hand point has low leverage, low influence and is not to be an outlier in any sense. +* Upper right hand point has high leverage, but chooses not to extert it and thus would have low actual influence by conforming to the regresison relationship of the other points. +* Lower right hand point has high leverage and would exert it if it were included in the fit. + +--- +## Influence measures +* Do `?influence.measures` to see the full suite of influence measures in stats. The measures include + * `rstandard` - standardized residuals, residuals divided by their standard deviations) + * `rstudent` - standardized residuals, residuals divided by their standard deviations, where the ith data point was deleted in the calculation of the standard deviation for the residual to follow a t distribution + * `hatvalues` - measures of leverage + * `dffits` - change in the predicted response when the $i^{th}$ point is deleted in fitting the model. + * `dfbetas` - change in individual coefficients when the $i^{th}$ point is deleted in fitting the model. + * `cooks.distance` - overall change in the coefficients when the $i^{th}$ point is deleted. + * `resid` - returns the ordinary residuals + * `resid(fit) / (1 - hatvalues(fit))` where `fit` is the linear model fit returns the PRESS residuals, i.e. the leave one out cross validation residuals - the difference in the response and the predicted response at data point $i$, where it was not included in the model fitting. + +--- +## How do I use all of these things? +* Be wary of simplistic rules for diagnostic plots and measures. The use of these tools is context specific. It's better to understand what they are trying to accomplish and use them judiciously. +* Not all of the measures have meaningful absolute scales. You can look at them relative to the values across the data. +* They probe your data in different ways to diagnose different problems. +* Patterns in your residual plots generally indicate some poor aspect of model fit. These can include: + * Heteroskedasticity (non constant variance). + * Missing model terms. + * Temporal patterns (plot residuals versus collection order). +* Residual QQ plots investigate normality of the errors. +* Leverage measures (hat values) can be useful for diagnosing data entry errors. +* Influence measures get to the bottom line, 'how does deleting or including this point impact a particular aspect of the model'. + +--- +## Case 1 +```{r, fig.height=5, fig.width=5, echo=FALSE} +x <- c(10, rnorm(n)); y <- c(10, c(rnorm(n))) +plot(x, y, frame = FALSE, cex = 2, pch = 21, bg = "lightblue", col = "black") +abline(lm(y ~ x)) +``` + +--- +## The code +``` +n <- 100; x <- c(10, rnorm(n)); y <- c(10, c(rnorm(n))) +plot(x, y, frame = FALSE, cex = 2, pch = 21, bg = "lightblue", col = "black") +abline(lm(y ~ x)) +``` +* The point `c(10, 10)` has created a strong regression relationship where there shouldn't be one. + +--- +## Showing a couple of the diagnostic values +```{r} +fit <- lm(y ~ x) +round(dfbetas(fit)[1 : 10, 2], 3) +round(hatvalues(fit)[1 : 10], 3) +``` + +--- +## Case 2 +```{r, fig.height=5, fig.width=5, echo=FALSE} +x <- rnorm(n); y <- x + rnorm(n, sd = .3) +x <- c(5, x); y <- c(5, y) +plot(x, y, frame = FALSE, cex = 2, pch = 21, bg = "lightblue", col = "black") +fit2 <- lm(y ~ x) +abline(fit2) +``` + +--- +## Looking at some of the diagnostics +```{r, echo = TRUE} +round(dfbetas(fit2)[1 : 10, 2], 3) +round(hatvalues(fit2)[1 : 10], 3) +``` + +--- +## Example described by Stefanski TAS 2007 Vol 61. +```{r, fig.height=4, fig.width=4} +## Don't everyone hit this server at once. Read the paper first. +dat <- read.table('http://www4.stat.ncsu.edu/~stefanski/NSF_Supported/Hidden_Images/orly_owl_files/orly_owl_Lin_4p_5_flat.txt', header = FALSE) +pairs(dat) +``` + +--- +## Got our P-values, should we bother to do a residual plot? +```{r} +summary(lm(V1 ~ . -1, data = dat))$coef +``` + +--- +## Residual plot +### P-values significant, O RLY? +```{r, fig.height=4, fig.width=4, echo = TRUE} +fit <- lm(V1 ~ . - 1, data = dat); plot(predict(fit), resid(fit), pch = '.') +``` + +--- +## Back to the Swiss data +```{r, fig.height = 5, fig.width = 5, echo=FALSE} +data(swiss); par(mfrow = c(2, 2)) +fit <- lm(Fertility ~ . , data = swiss); plot(fit) +``` + diff --git a/07_RegressionModels/02_04_residuals_variation_diagnostics/index.html b/07_RegressionModels/02_04_residuals_variation_diagnostics/index.html index 8dcc1f168..b940fec04 100644 --- a/07_RegressionModels/02_04_residuals_variation_diagnostics/index.html +++ b/07_RegressionModels/02_04_residuals_variation_diagnostics/index.html @@ -1,431 +1,226 @@ - - - - Residuals, diagnostics, variation - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

Residuals, diagnostics, variation

-

Regression

-

Brian Caffo, Jeff Leek, Roger Peng
Johns Hopkins Bloomberg School of Public Health

-
-
-
- - - - -
-

The linear model

-
-
-
    -
  • Specified as \(Y_i = \sum_{k=1}^p X_{ik} \beta_j + \epsilon_{i}\)
  • -
  • We'll also assume here that \(\epsilon_i \stackrel{iid}{\sim} N(0, \sigma^2)\)
  • -
  • Define the residuals as -\(e_i = Y_i - \hat Y_i = Y_i - \sum_{k=1}^p X_{ik} \hat \beta_j\)
  • -
  • Our estimate of residual variation is \(\hat \sigma^2 = \frac{\sum_{i=1}^n e_i^2}{n-p}\), the \(n-p\) so that \(E[\hat \sigma^2] = \sigma^2\)
  • -
- -
- -
- - -
-
data(swiss); par(mfrow = c(2, 2))
-fit <- lm(Fertility ~ . , data = swiss); plot(fit)
-
- -
plot of chunk unnamed-chunk-1
- -
- -
- - -
-

Influential, high leverage and outlying points

-
-
-
plot of chunk unnamed-chunk-2
- -
- -
- - -
-

Summary of the plot

-
-
-

Calling a point an outlier is vague.

- -
    -
  • Outliers can be the result of spurious or real processes.
  • -
  • Outliers can have varying degrees of influence.
  • -
  • Outliers can conform to the regression relationship (i.e being marginally outlying in X or Y, but not outlying given the regression relationship). - -
      -
    • Upper left hand point has low leverage, low influence, outlies in a way not conforming to the regression relationship.
    • -
    • Lower left hand point has low leverage, low influence and is not to be an outlier in any sense.
    • -
    • Upper right hand point has high leverage, but chooses not to extert it and thus would have low actual influence by conforming to the regresison relationship of the other points.
    • -
    • Lower right hand point has high leverage and would exert it if it were included in the fit.
    • -
  • -
- -
- -
- - -
-

Influence measures

-
-
-
    -
  • Do ?influence.measures to see the full suite of influence measures in stats. The measures include - -
      -
    • rstandard - standardized residuals, residuals divided by their standard deviations)
    • -
    • rstudent - standardized residuals, residuals divided by their standard deviations, where the ith data point was deleted in the calculation of the standard deviation for the residual to follow a t distribution
    • -
    • hatvalues - measures of leverage
    • -
    • dffits - change in the predicted response when the \(i^{th}\) point is deleted in fitting the model.
    • -
    • dfbetas - change in individual coefficients when the \(i^{th}\) point is deleted in fitting the model.
    • -
    • cooks.distance - overall change in teh coefficients when the \(i^{th}\) point is deleted.
    • -
    • resid - returns the ordinary residuals
    • -
    • resid(fit) / (1 - hatvalues(fit)) where fit is the linear model fit returns the PRESS residuals, i.e. the leave one out cross validation residuals - the difference in the response and the predicted response at data point \(i\), where it was not included in the model fitting.
    • -
  • -
- -
- -
- - -
-

How do I use all of these things?

-
-
-
    -
  • Be wary of simplistic rules for diagnostic plots and measures. The use of these tools is context specific. It's better to understand what they are trying to accomplish and use them judiciously.
  • -
  • Not all of the measures have meaningful absolute scales. You can look at them relative to the values across the data.
  • -
  • They probe your data in different ways to diagnose different problems.
  • -
  • Patterns in your residual plots generally indicate some poor aspect of model fit. These can include: - -
      -
    • Heteroskedasticity (non constant variance).
    • -
    • Missing model terms.
    • -
    • Temporal patterns (plot residuals versus collection order).
    • -
  • -
  • Residual QQ plots investigate normality of the errors.
  • -
  • Leverage measures (hat values) can be useful for diagnosing data entry errors.
  • -
  • Influence measures get to the bottom line, 'how does deleting or including this point impact a particular aspect of the model'.
  • -
- -
- -
- - -
-

Case 1

-
-
-
plot of chunk unnamed-chunk-3
- -
- -
- - -
-

The code

-
-
-
n <- 100; x <- c(10, rnorm(n)); y <- c(10, c(rnorm(n)))
-plot(x, y, frame = FALSE, cex = 2, pch = 21, bg = "lightblue", col = "black")
-abline(lm(y ~ x))            
-
- -
    -
  • The point c(10, 10) has created a strong regression relationship where there shouldn't be one.
  • -
- -
- -
- - -
-

Showing a couple of the diagnostic values

-
-
-
fit <- lm(y ~ x)
-round(dfbetas(fit)[1 : 10, 2], 3)
-
- -
     1      2      3      4      5      6      7      8      9     10 
- 6.007 -0.019 -0.007  0.014 -0.002 -0.083 -0.034 -0.045 -0.112 -0.008 
-
- -
round(hatvalues(fit)[1 : 10], 3)
-
- -
    1     2     3     4     5     6     7     8     9    10 
-0.445 0.010 0.011 0.011 0.030 0.017 0.012 0.033 0.021 0.010 
-
- -
- -
- - -
-

Case 2

-
-
-
plot of chunk unnamed-chunk-5
- -
- -
- - -
-

Looking at some of the diagnostics

-
-
-
round(dfbetas(fit2)[1 : 10, 2], 3)
-
- -
     1      2      3      4      5      6      7      8      9     10 
--0.072 -0.041 -0.007  0.012  0.008 -0.187  0.017  0.100 -0.059  0.035 
-
- -
round(hatvalues(fit2)[1 : 10], 3)
-
- -
    1     2     3     4     5     6     7     8     9    10 
-0.164 0.011 0.014 0.012 0.010 0.030 0.017 0.017 0.013 0.021 
-
- -
- -
- - -
-

Example described by Stefanski TAS 2007 Vol 61.

-
-
-
## Don't everyone hit this server at once.  Read the paper first.
-dat <- read.table('http://www4.stat.ncsu.edu/~stefanski/NSF_Supported/Hidden_Images/orly_owl_files/orly_owl_Lin_4p_5_flat.txt', header = FALSE)
-pairs(dat)
-
- -
plot of chunk unnamed-chunk-7
- -
- -
- - -
-

Got our P-values, should we bother to do a residual plot?

-
-
-
summary(lm(V1 ~ . -1, data = dat))$coef
-
- -
   Estimate Std. Error t value  Pr(>|t|)
-V2   0.9856    0.12798   7.701 1.989e-14
-V3   0.9715    0.12664   7.671 2.500e-14
-V4   0.8606    0.11958   7.197 8.301e-13
-V5   0.9267    0.08328  11.127 4.778e-28
-
- -
- -
- - -
-

Residual plot

-
-
-

P-values significant, O RLY?

- -
fit <- lm(V1 ~ . - 1, data = dat); plot(predict(fit), resid(fit), pch = '.')
-
- -
plot of chunk unnamed-chunk-9
- -
- -
- - -
-

Back to the Swiss data

-
-
-
plot of chunk unnamed-chunk-10
- -
- -
- - -
-
- - - - - - - - - - - - - - \ No newline at end of file + + + + + + + + + + + + + + +Residuals, diagnostics, variation + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+

The linear model

+
    +
  • Specified as \(Y_i = \sum_{k=1}^p X_{ik} \beta_j + \epsilon_{i}\)
  • +
  • We’ll also assume here that \(\epsilon_i \stackrel{iid}{\sim} N(0, \sigma^2)\)
  • +
  • Define the residuals as \(e_i = Y_i - \hat Y_i = Y_i - \sum_{k=1}^p X_{ik} \hat \beta_j\)
  • +
  • Our estimate of residual variation is \(\hat \sigma^2 = \frac{\sum_{i=1}^n e_i^2}{n-p}\), the \(n-p\) so that \(E[\hat \sigma^2] = \sigma^2\)
  • +
+
+
data(swiss); par(mfrow = c(2, 2))
+fit <- lm(Fertility ~ . , data = swiss); plot(fit)
+
+ +
+
+
+

Summary of the plot

+

Calling a point an outlier is vague. * Outliers can be the result of spurious or real processes. * Outliers can have varying degrees of influence. * Outliers can conform to the regression relationship (i.e being marginally outlying in X or Y, but not outlying given the regression relationship). * Upper left hand point has low leverage, low influence, outlies in a way not conforming to the regression relationship. * Lower left hand point has low leverage, low influence and is not to be an outlier in any sense. * Upper right hand point has high leverage, but chooses not to extert it and thus would have low actual influence by conforming to the regresison relationship of the other points. * Lower right hand point has high leverage and would exert it if it were included in the fit.

+
+
+

How do I use all of these things?

+
    +
  • Be wary of simplistic rules for diagnostic plots and measures. The use of these tools is context specific. It’s better to understand what they are trying to accomplish and use them judiciously.
  • +
  • Not all of the measures have meaningful absolute scales. You can look at them relative to the values across the data.
  • +
  • They probe your data in different ways to diagnose different problems.
  • +
  • Patterns in your residual plots generally indicate some poor aspect of model fit. These can include:
  • +
  • Heteroskedasticity (non constant variance).
  • +
  • Missing model terms.
  • +
  • Temporal patterns (plot residuals versus collection order).
  • +
  • Residual QQ plots investigate normality of the errors.
  • +
  • Leverage measures (hat values) can be useful for diagnosing data entry errors.
  • +
  • Influence measures get to the bottom line, ‘how does deleting or including this point impact a particular aspect of the model’.
  • +
+
+
+

The code

+
n <- 100; x <- c(10, rnorm(n)); y <- c(10, c(rnorm(n)))
+plot(x, y, frame = FALSE, cex = 2, pch = 21, bg = "lightblue", col = "black")
+abline(lm(y ~ x))            
+
    +
  • The point c(10, 10) has created a strong regression relationship where there shouldn’t be one.
  • +
+
+
+

Case 2

+
+ +
+
+
+

Example described by Stefanski TAS 2007 Vol 61.

+
## Don't everyone hit this server at once.  Read the paper first.
+dat <- read.table('http://www4.stat.ncsu.edu/~stefanski/NSF_Supported/Hidden_Images/orly_owl_files/orly_owl_Lin_4p_5_flat.txt', header = FALSE)
+pairs(dat)
+
+ +
+
+
+

Residual plot

+
+

P-values significant, O RLY?

+
fit <- lm(V1 ~ . - 1, data = dat); plot(predict(fit), resid(fit), pch = '.')
+
+ +
+
+
+
+
+

Back to the Swiss data

+
+ +
+
+ + + + +
+ + + + + + + + From dca3e4d0e54d7d5401d09e75a30f6a823f131d2d Mon Sep 17 00:00:00 2001 From: Michael Fierro Date: Sun, 22 May 2016 13:49:15 -0600 Subject: [PATCH 2/3] Fix structure (e.g. YAML blocks), explicitly declare library(knitr) --- .../02_01_multivariate/index.Rmd | 535 ++++++----- .../02_02_multivariateExamples/index.Rmd | 829 +++++++++--------- .../02_03_adjustment/index.Rmd | 32 +- .../index.Rmd | 29 +- .../02_05_multipleVariables/index.Rmd | 354 ++++---- 07_RegressionModels/03_01_glms/index.Rmd | 282 +++--- 6 files changed, 1008 insertions(+), 1053 deletions(-) diff --git a/07_RegressionModels/02_01_multivariate/index.Rmd b/07_RegressionModels/02_01_multivariate/index.Rmd index 2a8ccbce8..70d66ba5b 100644 --- a/07_RegressionModels/02_01_multivariate/index.Rmd +++ b/07_RegressionModels/02_01_multivariate/index.Rmd @@ -1,278 +1,257 @@ ---- -title : Multivariable regression -subtitle : -author : Brian Caffo, Roger Peng and Jeff Leek -job : Johns Hopkins Bloomberg School of Public Health -logo : bloomberg_shield.png -framework : io2012 # {io2012, html5slides, shower, dzslides, ...} -highlighter : highlight.js # {highlight.js, prettify, highlight} -hitheme : tomorrow # -url: - lib: ../../libraries - assets: ../../assets -widgets : [mathjax] # {mathjax, quiz, bootstrap} -mode : selfcontained # {standalone, draft} ---- -```{r setup, cache = F, echo = F, message = F, warning = F, tidy = F, results='hide'} -# make this an external chunk that can be included in any file -options(width = 100) -opts_chunk$set(message = F, error = F, warning = F, comment = NA, fig.align = 'center', dpi = 100, tidy = F, cache.path = '.cache/', fig.path = 'fig/') - -options(xtable.type = 'html') -knit_hooks$set(inline = function(x) { - if(is.numeric(x)) { - round(x, getOption('digits')) - } else { - paste(as.character(x), collapse = ', ') - } -}) -knit_hooks$set(plot = knitr:::hook_plot_html) -runif(1) -``` -## Multivariable regression analyses -* If I were to present evidence of a relationship between -breath mint useage (mints per day, X) and pulmonary function -(measured in FEV), you would be skeptical. - * Likely, you would say, 'smokers tend to use more breath mints than non smokers, smoking is related to a loss in pulmonary function. That's probably the culprit.' - * If asked what would convince you, you would likely say, 'If non-smoking breath mint users had lower lung function than non-smoking non-breath mint users and, similarly, if smoking breath mint users had lower lung function than smoking non-breath mint users, I'd be more inclined to believe you'. -* In other words, to even consider my results, I would have to demonstrate that they hold while holding smoking status fixed. - ---- -## Multivariable regression analyses -* An insurance company is interested in how last year's claims can predict a person's time in the hospital this year. - * They want to use an enormous amount of data contained in claims to predict a single number. Simple linear regression is not equipped to handle more than one predictor. -* How can one generalize SLR to incoporate lots of regressors for -the purpose of prediction? -* What are the consequences of adding lots of regressors? - * Surely there must be consequences to throwing variables in that aren't related to Y? - * Surely there must be consequences to omitting variables that are? - ---- -## The linear model -* The general linear model extends simple linear regression (SLR) -by adding terms linearly into the model. -$$ -Y_i = \beta_1 X_{1i} + \beta_2 X_{2i} + \ldots + -\beta_{p} X_{pi} + \epsilon_{i} -= \sum_{k=1}^p X_{ik} \beta_j + \epsilon_{i} -$$ -* Here $X_{1i}=1$ typically, so that an intercept is included. -* Least squares (and hence ML estimates under iid Gaussianity -of the errors) minimizes -$$ -\sum_{i=1}^n \left(Y_i - \sum_{k=1}^p X_{ki} \beta_j\right)^2 -$$ -* Note, the important linearity is linearity in the coefficients. -Thus -$$ -Y_i = \beta_1 X_{1i}^2 + \beta_2 X_{2i}^2 + \ldots + -\beta_{p} X_{pi}^2 + \epsilon_{i} -$$ -is still a linear model. (We've just squared the elements of the -predictor variables.) - ---- -## How to get estimates -* The real way requires linear algebra. We'll go over an intuitive development instead. -* Recall that the LS estimate for regression through the origin, $E[Y_i]=X_{1i}\beta_1$, was $\sum X_i Y_i / \sum X_i^2$. -* Let's consider two regressors, $E[Y_i] = X_{1i}\beta_1 + X_{2i}\beta_2 = \mu_i$. -* Also, recall, that if $\hat \mu_i$ satisfies -$$ -\sum_{i=1} (Y_i - \hat \mu_i) (\hat \mu_i - \mu_i) = 0 -$$ -for all possible values of $\mu_i$, then we've found the LS estimates. - ---- -$$ -\sum_{i=1}^n (Y_i - \hat \mu_i) (\hat \mu_i - \mu_i) = \sum_{i=1}^n (Y_i - \hat \beta_1 X_{1i} - \hat \beta_2 X_{2i}) -\left\{X_{1i}(\hat \beta_1 - \beta_1) + X_{2i}(\hat \beta_2 - \beta_2) \right\} -$$ -* Thus we need - 1. $\sum_{i=1}^n (Y_i - \hat \beta_1 X_{1i} - \hat \beta_2 X_{2i}) X_{1i} = 0$ - 2. $\sum_{i=1}^n (Y_i - \hat \beta_1 X_{1i} - \hat \beta_2 X_{2i}) X_{2i} = 0$ -* Hold $\hat \beta_1$ fixed in 2. and solve and we get that -$$ -\hat \beta_2 = \frac{\sum_{i=1} (Y_i - X_{1i}\hat \beta_1)X_{2i}}{\sum_{i=1}^n X_{2i}^2} -$$ -* Plugging this into 1. we get that -$$ -0 = \sum_{i=1}^n \left\{Y_i - \frac{\sum_j X_{2j}Y_j}{\sum_j X_{2j}^2}X_{2i} + -\beta_1 \left(X_{1i} - \frac{\sum_j X_{2j}X_{1j}}{\sum_j X_{2j}^2} X_{2i}\right)\right\} X_{1i} -$$ - ---- -## Continued -* Re writing this we get -$$ -0 = \sum_{i=1}^n \left\{ e_{i, Y | X_2} - \hat \beta_1 e_{i, X_1 | X_2} -\right\} X_{1i} -$$ -where $e_{i, a | b} = a_i - \frac{\sum_{j=1}^n a_j b_j }{\sum_{i=1}^n b_j^2} b_i$ is the residual when regressing $b$ from $a$ without an intercept. -* We get the solution -$$ -\hat \beta_1 = \frac{\sum_{i=1}^n e_{i, Y | X_2} e_{i, X_1 | X_2}}{\sum_{i=1}^n e_{i, X_1 | X_2} X_1} -$$ - ---- -* But note that -$$ -\sum_{i=1}^n e_{i, X_1 | X_2}^2 -= \sum_{i=1}^n e_{i, X_1 | X_2} \left(X_{1i} - \frac{\sum_j X_{2j}X_{1j}}{\sum_j X_{2j}^2} X_{2i}\right) -$$ -$$ -= \sum_{i=1}^n e_{i, X_1 | X_2} X_{1i} - \frac{\sum_j X_{2j}X_{1j}}{\sum_j X_{2j}^2} \sum_{i=1}^n e_{i, X_1 | X_2} X_{2i} -$$ -But $\sum_{i=1}^n e_{i, X_1 | X_2} X_{2i} = 0$. So we get that -$$ -\sum_{i=1}^n e_{i, X_1 | X_2}^2 = \sum_{i=1}^n e_{i, X_1 | X_2} X_{1i} -$$ -Thus we get that -$$ -\hat \beta_1 = \frac{\sum_{i=1}^n e_{i, Y | X_2} e_{i, X_1 | X_2}}{\sum_{i=1}^n e_{i, X_1 | X_2}^2} -$$ - ---- -## Summing up fitting with two regressors -$$\hat \beta_1 = \frac{\sum_{i=1}^n e_{i, Y | X_2} e_{i, X_1 | X_2}}{\sum_{i=1}^n e_{i, X_1 | X_2}^2}$$ -* That is, the regression estimate for $\beta_1$ is the regression -through the origin estimate having regressed $X_2$ out of both -the response and the predictor. -* (Similarly, the regression estimate for $\beta_2$ is the regression through the origin estimate having regressed $X_1$ out of both the response and the predictor.) -* More generally, multivariate regression estimates are exactly those having removed the linear relationship of the other variables -from both the regressor and response. - ---- -## Example with two variables, simple linear regression -* $Y_{i} = \beta_1 X_{1i} + \beta_2 X_{2i}$ where $X_{2i} = 1$ is an intercept term. -* Then $\frac{\sum_j X_{2j}X_{1j}}{\sum_j X_{2j}^2}X_{2i} = -\frac{\sum_j X_{1j}}{n} = \bar X_1$. -* $e_{i, X_1 | X_2} = X_{1i} - \bar X_1$. -* Simiarly $e_{i, Y | X_2} = Y_i - \bar Y$. -* Thus -$$ -\hat \beta_1 = \frac{\sum_{i=1}^n e_{i, Y | X_2} e_{i, X_1 | X_2}}{\sum_{i=1}^n e_{i, X_1 | X_2}^2} = \frac{\sum_{i=1}^n (X_i - \bar X)(Y_i - \bar Y)}{\sum_{i=1}^n (X_i - \bar X)^2} -= Cor(X, Y) \frac{Sd(Y)}{Sd(X)} -$$ - ---- -## The general case -* The equations -$$ -\sum_{i=1}^n (Y_i - X_{1i}\hat \beta_1 - \ldots - X_{ip}\hat \beta_p) X_k = 0 -$$ -for $k = 1, \ldots, p$ yields $p$ equations with $p$ unknowns. -* Solving them yields the least squares estimates. (With obtaining a good, fast, general solution requiring some knowledge of linear algebra.) -* The least squares estimate for the coefficient of a multivariate regression model is exactly regression through the origin with the linear relationships with the other regressors removed from both the regressor and outcome by taking residuals. -* In this sense, multivariate regression "adjusts" a coefficient for the linear impact of the other variables. - ---- -## Fitting LS equations -Just so I don't leave you hanging, let's show a way to get estimates. Recall the equations: -$$ -\sum_{i=1}^n (Y_i - X_{1i}\hat \beta_1 - \ldots - X_{ip}\hat \beta_p) X_k = 0 -$$ -If I hold $\hat \beta_1, \ldots, \hat \beta_{p-1}$ fixed then -we get that -$$ -\hat \beta_p = \frac{\sum_{i=1}^n (Y_i - X_{1i}\hat \beta_1 - \ldots - X_{i,p-1}\hat \beta_{p-1}) X_{ip} }{\sum_{i=1}^n X_{ip}^2} -$$ -Plugging this back into the equations, we wind up with -$$ -\sum_{i=1}^n (e_{i,Y|X_p} - e_{i, X_{1} | X_p} \hat \beta_1 - \ldots - e_{i, X_{p-1} | X_{p}} \hat \beta_{p-1}) X_k = 0 -$$ - ---- -## We can tidy it up a bit more, though -Note that -$$ -X_k = e_{i,X_k|X_p} + \frac{\sum_{i=1}^n X_{ik} X_{ip}}{\sum_{i=1}^n X_{ip}^2} X_p -$$ -and $\sum_{i=1}^n e_{i,X_j | X_p} X_{ip} = 0$. -Thus -$$ -\sum_{i=1}^n (e_{i,Y|X_p} - e_{i, X_{1} | X_p} \hat \beta_1 - \ldots - e_{i, X_{p-1} | X_{p}} \hat \beta_{p-1}) X_k = 0 -$$ -is equal to -$$ -\sum_{i=1}^n (e_{i,Y|X_p} - e_{i, X_{1} | X_p} \hat \beta_1 - \ldots - e_{i, X_{p-1} | X_{p}} \hat \beta_{p-1}) e_{i,X_k|X_p} = 0 -$$ - ---- -## To sum up -* We've reduced $p$ LS equations and $p$ unknowns to $p-1$ LS equations and $p-1$ unknowns. - * Every variable has been replaced by its residual with $X_p$. - * This process can then be iterated until only Y and one -variable remains. -* Think of it as follows. If we want an adjusted relationship between y and x, keep taking residuals over confounders and do regression through the origin. - * The order that you do the confounders doesn't matter. - * (It can't because our choice of doing $p$ first - was arbitrary.) -* This isn't a terribly efficient way to get estimates. But, it's nice conceputally, as it shows how regression estimates are adjusted for the linear relationship with other variables. - ---- -## Demonstration that it works using an example -### Linear model with two variables and an intercept -```{r} -n <- 100; x <- rnorm(n); x2 <- rnorm(n); x3 <- rnorm(n) -y <- x + x2 + x3 + rnorm(n, sd = .1) -e <- function(a, b) a - sum( a * b ) / sum( b ^ 2) * b -ey <- e(e(y, x2), e(x3, x2)) -ex <- e(e(x, x2), e(x3, x2)) -sum(ey * ex) / sum(ex ^ 2) -coef(lm(y ~ x + x2 + x3 - 1)) #the -1 removes the intercept term -``` - ---- -## Showing that order doesn't matter -```{r} -ey <- e(e(y, x3), e(x2, x3)) -ex <- e(e(x, x3), e(x2, x3)) -sum(ey * ex) / sum(ex ^ 2) -coef(lm(y ~ x + x2 + x3 - 1)) #the -1 removes the intercept term -``` - ---- -## Residuals again -```{r} -ey <- resid(lm(y ~ x2 + x3 - 1)) -ex <- resid(lm(x ~ x2 + x3 - 1)) -sum(ey * ex) / sum(ex ^ 2) -coef(lm(y ~ x + x2 + x3 - 1)) #the -1 removes the intercept term -``` - - ---- -## Interpretation of the coeficient -$$E[Y | X_1 = x_1, \ldots, X_p = x_p] = \sum_{k=1}^p x_{k} \beta_k$$ -So that -$$ -E[Y | X_1 = x_1 + 1, \ldots, X_p = x_p] - E[Y | X_1 = x_1, \ldots, X_p = x_p]$$ -$$= (x_1 + 1) \beta_1 + \sum_{k=2}^p x_{k}+ \sum_{k=1}^p x_{k} \beta_k = \beta_1 $$ -So that the interpretation of a multivariate regression coefficient is the expected change in the response per unit change in the regressor, holding all of the other regressors fixed. - -In the next lecture, we'll do examples and go over context-specific -interpretations. - ---- -## Fitted values, residuals and residual variation -All of our SLR quantities can be extended to linear models -* Model $Y_i = \sum_{k=1}^p X_{ik} \beta_{k} + \epsilon_{i}$ where $\epsilon_i \sim N(0, \sigma^2)$ -* Fitted responses $\hat Y_i = \sum_{k=1}^p X_{ik} \hat \beta_{k}$ -* Residuals $e_i = Y_i - \hat Y_i$ -* Variance estimate $\hat \sigma^2 = \frac{1}{n-p} \sum_{i=1}^n e_i ^2$ -* To get predicted responses at new values, $x_1, \ldots, x_p$, simply plug them into the linear model $\sum_{k=1}^p x_{k} \hat \beta_{k}$ -* Coefficients have standard errors, $\hat \sigma_{\hat \beta_k}$, and -$\frac{\hat \beta_k - \beta_k}{\hat \sigma_{\hat \beta_k}}$ -follows a $T$ distribution with $n-p$ degrees of freedom. -* Predicted responses have standard errors and we can calculate predicted and expected response intervals. - ---- -## Linear models -* Linear models are the single most important applied statistical and machine learning techniqe, *by far*. -* Some amazing things that you can accomplish with linear models - * Decompose a signal into its harmonics. - * Flexibly fit complicated functions. - * Fit factor variables as predictors. - * Uncover complex multivariate relationships with the response. - * Build accurate prediction models. - +--- +title : Multivariable regression +subtitle : +author : Brian Caffo, Roger Peng and Jeff Leek +job : Johns Hopkins Bloomberg School of Public Health +logo : bloomberg_shield.png +framework : io2012 # {io2012, html5slides, shower, dzslides, ...} +highlighter : highlight.js # {highlight.js, prettify, highlight} +hitheme : tomorrow # +url: + lib: ../../libraries + assets: ../../assets +widgets : [mathjax] # {mathjax, quiz, bootstrap} +mode : selfcontained # {standalone, draft} +--- +```{r setup, cache = F, echo = F, message = F, warning = F, tidy = F, results='hide'} +# Must explicitly include knitr or the chunks will fail, at least in Linux +library(knitr) +# make this an external chunk that can be included in any file +options(width = 100) +opts_chunk$set(message = F, error = F, warning = F, comment = NA, fig.align = 'center', dpi = 100, tidy = F, cache.path = '.cache/', fig.path = 'fig/') + +options(xtable.type = 'html') +knit_hooks$set(inline = function(x) { + if(is.numeric(x)) { + round(x, getOption('digits')) + } else { + paste(as.character(x), collapse = ', ') + } +}) +knit_hooks$set(plot = knitr:::hook_plot_html) +runif(1) +``` +## Multivariable regression analyses +* If I were to present evidence of a relationship between +breath mint useage (mints per day, X) and pulmonary function +(measured in FEV), you would be skeptical. + * Likely, you would say, 'smokers tend to use more breath mints than non smokers, smoking is related to a loss in pulmonary function. That's probably the culprit.' + * If asked what would convince you, you would likely say, 'If non-smoking breath mint users had lower lung function than non-smoking non-breath mint users and, similarly, if smoking breath mint users had lower lung function than smoking non-breath mint users, I'd be more inclined to believe you'. +* In other words, to even consider my results, I would have to demonstrate that they hold while holding smoking status fixed. +* An insurance company is interested in how last year's claims can predict a person's time in the hospital this year. + * They want to use an enormous amount of data contained in claims to predict a single number. Simple linear regression is not equipped to handle more than one predictor. +* How can one generalize SLR to incoporate lots of regressors for +the purpose of prediction? +* What are the consequences of adding lots of regressors? + * Surely there must be consequences to throwing variables in that aren't related to Y? + * Surely there must be consequences to omitting variables that are? + +## The linear model +* The general linear model extends simple linear regression (SLR) +by adding terms linearly into the model. +$$ +Y_i = \beta_1 X_{1i} + \beta_2 X_{2i} + \ldots + +\beta_{p} X_{pi} + \epsilon_{i} += \sum_{k=1}^p X_{ik} \beta_j + \epsilon_{i} +$$ +* Here $X_{1i}=1$ typically, so that an intercept is included. +* Least squares (and hence ML estimates under iid Gaussianity +of the errors) minimizes +$$ +\sum_{i=1}^n \left(Y_i - \sum_{k=1}^p X_{ki} \beta_j\right)^2 +$$ +* Note, the important linearity is linearity in the coefficients. +Thus +$$ +Y_i = \beta_1 X_{1i}^2 + \beta_2 X_{2i}^2 + \ldots + +\beta_{p} X_{pi}^2 + \epsilon_{i} +$$ +is still a linear model. (We've just squared the elements of the +predictor variables.) + +## How to get estimates +* The real way requires linear algebra. We'll go over an intuitive development instead. +* Recall that the LS estimate for regression through the origin, $E[Y_i]=X_{1i}\beta_1$, was $\sum X_i Y_i / \sum X_i^2$. +* Let's consider two regressors, $E[Y_i] = X_{1i}\beta_1 + X_{2i}\beta_2 = \mu_i$. +* Also, recall, that if $\hat \mu_i$ satisfies +$$ +\sum_{i=1} (Y_i - \hat \mu_i) (\hat \mu_i - \mu_i) = 0 +$$ +for all possible values of $\mu_i$, then we've found the LS estimates. + +$$ +\sum_{i=1}^n (Y_i - \hat \mu_i) (\hat \mu_i - \mu_i) = \sum_{i=1}^n (Y_i - \hat \beta_1 X_{1i} - \hat \beta_2 X_{2i}) +\left\{X_{1i}(\hat \beta_1 - \beta_1) + X_{2i}(\hat \beta_2 - \beta_2) \right\} +$$ +* Thus we need + 1. $\sum_{i=1}^n (Y_i - \hat \beta_1 X_{1i} - \hat \beta_2 X_{2i}) X_{1i} = 0$ + 2. $\sum_{i=1}^n (Y_i - \hat \beta_1 X_{1i} - \hat \beta_2 X_{2i}) X_{2i} = 0$ +* Hold $\hat \beta_1$ fixed in 2. and solve and we get that +$$ +\hat \beta_2 = \frac{\sum_{i=1} (Y_i - X_{1i}\hat \beta_1)X_{2i}}{\sum_{i=1}^n X_{2i}^2} +$$ +* Plugging this into 1. we get that +$$ +0 = \sum_{i=1}^n \left\{Y_i - \frac{\sum_j X_{2j}Y_j}{\sum_j X_{2j}^2}X_{2i} + +\beta_1 \left(X_{1i} - \frac{\sum_j X_{2j}X_{1j}}{\sum_j X_{2j}^2} X_{2i}\right)\right\} X_{1i} +$$ + +## Continued +* Re writing this we get +$$ +0 = \sum_{i=1}^n \left\{ e_{i, Y | X_2} - \hat \beta_1 e_{i, X_1 | X_2} +\right\} X_{1i} +$$ +where $e_{i, a | b} = a_i - \frac{\sum_{j=1}^n a_j b_j }{\sum_{i=1}^n b_j^2} b_i$ is the residual when regressing $b$ from $a$ without an intercept. +* We get the solution +$$ +\hat \beta_1 = \frac{\sum_{i=1}^n e_{i, Y | X_2} e_{i, X_1 | X_2}}{\sum_{i=1}^n e_{i, X_1 | X_2} X_1} +$$ + +* But note that +$$ +\sum_{i=1}^n e_{i, X_1 | X_2}^2 += \sum_{i=1}^n e_{i, X_1 | X_2} \left(X_{1i} - \frac{\sum_j X_{2j}X_{1j}}{\sum_j X_{2j}^2} X_{2i}\right) +$$ +$$ += \sum_{i=1}^n e_{i, X_1 | X_2} X_{1i} - \frac{\sum_j X_{2j}X_{1j}}{\sum_j X_{2j}^2} \sum_{i=1}^n e_{i, X_1 | X_2} X_{2i} +$$ +But $\sum_{i=1}^n e_{i, X_1 | X_2} X_{2i} = 0$. So we get that +$$ +\sum_{i=1}^n e_{i, X_1 | X_2}^2 = \sum_{i=1}^n e_{i, X_1 | X_2} X_{1i} +$$ +Thus we get that +$$ +\hat \beta_1 = \frac{\sum_{i=1}^n e_{i, Y | X_2} e_{i, X_1 | X_2}}{\sum_{i=1}^n e_{i, X_1 | X_2}^2} +$$ + +## Summing up fitting with two regressors +$$\hat \beta_1 = \frac{\sum_{i=1}^n e_{i, Y | X_2} e_{i, X_1 | X_2}}{\sum_{i=1}^n e_{i, X_1 | X_2}^2}$$ +* That is, the regression estimate for $\beta_1$ is the regression +through the origin estimate having regressed $X_2$ out of both +the response and the predictor. +* (Similarly, the regression estimate for $\beta_2$ is the regression through the origin estimate having regressed $X_1$ out of both the response and the predictor.) +* More generally, multivariate regression estimates are exactly those having removed the linear relationship of the other variables +from both the regressor and response. + +## Example with two variables, simple linear regression +* $Y_{i} = \beta_1 X_{1i} + \beta_2 X_{2i}$ where $X_{2i} = 1$ is an intercept term. +* Then $\frac{\sum_j X_{2j}X_{1j}}{\sum_j X_{2j}^2}X_{2i} = +\frac{\sum_j X_{1j}}{n} = \bar X_1$. +* $e_{i, X_1 | X_2} = X_{1i} - \bar X_1$. +* Simiarly $e_{i, Y | X_2} = Y_i - \bar Y$. +* Thus +$$ +\hat \beta_1 = \frac{\sum_{i=1}^n e_{i, Y | X_2} e_{i, X_1 | X_2}}{\sum_{i=1}^n e_{i, X_1 | X_2}^2} = \frac{\sum_{i=1}^n (X_i - \bar X)(Y_i - \bar Y)}{\sum_{i=1}^n (X_i - \bar X)^2} += Cor(X, Y) \frac{Sd(Y)}{Sd(X)} +$$ + +## The general case +* The equations +$$ +\sum_{i=1}^n (Y_i - X_{1i}\hat \beta_1 - \ldots - X_{ip}\hat \beta_p) X_k = 0 +$$ +for $k = 1, \ldots, p$ yields $p$ equations with $p$ unknowns. +* Solving them yields the least squares estimates. (With obtaining a good, fast, general solution requiring some knowledge of linear algebra.) +* The least squares estimate for the coefficient of a multivariate regression model is exactly regression through the origin with the linear relationships with the other regressors removed from both the regressor and outcome by taking residuals. +* In this sense, multivariate regression "adjusts" a coefficient for the linear impact of the other variables. + +## Fitting LS equations +Just so I don't leave you hanging, let's show a way to get estimates. Recall the equations: +$$ +\sum_{i=1}^n (Y_i - X_{1i}\hat \beta_1 - \ldots - X_{ip}\hat \beta_p) X_k = 0 +$$ +If I hold $\hat \beta_1, \ldots, \hat \beta_{p-1}$ fixed then +we get that +$$ +\hat \beta_p = \frac{\sum_{i=1}^n (Y_i - X_{1i}\hat \beta_1 - \ldots - X_{i,p-1}\hat \beta_{p-1}) X_{ip} }{\sum_{i=1}^n X_{ip}^2} +$$ +Plugging this back into the equations, we wind up with +$$ +\sum_{i=1}^n (e_{i,Y|X_p} - e_{i, X_{1} | X_p} \hat \beta_1 - \ldots - e_{i, X_{p-1} | X_{p}} \hat \beta_{p-1}) X_k = 0 +$$ + +## We can tidy it up a bit more, though +Note that +$$ +X_k = e_{i,X_k|X_p} + \frac{\sum_{i=1}^n X_{ik} X_{ip}}{\sum_{i=1}^n X_{ip}^2} X_p +$$ +and $\sum_{i=1}^n e_{i,X_j | X_p} X_{ip} = 0$. +Thus +$$ +\sum_{i=1}^n (e_{i,Y|X_p} - e_{i, X_{1} | X_p} \hat \beta_1 - \ldots - e_{i, X_{p-1} | X_{p}} \hat \beta_{p-1}) X_k = 0 +$$ +is equal to +$$ +\sum_{i=1}^n (e_{i,Y|X_p} - e_{i, X_{1} | X_p} \hat \beta_1 - \ldots - e_{i, X_{p-1} | X_{p}} \hat \beta_{p-1}) e_{i,X_k|X_p} = 0 +$$ + +## To sum up +* We've reduced $p$ LS equations and $p$ unknowns to $p-1$ LS equations and $p-1$ unknowns. + * Every variable has been replaced by its residual with $X_p$. + * This process can then be iterated until only Y and one +variable remains. +* Think of it as follows. If we want an adjusted relationship between y and x, keep taking residuals over confounders and do regression through the origin. + * The order that you do the confounders doesn't matter. + * (It can't because our choice of doing $p$ first + was arbitrary.) +* This isn't a terribly efficient way to get estimates. But, it's nice conceputally, as it shows how regression estimates are adjusted for the linear relationship with other variables. + +## Demonstration that it works using an example +### Linear model with two variables and an intercept +```{r} +n <- 100; x <- rnorm(n); x2 <- rnorm(n); x3 <- rnorm(n) +y <- x + x2 + x3 + rnorm(n, sd = .1) +e <- function(a, b) a - sum( a * b ) / sum( b ^ 2) * b +ey <- e(e(y, x2), e(x3, x2)) +ex <- e(e(x, x2), e(x3, x2)) +sum(ey * ex) / sum(ex ^ 2) +coef(lm(y ~ x + x2 + x3 - 1)) #the -1 removes the intercept term +``` + +## Showing that order doesn't matter +```{r} +ey <- e(e(y, x3), e(x2, x3)) +ex <- e(e(x, x3), e(x2, x3)) +sum(ey * ex) / sum(ex ^ 2) +coef(lm(y ~ x + x2 + x3 - 1)) #the -1 removes the intercept term +``` +## Residuals again +```{r} +ey <- resid(lm(y ~ x2 + x3 - 1)) +ex <- resid(lm(x ~ x2 + x3 - 1)) +sum(ey * ex) / sum(ex ^ 2) +coef(lm(y ~ x + x2 + x3 - 1)) #the -1 removes the intercept term +``` + +## Interpretation of the coeficient +$$E[Y | X_1 = x_1, \ldots, X_p = x_p] = \sum_{k=1}^p x_{k} \beta_k$$ +So that +$$ +E[Y | X_1 = x_1 + 1, \ldots, X_p = x_p] - E[Y | X_1 = x_1, \ldots, X_p = x_p]$$ +$$= (x_1 + 1) \beta_1 + \sum_{k=2}^p x_{k}+ \sum_{k=1}^p x_{k} \beta_k = \beta_1 $$ +So that the interpretation of a multivariate regression coefficient is the expected change in the response per unit change in the regressor, holding all of the other regressors fixed. + +In the next lecture, we'll do examples and go over context-specific +interpretations. + +## Fitted values, residuals and residual variation +All of our SLR quantities can be extended to linear models +* Model $Y_i = \sum_{k=1}^p X_{ik} \beta_{k} + \epsilon_{i}$ where $\epsilon_i \sim N(0, \sigma^2)$ +* Fitted responses $\hat Y_i = \sum_{k=1}^p X_{ik} \hat \beta_{k}$ +* Residuals $e_i = Y_i - \hat Y_i$ +* Variance estimate $\hat \sigma^2 = \frac{1}{n-p} \sum_{i=1}^n e_i ^2$ +* To get predicted responses at new values, $x_1, \ldots, x_p$, simply plug them into the linear model $\sum_{k=1}^p x_{k} \hat \beta_{k}$ +* Coefficients have standard errors, $\hat \sigma_{\hat \beta_k}$, and +$\frac{\hat \beta_k - \beta_k}{\hat \sigma_{\hat \beta_k}}$ +follows a $T$ distribution with $n-p$ degrees of freedom. +* Predicted responses have standard errors and we can calculate predicted and expected response intervals. + +## Linear models +* Linear models are the single most important applied statistical and machine learning techniqe, *by far*. +* Some amazing things that you can accomplish with linear models + * Decompose a signal into its harmonics. + * Flexibly fit complicated functions. + * Fit factor variables as predictors. + * Uncover complex multivariate relationships with the response. + * Build accurate prediction models. diff --git a/07_RegressionModels/02_02_multivariateExamples/index.Rmd b/07_RegressionModels/02_02_multivariateExamples/index.Rmd index 5a053aab9..87c736dc1 100644 --- a/07_RegressionModels/02_02_multivariateExamples/index.Rmd +++ b/07_RegressionModels/02_02_multivariateExamples/index.Rmd @@ -1,430 +1,399 @@ ---- -title : Multivariable regression examples -subtitle : Regression Models -author : Brian Caffo, Jeff Leek and Roger Peng -job : Johns Hopkins Bloomberg School of Public Health -logo : bloomberg_shield.png -framework : io2012 # {io2012, html5slides, shower, dzslides, ...} -highlighter : highlight.js # {highlight.js, prettify, highlight} -hitheme : tomorrow # -url: - lib: ../../librariesNew - assets: ../../assets -widgets : [mathjax] # {mathjax, quiz, bootstrap} -mode : selfcontained # {standalone, draft} ---- -```{r setup, cache = F, echo = F, message = F, warning = F, tidy = F, results='hide'} -# make this an external chunk that can be included in any file -options(width = 100) -opts_chunk$set(message = F, error = F, warning = F, comment = NA, fig.align = 'center', dpi = 100, tidy = F, cache.path = '.cache/', fig.path = 'fig/') - -options(xtable.type = 'html') -knit_hooks$set(inline = function(x) { - if(is.numeric(x)) { - round(x, getOption('digits')) - } else { - paste(as.character(x), collapse = ', ') - } -}) -knit_hooks$set(plot = knitr:::hook_plot_html) -runif(1) -``` -## Swiss fertility data -```{r, fig.height=4.5, fig.width=4.5} -library(datasets); data(swiss); require(stats); require(graphics) -pairs(swiss, panel = panel.smooth, main = "Swiss data", col = 3 + (swiss$Catholic > 50)) -``` - ---- -## `?swiss` -### Description -Standardized fertility measure and socio-economic indicators for each of 47 French-speaking provinces of Switzerland at about 1888. - -A data frame with 47 observations on 6 variables, each of which is in percent, i.e., in [0, 100]. - -* [,1] Fertility Ig, ‘ common standardized fertility measure’ -* [,2] Agriculture % of males involved in agriculture as occupation -* [,3] Examination % draftees receiving highest mark on army examination -* [,4] Education % education beyond primary school for draftees. -* [,5] Catholic % ‘catholic’ (as opposed to ‘protestant’). -* [,6] Infant.Mortality live births who live less than 1 year. - -All variables but ‘Fertility’ give proportions of the population. - - ---- -## Calling `lm` -`summary(lm(Fertility ~ . , data = swiss))` -```{r, echo = FALSE} -summary(lm(Fertility ~ . , data = swiss))$coefficients -``` - ---- -## Example interpretation -* Agriculture is expressed in percentages (0 - 100) -* Estimate is -0.1721. -* We estimate an expected 0.17 decrease in standardized fertility for every 1\% increase in percentage of males involved in agriculture in holding the remaining variables constant. -* The t-test for $H_0: \beta_{Agri} = 0$ versus $H_a: \beta_{Agri} \neq 0$ is significant. -* Interestingly, the unadjusted estimate is -```{r} -summary(lm(Fertility ~ Agriculture, data = swiss))$coefficients -``` - ---- -How can adjustment reverse the sign of an effect? Let's try a simulation. -```{r, echo = TRUE} -n <- 100; x2 <- 1 : n; x1 <- .01 * x2 + runif(n, -.1, .1); y = -x1 + x2 + rnorm(n, sd = .01) -summary(lm(y ~ x1))$coef -summary(lm(y ~ x1 + x2))$coef -``` - ---- -```{r, echo = FALSE, fig.height=5, fig.width=10, results = 'show'} -par(mfrow = c(1, 2)) -plot(x1, y, pch=21,col="black",bg=topo.colors(n)[x2], frame = FALSE, cex = 1.5) -title('Unadjusted, color is X2') -abline(lm(y ~ x1), lwd = 2) -plot(resid(lm(x1 ~ x2)), resid(lm(y ~ x2)), pch = 21, col = "black", bg = "lightblue", frame = FALSE, cex = 1.5) -title('Adjusted') -abline(0, coef(lm(y ~ x1 + x2))[2], lwd = 2) -``` - ---- -## Back to this data set -* The sign reverses itself with the inclusion of Examination and Education, but of which are negatively correlated with Agriculture. -* The percent of males in the province working in agriculture is negatively related to educational attainment (correlation of `r cor(swiss$Agriculture, swiss$Education)`) and Education and Examination (correlation of `r cor(swiss$Education, swiss$Examination)`) are obviously measuring similar things. - * Is the positive marginal an artifact for not having accounted for, say, Education level? (Education does have a stronger effect, by the way.) -* At the minimum, anyone claiming that provinces that are more agricultural have higher fertility rates would immediately be open to criticism. - ---- -## What if we include an unnecessary variable? -z adds no new linear information, since it's a linear -combination of variables already included. R just drops -terms that are linear combinations of other terms. -```{r, echo = TRUE} -z <- swiss$Agriculture + swiss$Education -lm(Fertility ~ . + z, data = swiss) -``` - - ---- -## Dummy variables are smart -* Consider the linear model -$$ -Y_i = \beta_0 + X_{i1} \beta_1 + \epsilon_{i} -$$ -where each $X_{i1}$ is binary so that it is a 1 if measurement $i$ is in a group and 0 otherwise. (Treated versus not in a clinical trial, for example.) -* Then for people in the group $E[Y_i] = \beta_0 + \beta_1$ -* And for people not in the group $E[Y_i] = \beta_0$ -* The LS fits work out to be $\hat \beta_0 + \hat \beta_1$ is the mean for those in the group and $\hat \beta_0$ is the mean for those not in the group. -* $\beta_1$ is interpretted as the increase or decrease in the mean comparing those in the group to those not. -* Note including a binary variable that is 1 for those not in the group would be redundant. It would create three parameters to describe two means. - ---- -## More than 2 levels -* Consider a multilevel factor level. For didactic reasons, let's say a three level factor (example, US political party affiliation: Republican, Democrat, Independent) -* $Y_i = \beta_0 + X_{i1} \beta_1 + X_{i2} \beta_2 + \epsilon_i$. -* $X_{i1}$ is 1 for Republicans and 0 otherwise. -* $X_{i2}$ is 1 for Democrats and 0 otherwise. -* If $i$ is Republican $E[Y_i] = \beta_0 +\beta_1$ -* If $i$ is Democrat $E[Y_i] = \beta_0 + \beta_2$. -* If $i$ is Independent $E[Y_i] = \beta_0$. -* $\beta_1$ compares Republicans to Independents. -* $\beta_2$ compares Democrats to Independents. -* $\beta_1 - \beta_2$ compares Republicans to Democrats. -* (Choice of reference category changes the interpretation.) - ---- -## Insect Sprays -```{r, echo = FALSE, fig.height=5, fig.width=5} -require(datasets);data(InsectSprays) -require(stats); require(graphics) -boxplot(count ~ spray, data = InsectSprays, - xlab = "Type of spray", ylab = "Insect count", - main = "InsectSprays data", varwidth = TRUE, col = "lightgray") -``` - ---- -## Linear model fit, group A is the reference -```{r, echo= TRUE} -summary(lm(count ~ spray, data = InsectSprays))$coef -``` - ---- -## Hard coding the dummy variables -```{r, echo= TRUE} -summary(lm(count ~ - I(1 * (spray == 'B')) + I(1 * (spray == 'C')) + - I(1 * (spray == 'D')) + I(1 * (spray == 'E')) + - I(1 * (spray == 'F')) - , data = InsectSprays))$coef -``` - ---- -## What if we include all 6? -```{r, echo= TRUE} -lm(count ~ - I(1 * (spray == 'B')) + I(1 * (spray == 'C')) + - I(1 * (spray == 'D')) + I(1 * (spray == 'E')) + - I(1 * (spray == 'F')) + I(1 * (spray == 'A')), data = InsectSprays) -``` - ---- -## What if we omit the intercept? -```{r, echo= TRUE} -summary(lm(count ~ spray - 1, data = InsectSprays))$coef -unique(ave(InsectSprays$count, InsectSprays$spray)) -``` - ---- -## Summary -* If we treat Spray as a factor, R includes an intercept and omits the alphabetically first level of the factor. - * All t-tests are for comparisons of Sprays versus Spray A. - * Emprirical mean for A is the intercept. - * Other group means are the itc plus their coefficient. -* If we omit an intercept, then it includes terms for all levels of the factor. - * Group means are the coefficients. - * Tests are tests of whether the groups are different than zero. (Are the expected counts zero for that spray.) -* If we want comparisons between, Spray B and C, say we could refit the model with C (or B) as the reference level. - ---- -## Reordering the levels -```{r} -spray2 <- relevel(InsectSprays$spray, "C") -summary(lm(count ~ spray2, data = InsectSprays))$coef -``` - ---- -## Doing it manually -Equivalently -$$Var(\hat \beta_B - \hat \beta_C) = Var(\hat \beta_B) + Var(\hat \beta_C) - 2 Cov(\hat \beta_B, \hat \beta_C)$$ -```{r} -fit <- lm(count ~ spray, data = InsectSprays) #A is ref -bbmbc <- coef(fit)[2] - coef(fit)[3] #B - C -temp <- summary(fit) -se <- temp$sigma * sqrt(temp$cov.unscaled[2, 2] + temp$cov.unscaled[3,3] - 2 *temp$cov.unscaled[2,3]) -t <- (bbmbc) / se -p <- pt(-abs(t), df = fit$df) -out <- c(bbmbc, se, t, p) -names(out) <- c("B - C", "SE", "T", "P") -round(out, 3) -``` - ---- -## Other thoughts on this data -* Counts are bounded from below by 0, violates the assumption of normality of the errors. - * Also there are counts near zero, so both the actual assumption and the intent of the assumption are violated. -* Variance does not appear to be constant. -* Perhaps taking logs of the counts would help. - * There are 0 counts, so maybe log(Count + 1) -* Also, we'll cover Poisson GLMs for fitting count data. - ---- - -## Example - Millenium Development Goal 1 - -[http://www.un.org/millenniumgoals/pdf/MDG_FS_1_EN.pdf](http://www.un.org/millenniumgoals/pdf/MDG_FS_1_EN.pdf) - -[http://apps.who.int/gho/athena/data/GHO/WHOSIS_000008.csv?profile=text&filter=COUNTRY:*;SEX:*](http://apps.who.int/gho/athena/data/GHO/WHOSIS_000008.csv?profile=text&filter=COUNTRY:*;SEX:*) - ---- - -## WHO childhood hunger data - - -```{r whoDataLoad} -#download.file("http://apps.who.int/gho/athena/data/GHO/WHOSIS_000008.csv?profile=text&filter=COUNTRY:*;SEX:*","hunger.csv",method="curl") -hunger <- read.csv("hunger.csv") -hunger <- hunger[hunger$Sex!="Both sexes",] -head(hunger) -``` - ---- - -## Plot percent hungry versus time - -```{r, dependson="whoDataLoad",fig.height=4,fig.width=4} -lm1 <- lm(hunger$Numeric ~ hunger$Year) -plot(hunger$Year,hunger$Numeric,pch=19,col="blue") -``` - ---- - -## Remember the linear model - -$$Hu_i = b_0 + b_1 Y_i + e_i$$ - -$b_0$ = percent hungry at Year 0 - -$b_1$ = decrease in percent hungry per year - -$e_i$ = everything we didn't measure - ---- - -## Add the linear model - -```{r, dependson="whoDataLoad",fig.height=4,fig.width=4} -lm1 <- lm(hunger$Numeric ~ hunger$Year) -plot(hunger$Year,hunger$Numeric,pch=19,col="blue") -lines(hunger$Year,lm1$fitted,lwd=3,col="darkgrey") -``` - - ---- - -## Color by male/female - -```{r, dependson="whoDataLoad",fig.height=4,fig.width=4} -plot(hunger$Year,hunger$Numeric,pch=19) -points(hunger$Year,hunger$Numeric,pch=19,col=((hunger$Sex=="Male")*1+1)) -``` - ---- - -## Now two lines - -$$HuF_i = bf_0 + bf_1 YF_i + ef_i$$ - -$bf_0$ = percent of girls hungry at Year 0 - -$bf_1$ = decrease in percent of girls hungry per year - -$ef_i$ = everything we didn't measure - - -$$HuM_i = bm_0 + bm_1 YM_i + em_i$$ - -$bm_0$ = percent of boys hungry at Year 0 - -$bm_1$ = decrease in percent of boys hungry per year - -$em_i$ = everything we didn't measure - - - ---- - -## Color by male/female - -```{r, dependson="whoDataLoad",fig.height=3.5,fig.width=4} -lmM <- lm(hunger$Numeric[hunger$Sex=="Male"] ~ hunger$Year[hunger$Sex=="Male"]) -lmF <- lm(hunger$Numeric[hunger$Sex=="Female"] ~ hunger$Year[hunger$Sex=="Female"]) -plot(hunger$Year,hunger$Numeric,pch=19) -points(hunger$Year,hunger$Numeric,pch=19,col=((hunger$Sex=="Male")*1+1)) -lines(hunger$Year[hunger$Sex=="Male"],lmM$fitted,col="black",lwd=3) -lines(hunger$Year[hunger$Sex=="Female"],lmF$fitted,col="red",lwd=3) -``` - - ---- - -## Two lines, same slope - -$$Hu_i = b_0 + b_1 \mathbb{1}(Sex_i="Male") + b_2 Y_i + e^*_i$$ - -$b_0$ - percent hungry at year zero for females - -$b_0 + b_1$ - percent hungry at year zero for males - -$b_2$ - change in percent hungry (for either males or females) in one year - -$e^*_i$ - everything we didn't measure - ---- - -## Two lines, same slope in R - - -```{r, dependson="whoDataLoad",fig.height=4,fig.width=4} -lmBoth <- lm(hunger$Numeric ~ hunger$Year + hunger$Sex) -plot(hunger$Year,hunger$Numeric,pch=19) -points(hunger$Year,hunger$Numeric,pch=19,col=((hunger$Sex=="Male")*1+1)) -abline(c(lmBoth$coeff[1],lmBoth$coeff[2]),col="red",lwd=3) -abline(c(lmBoth$coeff[1] + lmBoth$coeff[3],lmBoth$coeff[2] ),col="black",lwd=3) -``` - ---- - -## Two lines, different slopes (interactions) - -$$Hu_i = b_0 + b_1 \mathbb{1}(Sex_i="Male") + b_2 Y_i + b_3 \mathbb{1}(Sex_i="Male")\times Y_i + e^+_i$$ - -$b_0$ - percent hungry at year zero for females - -$b_0 + b_1$ - percent hungry at year zero for males - -$b_2$ - change in percent hungry (females) in one year - -$b_2 + b_3$ - change in percent hungry (males) in one year - -$e^+_i$ - everything we didn't measure - ---- - -## Two lines, different slopes in R - - -```{r lmBothChunk, dependson="whoDataLoad",fig.height=4,fig.width=4} -lmBoth <- lm(hunger$Numeric ~ hunger$Year + hunger$Sex + hunger$Sex*hunger$Year) -plot(hunger$Year,hunger$Numeric,pch=19) -points(hunger$Year,hunger$Numeric,pch=19,col=((hunger$Sex=="Male")*1+1)) -abline(c(lmBoth$coeff[1],lmBoth$coeff[2]),col="red",lwd=3) -abline(c(lmBoth$coeff[1] + lmBoth$coeff[3],lmBoth$coeff[2] +lmBoth$coeff[4]),col="black",lwd=3) -``` - - ---- - -## Two lines, different slopes in R - - -```{r, dependson="lmBothChunk",fig.height=4,fig.width=4} -summary(lmBoth) -``` - ---- -## Interpretting a continuous interaction -$$ -E[Y_i | X_{1i}=x_1, X_{2i}=x_2] = \beta_0 + \beta_1 x_{1} + \beta_2 x_{2} + \beta_3 x_{1}x_{2} -$$ -Holding $X_2$ constant we have -$$ -E[Y_i | X_{1i}=x_1+1, X_{2i}=x_2]-E[Y_i | X_{1i}=x_1, X_{2i}=x_2] -= \beta_1 + \beta_3 x_{2} -$$ -And thus the expected change in $Y$ per unit change in $X_1$ holding all else constant is not constant. $\beta_1$ is the slope when $x_{2} = 0$. Note further that: -$$ -E[Y_i | X_{1i}=x_1+1, X_{2i}=x_2+1]-E[Y_i | X_{1i}=x_1, X_{2i}=x_2+1] -$$ -$$ --E[Y_i | X_{1i}=x_1+1, X_{2i}=x_2]-E[Y_i | X_{1i}=x_1, X_{2i}=x_2] -$$ -$$ -=\beta_3 -$$ -Thus, $\beta_3$ is the change in the expected change in $Y$ per unit change in $X_1$, per unit change in $X_2$. - -Or, the change in the slope relating $X_1$ and $Y$ per unit change in $X_2$. - ---- - -## Example - -$$Hu_i = b_0 + b_1 In_i + b_2 Y_i + b_3 In_i \times Y_i + e^+_i$$ - -$b_0$ - percent hungry at year zero for children with whose parents have no income - -$b_1$ - change in percent hungry for each dollar of income in year zero - -$b_2$ - change in percent hungry in one year for children whose parents have no income - -$b_3$ - increased change in percent hungry by year for each dollar of income - e.g. if income is $10,000, then change in percent hungry in one year will be - -$$b_2 + 1e4 \times b_3$$ - -$e^+_i$ - everything we didn't measure - -__Lot's of care/caution needed!__ - - +--- +title : Multivariable regression examples +subtitle : Regression Models +author : Brian Caffo, Jeff Leek and Roger Peng +job : Johns Hopkins Bloomberg School of Public Health +logo : bloomberg_shield.png +framework : io2012 # {io2012, html5slides, shower, dzslides, ...} +highlighter : highlight.js # {highlight.js, prettify, highlight} +hitheme : tomorrow # +url: + lib: ../../librariesNew + assets: ../../assets +widgets : [mathjax] # {mathjax, quiz, bootstrap} +mode : selfcontained # {standalone, draft} +--- +```{r setup, cache = F, echo = F, message = F, warning = F, tidy = F, results='hide'} +# Must explicitly include knitr or the chunks will fail, at least in Linux +library(knitr) +# make this an external chunk that can be included in any file +options(width = 100) +opts_chunk$set(message = F, error = F, warning = F, comment = NA, fig.align = 'center', dpi = 100, tidy = F, cache.path = '.cache/', fig.path = 'fig/') + +options(xtable.type = 'html') +knit_hooks$set(inline = function(x) { + if(is.numeric(x)) { + round(x, getOption('digits')) + } else { + paste(as.character(x), collapse = ', ') + } +}) +knit_hooks$set(plot = knitr:::hook_plot_html) +runif(1) +``` +## Swiss fertility data +```{r, fig.height=4.5, fig.width=4.5} +library(datasets); data(swiss); require(stats); require(graphics) +pairs(swiss, panel = panel.smooth, main = "Swiss data", col = 3 + (swiss$Catholic > 50)) +``` + +## `?swiss` +### Description +Standardized fertility measure and socio-economic indicators for each of 47 French-speaking provinces of Switzerland at about 1888. + +A data frame with 47 observations on 6 variables, each of which is in percent, i.e., in [0, 100]. + +* [,1] Fertility Ig, ‘ common standardized fertility measure’ +* [,2] Agriculture % of males involved in agriculture as occupation +* [,3] Examination % draftees receiving highest mark on army examination +* [,4] Education % education beyond primary school for draftees. +* [,5] Catholic % ‘catholic’ (as opposed to ‘protestant’). +* [,6] Infant.Mortality live births who live less than 1 year. + +All variables but ‘Fertility’ give proportions of the population. + + +## Calling `lm` +`summary(lm(Fertility ~ . , data = swiss))` +```{r, echo = FALSE} +summary(lm(Fertility ~ . , data = swiss))$coefficients +``` + +## Example interpretation +* Agriculture is expressed in percentages (0 - 100) +* Estimate is -0.1721. +* We estimate an expected 0.17 decrease in standardized fertility for every 1\% increase in percentage of males involved in agriculture in holding the remaining variables constant. +* The t-test for $H_0: \beta_{Agri} = 0$ versus $H_a: \beta_{Agri} \neq 0$ is significant. +* Interestingly, the unadjusted estimate is +```{r} +summary(lm(Fertility ~ Agriculture, data = swiss))$coefficients +``` + +How can adjustment reverse the sign of an effect? Let's try a simulation. +```{r, echo = TRUE} +n <- 100; x2 <- 1 : n; x1 <- .01 * x2 + runif(n, -.1, .1); y = -x1 + x2 + rnorm(n, sd = .01) +summary(lm(y ~ x1))$coef +summary(lm(y ~ x1 + x2))$coef +``` + +```{r, echo = FALSE, fig.height=5, fig.width=10, results = 'show'} +par(mfrow = c(1, 2)) +plot(x1, y, pch=21,col="black",bg=topo.colors(n)[x2], frame = FALSE, cex = 1.5) +title('Unadjusted, color is X2') +abline(lm(y ~ x1), lwd = 2) +plot(resid(lm(x1 ~ x2)), resid(lm(y ~ x2)), pch = 21, col = "black", bg = "lightblue", frame = FALSE, cex = 1.5) +title('Adjusted') +abline(0, coef(lm(y ~ x1 + x2))[2], lwd = 2) +``` + +## Back to this data set +* The sign reverses itself with the inclusion of Examination and Education, both of which are negatively correlated with Agriculture. +* The percent of males in the province working in agriculture is negatively related to educational attainment (correlation of `r cor(swiss$Agriculture, swiss$Education)`) and Education and Examination (correlation of `r cor(swiss$Education, swiss$Examination)`) are obviously measuring similar things. + * Is the positive marginal an artifact for not having accounted for, say, Education level? (Education does have a stronger effect, by the way.) +* At the minimum, anyone claiming that provinces that are more agricultural have higher fertility rates would immediately be open to criticism. + +## What if we include an unnecessary variable? +z adds no new linear information, since it's a linear +combination of variables already included. R just drops +terms that are linear combinations of other terms. +```{r, echo = TRUE} +z <- swiss$Agriculture + swiss$Education +lm(Fertility ~ . + z, data = swiss) +``` + + +## Dummy variables are smart +* Consider the linear model +$$ +Y_i = \beta_0 + X_{i1} \beta_1 + \epsilon_{i} +$$ +where each $X_{i1}$ is binary so that it is a 1 if measurement $i$ is in a group and 0 otherwise. (Treated versus not in a clinical trial, for example.) +* Then for people in the group $E[Y_i] = \beta_0 + \beta_1$ +* And for people not in the group $E[Y_i] = \beta_0$ +* The LS fits work out to be $\hat \beta_0 + \hat \beta_1$ is the mean for those in the group and $\hat \beta_0$ is the mean for those not in the group. +* $\beta_1$ is interpretted as the increase or decrease in the mean comparing those in the group to those not. +* Note including a binary variable that is 1 for those not in the group would be redundant. It would create three parameters to describe two means. + +## More than 2 levels +* Consider a multilevel factor level. For didactic reasons, let's say a three level factor (example, US political party affiliation: Republican, Democrat, Independent) +* $Y_i = \beta_0 + X_{i1} \beta_1 + X_{i2} \beta_2 + \epsilon_i$. +* $X_{i1}$ is 1 for Republicans and 0 otherwise. +* $X_{i2}$ is 1 for Democrats and 0 otherwise. +* If $i$ is Republican $E[Y_i] = \beta_0 +\beta_1$ +* If $i$ is Democrat $E[Y_i] = \beta_0 + \beta_2$. +* If $i$ is Independent $E[Y_i] = \beta_0$. +* $\beta_1$ compares Republicans to Independents. +* $\beta_2$ compares Democrats to Independents. +* $\beta_1 - \beta_2$ compares Republicans to Democrats. +* (Choice of reference category changes the interpretation.) + +## Insect Sprays +```{r, echo = FALSE, fig.height=5, fig.width=5} +require(datasets);data(InsectSprays) +require(stats); require(graphics) +boxplot(count ~ spray, data = InsectSprays, + xlab = "Type of spray", ylab = "Insect count", + main = "InsectSprays data", varwidth = TRUE, col = "lightgray") +``` + +## Linear model fit, group A is the reference +```{r, echo= TRUE} +summary(lm(count ~ spray, data = InsectSprays))$coef +``` + +## Hard coding the dummy variables +```{r, echo= TRUE} +summary(lm(count ~ + I(1 * (spray == 'B')) + I(1 * (spray == 'C')) + + I(1 * (spray == 'D')) + I(1 * (spray == 'E')) + + I(1 * (spray == 'F')) + , data = InsectSprays))$coef +``` + +## What if we include all 6? +```{r, echo= TRUE} +lm(count ~ + I(1 * (spray == 'B')) + I(1 * (spray == 'C')) + + I(1 * (spray == 'D')) + I(1 * (spray == 'E')) + + I(1 * (spray == 'F')) + I(1 * (spray == 'A')), data = InsectSprays) +``` + +## What if we omit the intercept? +```{r, echo= TRUE} +summary(lm(count ~ spray - 1, data = InsectSprays))$coef +unique(ave(InsectSprays$count, InsectSprays$spray)) +``` + +## Summary +* If we treat Spray as a factor, R includes an intercept and omits the alphabetically first level of the factor. + * All t-tests are for comparisons of Sprays versus Spray A. + * Emprirical mean for A is the intercept. + * Other group means are the itc plus their coefficient. +* If we omit an intercept, then it includes terms for all levels of the factor. + * Group means are the coefficients. + * Tests are tests of whether the groups are different than zero. (Are the expected counts zero for that spray.) +* If we want comparisons between, Spray B and C, say we could refit the model with C (or B) as the reference level. + +## Reordering the levels +```{r} +spray2 <- relevel(InsectSprays$spray, "C") +summary(lm(count ~ spray2, data = InsectSprays))$coef +``` + +## Doing it manually +Equivalently +$$Var(\hat \beta_B - \hat \beta_C) = Var(\hat \beta_B) + Var(\hat \beta_C) - 2 Cov(\hat \beta_B, \hat \beta_C)$$ +```{r} +fit <- lm(count ~ spray, data = InsectSprays) #A is ref +bbmbc <- coef(fit)[2] - coef(fit)[3] #B - C +temp <- summary(fit) +se <- temp$sigma * sqrt(temp$cov.unscaled[2, 2] + temp$cov.unscaled[3,3] - 2 *temp$cov.unscaled[2,3]) +t <- (bbmbc) / se +p <- pt(-abs(t), df = fit$df) +out <- c(bbmbc, se, t, p) +names(out) <- c("B - C", "SE", "T", "P") +round(out, 3) +``` + +## Other thoughts on this data +* Counts are bounded from below by 0, violates the assumption of normality of the errors. + * Also there are counts near zero, so both the actual assumption and the intent of the assumption are violated. +* Variance does not appear to be constant. +* Perhaps taking logs of the counts would help. + * There are 0 counts, so maybe log(Count + 1) +* Also, we'll cover Poisson GLMs for fitting count data. + + +## Example - Millenium Development Goal 1 + +[http://www.un.org/millenniumgoals/pdf/MDG_FS_1_EN.pdf](http://www.un.org/millenniumgoals/pdf/MDG_FS_1_EN.pdf) + +[http://apps.who.int/gho/athena/data/GHO/WHOSIS_000008.csv?profile=text&filter=COUNTRY:*;SEX:*](http://apps.who.int/gho/athena/data/GHO/WHOSIS_000008.csv?profile=text&filter=COUNTRY:*;SEX:*) + + +## WHO childhood hunger data + + +```{r whoDataLoad} +#download.file("http://apps.who.int/gho/athena/data/GHO/WHOSIS_000008.csv?profile=text&filter=COUNTRY:*;SEX:*","hunger.csv",method="curl") +hunger <- read.csv("hunger.csv") +hunger <- hunger[hunger$Sex!="Both sexes",] +head(hunger) +``` + + +## Plot percent hungry versus time + +```{r, dependson="whoDataLoad",fig.height=4,fig.width=4} +lm1 <- lm(hunger$Numeric ~ hunger$Year) +plot(hunger$Year,hunger$Numeric,pch=19,col="blue") +``` + + +## Remember the linear model + +$$Hu_i = b_0 + b_1 Y_i + e_i$$ + +$b_0$ = percent hungry at Year 0 + +$b_1$ = decrease in percent hungry per year + +$e_i$ = everything we didn't measure + + +## Add the linear model + +```{r, dependson="whoDataLoad",fig.height=4,fig.width=4} +lm1 <- lm(hunger$Numeric ~ hunger$Year) +plot(hunger$Year,hunger$Numeric,pch=19,col="blue") +lines(hunger$Year,lm1$fitted,lwd=3,col="darkgrey") +``` + + + +## Color by male/female + +```{r, dependson="whoDataLoad",fig.height=4,fig.width=4} +plot(hunger$Year,hunger$Numeric,pch=19) +points(hunger$Year,hunger$Numeric,pch=19,col=((hunger$Sex=="Male")*1+1)) +``` + + +## Now two lines + +$$HuF_i = bf_0 + bf_1 YF_i + ef_i$$ + +$bf_0$ = percent of girls hungry at Year 0 + +$bf_1$ = decrease in percent of girls hungry per year + +$ef_i$ = everything we didn't measure + + +$$HuM_i = bm_0 + bm_1 YM_i + em_i$$ + +$bm_0$ = percent of boys hungry at Year 0 + +$bm_1$ = decrease in percent of boys hungry per year + +$em_i$ = everything we didn't measure + + + + +## Color by male/female + +```{r, dependson="whoDataLoad",fig.height=3.5,fig.width=4} +lmM <- lm(hunger$Numeric[hunger$Sex=="Male"] ~ hunger$Year[hunger$Sex=="Male"]) +lmF <- lm(hunger$Numeric[hunger$Sex=="Female"] ~ hunger$Year[hunger$Sex=="Female"]) +plot(hunger$Year,hunger$Numeric,pch=19) +points(hunger$Year,hunger$Numeric,pch=19,col=((hunger$Sex=="Male")*1+1)) +lines(hunger$Year[hunger$Sex=="Male"],lmM$fitted,col="black",lwd=3) +lines(hunger$Year[hunger$Sex=="Female"],lmF$fitted,col="red",lwd=3) +``` + + + +## Two lines, same slope + +$$Hu_i = b_0 + b_1 \mathbb{1}(Sex_i="Male") + b_2 Y_i + e^*_i$$ + +$b_0$ - percent hungry at year zero for females + +$b_0 + b_1$ - percent hungry at year zero for males + +$b_2$ - change in percent hungry (for either males or females) in one year + +$e^*_i$ - everything we didn't measure + + +## Two lines, same slope in R + + +```{r, dependson="whoDataLoad",fig.height=4,fig.width=4} +lmBoth <- lm(hunger$Numeric ~ hunger$Year + hunger$Sex) +plot(hunger$Year,hunger$Numeric,pch=19) +points(hunger$Year,hunger$Numeric,pch=19,col=((hunger$Sex=="Male")*1+1)) +abline(c(lmBoth$coeff[1],lmBoth$coeff[2]),col="red",lwd=3) +abline(c(lmBoth$coeff[1] + lmBoth$coeff[3],lmBoth$coeff[2] ),col="black",lwd=3) +``` + + +## Two lines, different slopes (interactions) + +$$Hu_i = b_0 + b_1 \mathbb{1}(Sex_i="Male") + b_2 Y_i + b_3 \mathbb{1}(Sex_i="Male")\times Y_i + e^+_i$$ + +$b_0$ - percent hungry at year zero for females + +$b_0 + b_1$ - percent hungry at year zero for males + +$b_2$ - change in percent hungry (females) in one year + +$b_2 + b_3$ - change in percent hungry (males) in one year + +$e^+_i$ - everything we didn't measure + + +## Two lines, different slopes in R + + +```{r lmBothChunk, dependson="whoDataLoad",fig.height=4,fig.width=4} +lmBoth <- lm(hunger$Numeric ~ hunger$Year + hunger$Sex + hunger$Sex*hunger$Year) +plot(hunger$Year,hunger$Numeric,pch=19) +points(hunger$Year,hunger$Numeric,pch=19,col=((hunger$Sex=="Male")*1+1)) +abline(c(lmBoth$coeff[1],lmBoth$coeff[2]),col="red",lwd=3) +abline(c(lmBoth$coeff[1] + lmBoth$coeff[3],lmBoth$coeff[2] +lmBoth$coeff[4]),col="black",lwd=3) +``` + + + +## Two lines, different slopes in R + + +```{r, dependson="lmBothChunk",fig.height=4,fig.width=4} +summary(lmBoth) +``` + +## Interpretting a continuous interaction +$$ +E[Y_i | X_{1i}=x_1, X_{2i}=x_2] = \beta_0 + \beta_1 x_{1} + \beta_2 x_{2} + \beta_3 x_{1}x_{2} +$$ +Holding $X_2$ constant we have +$$ +E[Y_i | X_{1i}=x_1+1, X_{2i}=x_2]-E[Y_i | X_{1i}=x_1, X_{2i}=x_2] += \beta_1 + \beta_3 x_{2} +$$ +And thus the expected change in $Y$ per unit change in $X_1$ holding all else constant is not constant. $\beta_1$ is the slope when $x_{2} = 0$. Note further that: +$$ +E[Y_i | X_{1i}=x_1+1, X_{2i}=x_2+1]-E[Y_i | X_{1i}=x_1, X_{2i}=x_2+1] +$$ +$$ +-E[Y_i | X_{1i}=x_1+1, X_{2i}=x_2]-E[Y_i | X_{1i}=x_1, X_{2i}=x_2] +$$ +$$ +=\beta_3 +$$ +Thus, $\beta_3$ is the change in the expected change in $Y$ per unit change in $X_1$, per unit change in $X_2$. + +Or, the change in the slope relating $X_1$ and $Y$ per unit change in $X_2$. + + +## Example + +$$Hu_i = b_0 + b_1 In_i + b_2 Y_i + b_3 In_i \times Y_i + e^+_i$$ + +$b_0$ - percent hungry at year zero for children with whose parents have no income + +$b_1$ - change in percent hungry for each dollar of income in year zero + +$b_2$ - change in percent hungry in one year for children whose parents have no income + +$b_3$ - increased change in percent hungry by year for each dollar of income - e.g. if income is $10,000, then change in percent hungry in one year will be + +$$b_2 + 1e4 \times b_3$$ + +$e^+_i$ - everything we didn't measure + +__Lot's of care/caution needed!__ + + diff --git a/07_RegressionModels/02_03_adjustment/index.Rmd b/07_RegressionModels/02_03_adjustment/index.Rmd index 3755b45c9..a5e795360 100644 --- a/07_RegressionModels/02_03_adjustment/index.Rmd +++ b/07_RegressionModels/02_03_adjustment/index.Rmd @@ -14,6 +14,8 @@ widgets : [mathjax] # {mathjax, quiz, bootstrap} mode : selfcontained # {standalone, draft} --- ```{r setup, cache = F, echo = F, message = F, warning = F, tidy = F, results='hide'} +# Must explicitly include knitr or the chunks will fail, at least in Linux +library(knitr) # make this an external chunk that can be included in any file options(width = 100) opts_chunk$set(message = F, error = F, warning = F, comment = NA, fig.align = 'center', dpi = 100, tidy = F, cache.path = '.cache/', fig.path = 'fig/') @@ -48,7 +50,7 @@ points(x[(n/2 + 1) : n], y[(n/2 + 1) : n], pch = 21, col = "black", bg = "salmon ``` ---- + ## Simulation 1 ```{r, fig.height=5, fig.width=5, echo = FALSE, results='hide'} n <- 100; t <- rep(c(0, 1), c(n/2, n/2)); x <- c(runif(n/2), runif(n/2)); @@ -65,7 +67,7 @@ points(x[1 : (n/2)], y[1 : (n/2)], pch = 21, col = "black", bg = "lightblue", ce points(x[(n/2 + 1) : n], y[(n/2 + 1) : n], pch = 21, col = "black", bg = "salmon", cex = 2) ``` ---- + ## Discussion ### Some things to note in this simulation * The X variable is unrelated to group status @@ -75,7 +77,7 @@ points(x[(n/2 + 1) : n], y[(n/2 + 1) : n], pch = 21, col = "black", bg = "salmon * The relationship between group status and Y is constant depending on X. * The relationship between group and Y disregarding X is about the same as holding X constant ---- + ## Simulation 2 ```{r, fig.height=5, fig.width=5, echo = FALSE, results='hide'} n <- 100; t <- rep(c(0, 1), c(n/2, n/2)); x <- c(runif(n/2), 1.5 + runif(n/2)); @@ -93,7 +95,7 @@ points(x[(n/2 + 1) : n], y[(n/2 + 1) : n], pch = 21, col = "black", bg = "salmon ``` ---- + ## Discussion ### Some things to note in this simulation * The X variable is highly related to group status @@ -106,7 +108,7 @@ points(x[(n/2 + 1) : n], y[(n/2 + 1) : n], pch = 21, col = "black", bg = "salmon group and Y. * This conclusion is entirely based on the model. ---- + ## Simulation 3 ```{r, fig.height=5, fig.width=5, echo = FALSE, results='hide'} n <- 100; t <- rep(c(0, 1), c(n/2, n/2)); x <- c(runif(n/2), .9 + runif(n/2)); @@ -123,7 +125,7 @@ points(x[1 : (n/2)], y[1 : (n/2)], pch = 21, col = "black", bg = "lightblue", ce points(x[(n/2 + 1) : n], y[(n/2 + 1) : n], pch = 21, col = "black", bg = "salmon", cex = 2) ``` ---- + ## Discussion ### Some things to note in this simulation * Marginal association has red group higher than blue. @@ -134,7 +136,7 @@ holding X fixed. ---- + ## Simulation 4 ```{r, fig.height=5, fig.width=5, echo = FALSE, results='hide'} n <- 100; t <- rep(c(0, 1), c(n/2, n/2)); x <- c(.5 + runif(n/2), runif(n/2)); @@ -151,7 +153,7 @@ points(x[1 : (n/2)], y[1 : (n/2)], pch = 21, col = "black", bg = "lightblue", ce points(x[(n/2 + 1) : n], y[(n/2 + 1) : n], pch = 21, col = "black", bg = "salmon", cex = 2) ``` ---- + ## Discussion ### Some things to note in this simulation * No marginal association between group status and Y. @@ -160,7 +162,7 @@ points(x[(n/2 + 1) : n], y[(n/2 + 1) : n], pch = 21, col = "black", bg = "salmon * There is lots of direct evidence for comparing red and blue holding X fixed. ---- + ## Simulation 5 ```{r, fig.height=5, fig.width=5, echo = FALSE, results='hide'} n <- 100; t <- rep(c(0, 1), c(n/2, n/2)); x <- c(runif(n/2, -1, 1), runif(n/2, -1, 1)); @@ -177,7 +179,7 @@ points(x[1 : (n/2)], y[1 : (n/2)], pch = 21, col = "black", bg = "lightblue", ce points(x[(n/2 + 1) : n], y[(n/2 + 1) : n], pch = 21, col = "black", bg = "salmon", cex = 2) ``` ---- + ## Discussion ### Some things to note from this simulation * There is no such thing as a group effect here. @@ -186,7 +188,7 @@ points(x[(n/2 + 1) : n], y[(n/2 + 1) : n], pch = 21, col = "black", bg = "salmon * Group status and X unrelated. * There's lots of information about group effects holding X fixed. ---- + ### Simulation 6 ```{r, fig.height=5, fig.width=5, echo = FALSE, results='hide'} p <- 1 @@ -199,14 +201,14 @@ co.pal <- heat.colors(n) points(x1, y, pch = 21, col = "black", bg = co.pal[round((n - 1) * x2 + 1)], cex = 2) ``` ---- + ### Do this to investigate the bivariate relationship ``` library(rgl) plot3d(x1, x2, y) ``` ---- + ### Residual relationship ```{r, fig.height=5, fig.width=5, echo = FALSE, results='hide'} plot(resid(lm(x1 ~ x2)), resid(lm(y ~ x2)), frame = FALSE, col = "black", bg = "lightblue", pch = 21, cex = 2) @@ -214,7 +216,7 @@ abline(lm(I(resid(lm(x1 ~ x2))) ~ I(resid(lm(y ~ x2)))), lwd = 2) ``` ---- + ## Discussion ### Some things to note from this simulation @@ -224,7 +226,7 @@ abline(lm(I(resid(lm(x1 ~ x2))) ~ I(resid(lm(y ~ x2)))), lwd = 2) by considering X2. * Almost no residual variability after accounting for X2. ---- + ## Some final thoughts * Modeling multivariate relationships is difficult. * Play around with simulations to see how the diff --git a/07_RegressionModels/02_04_residuals_variation_diagnostics/index.Rmd b/07_RegressionModels/02_04_residuals_variation_diagnostics/index.Rmd index e233e74d0..f2cba8c1b 100644 --- a/07_RegressionModels/02_04_residuals_variation_diagnostics/index.Rmd +++ b/07_RegressionModels/02_04_residuals_variation_diagnostics/index.Rmd @@ -14,6 +14,7 @@ widgets : [mathjax] # {mathjax, quiz, bootstrap} mode : selfcontained # {standalone, draft} --- ```{r setup, cache = F, echo = F, message = F, warning = F, tidy = F, results='hide'} +# Must explicitly include knitr or the chunks will fail, at least in Linux library(knitr) # make this an external chunk that can be included in any file options(width = 100) @@ -37,13 +38,13 @@ runif(1) $e_i = Y_i - \hat Y_i = Y_i - \sum_{k=1}^p X_{ik} \hat \beta_j$ * Our estimate of residual variation is $\hat \sigma^2 = \frac{\sum_{i=1}^n e_i^2}{n-p}$, the $n-p$ so that $E[\hat \sigma^2] = \sigma^2$ ---- + ```{r, fig.height = 5, fig.width = 5} data(swiss); par(mfrow = c(2, 2)) fit <- lm(Fertility ~ . , data = swiss); plot(fit) ``` ---- + ## Influential, high leverage and outlying points ```{r, fig.height = 5, fig.width=5, echo = FALSE, results='hide'} n <- 100; x <- rnorm(n); y <- x + rnorm(n, sd = .3) @@ -56,7 +57,7 @@ points(5, 5, cex = 2, bg = "darkorange", col = "black", pch = 21) points(5, 0, cex = 2, bg = "darkorange", col = "black", pch = 21) ``` ---- + ## Summary of the plot Calling a point an outlier is vague. * Outliers can be the result of spurious or real processes. @@ -67,7 +68,7 @@ Calling a point an outlier is vague. * Upper right hand point has high leverage, but chooses not to extert it and thus would have low actual influence by conforming to the regresison relationship of the other points. * Lower right hand point has high leverage and would exert it if it were included in the fit. ---- + ## Influence measures * Do `?influence.measures` to see the full suite of influence measures in stats. The measures include * `rstandard` - standardized residuals, residuals divided by their standard deviations) @@ -79,7 +80,7 @@ Calling a point an outlier is vague. * `resid` - returns the ordinary residuals * `resid(fit) / (1 - hatvalues(fit))` where `fit` is the linear model fit returns the PRESS residuals, i.e. the leave one out cross validation residuals - the difference in the response and the predicted response at data point $i$, where it was not included in the model fitting. ---- + ## How do I use all of these things? * Be wary of simplistic rules for diagnostic plots and measures. The use of these tools is context specific. It's better to understand what they are trying to accomplish and use them judiciously. * Not all of the measures have meaningful absolute scales. You can look at them relative to the values across the data. @@ -92,7 +93,7 @@ Calling a point an outlier is vague. * Leverage measures (hat values) can be useful for diagnosing data entry errors. * Influence measures get to the bottom line, 'how does deleting or including this point impact a particular aspect of the model'. ---- + ## Case 1 ```{r, fig.height=5, fig.width=5, echo=FALSE} x <- c(10, rnorm(n)); y <- c(10, c(rnorm(n))) @@ -100,7 +101,7 @@ plot(x, y, frame = FALSE, cex = 2, pch = 21, bg = "lightblue", col = "black") abline(lm(y ~ x)) ``` ---- + ## The code ``` n <- 100; x <- c(10, rnorm(n)); y <- c(10, c(rnorm(n))) @@ -109,7 +110,7 @@ abline(lm(y ~ x)) ``` * The point `c(10, 10)` has created a strong regression relationship where there shouldn't be one. ---- + ## Showing a couple of the diagnostic values ```{r} fit <- lm(y ~ x) @@ -117,7 +118,7 @@ round(dfbetas(fit)[1 : 10, 2], 3) round(hatvalues(fit)[1 : 10], 3) ``` ---- + ## Case 2 ```{r, fig.height=5, fig.width=5, echo=FALSE} x <- rnorm(n); y <- x + rnorm(n, sd = .3) @@ -127,14 +128,14 @@ fit2 <- lm(y ~ x) abline(fit2) ``` ---- + ## Looking at some of the diagnostics ```{r, echo = TRUE} round(dfbetas(fit2)[1 : 10, 2], 3) round(hatvalues(fit2)[1 : 10], 3) ``` ---- + ## Example described by Stefanski TAS 2007 Vol 61. ```{r, fig.height=4, fig.width=4} ## Don't everyone hit this server at once. Read the paper first. @@ -142,20 +143,20 @@ dat <- read.table('http://www4.stat.ncsu.edu/~stefanski/NSF_Supported/Hidden_Ima pairs(dat) ``` ---- + ## Got our P-values, should we bother to do a residual plot? ```{r} summary(lm(V1 ~ . -1, data = dat))$coef ``` ---- + ## Residual plot ### P-values significant, O RLY? ```{r, fig.height=4, fig.width=4, echo = TRUE} fit <- lm(V1 ~ . - 1, data = dat); plot(predict(fit), resid(fit), pch = '.') ``` ---- + ## Back to the Swiss data ```{r, fig.height = 5, fig.width = 5, echo=FALSE} data(swiss); par(mfrow = c(2, 2)) diff --git a/07_RegressionModels/02_05_multipleVariables/index.Rmd b/07_RegressionModels/02_05_multipleVariables/index.Rmd index 043b7dbf3..a95950d41 100644 --- a/07_RegressionModels/02_05_multipleVariables/index.Rmd +++ b/07_RegressionModels/02_05_multipleVariables/index.Rmd @@ -1,176 +1,178 @@ ---- -title : Multiple variables -subtitle : Regression -author : Brian Caffo, Jeff Leek, Roger Peng -job : Johns Hopkins Bloomberg School of Public Health -logo : bloomberg_shield.png -framework : io2012 # {io2012, html5slides, shower, dzslides, ...} -highlighter : highlight.js # {highlight.js, prettify, highlight} -hitheme : tomorrow # -url: - lib: ../../librariesNew - assets: ../../assets -widgets : [mathjax] # {mathjax, quiz, bootstrap} -mode : selfcontained # {standalone, draft} ---- -```{r setup, cache = F, echo = F, message = F, warning = F, tidy = F, results='hide'} -# make this an external chunk that can be included in any file -options(width = 100) -opts_chunk$set(message = F, error = F, warning = F, comment = NA, fig.align = 'center', dpi = 100, tidy = F, cache.path = '.cache/', fig.path = 'fig/') - -options(xtable.type = 'html') -knit_hooks$set(inline = function(x) { - if(is.numeric(x)) { - round(x, getOption('digits')) - } else { - paste(as.character(x), collapse = ', ') - } -}) -knit_hooks$set(plot = knitr:::hook_plot_html) -runif(1) -``` -## Multivariable regression -* We have an entire class on prediction and machine learning, so we'll focus on modeling. - * Prediction has a different set of criteria, needs for interpretability and standards for generalizability. - * In modeling, our interest lies in parsimonious, interpretable representations of the data that enhance our understanding of the phenomena under study. - * A model is a lense through which to look at your data. (I attribute this quote to Scott Zeger) - * Under this philosophy, what's the right model? Whatever model connects the data to a true, parsimonious statement about what you're studying. -* There are nearly uncontable ways that a model can be wrong, in this lecture, we'll focus on variable inclusion and exclusion. -* Like nearly all aspects of statistics, good modeling decisions are context dependent. - * A good model for prediction versus one for studying mechanisms versus one for trying to establish causal effects may not be the same. - ---- -## The Rumsfeldian triplet - -*There are known knowns. These are things we know that we know. There are known unknowns. That is to say, there are things that we know we don't know. But there are also unknown unknowns. There are things we don't know we don't know.* Donald Rumsfeld - -In our context -* (Known knowns) Regressors that we know we should check to include in the model and have. -* (Known Unknowns) Regressors that we would like to include in the model, but don't have. -* (Unknown Unknowns) Regressors that we don't even know about that we should have included in the model. - ---- -## General rules -* Omitting variables results in bias in the coeficients of interest - unless their regressors are uncorrelated with the omitted ones. - * This is why we randomize treatments, it attempts to uncorrelate our treatment indicator with variables that we don't have to put in the model. - * (If there's too many unobserved confounding variables, even randomization won't help you.) -* Including variables that we shouldn't have increases standard errors of the regression variables. - * Actually, including any new variables increasese (actual, not estimated) standard errors of other regressors. So we don't want to idly throw variables into the model. -* The model must tend toward perfect fit as the number of non-redundant regressors approaches $n$. -* $R^2$ increases monotonically as more regressors are included. -* The SSE decreases monotonically as more regressors are included. - ---- -## Plot of $R^2$ versus $n$ -For simulations as the number of variables included equals increases to $n=100$. -No actual regression relationship exist in any simulation -```{r, fig.height=5, fig.width=5, echo=FALSE} - n <- 100 -plot(c(1, n), 0 : 1, type = "n", frame = FALSE, xlab = "p", ylab = "R^2") -r <- sapply(1 : n, function(p) - { - y <- rnorm(n); x <- matrix(rnorm(n * p), n, p) - summary(lm(y ~ x))$r.squared - } - ) -lines(1 : n, r, lwd = 2) -abline(h = 1) -``` - ---- -## Variance inflation -```{r, echo = TRUE} -n <- 100; nosim <- 1000 -x1 <- rnorm(n); x2 <- rnorm(n); x3 <- rnorm(n); -betas <- sapply(1 : nosim, function(i){ - y <- x1 + rnorm(n, sd = .3) - c(coef(lm(y ~ x1))[2], - coef(lm(y ~ x1 + x2))[2], - coef(lm(y ~ x1 + x2 + x3))[2]) -}) -round(apply(betas, 1, sd), 5) -``` - ---- -## Variance inflation -```{r, echo = TRUE} -n <- 100; nosim <- 1000 -x1 <- rnorm(n); x2 <- x1/sqrt(2) + rnorm(n) /sqrt(2) -x3 <- x1 * 0.95 + rnorm(n) * sqrt(1 - 0.95^2); -betas <- sapply(1 : nosim, function(i){ - y <- x1 + rnorm(n, sd = .3) - c(coef(lm(y ~ x1))[2], - coef(lm(y ~ x1 + x2))[2], - coef(lm(y ~ x1 + x2 + x3))[2]) -}) -round(apply(betas, 1, sd), 5) -``` - - ---- -## Variance inflation factors -* Notice variance inflation was much worse when we included a variable that -was highly related to `x1`. -* We don't know $\sigma$, so we can only estimate the increase in the actual standard error of the coefficients for including a regressor. -* However, $\sigma$ drops out of the relative standard errors. If one sequentially adds variables, one can check the variance (or sd) inflation for including each one. -* When the other regressors are actually orthogonal to the regressor of interest, then there is no variance inflation. -* The variance inflation factor (VIF) is the increase in the variance for the ith regressor compared to the ideal setting where it is orthogonal to the other regressors. - * (The square root of the VIF is the increase in the sd ...) -* Remember, variance inflation is only part of the picture. We want to include certain variables, even if they dramatically inflate our variance. - ---- -## Revisting our previous simulation -```{r, echo = TRUE} -##doesn't depend on which y you use, -y <- x1 + rnorm(n, sd = .3) -a <- summary(lm(y ~ x1))$cov.unscaled[2,2] -c(summary(lm(y ~ x1 + x2))$cov.unscaled[2,2], - summary(lm(y~ x1 + x2 + x3))$cov.unscaled[2,2]) / a -temp <- apply(betas, 1, var); temp[2 : 3] / temp[1] -``` ---- -## Swiss data -```{r} -data(swiss); -fit1 <- lm(Fertility ~ Agriculture, data = swiss) -a <- summary(fit1)$cov.unscaled[2,2] -fit2 <- update(fit, Fertility ~ Agriculture + Examination) -fit3 <- update(fit, Fertility ~ Agriculture + Examination + Education) - c(summary(fit2)$cov.unscaled[2,2], - summary(fit3)$cov.unscaled[2,2]) / a -``` - ---- -## Swiss data VIFs, -```{r} -library(car) -fit <- lm(Fertility ~ . , data = swiss) -vif(fit) -sqrt(vif(fit)) #I prefer sd -``` - ---- -## What about residual variance estimation? -* Assuming that the model is linear with additive iid errors (with finite variance), we can mathematically describe the impact of omitting necessary variables or including unnecessary ones. - * If we underfit the model, the variance estimate is biased. - * If we correctly or overfit the model, including all necessary covariates and/or unnecessary covariates, the variance estimate is unbiased. - * However, the variance of the variance is larger if we include unnecessary variables. - ---- -## Covariate model selection -* Automated covariate selection is a difficult topic. It depends heavily on how rich of a covariate space one wants to explore. - * The space of models explodes quickly as you add interactions and polynomial terms. -* In the prediction class, we'll cover many modern methods for traversing large model spaces for the purposes of prediction. -* Principal components or factor analytic models on covariates are often useful for reducing complex covariate spaces. -* Good design can often eliminate the need for complex model searches at analyses; though often control over the design is limited. -* If the models of interest are nested and without lots of parameters differentiating them, it's fairly uncontroversial to use nested likelihood ratio tests. (Example to follow.) -* My favoriate approach is as follows. Given a coefficient that I'm interested in, I like to use covariate adjustment and multiple models to probe that effect to evaluate it for robustness and to see what other covariates knock it out. This isn't a terribly systematic approach, but it tends to teach you a lot about the the data as you get your hands dirty. - ---- -## How to do nested model testing in R -```{r} -fit1 <- lm(Fertility ~ Agriculture, data = swiss) -fit3 <- update(fit, Fertility ~ Agriculture + Examination + Education) -fit5 <- update(fit, Fertility ~ Agriculture + Examination + Education + Catholic + Infant.Mortality) -anova(fit1, fit3, fit5) -``` +--- +title : Multiple variables +subtitle : Regression +author : Brian Caffo, Jeff Leek, Roger Peng +job : Johns Hopkins Bloomberg School of Public Health +logo : bloomberg_shield.png +framework : io2012 # {io2012, html5slides, shower, dzslides, ...} +highlighter : highlight.js # {highlight.js, prettify, highlight} +hitheme : tomorrow # +url: + lib: ../../librariesNew + assets: ../../assets +widgets : [mathjax] # {mathjax, quiz, bootstrap} +mode : selfcontained # {standalone, draft} +--- +```{r setup, cache = F, echo = F, message = F, warning = F, tidy = F, results='hide'} +# Must explicitly include knitr or the chunks will fail, at least in Linux +library(knitr) +# make this an external chunk that can be included in any file +options(width = 100) +opts_chunk$set(message = F, error = F, warning = F, comment = NA, fig.align = 'center', dpi = 100, tidy = F, cache.path = '.cache/', fig.path = 'fig/') + +options(xtable.type = 'html') +knit_hooks$set(inline = function(x) { + if(is.numeric(x)) { + round(x, getOption('digits')) + } else { + paste(as.character(x), collapse = ', ') + } +}) +knit_hooks$set(plot = knitr:::hook_plot_html) +runif(1) +``` +## Multivariable regression +* We have an entire class on prediction and machine learning, so we'll focus on modeling. + * Prediction has a different set of criteria, needs for interpretability and standards for generalizability. + * In modeling, our interest lies in parsimonious, interpretable representations of the data that enhance our understanding of the phenomena under study. + * A model is a lens through which to look at your data. (I attribute this quote to Scott Zeger) + * Under this philosophy, what's the right model? Whatever model connects the data to a true, parsimonious statement about what you're studying. +* There are nearly uncontable ways that a model can be wrong, in this lecture, we'll focus on variable inclusion and exclusion. +* Like nearly all aspects of statistics, good modeling decisions are context dependent. + * A good model for prediction versus one for studying mechanisms versus one for trying to establish causal effects may not be the same. + + +## The Rumsfeldian triplet + +*There are known knowns. These are things we know that we know. There are known unknowns. That is to say, there are things that we know we don't know. But there are also unknown unknowns. There are things we don't know we don't know.* Donald Rumsfeld + +In our context +* (Known knowns) Regressors that we know we should check to include in the model and have. +* (Known Unknowns) Regressors that we would like to include in the model, but don't have. +* (Unknown Unknowns) Regressors that we don't even know about that we should have included in the model. + + +## General rules +* Omitting variables results in bias in the coeficients of interest - unless their regressors are uncorrelated with the omitted ones. + * This is why we randomize treatments, it attempts to uncorrelate our treatment indicator with variables that we don't have to put in the model. + * (If there's too many unobserved confounding variables, even randomization won't help you.) +* Including variables that we shouldn't have increases standard errors of the regression variables. + * Actually, including any new variables increases (actual, not estimated) standard errors of other regressors. So we don't want to idly throw variables into the model. +* The model must tend toward perfect fit as the number of non-redundant regressors approaches $n$. +* $R^2$ increases monotonically as more regressors are included. +* The SSE decreases monotonically as more regressors are included. + + +## Plot of $R^2$ versus $n$ +For simulations as the number of variables included equals increases to $n=100$. +No actual regression relationship exist in any simulation +```{r, fig.height=5, fig.width=5, echo=FALSE} + n <- 100 +plot(c(1, n), 0 : 1, type = "n", frame = FALSE, xlab = "p", ylab = "R^2") +r <- sapply(1 : n, function(p) + { + y <- rnorm(n); x <- matrix(rnorm(n * p), n, p) + summary(lm(y ~ x))$r.squared + } + ) +lines(1 : n, r, lwd = 2) +abline(h = 1) +``` + + +## Variance inflation +```{r, echo = TRUE} +n <- 100; nosim <- 1000 +x1 <- rnorm(n); x2 <- rnorm(n); x3 <- rnorm(n); +betas <- sapply(1 : nosim, function(i){ + y <- x1 + rnorm(n, sd = .3) + c(coef(lm(y ~ x1))[2], + coef(lm(y ~ x1 + x2))[2], + coef(lm(y ~ x1 + x2 + x3))[2]) +}) +round(apply(betas, 1, sd), 5) +``` + + +## Variance inflation +```{r, echo = TRUE} +n <- 100; nosim <- 1000 +x1 <- rnorm(n); x2 <- x1/sqrt(2) + rnorm(n) /sqrt(2) +x3 <- x1 * 0.95 + rnorm(n) * sqrt(1 - 0.95^2); +betas <- sapply(1 : nosim, function(i){ + y <- x1 + rnorm(n, sd = .3) + c(coef(lm(y ~ x1))[2], + coef(lm(y ~ x1 + x2))[2], + coef(lm(y ~ x1 + x2 + x3))[2]) +}) +round(apply(betas, 1, sd), 5) +``` + + + +## Variance inflation factors +* Notice variance inflation was much worse when we included a variable that +was highly related to `x1`. +* We don't know $\sigma$, so we can only estimate the increase in the actual standard error of the coefficients for including a regressor. +* However, $\sigma$ drops out of the relative standard errors. If one sequentially adds variables, one can check the variance (or sd) inflation for including each one. +* When the other regressors are actually orthogonal to the regressor of interest, then there is no variance inflation. +* The variance inflation factor (VIF) is the increase in the variance for the ith regressor compared to the ideal setting where it is orthogonal to the other regressors. + * (The square root of the VIF is the increase in the sd ...) +* Remember, variance inflation is only part of the picture. We want to include certain variables, even if they dramatically inflate our variance. + + +## Revisting our previous simulation +```{r, echo = TRUE} +##doesn't depend on which y you use, +y <- x1 + rnorm(n, sd = .3) +a <- summary(lm(y ~ x1))$cov.unscaled[2,2] +c(summary(lm(y ~ x1 + x2))$cov.unscaled[2,2], + summary(lm(y~ x1 + x2 + x3))$cov.unscaled[2,2]) / a +temp <- apply(betas, 1, var); temp[2 : 3] / temp[1] +``` + +## Swiss data +```{r} +data(swiss); +fit <- fit1 <- lm(Fertility ~ Agriculture, data = swiss) +a <- summary(fit1)$cov.unscaled[2,2] +fit2 <- update(fit, Fertility ~ Agriculture + Examination) +fit3 <- update(fit, Fertility ~ Agriculture + Examination + Education) + c(summary(fit2)$cov.unscaled[2,2], + summary(fit3)$cov.unscaled[2,2]) / a +``` + + +## Swiss data VIFs, +```{r} +library(car) +fit <- lm(Fertility ~ . , data = swiss) +vif(fit) +sqrt(vif(fit)) #I prefer sd +``` + + +## What about residual variance estimation? +* Assuming that the model is linear with additive iid errors (with finite variance), we can mathematically describe the impact of omitting necessary variables or including unnecessary ones. + * If we underfit the model, the variance estimate is biased. + * If we correctly or overfit the model, including all necessary covariates and/or unnecessary covariates, the variance estimate is unbiased. + * However, the variance of the variance is larger if we include unnecessary variables. + + +## Covariate model selection +* Automated covariate selection is a difficult topic. It depends heavily on how rich of a covariate space one wants to explore. + * The space of models explodes quickly as you add interactions and polynomial terms. +* In the prediction class, we'll cover many modern methods for traversing large model spaces for the purposes of prediction. +* Principal components or factor analytic models on covariates are often useful for reducing complex covariate spaces. +* Good design can often eliminate the need for complex model searches at analyses; though often control over the design is limited. +* If the models of interest are nested and without lots of parameters differentiating them, it's fairly uncontroversial to use nested likelihood ratio tests. (Example to follow.) +* My favoriate approach is as follows. Given a coefficient that I'm interested in, I like to use covariate adjustment and multiple models to probe that effect to evaluate it for robustness and to see what other covariates knock it out. This isn't a terribly systematic approach, but it tends to teach you a lot about the the data as you get your hands dirty. + + +## How to do nested model testing in R +```{r} +fit1 <- lm(Fertility ~ Agriculture, data = swiss) +fit3 <- update(fit, Fertility ~ Agriculture + Examination + Education) +fit5 <- update(fit, Fertility ~ Agriculture + Examination + Education + Catholic + Infant.Mortality) +anova(fit1, fit3, fit5) +``` diff --git a/07_RegressionModels/03_01_glms/index.Rmd b/07_RegressionModels/03_01_glms/index.Rmd index ce2e4410c..74ef1f0db 100644 --- a/07_RegressionModels/03_01_glms/index.Rmd +++ b/07_RegressionModels/03_01_glms/index.Rmd @@ -1,140 +1,142 @@ ---- -title : Generalized linear models -subtitle : Regression Models -author : Brian Caffo, Jeff Leek, Roger Peng -job : Johns Hopkins Bloomberg School of Public Health -logo : bloomberg_shield.png -framework : io2012 # {io2012, html5slides, shower, dzslides, ...} -highlighter : highlight.js # {highlight.js, prettify, highlight} -hitheme : tomorrow # -url: - lib: ../../librariesNew - assets: ../../assets -widgets : [mathjax] # {mathjax, quiz, bootstrap} -mode : selfcontained # {standalone, draft} ---- -```{r setup, cache = F, echo = F, message = F, warning = F, tidy = F, results='hide'} -# make this an external chunk that can be included in any file -options(width = 100) -opts_chunk$set(message = F, error = F, warning = F, comment = NA, fig.align = 'center', dpi = 100, tidy = F, cache.path = '.cache/', fig.path = 'fig/') - -options(xtable.type = 'html') -knit_hooks$set(inline = function(x) { - if(is.numeric(x)) { - round(x, getOption('digits')) - } else { - paste(as.character(x), collapse = ', ') - } -}) -knit_hooks$set(plot = knitr:::hook_plot_html) -runif(1) -``` -## Linear models -* Linear models are the most useful applied statistical technique. However, they are not without their limitations. - * Additive response models don't make much sense if the response is discrete, or stricly positive. - * Additive error models often don't make sense, for example if the outcome has to be positive. - * Transformations are often hard to interpret. - * There's value in modeling the data on the scale that it was collected. - * Particularly interpetable transformations, natural logarithms in specific, aren't applicable for negative or zero values. - - - ---- -## Generalized linear models -* Introduced in a 1972 RSSB paper by Nelder and Wedderburn. -* Involves three components - * An *exponential family* model for the response. - * A systematic component via a linear predictor. - * A link function that connects the means of the response to the linear predictor. - - ---- -## Example, linear models -* Assume that $Y_i \sim N(\mu_i, \sigma^2)$ (the Gaussian distribution is an exponential family distribution.) -* Define the linear predictor to be $\eta_i = \sum_{k=1}^p X_{ik} \beta_k$. -* The link function as $g$ so that $g(\mu) = \eta$. - * For linear models $g(\mu) = \mu$ so that $\mu_i = \eta_i$ -* This yields the same likelihood model as our additive error Gaussian linear model -$$ -Y_i = \sum_{k=1}^p X_{ik} \beta_k + \epsilon_{i} -$$ -where $\epsilon_i \stackrel{iid}{\sim} N(0, \sigma^2)$ - ---- -## Example, logistic regression -* Assume that $Y_i \sim Bernoulli(\mu_i)$ so that $E[Y_i] = \mu_i$ where $0\leq \mu_i \leq 1$. -* Linear predictor $\eta_i = \sum_{k=1}^p X_{ik} \beta_k$ -* Link function -$g(\mu) = \eta = \log\left( \frac{\mu}{1 - \mu}\right)$ -$g$ is the (natural) log odds, referred to as the **logit**. -* Note then we can invert the logit function as -$$ -\mu_i = \frac{\exp(\eta_i)}{1 + \exp(\eta_i)} ~~~\mbox{and}~~~ -1 - \mu_i = \frac{1}{1 + \exp(\eta_i)} -$$ -Thus the likelihood is -$$ -\prod_{i=1}^n \mu_i^{y_i} (1 - \mu_i)^{1-y_i} -= \exp\left(\sum_{i=1}^n y_i \eta_i \right) -\prod_{i=1}^n (1 + \eta_i)^{-1} -$$ - ---- -## Example, Poisson regression -* Assume that $Y_i \sim Poisson(\mu_i)$ so that $E[Y_i] = \mu_i$ where $0\leq \mu_i$ -* Linear predictor $\eta_i = \sum_{k=1}^p X_{ik} \beta_k$ -* Link function -$g(\mu) = \eta = \log(\mu)$ -* Recall that $e^x$ is the inverse of $\log(x)$ so that -$$ -\mu_i = e^{\eta_i} -$$ -Thus, the likelihood is -$$ -\prod_{i=1}^n (y_i !)^{-1} \mu_i^{y_i}e^{-\mu_i} -\propto \exp\left(\sum_{i=1}^n y_i \eta_i - \sum_{i=1}^n \mu_i\right) -$$ - ---- -## Some things to note -* In each case, the only way in which the likelihood depends on the data is through -$$\sum_{i=1}^n y_i \eta_i = -\sum_{i=1}^n y_i\sum_{k=1}^p X_{ik} \beta_k = -\sum_{k=1}^p \beta_k\sum_{i=1}^n X_{ik} y_i -$$ -Thus if we don't need the full data, only $\sum_{i=1}^n X_{ik} y_i$. This simplification is a consequence of chosing so-called 'canonical' link functions. -* (This has to be derived). All models acheive their maximum at the root of the so called normal equations -$$ -0=\sum_{i=1}^n \frac{(Y_i - \mu_i)}{Var(Y_i)}W_i -$$ -where $W_i$ are the derivative of the inverse of the link function. - ---- -## About variances -$$ -0=\sum_{i=1}^n \frac{(Y_i - \mu_i)}{Var(Y_i)}W_i -$$ -* For the linear model $Var(Y_i) = \sigma^2$ is constant. -* For Bernoulli case $Var(Y_i) = \mu_i (1 - \mu_i)$ -* For the Poisson case $Var(Y_i) = \mu_i$. -* In the latter cases, it is often relevant to have a more flexible variance model, even if it doesn't correspond to an actual likelihood -$$ -0=\sum_{i=1}^n \frac{(Y_i - \mu_i)}{\phi \mu_i (1 - \mu_i ) } W_i ~~~\mbox{and}~~~ -0=\sum_{i=1}^n \frac{(Y_i - \mu_i)}{\phi \mu_i} W_i -$$ -* These are called 'quasi-likelihood' normal equations - ---- -## Odds and ends -* The normal equations have to be solved iteratively. Resulting in -$\hat \beta_k$ and, if included, $\hat \phi$. -* Predicted linear predictor responses can be obtained as $\hat \eta = \sum_{k=1}^p X_k \hat \beta_k$ -* Predicted mean responses as $\hat \mu = g^{-1}(\hat \eta)$ -* Coefficients are interpretted as -$$ -g(E[Y | X_k = x_k + 1, X_{\sim k} = x_{\sim k}]) - g(E[Y | X_k = x_k, X_{\sim k}=x_{\sim k}]) = \beta_k -$$ -or the change in the link function of the expected response per unit change in $X_k$ holding other regressors constant. -* Variations on Newon/Raphson's algorithm are used to do it. -* Asymptotics are used for inference usually. -* Many of the ideas from linear models can be brought over to GLMs. +--- +title : Generalized linear models +subtitle : Regression Models +author : Brian Caffo, Jeff Leek, Roger Peng +job : Johns Hopkins Bloomberg School of Public Health +logo : bloomberg_shield.png +framework : io2012 # {io2012, html5slides, shower, dzslides, ...} +highlighter : highlight.js # {highlight.js, prettify, highlight} +hitheme : tomorrow # +url: + lib: ../../librariesNew + assets: ../../assets +widgets : [mathjax] # {mathjax, quiz, bootstrap} +mode : selfcontained # {standalone, draft} +--- +```{r setup, cache = F, echo = F, message = F, warning = F, tidy = F, results='hide'} +# Must explicitly include knitr or the chunks will fail, at least in Linux +library(knitr) +# make this an external chunk that can be included in any file +options(width = 100) +opts_chunk$set(message = F, error = F, warning = F, comment = NA, fig.align = 'center', dpi = 100, tidy = F, cache.path = '.cache/', fig.path = 'fig/') + +options(xtable.type = 'html') +knit_hooks$set(inline = function(x) { + if(is.numeric(x)) { + round(x, getOption('digits')) + } else { + paste(as.character(x), collapse = ', ') + } +}) +knit_hooks$set(plot = knitr:::hook_plot_html) +runif(1) +``` +## Linear models +* Linear models are the most useful applied statistical technique. However, they are not without their limitations. + * Additive response models don't make much sense if the response is discrete, or stricly positive. + * Additive error models often don't make sense, for example if the outcome has to be positive. + * Transformations are often hard to interpret. + * There's value in modeling the data on the scale that it was collected. + * Particularly interpetable transformations, natural logarithms in specific, aren't applicable for negative or zero values. + + + + +## Generalized linear models +* Introduced in a 1972 RSSB paper by Nelder and Wedderburn. +* Involves three components + * An *exponential family* model for the response. + * A systematic component via a linear predictor. + * A link function that connects the means of the response to the linear predictor. + + + +## Example, linear models +* Assume that $Y_i \sim N(\mu_i, \sigma^2)$ (the Gaussian distribution is an exponential family distribution.) +* Define the linear predictor to be $\eta_i = \sum_{k=1}^p X_{ik} \beta_k$. +* The link function as $g$ so that $g(\mu) = \eta$. + * For linear models $g(\mu) = \mu$ so that $\mu_i = \eta_i$ +* This yields the same likelihood model as our additive error Gaussian linear model +$$ +Y_i = \sum_{k=1}^p X_{ik} \beta_k + \epsilon_{i} +$$ +where $\epsilon_i \stackrel{iid}{\sim} N(0, \sigma^2)$ + + +## Example, logistic regression +* Assume that $Y_i \sim Bernoulli(\mu_i)$ so that $E[Y_i] = \mu_i$ where $0\leq \mu_i \leq 1$. +* Linear predictor $\eta_i = \sum_{k=1}^p X_{ik} \beta_k$ +* Link function +$g(\mu) = \eta = \log\left( \frac{\mu}{1 - \mu}\right)$ +$g$ is the (natural) log odds, referred to as the **logit**. +* Note then we can invert the logit function as +$$ +\mu_i = \frac{\exp(\eta_i)}{1 + \exp(\eta_i)} ~~~\mbox{and}~~~ +1 - \mu_i = \frac{1}{1 + \exp(\eta_i)} +$$ +Thus the likelihood is +$$ +\prod_{i=1}^n \mu_i^{y_i} (1 - \mu_i)^{1-y_i} += \exp\left(\sum_{i=1}^n y_i \eta_i \right) +\prod_{i=1}^n (1 + \eta_i)^{-1} +$$ + + +## Example, Poisson regression +* Assume that $Y_i \sim Poisson(\mu_i)$ so that $E[Y_i] = \mu_i$ where $0\leq \mu_i$ +* Linear predictor $\eta_i = \sum_{k=1}^p X_{ik} \beta_k$ +* Link function +$g(\mu) = \eta = \log(\mu)$ +* Recall that $e^x$ is the inverse of $\log(x)$ so that +$$ +\mu_i = e^{\eta_i} +$$ +Thus, the likelihood is +$$ +\prod_{i=1}^n (y_i !)^{-1} \mu_i^{y_i}e^{-\mu_i} +\propto \exp\left(\sum_{i=1}^n y_i \eta_i - \sum_{i=1}^n \mu_i\right) +$$ + + +## Some things to note +* In each case, the only way in which the likelihood depends on the data is through +$$\sum_{i=1}^n y_i \eta_i = +\sum_{i=1}^n y_i\sum_{k=1}^p X_{ik} \beta_k = +\sum_{k=1}^p \beta_k\sum_{i=1}^n X_{ik} y_i +$$ +Thus if we don't need the full data, only $\sum_{i=1}^n X_{ik} y_i$. This simplification is a consequence of chosing so-called 'canonical' link functions. +* (This has to be derived). All models acheive their maximum at the root of the so called normal equations +$$ +0=\sum_{i=1}^n \frac{(Y_i - \mu_i)}{Var(Y_i)}W_i +$$ +where $W_i$ are the derivative of the inverse of the link function. + + +## About variances +$$ +0=\sum_{i=1}^n \frac{(Y_i - \mu_i)}{Var(Y_i)}W_i +$$ +* For the linear model $Var(Y_i) = \sigma^2$ is constant. +* For Bernoulli case $Var(Y_i) = \mu_i (1 - \mu_i)$ +* For the Poisson case $Var(Y_i) = \mu_i$. +* In the latter cases, it is often relevant to have a more flexible variance model, even if it doesn't correspond to an actual likelihood +$$ +0=\sum_{i=1}^n \frac{(Y_i - \mu_i)}{\phi \mu_i (1 - \mu_i ) } W_i ~~~\mbox{and}~~~ +0=\sum_{i=1}^n \frac{(Y_i - \mu_i)}{\phi \mu_i} W_i +$$ +* These are called 'quasi-likelihood' normal equations + + +## Odds and ends +* The normal equations have to be solved iteratively. Resulting in +$\hat \beta_k$ and, if included, $\hat \phi$. +* Predicted linear predictor responses can be obtained as $\hat \eta = \sum_{k=1}^p X_k \hat \beta_k$ +* Predicted mean responses as $\hat \mu = g^{-1}(\hat \eta)$ +* Coefficients are interpretted as +$$ +g(E[Y | X_k = x_k + 1, X_{\sim k} = x_{\sim k}]) - g(E[Y | X_k = x_k, X_{\sim k}=x_{\sim k}]) = \beta_k +$$ +or the change in the link function of the expected response per unit change in $X_k$ holding other regressors constant. +* Variations on Newon/Raphson's algorithm are used to do it. +* Asymptotics are used for inference usually. +* Many of the ideas from linear models can be brought over to GLMs. From e28af1b397e923650c04ae100f2034f59b026267 Mon Sep 17 00:00:00 2001 From: Michael Fierro Date: Sun, 22 May 2016 14:29:36 -0600 Subject: [PATCH 3/3] Fixed issues causing intermittent knitr errors --- .../01_01_introduction/index.Rmd | 424 ++--- .../01_01_introduction/index.html | 682 ++++--- 07_RegressionModels/01_02_notation/index.Rmd | 12 +- 07_RegressionModels/01_02_notation/index.html | 480 +++-- 07_RegressionModels/01_03_ols/index.Rmd | 506 +++--- 07_RegressionModels/01_03_ols/index.html | 781 ++++---- 07_RegressionModels/01_04_rttm/index.Rmd | 210 +-- 07_RegressionModels/01_04_rttm/index.html | 433 ++--- .../01_05_linearRegression/index.Rmd | 433 ++--- .../01_05_linearRegression/index.html | 675 ++++--- .../01_06_residualVariation/index.Rmd | 489 ++--- .../01_06_residualVariation/index.html | 722 ++++---- 07_RegressionModels/01_07_inference/index.Rmd | 430 ++--- .../01_07_inference/index.html | 669 ++++--- .../02_01_multivariate/index.html | 883 ++++----- .../02_02_multivariateExamples/index.html | 1578 ++++++----------- .../02_03_adjustment/index.html | 553 +++--- .../fig/unnamed-chunk-2-1.png | Bin 63716 -> 63954 bytes .../fig/unnamed-chunk-3-1.png | Bin 76471 -> 78171 bytes .../fig/unnamed-chunk-5-1.png | Bin 71620 -> 64925 bytes .../index.html | 58 +- .../02_05_multipleVariables/index.html | 762 ++++---- 07_RegressionModels/03_01_glms/index.html | 568 +++--- .../03_02_binaryOutcomes/index.Rmd | 442 ++--- .../03_02_binaryOutcomes/index.html | 833 ++++----- .../03_03_countOutcomes/index.Rmd | 634 +++---- .../03_03_countOutcomes/index.html | 1060 ++++------- 07_RegressionModels/03_04_bonus/index.Rmd | 234 +-- 07_RegressionModels/03_04_bonus/index.html | 490 +++-- .../002basicLeastSquares/index.Rmd | 36 +- 07_RegressionModels/project/project.html | 269 ++- 31 files changed, 6788 insertions(+), 8558 deletions(-) diff --git a/07_RegressionModels/01_01_introduction/index.Rmd b/07_RegressionModels/01_01_introduction/index.Rmd index 1fadce87c..357f819f3 100644 --- a/07_RegressionModels/01_01_introduction/index.Rmd +++ b/07_RegressionModels/01_01_introduction/index.Rmd @@ -1,211 +1,213 @@ ---- -title : Introduction to regression -subtitle : Regression -author : Brian Caffo, Jeff Leek and Roger Peng -job : Johns Hopkins Bloomberg School of Public Health -logo : bloomberg_shield.png -framework : io2012 # {io2012, html5slides, shower, dzslides, ...} -highlighter : highlight.js # {highlight.js, prettify, highlight} -hitheme : tomorrow # -url: - lib: ../../libraries - assets: ../../assets -widgets : [mathjax] # {mathjax, quiz, bootstrap} -mode : selfcontained # {standalone, draft} ---- -## A famous motivating example - -```{r setup, cache = F, echo = F, message = F, warning = F, tidy = F, results='hide'} -# make this an external chunk that can be included in any file -options(width = 100) -opts_chunk$set(message = F, error = F, warning = F, comment = NA, fig.align = 'center', dpi = 100, tidy = F, cache.path = '.cache/', fig.path = 'fig/') - -options(xtable.type = 'html') -knit_hooks$set(inline = function(x) { - if(is.numeric(x)) { - round(x, getOption('digits')) - } else { - paste(as.character(x), collapse = ', ') - } -}) -knit_hooks$set(plot = knitr:::hook_plot_html) -runif(1) -``` - - - -### (Perhaps surprisingly, this example is still relevant) - - - -[http://www.nature.com/ejhg/journal/v17/n8/full/ejhg20095a.html](http://www.nature.com/ejhg/journal/v17/n8/full/ejhg20095a.html) - -[Predicting height: the Victorian approach beats modern genomics](http://www.wired.com/wiredscience/2009/03/predicting-height-the-victorian-approach-beats-modern-genomics/) - ---- -## Questions for this class -* Consider trying to answer the following kinds of questions: - * To use the parents' heights to predict childrens' heights. - * To try to find a parsimonious, easily described mean - relationship between parent and children's heights. - * To investigate the variation in childrens' heights that appears - unrelated to parents' heights (residual variation). - * To quantify what impact genotype information has beyond parental height in explaining child height. - * To figure out how/whether and what assumptions are needed to - generalize findings beyond the data in question. - * Why do children of very tall parents tend to be - tall, but a little shorter than their parents and why children of very short parents tend to be short, but a little taller than their parents? (This is a famous question called 'Regression to the mean'.) - ---- -## Galton's Data - -* Let's look at the data first, used by Francis Galton in 1885. -* Galton was a statistician who invented the term and concepts - of regression and correlation, founded the journal Biometrika, - and was the cousin of Charles Darwin. -* You may need to run `install.packages("UsingR")` if the `UsingR` library is not installed. -* Let's look at the marginal (parents disregarding children and children disregarding parents) distributions first. - * Parent distribution is all heterosexual couples. - * Correction for gender via multiplying female heights by 1.08. - * Overplotting is an issue from discretization. - ---- -## Code - -```{r galton,fig.height=3.5,fig.width=8} -library(UsingR); data(galton) -par(mfrow=c(1,2)) -hist(galton$child,col="blue",breaks=100) -hist(galton$parent,col="blue",breaks=100) -``` - ---- -## Finding the middle via least squares -* Consider only the children's heights. - * How could one describe the "middle"? - * One definition, let $Y_i$ be the height of child $i$ for $i = 1, \ldots, n = 928$, then define the middle as the value of $\mu$ - that minimizes $$\sum_{i=1}^n (Y_i - \mu)^2$$ -* This is physical center of mass of the histrogram. -* You might have guessed that the answer $\mu = \bar X$. - - ---- -## Experiment -### Use R studio's manipulate to see what value of $\mu$ minimizes the sum of the squared deviations. - -``` -library(manipulate) -myHist <- function(mu){ - hist(galton$child,col="blue",breaks=100) - lines(c(mu, mu), c(0, 150),col="red",lwd=5) - mse <- mean((galton$child - mu)^2) - text(63, 150, paste("mu = ", mu)) - text(63, 140, paste("MSE = ", round(mse, 2))) -} -manipulate(myHist(mu), mu = slider(62, 74, step = 0.5)) -``` - ---- -## The least squares estimate is the empirical mean -```{r lsm, dependson="galton",fig.height=4,fig.width=4} - hist(galton$child,col="blue",breaks=100) - meanChild <- mean(galton$child) - lines(rep(meanChild,100),seq(0,150,length=100),col="red",lwd=5) -``` - ---- -### The math follows as: -$$ -\begin{align} -\sum_{i=1}^n (Y_i - \mu)^2 & = \ -\sum_{i=1}^n (Y_i - \bar Y + \bar Y - \mu)^2 \\ -& = \sum_{i=1}^n (Y_i - \bar Y)^2 + \ -2 \sum_{i=1}^n (Y_i - \bar Y) (\bar Y - \mu) +\ -\sum_{i=1}^n (\bar Y - \mu)^2 \\ -& = \sum_{i=1}^n (Y_i - \bar Y)^2 + \ -2 (\bar Y - \mu) \sum_{i=1}^n (Y_i - \bar Y) +\ -\sum_{i=1}^n (\bar Y - \mu)^2 \\ -& = \sum_{i=1}^n (Y_i - \bar Y)^2 + \ -2 (\bar Y - \mu) (\sum_{i=1}^n Y_i - n \bar Y) +\ -\sum_{i=1}^n (\bar Y - \mu)^2 \\ -& = \sum_{i=1}^n (Y_i - \bar Y)^2 + \sum_{i=1}^n (\bar Y - \mu)^2\\ -& \geq \sum_{i=1}^n (Y_i - \bar Y)^2 \ -\end{align} -$$ - ---- -## Comparing childrens' heights and their parents' heights - -```{r, dependson="galton",fig.height=4,fig.width=4} -plot(galton$parent,galton$child,pch=19,col="blue") -``` - ---- -Size of point represents number of points at that (X, Y) combination (See the Rmd file for the code). - -```{r freqGalton, dependson="galton",fig.height=6,fig.width=6,echo=FALSE} -freqData <- as.data.frame(table(galton$child, galton$parent)) -names(freqData) <- c("child", "parent", "freq") -plot(as.numeric(as.vector(freqData$parent)), - as.numeric(as.vector(freqData$child)), - pch = 21, col = "black", bg = "lightblue", - cex = .15 * freqData$freq, - xlab = "parent", ylab = "child") -``` - ---- -## Regression through the origin -* Suppose that $X_i$ are the parents' heights. -* Consider picking the slope $\beta$ that minimizes $$\sum_{i=1}^n (Y_i - X_i \beta)^2$$ -* This is exactly using the origin as a pivot point picking the -line that minimizes the sum of the squared vertical distances -of the points to the line -* Use R studio's manipulate function to experiment -* Subtract the means so that the origin is the mean of the parent -and children's heights - ---- -``` -myPlot <- function(beta){ - y <- galton$child - mean(galton$child) - x <- galton$parent - mean(galton$parent) - freqData <- as.data.frame(table(x, y)) - names(freqData) <- c("child", "parent", "freq") - plot( - as.numeric(as.vector(freqData$parent)), - as.numeric(as.vector(freqData$child)), - pch = 21, col = "black", bg = "lightblue", - cex = .15 * freqData$freq, - xlab = "parent", - ylab = "child" - ) - abline(0, beta, lwd = 3) - points(0, 0, cex = 2, pch = 19) - mse <- mean( (y - beta * x)^2 ) - title(paste("beta = ", beta, "mse = ", round(mse, 3))) -} -manipulate(myPlot(beta), beta = slider(0.6, 1.2, step = 0.02)) -``` - ---- -## The solution -### In the next few lectures we'll talk about why this is the solution -```{r} -lm(I(child - mean(child))~ I(parent - mean(parent)) - 1, data = galton) -``` - ---- -## Visualizing the best fit line -### Size of points are frequencies at that X, Y combination -```{r, fig.height=5,fig.width=5,echo=FALSE} -freqData <- as.data.frame(table(galton$child, galton$parent)) -names(freqData) <- c("child", "parent", "freq") -plot(as.numeric(as.vector(freqData$parent)), - as.numeric(as.vector(freqData$child)), - pch = 21, col = "black", bg = "lightblue", - cex = .05 * freqData$freq, - xlab = "parent", ylab = "child") -lm1 <- lm(galton$child ~ galton$parent) -lines(galton$parent,lm1$fitted,col="red",lwd=3) -``` - +--- +title : Introduction to regression +subtitle : Regression +author : Brian Caffo, Jeff Leek and Roger Peng +job : Johns Hopkins Bloomberg School of Public Health +logo : bloomberg_shield.png +framework : io2012 # {io2012, html5slides, shower, dzslides, ...} +highlighter : highlight.js # {highlight.js, prettify, highlight} +hitheme : tomorrow # +url: + lib: ../../libraries + assets: ../../assets +widgets : [mathjax] # {mathjax, quiz, bootstrap} +mode : selfcontained # {standalone, draft} +--- +## A famous motivating example + +```{r setup, cache = F, echo = F, message = F, warning = F, tidy = F, results='hide'} +# Must explicitly include knitr or the chunks will fail, at least in Linux +library(knitr) +# make this an external chunk that can be included in any file +options(width = 100) +opts_chunk$set(message = F, error = F, warning = F, comment = NA, fig.align = 'center', dpi = 100, tidy = F, cache.path = '.cache/', fig.path = 'fig/') + +options(xtable.type = 'html') +knit_hooks$set(inline = function(x) { + if(is.numeric(x)) { + round(x, getOption('digits')) + } else { + paste(as.character(x), collapse = ', ') + } +}) +knit_hooks$set(plot = knitr:::hook_plot_html) +runif(1) +``` + + + +### (Perhaps surprisingly, this example is still relevant) + + + +[http://www.nature.com/ejhg/journal/v17/n8/full/ejhg20095a.html](http://www.nature.com/ejhg/journal/v17/n8/full/ejhg20095a.html) + +[Predicting height: the Victorian approach beats modern genomics](http://www.wired.com/wiredscience/2009/03/predicting-height-the-victorian-approach-beats-modern-genomics/) + + +## Questions for this class +* Consider trying to answer the following kinds of questions: + * To use the parents' heights to predict childrens' heights. + * To try to find a parsimonious, easily described mean + relationship between parent and children's heights. + * To investigate the variation in childrens' heights that appears + unrelated to parents' heights (residual variation). + * To quantify what impact genotype information has beyond parental height in explaining child height. + * To figure out how/whether and what assumptions are needed to + generalize findings beyond the data in question. + * Why do children of very tall parents tend to be + tall, but a little shorter than their parents and why children of very short parents tend to be short, but a little taller than their parents? (This is a famous question called 'Regression to the mean'.) + + +## Galton's Data + +* Let's look at the data first, used by Francis Galton in 1885. +* Galton was a statistician who invented the term and concepts + of regression and correlation, founded the journal Biometrika, + and was the cousin of Charles Darwin. +* You may need to run `install.packages("UsingR")` if the `UsingR` library is not installed. +* Let's look at the marginal (parents disregarding children and children disregarding parents) distributions first. + * Parent distribution is all heterosexual couples. + * Correction for gender via multiplying female heights by 1.08. + * Overplotting is an issue from discretization. + + +## Code + +```{r galton,fig.height=3.5,fig.width=8} +library(UsingR); data(galton) +par(mfrow=c(1,2)) +hist(galton$child,col="blue",breaks=100) +hist(galton$parent,col="blue",breaks=100) +``` + + +## Finding the middle via least squares +* Consider only the children's heights. + * How could one describe the "middle"? + * One definition, let $Y_i$ be the height of child $i$ for $i = 1, \ldots, n = 928$, then define the middle as the value of $\mu$ + that minimizes $$\sum_{i=1}^n (Y_i - \mu)^2$$ +* This is physical center of mass of the histrogram. +* You might have guessed that the answer $\mu = \bar X$. + + + +## Experiment +### Use R studio's manipulate to see what value of $\mu$ minimizes the sum of the squared deviations. + +``` +library(manipulate) +myHist <- function(mu){ + hist(galton$child,col="blue",breaks=100) + lines(c(mu, mu), c(0, 150),col="red",lwd=5) + mse <- mean((galton$child - mu)^2) + text(63, 150, paste("mu = ", mu)) + text(63, 140, paste("MSE = ", round(mse, 2))) +} +manipulate(myHist(mu), mu = slider(62, 74, step = 0.5)) +``` + + +## The least squares estimate is the empirical mean +```{r lsm, dependson="galton",fig.height=4,fig.width=4} + hist(galton$child,col="blue",breaks=100) + meanChild <- mean(galton$child) + lines(rep(meanChild,100),seq(0,150,length=100),col="red",lwd=5) +``` + + +### The math follows as: +$$ +\begin{align} +\sum_{i=1}^n (Y_i - \mu)^2 & = \ +\sum_{i=1}^n (Y_i - \bar Y + \bar Y - \mu)^2 \\ +& = \sum_{i=1}^n (Y_i - \bar Y)^2 + \ +2 \sum_{i=1}^n (Y_i - \bar Y) (\bar Y - \mu) +\ +\sum_{i=1}^n (\bar Y - \mu)^2 \\ +& = \sum_{i=1}^n (Y_i - \bar Y)^2 + \ +2 (\bar Y - \mu) \sum_{i=1}^n (Y_i - \bar Y) +\ +\sum_{i=1}^n (\bar Y - \mu)^2 \\ +& = \sum_{i=1}^n (Y_i - \bar Y)^2 + \ +2 (\bar Y - \mu) (\sum_{i=1}^n Y_i - n \bar Y) +\ +\sum_{i=1}^n (\bar Y - \mu)^2 \\ +& = \sum_{i=1}^n (Y_i - \bar Y)^2 + \sum_{i=1}^n (\bar Y - \mu)^2\\ +& \geq \sum_{i=1}^n (Y_i - \bar Y)^2 \ +\end{align} +$$ + + +## Comparing childrens' heights and their parents' heights + +```{r, dependson="galton",fig.height=4,fig.width=4} +plot(galton$parent,galton$child,pch=19,col="blue") +``` + + +Size of point represents number of points at that (X, Y) combination (See the Rmd file for the code). + +```{r freqGalton, dependson="galton",fig.height=6,fig.width=6,echo=FALSE} +freqData <- as.data.frame(table(galton$child, galton$parent)) +names(freqData) <- c("child", "parent", "freq") +plot(as.numeric(as.vector(freqData$parent)), + as.numeric(as.vector(freqData$child)), + pch = 21, col = "black", bg = "lightblue", + cex = .15 * freqData$freq, + xlab = "parent", ylab = "child") +``` + + +## Regression through the origin +* Suppose that $X_i$ are the parents' heights. +* Consider picking the slope $\beta$ that minimizes $$\sum_{i=1}^n (Y_i - X_i \beta)^2$$ +* This is exactly using the origin as a pivot point picking the +line that minimizes the sum of the squared vertical distances +of the points to the line +* Use R studio's manipulate function to experiment +* Subtract the means so that the origin is the mean of the parent +and children's heights + + +``` +myPlot <- function(beta){ + y <- galton$child - mean(galton$child) + x <- galton$parent - mean(galton$parent) + freqData <- as.data.frame(table(x, y)) + names(freqData) <- c("child", "parent", "freq") + plot( + as.numeric(as.vector(freqData$parent)), + as.numeric(as.vector(freqData$child)), + pch = 21, col = "black", bg = "lightblue", + cex = .15 * freqData$freq, + xlab = "parent", + ylab = "child" + ) + abline(0, beta, lwd = 3) + points(0, 0, cex = 2, pch = 19) + mse <- mean( (y - beta * x)^2 ) + title(paste("beta = ", beta, "mse = ", round(mse, 3))) +} +manipulate(myPlot(beta), beta = slider(0.6, 1.2, step = 0.02)) +``` + + +## The solution +### In the next few lectures we'll talk about why this is the solution +```{r} +lm(I(child - mean(child))~ I(parent - mean(parent)) - 1, data = galton) +``` + + +## Visualizing the best fit line +### Size of points are frequencies at that X, Y combination +```{r, fig.height=5,fig.width=5,echo=FALSE} +freqData <- as.data.frame(table(galton$child, galton$parent)) +names(freqData) <- c("child", "parent", "freq") +plot(as.numeric(as.vector(freqData$parent)), + as.numeric(as.vector(freqData$child)), + pch = 21, col = "black", bg = "lightblue", + cex = .05 * freqData$freq, + xlab = "parent", ylab = "child") +lm1 <- lm(galton$child ~ galton$parent) +lines(galton$parent,lm1$fitted,col="red",lwd=3) +``` + diff --git a/07_RegressionModels/01_01_introduction/index.html b/07_RegressionModels/01_01_introduction/index.html index 4bd2ea6b9..e47ef0c64 100644 --- a/07_RegressionModels/01_01_introduction/index.html +++ b/07_RegressionModels/01_01_introduction/index.html @@ -1,369 +1,313 @@ - - - - Introduction to regression - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

Introduction to regression

-

Regression

-

Brian Caffo, Jeff Leek and Roger Peng
Johns Hopkins Bloomberg School of Public Health

-
-
- - - -
-

A famous motivating example

-
- - -
- - -
-

Questions for this class

-
-
-
    -
  • Consider trying to answer the following kinds of questions: - -
      -
    • To use the parents' heights to predict childrens' heights.
    • -
    • To try to find a parsimonious, easily described mean -relationship between parent and children's heights.
    • -
    • To investigate the variation in childrens' heights that appears -unrelated to parents' heights (residual variation).
    • -
    • To quantify what impact genotype information has beyond parental height in explaining child height.
    • -
    • To figure out how/whether and what assumptions are needed to -generalize findings beyond the data in question.
    • -
    • Why do children of very tall parents tend to be -tall, but a little shorter than their parents and why children of very short parents tend to be short, but a little taller than their parents? (This is a famous question called 'Regression to the mean'.)
    • -
  • -
- -
- -
- - -
-

Galton's Data

-
-
-
    -
  • Let's look at the data first, used by Francis Galton in 1885.
  • -
  • Galton was a statistician who invented the term and concepts -of regression and correlation, founded the journal Biometrika, -and was the cousin of Charles Darwin.
  • -
  • You may need to run install.packages("UsingR") if the UsingR library is not installed.
  • -
  • Let's look at the marginal (parents disregarding children and children disregarding parents) distributions first. - -
      -
    • Parent distribution is all heterosexual couples.
    • -
    • Correction for gender via multiplying female heights by 1.08.
    • -
    • Overplotting is an issue from discretization.
    • -
  • -
- -
- -
- - -
-

Code

-
-
-
library(UsingR); data(galton)
-par(mfrow=c(1,2))
-hist(galton$child,col="blue",breaks=100)
-hist(galton$parent,col="blue",breaks=100)
-
- -
plot of chunk galton
- -
- -
- - -
-

Finding the middle via least squares

-
-
-
    -
  • Consider only the children's heights. - -
      -
    • How could one describe the "middle"?
    • -
    • One definition, let \(Y_i\) be the height of child \(i\) for \(i = 1, \ldots, n = 928\), then define the middle as the value of \(\mu\) -that minimizes \[\sum_{i=1}^n (Y_i - \mu)^2\]
    • -
  • -
  • This is physical center of mass of the histrogram.
  • -
  • You might have guessed that the answer \(\mu = \bar X\).
  • -
- -
- -
- - -
-

Experiment

-
-
-

Use R studio's manipulate to see what value of \(\mu\) minimizes the sum of the squared deviations.

- -
library(manipulate)
-myHist <- function(mu){
-  hist(galton$child,col="blue",breaks=100)
-  lines(c(mu, mu), c(0, 150),col="red",lwd=5)
-  mse <- mean((galton$child - mu)^2)
-  text(63, 150, paste("mu = ", mu))
-  text(63, 140, paste("MSE = ", round(mse, 2)))
-}
-manipulate(myHist(mu), mu = slider(62, 74, step = 0.5))
-
- -
- -
- - -
-

The least squares estimate is the empirical mean

-
-
-
  hist(galton$child,col="blue",breaks=100)
-  meanChild <- mean(galton$child)
-  lines(rep(meanChild,100),seq(0,150,length=100),col="red",lwd=5)
-
- -
plot of chunk lsm
- -
- -
- - -
-

The math follows as:

-
-
-

\[ -\begin{align} -\sum_{i=1}^n (Y_i - \mu)^2 & = \ -\sum_{i=1}^n (Y_i - \bar Y + \bar Y - \mu)^2 \\ -& = \sum_{i=1}^n (Y_i - \bar Y)^2 + \ -2 \sum_{i=1}^n (Y_i - \bar Y) (\bar Y - \mu) +\ -\sum_{i=1}^n (\bar Y - \mu)^2 \\ -& = \sum_{i=1}^n (Y_i - \bar Y)^2 + \ -2 (\bar Y - \mu) \sum_{i=1}^n (Y_i - \bar Y) +\ -\sum_{i=1}^n (\bar Y - \mu)^2 \\ -& = \sum_{i=1}^n (Y_i - \bar Y)^2 + \ -2 (\bar Y - \mu) (\sum_{i=1}^n Y_i - n \bar Y) +\ -\sum_{i=1}^n (\bar Y - \mu)^2 \\ -& = \sum_{i=1}^n (Y_i - \bar Y)^2 + \sum_{i=1}^n (\bar Y - \mu)^2\\ -& \geq \sum_{i=1}^n (Y_i - \bar Y)^2 \ -\end{align} -\]

- -
- -
- - -
-

Comparing childrens' heights and their parents' heights

-
-
-
plot(galton$parent,galton$child,pch=19,col="blue")
-
- -
plot of chunk unnamed-chunk-1
- -
- -
- - -
- -
-
-

Size of point represents number of points at that (X, Y) combination (See the Rmd file for the code).

- -
plot of chunk freqGalton
- -
- -
- - -
-

Regression through the origin

-
-
-
    -
  • Suppose that \(X_i\) are the parents' heights.
  • -
  • Consider picking the slope \(\beta\) that minimizes \[\sum_{i=1}^n (Y_i - X_i \beta)^2\]
  • -
  • This is exactly using the origin as a pivot point picking the -line that minimizes the sum of the squared vertical distances -of the points to the line
  • -
  • Use R studio's manipulate function to experiment
  • -
  • Subtract the means so that the origin is the mean of the parent -and children's heights
  • -
- -
- -
- - -
- -
-
-
myPlot <- function(beta){
-  y <- galton$child - mean(galton$child)
-  x <- galton$parent - mean(galton$parent)
-  freqData <- as.data.frame(table(x, y))
-  names(freqData) <- c("child", "parent", "freq")
-  plot(
-    as.numeric(as.vector(freqData$parent)), 
-    as.numeric(as.vector(freqData$child)),
-    pch = 21, col = "black", bg = "lightblue",
-    cex = .15 * freqData$freq, 
-    xlab = "parent", 
-    ylab = "child"
-    )
-  abline(0, beta, lwd = 3)
-  points(0, 0, cex = 2, pch = 19)
-  mse <- mean( (y - beta * x)^2 )
-  title(paste("beta = ", beta, "mse = ", round(mse, 3)))
-}
-manipulate(myPlot(beta), beta = slider(0.6, 1.2, step = 0.02))
-
- -
- -
- - -
-

The solution

-
-
-

In the next few lectures we'll talk about why this is the solution

- -
lm(I(child - mean(child))~ I(parent - mean(parent)) - 1, data = galton)
-
- -

-Call:
-lm(formula = I(child - mean(child)) ~ I(parent - mean(parent)) - 
-    1, data = galton)
-
-Coefficients:
-I(parent - mean(parent))  
-                   0.646  
-
- -
- -
- - -
-

Visualizing the best fit line

-
-
-

Size of points are frequencies at that X, Y combination

- -
plot of chunk unnamed-chunk-3
- -
- -
- - -
- - - - - - - - - - - - - - - - - \ No newline at end of file + + + + + + + + + + + + + + +Introduction to regression + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+

A famous motivating example

+

+ +
+
+

Questions for this class

+
    +
  • Consider trying to answer the following kinds of questions:
  • +
  • To use the parents’ heights to predict childrens’ heights.
  • +
  • To try to find a parsimonious, easily described mean relationship between parent and children’s heights.
  • +
  • To investigate the variation in childrens’ heights that appears unrelated to parents’ heights (residual variation).
  • +
  • To quantify what impact genotype information has beyond parental height in explaining child height.
  • +
  • To figure out how/whether and what assumptions are needed to generalize findings beyond the data in question.
  • +
  • Why do children of very tall parents tend to be tall, but a little shorter than their parents and why children of very short parents tend to be short, but a little taller than their parents? (This is a famous question called ‘Regression to the mean’.)
  • +
+
+
+

Galton’s Data

+
    +
  • Let’s look at the data first, used by Francis Galton in 1885.
  • +
  • Galton was a statistician who invented the term and concepts of regression and correlation, founded the journal Biometrika, and was the cousin of Charles Darwin.
  • +
  • You may need to run install.packages("UsingR") if the UsingR library is not installed.
  • +
  • Let’s look at the marginal (parents disregarding children and children disregarding parents) distributions first.
  • +
  • Parent distribution is all heterosexual couples.
  • +
  • Correction for gender via multiplying female heights by 1.08.
  • +
  • Overplotting is an issue from discretization.
  • +
+
+
+

Code

+
library(UsingR); data(galton)
+par(mfrow=c(1,2))
+hist(galton$child,col="blue",breaks=100)
+hist(galton$parent,col="blue",breaks=100)
+
+ +
+
+
+

Finding the middle via least squares

+
    +
  • Consider only the children’s heights.
  • +
  • How could one describe the “middle”?
  • +
  • One definition, let \(Y_i\) be the height of child \(i\) for \(i = 1, \ldots, n = 928\), then define the middle as the value of \(\mu\) that minimizes \[\sum_{i=1}^n (Y_i - \mu)^2\]
  • +
  • This is physical center of mass of the histrogram.
  • +
  • You might have guessed that the answer \(\mu = \bar X\).
  • +
+
+
+

Experiment

+
+

Use R studio’s manipulate to see what value of \(\mu\) minimizes the sum of the squared deviations.

+
library(manipulate)
+myHist <- function(mu){
+  hist(galton$child,col="blue",breaks=100)
+  lines(c(mu, mu), c(0, 150),col="red",lwd=5)
+  mse <- mean((galton$child - mu)^2)
+  text(63, 150, paste("mu = ", mu))
+  text(63, 140, paste("MSE = ", round(mse, 2)))
+}
+manipulate(myHist(mu), mu = slider(62, 74, step = 0.5))
+
+
+
+

The least squares estimate is the empirical mean

+
  hist(galton$child,col="blue",breaks=100)
+  meanChild <- mean(galton$child)
+  lines(rep(meanChild,100),seq(0,150,length=100),col="red",lwd=5)
+
+ +
+
+

The math follows as:

+

\[ +\begin{align} +\sum_{i=1}^n (Y_i - \mu)^2 & = \ +\sum_{i=1}^n (Y_i - \bar Y + \bar Y - \mu)^2 \\ +& = \sum_{i=1}^n (Y_i - \bar Y)^2 + \ +2 \sum_{i=1}^n (Y_i - \bar Y) (\bar Y - \mu) +\ +\sum_{i=1}^n (\bar Y - \mu)^2 \\ +& = \sum_{i=1}^n (Y_i - \bar Y)^2 + \ +2 (\bar Y - \mu) \sum_{i=1}^n (Y_i - \bar Y) +\ +\sum_{i=1}^n (\bar Y - \mu)^2 \\ +& = \sum_{i=1}^n (Y_i - \bar Y)^2 + \ +2 (\bar Y - \mu) (\sum_{i=1}^n Y_i - n \bar Y) +\ +\sum_{i=1}^n (\bar Y - \mu)^2 \\ +& = \sum_{i=1}^n (Y_i - \bar Y)^2 + \sum_{i=1}^n (\bar Y - \mu)^2\\ +& \geq \sum_{i=1}^n (Y_i - \bar Y)^2 \ +\end{align} +\]

+
+
+
+

Comparing childrens’ heights and their parents’ heights

+
plot(galton$parent,galton$child,pch=19,col="blue")
+
+ +
+

Size of point represents number of points at that (X, Y) combination (See the Rmd file for the code).

+
+ +
+
+
+

Regression through the origin

+
    +
  • Suppose that \(X_i\) are the parents’ heights.
  • +
  • Consider picking the slope \(\beta\) that minimizes \[\sum_{i=1}^n (Y_i - X_i \beta)^2\]
  • +
  • This is exactly using the origin as a pivot point picking the line that minimizes the sum of the squared vertical distances of the points to the line
  • +
  • Use R studio’s manipulate function to experiment
  • +
  • Subtract the means so that the origin is the mean of the parent and children’s heights
  • +
+
myPlot <- function(beta){
+  y <- galton$child - mean(galton$child)
+  x <- galton$parent - mean(galton$parent)
+  freqData <- as.data.frame(table(x, y))
+  names(freqData) <- c("child", "parent", "freq")
+  plot(
+    as.numeric(as.vector(freqData$parent)), 
+    as.numeric(as.vector(freqData$child)),
+    pch = 21, col = "black", bg = "lightblue",
+    cex = .15 * freqData$freq, 
+    xlab = "parent", 
+    ylab = "child"
+    )
+  abline(0, beta, lwd = 3)
+  points(0, 0, cex = 2, pch = 19)
+  mse <- mean( (y - beta * x)^2 )
+  title(paste("beta = ", beta, "mse = ", round(mse, 3)))
+}
+manipulate(myPlot(beta), beta = slider(0.6, 1.2, step = 0.02))
+
+
+

The solution

+
+

In the next few lectures we’ll talk about why this is the solution

+
lm(I(child - mean(child))~ I(parent - mean(parent)) - 1, data = galton)
+

+Call:
+lm(formula = I(child - mean(child)) ~ I(parent - mean(parent)) - 
+    1, data = galton)
+
+Coefficients:
+I(parent - mean(parent))  
+                  0.6463  
+
+
+
+

Visualizing the best fit line

+
+

Size of points are frequencies at that X, Y combination

+
+ +
+
+
+ + + + +
+ + + + + + + + diff --git a/07_RegressionModels/01_02_notation/index.Rmd b/07_RegressionModels/01_02_notation/index.Rmd index 040699101..e8f0e7963 100644 --- a/07_RegressionModels/01_02_notation/index.Rmd +++ b/07_RegressionModels/01_02_notation/index.Rmd @@ -20,7 +20,7 @@ mode : selfcontained # {standalone, draft} * We will try to minimize the amount of mathematics required for this class. * No caclculus is required. ---- + ## Notation for data @@ -35,7 +35,7 @@ mode : selfcontained # {standalone, draft} * $X_i$ is a conceptual random variable. * $x$ is a number that we plug into. ---- + ## The empirical mean * Define the empirical mean as @@ -55,7 +55,7 @@ The the mean of the $\tilde X_i$ is 0. \sum_{i=1}^n (X_i - \mu)^2 $$ ---- + ## The emprical standard deviation and variance @@ -71,7 +71,7 @@ $S = \sqrt{S^2}$. Notice that the standard deviation has the same units as the d * Sometimes people divide by $n$ rather than $n-1$ (the latter produces an unbiased estimate.) ---- + ## Normalization * The the data defined by @@ -84,7 +84,7 @@ have empirical mean zero and empirical standard deviation 1. * Example, a value of 2 form normalized data means that data point was two standard deviations larger than the mean. ---- + ## The empirical covariance * Consider now when we have pairs of data, $(X_i, Y_i)$. * Their empirical covariance is @@ -102,7 +102,7 @@ $$ where $S_x$ and $S_y$ are the estimates of standard deviations for the $X$ observations and $Y$ observations, respectively. ---- + ## Some facts about correlation * $Cor(X, Y) = Cor(Y, X)$ * $-1 \leq Cor(X, Y) \leq 1$ diff --git a/07_RegressionModels/01_02_notation/index.html b/07_RegressionModels/01_02_notation/index.html index 42e277dcf..54c6ae95a 100644 --- a/07_RegressionModels/01_02_notation/index.html +++ b/07_RegressionModels/01_02_notation/index.html @@ -1,242 +1,238 @@ - - - - Some basic notation and background - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

Some basic notation and background

-

Regression

-

Brian Caffo, PhD
Johns Hopkins Bloomberg School of Public Health

-
-
- - - -
-

Some basic definitions

-
-
-
    -
  • In this module, we'll cover some basic definitions and notation used throughout the class.
  • -
  • We will try to minimize the amount of mathematics required for this class.
  • -
  • No caclculus is required.
  • -
- -
- -
- - -
-

Notation for data

-
-
-
    -
  • We write \(X_1, X_2, \ldots, X_n\) to describe \(n\) data points.
  • -
  • As an example, consider the data set \(\{1, 2, 5\}\) then - -
      -
    • \(X_1 = 1\), \(X_2 = 2\), \(X_3 = 5\) and \(n = 3\).
    • -
  • -
  • We often use a different letter than \(X\), such as \(Y_1, \ldots , Y_n\).
  • -
  • We will typically use Greek letters for things we don't know. -Such as, \(\mu\) is a mean that we'd like to estimate.
  • -
  • We will use capital letters for conceptual values of the variables and lowercase letters for realized values. - -
      -
    • So this way we can write \(P(X_i > x)\).
    • -
    • \(X_i\) is a conceptual random variable.
    • -
    • \(x\) is a number that we plug into.
    • -
  • -
- -
- -
- - -
-

The empirical mean

-
-
-
    -
  • Define the empirical mean as -\[ -\bar X = \frac{1}{n}\sum_{i=1}^n X_i. -\]
  • -
  • Notice if we subtract the mean from data points, we get data that has mean 0. That is, if we define -\[ -\tilde X_i = X_i - \bar X. -\] -The the mean of the \(\tilde X_i\) is 0.
  • -
  • This process is called "centering" the random variables.
  • -
  • The mean is a measure of central tendancy of the data.
  • -
  • Recall from the previous lecture that the mean is -the least squares solution for minimizing -\[ -\sum_{i=1}^n (X_i - \mu)^2 -\]
  • -
- -
- -
- - -
-

The emprical standard deviation and variance

-
-
-
    -
  • Define the empirical variance as -\[ -S^2 = \frac{1}{n-1} \sum_{i=1}^n (X_i - \bar X)^2 -= \frac{1}{n-1} \left( \sum_{i=1}^n X_i^2 - n \bar X ^ 2 \right) -\]
  • -
  • The empirical standard deviation is defined as -\(S = \sqrt{S^2}\). Notice that the standard deviation has the same units as the data.
  • -
  • The data defined by \(X_i / s\) have empirical standard deviation 1. This is called "scaling" the data.
  • -
  • The empirical standard deviation is a measure of spread.
  • -
  • Sometimes people divide by \(n\) rather than \(n-1\) (the latter -produces an unbiased estimate.)
  • -
- -
- -
- - -
-

Normalization

-
-
-
    -
  • The the data defined by -\[ -Z_i = \frac{X_i - \bar X}{s} -\] -have empirical mean zero and empirical standard deviation 1.
  • -
  • The process of centering then scaling the data is called "normalizing" the data.
  • -
  • Normalized data are centered at 0 and have units equal to standard deviations of the original data.
  • -
  • Example, a value of 2 form normalized data means that data point -was two standard deviations larger than the mean.
  • -
- -
- -
- - -
-

The empirical covariance

-
-
-
    -
  • Consider now when we have pairs of data, \((X_i, Y_i)\).
  • -
  • Their empirical covariance is -\[ -Cov(X, Y) = -\frac{1}{n-1}\sum_{i=1}^n (X_i - \bar X) (Y_i - \bar Y) -= \frac{1}{n-1}\left( \sum_{i=1}^n X_i Y_i - n \bar X \bar Y\right) -\]
  • -
  • Some people prefer to divide by \(n\) rather than \(n-1\) (the latter -produces an unbiased estimate.)
  • -
  • The correlation is defined is -\[ -Cor(X, Y) = \frac{Cov(X, Y)}{S_x S_y} -\] -where \(S_x\) and \(S_y\) are the estimates of standard deviations -for the \(X\) observations and \(Y\) observations, respectively.
  • -
- -
- -
- - -
-

Some facts about correlation

-
-
-
    -
  • \(Cor(X, Y) = Cor(Y, X)\)
  • -
  • \(-1 \leq Cor(X, Y) \leq 1\)
  • -
  • \(Cor(X,Y) = 1\) and \(Cor(X, Y) = -1\) only when the \(X\) or \(Y\) observations fall perfectly on a positive or negative sloped line, respectively.
  • -
  • \(Cor(X, Y)\) measures the strength of the linear relationship between the \(X\) and \(Y\) data, with stronger relationships as \(Cor(X,Y)\) heads towards -1 or 1.
  • -
  • \(Cor(X, Y) = 0\) implies no linear relationship.
  • -
- -
- -
- - -
- - - - - - - - - - - - - - - - - \ No newline at end of file + + + + + + + + + + + + + + +Some basic notation and background + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+

Some basic definitions

+
    +
  • In this module, we’ll cover some basic definitions and notation used throughout the class.
  • +
  • We will try to minimize the amount of mathematics required for this class.
  • +
  • No caclculus is required.
  • +
+
+
+

Notation for data

+
    +
  • We write \(X_1, X_2, \ldots, X_n\) to describe \(n\) data points.
  • +
  • As an example, consider the data set \(\{1, 2, 5\}\) then
  • +
  • \(X_1 = 1\), \(X_2 = 2\), \(X_3 = 5\) and \(n = 3\).
  • +
  • We often use a different letter than \(X\), such as \(Y_1, \ldots , Y_n\).
  • +
  • We will typically use Greek letters for things we don’t know. Such as, \(\mu\) is a mean that we’d like to estimate.
  • +
  • We will use capital letters for conceptual values of the variables and lowercase letters for realized values.
  • +
  • So this way we can write \(P(X_i > x)\).
  • +
  • \(X_i\) is a conceptual random variable.
  • +
  • \(x\) is a number that we plug into.
  • +
+
+
+

The empirical mean

+
    +
  • Define the empirical mean as \[ +\bar X = \frac{1}{n}\sum_{i=1}^n X_i. +\]
  • +
  • Notice if we subtract the mean from data points, we get data that has mean 0. That is, if we define \[ +\tilde X_i = X_i - \bar X. +\] The the mean of the \(\tilde X_i\) is 0.
  • +
  • This process is called “centering” the random variables.
  • +
  • The mean is a measure of central tendancy of the data.
  • +
  • Recall from the previous lecture that the mean is the least squares solution for minimizing \[ + \sum_{i=1}^n (X_i - \mu)^2 + \]
  • +
+
+
+

The emprical standard deviation and variance

+
    +
  • Define the empirical variance as \[ +S^2 = \frac{1}{n-1} \sum_{i=1}^n (X_i - \bar X)^2 += \frac{1}{n-1} \left( \sum_{i=1}^n X_i^2 - n \bar X ^ 2 \right) +\]
  • +
  • The empirical standard deviation is defined as \(S = \sqrt{S^2}\). Notice that the standard deviation has the same units as the data.
  • +
  • The data defined by \(X_i / s\) have empirical standard deviation 1. This is called “scaling” the data.
  • +
  • The empirical standard deviation is a measure of spread.
  • +
  • Sometimes people divide by \(n\) rather than \(n-1\) (the latter produces an unbiased estimate.)
  • +
+
+
+

Normalization

+
    +
  • The the data defined by \[ +Z_i = \frac{X_i - \bar X}{s} +\] have empirical mean zero and empirical standard deviation 1.
  • +
  • The process of centering then scaling the data is called “normalizing” the data.
  • +
  • Normalized data are centered at 0 and have units equal to standard deviations of the original data.
  • +
  • Example, a value of 2 form normalized data means that data point was two standard deviations larger than the mean.
  • +
+
+
+

The empirical covariance

+
    +
  • Consider now when we have pairs of data, \((X_i, Y_i)\).
  • +
  • Their empirical covariance is \[ +Cov(X, Y) = +\frac{1}{n-1}\sum_{i=1}^n (X_i - \bar X) (Y_i - \bar Y) += \frac{1}{n-1}\left( \sum_{i=1}^n X_i Y_i - n \bar X \bar Y\right) +\]
  • +
  • Some people prefer to divide by \(n\) rather than \(n-1\) (the latter produces an unbiased estimate.)
  • +
  • The correlation is defined is \[ +Cor(X, Y) = \frac{Cov(X, Y)}{S_x S_y} +\] where \(S_x\) and \(S_y\) are the estimates of standard deviations for the \(X\) observations and \(Y\) observations, respectively.
  • +
+
+
+

Some facts about correlation

+
    +
  • \(Cor(X, Y) = Cor(Y, X)\)
  • +
  • \(-1 \leq Cor(X, Y) \leq 1\)
  • +
  • \(Cor(X,Y) = 1\) and \(Cor(X, Y) = -1\) only when the \(X\) or \(Y\) observations fall perfectly on a positive or negative sloped line, respectively.
  • +
  • \(Cor(X, Y)\) measures the strength of the linear relationship between the \(X\) and \(Y\) data, with stronger relationships as \(Cor(X,Y)\) heads towards -1 or 1.
  • +
  • \(Cor(X, Y) = 0\) implies no linear relationship.
  • +
+
+ + + + +
+ + + + + + + + diff --git a/07_RegressionModels/01_03_ols/index.Rmd b/07_RegressionModels/01_03_ols/index.Rmd index 17f93b5c5..d9a429e02 100644 --- a/07_RegressionModels/01_03_ols/index.Rmd +++ b/07_RegressionModels/01_03_ols/index.Rmd @@ -1,252 +1,254 @@ ---- -title : Least squares estimation of regression lines -subtitle : Regression via least squares -author : Brian Caffo, Jeff Leek and Roger Peng -job : Johns Hopkins Bloomberg School of Public Health -logo : bloomberg_shield.png -framework : io2012 # {io2012, html5slides, shower, dzslides, ...} -highlighter : highlight.js # {highlight.js, prettify, highlight} -hitheme : tomorrow # -url: - lib: ../../libraries - assets: ../../assets -widgets : [mathjax] # {mathjax, quiz, bootstrap} -mode : selfcontained # {standalone, draft} - ---- - -```{r setup, cache = FALSE, echo = FALSE, message = FALSE, warning = FALSE, tidy = FALSE} -# make this an external chunk that can be included in any file -options(width = 100) -opts_chunk$set(message = F, error = F, warning = F, comment = NA, fig.align = 'center', dpi = 100, tidy = F, cache.path = '.cache/', fig.path = 'fig/') - -options(xtable.type = 'html') -knit_hooks$set(inline = function(x) { - if(is.numeric(x)) { - round(x, getOption('digits')) - } else { - paste(as.character(x), collapse = ', ') - } -}) -knit_hooks$set(plot = knitr:::hook_plot_html) -``` - -## General least squares for linear equations -Consider again the parent and child height data from Galton - -```{r, fig.height=5, fig.width=5, echo=FALSE} -library(UsingR) -data(galton) -freqData <- as.data.frame(table(galton$child, galton$parent)) -names(freqData) <- c("child", "parent", "freq") -plot(as.numeric(as.vector(freqData$parent)), - as.numeric(as.vector(freqData$child)), - pch = 21, col = "black", bg = "lightblue", - cex = .05 * freqData$freq, - xlab = "parent", ylab = "child") -``` - ---- -## Fitting the best line -* Let $Y_i$ be the $i^{th}$ child's height and $X_i$ be the -$i^{th}$ (average over the pair of) parents' heights. -* Consider finding the best line - * Child's Height = $\beta_0$ + Parent's Height $\beta_1$ -* Use least squares - $$ - \sum_{i=1}^n \{Y_i - (\beta_0 + \beta_1 X_i)\}^2 - $$ -* How do we do it? - ---- -## Let's solve this problem generally -* Let $\mu_i = \beta_0 + \beta_1 X_i$ and our estimates be -$\hat \mu_i = \hat \beta_0 + \hat \beta_1 X_i$. -* We want to minimize -$$ \dagger \sum_{i=1}^n (Y_i - \mu_i)^2 = \sum_{i=1}^n (Y_i - \hat \mu_i) ^ 2 + 2 \sum_{i=1}^n (Y_i - \hat \mu_i) (\hat \mu_i - \mu_i) + \sum_{i=1}^n (\hat \mu_i - \mu_i)^2$$ -* Suppose that $$\sum_{i=1}^n (Y_i - \hat \mu_i) (\hat \mu_i - \mu_i) = 0$$ then -$$ \dagger -=\sum_{i=1}^n (Y_i - \hat \mu_i) ^ 2 + \sum_{i=1}^n (\hat \mu_i - \mu_i)^2\geq \sum_{i=1}^n (Y_i - \hat \mu_i) ^ 2$$ - ---- -## Mean only regression -* So we know that if: -$$ \sum_{i=1}^n (Y_i - \hat \mu_i) (\hat \mu_i - \mu_i) = 0$$ -where $\mu_i = \beta_0 + \beta_1 X_i$ and $\hat \mu_i = \hat \beta_0 + \hat \beta_1 X_i$ then the line -$$Y = \hat \beta_0 + \hat \beta_1 X$$ -is the least squares line. -* Consider forcing $\beta_1 = 0$ and thus $\hat \beta_1=0$; -that is, only considering horizontal lines -* The solution works out to be -$$\hat \beta_0 = \bar Y.$$ - ---- -## Let's show it -$$\begin{align} \ -\sum_{i=1}^n (Y_i - \hat \mu_i) (\hat \mu_i - \mu_i) -= & \sum_{i=1}^n (Y_i - \hat \beta_0) (\hat \beta_0 - \beta_0) \\ -= & (\hat \beta_0 - \beta_0) \sum_{i=1}^n (Y_i - \hat \beta_0) \ -\end{align} $$ - -Thus, this will equal 0 if $\sum_{i=1}^n (Y_i - \hat \beta_0) -= n\bar Y - n \hat \beta_0=0$ - -Thus $\hat \beta_0 = \bar Y.$ - ---- -## Regression through the origin -* Recall that if: -$$ \sum_{i=1}^n (Y_i - \hat \mu_i) (\hat \mu_i - \mu_i) = 0$$ -where $\mu_i = \beta_0 + \beta_1 X_i$ and $\hat \mu_i = \hat \beta_0 + \hat \beta_1 X_i$ then the line -$$Y = \hat \beta_0 + \hat \beta_1 X$$ -is the least squares line. -* Consider forcing $\beta_0 = 0$ and thus $\hat \beta_0=0$; -that is, only considering lines through the origin -* The solution works out to be -$$\hat \beta_1 = \frac{\sum_{i=1^n} Y_i X_i}{\sum_{i=1}^n X_i^2}.$$ - ---- -## Let's show it -$$\begin{align} \ -\sum_{i=1}^n (Y_i - \hat \mu_i) (\hat \mu_i - \mu_i) -= & \sum_{i=1}^n (Y_i - \hat \beta_1 X_i) (\hat \beta_1 X_i - \beta_1 X_i) \\ -= & (\hat \beta_1 - \beta_1) \sum_{i=1}^n (Y_i X_i - \hat \beta_1 X_i ^2) \ -\end{align} $$ - -Thus, this will equal 0 if $\sum_{i=1}^n (Y_i X_i - \hat \beta_1 X_i ^2) = \sum_{i=1}^n Y_i X_i - \hat \beta_1 \sum_{i=1}^n X_i^2 =0$ - -Thus -$$\hat \beta_1 = \frac{\sum_{i=1^n} Y_i X_i}{\sum_{i=1}^n X_i^2}.$$ - - ---- -## Recapping what we know -* If we define $\mu_i = \beta_0$ then $\hat \beta_0 = \bar Y$. - * If we only look at horizontal lines, the least squares estimate of the intercept of that line is the average of the outcomes. -* If we define $\mu_i = X_i \beta_1$ then $\hat \beta_1 = \frac{\sum_{i=1^n} Y_i X_i}{\sum_{i=1}^n X_i^2}$ - * If we only look at lines through the origin, we get the estimated slope is the cross product of the X and Ys divided by the cross product of the Xs with themselves. -* What about when $\mu_i = \beta_0 + \beta_1 X_i$? That is, we don't want to restrict ourselves to horizontal lines or lines through the origin. - ---- -## Let's figure it out -$$\begin{align} \ -\sum_{i=1}^n (Y_i - \hat \mu_i) (\hat \mu_i - \mu_i) -= & \sum_{i=1}^n (Y_i - \hat\beta_0 - \hat\beta_1 X_i) (\hat \beta_0 + \hat \beta_1 X_i - \beta_0 - \beta_1 X_i) \\ -= & (\hat \beta_0 - \beta_0) \sum_{i=1}^n (Y_i - \hat\beta_0 - \hat \beta_1 X_i) + (\beta_1 - \beta_1)\sum_{i=1}^n (Y_i - \hat\beta_0 - \hat \beta_1 X_i)X_i\\ -\end{align} $$ -Note that - -$$0=\sum_{i=1}^n (Y_i - \hat\beta_0 - \hat \beta_1 X_i) = n \bar Y - n \hat \beta_0 - n \hat \beta_1 \bar X ~~\mbox{implies that}~~\hat \beta_0 = \bar Y - \hat \beta_1 \bar X $$ - -Then -$$\sum_{i=1}^n (Y_i - \hat\beta_0 - \hat \beta_1 X_i) X_i = \sum_{i=1}^n (Y_i - \bar Y + \hat \beta_1 \bar X - \hat \beta_1 X_i)X_i$$ - ---- -## Continued -$$=\sum_{i=1}^n \{(Y_i - \bar Y) - \hat \beta_1 (X_i - \bar X) \}X_i$$ -And thus -$$ \sum_{i=1}^n (Y_i - \bar Y)X_i - \hat \beta_1 \sum_{i=1}^n -(X_i - \bar X) X_i = 0.$$ -So we arrive at -$$ -\hat \beta_1 = -\frac{\sum_{i=1}^n \{(Y_i - \bar Y)X_i}{\sum_{i=1}^n -(X_i - \bar X) X_i} = -\frac{\sum_{i=1}^n (Y_i - \bar Y)(X_i - \bar X)}{\sum_{i=1}^n -(X_i - \bar X) (X_i - \bar X)} -= Cor(Y, X) \frac{Sd(Y)}{Sd(X)}. -$$ -And recall -$$ -\hat \beta_0 = \bar Y - \hat \beta_1 \bar X. -$$ - ---- -## Consequences -* The least squares model fit to the line $Y = \beta_0 + \beta_1 X$ through the data pairs $(X_i, Y_i)$ with $Y_i$ as the outcome obtains the line $Y = \hat \beta_0 + \hat \beta_1 X$ where - $$\hat \beta_1 = Cor(Y, X) \frac{Sd(Y)}{Sd(X)} ~~~ \hat \beta_0 = \bar Y - \hat \beta_1 \bar X$$ -* $\hat \beta_1$ has the units of $Y / X$, $\hat \beta_0$ has the units of $Y$. -* The line passes through the point $(\bar X, \bar Y$) -* The slope of the regression line with $X$ as the outcome and $Y$ as the predictor is $Cor(Y, X) Sd(X)/ Sd(Y)$. -* The slope is the same one you would get if you centered the data, -$(X_i - \bar X, Y_i - \bar Y)$, and did regression through the origin. -* If you normalized the data, $\{ \frac{X_i - \bar X}{Sd(X)}, \frac{Y_i - \bar Y}{Sd(Y)}\}$, the slope is $Cor(Y, X)$. - ---- -## Revisiting Galton's data -### Double check our calculations using R -```{r, fig.height=4,fig.width=4,echo=TRUE} -y <- galton$child -x <- galton$parent -beta1 <- cor(y, x) * sd(y) / sd(x) -beta0 <- mean(y) - beta1 * mean(x) -rbind(c(beta0, beta1), coef(lm(y ~ x))) -``` - ---- -## Revisiting Galton's data -### Reversing the outcome/predictor relationship -```{r, fig.height=4,fig.width=4,echo=TRUE} -beta1 <- cor(y, x) * sd(x) / sd(y) -beta0 <- mean(x) - beta1 * mean(y) -rbind(c(beta0, beta1), coef(lm(x ~ y))) -``` - ---- -## Revisiting Galton's data -### Regression through the origin yields an equivalent slope if you center the data first -```{r, fig.height=4,fig.width=4,echo=TRUE} -yc <- y - mean(y) -xc <- x - mean(x) -beta1 <- sum(yc * xc) / sum(xc ^ 2) -c(beta1, coef(lm(y ~ x))[2]) -``` - ---- -## Revisiting Galton's data -### Normalizing variables results in the slope being the correlation -```{r, echo=TRUE} -yn <- (y - mean(y))/sd(y) -xn <- (x - mean(x))/sd(x) -c(cor(y, x), cor(yn, xn), coef(lm(yn ~ xn))[2]) -``` - - ---- -## Plotting the fit -* Size of points are frequencies at that X, Y combination. -* For the red lie the child is outcome. -* For the blue, the parent is the outcome (accounting for the fact that the response is plotted on the horizontal axis). -* Black line assumes $Cor(Y, X) = 1$ (slope is $Sd(Y)/Sd(x)$). -* Big black dot is $(\bar X, \bar Y)$. - ---- -The code to add the lines - -``` -abline(mean(y) - mean(x) * cor(y, x) * sd(y) / sd(x), - sd(y) / sd(x) * cor(y, x), - lwd = 3, col = "red") -abline(mean(y) - mean(x) * sd(y) / sd(x) / cor(y, x), - sd(y) cor(y, x) / sd(x), - lwd = 3, col = "blue") -abline(mean(y) - mean(x) * sd(y) / sd(x), - sd(y) / sd(x), - lwd = 2) -points(mean(x), mean(y), cex = 2, pch = 19) -``` - ---- -```{r, fig.height=6,fig.width=6,echo=FALSE} -freqData <- as.data.frame(table(galton$child, galton$parent)) -names(freqData) <- c("child", "parent", "freq") -plot(as.numeric(as.vector(freqData$parent)), - as.numeric(as.vector(freqData$child)), - pch = 21, col = "black", bg = "lightblue", - cex = .05 * freqData$freq, - xlab = "parent", ylab = "child", xlim = c(62, 74), ylim = c(62, 74)) -abline(mean(y) - mean(x) * cor(y, x) * sd(y) / sd(x), sd(y) / sd(x) * cor(y, x), lwd = 3, col = "red") -abline(mean(y) - mean(x) * sd(y) / sd(x) / cor(y, x), sd(y) / sd(x) / cor(y, x), lwd = 3, col = "blue") -abline(mean(y) - mean(x) * sd(y) / sd(x), sd(y) / sd(x), lwd = 2) -points(mean(x), mean(y), cex = 2, pch = 19) -``` +--- +title : Least squares estimation of regression lines +subtitle : Regression via least squares +author : Brian Caffo, Jeff Leek and Roger Peng +job : Johns Hopkins Bloomberg School of Public Health +logo : bloomberg_shield.png +framework : io2012 # {io2012, html5slides, shower, dzslides, ...} +highlighter : highlight.js # {highlight.js, prettify, highlight} +hitheme : tomorrow # +url: + lib: ../../libraries + assets: ../../assets +widgets : [mathjax] # {mathjax, quiz, bootstrap} +mode : selfcontained # {standalone, draft} +--- + + +```{r setup, cache = FALSE, echo = FALSE, message = FALSE, warning = FALSE, tidy = FALSE} +# Must explicitly include knitr or the chunks will fail, at least in Linux +library(knitr) +# make this an external chunk that can be included in any file +options(width = 100) +opts_chunk$set(message = F, error = F, warning = F, comment = NA, fig.align = 'center', dpi = 100, tidy = F, cache.path = '.cache/', fig.path = 'fig/') + +options(xtable.type = 'html') +knit_hooks$set(inline = function(x) { + if(is.numeric(x)) { + round(x, getOption('digits')) + } else { + paste(as.character(x), collapse = ', ') + } +}) +knit_hooks$set(plot = knitr:::hook_plot_html) +``` + +## General least squares for linear equations +Consider again the parent and child height data from Galton + +```{r, fig.height=5, fig.width=5, echo=FALSE} +library(UsingR) +data(galton) +freqData <- as.data.frame(table(galton$child, galton$parent)) +names(freqData) <- c("child", "parent", "freq") +plot(as.numeric(as.vector(freqData$parent)), + as.numeric(as.vector(freqData$child)), + pch = 21, col = "black", bg = "lightblue", + cex = .05 * freqData$freq, + xlab = "parent", ylab = "child") +``` + + +## Fitting the best line +* Let $Y_i$ be the $i^{th}$ child's height and $X_i$ be the +$i^{th}$ (average over the pair of) parents' heights. +* Consider finding the best line + * Child's Height = $\beta_0$ + Parent's Height $\beta_1$ +* Use least squares + $$ + \sum_{i=1}^n \{Y_i - (\beta_0 + \beta_1 X_i)\}^2 + $$ +* How do we do it? + + +## Let's solve this problem generally +* Let $\mu_i = \beta_0 + \beta_1 X_i$ and our estimates be +$\hat \mu_i = \hat \beta_0 + \hat \beta_1 X_i$. +* We want to minimize +$$ \dagger \sum_{i=1}^n (Y_i - \mu_i)^2 = \sum_{i=1}^n (Y_i - \hat \mu_i) ^ 2 + 2 \sum_{i=1}^n (Y_i - \hat \mu_i) (\hat \mu_i - \mu_i) + \sum_{i=1}^n (\hat \mu_i - \mu_i)^2$$ +* Suppose that $$\sum_{i=1}^n (Y_i - \hat \mu_i) (\hat \mu_i - \mu_i) = 0$$ then +$$ \dagger +=\sum_{i=1}^n (Y_i - \hat \mu_i) ^ 2 + \sum_{i=1}^n (\hat \mu_i - \mu_i)^2\geq \sum_{i=1}^n (Y_i - \hat \mu_i) ^ 2$$ + + +## Mean only regression +* So we know that if: +$$ \sum_{i=1}^n (Y_i - \hat \mu_i) (\hat \mu_i - \mu_i) = 0$$ +where $\mu_i = \beta_0 + \beta_1 X_i$ and $\hat \mu_i = \hat \beta_0 + \hat \beta_1 X_i$ then the line +$$Y = \hat \beta_0 + \hat \beta_1 X$$ +is the least squares line. +* Consider forcing $\beta_1 = 0$ and thus $\hat \beta_1=0$; +that is, only considering horizontal lines +* The solution works out to be +$$\hat \beta_0 = \bar Y.$$ + + +## Let's show it +$$\begin{align} \ +\sum_{i=1}^n (Y_i - \hat \mu_i) (\hat \mu_i - \mu_i) += & \sum_{i=1}^n (Y_i - \hat \beta_0) (\hat \beta_0 - \beta_0) \\ += & (\hat \beta_0 - \beta_0) \sum_{i=1}^n (Y_i - \hat \beta_0) \ +\end{align} $$ + +Thus, this will equal 0 if $\sum_{i=1}^n (Y_i - \hat \beta_0) += n\bar Y - n \hat \beta_0=0$ + +Thus $\hat \beta_0 = \bar Y.$ + + +## Regression through the origin +* Recall that if: +$$ \sum_{i=1}^n (Y_i - \hat \mu_i) (\hat \mu_i - \mu_i) = 0$$ +where $\mu_i = \beta_0 + \beta_1 X_i$ and $\hat \mu_i = \hat \beta_0 + \hat \beta_1 X_i$ then the line +$$Y = \hat \beta_0 + \hat \beta_1 X$$ +is the least squares line. +* Consider forcing $\beta_0 = 0$ and thus $\hat \beta_0=0$; +that is, only considering lines through the origin +* The solution works out to be +$$\hat \beta_1 = \frac{\sum_{i=1^n} Y_i X_i}{\sum_{i=1}^n X_i^2}.$$ + + +## Let's show it +$$\begin{align} \ +\sum_{i=1}^n (Y_i - \hat \mu_i) (\hat \mu_i - \mu_i) += & \sum_{i=1}^n (Y_i - \hat \beta_1 X_i) (\hat \beta_1 X_i - \beta_1 X_i) \\ += & (\hat \beta_1 - \beta_1) \sum_{i=1}^n (Y_i X_i - \hat \beta_1 X_i ^2) \ +\end{align} $$ + +Thus, this will equal 0 if $\sum_{i=1}^n (Y_i X_i - \hat \beta_1 X_i ^2) = \sum_{i=1}^n Y_i X_i - \hat \beta_1 \sum_{i=1}^n X_i^2 =0$ + +Thus +$$\hat \beta_1 = \frac{\sum_{i=1^n} Y_i X_i}{\sum_{i=1}^n X_i^2}.$$ + + + +## Recapping what we know +* If we define $\mu_i = \beta_0$ then $\hat \beta_0 = \bar Y$. + * If we only look at horizontal lines, the least squares estimate of the intercept of that line is the average of the outcomes. +* If we define $\mu_i = X_i \beta_1$ then $\hat \beta_1 = \frac{\sum_{i=1^n} Y_i X_i}{\sum_{i=1}^n X_i^2}$ + * If we only look at lines through the origin, we get the estimated slope is the cross product of the X and Ys divided by the cross product of the Xs with themselves. +* What about when $\mu_i = \beta_0 + \beta_1 X_i$? That is, we don't want to restrict ourselves to horizontal lines or lines through the origin. + + +## Let's figure it out +$$\begin{align} \ +\sum_{i=1}^n (Y_i - \hat \mu_i) (\hat \mu_i - \mu_i) += & \sum_{i=1}^n (Y_i - \hat\beta_0 - \hat\beta_1 X_i) (\hat \beta_0 + \hat \beta_1 X_i - \beta_0 - \beta_1 X_i) \\ += & (\hat \beta_0 - \beta_0) \sum_{i=1}^n (Y_i - \hat\beta_0 - \hat \beta_1 X_i) + (\beta_1 - \beta_1)\sum_{i=1}^n (Y_i - \hat\beta_0 - \hat \beta_1 X_i)X_i\\ +\end{align} $$ +Note that + +$$0=\sum_{i=1}^n (Y_i - \hat\beta_0 - \hat \beta_1 X_i) = n \bar Y - n \hat \beta_0 - n \hat \beta_1 \bar X ~~\mbox{implies that}~~\hat \beta_0 = \bar Y - \hat \beta_1 \bar X $$ + +Then +$$\sum_{i=1}^n (Y_i - \hat\beta_0 - \hat \beta_1 X_i) X_i = \sum_{i=1}^n (Y_i - \bar Y + \hat \beta_1 \bar X - \hat \beta_1 X_i)X_i$$ + + +## Continued +$$=\sum_{i=1}^n \{(Y_i - \bar Y) - \hat \beta_1 (X_i - \bar X) \}X_i$$ +And thus +$$ \sum_{i=1}^n (Y_i - \bar Y)X_i - \hat \beta_1 \sum_{i=1}^n +(X_i - \bar X) X_i = 0.$$ +So we arrive at +$$ +\hat \beta_1 = +\frac{\sum_{i=1}^n \{(Y_i - \bar Y)X_i}{\sum_{i=1}^n +(X_i - \bar X) X_i} = +\frac{\sum_{i=1}^n (Y_i - \bar Y)(X_i - \bar X)}{\sum_{i=1}^n +(X_i - \bar X) (X_i - \bar X)} += Cor(Y, X) \frac{Sd(Y)}{Sd(X)}. +$$ +And recall +$$ +\hat \beta_0 = \bar Y - \hat \beta_1 \bar X. +$$ + + +## Consequences +* The least squares model fit to the line $Y = \beta_0 + \beta_1 X$ through the data pairs $(X_i, Y_i)$ with $Y_i$ as the outcome obtains the line $Y = \hat \beta_0 + \hat \beta_1 X$ where + $$\hat \beta_1 = Cor(Y, X) \frac{Sd(Y)}{Sd(X)} ~~~ \hat \beta_0 = \bar Y - \hat \beta_1 \bar X$$ +* $\hat \beta_1$ has the units of $Y / X$, $\hat \beta_0$ has the units of $Y$. +* The line passes through the point $(\bar X, \bar Y$) +* The slope of the regression line with $X$ as the outcome and $Y$ as the predictor is $Cor(Y, X) Sd(X)/ Sd(Y)$. +* The slope is the same one you would get if you centered the data, +$(X_i - \bar X, Y_i - \bar Y)$, and did regression through the origin. +* If you normalized the data, $\{ \frac{X_i - \bar X}{Sd(X)}, \frac{Y_i - \bar Y}{Sd(Y)}\}$, the slope is $Cor(Y, X)$. + + +## Revisiting Galton's data +### Double check our calculations using R +```{r, fig.height=4,fig.width=4,echo=TRUE} +y <- galton$child +x <- galton$parent +beta1 <- cor(y, x) * sd(y) / sd(x) +beta0 <- mean(y) - beta1 * mean(x) +rbind(c(beta0, beta1), coef(lm(y ~ x))) +``` + + +## Revisiting Galton's data +### Reversing the outcome/predictor relationship +```{r, fig.height=4,fig.width=4,echo=TRUE} +beta1 <- cor(y, x) * sd(x) / sd(y) +beta0 <- mean(x) - beta1 * mean(y) +rbind(c(beta0, beta1), coef(lm(x ~ y))) +``` + + +## Revisiting Galton's data +### Regression through the origin yields an equivalent slope if you center the data first +```{r, fig.height=4,fig.width=4,echo=TRUE} +yc <- y - mean(y) +xc <- x - mean(x) +beta1 <- sum(yc * xc) / sum(xc ^ 2) +c(beta1, coef(lm(y ~ x))[2]) +``` + + +## Revisiting Galton's data +### Normalizing variables results in the slope being the correlation +```{r, echo=TRUE} +yn <- (y - mean(y))/sd(y) +xn <- (x - mean(x))/sd(x) +c(cor(y, x), cor(yn, xn), coef(lm(yn ~ xn))[2]) +``` + + + +## Plotting the fit +* Size of points are frequencies at that X, Y combination. +* For the red lie the child is outcome. +* For the blue, the parent is the outcome (accounting for the fact that the response is plotted on the horizontal axis). +* Black line assumes $Cor(Y, X) = 1$ (slope is $Sd(Y)/Sd(x)$). +* Big black dot is $(\bar X, \bar Y)$. + + +The code to add the lines + +``` +abline(mean(y) - mean(x) * cor(y, x) * sd(y) / sd(x), + sd(y) / sd(x) * cor(y, x), + lwd = 3, col = "red") +abline(mean(y) - mean(x) * sd(y) / sd(x) / cor(y, x), + sd(y) cor(y, x) / sd(x), + lwd = 3, col = "blue") +abline(mean(y) - mean(x) * sd(y) / sd(x), + sd(y) / sd(x), + lwd = 2) +points(mean(x), mean(y), cex = 2, pch = 19) +``` + + +```{r, fig.height=6,fig.width=6,echo=FALSE} +freqData <- as.data.frame(table(galton$child, galton$parent)) +names(freqData) <- c("child", "parent", "freq") +plot(as.numeric(as.vector(freqData$parent)), + as.numeric(as.vector(freqData$child)), + pch = 21, col = "black", bg = "lightblue", + cex = .05 * freqData$freq, + xlab = "parent", ylab = "child", xlim = c(62, 74), ylim = c(62, 74)) +abline(mean(y) - mean(x) * cor(y, x) * sd(y) / sd(x), sd(y) / sd(x) * cor(y, x), lwd = 3, col = "red") +abline(mean(y) - mean(x) * sd(y) / sd(x) / cor(y, x), sd(y) / sd(x) / cor(y, x), lwd = 3, col = "blue") +abline(mean(y) - mean(x) * sd(y) / sd(x), sd(y) / sd(x), lwd = 2) +points(mean(x), mean(y), cex = 2, pch = 19) +``` diff --git a/07_RegressionModels/01_03_ols/index.html b/07_RegressionModels/01_03_ols/index.html index 2f7fa3efb..fc132cc82 100644 --- a/07_RegressionModels/01_03_ols/index.html +++ b/07_RegressionModels/01_03_ols/index.html @@ -1,448 +1,333 @@ - - - - Least squares estimation of regression lines - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

Least squares estimation of regression lines

-

Regression via least squares

-

Brian Caffo, Jeff Leek and Roger Peng
Johns Hopkins Bloomberg School of Public Health

-
-
- - - -
-

General least squares for linear equations

-
-
-

Consider again the parent and child height data from Galton

- -
plot of chunk unnamed-chunk-1
- -
- -
- - -
-

Fitting the best line

-
-
-
    -
  • Let \(Y_i\) be the \(i^{th}\) child's height and \(X_i\) be the -\(i^{th}\) (average over the pair of) parents' heights.
  • -
  • Consider finding the best line - -
      -
    • Child's Height = \(\beta_0\) + Parent's Height \(\beta_1\)
    • -
  • -
  • Use least squares -\[ -\sum_{i=1}^n \{Y_i - (\beta_0 + \beta_1 X_i)\}^2 -\]
  • -
  • How do we do it?
  • -
- -
- -
- - -
-

Let's solve this problem generally

-
-
-
    -
  • Let \(\mu_i = \beta_0 + \beta_1 X_i\) and our estimates be -\(\hat \mu_i = \hat \beta_0 + \hat \beta_1 X_i\).
  • -
  • We want to minimize -\[ \dagger \sum_{i=1}^n (Y_i - \mu_i)^2 = \sum_{i=1}^n (Y_i - \hat \mu_i) ^ 2 + 2 \sum_{i=1}^n (Y_i - \hat \mu_i) (\hat \mu_i - \mu_i) + \sum_{i=1}^n (\hat \mu_i - \mu_i)^2\]
  • -
  • Suppose that \[\sum_{i=1}^n (Y_i - \hat \mu_i) (\hat \mu_i - \mu_i) = 0\] then -\[ \dagger -=\sum_{i=1}^n (Y_i - \hat \mu_i) ^ 2 + \sum_{i=1}^n (\hat \mu_i - \mu_i)^2\geq \sum_{i=1}^n (Y_i - \hat \mu_i) ^ 2\]
  • -
- -
- -
- - -
-

Mean only regression

-
-
-
    -
  • So we know that if: -\[ \sum_{i=1}^n (Y_i - \hat \mu_i) (\hat \mu_i - \mu_i) = 0\] -where \(\mu_i = \beta_0 + \beta_1 X_i\) and \(\hat \mu_i = \hat \beta_0 + \hat \beta_1 X_i\) then the line -\[Y = \hat \beta_0 + \hat \beta_1 X\] -is the least squares line.
  • -
  • Consider forcing \(\beta_1 = 0\) and thus \(\hat \beta_1=0\); -that is, only considering horizontal lines
  • -
  • The solution works out to be -\[\hat \beta_0 = \bar Y.\]
  • -
- -
- -
- - -
-

Let's show it

-
-
-

\[\begin{align} \ -\sum_{i=1}^n (Y_i - \hat \mu_i) (\hat \mu_i - \mu_i) -= & \sum_{i=1}^n (Y_i - \hat \beta_0) (\hat \beta_0 - \beta_0) \\ -= & (\hat \beta_0 - \beta_0) \sum_{i=1}^n (Y_i - \hat \beta_0) \ -\end{align} \]

- -

Thus, this will equal 0 if \(\sum_{i=1}^n (Y_i - \hat \beta_0) -= n\bar Y - n \hat \beta_0=0\)

- -

Thus \(\hat \beta_0 = \bar Y.\)

- -
- -
- - -
-

Regression through the origin

-
-
-
    -
  • Recall that if: -\[ \sum_{i=1}^n (Y_i - \hat \mu_i) (\hat \mu_i - \mu_i) = 0\] -where \(\mu_i = \beta_0 + \beta_1 X_i\) and \(\hat \mu_i = \hat \beta_0 + \hat \beta_1 X_i\) then the line -\[Y = \hat \beta_0 + \hat \beta_1 X\] -is the least squares line.
  • -
  • Consider forcing \(\beta_0 = 0\) and thus \(\hat \beta_0=0\); -that is, only considering lines through the origin
  • -
  • The solution works out to be -\[\hat \beta_1 = \frac{\sum_{i=1^n} Y_i X_i}{\sum_{i=1}^n X_i^2}.\]
  • -
- -
- -
- - -
-

Let's show it

-
-
-

\[\begin{align} \ -\sum_{i=1}^n (Y_i - \hat \mu_i) (\hat \mu_i - \mu_i) -= & \sum_{i=1}^n (Y_i - \hat \beta_1 X_i) (\hat \beta_1 X_i - \beta_1 X_i) \\ -= & (\hat \beta_1 - \beta_1) \sum_{i=1}^n (Y_i X_i - \hat \beta_1 X_i ^2) \ -\end{align} \]

- -

Thus, this will equal 0 if \(\sum_{i=1}^n (Y_i X_i - \hat \beta_1 X_i ^2) = \sum_{i=1}^n Y_i X_i - \hat \beta_1 \sum_{i=1}^n X_i^2 =0\)

- -

Thus -\[\hat \beta_1 = \frac{\sum_{i=1^n} Y_i X_i}{\sum_{i=1}^n X_i^2}.\]

- -
- -
- - -
-

Recapping what we know

-
-
-
    -
  • If we define \(\mu_i = \beta_0\) then \(\hat \beta_0 = \bar Y\). - -
      -
    • If we only look at horizontal lines, the least squares estimate of the intercept of that line is the average of the outcomes.
    • -
  • -
  • If we define \(\mu_i = X_i \beta_1\) then \(\hat \beta_1 = \frac{\sum_{i=1^n} Y_i X_i}{\sum_{i=1}^n X_i^2}\) - -
      -
    • If we only look at lines through the origin, we get the estimated slope is the cross product of the X and Ys divided by the cross product of the Xs with themselves.
    • -
  • -
  • What about when \(\mu_i = \beta_0 + \beta_1 X_i\)? That is, we don't want to restrict ourselves to horizontal lines or lines through the origin.
  • -
- -
- -
- - -
-

Let's figure it out

-
-
-

\[\begin{align} \ -\sum_{i=1}^n (Y_i - \hat \mu_i) (\hat \mu_i - \mu_i) -= & \sum_{i=1}^n (Y_i - \hat\beta_0 - \hat\beta_1 X_i) (\hat \beta_0 + \hat \beta_1 X_i - \beta_0 - \beta_1 X_i) \\ -= & (\hat \beta_0 - \beta_0) \sum_{i=1}^n (Y_i - \hat\beta_0 - \hat \beta_1 X_i) + (\beta_1 - \beta_1)\sum_{i=1}^n (Y_i - \hat\beta_0 - \hat \beta_1 X_i)X_i\\ -\end{align} \] -Note that

- -

\[0=\sum_{i=1}^n (Y_i - \hat\beta_0 - \hat \beta_1 X_i) = n \bar Y - n \hat \beta_0 - n \hat \beta_1 \bar X ~~\mbox{implies that}~~\hat \beta_0 = \bar Y - \hat \beta_1 \bar X \]

- -

Then -\[\sum_{i=1}^n (Y_i - \hat\beta_0 - \hat \beta_1 X_i) X_i = \sum_{i=1}^n (Y_i - \bar Y + \hat \beta_1 \bar X - \hat \beta_1 X_i)X_i\]

- -
- -
- - -
-

Continued

-
-
-

\[=\sum_{i=1}^n \{(Y_i - \bar Y) - \hat \beta_1 (X_i - \bar X) \}X_i\] -And thus -\[ \sum_{i=1}^n (Y_i - \bar Y)X_i - \hat \beta_1 \sum_{i=1}^n -(X_i - \bar X) X_i = 0.\] -So we arrive at -\[ -\hat \beta_1 = -\frac{\sum_{i=1}^n \{(Y_i - \bar Y)X_i}{\sum_{i=1}^n -(X_i - \bar X) X_i} = -\frac{\sum_{i=1}^n (Y_i - \bar Y)(X_i - \bar X)}{\sum_{i=1}^n -(X_i - \bar X) (X_i - \bar X)} -= Cor(Y, X) \frac{Sd(Y)}{Sd(X)}. -\] -And recall -\[ -\hat \beta_0 = \bar Y - \hat \beta_1 \bar X. -\]

- -
- -
- - -
-

Consequences

-
-
-
    -
  • The least squares model fit to the line \(Y = \beta_0 + \beta_1 X\) through the data pairs \((X_i, Y_i)\) with \(Y_i\) as the outcome obtains the line \(Y = \hat \beta_0 + \hat \beta_1 X\) where -\[\hat \beta_1 = Cor(Y, X) \frac{Sd(Y)}{Sd(X)} ~~~ \hat \beta_0 = \bar Y - \hat \beta_1 \bar X\]
  • -
  • \(\hat \beta_1\) has the units of \(Y / X\), \(\hat \beta_0\) has the units of \(Y\).
  • -
  • The line passes through the point \((\bar X, \bar Y\))
  • -
  • The slope of the regression line with \(X\) as the outcome and \(Y\) as the predictor is \(Cor(Y, X) Sd(X)/ Sd(Y)\).
  • -
  • The slope is the same one you would get if you centered the data, -\((X_i - \bar X, Y_i - \bar Y)\), and did regression through the origin.
  • -
  • If you normalized the data, \(\{ \frac{X_i - \bar X}{Sd(X)}, \frac{Y_i - \bar Y}{Sd(Y)}\}\), the slope is \(Cor(Y, X)\).
  • -
- -
- -
- - -
-

Revisiting Galton's data

-
-
-

Double check our calculations using R

- -
y <- galton$child
-x <- galton$parent
-beta1 <- cor(y, x) *  sd(y) / sd(x)
-beta0 <- mean(y) - beta1 * mean(x)
-rbind(c(beta0, beta1), coef(lm(y ~ x)))
-
- -
     (Intercept)      x
-[1,]       23.94 0.6463
-[2,]       23.94 0.6463
-
- -
- -
- - -
-

Revisiting Galton's data

-
-
-

Reversing the outcome/predictor relationship

- -
beta1 <- cor(y, x) *  sd(x) / sd(y)
-beta0 <- mean(x) - beta1 * mean(y)
-rbind(c(beta0, beta1), coef(lm(x ~ y)))
-
- -
     (Intercept)      y
-[1,]       46.14 0.3256
-[2,]       46.14 0.3256
-
- -
- -
- - -
-

Revisiting Galton's data

-
-
-

Regression through the origin yields an equivalent slope if you center the data first

- -
yc <- y - mean(y)
-xc <- x - mean(x)
-beta1 <- sum(yc * xc) / sum(xc ^ 2)
-c(beta1, coef(lm(y ~ x))[2])
-
- -
            x 
-0.6463 0.6463 
-
- -
- -
- - -
-

Revisiting Galton's data

-
-
-

Normalizing variables results in the slope being the correlation

- -
yn <- (y - mean(y))/sd(y)
-xn <- (x - mean(x))/sd(x)
-c(cor(y, x), cor(yn, xn), coef(lm(yn ~ xn))[2])
-
- -
                  xn 
-0.4588 0.4588 0.4588 
-
- -
- -
- - -
-

Plotting the fit

-
-
-
    -
  • Size of points are frequencies at that X, Y combination.
  • -
  • For the red lie the child is outcome.
  • -
  • For the blue, the parent is the outcome (accounting for the fact that the response is plotted on the horizontal axis).
  • -
  • Black line assumes \(Cor(Y, X) = 1\) (slope is \(Sd(Y)/Sd(x)\)).
  • -
  • Big black dot is \((\bar X, \bar Y)\).
  • -
- -
- -
- - -
- -
-
-

The code to add the lines

- -
abline(mean(y) - mean(x) * cor(y, x) * sd(y) / sd(x), 
-  sd(y) / sd(x) * cor(y, x), 
-  lwd = 3, col = "red")
-abline(mean(y) - mean(x) * sd(y) / sd(x) / cor(y, x), 
-  sd(y) cor(y, x) / sd(x), 
-  lwd = 3, col = "blue")
-abline(mean(y) - mean(x) * sd(y) / sd(x), 
-  sd(y) / sd(x), 
-  lwd = 2)
-points(mean(x), mean(y), cex = 2, pch = 19)
-
- -
- -
- - -
- -
-
-
plot of chunk unnamed-chunk-6
- -
- -
- - -
- - - - - - - - - - - - - - - - - \ No newline at end of file + + + + + + + + + + + + + + +Least squares estimation of regression lines + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+

General least squares for linear equations

+

Consider again the parent and child height data from Galton

+
+ +
+
+
+

Fitting the best line

+
    +
  • Let \(Y_i\) be the \(i^{th}\) child’s height and \(X_i\) be the \(i^{th}\) (average over the pair of) parents’ heights.
  • +
  • Consider finding the best line
  • +
  • Child’s Height = \(\beta_0\) + Parent’s Height \(\beta_1\)
  • +
  • Use least squares \[ + \sum_{i=1}^n \{Y_i - (\beta_0 + \beta_1 X_i)\}^2 + \]
  • +
  • How do we do it?
  • +
+
+
+

Let’s solve this problem generally

+
    +
  • Let \(\mu_i = \beta_0 + \beta_1 X_i\) and our estimates be \(\hat \mu_i = \hat \beta_0 + \hat \beta_1 X_i\).
  • +
  • We want to minimize \[ \dagger \sum_{i=1}^n (Y_i - \mu_i)^2 = \sum_{i=1}^n (Y_i - \hat \mu_i) ^ 2 + 2 \sum_{i=1}^n (Y_i - \hat \mu_i) (\hat \mu_i - \mu_i) + \sum_{i=1}^n (\hat \mu_i - \mu_i)^2\]
  • +
  • Suppose that \[\sum_{i=1}^n (Y_i - \hat \mu_i) (\hat \mu_i - \mu_i) = 0\] then \[ \dagger +=\sum_{i=1}^n (Y_i - \hat \mu_i) ^ 2 + \sum_{i=1}^n (\hat \mu_i - \mu_i)^2\geq \sum_{i=1}^n (Y_i - \hat \mu_i) ^ 2\]
  • +
+
+
+

Mean only regression

+
    +
  • So we know that if: \[ \sum_{i=1}^n (Y_i - \hat \mu_i) (\hat \mu_i - \mu_i) = 0\] where \(\mu_i = \beta_0 + \beta_1 X_i\) and \(\hat \mu_i = \hat \beta_0 + \hat \beta_1 X_i\) then the line \[Y = \hat \beta_0 + \hat \beta_1 X\] is the least squares line.
  • +
  • Consider forcing \(\beta_1 = 0\) and thus \(\hat \beta_1=0\); that is, only considering horizontal lines
  • +
  • The solution works out to be \[\hat \beta_0 = \bar Y.\]
  • +
+
+
+

Let’s show it

+

\[\begin{align} \ +\sum_{i=1}^n (Y_i - \hat \mu_i) (\hat \mu_i - \mu_i) += & \sum_{i=1}^n (Y_i - \hat \beta_0) (\hat \beta_0 - \beta_0) \\ += & (\hat \beta_0 - \beta_0) \sum_{i=1}^n (Y_i - \hat \beta_0) \ +\end{align} \]

+

Thus, this will equal 0 if \(\sum_{i=1}^n (Y_i - \hat \beta_0) = n\bar Y - n \hat \beta_0=0\)

+

Thus \(\hat \beta_0 = \bar Y.\)

+
+
+

Regression through the origin

+
    +
  • Recall that if: \[ \sum_{i=1}^n (Y_i - \hat \mu_i) (\hat \mu_i - \mu_i) = 0\] where \(\mu_i = \beta_0 + \beta_1 X_i\) and \(\hat \mu_i = \hat \beta_0 + \hat \beta_1 X_i\) then the line \[Y = \hat \beta_0 + \hat \beta_1 X\] is the least squares line.
  • +
  • Consider forcing \(\beta_0 = 0\) and thus \(\hat \beta_0=0\); that is, only considering lines through the origin
  • +
  • The solution works out to be \[\hat \beta_1 = \frac{\sum_{i=1^n} Y_i X_i}{\sum_{i=1}^n X_i^2}.\]
  • +
+
+
+

Let’s show it

+

\[\begin{align} \ +\sum_{i=1}^n (Y_i - \hat \mu_i) (\hat \mu_i - \mu_i) += & \sum_{i=1}^n (Y_i - \hat \beta_1 X_i) (\hat \beta_1 X_i - \beta_1 X_i) \\ += & (\hat \beta_1 - \beta_1) \sum_{i=1}^n (Y_i X_i - \hat \beta_1 X_i ^2) \ +\end{align} \]

+

Thus, this will equal 0 if \(\sum_{i=1}^n (Y_i X_i - \hat \beta_1 X_i ^2) = \sum_{i=1}^n Y_i X_i - \hat \beta_1 \sum_{i=1}^n X_i^2 =0\)

+

Thus \[\hat \beta_1 = \frac{\sum_{i=1^n} Y_i X_i}{\sum_{i=1}^n X_i^2}.\]

+
+
+

Recapping what we know

+
    +
  • If we define \(\mu_i = \beta_0\) then \(\hat \beta_0 = \bar Y\).
  • +
  • If we only look at horizontal lines, the least squares estimate of the intercept of that line is the average of the outcomes.
  • +
  • If we define \(\mu_i = X_i \beta_1\) then \(\hat \beta_1 = \frac{\sum_{i=1^n} Y_i X_i}{\sum_{i=1}^n X_i^2}\)
  • +
  • If we only look at lines through the origin, we get the estimated slope is the cross product of the X and Ys divided by the cross product of the Xs with themselves.
  • +
  • What about when \(\mu_i = \beta_0 + \beta_1 X_i\)? That is, we don’t want to restrict ourselves to horizontal lines or lines through the origin.
  • +
+
+
+

Let’s figure it out

+

\[\begin{align} \ +\sum_{i=1}^n (Y_i - \hat \mu_i) (\hat \mu_i - \mu_i) += & \sum_{i=1}^n (Y_i - \hat\beta_0 - \hat\beta_1 X_i) (\hat \beta_0 + \hat \beta_1 X_i - \beta_0 - \beta_1 X_i) \\ += & (\hat \beta_0 - \beta_0) \sum_{i=1}^n (Y_i - \hat\beta_0 - \hat \beta_1 X_i) + (\beta_1 - \beta_1)\sum_{i=1}^n (Y_i - \hat\beta_0 - \hat \beta_1 X_i)X_i\\ +\end{align} \] Note that

+

\[0=\sum_{i=1}^n (Y_i - \hat\beta_0 - \hat \beta_1 X_i) = n \bar Y - n \hat \beta_0 - n \hat \beta_1 \bar X ~~\mbox{implies that}~~\hat \beta_0 = \bar Y - \hat \beta_1 \bar X \]

+

Then \[\sum_{i=1}^n (Y_i - \hat\beta_0 - \hat \beta_1 X_i) X_i = \sum_{i=1}^n (Y_i - \bar Y + \hat \beta_1 \bar X - \hat \beta_1 X_i)X_i\]

+
+
+

Continued

+

\[=\sum_{i=1}^n \{(Y_i - \bar Y) - \hat \beta_1 (X_i - \bar X) \}X_i\] And thus \[ \sum_{i=1}^n (Y_i - \bar Y)X_i - \hat \beta_1 \sum_{i=1}^n +(X_i - \bar X) X_i = 0.\] So we arrive at \[ +\hat \beta_1 = +\frac{\sum_{i=1}^n \{(Y_i - \bar Y)X_i}{\sum_{i=1}^n +(X_i - \bar X) X_i} = +\frac{\sum_{i=1}^n (Y_i - \bar Y)(X_i - \bar X)}{\sum_{i=1}^n +(X_i - \bar X) (X_i - \bar X)} += Cor(Y, X) \frac{Sd(Y)}{Sd(X)}. +\] And recall \[ +\hat \beta_0 = \bar Y - \hat \beta_1 \bar X. +\]

+
+
+

Consequences

+
    +
  • The least squares model fit to the line \(Y = \beta_0 + \beta_1 X\) through the data pairs \((X_i, Y_i)\) with \(Y_i\) as the outcome obtains the line \(Y = \hat \beta_0 + \hat \beta_1 X\) where \[\hat \beta_1 = Cor(Y, X) \frac{Sd(Y)}{Sd(X)} ~~~ \hat \beta_0 = \bar Y - \hat \beta_1 \bar X\]
  • +
  • \(\hat \beta_1\) has the units of \(Y / X\), \(\hat \beta_0\) has the units of \(Y\).
  • +
  • The line passes through the point \((\bar X, \bar Y\))
  • +
  • The slope of the regression line with \(X\) as the outcome and \(Y\) as the predictor is \(Cor(Y, X) Sd(X)/ Sd(Y)\).
  • +
  • The slope is the same one you would get if you centered the data, \((X_i - \bar X, Y_i - \bar Y)\), and did regression through the origin.
  • +
  • If you normalized the data, \(\{ \frac{X_i - \bar X}{Sd(X)}, \frac{Y_i - \bar Y}{Sd(Y)}\}\), the slope is \(Cor(Y, X)\).
  • +
+
+
+

Revisiting Galton’s data

+
+

Double check our calculations using R

+
y <- galton$child
+x <- galton$parent
+beta1 <- cor(y, x) *  sd(y) / sd(x)
+beta0 <- mean(y) - beta1 * mean(x)
+rbind(c(beta0, beta1), coef(lm(y ~ x)))
+
     (Intercept)         x
+[1,]    23.94153 0.6462906
+[2,]    23.94153 0.6462906
+
+
+
+

Revisiting Galton’s data

+
+

Reversing the outcome/predictor relationship

+
beta1 <- cor(y, x) *  sd(x) / sd(y)
+beta0 <- mean(x) - beta1 * mean(y)
+rbind(c(beta0, beta1), coef(lm(x ~ y)))
+
     (Intercept)         y
+[1,]    46.13535 0.3256475
+[2,]    46.13535 0.3256475
+
+
+
+

Revisiting Galton’s data

+
+

Regression through the origin yields an equivalent slope if you center the data first

+
yc <- y - mean(y)
+xc <- x - mean(x)
+beta1 <- sum(yc * xc) / sum(xc ^ 2)
+c(beta1, coef(lm(y ~ x))[2])
+
                  x 
+0.6462906 0.6462906 
+
+
+
+

Revisiting Galton’s data

+
+

Normalizing variables results in the slope being the correlation

+
yn <- (y - mean(y))/sd(y)
+xn <- (x - mean(x))/sd(x)
+c(cor(y, x), cor(yn, xn), coef(lm(yn ~ xn))[2])
+
                           xn 
+0.4587624 0.4587624 0.4587624 
+
+
+
+

Plotting the fit

+
    +
  • Size of points are frequencies at that X, Y combination.
  • +
  • For the red lie the child is outcome.
  • +
  • For the blue, the parent is the outcome (accounting for the fact that the response is plotted on the horizontal axis).
  • +
  • Black line assumes \(Cor(Y, X) = 1\) (slope is \(Sd(Y)/Sd(x)\)).
  • +
  • Big black dot is \((\bar X, \bar Y)\).
  • +
+

The code to add the lines

+
abline(mean(y) - mean(x) * cor(y, x) * sd(y) / sd(x), 
+  sd(y) / sd(x) * cor(y, x), 
+  lwd = 3, col = "red")
+abline(mean(y) - mean(x) * sd(y) / sd(x) / cor(y, x), 
+  sd(y) cor(y, x) / sd(x), 
+  lwd = 3, col = "blue")
+abline(mean(y) - mean(x) * sd(y) / sd(x), 
+  sd(y) / sd(x), 
+  lwd = 2)
+points(mean(x), mean(y), cex = 2, pch = 19)
+
+ +
+
+ + + + +
+ + + + + + + + diff --git a/07_RegressionModels/01_04_rttm/index.Rmd b/07_RegressionModels/01_04_rttm/index.Rmd index 2759fbb8f..0dc0ab3c3 100644 --- a/07_RegressionModels/01_04_rttm/index.Rmd +++ b/07_RegressionModels/01_04_rttm/index.Rmd @@ -1,104 +1,106 @@ ---- -title : Historical side note, Regression to Mediocrity -subtitle : Regression to the mean -author : Brian Caffo, Jeff Leek, Roger Peng PhD -job : Johns Hopkins Bloomberg School of Public Health -logo : bloomberg_shield.png -framework : io2012 # {io2012, html5slides, shower, dzslides, ...} -highlighter : highlight.js # {highlight.js, prettify, highlight} -hitheme : tomorrow # -url: - lib: ../../libraries - assets: ../../assets -widgets : [mathjax] # {mathjax, quiz, bootstrap} -mode : selfcontained # {standalone, draft} - ---- - -```{r setup, cache = FALSE, echo = FALSE, message = FALSE, warning = FALSE, tidy = FALSE} -# make this an external chunk that can be included in any file -options(width = 100) -opts_chunk$set(message = F, error = F, warning = F, comment = NA, fig.align = 'center', dpi = 100, tidy = F, cache.path = '.cache/', fig.path = 'fig/') - -options(xtable.type = 'html') -knit_hooks$set(inline = function(x) { - if(is.numeric(x)) { - round(x, getOption('digits')) - } else { - paste(as.character(x), collapse = ', ') - } -}) -knit_hooks$set(plot = knitr:::hook_plot_html) -``` - -## A historically famous idea, Regression to the Mean -* Why is it that the children of tall parents tend to be tall, but not as tall as their parents? -* Why do children of short parents tend to be short, but not as short as their parents? -* Why do parents of very short children, tend to be short, but not a short as their child? And the same with parents of very tall children? -* Why do the best performing athletes this year tend to do a little worse the following? - ---- -## Regression to the mean -* These phenomena are all examples of so-called regression to the mean -* Invented by Francis Galton in the paper "Regression towards mediocrity in hereditary stature" The Journal of the Anthropological Institute of Great Britain and Ireland , Vol. 15, (1886). -* Think of it this way, imagine if you simulated pairs of random normals - * The largest first ones would be the largest by chance, and the probability that there are smaller for the second simulation is high. - * In other words $P(Y < x | X = x)$ gets bigger as $x$ heads into the very large values. - * Similarly $P(Y > x | X = x)$ gets bigger as $x$ heads to very small values. -* Think of the regression line as the intrisic part. - * Unless $Cor(Y, X) = 1$ the intrinsic part isn't perfect - ---- -## Regression to the mean -* Suppose that we normalize $X$ (child's height) and $Y$ (parent's height) so that they both have mean 0 and variance 1. -* Then, recall, our regression line passes through $(0, 0)$ (the mean of the X and Y). -* If the slope of the regression line is $Cor(Y,X)$, regardless of which variable is the outcome (recall, both standard deviations are 1). -* Notice if $X$ is the outcome and you create a plot where $X$ is the horizontal axis, the slope of the least squares line that you plot is $1/Cor(Y, X)$. - ---- -## Normalizing the data and setting plotting parameters -```{r, echo = TRUE} -library(UsingR) -data(father.son) -y <- (father.son$sheight - mean(father.son$sheight)) / sd(father.son$sheight) -x <- (father.son$fheight - mean(father.son$fheight)) / sd(father.son$fheight) -rho <- cor(x, y) -myPlot <- function(x, y) { - plot(x, y, - xlab = "Father's height, normalized", - ylab = "Son's height, normalized", - xlim = c(-3, 3), ylim = c(-3, 3), - bg = "lightblue", col = "black", cex = 1.1, pch = 21, - frame = FALSE) -} -``` - ---- -## Plot the data, code -``` -myPlot(x, y) -abline(0, 1) # if there were perfect correlation -abline(0, rho, lwd = 2) # father predicts son -abline(0, 1 / rho, lwd = 2) # son predicts father, son on vertical axis -abline(h = 0); abline(v = 0) # reference lines for no relathionship -``` - ---- -## Plot the data, results -```{r, fig.height=6,fig.width=6,echo=FALSE} -myPlot(x, y) -abline(0, 1) -abline(0, rho, lwd = 2) -abline(0, 1 / rho, lwd = 2) -abline(h = 0); abline(v = 0) -``` - ---- -## Discussion -* If you had to predict a son's normalized height, it would be - $Cor(Y, X) * X_i$ -* If you had to predict a father's normalized height, it would be - $Cor(Y, X) * Y_i$ -* Multiplication by this correlation shrinks toward 0 (regression toward the mean) -* If the correlation is 1 there is no regression to the mean (if father's height perfectly determine's child's height and vice versa) -* Note, regression to the mean has been thought about quite a bit and generalized +--- +title : Historical side note, Regression to Mediocrity +subtitle : Regression to the mean +author : Brian Caffo, Jeff Leek, Roger Peng PhD +job : Johns Hopkins Bloomberg School of Public Health +logo : bloomberg_shield.png +framework : io2012 # {io2012, html5slides, shower, dzslides, ...} +highlighter : highlight.js # {highlight.js, prettify, highlight} +hitheme : tomorrow # +url: + lib: ../../libraries + assets: ../../assets +widgets : [mathjax] # {mathjax, quiz, bootstrap} +mode : selfcontained # {standalone, draft} + +--- + +```{r setup, cache = FALSE, echo = FALSE, message = FALSE, warning = FALSE, tidy = FALSE} +# Must explicitly include knitr or the chunks will fail, at least in Linux +library(knitr) +# make this an external chunk that can be included in any file +options(width = 100) +opts_chunk$set(message = F, error = F, warning = F, comment = NA, fig.align = 'center', dpi = 100, tidy = F, cache.path = '.cache/', fig.path = 'fig/') + +options(xtable.type = 'html') +knit_hooks$set(inline = function(x) { + if(is.numeric(x)) { + round(x, getOption('digits')) + } else { + paste(as.character(x), collapse = ', ') + } +}) +knit_hooks$set(plot = knitr:::hook_plot_html) +``` + +## A historically famous idea, Regression to the Mean +* Why is it that the children of tall parents tend to be tall, but not as tall as their parents? +* Why do children of short parents tend to be short, but not as short as their parents? +* Why do parents of very short children, tend to be short, but not a short as their child? And the same with parents of very tall children? +* Why do the best performing athletes this year tend to do a little worse the following? + + +## Regression to the mean +* These phenomena are all examples of so-called regression to the mean +* Invented by Francis Galton in the paper "Regression towards mediocrity in hereditary stature" The Journal of the Anthropological Institute of Great Britain and Ireland , Vol. 15, (1886). +* Think of it this way, imagine if you simulated pairs of random normals + * The largest first ones would be the largest by chance, and the probability that there are smaller for the second simulation is high. + * In other words $P(Y < x | X = x)$ gets bigger as $x$ heads into the very large values. + * Similarly $P(Y > x | X = x)$ gets bigger as $x$ heads to very small values. +* Think of the regression line as the intrisic part. + * Unless $Cor(Y, X) = 1$ the intrinsic part isn't perfect + + +## Regression to the mean +* Suppose that we normalize $X$ (child's height) and $Y$ (parent's height) so that they both have mean 0 and variance 1. +* Then, recall, our regression line passes through $(0, 0)$ (the mean of the X and Y). +* If the slope of the regression line is $Cor(Y,X)$, regardless of which variable is the outcome (recall, both standard deviations are 1). +* Notice if $X$ is the outcome and you create a plot where $X$ is the horizontal axis, the slope of the least squares line that you plot is $1/Cor(Y, X)$. + + +## Normalizing the data and setting plotting parameters +```{r, echo = TRUE} +library(UsingR) +data(father.son) +y <- (father.son$sheight - mean(father.son$sheight)) / sd(father.son$sheight) +x <- (father.son$fheight - mean(father.son$fheight)) / sd(father.son$fheight) +rho <- cor(x, y) +myPlot <- function(x, y) { + plot(x, y, + xlab = "Father's height, normalized", + ylab = "Son's height, normalized", + xlim = c(-3, 3), ylim = c(-3, 3), + bg = "lightblue", col = "black", cex = 1.1, pch = 21, + frame = FALSE) +} +``` + + +## Plot the data, code +``` +myPlot(x, y) +abline(0, 1) # if there were perfect correlation +abline(0, rho, lwd = 2) # father predicts son +abline(0, 1 / rho, lwd = 2) # son predicts father, son on vertical axis +abline(h = 0); abline(v = 0) # reference lines for no relathionship +``` + + +## Plot the data, results +```{r, fig.height=6,fig.width=6,echo=FALSE} +myPlot(x, y) +abline(0, 1) +abline(0, rho, lwd = 2) +abline(0, 1 / rho, lwd = 2) +abline(h = 0); abline(v = 0) +``` + + +## Discussion +* If you had to predict a son's normalized height, it would be + $Cor(Y, X) * X_i$ +* If you had to predict a father's normalized height, it would be + $Cor(Y, X) * Y_i$ +* Multiplication by this correlation shrinks toward 0 (regression toward the mean) +* If the correlation is 1 there is no regression to the mean (if father's height perfectly determine's child's height and vice versa) +* Note, regression to the mean has been thought about quite a bit and generalized diff --git a/07_RegressionModels/01_04_rttm/index.html b/07_RegressionModels/01_04_rttm/index.html index 3cf677f25..fc0f678c5 100644 --- a/07_RegressionModels/01_04_rttm/index.html +++ b/07_RegressionModels/01_04_rttm/index.html @@ -1,211 +1,222 @@ - - - - Historical side note, Regression to Mediocrity - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

Historical side note, Regression to Mediocrity

-

Regression to the mean

-

Brian Caffo, Jeff Leek, Roger Peng PhD
Johns Hopkins Bloomberg School of Public Health

-
-
- - - -
-

A historically famous idea, Regression to the Mean

-
-
-
    -
  • Why is it that the children of tall parents tend to be tall, but not as tall as their parents?
  • -
  • Why do children of short parents tend to be short, but not as short as their parents?
  • -
  • Why do parents of very short children, tend to be short, but not a short as their child? And the same with parents of very tall children?
  • -
  • Why do the best performing athletes this year tend to do a little worse the following?
  • -
- -
- -
- - -
-

Regression to the mean

-
-
-
    -
  • These phenomena are all examples of so-called regression to the mean
  • -
  • Invented by Francis Galton in the paper "Regression towvards mediocrity in hereditary stature" The Journal of the Anthropological Institute of Great Britain and Ireland , Vol. 15, (1886).
  • -
  • Think of it this way, imagine if you simulated pairs of random normals - -
      -
    • The largest first ones would be the largest by chance, and the probability that there are smaller for the second simulation is high.
    • -
    • In other words \(P(Y < x | X = x)\) gets bigger as \(x\) heads into the very large values.
    • -
    • Similarly \(P(Y > x | X = x)\) gets bigger as \(x\) heads to very small values.
    • -
  • -
  • Think of the regression line as the intrisic part. - -
      -
    • Unless \(Cor(Y, X) = 1\) the intrinsic part isn't perfect
    • -
  • -
- -
- -
- - -
-

Regression to the mean

-
-
-
    -
  • Suppose that we normalize \(X\) (child's height) and \(Y\) (parent's height) so that they both have mean 0 and variance 1.
  • -
  • Then, recall, our regression line passes through \((0, 0)\) (the mean of the X and Y).
  • -
  • If the slope of the regression line is \(Cor(Y,X)\), regardless of which variable is the outcome (recall, both standard deviations are 1).
  • -
  • Notice if \(X\) is the outcome and you create a plot where \(X\) is the horizontal axis, the slope of the least squares line that you plot is \(1/Cor(Y, X)\).
  • -
- -
- -
- - -
-

Normalizing the data and setting plotting parameters

-
-
-
library(UsingR)
-data(father.son)
-y <- (father.son$sheight - mean(father.son$sheight)) / sd(father.son$sheight)
-x <- (father.son$fheight - mean(father.son$fheight)) / sd(father.son$fheight)
-rho <- cor(x, y)
-myPlot <- function(x, y) {
-  plot(x, y, 
-       xlab = "Father's height, normalized",
-       ylab = "Son's height, normalized",
-       xlim = c(-3, 3), ylim = c(-3, 3),
-       bg = "lightblue", col = "black", cex = 1.1, pch = 21, 
-       frame = FALSE)
-}
-
- -
- -
- - -
-

Plot the data, code

-
-
-
myPlot(x, y)
-abline(0, 1) # if there were perfect correlation
-abline(0, rho, lwd = 2) # father predicts son
-abline(0, 1 / rho, lwd = 2) # son predicts father, son on vertical axis
-abline(h = 0); abline(v = 0) # reference lines for no relathionship
-
- -
- -
- - -
-

Plot the data, results

-
-
-
plot of chunk unnamed-chunk-2
- -
- -
- - -
-

Discussion

-
-
-
    -
  • If you had to predict a son's normalized height, it would be -\(Cor(Y, X) * X_i\)
  • -
  • If you had to predict a father's normalized height, it would be -\(Cor(Y, X) * Y_i\)
  • -
  • Multiplication by this correlation shrinks toward 0 (regression toward the mean)
  • -
  • If the correlation is 1 there is no regression to the mean (if father's height perfectly determine's child's height and vice versa)
  • -
  • Note, regression to the mean has been thought about quite a bit and generalized
  • -
- -
- -
- - -
- - - - - - - - - - - - - - - - - \ No newline at end of file + + + + + + + + + + + + + + +Historical side note, Regression to Mediocrity + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+

A historically famous idea, Regression to the Mean

+
    +
  • Why is it that the children of tall parents tend to be tall, but not as tall as their parents?
  • +
  • Why do children of short parents tend to be short, but not as short as their parents?
  • +
  • Why do parents of very short children, tend to be short, but not a short as their child? And the same with parents of very tall children?
  • +
  • Why do the best performing athletes this year tend to do a little worse the following?
  • +
+
+
+

Regression to the mean

+
    +
  • These phenomena are all examples of so-called regression to the mean
  • +
  • Invented by Francis Galton in the paper “Regression towards mediocrity in hereditary stature” The Journal of the Anthropological Institute of Great Britain and Ireland , Vol. 15, (1886).
  • +
  • Think of it this way, imagine if you simulated pairs of random normals
  • +
  • The largest first ones would be the largest by chance, and the probability that there are smaller for the second simulation is high.
  • +
  • In other words \(P(Y < x | X = x)\) gets bigger as \(x\) heads into the very large values.
  • +
  • Similarly \(P(Y > x | X = x)\) gets bigger as \(x\) heads to very small values.
  • +
  • Think of the regression line as the intrisic part.
  • +
  • Unless \(Cor(Y, X) = 1\) the intrinsic part isn’t perfect
  • +
+
+
+

Regression to the mean

+
    +
  • Suppose that we normalize \(X\) (child’s height) and \(Y\) (parent’s height) so that they both have mean 0 and variance 1.
  • +
  • Then, recall, our regression line passes through \((0, 0)\) (the mean of the X and Y).
  • +
  • If the slope of the regression line is \(Cor(Y,X)\), regardless of which variable is the outcome (recall, both standard deviations are 1).
  • +
  • Notice if \(X\) is the outcome and you create a plot where \(X\) is the horizontal axis, the slope of the least squares line that you plot is \(1/Cor(Y, X)\).
  • +
+
+
+

Normalizing the data and setting plotting parameters

+
library(UsingR)
+data(father.son)
+y <- (father.son$sheight - mean(father.son$sheight)) / sd(father.son$sheight)
+x <- (father.son$fheight - mean(father.son$fheight)) / sd(father.son$fheight)
+rho <- cor(x, y)
+myPlot <- function(x, y) {
+  plot(x, y, 
+       xlab = "Father's height, normalized",
+       ylab = "Son's height, normalized",
+       xlim = c(-3, 3), ylim = c(-3, 3),
+       bg = "lightblue", col = "black", cex = 1.1, pch = 21, 
+       frame = FALSE)
+}
+
+
+

Plot the data, code

+
myPlot(x, y)
+abline(0, 1) # if there were perfect correlation
+abline(0, rho, lwd = 2) # father predicts son
+abline(0, 1 / rho, lwd = 2) # son predicts father, son on vertical axis
+abline(h = 0); abline(v = 0) # reference lines for no relathionship
+
+
+

Plot the data, results

+
+ +
+
+
+

Discussion

+
    +
  • If you had to predict a son’s normalized height, it would be \(Cor(Y, X) * X_i\)
  • +
  • If you had to predict a father’s normalized height, it would be \(Cor(Y, X) * Y_i\)
  • +
  • Multiplication by this correlation shrinks toward 0 (regression toward the mean)
  • +
  • If the correlation is 1 there is no regression to the mean (if father’s height perfectly determine’s child’s height and vice versa)
  • +
  • Note, regression to the mean has been thought about quite a bit and generalized
  • +
+
+ + + + +
+ + + + + + + + diff --git a/07_RegressionModels/01_05_linearRegression/index.Rmd b/07_RegressionModels/01_05_linearRegression/index.Rmd index b41a996be..2a3f998fe 100644 --- a/07_RegressionModels/01_05_linearRegression/index.Rmd +++ b/07_RegressionModels/01_05_linearRegression/index.Rmd @@ -1,215 +1,218 @@ ---- -title : Statistical linear regression models -subtitle : -author : Brian Caffo, Jeff Leek, Roger Peng -job : Johns Hopkins Bloomberg School of Public Health -logo : bloomberg_shield.png -framework : io2012 # {io2012, html5slides, shower, dzslides, ...} -highlighter : highlight.js # {highlight.js, prettify, highlight} -hitheme : tomorrow # -url: - lib: ../../libraries - assets: ../../assets -widgets : [mathjax] # {mathjax, quiz, bootstrap} -mode : selfcontained # {standalone, draft} - ---- -```{r setup, cache = FALSE, echo = FALSE, message = FALSE, warning = FALSE, tidy = FALSE} -# make this an external chunk that can be included in any file -options(width = 100) -opts_chunk$set(message = F, error = F, warning = F, comment = NA, fig.align = 'center', dpi = 100, tidy = F, cache.path = '.cache/', fig.path = 'fig/') - -options(xtable.type = 'html') -knit_hooks$set(inline = function(x) { - if(is.numeric(x)) { - round(x, getOption('digits')) - } else { - paste(as.character(x), collapse = ', ') - } -}) -knit_hooks$set(plot = knitr:::hook_plot_html) -``` -## Basic regression model with additive Gaussian errors. -* Least squares is an estimation tool, how do we do inference? -* Consider developing a probabilistic model for linear regression -$$ -Y_i = \beta_0 + \beta_1 X_i + \epsilon_{i} -$$ -* Here the $\epsilon_{i}$ are assumed iid $N(0, \sigma^2)$. -* Note, $E[Y_i ~|~ X_i = x_i] = \mu_i = \beta_0 + \beta_1 x_i$ -* Note, $Var(Y_i ~|~ X_i = x_i) = \sigma^2$. -* Likelihood equivalent model specification is that the $Y_i$ are independent $N(\mu_i, \sigma^2)$. - ---- -## Likelihood -$$ -{\cal L}(\beta, \sigma) -= \prod_{i=1}^n \left\{(2 \pi \sigma^2)^{-1/2}\exp\left(-\frac{1}{2\sigma^2}(y_i - \mu_i)^2 \right) \right\} -$$ -so that the twice the negative log (base e) likelihood is -$$ --2 \log\{ {\cal L}(\beta, \sigma) \} -= \frac{1}{\sigma^2} \sum_{i=1}^n (y_i - \mu_i)^2 + n\log(\sigma^2) -$$ -Discussion -* Maximizing the likelihood is the same as minimizing -2 log likelihood -* The least squares estimate for $\mu_i = \beta_0 + \beta_1 x_i$ is exactly the maximimum likelihood estimate (regardless of $\sigma$) - ---- -## Recap -* Model $Y_i = \mu_i + \epsilon_i = \beta_0 + \beta_1 X_i + \epsilon_i$ where $\epsilon_i$ are iid $N(0, \sigma^2)$ -* ML estimates of $\beta_0$ and $\beta_1$ are the least squares estimates - $$\hat \beta_1 = Cor(Y, X) \frac{Sd(Y)}{Sd(X)} ~~~ \hat \beta_0 = \bar Y - \hat \beta_1 \bar X$$ -* $E[Y ~|~ X = x] = \beta_0 + \beta_1 x$ -* $Var(Y ~|~ X = x) = \sigma^2$ - ---- -## Interpretting regression coefficients, the itc -* $\beta_0$ is the expected value of the response when the predictor is 0 -$$ -E[Y | X = 0] = \beta_0 + \beta_1 \times 0 = \beta_0 -$$ -* Note, this isn't always of interest, for example when $X=0$ is impossible or far outside of the range of data. (X is blood pressure, or height etc.) -* Consider that -$$ -Y_i = \beta_0 + \beta_1 X_i + \epsilon_i -= \beta_0 + a \beta_1 + \beta_1 (X_i - a) + \epsilon_i -= \tilde \beta_0 + \beta_1 (X_i - a) + \epsilon_i -$$ -So, shifting you $X$ values by value $a$ changes the intercept, but not the slope. -* Often $a$ is set to $\bar X$ so that the intercept is interpretted as the expected response at the average $X$ value. - ---- -## Interpretting regression coefficients, the slope -* $\beta_1$ is the expected change in response for a 1 unit change in the predictor -$$ -E[Y ~|~ X = x+1] - E[Y ~|~ X = x] = -\beta_0 + \beta_1 (x + 1) - (\beta_0 + \beta_1 x ) = \beta_1 -$$ -* Consider the impact of changing the units of $X$. -$$ -Y_i = \beta_0 + \beta_1 X_i + \epsilon_i -= \beta_0 + \frac{\beta_1}{a} (X_i a) + \epsilon_i -= \beta_0 + \tilde \beta_1 (X_i a) + \epsilon_i -$$ -* Therefore, multiplication of $X$ by a factor $a$ results in dividing the coefficient by a factor of $a$. -* Example: $X$ is height in $m$ and $Y$ is weight in $kg$. Then $\beta_1$ is $kg/m$. Converting $X$ to $cm$ implies multiplying $X$ by $100 cm/m$. To get $\beta_1$ in the right units, we have to divide by $100 cm /m$ to get it to have the right units. -$$ -X m \times \frac{100cm}{m} = (100 X) cm -~~\mbox{and}~~ -\beta_1 \frac{kg}{m} \times\frac{1 m}{100cm} = -\left(\frac{\beta_1}{100}\right)\frac{kg}{cm} -$$ - ---- -## Using regression coeficients for prediction -* If we would like to guess the outcome at a particular - value of the predictor, say $X$, the regression model guesses - $$ - \hat \beta_0 + \hat \beta_1 X - $$ -* Note that at the observed value of $X$s, we obtain the - predictions - $$ - \hat \mu_i = \hat Y_i = \hat \beta_0 + \hat \beta_1 X_i - $$ -* Remember that least squares minimizes -$$ -\sum_{i=1}^n (Y_i - \mu_i) -$$ -for $\mu_i$ expressed as points on a line - ---- -## Example -### `diamond` data set from `UsingR` -Data is diamond prices (Signapore dollars) and diamond weight -in carats (standard measure of diamond mass, 0.2 $g$). To get the data use `library(UsingR); data(diamond)` - -Plotting the fitted regression line and data -``` -data(diamond) -plot(diamond$carat, diamond$price, - xlab = "Mass (carats)", - ylab = "Price (SIN $)", - bg = "lightblue", - col = "black", cex = 1.1, pch = 21,frame = FALSE) -abline(lm(price ~ carat, data = diamond), lwd = 2) -``` - ---- -## The plot -```{r, echo = FALSE, fig.height=5,fig.width=5} -data(diamond) -plot(diamond$carat, diamond$price, - xlab = "Mass (carats)", - ylab = "Price (SIN $)", - bg = "lightblue", - col = "black", cex = 1.1, pch = 21,frame = FALSE) -abline(lm(price ~ carat, data = diamond), lwd = 2) -``` - ---- -## Fitting the linear regression model -```{r} -fit <- lm(price ~ carat, data = diamond) -coef(fit) -``` - -* We estimate an expected `r round(coef(fit)[2], 2)` (SIN) dollar increase in price for every carat increase in mass of diamond. -* The intercept `r round(coef(fit)[1], 2)` is the expected price - of a 0 carat diamond. - ---- -## Getting a more interpretable intercept -```{r, echo = TRUE} -fit2 <- lm(price ~ I(carat - mean(carat)), data = diamond) -coef(fit2) -``` - -Thus $`r round(coef(fit2)[1], 1)` is the expected price for -the average sized diamond of the data (`r mean(diamond$carat)` carats). - ---- -## Changing scale -* A one carat increase in a diamond is pretty big, what about - changing units to 1/10th of a carat? -* We can just do this by just dividing the coeficient by 10. - * We expect a `r round(coef(fit)[2], 2) / 10` (SIN) dollar change in price for every 1/10th of a carat increase in mass of diamond. -* Showing that it's the same if we rescale the Xs and refit -```{r, echo = TRUE} -fit3 <- lm(price ~ I(carat * 10), data = diamond) -coef(fit3) -``` - ---- -## Predicting the price of a diamond -```{r, echo = TRUE} -newx <- c(0.16, 0.27, 0.34) -coef(fit)[1] + coef(fit)[2] * newx -predict(fit, newdata = data.frame(carat = newx)) -``` - ---- -Predicted values at the observed Xs (red) -and at the new Xs (lines) -```{r, echo = FALSE, fig.height=5,fig.width=5} -data(diamond) -plot(diamond$carat, diamond$price, - xlab = "Mass (carats)", - ylab = "Price (SIN $)", - bg = "lightblue", - col = "black", cex = 1.1, pch = 21,frame = FALSE) -abline(fit, lwd = 2) -points(diamond$carat, predict(fit), pch = 19, col = "red") -lines(c(0.16, 0.16, 0.12), - c(200, coef(fit)[1] + coef(fit)[2] * 0.16, - coef(fit)[1] + coef(fit)[2] * 0.16)) -lines(c(0.27, 0.27, 0.12), - c(200, coef(fit)[1] + coef(fit)[2] * 0.27, - coef(fit)[1] + coef(fit)[2] * 0.27)) -lines(c(0.34, 0.34, 0.12), - c(200, coef(fit)[1] + coef(fit)[2] * 0.34, - coef(fit)[1] + coef(fit)[2] * 0.34)) -text(newx, rep(250, 3), labels = newx, pos = 2) -``` - +--- +title : Statistical linear regression models +subtitle : +author : Brian Caffo, Jeff Leek, Roger Peng +job : Johns Hopkins Bloomberg School of Public Health +logo : bloomberg_shield.png +framework : io2012 # {io2012, html5slides, shower, dzslides, ...} +highlighter : highlight.js # {highlight.js, prettify, highlight} +hitheme : tomorrow # +url: + lib: ../../libraries + assets: ../../assets +widgets : [mathjax] # {mathjax, quiz, bootstrap} +mode : selfcontained # {standalone, draft} + +--- +```{r setup, cache = FALSE, echo = FALSE, message = FALSE, warning = FALSE, tidy = FALSE} +# Must explicitly include knitr or the chunks will fail, at least in Linux +library(knitr) +# make this an external chunk that can be included in any file +options(width = 100) +opts_chunk$set(message = F, error = F, warning = F, comment = NA, fig.align = 'center', dpi = 100, tidy = F, cache.path = '.cache/', fig.path = 'fig/') + +options(xtable.type = 'html') +knit_hooks$set(inline = function(x) { + if(is.numeric(x)) { + round(x, getOption('digits')) + } else { + paste(as.character(x), collapse = ', ') + } +}) +knit_hooks$set(plot = knitr:::hook_plot_html) +``` +## Basic regression model with additive Gaussian errors. +* Least squares is an estimation tool, how do we do inference? +* Consider developing a probabilistic model for linear regression +$$ +Y_i = \beta_0 + \beta_1 X_i + \epsilon_{i} +$$ +* Here the $\epsilon_{i}$ are assumed iid $N(0, \sigma^2)$. +* Note, $E[Y_i ~|~ X_i = x_i] = \mu_i = \beta_0 + \beta_1 x_i$ +* Note, $Var(Y_i ~|~ X_i = x_i) = \sigma^2$. +* Likelihood equivalent model specification is that the $Y_i$ are independent $N(\mu_i, \sigma^2)$. + + +## Likelihood +$$ +{\cal L}(\beta, \sigma) += \prod_{i=1}^n \left\{(2 \pi \sigma^2)^{-1/2}\exp\left(-\frac{1}{2\sigma^2}(y_i - \mu_i)^2 \right) \right\} +$$ +so that the twice the negative log (base e) likelihood is +$$ +-2 \log\{ {\cal L}(\beta, \sigma) \} += \frac{1}{\sigma^2} \sum_{i=1}^n (y_i - \mu_i)^2 + n\log(\sigma^2) +$$ +Discussion +* Maximizing the likelihood is the same as minimizing -2 log likelihood +* The least squares estimate for $\mu_i = \beta_0 + \beta_1 x_i$ is exactly the maximimum likelihood estimate (regardless of $\sigma$) + + +## Recap +* Model $Y_i = \mu_i + \epsilon_i = \beta_0 + \beta_1 X_i + \epsilon_i$ where $\epsilon_i$ are iid $N(0, \sigma^2)$ +* ML estimates of $\beta_0$ and $\beta_1$ are the least squares estimates + $$\hat \beta_1 = Cor(Y, X) \frac{Sd(Y)}{Sd(X)} ~~~ \hat \beta_0 = \bar Y - \hat \beta_1 \bar X$$ +* $E[Y ~|~ X = x] = \beta_0 + \beta_1 x$ +* $Var(Y ~|~ X = x) = \sigma^2$ + + +## Interpretting regression coefficients, the itc +* $\beta_0$ is the expected value of the response when the predictor is 0 +$$ +E[Y | X = 0] = \beta_0 + \beta_1 \times 0 = \beta_0 +$$ +* Note, this isn't always of interest, for example when $X=0$ is impossible or far outside of the range of data. (X is blood pressure, or height etc.) +* Consider that +$$ +Y_i = \beta_0 + \beta_1 X_i + \epsilon_i += \beta_0 + a \beta_1 + \beta_1 (X_i - a) + \epsilon_i += \tilde \beta_0 + \beta_1 (X_i - a) + \epsilon_i +$$ +So, shifting you $X$ values by value $a$ changes the intercept, but not the slope. +* Often $a$ is set to $\bar X$ so that the intercept is interpretted as the expected response at the average $X$ value. + + +## Interpretting regression coefficients, the slope +* $\beta_1$ is the expected change in response for a 1 unit change in the predictor +$$ +E[Y ~|~ X = x+1] - E[Y ~|~ X = x] = +\beta_0 + \beta_1 (x + 1) - (\beta_0 + \beta_1 x ) = \beta_1 +$$ +* Consider the impact of changing the units of $X$. +$$ +Y_i = \beta_0 + \beta_1 X_i + \epsilon_i += \beta_0 + \frac{\beta_1}{a} (X_i a) + \epsilon_i += \beta_0 + \tilde \beta_1 (X_i a) + \epsilon_i +$$ +* Therefore, multiplication of $X$ by a factor $a$ results in dividing the coefficient by a factor of $a$. +* Example: $X$ is height in $m$ and $Y$ is weight in $kg$. Then $\beta_1$ is $kg/m$. Converting $X$ to $cm$ implies multiplying $X$ by $100 cm/m$. To get $\beta_1$ in the right units, we have to divide by $100 cm /m$ to get it to have the right units. +$$ +X m \times \frac{100cm}{m} = (100 X) cm +~~\mbox{and}~~ +\beta_1 \frac{kg}{m} \times\frac{1 m}{100cm} = +\left(\frac{\beta_1}{100}\right)\frac{kg}{cm} +$$ + + +## Using regression coeficients for prediction +* If we would like to guess the outcome at a particular + value of the predictor, say $X$, the regression model guesses + $$ + \hat \beta_0 + \hat \beta_1 X + $$ +* Note that at the observed value of $X$s, we obtain the + predictions + $$ + \hat \mu_i = \hat Y_i = \hat \beta_0 + \hat \beta_1 X_i + $$ +* Remember that least squares minimizes +$$ +\sum_{i=1}^n (Y_i - \mu_i) +$$ +for $\mu_i$ expressed as points on a line + + +## Example +### `diamond` data set from `UsingR` +Data is diamond prices (Signapore dollars) and diamond weight +in carats (standard measure of diamond mass, 0.2 $g$). To get the data use `library(UsingR); data(diamond)` + +Plotting the fitted regression line and data +```{r} +library(UsingR) +data(diamond) +plot(diamond$carat, diamond$price, + xlab = "Mass (carats)", + ylab = "Price (SIN $)", + bg = "lightblue", + col = "black", cex = 1.1, pch = 21,frame = FALSE) +abline(lm(price ~ carat, data = diamond), lwd = 2) +``` + + +## The plot +```{r, echo = FALSE, fig.height=5,fig.width=5} +data(diamond) +plot(diamond$carat, diamond$price, + xlab = "Mass (carats)", + ylab = "Price (SIN $)", + bg = "lightblue", + col = "black", cex = 1.1, pch = 21,frame = FALSE) +abline(lm(price ~ carat, data = diamond), lwd = 2) +``` + + +## Fitting the linear regression model +```{r} +fit <- lm(price ~ carat, data = diamond) +coef(fit) +``` + +* We estimate an expected `r round(coef(fit)[2], 2)` (SIN) dollar increase in price for every carat increase in mass of diamond. +* The intercept `r round(coef(fit)[1], 2)` is the expected price + of a 0 carat diamond. + + +## Getting a more interpretable intercept +```{r, echo = TRUE} +fit2 <- lm(price ~ I(carat - mean(carat)), data = diamond) +coef(fit2) +``` + +Thus $`r round(coef(fit2)[1], 1)` is the expected price for +the average sized diamond of the data (`r mean(diamond$carat)` carats). + + +## Changing scale +* A one carat increase in a diamond is pretty big, what about + changing units to 1/10th of a carat? +* We can just do this by just dividing the coeficient by 10. + * We expect a `r round(coef(fit)[2], 2) / 10` (SIN) dollar change in price for every 1/10th of a carat increase in mass of diamond. +* Showing that it's the same if we rescale the Xs and refit +```{r, echo = TRUE} +fit3 <- lm(price ~ I(carat * 10), data = diamond) +coef(fit3) +``` + + +## Predicting the price of a diamond +```{r, echo = TRUE} +newx <- c(0.16, 0.27, 0.34) +coef(fit)[1] + coef(fit)[2] * newx +predict(fit, newdata = data.frame(carat = newx)) +``` + + +Predicted values at the observed Xs (red) +and at the new Xs (lines) +```{r, echo = FALSE, fig.height=5,fig.width=5} +data(diamond) +plot(diamond$carat, diamond$price, + xlab = "Mass (carats)", + ylab = "Price (SIN $)", + bg = "lightblue", + col = "black", cex = 1.1, pch = 21,frame = FALSE) +abline(fit, lwd = 2) +points(diamond$carat, predict(fit), pch = 19, col = "red") +lines(c(0.16, 0.16, 0.12), + c(200, coef(fit)[1] + coef(fit)[2] * 0.16, + coef(fit)[1] + coef(fit)[2] * 0.16)) +lines(c(0.27, 0.27, 0.12), + c(200, coef(fit)[1] + coef(fit)[2] * 0.27, + coef(fit)[1] + coef(fit)[2] * 0.27)) +lines(c(0.34, 0.34, 0.12), + c(200, coef(fit)[1] + coef(fit)[2] * 0.34, + coef(fit)[1] + coef(fit)[2] * 0.34)) +text(newx, rep(250, 3), labels = newx, pos = 2) +``` + diff --git a/07_RegressionModels/01_05_linearRegression/index.html b/07_RegressionModels/01_05_linearRegression/index.html index 876178f27..821d96383 100644 --- a/07_RegressionModels/01_05_linearRegression/index.html +++ b/07_RegressionModels/01_05_linearRegression/index.html @@ -1,373 +1,302 @@ - - - - Statistical linear regression models - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

Statistical linear regression models

-

-

Brian Caffo, Jeff Leek, Roger Peng
Johns Hopkins Bloomberg School of Public Health

-
-
- - - -
-

Basic regression model with additive Gaussian errors.

-
-
-
    -
  • Least squares is an estimation tool, how do we do inference?
  • -
  • Consider developing a probabilistic model for linear regression -\[ -Y_i = \beta_0 + \beta_1 X_i + \epsilon_{i} -\]
  • -
  • Here the \(\epsilon_{i}\) are assumed iid \(N(0, \sigma^2)\).
  • -
  • Note, \(E[Y_i ~|~ X_i = x_i] = \mu_i = \beta_0 + \beta_1 x_i\)
  • -
  • Note, \(Var(Y_i ~|~ X_i = x_i) = \sigma^2\).
  • -
  • Likelihood equivalent model specification is that the \(Y_i\) are independent \(N(\mu_i, \sigma^2)\).
  • -
- -
- -
- - -
-

Likelihood

-
-
-

\[ -{\cal L}(\beta, \sigma) -= \prod_{i=1}^n \left\{(2 \pi \sigma^2)^{-1/2}\exp\left(-\frac{1}{2\sigma^2}(y_i - \mu_i)^2 \right) \right\} -\] -so that the twice the negative log (base e) likelihood is -\[ --2 \log\{ {\cal L}(\beta, \sigma) \} -= \frac{1}{\sigma^2} \sum_{i=1}^n (y_i - \mu_i)^2 + n\log(\sigma^2) -\] -Discussion

- -
    -
  • Maximizing the likelihood is the same as minimizing -2 log likelihood
  • -
  • The least squares estimate for \(\mu_i = \beta_0 + \beta_1 x_i\) is exactly the maximimum likelihood estimate (regardless of \(\sigma\))
  • -
- -
- -
- - -
-

Recap

-
-
-
    -
  • Model \(Y_i = \mu_i + \epsilon_i = \beta_0 + \beta_1 X_i + \epsilon_i\) where \(\epsilon_i\) are iid \(N(0, \sigma^2)\)
  • -
  • ML estimates of \(\beta_0\) and \(\beta_1\) are the least squares estimates -\[\hat \beta_1 = Cor(Y, X) \frac{Sd(Y)}{Sd(X)} ~~~ \hat \beta_0 = \bar Y - \hat \beta_1 \bar X\]
  • -
  • \(E[Y ~|~ X = x] = \beta_0 + \beta_1 x\)
  • -
  • \(Var(Y ~|~ X = x) = \sigma^2\)
  • -
- -
- -
- - -
-

Interpretting regression coefficients, the itc

-
-
-
    -
  • \(\beta_0\) is the expected value of the response when the predictor is 0 -\[ -E[Y | X = 0] = \beta_0 + \beta_1 \times 0 = \beta_0 -\]
  • -
  • Note, this isn't always of interest, for example when \(X=0\) is impossible or far outside of the range of data. (X is blood pressure, or height etc.)
  • -
  • Consider that -\[ -Y_i = \beta_0 + \beta_1 X_i + \epsilon_i -= \beta_0 + a \beta_1 + \beta_1 (X_i - a) + \epsilon_i -= \tilde \beta_0 + \beta_1 (X_i - a) + \epsilon_i -\] -So, shifting you \(X\) values by value \(a\) changes the intercept, but not the slope.
  • -
  • Often \(a\) is set to \(\bar X\) so that the intercept is interpretted as the expected response at the average \(X\) value.
  • -
- -
- -
- - -
-

Interpretting regression coefficients, the slope

-
-
-
    -
  • \(\beta_1\) is the expected change in response for a 1 unit change in the predictor -\[ -E[Y ~|~ X = x+1] - E[Y ~|~ X = x] = -\beta_0 + \beta_1 (x + 1) - (\beta_0 + \beta_1 x ) = \beta_1 -\]
  • -
  • Consider the impact of changing the units of \(X\). -\[ -Y_i = \beta_0 + \beta_1 X_i + \epsilon_i -= \beta_0 + \frac{\beta_1}{a} (X_i a) + \epsilon_i -= \beta_0 + \tilde \beta_1 (X_i a) + \epsilon_i -\]
  • -
  • Therefore, multiplication of \(X\) by a factor \(a\) results in dividing the coefficient by a factor of \(a\).
  • -
  • Example: \(X\) is height in \(m\) and \(Y\) is weight in \(kg\). Then \(\beta_1\) is \(kg/m\). Converting \(X\) to \(cm\) implies multiplying \(X\) by \(100 cm/m\). To get \(\beta_1\) in the right units, we have to divide by \(100 cm /m\) to get it to have the right units. -\[ -X m \times \frac{100cm}{m} = (100 X) cm -~~\mbox{and}~~ -\beta_1 \frac{kg}{m} \times\frac{1 m}{100cm} = -\left(\frac{\beta_1}{100}\right)\frac{kg}{cm} -\]
  • -
- -
- -
- - -
-

Using regression coeficients for prediction

-
-
-
    -
  • If we would like to guess the outcome at a particular -value of the predictor, say \(X\), the regression model guesses -\[ -\hat \beta_0 + \hat \beta_1 X -\]
  • -
  • Note that at the observed value of $X$s, we obtain the -predictions -\[ -\hat \mu_i = \hat Y_i = \hat \beta_0 + \hat \beta_1 X_i -\]
  • -
  • Remember that least squares minimizes -\[ -\sum_{i=1}^n (Y_i - \mu_i) -\] -for \(\mu_i\) expressed as points on a line
  • -
- -
- -
- - -
-

Example

-
-
-

diamond data set from UsingR

- -

Data is diamond prices (Signapore dollars) and diamond weight -in carats (standard measure of diamond mass, 0.2 \(g\)). To get the data use library(UsingR); data(diamond)

- -

Plotting the fitted regression line and data

- -
data(diamond)
-plot(diamond$carat, diamond$price,  
-     xlab = "Mass (carats)", 
-     ylab = "Price (SIN $)", 
-     bg = "lightblue", 
-     col = "black", cex = 1.1, pch = 21,frame = FALSE)
-abline(lm(price ~ carat, data = diamond), lwd = 2)
-
- -
- -
- - -
-

The plot

-
-
-
plot of chunk unnamed-chunk-1
- -
- -
- - -
-

Fitting the linear regression model

-
-
-
fit <- lm(price ~ carat, data = diamond)
-coef(fit)
-
- -
(Intercept)       carat 
-     -259.6      3721.0 
-
- -
    -
  • We estimate an expected 3721.02 (SIN) dollar increase in price for every carat increase in mass of diamond.
  • -
  • The intercept -259.63 is the expected price -of a 0 carat diamond.
  • -
- -
- -
- - -
-

Getting a more interpretable intercept

-
-
-
fit2 <- lm(price ~ I(carat - mean(carat)), data = diamond)
-coef(fit2)
-
- -
           (Intercept) I(carat - mean(carat)) 
-                 500.1                 3721.0 
-
- -

Thus $500.1 is the expected price for -the average sized diamond of the data (0.2042 carats).

- -
- -
- - -
-

Changing scale

-
-
-
    -
  • A one carat increase in a diamond is pretty big, what about -changing units to 1/10th of a carat?
  • -
  • We can just do this by just dividing the coeficient by 10. - -
      -
    • We expect a 372.102 (SIN) dollar change in price for every 1/10th of a carat increase in mass of diamond.
    • -
  • -
  • Showing that it's the same if we rescale the Xs and refit
  • -
- -
fit3 <- lm(price ~ I(carat * 10), data = diamond)
-coef(fit3)
-
- -
  (Intercept) I(carat * 10) 
-       -259.6         372.1 
-
- -
- -
- - -
-

Predicting the price of a diamond

-
-
-
newx <- c(0.16, 0.27, 0.34)
-coef(fit)[1] + coef(fit)[2] * newx
-
- -
[1]  335.7  745.1 1005.5
-
- -
predict(fit, newdata = data.frame(carat = newx))
-
- -
     1      2      3 
- 335.7  745.1 1005.5 
-
- -
- -
- - -
- -
-
-

Predicted values at the observed Xs (red) -and at the new Xs (lines)

- -
plot of chunk unnamed-chunk-6
- -
- -
- - -
- - - - - - - - - - - - - - - - - \ No newline at end of file + + + + + + + + + + + + + + +Statistical linear regression models + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+

Basic regression model with additive Gaussian errors.

+
    +
  • Least squares is an estimation tool, how do we do inference?
  • +
  • Consider developing a probabilistic model for linear regression \[ +Y_i = \beta_0 + \beta_1 X_i + \epsilon_{i} +\]
  • +
  • Here the \(\epsilon_{i}\) are assumed iid \(N(0, \sigma^2)\).
  • +
  • Note, \(E[Y_i ~|~ X_i = x_i] = \mu_i = \beta_0 + \beta_1 x_i\)
  • +
  • Note, \(Var(Y_i ~|~ X_i = x_i) = \sigma^2\).
  • +
  • Likelihood equivalent model specification is that the \(Y_i\) are independent \(N(\mu_i, \sigma^2)\).
  • +
+
+
+

Likelihood

+

\[ +{\cal L}(\beta, \sigma) += \prod_{i=1}^n \left\{(2 \pi \sigma^2)^{-1/2}\exp\left(-\frac{1}{2\sigma^2}(y_i - \mu_i)^2 \right) \right\} +\] so that the twice the negative log (base e) likelihood is \[ +-2 \log\{ {\cal L}(\beta, \sigma) \} += \frac{1}{\sigma^2} \sum_{i=1}^n (y_i - \mu_i)^2 + n\log(\sigma^2) +\] Discussion * Maximizing the likelihood is the same as minimizing -2 log likelihood * The least squares estimate for \(\mu_i = \beta_0 + \beta_1 x_i\) is exactly the maximimum likelihood estimate (regardless of \(\sigma\))

+
+
+

Recap

+
    +
  • Model \(Y_i = \mu_i + \epsilon_i = \beta_0 + \beta_1 X_i + \epsilon_i\) where \(\epsilon_i\) are iid \(N(0, \sigma^2)\)
  • +
  • ML estimates of \(\beta_0\) and \(\beta_1\) are the least squares estimates \[\hat \beta_1 = Cor(Y, X) \frac{Sd(Y)}{Sd(X)} ~~~ \hat \beta_0 = \bar Y - \hat \beta_1 \bar X\]
  • +
  • \(E[Y ~|~ X = x] = \beta_0 + \beta_1 x\)
  • +
  • \(Var(Y ~|~ X = x) = \sigma^2\)
  • +
+
+
+

Interpretting regression coefficients, the itc

+
    +
  • \(\beta_0\) is the expected value of the response when the predictor is 0 \[ +E[Y | X = 0] = \beta_0 + \beta_1 \times 0 = \beta_0 +\]
  • +
  • Note, this isn’t always of interest, for example when \(X=0\) is impossible or far outside of the range of data. (X is blood pressure, or height etc.)
  • +
  • Consider that \[ +Y_i = \beta_0 + \beta_1 X_i + \epsilon_i += \beta_0 + a \beta_1 + \beta_1 (X_i - a) + \epsilon_i += \tilde \beta_0 + \beta_1 (X_i - a) + \epsilon_i +\] So, shifting you \(X\) values by value \(a\) changes the intercept, but not the slope.
  • +
  • Often \(a\) is set to \(\bar X\) so that the intercept is interpretted as the expected response at the average \(X\) value.
  • +
+
+
+

Interpretting regression coefficients, the slope

+
    +
  • \(\beta_1\) is the expected change in response for a 1 unit change in the predictor \[ +E[Y ~|~ X = x+1] - E[Y ~|~ X = x] = +\beta_0 + \beta_1 (x + 1) - (\beta_0 + \beta_1 x ) = \beta_1 +\]
  • +
  • Consider the impact of changing the units of \(X\). \[ +Y_i = \beta_0 + \beta_1 X_i + \epsilon_i += \beta_0 + \frac{\beta_1}{a} (X_i a) + \epsilon_i += \beta_0 + \tilde \beta_1 (X_i a) + \epsilon_i +\]
  • +
  • Therefore, multiplication of \(X\) by a factor \(a\) results in dividing the coefficient by a factor of \(a\).
  • +
  • Example: \(X\) is height in \(m\) and \(Y\) is weight in \(kg\). Then \(\beta_1\) is \(kg/m\). Converting \(X\) to \(cm\) implies multiplying \(X\) by \(100 cm/m\). To get \(\beta_1\) in the right units, we have to divide by \(100 cm /m\) to get it to have the right units. \[ +X m \times \frac{100cm}{m} = (100 X) cm +~~\mbox{and}~~ +\beta_1 \frac{kg}{m} \times\frac{1 m}{100cm} = +\left(\frac{\beta_1}{100}\right)\frac{kg}{cm} +\]
  • +
+
+
+

Using regression coeficients for prediction

+
    +
  • If we would like to guess the outcome at a particular value of the predictor, say \(X\), the regression model guesses \[ + \hat \beta_0 + \hat \beta_1 X + \]
  • +
  • Note that at the observed value of \(X\)s, we obtain the predictions \[ + \hat \mu_i = \hat Y_i = \hat \beta_0 + \hat \beta_1 X_i + \]
  • +
  • Remember that least squares minimizes \[ +\sum_{i=1}^n (Y_i - \mu_i) +\] for \(\mu_i\) expressed as points on a line
  • +
+
+
+

Example

+
+

diamond data set from UsingR

+

Data is diamond prices (Signapore dollars) and diamond weight in carats (standard measure of diamond mass, 0.2 \(g\)). To get the data use library(UsingR); data(diamond)

+

Plotting the fitted regression line and data

+
library(UsingR)
+data(diamond)
+plot(diamond$carat, diamond$price,  
+     xlab = "Mass (carats)", 
+     ylab = "Price (SIN $)", 
+     bg = "lightblue", 
+     col = "black", cex = 1.1, pch = 21,frame = FALSE)
+abline(lm(price ~ carat, data = diamond), lwd = 2)
+
+ +
+
+
+
+

The plot

+
+ +
+
+
+

Fitting the linear regression model

+
fit <- lm(price ~ carat, data = diamond)
+coef(fit)
+
(Intercept)       carat 
+  -259.6259   3721.0249 
+
    +
  • We estimate an expected 3721.02 (SIN) dollar increase in price for every carat increase in mass of diamond.
  • +
  • The intercept -259.63 is the expected price of a 0 carat diamond.
  • +
+
+
+

Getting a more interpretable intercept

+
fit2 <- lm(price ~ I(carat - mean(carat)), data = diamond)
+coef(fit2)
+
           (Intercept) I(carat - mean(carat)) 
+              500.0833              3721.0249 
+

Thus $500.1 is the expected price for the average sized diamond of the data (0.2041667 carats).

+
+
+

Changing scale

+
    +
  • A one carat increase in a diamond is pretty big, what about changing units to 1/10th of a carat?
  • +
  • We can just do this by just dividing the coeficient by 10.
  • +
  • We expect a 372.102 (SIN) dollar change in price for every 1/10th of a carat increase in mass of diamond.
  • +
  • Showing that it’s the same if we rescale the Xs and refit
  • +
+
fit3 <- lm(price ~ I(carat * 10), data = diamond)
+coef(fit3)
+
  (Intercept) I(carat * 10) 
+    -259.6259      372.1025 
+
+
+

Predicting the price of a diamond

+
newx <- c(0.16, 0.27, 0.34)
+coef(fit)[1] + coef(fit)[2] * newx
+
[1]  335.7381  745.0508 1005.5225
+
predict(fit, newdata = data.frame(carat = newx))
+
        1         2         3 
+ 335.7381  745.0508 1005.5225 
+Predicted values at the observed Xs (red) and at the new Xs (lines) +
+ +
+
+ + + + +
+ + + + + + + + diff --git a/07_RegressionModels/01_06_residualVariation/index.Rmd b/07_RegressionModels/01_06_residualVariation/index.Rmd index f4c090164..80ad1c0f9 100644 --- a/07_RegressionModels/01_06_residualVariation/index.Rmd +++ b/07_RegressionModels/01_06_residualVariation/index.Rmd @@ -1,243 +1,246 @@ ---- -title : Residuals and residual variation -subtitle : -author : Brian Caffo, Jeff Leek and Roger Peng -job : Johns Hopkins Bloomberg School of Public Health -logo : bloomberg_shield.png -framework : io2012 # {io2012, html5slides, shower, dzslides, ...} -highlighter : highlight.js # {highlight.js, prettify, highlight} -hitheme : tomorrow # -url: - lib: ../../libraries - assets: ../../assets -widgets : [mathjax] # {mathjax, quiz, bootstrap} -mode : selfcontained # {standalone, draft} - ---- -```{r setup, cache = FALSE, echo = FALSE, message = FALSE, warning = FALSE, tidy = FALSE} -# make this an external chunk that can be included in any file -options(width = 100) -opts_chunk$set(message = F, error = F, warning = F, comment = NA, fig.align = 'center', dpi = 100, tidy = F, cache.path = '.cache/', fig.path = 'fig/') - -options(xtable.type = 'html') -knit_hooks$set(inline = function(x) { - if(is.numeric(x)) { - round(x, getOption('digits')) - } else { - paste(as.character(x), collapse = ', ') - } -}) -knit_hooks$set(plot = knitr:::hook_plot_html) -``` -## Residuals -* Model $Y_i = \beta_0 + \beta_1 X_i + \epsilon_i$ where $\epsilon_i \sim N(0, \sigma^2)$. -* Observed outcome $i$ is $Y_i$ at predictor value $X_i$ -* Predicted outcome $i$ is $\hat Y_i$ at predictor valuve $X_i$ is - $$ - \hat Y_i = \hat \beta_0 + \hat \beta_1 X_i - $$ -* Residual, the between the observed and predicted outcome - $$ - e_i = Y_i - \hat Y_i - $$ - * The vertical distance between the observed data point and the regression line -* Least squares minimizes $\sum_{i=1}^n e_i^2$ -* The $e_i$ can be thought of as estimates of the $\epsilon_i$. - ---- -## Properties of the residuals -* $E[e_i] = 0$. -* If an intercept is included, $\sum_{i=1}^n e_i = 0$ -* If a regressor variable, $X_i$, is included in the model $\sum_{i=1}^n e_i X_i = 0$. -* Residuals are useful for investigating poor model fit. -* Positive residuals are above the line, negative residuals are below. -* Residuals can be thought of as the outcome ($Y$) with the - linear association of the predictor ($X$) removed. -* One differentiates residual variation (variation after removing -the predictor) from systematic variation (variation explained by the regression model). -* Residual plots highlight poor model fit. - ---- -## Code - -```{r} -data(diamond) -y <- diamond$price; x <- diamond$carat; n <- length(y) -fit <- lm(y ~ x) -e <- resid(fit) -yhat <- predict(fit) -max(abs(e -(y - yhat))) -max(abs(e - (y - coef(fit)[1] - coef(fit)[2] * x))) -``` - ---- -## Residuals are the signed length of the red lines -```{r, echo = FALSE, fig.height=5, fig.width=5} -plot(diamond$carat, diamond$price, - xlab = "Mass (carats)", - ylab = "Price (SIN $)", - bg = "lightblue", - col = "black", cex = 1.1, pch = 21,frame = FALSE) -abline(fit, lwd = 2) -for (i in 1 : n) - lines(c(x[i], x[i]), c(y[i], yhat[i]), col = "red" , lwd = 2) -``` - ---- -## Residuals versus X -```{r, echo = FALSE, fig.height=5, fig.width=5} -plot(diamond$carat, e, - xlab = "Mass (carats)", - ylab = "Residuals (SIN $)", - bg = "lightblue", - col = "black", cex = 1.1, pch = 21,frame = FALSE) -abline(h = 0, lwd = 2) -for (i in 1 : n) - lines(c(x[i], x[i]), c(e[i], 0), col = "red" , lwd = 2) -``` - ---- -## Non-linear data -```{r, echo = TRUE, fig.height=5, fig.width=5} -x <- runif(100, -3, 3); y <- x + sin(x) + rnorm(100, sd = .2); -plot(x, y); abline(lm(y ~ x)) -``` - ---- -```{r, echo = TRUE, fig.height=5, fig.width=5} -plot(x, resid(lm(y ~ x))); -abline(h = 0) -``` - ---- -## Heteroskedasticity -```{r, echo = TRUE, fig.height=4.5, fig.width=4.5} -x <- runif(100, 0, 6); y <- x + rnorm(100, mean = 0, sd = .001 * x); -plot(x, y); abline(lm(y ~ x)) -``` - ---- -## Getting rid of the blank space can be helpful -```{r, echo = TRUE, fig.height=4.5, fig.width=4.5} -plot(x, resid(lm(y ~ x))); -abline(h = 0) -``` - ---- -## Estimating residual variation -* Model $Y_i = \beta_0 + \beta_1 X_i + \epsilon_i$ where $\epsilon_i \sim N(0, \sigma^2)$. -* The ML estimate of $\sigma^2$ is $\frac{1}{n}\sum_{i=1}^n e_i^2$, -the average squared residual. -* Most people use - $$ - \hat \sigma^2 = \frac{1}{n-2}\sum_{i=1}^n e_i^2. - $$ -* The $n-2$ instead of $n$ is so that $E[\hat \sigma^2] = \sigma^2$ - ---- -## Diamond example -```{r, echo = TRUE} -y <- diamond$price; x <- diamond$carat; n <- length(y) -fit <- lm(y ~ x) -summary(fit)$sigma -sqrt(sum(resid(fit)^2) / (n - 2)) -``` - ---- -## Summarizing variation -$$ -\begin{align} -\sum_{i=1}^n (Y_i - \bar Y)^2 -& = \sum_{i=1}^n (Y_i - \hat Y_i + \hat Y_i - \bar Y)^2 \\ -& = \sum_{i=1}^n (Y_i - \hat Y_i)^2 + -2 \sum_{i=1}^n (Y_i - \hat Y_i)(\hat Y_i - \bar Y) + -\sum_{i=1}^n (\hat Y_i - \bar Y)^2 \\ -\end{align} -$$ - -**** -### Scratch work -$(Y_i - \hat Y_i) = \{Y_i - (\bar Y - \hat \beta_1 \bar X) - \hat \beta_1 X_i\} = (Y_i - \bar Y) - \hat \beta_1 (X_i - \bar X)$ - -$(\hat Y_i - \bar Y) = (\bar Y - \hat \beta_1 \bar X - \hat \beta_1 X_i - \bar Y ) -= \hat \beta_1 (X_i - \bar X)$ - -$\sum_{i=1}^n (Y_i - \hat Y_i)(\hat Y_i - \bar Y) -= \sum_{i=1}^n \{(Y_i - \bar Y) - \hat \beta_1 (X_i - \bar X))\}\{\hat \beta_1 (X_i - \bar X)\}$ - -$=\hat \beta_1 \sum_{i=1}^n (Y_i - \bar Y)(X_i - \bar X) -\hat\beta_1^2\sum_{i=1}^n (X_i - \bar X)^2$ - -$= \hat \beta_1^2 \sum_{i=1}^n (X_i - \bar X)^2-\hat\beta_1^2\sum_{i=1}^n (X_i - \bar X)^2 = 0$ - ---- -## Summarizing variation -$$ -\sum_{i=1}^n (Y_i - \bar Y)^2 -= \sum_{i=1}^n (Y_i - \hat Y_i)^2 + \sum_{i=1}^n (\hat Y_i - \bar Y)^2 -$$ - -Or - -Total Variation = Residual Variation + Regression Variation - -Define the percent of total varation described by the model as -$$ -R^2 = \frac{\sum_{i=1}^n (\hat Y_i - \bar Y)^2}{\sum_{i=1}^n (Y_i - \bar Y)^2} -= 1 - \frac{\sum_{i=1}^n (Y_i - \hat Y_i)^2}{\sum_{i=1}^n (Y_i - \bar Y)^2} -$$ - ---- -## Relation between $R^2$ and $r$ (the corrrelation) -Recall that $(\hat Y_i - \bar Y) = \hat \beta_1 (X_i - \bar X)$ -so that -$$ -R^2 = \frac{\sum_{i=1}^n (\hat Y_i - \bar Y)^2}{\sum_{i=1}^n (Y_i - \bar Y)^2} -= \hat \beta_1^2 \frac{\sum_{i=1}^n(X_i - \bar X)}{\sum_{i=1}^n (Y_i - \bar Y)^2} -= Cor(Y, X)^2 -$$ -Since, recall, -$$ -\hat \beta_1 = Cor(Y, X)\frac{Sd(Y)}{Sd(X)} -$$ -So, $R^2$ is literally $r$ squared. - ---- -## Some facts about $R^2$ -* $R^2$ is the percentage of variation explained by the regression model. -* $0 \leq R^2 \leq 1$ -* $R^2$ is the sample correlation squared. -* $R^2$ can be a misleading summary of model fit. - * Deleting data can inflate $R^2$. - * (For later.) Adding terms to a regression model always increases $R^2$. -* Do `example(anscombe)` to see the following data. - * Basically same mean and variance of X and Y. - * Identical correlations (hence same $R^2$ ). - * Same linear regression relationship. - ---- -## `data(anscombe);example(anscombe)` -```{r, echo = FALSE, fig.height=5, fig.width=5, results='hide'} -require(stats); require(graphics); data(anscombe) -ff <- y ~ x -mods <- setNames(as.list(1:4), paste0("lm", 1:4)) -for(i in 1:4) { - ff[2:3] <- lapply(paste0(c("y","x"), i), as.name) - ## or ff[[2]] <- as.name(paste0("y", i)) - ## ff[[3]] <- as.name(paste0("x", i)) - mods[[i]] <- lmi <- lm(ff, data = anscombe) - #print(anova(lmi)) -} - - -## Now, do what you should have done in the first place: PLOTS -op <- par(mfrow = c(2, 2), mar = 0.1+c(4,4,1,1), oma = c(0, 0, 2, 0)) -for(i in 1:4) { - ff[2:3] <- lapply(paste0(c("y","x"), i), as.name) - plot(ff, data = anscombe, col = "red", pch = 21, bg = "orange", cex = 1.2, - xlim = c(3, 19), ylim = c(3, 13)) - abline(mods[[i]], col = "blue") -} -mtext("Anscombe's 4 Regression data sets", outer = TRUE, cex = 1.5) -par(op) -``` - +--- +title : Residuals and residual variation +subtitle : +author : Brian Caffo, Jeff Leek and Roger Peng +job : Johns Hopkins Bloomberg School of Public Health +logo : bloomberg_shield.png +framework : io2012 # {io2012, html5slides, shower, dzslides, ...} +highlighter : highlight.js # {highlight.js, prettify, highlight} +hitheme : tomorrow # +url: + lib: ../../libraries + assets: ../../assets +widgets : [mathjax] # {mathjax, quiz, bootstrap} +mode : selfcontained # {standalone, draft} + +--- +```{r setup, cache = FALSE, echo = FALSE, message = FALSE, warning = FALSE, tidy = FALSE} +# Must explicitly include knitr or the chunks will fail, at least in Linux +library(knitr) +# make this an external chunk that can be included in any file +options(width = 100) +opts_chunk$set(message = F, error = F, warning = F, comment = NA, fig.align = 'center', dpi = 100, tidy = F, cache.path = '.cache/', fig.path = 'fig/') + +options(xtable.type = 'html') +knit_hooks$set(inline = function(x) { + if(is.numeric(x)) { + round(x, getOption('digits')) + } else { + paste(as.character(x), collapse = ', ') + } +}) +knit_hooks$set(plot = knitr:::hook_plot_html) +``` +## Residuals +* Model $Y_i = \beta_0 + \beta_1 X_i + \epsilon_i$ where $\epsilon_i \sim N(0, \sigma^2)$. +* Observed outcome $i$ is $Y_i$ at predictor value $X_i$ +* Predicted outcome $i$ is $\hat Y_i$ at predictor valuve $X_i$ is + $$ + \hat Y_i = \hat \beta_0 + \hat \beta_1 X_i + $$ +* Residual, the between the observed and predicted outcome + $$ + e_i = Y_i - \hat Y_i + $$ + * The vertical distance between the observed data point and the regression line +* Least squares minimizes $\sum_{i=1}^n e_i^2$ +* The $e_i$ can be thought of as estimates of the $\epsilon_i$. + + +## Properties of the residuals +* $E[e_i] = 0$. +* If an intercept is included, $\sum_{i=1}^n e_i = 0$ +* If a regressor variable, $X_i$, is included in the model $\sum_{i=1}^n e_i X_i = 0$. +* Residuals are useful for investigating poor model fit. +* Positive residuals are above the line, negative residuals are below. +* Residuals can be thought of as the outcome ($Y$) with the + linear association of the predictor ($X$) removed. +* One differentiates residual variation (variation after removing +the predictor) from systematic variation (variation explained by the regression model). +* Residual plots highlight poor model fit. + + +## Code + +```{r} +library(UsingR) +data(diamond) +y <- diamond$price; x <- diamond$carat; n <- length(y) +fit <- lm(y ~ x) +e <- resid(fit) +yhat <- predict(fit) +max(abs(e -(y - yhat))) +max(abs(e - (y - coef(fit)[1] - coef(fit)[2] * x))) +``` + + +## Residuals are the signed length of the red lines +```{r, echo = FALSE, fig.height=5, fig.width=5} +plot(diamond$carat, diamond$price, + xlab = "Mass (carats)", + ylab = "Price (SIN $)", + bg = "lightblue", + col = "black", cex = 1.1, pch = 21,frame = FALSE) +abline(fit, lwd = 2) +for (i in 1 : n) + lines(c(x[i], x[i]), c(y[i], yhat[i]), col = "red" , lwd = 2) +``` + + +## Residuals versus X +```{r, echo = FALSE, fig.height=5, fig.width=5} +plot(diamond$carat, e, + xlab = "Mass (carats)", + ylab = "Residuals (SIN $)", + bg = "lightblue", + col = "black", cex = 1.1, pch = 21,frame = FALSE) +abline(h = 0, lwd = 2) +for (i in 1 : n) + lines(c(x[i], x[i]), c(e[i], 0), col = "red" , lwd = 2) +``` + + +## Non-linear data +```{r, echo = TRUE, fig.height=5, fig.width=5} +x <- runif(100, -3, 3); y <- x + sin(x) + rnorm(100, sd = .2); +plot(x, y); abline(lm(y ~ x)) +``` + + +```{r, echo = TRUE, fig.height=5, fig.width=5} +plot(x, resid(lm(y ~ x))); +abline(h = 0) +``` + + +## Heteroskedasticity +```{r, echo = TRUE, fig.height=4.5, fig.width=4.5} +x <- runif(100, 0, 6); y <- x + rnorm(100, mean = 0, sd = .001 * x); +plot(x, y); abline(lm(y ~ x)) +``` + + +## Getting rid of the blank space can be helpful +```{r, echo = TRUE, fig.height=4.5, fig.width=4.5} +plot(x, resid(lm(y ~ x))); +abline(h = 0) +``` + + +## Estimating residual variation +* Model $Y_i = \beta_0 + \beta_1 X_i + \epsilon_i$ where $\epsilon_i \sim N(0, \sigma^2)$. +* The ML estimate of $\sigma^2$ is $\frac{1}{n}\sum_{i=1}^n e_i^2$, +the average squared residual. +* Most people use + $$ + \hat \sigma^2 = \frac{1}{n-2}\sum_{i=1}^n e_i^2. + $$ +* The $n-2$ instead of $n$ is so that $E[\hat \sigma^2] = \sigma^2$ + + +## Diamond example +```{r, echo = TRUE} +y <- diamond$price; x <- diamond$carat; n <- length(y) +fit <- lm(y ~ x) +summary(fit)$sigma +sqrt(sum(resid(fit)^2) / (n - 2)) +``` + + +## Summarizing variation +$$ +\begin{align} +\sum_{i=1}^n (Y_i - \bar Y)^2 +& = \sum_{i=1}^n (Y_i - \hat Y_i + \hat Y_i - \bar Y)^2 \\ +& = \sum_{i=1}^n (Y_i - \hat Y_i)^2 + +2 \sum_{i=1}^n (Y_i - \hat Y_i)(\hat Y_i - \bar Y) + +\sum_{i=1}^n (\hat Y_i - \bar Y)^2 \\ +\end{align} +$$ + +**** +### Scratch work +$(Y_i - \hat Y_i) = \{Y_i - (\bar Y - \hat \beta_1 \bar X) - \hat \beta_1 X_i\} = (Y_i - \bar Y) - \hat \beta_1 (X_i - \bar X)$ + +$(\hat Y_i - \bar Y) = (\bar Y - \hat \beta_1 \bar X - \hat \beta_1 X_i - \bar Y ) += \hat \beta_1 (X_i - \bar X)$ + +$\sum_{i=1}^n (Y_i - \hat Y_i)(\hat Y_i - \bar Y) += \sum_{i=1}^n \{(Y_i - \bar Y) - \hat \beta_1 (X_i - \bar X))\}\{\hat \beta_1 (X_i - \bar X)\}$ + +$=\hat \beta_1 \sum_{i=1}^n (Y_i - \bar Y)(X_i - \bar X) -\hat\beta_1^2\sum_{i=1}^n (X_i - \bar X)^2$ + +$= \hat \beta_1^2 \sum_{i=1}^n (X_i - \bar X)^2-\hat\beta_1^2\sum_{i=1}^n (X_i - \bar X)^2 = 0$ + + +## Summarizing variation +$$ +\sum_{i=1}^n (Y_i - \bar Y)^2 += \sum_{i=1}^n (Y_i - \hat Y_i)^2 + \sum_{i=1}^n (\hat Y_i - \bar Y)^2 +$$ + +Or + +Total Variation = Residual Variation + Regression Variation + +Define the percent of total varation described by the model as +$$ +R^2 = \frac{\sum_{i=1}^n (\hat Y_i - \bar Y)^2}{\sum_{i=1}^n (Y_i - \bar Y)^2} += 1 - \frac{\sum_{i=1}^n (Y_i - \hat Y_i)^2}{\sum_{i=1}^n (Y_i - \bar Y)^2} +$$ + + +## Relation between $R^2$ and $r$ (the corrrelation) +Recall that $(\hat Y_i - \bar Y) = \hat \beta_1 (X_i - \bar X)$ +so that +$$ +R^2 = \frac{\sum_{i=1}^n (\hat Y_i - \bar Y)^2}{\sum_{i=1}^n (Y_i - \bar Y)^2} += \hat \beta_1^2 \frac{\sum_{i=1}^n(X_i - \bar X)}{\sum_{i=1}^n (Y_i - \bar Y)^2} += Cor(Y, X)^2 +$$ +Since, recall, +$$ +\hat \beta_1 = Cor(Y, X)\frac{Sd(Y)}{Sd(X)} +$$ +So, $R^2$ is literally $r$ squared. + + +## Some facts about $R^2$ +* $R^2$ is the percentage of variation explained by the regression model. +* $0 \leq R^2 \leq 1$ +* $R^2$ is the sample correlation squared. +* $R^2$ can be a misleading summary of model fit. + * Deleting data can inflate $R^2$. + * (For later.) Adding terms to a regression model always increases $R^2$. +* Do `example(anscombe)` to see the following data. + * Basically same mean and variance of X and Y. + * Identical correlations (hence same $R^2$ ). + * Same linear regression relationship. + + +## `data(anscombe);example(anscombe)` +```{r, echo = FALSE, fig.height=5, fig.width=5, results='hide'} +require(stats); require(graphics); data(anscombe) +ff <- y ~ x +mods <- setNames(as.list(1:4), paste0("lm", 1:4)) +for(i in 1:4) { + ff[2:3] <- lapply(paste0(c("y","x"), i), as.name) + ## or ff[[2]] <- as.name(paste0("y", i)) + ## ff[[3]] <- as.name(paste0("x", i)) + mods[[i]] <- lmi <- lm(ff, data = anscombe) + #print(anova(lmi)) +} + + +## Now, do what you should have done in the first place: PLOTS +op <- par(mfrow = c(2, 2), mar = 0.1+c(4,4,1,1), oma = c(0, 0, 2, 0)) +for(i in 1:4) { + ff[2:3] <- lapply(paste0(c("y","x"), i), as.name) + plot(ff, data = anscombe, col = "red", pch = 21, bg = "orange", cex = 1.2, + xlim = c(3, 19), ylim = c(3, 13)) + abline(mods[[i]], col = "blue") +} +mtext("Anscombe's 4 Regression data sets", outer = TRUE, cex = 1.5) +par(op) +``` + diff --git a/07_RegressionModels/01_06_residualVariation/index.html b/07_RegressionModels/01_06_residualVariation/index.html index d2ca4d492..861c2ca41 100644 --- a/07_RegressionModels/01_06_residualVariation/index.html +++ b/07_RegressionModels/01_06_residualVariation/index.html @@ -1,404 +1,318 @@ - - - - Residuals and residual variation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

Residuals and residual variation

-

-

Brian Caffo, Jeff Leek and Roger Peng
Johns Hopkins Bloomberg School of Public Health

-
-
- - - -
-

Residuals

-
-
-
    -
  • Model \(Y_i = \beta_0 + \beta_1 X_i + \epsilon_i\) where \(\epsilon_i \sim N(0, \sigma^2)\).
  • -
  • Observed outcome \(i\) is \(Y_i\) at predictor value \(X_i\)
  • -
  • Predicted outcome \(i\) is \(\hat Y_i\) at predictor valuve \(X_i\) is -\[ -\hat Y_i = \hat \beta_0 + \hat \beta_1 X_i -\]
  • -
  • Residual, the between the observed and predicted outcome -\[ -e_i = Y_i - \hat Y_i -\] - -
      -
    • The vertical distance between the observed data point and the regression line
    • -
  • -
  • Least squares minimizes \(\sum_{i=1}^n e_i^2\)
  • -
  • The \(e_i\) can be thought of as estimates of the \(\epsilon_i\).
  • -
- -
- -
- - -
-

Properties of the residuals

-
-
-
    -
  • \(E[e_i] = 0\).
  • -
  • If an intercept is included, \(\sum_{i=1}^n e_i = 0\)
  • -
  • If a regressor variable, \(X_i\), is included in the model \(\sum_{i=1}^n e_i X_i = 0\).
  • -
  • Residuals are useful for investigating poor model fit.
  • -
  • Positive residuals are above the line, negative residuals are below.
  • -
  • Residuals can be thought of as the outcome (\(Y\)) with the -linear association of the predictor (\(X\)) removed.
  • -
  • One differentiates residual variation (variation after removing -the predictor) from systematic variation (variation explained by the regression model).
  • -
  • Residual plots highlight poor model fit.
  • -
- -
- -
- - -
-

Code

-
-
-
data(diamond)
-y <- diamond$price; x <- diamond$carat; n <- length(y)
-fit <- lm(y ~ x)
-e <- resid(fit)
-yhat <- predict(fit)
-max(abs(e -(y - yhat)))
-
- -
[1] 9.486e-13
-
- -
max(abs(e - (y - coef(fit)[1] - coef(fit)[2] * x)))
-
- -
[1] 9.486e-13
-
- -
- -
- - -
-

Residuals are the signed length of the red lines

-
-
-
plot of chunk unnamed-chunk-2
- -
- -
- - -
-

Residuals versus X

-
-
-
plot of chunk unnamed-chunk-3
- -
- -
- - -
-

Non-linear data

-
-
-
x <- runif(100, -3, 3); y <- x + sin(x) + rnorm(100, sd = .2); 
-plot(x, y); abline(lm(y ~ x))
-
- -
plot of chunk unnamed-chunk-4
- -
- -
- - -
- -
-
-
plot(x, resid(lm(y ~ x))); 
-abline(h = 0)
-
- -
plot of chunk unnamed-chunk-5
- -
- -
- - -
-

Heteroskedasticity

-
-
-
x <- runif(100, 0, 6); y <- x + rnorm(100,  mean = 0, sd = .001 * x); 
-plot(x, y); abline(lm(y ~ x))
-
- -
plot of chunk unnamed-chunk-6
- -
- -
- - -
-

Getting rid of the blank space can be helpful

-
-
-
plot(x, resid(lm(y ~ x))); 
-abline(h = 0)
-
- -
plot of chunk unnamed-chunk-7
- -
- -
- - -
-

Estimating residual variation

-
-
-
    -
  • Model \(Y_i = \beta_0 + \beta_1 X_i + \epsilon_i\) where \(\epsilon_i \sim N(0, \sigma^2)\).
  • -
  • The ML estimate of \(\sigma^2\) is \(\frac{1}{n}\sum_{i=1}^n e_i^2\), -the average squared residual.
  • -
  • Most people use -\[ -\hat \sigma^2 = \frac{1}{n-2}\sum_{i=1}^n e_i^2. -\]
  • -
  • The \(n-2\) instead of \(n\) is so that \(E[\hat \sigma^2] = \sigma^2\)
  • -
- -
- -
- - -
-

Diamond example

-
-
-
y <- diamond$price; x <- diamond$carat; n <- length(y)
-fit <- lm(y ~ x)
-summary(fit)$sigma
-
- -
[1] 31.84
-
- -
sqrt(sum(resid(fit)^2) / (n - 2))
-
- -
[1] 31.84
-
- -
- -
- - -
-

Summarizing variation

-
-
-

\[ -\begin{align} -\sum_{i=1}^n (Y_i - \bar Y)^2 -& = \sum_{i=1}^n (Y_i - \hat Y_i + \hat Y_i - \bar Y)^2 \\ -& = \sum_{i=1}^n (Y_i - \hat Y_i)^2 + -2 \sum_{i=1}^n (Y_i - \hat Y_i)(\hat Y_i - \bar Y) + -\sum_{i=1}^n (\hat Y_i - \bar Y)^2 \\ -\end{align} -\]

- -
- -

Scratch work

- -

\((Y_i - \hat Y_i) = \{Y_i - (\bar Y - \hat \beta_1 \bar X) - \hat \beta_1 X_i\} = (Y_i - \bar Y) - \hat \beta_1 (X_i - \bar X)\)

- -

\((\hat Y_i - \bar Y) = (\bar Y - \hat \beta_1 \bar X - \hat \beta_1 X_i - \bar Y ) -= \hat \beta_1 (X_i - \bar X)\)

- -

\(\sum_{i=1}^n (Y_i - \hat Y_i)(\hat Y_i - \bar Y) -= \sum_{i=1}^n \{(Y_i - \bar Y) - \hat \beta_1 (X_i - \bar X))\}\{\hat \beta_1 (X_i - \bar X)\}\)

- -

\(=\hat \beta_1 \sum_{i=1}^n (Y_i - \bar Y)(X_i - \bar X) -\hat\beta_1^2\sum_{i=1}^n (X_i - \bar X)^2\)

- -

\(= \hat \beta_1^2 \sum_{i=1}^n (X_i - \bar X)^2-\hat\beta_1^2\sum_{i=1}^n (X_i - \bar X)^2 = 0\)

- -
- -
- - -
-

Summarizing variation

-
-
-

\[ -\sum_{i=1}^n (Y_i - \bar Y)^2 -= \sum_{i=1}^n (Y_i - \hat Y_i)^2 + \sum_{i=1}^n (\hat Y_i - \bar Y)^2 -\]

- -

Or

- -

Total Variation = Residual Variation + Regression Variation

- -

Define the percent of total varation described by the model as -\[ -R^2 = \frac{\sum_{i=1}^n (\hat Y_i - \bar Y)^2}{\sum_{i=1}^n (Y_i - \bar Y)^2} -= 1 - \frac{\sum_{i=1}^n (Y_i - \hat Y_i)^2}{\sum_{i=1}^n (Y_i - \bar Y)^2} -\]

- -
- -
- - -
-

Relation between \(R^2\) and \(r\) (the corrrelation)

-
-
-

Recall that \((\hat Y_i - \bar Y) = \hat \beta_1 (X_i - \bar X)\) -so that -\[ -R^2 = \frac{\sum_{i=1}^n (\hat Y_i - \bar Y)^2}{\sum_{i=1}^n (Y_i - \bar Y)^2} -= \hat \beta_1^2 \frac{\sum_{i=1}^n(X_i - \bar X)}{\sum_{i=1}^n (Y_i - \bar Y)^2} -= Cor(Y, X)^2 -\] -Since, recall, -\[ -\hat \beta_1 = Cor(Y, X)\frac{Sd(Y)}{Sd(X)} -\] -So, \(R^2\) is literally \(r\) squared.

- -
- -
- - -
-

Some facts about \(R^2\)

-
-
-
    -
  • \(R^2\) is the percentage of variation explained by the regression model.
  • -
  • \(0 \leq R^2 \leq 1\)
  • -
  • \(R^2\) is the sample correlation squared.
  • -
  • \(R^2\) can be a misleading summary of model fit. - -
      -
    • Deleting data can inflate \(R^2\).
    • -
    • (For later.) Adding terms to a regression model always increases \(R^2\).
    • -
  • -
  • Do example(anscombe) to see the following data. - -
      -
    • Basically same mean and variance of X and Y.
    • -
    • Identical correlations (hence same \(R^2\) ).
    • -
    • Same linear regression relationship.
    • -
  • -
- -
- -
- - -
-

data(anscombe);example(anscombe)

-
-
-
plot of chunk unnamed-chunk-9
- -
- -
- - -
- - - - - - - - - - - - - - - - - \ No newline at end of file + + + + + + + + + + + + + + +Residuals and residual variation + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+

Residuals

+
    +
  • Model \(Y_i = \beta_0 + \beta_1 X_i + \epsilon_i\) where \(\epsilon_i \sim N(0, \sigma^2)\).
  • +
  • Observed outcome \(i\) is \(Y_i\) at predictor value \(X_i\)
  • +
  • Predicted outcome \(i\) is \(\hat Y_i\) at predictor valuve \(X_i\) is \[ + \hat Y_i = \hat \beta_0 + \hat \beta_1 X_i + \]
  • +
  • Residual, the between the observed and predicted outcome \[ + e_i = Y_i - \hat Y_i + \]
  • +
  • The vertical distance between the observed data point and the regression line
  • +
  • Least squares minimizes \(\sum_{i=1}^n e_i^2\)
  • +
  • The \(e_i\) can be thought of as estimates of the \(\epsilon_i\).
  • +
+
+
+

Properties of the residuals

+
    +
  • \(E[e_i] = 0\).
  • +
  • If an intercept is included, \(\sum_{i=1}^n e_i = 0\)
  • +
  • If a regressor variable, \(X_i\), is included in the model \(\sum_{i=1}^n e_i X_i = 0\).
  • +
  • Residuals are useful for investigating poor model fit.
  • +
  • Positive residuals are above the line, negative residuals are below.
  • +
  • Residuals can be thought of as the outcome (\(Y\)) with the linear association of the predictor (\(X\)) removed.
  • +
  • One differentiates residual variation (variation after removing the predictor) from systematic variation (variation explained by the regression model).
  • +
  • Residual plots highlight poor model fit.
  • +
+
+
+

Code

+
library(UsingR)
+data(diamond)
+y <- diamond$price; x <- diamond$carat; n <- length(y)
+fit <- lm(y ~ x)
+e <- resid(fit)
+yhat <- predict(fit)
+max(abs(e -(y - yhat)))
+
[1] 9.485746e-13
+
max(abs(e - (y - coef(fit)[1] - coef(fit)[2] * x)))
+
[1] 9.485746e-13
+
+
+

Residuals are the signed length of the red lines

+
+ +
+
+
+

Residuals versus X

+
+ +
+
+
+

Non-linear data

+
x <- runif(100, -3, 3); y <- x + sin(x) + rnorm(100, sd = .2); 
+plot(x, y); abline(lm(y ~ x))
+
+ +
+
plot(x, resid(lm(y ~ x))); 
+abline(h = 0)
+
+ +
+
+
+

Heteroskedasticity

+
x <- runif(100, 0, 6); y <- x + rnorm(100,  mean = 0, sd = .001 * x); 
+plot(x, y); abline(lm(y ~ x))
+
+ +
+
+
+

Getting rid of the blank space can be helpful

+
plot(x, resid(lm(y ~ x))); 
+abline(h = 0)
+
+ +
+
+
+

Estimating residual variation

+
    +
  • Model \(Y_i = \beta_0 + \beta_1 X_i + \epsilon_i\) where \(\epsilon_i \sim N(0, \sigma^2)\).
  • +
  • The ML estimate of \(\sigma^2\) is \(\frac{1}{n}\sum_{i=1}^n e_i^2\), the average squared residual.
  • +
  • Most people use \[ + \hat \sigma^2 = \frac{1}{n-2}\sum_{i=1}^n e_i^2. + \]
  • +
  • The \(n-2\) instead of \(n\) is so that \(E[\hat \sigma^2] = \sigma^2\)
  • +
+
+
+

Diamond example

+
y <- diamond$price; x <- diamond$carat; n <- length(y)
+fit <- lm(y ~ x)
+summary(fit)$sigma
+
[1] 31.84052
+
sqrt(sum(resid(fit)^2) / (n - 2))
+
[1] 31.84052
+
+
+

Summarizing variation

+

\[ +\begin{align} +\sum_{i=1}^n (Y_i - \bar Y)^2 +& = \sum_{i=1}^n (Y_i - \hat Y_i + \hat Y_i - \bar Y)^2 \\ +& = \sum_{i=1}^n (Y_i - \hat Y_i)^2 + +2 \sum_{i=1}^n (Y_i - \hat Y_i)(\hat Y_i - \bar Y) + +\sum_{i=1}^n (\hat Y_i - \bar Y)^2 \\ +\end{align} +\]

+
+
+

Scratch work

+

\((Y_i - \hat Y_i) = \{Y_i - (\bar Y - \hat \beta_1 \bar X) - \hat \beta_1 X_i\} = (Y_i - \bar Y) - \hat \beta_1 (X_i - \bar X)\)

+

\((\hat Y_i - \bar Y) = (\bar Y - \hat \beta_1 \bar X - \hat \beta_1 X_i - \bar Y ) = \hat \beta_1 (X_i - \bar X)\)

+

\(\sum_{i=1}^n (Y_i - \hat Y_i)(\hat Y_i - \bar Y) = \sum_{i=1}^n \{(Y_i - \bar Y) - \hat \beta_1 (X_i - \bar X))\}\{\hat \beta_1 (X_i - \bar X)\}\)

+

\(=\hat \beta_1 \sum_{i=1}^n (Y_i - \bar Y)(X_i - \bar X) -\hat\beta_1^2\sum_{i=1}^n (X_i - \bar X)^2\)

+

\(= \hat \beta_1^2 \sum_{i=1}^n (X_i - \bar X)^2-\hat\beta_1^2\sum_{i=1}^n (X_i - \bar X)^2 = 0\)

+
+
+
+

Summarizing variation

+

\[ +\sum_{i=1}^n (Y_i - \bar Y)^2 += \sum_{i=1}^n (Y_i - \hat Y_i)^2 + \sum_{i=1}^n (\hat Y_i - \bar Y)^2 +\]

+

Or

+

Total Variation = Residual Variation + Regression Variation

+

Define the percent of total varation described by the model as \[ +R^2 = \frac{\sum_{i=1}^n (\hat Y_i - \bar Y)^2}{\sum_{i=1}^n (Y_i - \bar Y)^2} += 1 - \frac{\sum_{i=1}^n (Y_i - \hat Y_i)^2}{\sum_{i=1}^n (Y_i - \bar Y)^2} +\]

+
+
+

Relation between \(R^2\) and \(r\) (the corrrelation)

+

Recall that \((\hat Y_i - \bar Y) = \hat \beta_1 (X_i - \bar X)\) so that \[ +R^2 = \frac{\sum_{i=1}^n (\hat Y_i - \bar Y)^2}{\sum_{i=1}^n (Y_i - \bar Y)^2} += \hat \beta_1^2 \frac{\sum_{i=1}^n(X_i - \bar X)}{\sum_{i=1}^n (Y_i - \bar Y)^2} += Cor(Y, X)^2 +\] Since, recall, \[ +\hat \beta_1 = Cor(Y, X)\frac{Sd(Y)}{Sd(X)} +\] So, \(R^2\) is literally \(r\) squared.

+
+
+

Some facts about \(R^2\)

+
    +
  • \(R^2\) is the percentage of variation explained by the regression model.
  • +
  • \(0 \leq R^2 \leq 1\)
  • +
  • \(R^2\) is the sample correlation squared.
  • +
  • \(R^2\) can be a misleading summary of model fit.
  • +
  • Deleting data can inflate \(R^2\).
  • +
  • (For later.) Adding terms to a regression model always increases \(R^2\).
  • +
  • Do example(anscombe) to see the following data.
  • +
  • Basically same mean and variance of X and Y.
  • +
  • Identical correlations (hence same \(R^2\) ).
  • +
  • Same linear regression relationship.
  • +
+
+
+

data(anscombe);example(anscombe)

+
+ +
+
+ + + + +
+ + + + + + + + diff --git a/07_RegressionModels/01_07_inference/index.Rmd b/07_RegressionModels/01_07_inference/index.Rmd index 57a40b612..08a2ca623 100644 --- a/07_RegressionModels/01_07_inference/index.Rmd +++ b/07_RegressionModels/01_07_inference/index.Rmd @@ -1,214 +1,216 @@ ---- -title : Inference in regression -subtitle : -author : Brian Caffo, Jeff Leek and Roger Peng -job : Johns Hopkins Bloomberg School of Public Health -logo : bloomberg_shield.png -framework : io2012 # {io2012, html5slides, shower, dzslides, ...} -highlighter : highlight.js # {highlight.js, prettify, highlight} -hitheme : tomorrow # -url: - lib: ../../libraries - assets: ../../assets -widgets : [mathjax] # {mathjax, quiz, bootstrap} -mode : selfcontained # {standalone, draft} ---- -```{r setup, cache = F, echo = F, message = F, warning = F, tidy = F, results='hide'} -# make this an external chunk that can be included in any file -options(width = 100) -opts_chunk$set(message = F, error = F, warning = F, comment = NA, fig.align = 'center', dpi = 100, tidy = F, cache.path = '.cache/', fig.path = 'fig/') - -options(xtable.type = 'html') -knit_hooks$set(inline = function(x) { - if(is.numeric(x)) { - round(x, getOption('digits')) - } else { - paste(as.character(x), collapse = ', ') - } -}) -knit_hooks$set(plot = knitr:::hook_plot_html) -runif(1) -``` -## Recall our model and fitted values -* Consider the model -$$ -Y_i = \beta_0 + \beta_1 X_i + \epsilon_i -$$ -* $\epsilon \sim N(0, \sigma^2)$. -* We assume that the true model is known. -* We assume that you've seen confidence intervals and hypothesis tests before. -* $\hat \beta_0 = \bar Y - \hat \beta_1 \bar X$ -* $\hat \beta_1 = Cor(Y, X) \frac{Sd(Y)}{Sd(X)}$. - ---- -## Review -* Statistics like $\frac{\hat \theta - \theta}{\hat \sigma_{\hat \theta}}$ often have the following properties. - 1. Is normally distributed and has a finite sample Student's T distribution if the estimated variance is replaced with a sample estimate (under normality assumptions). - 3. Can be used to test $H_0 : \theta = \theta_0$ versus $H_a : \theta >, <, \neq \theta_0$. - 4. Can be used to create a confidence interval for $\theta$ via $\hat \theta \pm Q_{1-\alpha/2} \hat \sigma_{\hat \theta}$ - where $Q_{1-\alpha/2}$ is the relevant quantile from either a normal or T distribution. -* In the case of regression with iid sampling assumptions and normal errors, our inferences will follow -very similarily to what you saw in your inference class. -* We won't cover asymptotics for regression analysis, but suffice it to say that under assumptions -on the ways in which the $X$ values are collected, the iid sampling model, and mean model, -the normal results hold to create intervals and confidence intervals - ---- -## Standard errors (conditioned on X) -$$ -\begin{align} -Var(\hat \beta_1) & = -Var\left(\frac{\sum_{i=1}^n (Y_i - \bar Y) (X_i - \bar X)}{\sum_{i=1}^n (X_i - \bar X)^2}\right) \\ -& = \frac{Var\left(\sum_{i=1}^n Y_i (X_i - \bar X) \right) }{\left(\sum_{i=1}^n (X_i - \bar X)^2 \right)^2} \\ -& = \frac{\sum_{i=1}^n \sigma^2(X_i - \bar X)^2}{\left(\sum_{i=1}^n (X_i - \bar X)^2 \right)^2} \\ -& = \frac{\sigma^2}{\sum_{i=1}^n (X_i - \bar X)^2} \\ -\end{align} -$$ - ---- -## Results -* $\sigma_{\hat \beta_1}^2 = Var(\hat \beta_1) = \sigma^2 / \sum_{i=1}^n (X_i - \bar X)^2$ -* $\sigma_{\hat \beta_0}^2 = Var(\hat \beta_0) = \left(\frac{1}{n} + \frac{\bar X^2}{\sum_{i=1}^n (X_i - \bar X)^2 }\right)\sigma^2$ -* In practice, $\sigma$ is replaced by its estimate. -* It's probably not surprising that under iid Gaussian errors -$$ -\frac{\hat \beta_j - \beta_j}{\hat \sigma_{\hat \beta_j}} -$$ -follows a $t$ distribution with $n-2$ degrees of freedom and a normal distribution for large $n$. -* This can be used to create confidence intervals and perform -hypothesis tests. - ---- -## Example diamond data set -```{r} -library(UsingR); data(diamond) -y <- diamond$price; x <- diamond$carat; n <- length(y) -beta1 <- cor(y, x) * sd(y) / sd(x) -beta0 <- mean(y) - beta1 * mean(x) -e <- y - beta0 - beta1 * x -sigma <- sqrt(sum(e^2) / (n-2)) -ssx <- sum((x - mean(x))^2) -seBeta0 <- (1 / n + mean(x) ^ 2 / ssx) ^ .5 * sigma -seBeta1 <- sigma / sqrt(ssx) -tBeta0 <- beta0 / seBeta0; tBeta1 <- beta1 / seBeta1 -pBeta0 <- 2 * pt(abs(tBeta0), df = n - 2, lower.tail = FALSE) -pBeta1 <- 2 * pt(abs(tBeta1), df = n - 2, lower.tail = FALSE) -coefTable <- rbind(c(beta0, seBeta0, tBeta0, pBeta0), c(beta1, seBeta1, tBeta1, pBeta1)) -colnames(coefTable) <- c("Estimate", "Std. Error", "t value", "P(>|t|)") -rownames(coefTable) <- c("(Intercept)", "x") -``` - ---- -## Example continued - -```{r} -coefTable -fit <- lm(y ~ x); -summary(fit)$coefficients -``` - ---- -## Getting a confidence interval -```{r} -sumCoef <- summary(fit)$coefficients -sumCoef[1,1] + c(-1, 1) * qt(.975, df = fit$df) * sumCoef[1, 2] -sumCoef[2,1] + c(-1, 1) * qt(.975, df = fit$df) * sumCoef[2, 2] -``` -With 95% confidence, we estimate that a 0.1 carat increase in -diamond size results in a `r round((sumCoef[2,1] - qt(.975, df = fit$df) * sumCoef[2, 2]) / 10, 1)` to `r round((sumCoef[2,1] + qt(.975, df = fit$df) * sumCoef[2, 2]) / 10, 1)` increase in price in (Singapore) dollars. - ---- -## Prediction of outcomes -* Consider predicting $Y$ at a value of $X$ - * Predicting the price of a diamond given the carat - * Predicting the height of a child given the height of the parents -* The obvious estimate for prediction at point $x_0$ is -$$ -\hat \beta_0 + \hat \beta_1 x_0 -$$ -* A standard error is needed to create a prediction interval. -* There's a distinction between intervals for the regression - line at point $x_0$ and the prediction of what a $y$ would be - at point $x_0$. -* Line at $x_0$ se, $\hat \sigma\sqrt{\frac{1}{n} + \frac{(x_0 - \bar X)^2}{\sum_{i=1}^n (X_i - \bar X)^2}}$ -* Prediction interval se at $x_0$, $\hat \sigma\sqrt{1 + \frac{1}{n} + \frac{(x_0 - \bar X)^2}{\sum_{i=1}^n (X_i - \bar X)^2}}$ - ---- -## Plotting the prediction intervals - -``` -plot(x, y, frame=FALSE,xlab="Carat",ylab="Dollars",pch=21,col="black", bg="lightblue", cex=2) -abline(fit, lwd = 2) -xVals <- seq(min(x), max(x), by = .01) -yVals <- beta0 + beta1 * xVals -se1 <- sigma * sqrt(1 / n + (xVals - mean(x))^2/ssx) -se2 <- sigma * sqrt(1 + 1 / n + (xVals - mean(x))^2/ssx) -lines(xVals, yVals + 2 * se1) -lines(xVals, yVals - 2 * se1) -lines(xVals, yVals + 2 * se2) -lines(xVals, yVals - 2 * se2) -``` - ---- -## Plotting the prediction intervals -```{r, fig.height=5, fig.width==5, echo = FALSE, results='hide'} -plot(x, y, frame=FALSE,xlab="Carat",ylab="Dollars",pch=21,col="black", bg="lightblue", cex=2) -abline(fit, lwd = 2) -xVals <- seq(min(x), max(x), by = .01) -yVals <- beta0 + beta1 * xVals -se1 <- sigma * sqrt(1 / n + (xVals - mean(x))^2/ssx) -se2 <- sigma * sqrt(1 + 1 / n + (xVals - mean(x))^2/ssx) -lines(xVals, yVals + 2 * se1) -lines(xVals, yVals - 2 * se1) -lines(xVals, yVals + 2 * se2) -lines(xVals, yVals - 2 * se2) -``` - ---- -## Discussion -* Both intervals have varying widths. - * Least width at the mean of the Xs. -* We are quite confident in the regression line, so that - interval is very narrow. - * If we knew $\beta_0$ and $\beta_1$ this interval would have zero width. -* The prediction interval must incorporate the variabilibity - in the data around the line. - * Even if we knew $\beta_0$ and $\beta_1$ this interval would still have width. - ---- - -## In R -``` -newdata <- data.frame(x = xVals) -p1 <- predict(fit, newdata, interval = ("confidence")) -p2 <- predict(fit, newdata, interval = ("prediction")) -plot(x, y, frame=FALSE,xlab="Carat",ylab="Dollars",pch=21,col="black", bg="lightblue", cex=2) -abline(fit, lwd = 2) -lines(xVals, p1[,2]); lines(xVals, p1[,3]) -lines(xVals, p2[,2]); lines(xVals, p2[,3]) -``` - ---- ---- -## In R - -```{r, fig.height=5, fig.width=5, echo=FALSE,results='hide'} -newdata <- data.frame(x = xVals) -p1 <- predict(fit, newdata, interval = ("confidence")) -p2 <- predict(fit, newdata, interval = ("prediction")) -plot(x, y, frame=FALSE,xlab="Carat",ylab="Dollars",pch=21,col="black", bg="lightblue", cex=2) -abline(fit, lwd = 2) -lines(xVals, p1[,2]); lines(xVals, p1[,3]) -lines(xVals, p2[,2]); lines(xVals, p2[,3]) -``` - - - - - - - - - - - +--- +title : Inference in regression +subtitle : +author : Brian Caffo, Jeff Leek and Roger Peng +job : Johns Hopkins Bloomberg School of Public Health +logo : bloomberg_shield.png +framework : io2012 # {io2012, html5slides, shower, dzslides, ...} +highlighter : highlight.js # {highlight.js, prettify, highlight} +hitheme : tomorrow # +url: + lib: ../../libraries + assets: ../../assets +widgets : [mathjax] # {mathjax, quiz, bootstrap} +mode : selfcontained # {standalone, draft} +--- +```{r setup, cache = F, echo = F, message = F, warning = F, tidy = F, results='hide'} +# Must explicitly include knitr or the chunks will fail, at least in Linux +library(knitr) +# make this an external chunk that can be included in any file +options(width = 100) +opts_chunk$set(message = F, error = F, warning = F, comment = NA, fig.align = 'center', dpi = 100, tidy = F, cache.path = '.cache/', fig.path = 'fig/') + +options(xtable.type = 'html') +knit_hooks$set(inline = function(x) { + if(is.numeric(x)) { + round(x, getOption('digits')) + } else { + paste(as.character(x), collapse = ', ') + } +}) +knit_hooks$set(plot = knitr:::hook_plot_html) +runif(1) +``` +## Recall our model and fitted values +* Consider the model +$$ +Y_i = \beta_0 + \beta_1 X_i + \epsilon_i +$$ +* $\epsilon \sim N(0, \sigma^2)$. +* We assume that the true model is known. +* We assume that you've seen confidence intervals and hypothesis tests before. +* $\hat \beta_0 = \bar Y - \hat \beta_1 \bar X$ +* $\hat \beta_1 = Cor(Y, X) \frac{Sd(Y)}{Sd(X)}$. + + +## Review +* Statistics like $\frac{\hat \theta - \theta}{\hat \sigma_{\hat \theta}}$ often have the following properties. + 1. Is normally distributed and has a finite sample Student's T distribution if the estimated variance is replaced with a sample estimate (under normality assumptions). + 3. Can be used to test $H_0 : \theta = \theta_0$ versus $H_a : \theta >, <, \neq \theta_0$. + 4. Can be used to create a confidence interval for $\theta$ via $\hat \theta \pm Q_{1-\alpha/2} \hat \sigma_{\hat \theta}$ + where $Q_{1-\alpha/2}$ is the relevant quantile from either a normal or T distribution. +* In the case of regression with iid sampling assumptions and normal errors, our inferences will follow +very similarily to what you saw in your inference class. +* We won't cover asymptotics for regression analysis, but suffice it to say that under assumptions +on the ways in which the $X$ values are collected, the iid sampling model, and mean model, +the normal results hold to create intervals and confidence intervals + + +## Standard errors (conditioned on X) +$$ +\begin{align} +Var(\hat \beta_1) & = +Var\left(\frac{\sum_{i=1}^n (Y_i - \bar Y) (X_i - \bar X)}{\sum_{i=1}^n (X_i - \bar X)^2}\right) \\ +& = \frac{Var\left(\sum_{i=1}^n Y_i (X_i - \bar X) \right) }{\left(\sum_{i=1}^n (X_i - \bar X)^2 \right)^2} \\ +& = \frac{\sum_{i=1}^n \sigma^2(X_i - \bar X)^2}{\left(\sum_{i=1}^n (X_i - \bar X)^2 \right)^2} \\ +& = \frac{\sigma^2}{\sum_{i=1}^n (X_i - \bar X)^2} \\ +\end{align} +$$ + + +## Results +* $\sigma_{\hat \beta_1}^2 = Var(\hat \beta_1) = \sigma^2 / \sum_{i=1}^n (X_i - \bar X)^2$ +* $\sigma_{\hat \beta_0}^2 = Var(\hat \beta_0) = \left(\frac{1}{n} + \frac{\bar X^2}{\sum_{i=1}^n (X_i - \bar X)^2 }\right)\sigma^2$ +* In practice, $\sigma$ is replaced by its estimate. +* It's probably not surprising that under iid Gaussian errors +$$ +\frac{\hat \beta_j - \beta_j}{\hat \sigma_{\hat \beta_j}} +$$ +follows a $t$ distribution with $n-2$ degrees of freedom and a normal distribution for large $n$. +* This can be used to create confidence intervals and perform +hypothesis tests. + + +## Example diamond data set +```{r} +library(UsingR); data(diamond) +y <- diamond$price; x <- diamond$carat; n <- length(y) +beta1 <- cor(y, x) * sd(y) / sd(x) +beta0 <- mean(y) - beta1 * mean(x) +e <- y - beta0 - beta1 * x +sigma <- sqrt(sum(e^2) / (n-2)) +ssx <- sum((x - mean(x))^2) +seBeta0 <- (1 / n + mean(x) ^ 2 / ssx) ^ .5 * sigma +seBeta1 <- sigma / sqrt(ssx) +tBeta0 <- beta0 / seBeta0; tBeta1 <- beta1 / seBeta1 +pBeta0 <- 2 * pt(abs(tBeta0), df = n - 2, lower.tail = FALSE) +pBeta1 <- 2 * pt(abs(tBeta1), df = n - 2, lower.tail = FALSE) +coefTable <- rbind(c(beta0, seBeta0, tBeta0, pBeta0), c(beta1, seBeta1, tBeta1, pBeta1)) +colnames(coefTable) <- c("Estimate", "Std. Error", "t value", "P(>|t|)") +rownames(coefTable) <- c("(Intercept)", "x") +``` + + +## Example continued + +```{r} +coefTable +fit <- lm(y ~ x); +summary(fit)$coefficients +``` + + +## Getting a confidence interval +```{r} +sumCoef <- summary(fit)$coefficients +sumCoef[1,1] + c(-1, 1) * qt(.975, df = fit$df) * sumCoef[1, 2] +sumCoef[2,1] + c(-1, 1) * qt(.975, df = fit$df) * sumCoef[2, 2] +``` +With 95% confidence, we estimate that a 0.1 carat increase in +diamond size results in a `r round((sumCoef[2,1] - qt(.975, df = fit$df) * sumCoef[2, 2]) / 10, 1)` to `r round((sumCoef[2,1] + qt(.975, df = fit$df) * sumCoef[2, 2]) / 10, 1)` increase in price in (Singapore) dollars. + + +## Prediction of outcomes +* Consider predicting $Y$ at a value of $X$ + * Predicting the price of a diamond given the carat + * Predicting the height of a child given the height of the parents +* The obvious estimate for prediction at point $x_0$ is +$$ +\hat \beta_0 + \hat \beta_1 x_0 +$$ +* A standard error is needed to create a prediction interval. +* There's a distinction between intervals for the regression + line at point $x_0$ and the prediction of what a $y$ would be + at point $x_0$. +* Line at $x_0$ se, $\hat \sigma\sqrt{\frac{1}{n} + \frac{(x_0 - \bar X)^2}{\sum_{i=1}^n (X_i - \bar X)^2}}$ +* Prediction interval se at $x_0$, $\hat \sigma\sqrt{1 + \frac{1}{n} + \frac{(x_0 - \bar X)^2}{\sum_{i=1}^n (X_i - \bar X)^2}}$ + + +## Plotting the prediction intervals + +``` +plot(x, y, frame=FALSE,xlab="Carat",ylab="Dollars",pch=21,col="black", bg="lightblue", cex=2) +abline(fit, lwd = 2) +xVals <- seq(min(x), max(x), by = .01) +yVals <- beta0 + beta1 * xVals +se1 <- sigma * sqrt(1 / n + (xVals - mean(x))^2/ssx) +se2 <- sigma * sqrt(1 + 1 / n + (xVals - mean(x))^2/ssx) +lines(xVals, yVals + 2 * se1) +lines(xVals, yVals - 2 * se1) +lines(xVals, yVals + 2 * se2) +lines(xVals, yVals - 2 * se2) +``` + + +## Plotting the prediction intervals +```{r, fig.height=5, fig.width==5, echo = FALSE, results='hide'} +plot(x, y, frame=FALSE,xlab="Carat",ylab="Dollars",pch=21,col="black", bg="lightblue", cex=2) +abline(fit, lwd = 2) +xVals <- seq(min(x), max(x), by = .01) +yVals <- beta0 + beta1 * xVals +se1 <- sigma * sqrt(1 / n + (xVals - mean(x))^2/ssx) +se2 <- sigma * sqrt(1 + 1 / n + (xVals - mean(x))^2/ssx) +lines(xVals, yVals + 2 * se1) +lines(xVals, yVals - 2 * se1) +lines(xVals, yVals + 2 * se2) +lines(xVals, yVals - 2 * se2) +``` + + +## Discussion +* Both intervals have varying widths. + * Least width at the mean of the Xs. +* We are quite confident in the regression line, so that + interval is very narrow. + * If we knew $\beta_0$ and $\beta_1$ this interval would have zero width. +* The prediction interval must incorporate the variabilibity + in the data around the line. + * Even if we knew $\beta_0$ and $\beta_1$ this interval would still have width. + + + +## In R +``` +newdata <- data.frame(x = xVals) +p1 <- predict(fit, newdata, interval = ("confidence")) +p2 <- predict(fit, newdata, interval = ("prediction")) +plot(x, y, frame=FALSE,xlab="Carat",ylab="Dollars",pch=21,col="black", bg="lightblue", cex=2) +abline(fit, lwd = 2) +lines(xVals, p1[,2]); lines(xVals, p1[,3]) +lines(xVals, p2[,2]); lines(xVals, p2[,3]) +``` + + + +## In R + +```{r, fig.height=5, fig.width=5, echo=FALSE,results='hide'} +newdata <- data.frame(x = xVals) +p1 <- predict(fit, newdata, interval = ("confidence")) +p2 <- predict(fit, newdata, interval = ("prediction")) +plot(x, y, frame=FALSE,xlab="Carat",ylab="Dollars",pch=21,col="black", bg="lightblue", cex=2) +abline(fit, lwd = 2) +lines(xVals, p1[,2]); lines(xVals, p1[,3]) +lines(xVals, p2[,2]); lines(xVals, p2[,3]) +``` + + + + + + + + + + + diff --git a/07_RegressionModels/01_07_inference/index.html b/07_RegressionModels/01_07_inference/index.html index cb9c530d3..e36f8397b 100644 --- a/07_RegressionModels/01_07_inference/index.html +++ b/07_RegressionModels/01_07_inference/index.html @@ -1,369 +1,300 @@ - - - - Inference in regression - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

Inference in regression

-

-

Brian Caffo, Jeff Leek and Roger Peng
Johns Hopkins Bloomberg School of Public Health

-
-
- - - -
-

Recall our model and fitted values

-
-
-
    -
  • Consider the model -\[ -Y_i = \beta_0 + \beta_1 X_i + \epsilon_i -\]
  • -
  • \(\epsilon \sim N(0, \sigma^2)\).
  • -
  • We assume that the true model is known.
  • -
  • We assume that you've seen confidence intervals and hypothesis tests before.
  • -
  • \(\hat \beta_0 = \bar Y - \hat \beta_1 \bar X\)
  • -
  • \(\hat \beta_1 = Cor(Y, X) \frac{Sd(Y)}{Sd(X)}\).
  • -
- -
- -
- - -
-

Review

-
-
-
    -
  • Statistics like \(\frac{\hat \theta - \theta}{\hat \sigma_{\hat \theta}}\) often have the following properties. - -
      -
    1. Is normally distributed and has a finite sample Student's T distribution if the estimated variance is replaced with a sample estimate (under normality assumptions).
    2. -
    3. Can be used to test \(H_0 : \theta = \theta_0\) versus \(H_a : \theta >, <, \neq \theta_0\).
    4. -
    5. Can be used to create a confidence interval for \(\theta\) via \(\hat \theta \pm Q_{1-\alpha/2} \hat \sigma_{\hat \theta}\) -where \(Q_{1-\alpha/2}\) is the relevant quantile from either a normal or T distribution.
    6. -
  • -
  • In the case of regression with iid sampling assumptions and normal errors, our inferences will follow -very similarily to what you saw in your inference class.
  • -
  • We won't cover asymptotics for regression analysis, but suffice it to say that under assumptions -on the ways in which the \(X\) values are collected, the iid sampling model, and mean model, -the normal results hold to create intervals and confidence intervals
  • -
- -
- -
- - -
-

Standard errors (conditioned on X)

-
-
-

\[ -\begin{align} -Var(\hat \beta_1) & = -Var\left(\frac{\sum_{i=1}^n (Y_i - \bar Y) (X_i - \bar X)}{\sum_{i=1}^n (X_i - \bar X)^2}\right) \\ -& = \frac{Var\left(\sum_{i=1}^n Y_i (X_i - \bar X) \right) }{\left(\sum_{i=1}^n (X_i - \bar X)^2 \right)^2} \\ -& = \frac{\sum_{i=1}^n \sigma^2(X_i - \bar X)^2}{\left(\sum_{i=1}^n (X_i - \bar X)^2 \right)^2} \\ -& = \frac{\sigma^2}{\sum_{i=1}^n (X_i - \bar X)^2} \\ -\end{align} -\]

- -
- -
- - -
-

Results

-
-
-
    -
  • \(\sigma_{\hat \beta_1}^2 = Var(\hat \beta_1) = \sigma^2 / \sum_{i=1}^n (X_i - \bar X)^2\)
  • -
  • \(\sigma_{\hat \beta_0}^2 = Var(\hat \beta_0) = \left(\frac{1}{n} + \frac{\bar X^2}{\sum_{i=1}^n (X_i - \bar X)^2 }\right)\sigma^2\)
  • -
  • In practice, \(\sigma\) is replaced by its estimate.
  • -
  • It's probably not surprising that under iid Gaussian errors -\[ -\frac{\hat \beta_j - \beta_j}{\hat \sigma_{\hat \beta_j}} -\] -follows a \(t\) distribution with \(n-2\) degrees of freedom and a normal distribution for large \(n\).
  • -
  • This can be used to create confidence intervals and perform -hypothesis tests.
  • -
- -
- -
- - -
-

Example diamond data set

-
-
-
library(UsingR); data(diamond)
-y <- diamond$price; x <- diamond$carat; n <- length(y)
-beta1 <- cor(y, x) * sd(y) / sd(x)
-beta0 <- mean(y) - beta1 * mean(x)
-e <- y - beta0 - beta1 * x
-sigma <- sqrt(sum(e^2) / (n-2)) 
-ssx <- sum((x - mean(x))^2)
-seBeta0 <- (1 / n + mean(x) ^ 2 / ssx) ^ .5 * sigma 
-seBeta1 <- sigma / sqrt(ssx)
-tBeta0 <- beta0 / seBeta0; tBeta1 <- beta1 / seBeta1
-pBeta0 <- 2 * pt(abs(tBeta0), df = n - 2, lower.tail = FALSE)
-pBeta1 <- 2 * pt(abs(tBeta1), df = n - 2, lower.tail = FALSE)
-coefTable <- rbind(c(beta0, seBeta0, tBeta0, pBeta0), c(beta1, seBeta1, tBeta1, pBeta1))
-colnames(coefTable) <- c("Estimate", "Std. Error", "t value", "P(>|t|)")
-rownames(coefTable) <- c("(Intercept)", "x")
-
- -
- -
- - -
-

Example continued

-
-
-
coefTable
-
- -
            Estimate Std. Error t value   P(>|t|)
-(Intercept)   -259.6      17.32  -14.99 2.523e-19
-x             3721.0      81.79   45.50 6.751e-40
-
- -
fit <- lm(y ~ x); 
-summary(fit)$coefficients
-
- -
            Estimate Std. Error t value  Pr(>|t|)
-(Intercept)   -259.6      17.32  -14.99 2.523e-19
-x             3721.0      81.79   45.50 6.751e-40
-
- -
- -
- - -
-

Getting a confidence interval

-
-
-
sumCoef <- summary(fit)$coefficients
-sumCoef[1,1] + c(-1, 1) * qt(.975, df = fit$df) * sumCoef[1, 2]
-
- -
[1] -294.5 -224.8
-
- -
sumCoef[2,1] + c(-1, 1) * qt(.975, df = fit$df) * sumCoef[2, 2]
-
- -
[1] 3556 3886
-
- -

With 95% confidence, we estimate that a 0.1 carat increase in -diamond size results in a 355.6 to 388.6 increase in price in (Singapore) dollars.

- -
- -
- - -
-

Prediction of outcomes

-
-
-
    -
  • Consider predicting \(Y\) at a value of \(X\) - -
      -
    • Predicting the price of a diamond given the carat
    • -
    • Predicting the height of a child given the height of the parents
    • -
  • -
  • The obvious estimate for prediction at point \(x_0\) is -\[ -\hat \beta_0 + \hat \beta_1 x_0 -\]
  • -
  • A standard error is needed to create a prediction interval.
  • -
  • There's a distinction between intervals for the regression -line at point \(x_0\) and the prediction of what a \(y\) would be -at point \(x_0\).
  • -
  • Line at \(x_0\) se, \(\hat \sigma\sqrt{\frac{1}{n} + \frac{(x_0 - \bar X)^2}{\sum_{i=1}^n (X_i - \bar X)^2}}\)
  • -
  • Prediction interval se at \(x_0\), \(\hat \sigma\sqrt{1 + \frac{1}{n} + \frac{(x_0 - \bar X)^2}{\sum_{i=1}^n (X_i - \bar X)^2}}\)
  • -
- -
- -
- - -
-

Plotting the prediction intervals

-
-
-
plot(x, y, frame=FALSE,xlab="Carat",ylab="Dollars",pch=21,col="black", bg="lightblue", cex=2)
-abline(fit, lwd = 2)
-xVals <- seq(min(x), max(x), by = .01)
-yVals <- beta0 + beta1 * xVals
-se1 <- sigma * sqrt(1 / n + (xVals - mean(x))^2/ssx)
-se2 <- sigma * sqrt(1 + 1 / n + (xVals - mean(x))^2/ssx)
-lines(xVals, yVals + 2 * se1)
-lines(xVals, yVals - 2 * se1)
-lines(xVals, yVals + 2 * se2)
-lines(xVals, yVals - 2 * se2)
-
- -
- -
- - -
-

Plotting the prediction intervals

-
-
-
plot of chunk fig.width==5
- -
- -
- - -
-

Discussion

-
-
-
    -
  • Both intervals have varying widths. - -
      -
    • Least width at the mean of the Xs.
    • -
  • -
  • We are quite confident in the regression line, so that -interval is very narrow. - -
      -
    • If we knew \(\beta_0\) and \(\beta_1\) this interval would have zero width.
    • -
  • -
  • The prediction interval must incorporate the variabilibity -in the data around the line. - -
      -
    • Even if we knew \(\beta_0\) and \(\beta_1\) this interval would still have width.
    • -
  • -
- -
- -
- - -
-

In R

-
-
-
newdata <- data.frame(x = xVals)
-p1 <- predict(fit, newdata, interval = ("confidence"))
-p2 <- predict(fit, newdata, interval = ("prediction"))
-plot(x, y, frame=FALSE,xlab="Carat",ylab="Dollars",pch=21,col="black", bg="lightblue", cex=2)
-abline(fit, lwd = 2)
-lines(xVals, p1[,2]); lines(xVals, p1[,3])
-lines(xVals, p2[,2]); lines(xVals, p2[,3])
-
- -
- -
- - -
- -
-
-
- -

In R

- -
plot of chunk unnamed-chunk-4
- -
- -
- - -
- - - - - - - - - - - - - - - - - \ No newline at end of file + + + + + + + + + + + + + + +Inference in regression + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+

Recall our model and fitted values

+
    +
  • Consider the model \[ +Y_i = \beta_0 + \beta_1 X_i + \epsilon_i +\]
  • +
  • \(\epsilon \sim N(0, \sigma^2)\).
  • +
  • We assume that the true model is known.
  • +
  • We assume that you’ve seen confidence intervals and hypothesis tests before.
  • +
  • \(\hat \beta_0 = \bar Y - \hat \beta_1 \bar X\)
  • +
  • \(\hat \beta_1 = Cor(Y, X) \frac{Sd(Y)}{Sd(X)}\).
  • +
+
+
+

Review

+
    +
  • Statistics like \(\frac{\hat \theta - \theta}{\hat \sigma_{\hat \theta}}\) often have the following properties. +
      +
    1. Is normally distributed and has a finite sample Student’s T distribution if the estimated variance is replaced with a sample estimate (under normality assumptions).
    2. +
    3. Can be used to test \(H_0 : \theta = \theta_0\) versus \(H_a : \theta >, <, \neq \theta_0\).
    4. +
    5. Can be used to create a confidence interval for \(\theta\) via \(\hat \theta \pm Q_{1-\alpha/2} \hat \sigma_{\hat \theta}\) where \(Q_{1-\alpha/2}\) is the relevant quantile from either a normal or T distribution.
    6. +
  • +
  • In the case of regression with iid sampling assumptions and normal errors, our inferences will follow very similarily to what you saw in your inference class.
  • +
  • We won’t cover asymptotics for regression analysis, but suffice it to say that under assumptions on the ways in which the \(X\) values are collected, the iid sampling model, and mean model, the normal results hold to create intervals and confidence intervals
  • +
+
+
+

Standard errors (conditioned on X)

+

\[ +\begin{align} +Var(\hat \beta_1) & = +Var\left(\frac{\sum_{i=1}^n (Y_i - \bar Y) (X_i - \bar X)}{\sum_{i=1}^n (X_i - \bar X)^2}\right) \\ +& = \frac{Var\left(\sum_{i=1}^n Y_i (X_i - \bar X) \right) }{\left(\sum_{i=1}^n (X_i - \bar X)^2 \right)^2} \\ +& = \frac{\sum_{i=1}^n \sigma^2(X_i - \bar X)^2}{\left(\sum_{i=1}^n (X_i - \bar X)^2 \right)^2} \\ +& = \frac{\sigma^2}{\sum_{i=1}^n (X_i - \bar X)^2} \\ +\end{align} +\]

+
+
+

Results

+
    +
  • \(\sigma_{\hat \beta_1}^2 = Var(\hat \beta_1) = \sigma^2 / \sum_{i=1}^n (X_i - \bar X)^2\)
  • +
  • \(\sigma_{\hat \beta_0}^2 = Var(\hat \beta_0) = \left(\frac{1}{n} + \frac{\bar X^2}{\sum_{i=1}^n (X_i - \bar X)^2 }\right)\sigma^2\)
  • +
  • In practice, \(\sigma\) is replaced by its estimate.
  • +
  • It’s probably not surprising that under iid Gaussian errors \[ +\frac{\hat \beta_j - \beta_j}{\hat \sigma_{\hat \beta_j}} +\] follows a \(t\) distribution with \(n-2\) degrees of freedom and a normal distribution for large \(n\).
  • +
  • This can be used to create confidence intervals and perform hypothesis tests.
  • +
+
+
+

Example diamond data set

+
library(UsingR); data(diamond)
+y <- diamond$price; x <- diamond$carat; n <- length(y)
+beta1 <- cor(y, x) * sd(y) / sd(x)
+beta0 <- mean(y) - beta1 * mean(x)
+e <- y - beta0 - beta1 * x
+sigma <- sqrt(sum(e^2) / (n-2)) 
+ssx <- sum((x - mean(x))^2)
+seBeta0 <- (1 / n + mean(x) ^ 2 / ssx) ^ .5 * sigma 
+seBeta1 <- sigma / sqrt(ssx)
+tBeta0 <- beta0 / seBeta0; tBeta1 <- beta1 / seBeta1
+pBeta0 <- 2 * pt(abs(tBeta0), df = n - 2, lower.tail = FALSE)
+pBeta1 <- 2 * pt(abs(tBeta1), df = n - 2, lower.tail = FALSE)
+coefTable <- rbind(c(beta0, seBeta0, tBeta0, pBeta0), c(beta1, seBeta1, tBeta1, pBeta1))
+colnames(coefTable) <- c("Estimate", "Std. Error", "t value", "P(>|t|)")
+rownames(coefTable) <- c("(Intercept)", "x")
+
+
+

Example continued

+
coefTable
+
             Estimate Std. Error   t value      P(>|t|)
+(Intercept) -259.6259   17.31886 -14.99094 2.523271e-19
+x           3721.0249   81.78588  45.49715 6.751260e-40
+
fit <- lm(y ~ x); 
+summary(fit)$coefficients
+
             Estimate Std. Error   t value     Pr(>|t|)
+(Intercept) -259.6259   17.31886 -14.99094 2.523271e-19
+x           3721.0249   81.78588  45.49715 6.751260e-40
+
+
+

Getting a confidence interval

+
sumCoef <- summary(fit)$coefficients
+sumCoef[1,1] + c(-1, 1) * qt(.975, df = fit$df) * sumCoef[1, 2]
+
[1] -294.4870 -224.7649
+
sumCoef[2,1] + c(-1, 1) * qt(.975, df = fit$df) * sumCoef[2, 2]
+
[1] 3556.398 3885.651
+

With 95% confidence, we estimate that a 0.1 carat increase in diamond size results in a 355.6 to 388.6 increase in price in (Singapore) dollars.

+
+
+

Prediction of outcomes

+
    +
  • Consider predicting \(Y\) at a value of \(X\)
  • +
  • Predicting the price of a diamond given the carat
  • +
  • Predicting the height of a child given the height of the parents
  • +
  • The obvious estimate for prediction at point \(x_0\) is \[ +\hat \beta_0 + \hat \beta_1 x_0 +\]
  • +
  • A standard error is needed to create a prediction interval.
  • +
  • There’s a distinction between intervals for the regression line at point \(x_0\) and the prediction of what a \(y\) would be at point \(x_0\).
  • +
  • Line at \(x_0\) se, \(\hat \sigma\sqrt{\frac{1}{n} + \frac{(x_0 - \bar X)^2}{\sum_{i=1}^n (X_i - \bar X)^2}}\)
  • +
  • Prediction interval se at \(x_0\), \(\hat \sigma\sqrt{1 + \frac{1}{n} + \frac{(x_0 - \bar X)^2}{\sum_{i=1}^n (X_i - \bar X)^2}}\)
  • +
+
+
+

Plotting the prediction intervals

+
plot(x, y, frame=FALSE,xlab="Carat",ylab="Dollars",pch=21,col="black", bg="lightblue", cex=2)
+abline(fit, lwd = 2)
+xVals <- seq(min(x), max(x), by = .01)
+yVals <- beta0 + beta1 * xVals
+se1 <- sigma * sqrt(1 / n + (xVals - mean(x))^2/ssx)
+se2 <- sigma * sqrt(1 + 1 / n + (xVals - mean(x))^2/ssx)
+lines(xVals, yVals + 2 * se1)
+lines(xVals, yVals - 2 * se1)
+lines(xVals, yVals + 2 * se2)
+lines(xVals, yVals - 2 * se2)
+
+
+

Plotting the prediction intervals

+
+ +
+
+
+

Discussion

+
    +
  • Both intervals have varying widths.
  • +
  • Least width at the mean of the Xs.
  • +
  • We are quite confident in the regression line, so that interval is very narrow.
  • +
  • If we knew \(\beta_0\) and \(\beta_1\) this interval would have zero width.
  • +
  • The prediction interval must incorporate the variabilibity in the data around the line.
  • +
  • Even if we knew \(\beta_0\) and \(\beta_1\) this interval would still have width.
  • +
+
+
+

In R

+
newdata <- data.frame(x = xVals)
+p1 <- predict(fit, newdata, interval = ("confidence"))
+p2 <- predict(fit, newdata, interval = ("prediction"))
+plot(x, y, frame=FALSE,xlab="Carat",ylab="Dollars",pch=21,col="black", bg="lightblue", cex=2)
+abline(fit, lwd = 2)
+lines(xVals, p1[,2]); lines(xVals, p1[,3])
+lines(xVals, p2[,2]); lines(xVals, p2[,3])
+
+
+

In R

+
+ +
+
+ + + + +
+ + + + + + + + diff --git a/07_RegressionModels/02_01_multivariate/index.html b/07_RegressionModels/02_01_multivariate/index.html index bb8b9aff5..f33140751 100644 --- a/07_RegressionModels/02_01_multivariate/index.html +++ b/07_RegressionModels/02_01_multivariate/index.html @@ -1,540 +1,343 @@ - - - - Multivariable regression - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

Multivariable regression

-

-

Brian Caffo, Roger Peng and Jeff Leek
Johns Hopkins Bloomberg School of Public Health

-
-
- - - -
-

Multivariable regression analyses

-
-
-
    -
  • If I were to present evidence of a relationship between -breath mint useage (mints per day, X) and pulmonary function -(measured in FEV), you would be skeptical. - -
      -
    • Likely, you would say, 'smokers tend to use more breath mints than non smokers, smoking is related to a loss in pulmonary function. That's probably the culprit.'
    • -
    • If asked what would convince you, you would likely say, 'If non-smoking breath mint users had lower lung function than non-smoking non-breath mint users and, similarly, if smoking breath mint users had lower lung function than smoking non-breath mint users, I'd be more inclined to believe you'.
    • -
  • -
  • In other words, to even consider my results, I would have to demonstrate that they hold while holding smoking status fixed.
  • -
- -
- -
- - -
-

Multivariable regression analyses

-
-
-
    -
  • An insurance company is interested in how last year's claims can predict a person's time in the hospital this year. - -
      -
    • They want to use an enormous amount of data contained in claims to predict a single number. Simple linear regression is not equipped to handle more than one predictor.
    • -
  • -
  • How can one generalize SLR to incoporate lots of regressors for -the purpose of prediction?
  • -
  • What are the consequences of adding lots of regressors? - -
      -
    • Surely there must be consequences to throwing variables in that aren't related to Y?
    • -
    • Surely there must be consequences to omitting variables that are?
    • -
  • -
- -
- -
- - -
-

The linear model

-
-
-
    -
  • The general linear model extends simple linear regression (SLR) -by adding terms linearly into the model. -\[ -Y_i = \beta_1 X_{1i} + \beta_2 X_{2i} + \ldots + -\beta_{p} X_{pi} + \epsilon_{i} -= \sum_{k=1}^p X_{ik} \beta_j + \epsilon_{i} -\]
  • -
  • Here \(X_{1i}=1\) typically, so that an intercept is included.
  • -
  • Least squares (and hence ML estimates under iid Gaussianity -of the errors) minimizes -\[ -\sum_{i=1}^n \left(Y_i - \sum_{k=1}^p X_{ki} \beta_j\right)^2 -\]
  • -
  • Note, the important linearity is linearity in the coefficients. -Thus -\[ -Y_i = \beta_1 X_{1i}^2 + \beta_2 X_{2i}^2 + \ldots + -\beta_{p} X_{pi}^2 + \epsilon_{i} -\] -is still a linear model. (We've just squared the elements of the -predictor variables.)
  • -
- -
- -
- - -
-

How to get estimates

-
-
-
    -
  • The real way requires linear algebra. We'll go over an intuitive development instead.
  • -
  • Recall that the LS estimate for regression through the origin, \(E[Y_i]=X_{1i}\beta_1\), was \(\sum X_i Y_i / \sum X_i^2\).
  • -
  • Let's consider two regressors, \(E[Y_i] = X_{1i}\beta_1 + X_{2i}\beta_2 = \mu_i\).
  • -
  • Also, recall, that if \(\hat \mu_i\) satisfies -\[ -\sum_{i=1} (Y_i - \hat \mu_i) (\hat \mu_i - \mu_i) = 0 -\] -for all possible values of \(\mu_i\), then we've found the LS estimates.
  • -
- -
- -
- - -
- -
-
-

\[ -\sum_{i=1}^n (Y_i - \hat \mu_i) (\hat \mu_i - \mu_i) = \sum_{i=1}^n (Y_i - \hat \beta_1 X_{1i} - \hat \beta_2 X_{2i}) -\left\{X_{1i}(\hat \beta_1 - \beta_1) + X_{2i}(\hat \beta_2 - \beta_2) \right\} -\]

- -
    -
  • Thus we need - -
      -
    1. \(\sum_{i=1}^n (Y_i - \hat \beta_1 X_{1i} - \hat \beta_2 X_{2i}) X_{1i} = 0\)
    2. -
    3. \(\sum_{i=1}^n (Y_i - \hat \beta_1 X_{1i} - \hat \beta_2 X_{2i}) X_{2i} = 0\)
    4. -
  • -
  • Hold \(\hat \beta_1\) fixed in 2. and solve and we get that -\[ -\hat \beta_2 = \frac{\sum_{i=1} (Y_i - X_{1i}\hat \beta_1)X_{2i}}{\sum_{i=1}^n X_{2i}^2} -\]
  • -
  • Plugging this into 1. we get that -\[ -0 = \sum_{i=1}^n \left\{Y_i - \frac{\sum_j X_{2j}Y_j}{\sum_j X_{2j}^2}X_{2i} + -\beta_1 \left(X_{1i} - \frac{\sum_j X_{2j}X_{1j}}{\sum_j X_{2j}^2} X_{2i}\right)\right\} X_{1i} -\]
  • -
- -
- -
- - -
-

Continued

-
-
-
    -
  • Re writing this we get -\[ -0 = \sum_{i=1}^n \left\{ e_{i, Y | X_2} - \hat \beta_1 e_{i, X_1 | X_2} -\right\} X_{1i} -\] -where \(e_{i, a | b} = a_i - \frac{\sum_{j=1}^n a_j b_j }{\sum_{i=1}^n b_j^2} b_i\) is the residual when regressing \(b\) from \(a\) without an intercept.
  • -
  • We get the solution -\[ -\hat \beta_1 = \frac{\sum_{i=1}^n e_{i, Y | X_2} e_{i, X_1 | X_2}}{\sum_{i=1}^n e_{i, X_1 | X_2} X_1} -\]
  • -
- -
- -
- - -
- -
-
-
    -
  • But note that -\[ -\sum_{i=1}^n e_{i, X_1 | X_2}^2 -= \sum_{i=1}^n e_{i, X_1 | X_2} \left(X_{1i} - \frac{\sum_j X_{2j}X_{1j}}{\sum_j X_{2j}^2} X_{2i}\right) -\] -\[ -= \sum_{i=1}^n e_{i, X_1 | X_2} X_{1i} - \frac{\sum_j X_{2j}X_{1j}}{\sum_j X_{2j}^2} \sum_{i=1}^n e_{i, X_1 | X_2} X_{2i} -\] -But \(\sum_{i=1}^n e_{i, X_1 | X_2} X_{2i} = 0\). So we get that -\[ -\sum_{i=1}^n e_{i, X_1 | X_2}^2 = \sum_{i=1}^n e_{i, X_1 | X_2} X_{1i} -\] -Thus we get that -\[ -\hat \beta_1 = \frac{\sum_{i=1}^n e_{i, Y | X_2} e_{i, X_1 | X_2}}{\sum_{i=1}^n e_{i, X_1 | X_2}^2} -\]
  • -
- -
- -
- - -
-

Summing up fitting with two regressors

-
-
-

\[\hat \beta_1 = \frac{\sum_{i=1}^n e_{i, Y | X_2} e_{i, X_1 | X_2}}{\sum_{i=1}^n e_{i, X_1 | X_2}^2}\]

- -
    -
  • That is, the regression estimate for \(\beta_1\) is the regression -through the origin estimate having regressed \(X_2\) out of both -the response and the predictor.
  • -
  • (Similarly, the regression estimate for \(\beta_2\) is the regression through the origin estimate having regressed \(X_1\) out of both the response and the predictor.)
  • -
  • More generally, multivariate regression estimates are exactly those having removed the linear relationship of the other variables -from both the regressor and response.
  • -
- -
- -
- - -
-

Example with two variables, simple linear regression

-
-
-
    -
  • \(Y_{i} = \beta_1 X_{1i} + \beta_2 X_{2i}\) where \(X_{2i} = 1\) is an intercept term.
  • -
  • Then \(\frac{\sum_j X_{2j}X_{1j}}{\sum_j X_{2j}^2}X_{2i} = -\frac{\sum_j X_{1j}}{n} = \bar X_1\).
  • -
  • \(e_{i, X_1 | X_2} = X_{1i} - \bar X_1\).
  • -
  • Simiarly \(e_{i, Y | X_2} = Y_i - \bar Y\).
  • -
  • Thus -\[ -\hat \beta_1 = \frac{\sum_{i=1}^n e_{i, Y | X_2} e_{i, X_1 | X_2}}{\sum_{i=1}^n e_{i, X_1 | X_2}^2} = \frac{\sum_{i=1}^n (X_i - \bar X)(Y_i - \bar Y)}{\sum_{i=1}^n (X_i - \bar X)^2} -= Cor(X, Y) \frac{Sd(Y)}{Sd(X)} -\]
  • -
- -
- -
- - -
-

The general case

-
-
-
    -
  • The equations -\[ -\sum_{i=1}^n (Y_i - X_{1i}\hat \beta_1 - \ldots - X_{ip}\hat \beta_p) X_k = 0 -\] -for \(k = 1, \ldots, p\) yields \(p\) equations with \(p\) unknowns.
  • -
  • Solving them yields the least squares estimates. (With obtaining a good, fast, general solution requiring some knowledge of linear algebra.)
  • -
  • The least squares estimate for the coefficient of a multivariate regression model is exactly regression through the origin with the linear relationships with the other regressors removed from both the regressor and outcome by taking residuals.
  • -
  • In this sense, multivariate regression "adjusts" a coefficient for the linear impact of the other variables.
  • -
- -
- -
- - -
-

Fitting LS equations

-
-
-

Just so I don't leave you hanging, let's show a way to get estimates. Recall the equations: -\[ -\sum_{i=1}^n (Y_i - X_{1i}\hat \beta_1 - \ldots - X_{ip}\hat \beta_p) X_k = 0 -\] -If I hold \(\hat \beta_1, \ldots, \hat \beta_{p-1}\) fixed then -we get that -\[ -\hat \beta_p = \frac{\sum_{i=1}^n (Y_i - X_{1i}\hat \beta_1 - \ldots - X_{i,p-1}\hat \beta_{p-1}) X_{ip} }{\sum_{i=1}^n X_{ip}^2} -\] -Plugging this back into the equations, we wind up with -\[ -\sum_{i=1}^n (e_{i,Y|X_p} - e_{i, X_{1} | X_p} \hat \beta_1 - \ldots - e_{i, X_{p-1} | X_{p}} \hat \beta_{p-1}) X_k = 0 -\]

- -
- -
- - -
-

We can tidy it up a bit more, though

-
-
-

Note that -\[ -X_k = e_{i,X_k|X_p} + \frac{\sum_{i=1}^n X_{ik} X_{ip}}{\sum_{i=1}^n X_{ip^2}} X_p -\] -and \(\sum_{i=1}^n e_{i,X_j | X_p} X_{ip} = 0\). -Thus -\[ -\sum_{i=1}^n (e_{i,Y|X_p} - e_{i, X_{1} | X_p} \hat \beta_1 - \ldots - e_{i, X_{p-1} | X_{p}} \hat \beta_{p-1}) X_k = 0 -\] -is equal to -\[ -\sum_{i=1}^n (e_{i,Y|X_p} - e_{i, X_{1} | X_p} \hat \beta_1 - \ldots - e_{i, X_{p-1} | X_{p}} \hat \beta_{p-1}) e_{i,X_k|X_p} = 0 -\]

- -
- -
- - -
-

To sum up

-
-
-
    -
  • We've reduced \(p\) LS equations and \(p\) unknowns to \(p-1\) LS equations and \(p-1\) unknowns. - -
      -
    • Every variable has been replaced by its residual with \(X_p\).
    • -
    • This process can then be iterated until only Y and one -variable remains.
    • -
  • -
  • Think of it as follows. If we want an adjusted relationship between y and x, keep taking residuals over confounders and do regression through the origin. - -
      -
    • The order that you do the confounders doesn't matter.
    • -
    • (It can't because our choice of doing \(p\) first -was arbitrary.)
    • -
  • -
  • This isn't a terribly efficient way to get estimates. But, it's nice conceputally, as it shows how regression estimates are adjusted for the linear relationship with other variables.
  • -
- -
- -
- - -
-

Demonstration that it works using an example

-
-
-

Linear model with two variables and an intercept

- -
n <- 100; x <- rnorm(n); x2 <- rnorm(n); x3 <- rnorm(n)
-y <- x + x2 + x3 + rnorm(n, sd = .1)
-e <- function(a, b) a -  sum( a * b ) / sum( b ^ 2) * b
-ey <- e(e(y, x2), e(x3, x2))
-ex <- e(e(x, x2), e(x3, x2))
-sum(ey * ex) / sum(ex ^ 2)
-
- -
[1] 1.004
-
- -
coef(lm(y ~ x + x2 + x3 - 1)) #the -1 removes the intercept term
-
- -
     x     x2     x3 
-1.0040 0.9899 1.0078 
-
- -
- -
- - -
-

Showing that order doesn't matter

-
-
-
ey <- e(e(y, x3), e(x2, x3))
-ex <- e(e(x, x3), e(x2, x3))
-sum(ey * ex) / sum(ex ^ 2)
-
- -
[1] 1.004
-
- -
coef(lm(y ~ x + x2 + x3 - 1)) #the -1 removes the intercept term
-
- -
     x     x2     x3 
-1.0040 0.9899 1.0078 
-
- -
- -
- - -
-

Residuals again

-
-
-
ey <- resid(lm(y ~ x2 + x3 - 1))
-ex <- resid(lm(x ~ x2 + x3 - 1))
-sum(ey * ex) / sum(ex ^ 2)
-
- -
[1] 1.004
-
- -
coef(lm(y ~ x + x2 + x3 - 1)) #the -1 removes the intercept term
-
- -
     x     x2     x3 
-1.0040 0.9899 1.0078 
-
- -
- -
- - -
-

Interpretation of the coeficient

-
-
-

\[E[Y | X_1 = x_1, \ldots, X_p = x_p] = \sum_{k=1}^p x_{k} \beta_k\] -So that -\[ -E[Y | X_1 = x_1 + 1, \ldots, X_p = x_p] - E[Y | X_1 = x_1, \ldots, X_p = x_p]\] -\[= (x_1 + 1) \beta_1 + \sum_{k=2}^p x_{k}+ \sum_{k=1}^p x_{k} \beta_k = \beta_1 \] -So that the interpretation of a multivariate regression coefficient is the expected change in the response per unit change in the regressor, holding all of the other regressors fixed.

- -

In the next lecture, we'll do examples and go over context-specific -interpretations.

- -
- -
- - -
-

Fitted values, residuals and residual variation

-
-
-

All of our SLR quantities can be extended to linear models

- -
    -
  • Model \(Y_i = \sum_{k=1}^p X_{ik} \beta_{k} + \epsilon_{i}\) where \(\epsilon_i \sim N(0, \sigma^2)\)
  • -
  • Fitted responses \(\hat Y_i = \sum_{k=1}^p X_{ik} \hat \beta_{k}\)
  • -
  • Residuals \(e_i = Y_i - \hat Y_i\)
  • -
  • Variance estimate \(\hat \sigma^2 = \frac{1}{n-p} \sum_{i=1}^n e_i ^2\)
  • -
  • To get predicted responses at new values, \(x_1, \ldots, x_p\), simply plug them into the linear model \(\sum_{k=1}^p x_{k} \hat \beta_{k}\)
  • -
  • Coefficients have standard errors, \(\hat \sigma_{\hat \beta_k}\), and -\(\frac{\hat \beta_k - \beta_k}{\hat \sigma_{\hat \beta_k}}\) -follows a \(T\) distribution with \(n-p\) degrees of freedom.
  • -
  • Predicted responses have standard errors and we can calculate predicted and expected response intervals.
  • -
- -
- -
- - -
-

Linear models

-
-
-
    -
  • Linear models are the single most important applied statistical and machine learning techniqe, by far.
  • -
  • Some amazing things that you can accomplish with linear models - -
      -
    • Decompose a signal into its harmonics.
    • -
    • Flexibly fit complicated functions.
    • -
    • Fit factor variables as predictors.
    • -
    • Uncover complex multivariate relationships with the response.
    • -
    • Build accurate prediction models.
    • -
  • -
- -
- -
- - -
- - - - - - - - - - - - - - - - - \ No newline at end of file + + + + + + + + + + + + + + +Multivariable regression + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+

Multivariable regression analyses

+
    +
  • If I were to present evidence of a relationship between breath mint useage (mints per day, X) and pulmonary function (measured in FEV), you would be skeptical.
  • +
  • Likely, you would say, ‘smokers tend to use more breath mints than non smokers, smoking is related to a loss in pulmonary function. That’s probably the culprit.’
  • +
  • If asked what would convince you, you would likely say, ‘If non-smoking breath mint users had lower lung function than non-smoking non-breath mint users and, similarly, if smoking breath mint users had lower lung function than smoking non-breath mint users, I’d be more inclined to believe you’.
  • +
  • In other words, to even consider my results, I would have to demonstrate that they hold while holding smoking status fixed.
  • +
  • An insurance company is interested in how last year’s claims can predict a person’s time in the hospital this year.
  • +
  • They want to use an enormous amount of data contained in claims to predict a single number. Simple linear regression is not equipped to handle more than one predictor.
  • +
  • How can one generalize SLR to incoporate lots of regressors for the purpose of prediction?
  • +
  • What are the consequences of adding lots of regressors?
  • +
  • Surely there must be consequences to throwing variables in that aren’t related to Y?
  • +
  • Surely there must be consequences to omitting variables that are?
  • +
+
+
+

The linear model

+
    +
  • The general linear model extends simple linear regression (SLR) by adding terms linearly into the model. \[ +Y_i = \beta_1 X_{1i} + \beta_2 X_{2i} + \ldots + +\beta_{p} X_{pi} + \epsilon_{i} += \sum_{k=1}^p X_{ik} \beta_j + \epsilon_{i} +\]
  • +
  • Here \(X_{1i}=1\) typically, so that an intercept is included.
  • +
  • Least squares (and hence ML estimates under iid Gaussianity of the errors) minimizes \[ +\sum_{i=1}^n \left(Y_i - \sum_{k=1}^p X_{ki} \beta_j\right)^2 +\]
  • +
  • Note, the important linearity is linearity in the coefficients. Thus \[ +Y_i = \beta_1 X_{1i}^2 + \beta_2 X_{2i}^2 + \ldots + +\beta_{p} X_{pi}^2 + \epsilon_{i} +\] is still a linear model. (We’ve just squared the elements of the predictor variables.)
  • +
+
+
+

How to get estimates

+
    +
  • The real way requires linear algebra. We’ll go over an intuitive development instead.
  • +
  • Recall that the LS estimate for regression through the origin, \(E[Y_i]=X_{1i}\beta_1\), was \(\sum X_i Y_i / \sum X_i^2\).
  • +
  • Let’s consider two regressors, \(E[Y_i] = X_{1i}\beta_1 + X_{2i}\beta_2 = \mu_i\).
  • +
  • Also, recall, that if \(\hat \mu_i\) satisfies \[ +\sum_{i=1} (Y_i - \hat \mu_i) (\hat \mu_i - \mu_i) = 0 +\] for all possible values of \(\mu_i\), then we’ve found the LS estimates.
  • +
+

\[ +\sum_{i=1}^n (Y_i - \hat \mu_i) (\hat \mu_i - \mu_i) = \sum_{i=1}^n (Y_i - \hat \beta_1 X_{1i} - \hat \beta_2 X_{2i}) +\left\{X_{1i}(\hat \beta_1 - \beta_1) + X_{2i}(\hat \beta_2 - \beta_2) \right\} +\] * Thus we need 1. \(\sum_{i=1}^n (Y_i - \hat \beta_1 X_{1i} - \hat \beta_2 X_{2i}) X_{1i} = 0\) 2. \(\sum_{i=1}^n (Y_i - \hat \beta_1 X_{1i} - \hat \beta_2 X_{2i}) X_{2i} = 0\) * Hold \(\hat \beta_1\) fixed in 2. and solve and we get that \[ +\hat \beta_2 = \frac{\sum_{i=1} (Y_i - X_{1i}\hat \beta_1)X_{2i}}{\sum_{i=1}^n X_{2i}^2} +\] * Plugging this into 1. we get that \[ +0 = \sum_{i=1}^n \left\{Y_i - \frac{\sum_j X_{2j}Y_j}{\sum_j X_{2j}^2}X_{2i} + +\beta_1 \left(X_{1i} - \frac{\sum_j X_{2j}X_{1j}}{\sum_j X_{2j}^2} X_{2i}\right)\right\} X_{1i} +\]

+
+
+

Continued

+
    +
  • Re writing this we get \[ +0 = \sum_{i=1}^n \left\{ e_{i, Y | X_2} - \hat \beta_1 e_{i, X_1 | X_2} +\right\} X_{1i} +\] where \(e_{i, a | b} = a_i - \frac{\sum_{j=1}^n a_j b_j }{\sum_{i=1}^n b_j^2} b_i\) is the residual when regressing \(b\) from \(a\) without an intercept.
  • +
  • We get the solution \[ +\hat \beta_1 = \frac{\sum_{i=1}^n e_{i, Y | X_2} e_{i, X_1 | X_2}}{\sum_{i=1}^n e_{i, X_1 | X_2} X_1} +\]

  • +
  • But note that \[ +\sum_{i=1}^n e_{i, X_1 | X_2}^2 += \sum_{i=1}^n e_{i, X_1 | X_2} \left(X_{1i} - \frac{\sum_j X_{2j}X_{1j}}{\sum_j X_{2j}^2} X_{2i}\right) +\] \[ += \sum_{i=1}^n e_{i, X_1 | X_2} X_{1i} - \frac{\sum_j X_{2j}X_{1j}}{\sum_j X_{2j}^2} \sum_{i=1}^n e_{i, X_1 | X_2} X_{2i} +\] But \(\sum_{i=1}^n e_{i, X_1 | X_2} X_{2i} = 0\). So we get that \[ +\sum_{i=1}^n e_{i, X_1 | X_2}^2 = \sum_{i=1}^n e_{i, X_1 | X_2} X_{1i} +\] Thus we get that \[ +\hat \beta_1 = \frac{\sum_{i=1}^n e_{i, Y | X_2} e_{i, X_1 | X_2}}{\sum_{i=1}^n e_{i, X_1 | X_2}^2} +\]

  • +
+
+
+

Summing up fitting with two regressors

+

\[\hat \beta_1 = \frac{\sum_{i=1}^n e_{i, Y | X_2} e_{i, X_1 | X_2}}{\sum_{i=1}^n e_{i, X_1 | X_2}^2}\] * That is, the regression estimate for \(\beta_1\) is the regression through the origin estimate having regressed \(X_2\) out of both the response and the predictor. * (Similarly, the regression estimate for \(\beta_2\) is the regression through the origin estimate having regressed \(X_1\) out of both the response and the predictor.) * More generally, multivariate regression estimates are exactly those having removed the linear relationship of the other variables from both the regressor and response.

+
+
+

Example with two variables, simple linear regression

+
    +
  • \(Y_{i} = \beta_1 X_{1i} + \beta_2 X_{2i}\) where \(X_{2i} = 1\) is an intercept term.
  • +
  • Then \(\frac{\sum_j X_{2j}X_{1j}}{\sum_j X_{2j}^2}X_{2i} = \frac{\sum_j X_{1j}}{n} = \bar X_1\).
  • +
  • \(e_{i, X_1 | X_2} = X_{1i} - \bar X_1\).
  • +
  • Simiarly \(e_{i, Y | X_2} = Y_i - \bar Y\).
  • +
  • Thus \[ +\hat \beta_1 = \frac{\sum_{i=1}^n e_{i, Y | X_2} e_{i, X_1 | X_2}}{\sum_{i=1}^n e_{i, X_1 | X_2}^2} = \frac{\sum_{i=1}^n (X_i - \bar X)(Y_i - \bar Y)}{\sum_{i=1}^n (X_i - \bar X)^2} += Cor(X, Y) \frac{Sd(Y)}{Sd(X)} +\]
  • +
+
+
+

The general case

+
    +
  • The equations \[ +\sum_{i=1}^n (Y_i - X_{1i}\hat \beta_1 - \ldots - X_{ip}\hat \beta_p) X_k = 0 +\] for \(k = 1, \ldots, p\) yields \(p\) equations with \(p\) unknowns.
  • +
  • Solving them yields the least squares estimates. (With obtaining a good, fast, general solution requiring some knowledge of linear algebra.)
  • +
  • The least squares estimate for the coefficient of a multivariate regression model is exactly regression through the origin with the linear relationships with the other regressors removed from both the regressor and outcome by taking residuals.
  • +
  • In this sense, multivariate regression “adjusts” a coefficient for the linear impact of the other variables.
  • +
+
+
+

Fitting LS equations

+

Just so I don’t leave you hanging, let’s show a way to get estimates. Recall the equations: \[ +\sum_{i=1}^n (Y_i - X_{1i}\hat \beta_1 - \ldots - X_{ip}\hat \beta_p) X_k = 0 +\] If I hold \(\hat \beta_1, \ldots, \hat \beta_{p-1}\) fixed then we get that \[ +\hat \beta_p = \frac{\sum_{i=1}^n (Y_i - X_{1i}\hat \beta_1 - \ldots - X_{i,p-1}\hat \beta_{p-1}) X_{ip} }{\sum_{i=1}^n X_{ip}^2} +\] Plugging this back into the equations, we wind up with \[ +\sum_{i=1}^n (e_{i,Y|X_p} - e_{i, X_{1} | X_p} \hat \beta_1 - \ldots - e_{i, X_{p-1} | X_{p}} \hat \beta_{p-1}) X_k = 0 +\]

+
+
+

We can tidy it up a bit more, though

+

Note that \[ +X_k = e_{i,X_k|X_p} + \frac{\sum_{i=1}^n X_{ik} X_{ip}}{\sum_{i=1}^n X_{ip}^2} X_p +\] and \(\sum_{i=1}^n e_{i,X_j | X_p} X_{ip} = 0\). Thus \[ +\sum_{i=1}^n (e_{i,Y|X_p} - e_{i, X_{1} | X_p} \hat \beta_1 - \ldots - e_{i, X_{p-1} | X_{p}} \hat \beta_{p-1}) X_k = 0 +\] is equal to \[ +\sum_{i=1}^n (e_{i,Y|X_p} - e_{i, X_{1} | X_p} \hat \beta_1 - \ldots - e_{i, X_{p-1} | X_{p}} \hat \beta_{p-1}) e_{i,X_k|X_p} = 0 +\]

+
+
+

To sum up

+
    +
  • We’ve reduced \(p\) LS equations and \(p\) unknowns to \(p-1\) LS equations and \(p-1\) unknowns.
  • +
  • Every variable has been replaced by its residual with \(X_p\).
  • +
  • This process can then be iterated until only Y and one variable remains.
  • +
  • Think of it as follows. If we want an adjusted relationship between y and x, keep taking residuals over confounders and do regression through the origin.
  • +
  • The order that you do the confounders doesn’t matter.
  • +
  • (It can’t because our choice of doing \(p\) first was arbitrary.)
  • +
  • This isn’t a terribly efficient way to get estimates. But, it’s nice conceputally, as it shows how regression estimates are adjusted for the linear relationship with other variables.
  • +
+
+
+

Demonstration that it works using an example

+
+

Linear model with two variables and an intercept

+
n <- 100; x <- rnorm(n); x2 <- rnorm(n); x3 <- rnorm(n)
+y <- x + x2 + x3 + rnorm(n, sd = .1)
+e <- function(a, b) a -  sum( a * b ) / sum( b ^ 2) * b
+ey <- e(e(y, x2), e(x3, x2))
+ex <- e(e(x, x2), e(x3, x2))
+sum(ey * ex) / sum(ex ^ 2)
+
[1] 0.9943411
+
coef(lm(y ~ x + x2 + x3 - 1)) #the -1 removes the intercept term
+
        x        x2        x3 
+0.9943411 0.9922047 1.0027025 
+
+
+
+

Showing that order doesn’t matter

+
ey <- e(e(y, x3), e(x2, x3))
+ex <- e(e(x, x3), e(x2, x3))
+sum(ey * ex) / sum(ex ^ 2)
+
[1] 0.9943411
+
coef(lm(y ~ x + x2 + x3 - 1)) #the -1 removes the intercept term
+
        x        x2        x3 
+0.9943411 0.9922047 1.0027025 
+
+
+

Residuals again

+
ey <- resid(lm(y ~ x2 + x3 - 1))
+ex <- resid(lm(x ~ x2 + x3 - 1))
+sum(ey * ex) / sum(ex ^ 2)
+
[1] 0.9943411
+
coef(lm(y ~ x + x2 + x3 - 1)) #the -1 removes the intercept term
+
        x        x2        x3 
+0.9943411 0.9922047 1.0027025 
+
+
+

Interpretation of the coeficient

+

\[E[Y | X_1 = x_1, \ldots, X_p = x_p] = \sum_{k=1}^p x_{k} \beta_k\] So that \[ +E[Y | X_1 = x_1 + 1, \ldots, X_p = x_p] - E[Y | X_1 = x_1, \ldots, X_p = x_p]\] \[= (x_1 + 1) \beta_1 + \sum_{k=2}^p x_{k}+ \sum_{k=1}^p x_{k} \beta_k = \beta_1 \] So that the interpretation of a multivariate regression coefficient is the expected change in the response per unit change in the regressor, holding all of the other regressors fixed.

+

In the next lecture, we’ll do examples and go over context-specific interpretations.

+
+
+

Fitted values, residuals and residual variation

+

All of our SLR quantities can be extended to linear models * Model \(Y_i = \sum_{k=1}^p X_{ik} \beta_{k} + \epsilon_{i}\) where \(\epsilon_i \sim N(0, \sigma^2)\) * Fitted responses \(\hat Y_i = \sum_{k=1}^p X_{ik} \hat \beta_{k}\) * Residuals \(e_i = Y_i - \hat Y_i\) * Variance estimate \(\hat \sigma^2 = \frac{1}{n-p} \sum_{i=1}^n e_i ^2\) * To get predicted responses at new values, \(x_1, \ldots, x_p\), simply plug them into the linear model \(\sum_{k=1}^p x_{k} \hat \beta_{k}\) * Coefficients have standard errors, \(\hat \sigma_{\hat \beta_k}\), and \(\frac{\hat \beta_k - \beta_k}{\hat \sigma_{\hat \beta_k}}\) follows a \(T\) distribution with \(n-p\) degrees of freedom. * Predicted responses have standard errors and we can calculate predicted and expected response intervals.

+
+
+

Linear models

+
    +
  • Linear models are the single most important applied statistical and machine learning techniqe, by far.
  • +
  • Some amazing things that you can accomplish with linear models
  • +
  • Decompose a signal into its harmonics.
  • +
  • Flexibly fit complicated functions.
  • +
  • Fit factor variables as predictors.
  • +
  • Uncover complex multivariate relationships with the response.
  • +
  • Build accurate prediction models.
  • +
+
+ + + + +
+ + + + + + + + diff --git a/07_RegressionModels/02_02_multivariateExamples/index.html b/07_RegressionModels/02_02_multivariateExamples/index.html index ecc8a4389..b29337539 100644 --- a/07_RegressionModels/02_02_multivariateExamples/index.html +++ b/07_RegressionModels/02_02_multivariateExamples/index.html @@ -1,1024 +1,554 @@ - - - - Multivariable regression examples - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

Multivariable regression examples

-

Regression Models

-

Brian Caffo, Jeff Leek and Roger Peng
Johns Hopkins Bloomberg School of Public Health

-
-
-
- - - - -
-

Swiss fertility data

-
-
-
library(datasets); data(swiss); require(stats); require(graphics)
-pairs(swiss, panel = panel.smooth, main = "Swiss data", col = 3 + (swiss$Catholic > 50))
-
- -
plot of chunk unnamed-chunk-1
- -
- -
- - -
-

?swiss

-
-
-

Description

- -

Standardized fertility measure and socio-economic indicators for each of 47 French-speaking provinces of Switzerland at about 1888.

- -

A data frame with 47 observations on 6 variables, each of which is in percent, i.e., in [0, 100].

- -
    -
  • [,1] Fertility Ig, ‘ common standardized fertility measure’
  • -
  • [,2] Agriculture % of males involved in agriculture as occupation
  • -
  • [,3] Examination % draftees receiving highest mark on army examination
  • -
  • [,4] Education % education beyond primary school for draftees.
  • -
  • [,5] Catholic % ‘catholic’ (as opposed to ‘protestant’).
  • -
  • [,6] Infant.Mortality live births who live less than 1 year.
  • -
- -

All variables but ‘Fertility’ give proportions of the population.

- -
- -
- - -
-

Calling lm

-
-
-

summary(lm(Fertility ~ . , data = swiss))

- -
                 Estimate Std. Error t value  Pr(>|t|)
-(Intercept)       66.9152   10.70604   6.250 1.906e-07
-Agriculture       -0.1721    0.07030  -2.448 1.873e-02
-Examination       -0.2580    0.25388  -1.016 3.155e-01
-Education         -0.8709    0.18303  -4.758 2.431e-05
-Catholic           0.1041    0.03526   2.953 5.190e-03
-Infant.Mortality   1.0770    0.38172   2.822 7.336e-03
-
- -
- -
- - -
-

Example interpretation

-
-
-
    -
  • Agriculture is expressed in percentages (0 - 100)
  • -
  • Estimate is -0.1721.
  • -
  • We estimate an expected 0.17 decrease in standardized fertility for every 1\% increase in percentage of males involved in agriculture in holding the remaining variables constant.
  • -
  • The t-test for \(H_0: \beta_{Agri} = 0\) versus \(H_a: \beta_{Agri} \neq 0\) is significant.
  • -
  • Interestingly, the unadjusted estimate is
  • -
- -
summary(lm(Fertility ~ Agriculture, data = swiss))$coefficients
-
- -
            Estimate Std. Error t value  Pr(>|t|)
-(Intercept)  60.3044    4.25126  14.185 3.216e-18
-Agriculture   0.1942    0.07671   2.532 1.492e-02
-
- -
- -
- - -
-

How can adjustment reverse the sign of an effect? Let's try a simulation.

- -
n <- 100; x2 <- 1 : n; x1 <- .01 * x2 + runif(n, -.1, .1); y = -x1 + x2 + rnorm(n, sd = .01)
-summary(lm(y ~ x1))$coef
-
- -
            Estimate Std. Error t value  Pr(>|t|)
-(Intercept)    1.618      1.200   1.349 1.806e-01
-x1            95.854      2.058  46.579 1.153e-68
-
- -
summary(lm(y ~ x1 + x2))$coef
-
- -
              Estimate Std. Error   t value   Pr(>|t|)
-(Intercept)  0.0003683  0.0020141    0.1829  8.553e-01
-x1          -1.0215256  0.0166372  -61.4001  1.922e-79
-x2           1.0001909  0.0001681 5950.1818 1.369e-271
-
- -
- -
- - -
-
plot of chunk unnamed-chunk-5
- -
- -
- - -
-

Back to this data set

-
-
-
    -
  • The sign reverses itself with the inclusion of Examination and Education, but of which are negatively correlated with Agriculture.
  • -
  • The percent of males in the province working in agriculture is negatively related to educational attainment (correlation of -0.6395) and Education and Examination (correlation of 0.6984) are obviously measuring similar things. - -
      -
    • Is the positive marginal an artifact for not having accounted for, say, Education level? (Education does have a stronger effect, by the way.)
    • -
  • -
  • At the minimum, anyone claiming that provinces that are more agricultural have higher fertility rates would immediately be open to criticism.
  • -
- -
- -
- - -
-

What if we include an unnecessary variable?

-
-
-

z adds no new linear information, since it's a linear -combination of variables already included. R just drops -terms that are linear combinations of other terms.

- -
z <- swiss$Agriculture + swiss$Education
-lm(Fertility ~ . + z, data = swiss)
-
- -

-Call:
-lm(formula = Fertility ~ . + z, data = swiss)
-
-Coefficients:
-     (Intercept)       Agriculture       Examination         Education          Catholic  
-          66.915            -0.172            -0.258            -0.871             0.104  
-Infant.Mortality                 z  
-           1.077                NA  
-
- -
- -
- - -
-

Dummy variables are smart

-
-
-
    -
  • Consider the linear model -\[ -Y_i = \beta_0 + X_{i1} \beta_1 + \epsilon_{i} -\] -where each \(X_{i1}\) is binary so that it is a 1 if measurement \(i\) is in a group and 0 otherwise. (Treated versus not in a clinical trial, for example.)
  • -
  • Then for people in the group \(E[Y_i] = \beta_0 + \beta_1\)
  • -
  • And for people not in the group \(E[Y_i] = \beta_0\)
  • -
  • The LS fits work out to be \(\hat \beta_0 + \hat \beta_1\) is the mean for those in the group and \(\hat \beta_0\) is the mean for those not in the group.
  • -
  • \(\beta_1\) is interpretted as the increase or decrease in the mean comparing those in the group to those not.
  • -
  • Note including a binary variable that is 1 for those not in the group would be redundant. It would create three parameters to describe two means.
  • -
- -
- -
- - -
-

More than 2 levels

-
-
-
    -
  • Consider a multilevel factor level. For didactic reasons, let's say a three level factor (example, US political party affiliation: Republican, Democrat, Independent)
  • -
  • \(Y_i = \beta_0 + X_{i1} \beta_1 + X_{i2} \beta_2 + \epsilon_i\).
  • -
  • \(X_{i1}\) is 1 for Republicans and 0 otherwise.
  • -
  • \(X_{i2}\) is 1 for Democrats and 0 otherwise.
  • -
  • If \(i\) is Republican \(E[Y_i] = \beta_0 +\beta_1\)
  • -
  • If \(i\) is Democrat \(E[Y_i] = \beta_0 + \beta_2\).
  • -
  • If \(i\) is Independent \(E[Y_i] = \beta_0\).
  • -
  • \(\beta_1\) compares Republicans to Independents.
  • -
  • \(\beta_2\) compares Democrats to Independents.
  • -
  • \(\beta_1 - \beta_2\) compares Republicans to Democrats.
  • -
  • (Choice of reference category changes the interpretation.)
  • -
- -
- -
- - -
-

Insect Sprays

-
-
-
plot of chunk unnamed-chunk-7
- -
- -
- - -
-

Linear model fit, group A is the reference

-
-
-
summary(lm(count ~ spray, data = InsectSprays))$coef
-
- -
            Estimate Std. Error t value  Pr(>|t|)
-(Intercept)  14.5000      1.132 12.8074 1.471e-19
-sprayB        0.8333      1.601  0.5205 6.045e-01
-sprayC      -12.4167      1.601 -7.7550 7.267e-11
-sprayD       -9.5833      1.601 -5.9854 9.817e-08
-sprayE      -11.0000      1.601 -6.8702 2.754e-09
-sprayF        2.1667      1.601  1.3532 1.806e-01
-
- -
- -
- - -
-

Hard coding the dummy variables

-
-
-
summary(lm(count ~ 
-             I(1 * (spray == 'B')) + I(1 * (spray == 'C')) + 
-             I(1 * (spray == 'D')) + I(1 * (spray == 'E')) +
-             I(1 * (spray == 'F'))
-           , data = InsectSprays))$coef
-
- -
                      Estimate Std. Error t value  Pr(>|t|)
-(Intercept)            14.5000      1.132 12.8074 1.471e-19
-I(1 * (spray == "B"))   0.8333      1.601  0.5205 6.045e-01
-I(1 * (spray == "C")) -12.4167      1.601 -7.7550 7.267e-11
-I(1 * (spray == "D"))  -9.5833      1.601 -5.9854 9.817e-08
-I(1 * (spray == "E")) -11.0000      1.601 -6.8702 2.754e-09
-I(1 * (spray == "F"))   2.1667      1.601  1.3532 1.806e-01
-
- -
- -
- - -
-

What if we include all 6?

-
-
-
lm(count ~ 
-   I(1 * (spray == 'B')) + I(1 * (spray == 'C')) +  
-   I(1 * (spray == 'D')) + I(1 * (spray == 'E')) +
-   I(1 * (spray == 'F')) + I(1 * (spray == 'A')), data = InsectSprays)
-
- -

-Call:
-lm(formula = count ~ I(1 * (spray == "B")) + I(1 * (spray == 
-    "C")) + I(1 * (spray == "D")) + I(1 * (spray == "E")) + I(1 * 
-    (spray == "F")) + I(1 * (spray == "A")), data = InsectSprays)
-
-Coefficients:
-          (Intercept)  I(1 * (spray == "B"))  I(1 * (spray == "C"))  I(1 * (spray == "D"))  
-               14.500                  0.833                -12.417                 -9.583  
-I(1 * (spray == "E"))  I(1 * (spray == "F"))  I(1 * (spray == "A"))  
-              -11.000                  2.167                     NA  
-
- -
- -
- - -
-

What if we omit the intercept?

-
-
-
summary(lm(count ~ spray - 1, data = InsectSprays))$coef
-
- -
       Estimate Std. Error t value  Pr(>|t|)
-sprayA   14.500      1.132  12.807 1.471e-19
-sprayB   15.333      1.132  13.543 1.002e-20
-sprayC    2.083      1.132   1.840 7.024e-02
-sprayD    4.917      1.132   4.343 4.953e-05
-sprayE    3.500      1.132   3.091 2.917e-03
-sprayF   16.667      1.132  14.721 1.573e-22
-
- -
unique(ave(InsectSprays$count, InsectSprays$spray))
-
- -
[1] 14.500 15.333  2.083  4.917  3.500 16.667
-
- -
- -
- - -
-

Summary

-
-
-
    -
  • If we treat Spray as a factor, R includes an intercept and omits the alphabetically first level of the factor. - -
      -
    • All t-tests are for comparisons of Sprays versus Spray A.
    • -
    • Emprirical mean for A is the intercept.
    • -
    • Other group means are the itc plus their coefficient.
    • -
  • -
  • If we omit an intercept, then it includes terms for all levels of the factor. - -
      -
    • Group means are the coefficients.
    • -
    • Tests are tests of whether the groups are different than zero. (Are the expected counts zero for that spray.)
    • -
  • -
  • If we want comparisons between, Spray B and C, say we could refit the model with C (or B) as the reference level.
  • -
- -
- -
- - -
-

Reordering the levels

-
-
-
spray2 <- relevel(InsectSprays$spray, "C")
-summary(lm(count ~ spray2, data = InsectSprays))$coef
-
- -
            Estimate Std. Error t value  Pr(>|t|)
-(Intercept)    2.083      1.132  1.8401 7.024e-02
-spray2A       12.417      1.601  7.7550 7.267e-11
-spray2B       13.250      1.601  8.2755 8.510e-12
-spray2D        2.833      1.601  1.7696 8.141e-02
-spray2E        1.417      1.601  0.8848 3.795e-01
-spray2F       14.583      1.601  9.1083 2.794e-13
-
- -
- -
- - -
-

Doing it manually

-
-
-

Equivalently -\[Var(\hat \beta_B - \hat \beta_C) = Var(\hat \beta_B) + Var(\hat \beta_C) - 2 Cov(\hat \beta_B, \hat \beta_C)\]

- -
fit <- lm(count ~ spray, data = InsectSprays) #A is ref
-bbmbc <- coef(fit)[2] - coef(fit)[3] #B - C
-temp <- summary(fit) 
-se <- temp$sigma * sqrt(temp$cov.unscaled[2, 2] + temp$cov.unscaled[3,3] - 2 *temp$cov.unscaled[2,3])
-t <- (bbmbc) / se
-p <- pt(-abs(t), df = fit$df)
-out <- c(bbmbc, se, t, p)
-names(out) <- c("B - C", "SE", "T", "P")
-round(out, 3)
-
- -
 B - C     SE      T      P 
-13.250  1.601  8.276  0.000 
-
- -
- -
- - -
-

Other thoughts on this data

-
-
-
    -
  • Counts are bounded from below by 0, violates the assumption of normality of the errors. - -
      -
    • Also there are counts near zero, so both the actual assumption and the intent of the assumption are violated.
    • -
  • -
  • Variance does not appear to be constant.
  • -
  • Perhaps taking logs of the counts would help. - -
      -
    • There are 0 counts, so maybe log(Count + 1)
    • -
  • -
  • Also, we'll cover Poisson GLMs for fitting count data.
  • -
- -
- -
- - -
-

Example - Millenium Development Goal 1

-
- - -
- - -
-

WHO childhood hunger data

-
-
-
#download.file("http://apps.who.int/gho/athena/data/GHO/WHOSIS_000008.csv?profile=text&filter=COUNTRY:*;SEX:*","hunger.csv",method="curl")
-hunger <- read.csv("hunger.csv")
-hunger <- hunger[hunger$Sex!="Both sexes",]
-head(hunger)
-
- -
                               Indicator Data.Source PUBLISH.STATES Year            WHO.region
-1 Children aged <5 years underweight (%) NLIS_310044      Published 1986                Africa
-2 Children aged <5 years underweight (%) NLIS_310233      Published 1990              Americas
-3 Children aged <5 years underweight (%) NLIS_312902      Published 2005              Americas
-5 Children aged <5 years underweight (%) NLIS_312522      Published 2002 Eastern Mediterranean
-6 Children aged <5 years underweight (%) NLIS_312955      Published 2008                Africa
-8 Children aged <5 years underweight (%) NLIS_312963      Published 2008                Africa
-        Country    Sex Display.Value Numeric Low High Comments
-1       Senegal   Male          19.3    19.3  NA   NA       NA
-2      Paraguay   Male           2.2     2.2  NA   NA       NA
-3     Nicaragua   Male           5.3     5.3  NA   NA       NA
-5        Jordan Female           3.2     3.2  NA   NA       NA
-6 Guinea-Bissau Female          17.0    17.0  NA   NA       NA
-8         Ghana   Male          15.7    15.7  NA   NA       NA
-
- -
- -
- - -
-

Plot percent hungry versus time

-
-
-
lm1 <- lm(hunger$Numeric ~ hunger$Year)
-plot(hunger$Year,hunger$Numeric,pch=19,col="blue")
-
- -
plot of chunk unnamed-chunk-14
- -
- -
- - -
-

Remember the linear model

-
-
-

\[Hu_i = b_0 + b_1 Y_i + e_i\]

- -

\(b_0\) = percent hungry at Year 0

- -

\(b_1\) = decrease in percent hungry per year

- -

\(e_i\) = everything we didn't measure

- -
- -
- - -
-

Add the linear model

-
-
-
lm1 <- lm(hunger$Numeric ~ hunger$Year)
-plot(hunger$Year,hunger$Numeric,pch=19,col="blue")
-lines(hunger$Year,lm1$fitted,lwd=3,col="darkgrey")
-
- -
plot of chunk unnamed-chunk-15
- -
- -
- - -
-

Color by male/female

-
-
-
plot(hunger$Year,hunger$Numeric,pch=19)
-points(hunger$Year,hunger$Numeric,pch=19,col=((hunger$Sex=="Male")*1+1))
-
- -
plot of chunk unnamed-chunk-16
- -
- -
- - -
-

Now two lines

-
-
-

\[HuF_i = bf_0 + bf_1 YF_i + ef_i\]

- -

\(bf_0\) = percent of girls hungry at Year 0

- -

\(bf_1\) = decrease in percent of girls hungry per year

- -

\(ef_i\) = everything we didn't measure

- -

\[HuM_i = bm_0 + bm_1 YM_i + em_i\]

- -

\(bm_0\) = percent of boys hungry at Year 0

- -

\(bm_1\) = decrease in percent of boys hungry per year

- -

\(em_i\) = everything we didn't measure

- -
- -
- - -
-

Color by male/female

-
-
-
lmM <- lm(hunger$Numeric[hunger$Sex=="Male"] ~ hunger$Year[hunger$Sex=="Male"])
-lmF <- lm(hunger$Numeric[hunger$Sex=="Female"] ~ hunger$Year[hunger$Sex=="Female"])
-plot(hunger$Year,hunger$Numeric,pch=19)
-points(hunger$Year,hunger$Numeric,pch=19,col=((hunger$Sex=="Male")*1+1))
-lines(hunger$Year[hunger$Sex=="Male"],lmM$fitted,col="black",lwd=3)
-lines(hunger$Year[hunger$Sex=="Female"],lmF$fitted,col="red",lwd=3)
-
- -
plot of chunk unnamed-chunk-17
- -
- -
- - -
-

Two lines, same slope

-
-
-

\[Hu_i = b_0 + b_1 \mathbb{1}(Sex_i="Male") + b_2 Y_i + e^*_i\]

- -

\(b_0\) - percent hungry at year zero for females

- -

\(b_0 + b_1\) - percent hungry at year zero for males

- -

\(b_2\) - change in percent hungry (for either males or females) in one year

- -

\(e^*_i\) - everything we didn't measure

- -
- -
- - -
-

Two lines, same slope in R

-
-
-
lmBoth <- lm(hunger$Numeric ~ hunger$Year + hunger$Sex)
-plot(hunger$Year,hunger$Numeric,pch=19)
-points(hunger$Year,hunger$Numeric,pch=19,col=((hunger$Sex=="Male")*1+1))
-abline(c(lmBoth$coeff[1],lmBoth$coeff[2]),col="red",lwd=3)
-abline(c(lmBoth$coeff[1] + lmBoth$coeff[3],lmBoth$coeff[2] ),col="black",lwd=3)
-
- -
plot of chunk unnamed-chunk-18
- -
- -
- - -
-

Two lines, different slopes (interactions)

-
-
-

\[Hu_i = b_0 + b_1 \mathbb{1}(Sex_i="Male") + b_2 Y_i + b_3 \mathbb{1}(Sex_i="Male")\times Y_i + e^+_i\]

- -

\(b_0\) - percent hungry at year zero for females

- -

\(b_0 + b_1\) - percent hungry at year zero for males

- -

\(b_2\) - change in percent hungry (females) in one year

- -

\(b_2 + b_3\) - change in percent hungry (males) in one year

- -

\(e^+_i\) - everything we didn't measure

- -
- -
- - -
-

Two lines, different slopes in R

-
-
-
lmBoth <- lm(hunger$Numeric ~ hunger$Year + hunger$Sex + hunger$Sex*hunger$Year)
-plot(hunger$Year,hunger$Numeric,pch=19)
-points(hunger$Year,hunger$Numeric,pch=19,col=((hunger$Sex=="Male")*1+1))
-abline(c(lmBoth$coeff[1],lmBoth$coeff[2]),col="red",lwd=3)
-abline(c(lmBoth$coeff[1] + lmBoth$coeff[3],lmBoth$coeff[2] +lmBoth$coeff[4]),col="black",lwd=3)
-
- -
plot of chunk lmBothChunk
- -
- -
- - -
-

Two lines, different slopes in R

-
-
-
summary(lmBoth)
-
- -

-Call:
-lm(formula = hunger$Numeric ~ hunger$Year + hunger$Sex + hunger$Sex * 
-    hunger$Year)
-
-Residuals:
-   Min     1Q Median     3Q    Max 
--25.91 -11.25  -1.85   7.09  46.15 
-
-Coefficients:
-                           Estimate Std. Error t value Pr(>|t|)    
-(Intercept)                603.5058   171.0552    3.53  0.00044 ***
-hunger$Year                 -0.2934     0.0855   -3.43  0.00062 ***
-hunger$SexMale              61.9477   241.9086    0.26  0.79795    
-hunger$Year:hunger$SexMale  -0.0300     0.1209   -0.25  0.80402    
----
-Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
-
-Residual standard error: 13.2 on 944 degrees of freedom
-Multiple R-squared:  0.0318,    Adjusted R-squared:  0.0287 
-F-statistic: 10.3 on 3 and 944 DF,  p-value: 1.06e-06
-
- -
- -
- - -
-

Interpretting a continuous interaction

-
-
-

\[ -E[Y_i | X_{1i}=x_1, X_{2i}=x_2] = \beta_0 + \beta_1 x_{1} + \beta_2 x_{2} + \beta_3 x_{1}x_{2} -\] -Holding \(X_2\) constant we have -\[ -E[Y_i | X_{1i}=x_1+1, X_{2i}=x_2]-E[Y_i | X_{1i}=x_1, X_{2i}=x_2] -= \beta_1 + \beta_3 x_{2} -\] -And thus the expected change in \(Y\) per unit change in \(X_1\) holding all else constant is not constant. \(\beta_1\) is the slope when \(x_{2} = 0\). Note further that: -\[ -E[Y_i | X_{1i}=x_1+1, X_{2i}=x_2+1]-E[Y_i | X_{1i}=x_1, X_{2i}=x_2+1] -\] -\[ --E[Y_i | X_{1i}=x_1+1, X_{2i}=x_2]-E[Y_i | X_{1i}=x_1, X_{2i}=x_2] -\] -\[ -=\beta_3 -\] -Thus, \(\beta_3\) is the change in the expected change in \(Y\) per unit change in \(X_1\), per unit change in \(X_2\).

- -

Or, the change in the slope relating \(X_1\) and \(Y\) per unit change in \(X_2\).

- -
- -
- - -
-

Example

-
-
-

\[Hu_i = b_0 + b_1 In_i + b_2 Y_i + b_3 In_i \times Y_i + e^+_i\]

- -

\(b_0\) - percent hungry at year zero for children with whose parents have no income

- -

\(b_1\) - change in percent hungry for each dollar of income in year zero

- -

\(b_2\) - change in percent hungry in one year for children whose parents have no income

- -

\(b_3\) - increased change in percent hungry by year for each dollar of income - e.g. if income is $10,000, then change in percent hungry in one year will be

- -

\[b_2 + 1e4 \times b_3\]

- -

\(e^+_i\) - everything we didn't measure

- -

Lot's of care/caution needed!

- -
- -
- - -
- - - - - - - - - - - - - - - \ No newline at end of file + + + + + + + + + + + + + + +Multivariable regression examples + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+

Swiss fertility data

+
library(datasets); data(swiss); require(stats); require(graphics)
+pairs(swiss, panel = panel.smooth, main = "Swiss data", col = 3 + (swiss$Catholic > 50))
+
+ +
+
+
+

?swiss

+
+

Description

+

Standardized fertility measure and socio-economic indicators for each of 47 French-speaking provinces of Switzerland at about 1888.

+

A data frame with 47 observations on 6 variables, each of which is in percent, i.e., in [0, 100].

+
    +
  • [,1] Fertility Ig, ‘common standardized fertility measure’
  • +
  • [,2] Agriculture % of males involved in agriculture as occupation
  • +
  • [,3] Examination % draftees receiving highest mark on army examination
  • +
  • [,4] Education % education beyond primary school for draftees.
  • +
  • [,5] Catholic % ‘catholic’ (as opposed to ‘protestant’).
  • +
  • [,6] Infant.Mortality live births who live less than 1 year.
  • +
+

All variables but ‘Fertility’ give proportions of the population.

+
+
+
+

Calling lm

+

summary(lm(Fertility ~ . , data = swiss))

+
                   Estimate  Std. Error   t value     Pr(>|t|)
+(Intercept)      66.9151817 10.70603759  6.250229 1.906051e-07
+Agriculture      -0.1721140  0.07030392 -2.448142 1.872715e-02
+Examination      -0.2580082  0.25387820 -1.016268 3.154617e-01
+Education        -0.8709401  0.18302860 -4.758492 2.430605e-05
+Catholic          0.1041153  0.03525785  2.952969 5.190079e-03
+Infant.Mortality  1.0770481  0.38171965  2.821568 7.335715e-03
+
+
+

Example interpretation

+
    +
  • Agriculture is expressed in percentages (0 - 100)
  • +
  • Estimate is -0.1721.
  • +
  • We estimate an expected 0.17 decrease in standardized fertility for every 1% increase in percentage of males involved in agriculture in holding the remaining variables constant.
  • +
  • The t-test for \(H_0: \beta_{Agri} = 0\) versus \(H_a: \beta_{Agri} \neq 0\) is significant.
  • +
  • Interestingly, the unadjusted estimate is
  • +
+
summary(lm(Fertility ~ Agriculture, data = swiss))$coefficients
+
              Estimate Std. Error   t value     Pr(>|t|)
+(Intercept) 60.3043752 4.25125562 14.185074 3.216304e-18
+Agriculture  0.1942017 0.07671176  2.531577 1.491720e-02
+

How can adjustment reverse the sign of an effect? Let’s try a simulation.

+
n <- 100; x2 <- 1 : n; x1 <- .01 * x2 + runif(n, -.1, .1); y = -x1 + x2 + rnorm(n, sd = .01)
+summary(lm(y ~ x1))$coef
+
             Estimate Std. Error   t value     Pr(>|t|)
+(Intercept)  1.940642   1.166905  1.663067 9.949402e-02
+x1          93.576604   1.964035 47.645085 1.377518e-69
+
summary(lm(y ~ x1 + x2))$coef
+
                Estimate   Std. Error     t value      Pr(>|t|)
+(Intercept) -0.002426632 0.0019206367   -1.263452  2.094551e-01
+x1          -0.988644277 0.0158292714  -62.456714  3.824285e-80
+x2           0.999921472 0.0001639474 6099.037839 1.245836e-272
+
+ +
+
+
+

Back to this data set

+
    +
  • The sign reverses itself with the inclusion of Examination and Education, both of which are negatively correlated with Agriculture.
  • +
  • The percent of males in the province working in agriculture is negatively related to educational attainment (correlation of -0.6395225) and Education and Examination (correlation of 0.6984153) are obviously measuring similar things.
  • +
  • Is the positive marginal an artifact for not having accounted for, say, Education level? (Education does have a stronger effect, by the way.)
  • +
  • At the minimum, anyone claiming that provinces that are more agricultural have higher fertility rates would immediately be open to criticism.
  • +
+
+
+

What if we include an unnecessary variable?

+

z adds no new linear information, since it’s a linear combination of variables already included. R just drops terms that are linear combinations of other terms.

+
z <- swiss$Agriculture + swiss$Education
+lm(Fertility ~ . + z, data = swiss)
+

+Call:
+lm(formula = Fertility ~ . + z, data = swiss)
+
+Coefficients:
+     (Intercept)       Agriculture       Examination         Education          Catholic  
+         66.9152           -0.1721           -0.2580           -0.8709            0.1041  
+Infant.Mortality                 z  
+          1.0770                NA  
+
+
+

Dummy variables are smart

+
    +
  • Consider the linear model \[ +Y_i = \beta_0 + X_{i1} \beta_1 + \epsilon_{i} +\] where each \(X_{i1}\) is binary so that it is a 1 if measurement \(i\) is in a group and 0 otherwise. (Treated versus not in a clinical trial, for example.)
  • +
  • Then for people in the group \(E[Y_i] = \beta_0 + \beta_1\)
  • +
  • And for people not in the group \(E[Y_i] = \beta_0\)
  • +
  • The LS fits work out to be \(\hat \beta_0 + \hat \beta_1\) is the mean for those in the group and \(\hat \beta_0\) is the mean for those not in the group.
  • +
  • \(\beta_1\) is interpretted as the increase or decrease in the mean comparing those in the group to those not.
  • +
  • Note including a binary variable that is 1 for those not in the group would be redundant. It would create three parameters to describe two means.
  • +
+
+
+

More than 2 levels

+
    +
  • Consider a multilevel factor level. For didactic reasons, let’s say a three level factor (example, US political party affiliation: Republican, Democrat, Independent)
  • +
  • \(Y_i = \beta_0 + X_{i1} \beta_1 + X_{i2} \beta_2 + \epsilon_i\).
  • +
  • \(X_{i1}\) is 1 for Republicans and 0 otherwise.
  • +
  • \(X_{i2}\) is 1 for Democrats and 0 otherwise.
  • +
  • If \(i\) is Republican \(E[Y_i] = \beta_0 +\beta_1\)
  • +
  • If \(i\) is Democrat \(E[Y_i] = \beta_0 + \beta_2\).
  • +
  • If \(i\) is Independent \(E[Y_i] = \beta_0\).
  • +
  • \(\beta_1\) compares Republicans to Independents.
  • +
  • \(\beta_2\) compares Democrats to Independents.
  • +
  • \(\beta_1 - \beta_2\) compares Republicans to Democrats.
  • +
  • (Choice of reference category changes the interpretation.)
  • +
+
+
+

Insect Sprays

+
+ +
+
+
+

Linear model fit, group A is the reference

+
summary(lm(count ~ spray, data = InsectSprays))$coef
+
               Estimate Std. Error    t value     Pr(>|t|)
+(Intercept)  14.5000000   1.132156 12.8074279 1.470512e-19
+sprayB        0.8333333   1.601110  0.5204724 6.044761e-01
+sprayC      -12.4166667   1.601110 -7.7550382 7.266893e-11
+sprayD       -9.5833333   1.601110 -5.9854322 9.816910e-08
+sprayE      -11.0000000   1.601110 -6.8702352 2.753922e-09
+sprayF        2.1666667   1.601110  1.3532281 1.805998e-01
+
+
+

Hard coding the dummy variables

+
summary(lm(count ~ 
+             I(1 * (spray == 'B')) + I(1 * (spray == 'C')) + 
+             I(1 * (spray == 'D')) + I(1 * (spray == 'E')) +
+             I(1 * (spray == 'F'))
+           , data = InsectSprays))$coef
+
                         Estimate Std. Error    t value     Pr(>|t|)
+(Intercept)            14.5000000   1.132156 12.8074279 1.470512e-19
+I(1 * (spray == "B"))   0.8333333   1.601110  0.5204724 6.044761e-01
+I(1 * (spray == "C")) -12.4166667   1.601110 -7.7550382 7.266893e-11
+I(1 * (spray == "D"))  -9.5833333   1.601110 -5.9854322 9.816910e-08
+I(1 * (spray == "E")) -11.0000000   1.601110 -6.8702352 2.753922e-09
+I(1 * (spray == "F"))   2.1666667   1.601110  1.3532281 1.805998e-01
+
+
+

What if we include all 6?

+
lm(count ~ 
+   I(1 * (spray == 'B')) + I(1 * (spray == 'C')) +  
+   I(1 * (spray == 'D')) + I(1 * (spray == 'E')) +
+   I(1 * (spray == 'F')) + I(1 * (spray == 'A')), data = InsectSprays)
+

+Call:
+lm(formula = count ~ I(1 * (spray == "B")) + I(1 * (spray == 
+    "C")) + I(1 * (spray == "D")) + I(1 * (spray == "E")) + I(1 * 
+    (spray == "F")) + I(1 * (spray == "A")), data = InsectSprays)
+
+Coefficients:
+          (Intercept)  I(1 * (spray == "B"))  I(1 * (spray == "C"))  I(1 * (spray == "D"))  
+              14.5000                 0.8333               -12.4167                -9.5833  
+I(1 * (spray == "E"))  I(1 * (spray == "F"))  I(1 * (spray == "A"))  
+             -11.0000                 2.1667                     NA  
+
+
+

What if we omit the intercept?

+
summary(lm(count ~ spray - 1, data = InsectSprays))$coef
+
        Estimate Std. Error   t value     Pr(>|t|)
+sprayA 14.500000   1.132156 12.807428 1.470512e-19
+sprayB 15.333333   1.132156 13.543487 1.001994e-20
+sprayC  2.083333   1.132156  1.840148 7.024334e-02
+sprayD  4.916667   1.132156  4.342749 4.953047e-05
+sprayE  3.500000   1.132156  3.091448 2.916794e-03
+sprayF 16.666667   1.132156 14.721181 1.573471e-22
+
unique(ave(InsectSprays$count, InsectSprays$spray))
+
[1] 14.500000 15.333333  2.083333  4.916667  3.500000 16.666667
+
+
+

Summary

+
    +
  • If we treat Spray as a factor, R includes an intercept and omits the alphabetically first level of the factor.
  • +
  • All t-tests are for comparisons of Sprays versus Spray A.
  • +
  • Emprirical mean for A is the intercept.
  • +
  • Other group means are the itc plus their coefficient.
  • +
  • If we omit an intercept, then it includes terms for all levels of the factor.
  • +
  • Group means are the coefficients.
  • +
  • Tests are tests of whether the groups are different than zero. (Are the expected counts zero for that spray.)
  • +
  • If we want comparisons between, Spray B and C, say we could refit the model with C (or B) as the reference level.
  • +
+
+
+

Reordering the levels

+
spray2 <- relevel(InsectSprays$spray, "C")
+summary(lm(count ~ spray2, data = InsectSprays))$coef
+
             Estimate Std. Error  t value     Pr(>|t|)
+(Intercept)  2.083333   1.132156 1.840148 7.024334e-02
+spray2A     12.416667   1.601110 7.755038 7.266893e-11
+spray2B     13.250000   1.601110 8.275511 8.509776e-12
+spray2D      2.833333   1.601110 1.769606 8.141205e-02
+spray2E      1.416667   1.601110 0.884803 3.794750e-01
+spray2F     14.583333   1.601110 9.108266 2.794343e-13
+
+
+

Doing it manually

+

Equivalently \[Var(\hat \beta_B - \hat \beta_C) = Var(\hat \beta_B) + Var(\hat \beta_C) - 2 Cov(\hat \beta_B, \hat \beta_C)\]

+
fit <- lm(count ~ spray, data = InsectSprays) #A is ref
+bbmbc <- coef(fit)[2] - coef(fit)[3] #B - C
+temp <- summary(fit) 
+se <- temp$sigma * sqrt(temp$cov.unscaled[2, 2] + temp$cov.unscaled[3,3] - 2 *temp$cov.unscaled[2,3])
+t <- (bbmbc) / se
+p <- pt(-abs(t), df = fit$df)
+out <- c(bbmbc, se, t, p)
+names(out) <- c("B - C", "SE", "T", "P")
+round(out, 3)
+
 B - C     SE      T      P 
+13.250  1.601  8.276  0.000 
+
+
+

Other thoughts on this data

+
    +
  • Counts are bounded from below by 0, violates the assumption of normality of the errors.
  • +
  • Also there are counts near zero, so both the actual assumption and the intent of the assumption are violated.
  • +
  • Variance does not appear to be constant.
  • +
  • Perhaps taking logs of the counts would help.
  • +
  • There are 0 counts, so maybe log(Count + 1)
  • +
  • Also, we’ll cover Poisson GLMs for fitting count data.
  • +
+
+ +
+

WHO childhood hunger data

+
#download.file("http://apps.who.int/gho/athena/data/GHO/WHOSIS_000008.csv?profile=text&filter=COUNTRY:*;SEX:*","hunger.csv",method="curl")
+hunger <- read.csv("hunger.csv")
+hunger <- hunger[hunger$Sex!="Both sexes",]
+head(hunger)
+
                               Indicator Data.Source PUBLISH.STATES Year            WHO.region
+1 Children aged <5 years underweight (%) NLIS_310044      Published 1986                Africa
+2 Children aged <5 years underweight (%) NLIS_310233      Published 1990              Americas
+3 Children aged <5 years underweight (%) NLIS_312902      Published 2005              Americas
+5 Children aged <5 years underweight (%) NLIS_312522      Published 2002 Eastern Mediterranean
+6 Children aged <5 years underweight (%) NLIS_312955      Published 2008                Africa
+8 Children aged <5 years underweight (%) NLIS_312963      Published 2008                Africa
+        Country    Sex Display.Value Numeric Low High Comments
+1       Senegal   Male          19.3    19.3  NA   NA       NA
+2      Paraguay   Male           2.2     2.2  NA   NA       NA
+3     Nicaragua   Male           5.3     5.3  NA   NA       NA
+5        Jordan Female           3.2     3.2  NA   NA       NA
+6 Guinea-Bissau Female          17.0    17.0  NA   NA       NA
+8         Ghana   Male          15.7    15.7  NA   NA       NA
+
+
+

Plot percent hungry versus time

+
lm1 <- lm(hunger$Numeric ~ hunger$Year)
+plot(hunger$Year,hunger$Numeric,pch=19,col="blue")
+
+ +
+
+
+

Remember the linear model

+

\[Hu_i = b_0 + b_1 Y_i + e_i\]

+

\(b_0\) = percent hungry at Year 0

+

\(b_1\) = decrease in percent hungry per year

+

\(e_i\) = everything we didn’t measure

+
+
+

Add the linear model

+
lm1 <- lm(hunger$Numeric ~ hunger$Year)
+plot(hunger$Year,hunger$Numeric,pch=19,col="blue")
+lines(hunger$Year,lm1$fitted,lwd=3,col="darkgrey")
+
+ +
+
+
+

Color by male/female

+
plot(hunger$Year,hunger$Numeric,pch=19)
+points(hunger$Year,hunger$Numeric,pch=19,col=((hunger$Sex=="Male")*1+1))
+
+ +
+
+
+

Now two lines

+

\[HuF_i = bf_0 + bf_1 YF_i + ef_i\]

+

\(bf_0\) = percent of girls hungry at Year 0

+

\(bf_1\) = decrease in percent of girls hungry per year

+

\(ef_i\) = everything we didn’t measure

+

\[HuM_i = bm_0 + bm_1 YM_i + em_i\]

+

\(bm_0\) = percent of boys hungry at Year 0

+

\(bm_1\) = decrease in percent of boys hungry per year

+

\(em_i\) = everything we didn’t measure

+
+
+

Color by male/female

+
lmM <- lm(hunger$Numeric[hunger$Sex=="Male"] ~ hunger$Year[hunger$Sex=="Male"])
+lmF <- lm(hunger$Numeric[hunger$Sex=="Female"] ~ hunger$Year[hunger$Sex=="Female"])
+plot(hunger$Year,hunger$Numeric,pch=19)
+points(hunger$Year,hunger$Numeric,pch=19,col=((hunger$Sex=="Male")*1+1))
+lines(hunger$Year[hunger$Sex=="Male"],lmM$fitted,col="black",lwd=3)
+lines(hunger$Year[hunger$Sex=="Female"],lmF$fitted,col="red",lwd=3)
+
+ +
+
+
+

Two lines, same slope

+

\[Hu_i = b_0 + b_1 \mathbb{1}(Sex_i="Male") + b_2 Y_i + e^*_i\]

+

\(b_0\) - percent hungry at year zero for females

+

\(b_0 + b_1\) - percent hungry at year zero for males

+

\(b_2\) - change in percent hungry (for either males or females) in one year

+

\(e^*_i\) - everything we didn’t measure

+
+
+

Two lines, same slope in R

+
lmBoth <- lm(hunger$Numeric ~ hunger$Year + hunger$Sex)
+plot(hunger$Year,hunger$Numeric,pch=19)
+points(hunger$Year,hunger$Numeric,pch=19,col=((hunger$Sex=="Male")*1+1))
+abline(c(lmBoth$coeff[1],lmBoth$coeff[2]),col="red",lwd=3)
+abline(c(lmBoth$coeff[1] + lmBoth$coeff[3],lmBoth$coeff[2] ),col="black",lwd=3)
+
+ +
+
+
+

Two lines, different slopes (interactions)

+

\[Hu_i = b_0 + b_1 \mathbb{1}(Sex_i="Male") + b_2 Y_i + b_3 \mathbb{1}(Sex_i="Male")\times Y_i + e^+_i\]

+

\(b_0\) - percent hungry at year zero for females

+

\(b_0 + b_1\) - percent hungry at year zero for males

+

\(b_2\) - change in percent hungry (females) in one year

+

\(b_2 + b_3\) - change in percent hungry (males) in one year

+

\(e^+_i\) - everything we didn’t measure

+
+
+

Two lines, different slopes in R

+
lmBoth <- lm(hunger$Numeric ~ hunger$Year + hunger$Sex + hunger$Sex*hunger$Year)
+plot(hunger$Year,hunger$Numeric,pch=19)
+points(hunger$Year,hunger$Numeric,pch=19,col=((hunger$Sex=="Male")*1+1))
+abline(c(lmBoth$coeff[1],lmBoth$coeff[2]),col="red",lwd=3)
+abline(c(lmBoth$coeff[1] + lmBoth$coeff[3],lmBoth$coeff[2] +lmBoth$coeff[4]),col="black",lwd=3)
+
+ +
+
+
+

Two lines, different slopes in R

+
summary(lmBoth)
+

+Call:
+lm(formula = hunger$Numeric ~ hunger$Year + hunger$Sex + hunger$Sex * 
+    hunger$Year)
+
+Residuals:
+    Min      1Q  Median      3Q     Max 
+-25.913 -11.248  -1.853   7.087  46.146 
+
+Coefficients:
+                            Estimate Std. Error t value Pr(>|t|)    
+(Intercept)                603.50580  171.05519   3.528 0.000439 ***
+hunger$Year                 -0.29340    0.08547  -3.433 0.000623 ***
+hunger$SexMale              61.94772  241.90858   0.256 0.797946    
+hunger$Year:hunger$SexMale  -0.03000    0.12087  -0.248 0.804022    
+---
+Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
+
+Residual standard error: 13.21 on 944 degrees of freedom
+Multiple R-squared:  0.03181,   Adjusted R-squared:  0.02874 
+F-statistic: 10.34 on 3 and 944 DF,  p-value: 1.064e-06
+
+
+

Interpretting a continuous interaction

+

\[ +E[Y_i | X_{1i}=x_1, X_{2i}=x_2] = \beta_0 + \beta_1 x_{1} + \beta_2 x_{2} + \beta_3 x_{1}x_{2} +\] Holding \(X_2\) constant we have \[ +E[Y_i | X_{1i}=x_1+1, X_{2i}=x_2]-E[Y_i | X_{1i}=x_1, X_{2i}=x_2] += \beta_1 + \beta_3 x_{2} +\] And thus the expected change in \(Y\) per unit change in \(X_1\) holding all else constant is not constant. \(\beta_1\) is the slope when \(x_{2} = 0\). Note further that: \[ +E[Y_i | X_{1i}=x_1+1, X_{2i}=x_2+1]-E[Y_i | X_{1i}=x_1, X_{2i}=x_2+1] +\] \[ +-E[Y_i | X_{1i}=x_1+1, X_{2i}=x_2]-E[Y_i | X_{1i}=x_1, X_{2i}=x_2] +\] \[ +=\beta_3 +\] Thus, \(\beta_3\) is the change in the expected change in \(Y\) per unit change in \(X_1\), per unit change in \(X_2\).

+

Or, the change in the slope relating \(X_1\) and \(Y\) per unit change in \(X_2\).

+
+
+

Example

+

\[Hu_i = b_0 + b_1 In_i + b_2 Y_i + b_3 In_i \times Y_i + e^+_i\]

+

\(b_0\) - percent hungry at year zero for children with whose parents have no income

+

\(b_1\) - change in percent hungry for each dollar of income in year zero

+

\(b_2\) - change in percent hungry in one year for children whose parents have no income

+

\(b_3\) - increased change in percent hungry by year for each dollar of income - e.g. if income is $10,000, then change in percent hungry in one year will be

+

\[b_2 + 1e4 \times b_3\]

+

\(e^+_i\) - everything we didn’t measure

+

Lot’s of care/caution needed!

+
+ + + + +
+ + + + + + + + diff --git a/07_RegressionModels/02_03_adjustment/index.html b/07_RegressionModels/02_03_adjustment/index.html index 433c18736..883cbc91f 100644 --- a/07_RegressionModels/02_03_adjustment/index.html +++ b/07_RegressionModels/02_03_adjustment/index.html @@ -1,61 +1,130 @@ - + + + - Multivariable regression - - - - - - - - - - - - - - - - - - - - + + + + + + + + + +Multivariable regression + + + + + + + + + + + + + + + + + + - - - - - - - - - - - -
-

Multivariable regression

-

Regression

-

Brian Caffo, Jeff Leek, Roger Peng
Johns Hopkins Bloomberg School of Public Health

-
-
- - - -
-

Consider the following simulated data

-
-
-

Code for the first plot, rest omitted -(See the git repo for the rest of the code.)

+ + + + + +
+ + + + + + + + + + + + + + + +
+

Consider the following simulated data

+

Code for the first plot, rest omitted (See the git repo for the rest of the code.)

n <- 100; t <- rep(c(0, 1), c(n/2, n/2)); x <- c(runif(n/2), runif(n/2)); 
 beta0 <- 0; beta1 <- 2; tau <- 1; sigma <- .2
 y <- beta0 + x * beta1 + t * tau + rnorm(n, sd = sigma)
@@ -67,293 +136,165 @@ 

Consider the following simulated data

abline(coef(fit)[1], coef(fit)[2], lwd = 3) abline(coef(fit)[1] + coef(fit)[3], coef(fit)[2], lwd = 3) points(x[1 : (n/2)], y[1 : (n/2)], pch = 21, col = "black", bg = "lightblue", cex = 2) -points(x[(n/2 + 1) : n], y[(n/2 + 1) : n], pch = 21, col = "black", bg = "salmon", cex = 2) -
- -
- -
- - -
-

Simulation 1

-
-
-
plot of chunk unnamed-chunk-1
- -
- -
- - -
-

Discussion

-
-
-

Some things to note in this simulation

- +points(x[(n/2 + 1) : n], y[(n/2 + 1) : n], pch = 21, col = "black", bg = "salmon", cex = 2) + +
+

Simulation 1

+
+ +
+
+
+

Discussion

+
+

Some things to note in this simulation

  • The X variable is unrelated to group status
  • -
  • The X variable is related to Y, but the intercept depends -on group status.
  • -
  • The group variable is related to Y. - -
      +
    • The X variable is related to Y, but the intercept depends on group status.
    • +
    • The group variable is related to Y.
    • The relationship between group status and Y is constant depending on X.
    • The relationship between group and Y disregarding X is about the same as holding X constant
    • -
- -
- -
- - -
-

Simulation 2

-
-
-
plot of chunk unnamed-chunk-2
- -
- -
- - -
-

Discussion

-
-
-

Some things to note in this simulation

- + + +
+

Simulation 2

+
+ +
+
+
+

Discussion

+
+

Some things to note in this simulation

  • The X variable is highly related to group status
  • -
  • The X variable is related to Y, the intercept -doesn't depend on the group variable. - -
      +
    • The X variable is related to Y, the intercept doesn’t depend on the group variable.
    • The X variable remains related to Y holding group status constant
    • -
  • The group variable is marginally related to Y disregarding X.
  • -
  • The model would estimate no adjusted effect due to group. - -
      -
    • There isn't any data to inform the relationship between -group and Y.
    • -
    • This conclusion is entirely based on the model.
    • -
  • +
  • The model would estimate no adjusted effect due to group.
  • +
  • There isn’t any data to inform the relationship between group and Y.
  • +
  • This conclusion is entirely based on the model.
- -
- -
- - -
-

Simulation 3

-
-
-
plot of chunk unnamed-chunk-3
- -
- -
- - -
-

Discussion

-
-
-

Some things to note in this simulation

- + + +
+

Simulation 3

+
+ +
+
+
+

Discussion

+
+

Some things to note in this simulation

  • Marginal association has red group higher than blue.
  • Adjusted relationship has blue group higher than red.
  • Group status related to X.
  • -
  • There is some direct evidence for comparing red and blue -holding X fixed.
  • +
  • There is some direct evidence for comparing red and blue holding X fixed.
- -
- -
- - -
-

Simulation 4

-
-
-
plot of chunk unnamed-chunk-4
- -
- -
- - -
-

Discussion

-
-
-

Some things to note in this simulation

- + + +
+

Simulation 4

+
+ +
+
+
+

Discussion

+
+

Some things to note in this simulation

  • No marginal association between group status and Y.
  • Strong adjusted relationship.
  • Group status not related to X.
  • -
  • There is lots of direct evidence for comparing red and blue -holding X fixed.
  • +
  • There is lots of direct evidence for comparing red and blue holding X fixed.
- -
- -
- - -
-

Simulation 5

-
-
-
plot of chunk unnamed-chunk-5
- -
- -
- - -
-

Discussion

-
-
-

Some things to note from this simulation

- -
    -
  • There is no such thing as a group effect here. - + + +
    +

    Simulation 5

    +
    + +
    +
    +
    +

    Discussion

    +
    +

    Some things to note from this simulation

      +
    • There is no such thing as a group effect here.
    • The impact of group reverses itself depending on X.
    • Both intercept and slope depends on group.
    • -
  • -
  • Group status and X unrelated. - -
      -
    • There's lots of information about group effects holding X fixed.
    • -
  • +
  • Group status and X unrelated.
  • +
  • There’s lots of information about group effects holding X fixed.
- -
- -
- - -
-

Simulation 6

-
-
-
plot of chunk unnamed-chunk-6
- -
- -
- - -
-

Do this to investigate the bivariate relationship

-
-
-
library(rgl)
-plot3d(x1, x2, y)
-
- -
- -
- - -
-

Residual relationship

-
-
-
plot of chunk unnamed-chunk-7
- -
- -
- - -
-

Discussion

-
-
-

Some things to note from this simulation

- + +
+

Simulation 6

+
+ +
+
+
+

Do this to investigate the bivariate relationship

+
library(rgl)
+plot3d(x1, x2, y)
+
+
+

Residual relationship

+
+ +
+
+ +
+

Discussion

+
+

Some things to note from this simulation

  • X1 unrelated to X2
  • X2 strongly related to Y
  • -
  • Adjusted relationship between X1 and Y largely unchanged -by considering X2. - -
      +
    • Adjusted relationship between X1 and Y largely unchanged by considering X2.
    • Almost no residual variability after accounting for X2.
    • -
+
+
+
+

Some final thoughts

+
    +
  • Modeling multivariate relationships is difficult.
  • +
  • Play around with simulations to see how the inclusion or exclustion of another variable can change analyses.
  • +
  • The results of these analyses deal with the impact of variables on associations.
  • +
  • Ascertaining mechanisms or cause are difficult subjects to be added on top of difficulty in understanding multivariate associations.
  • +
+
-
- -
- -
-

Some final thoughts

-
-
-
    -
  • Modeling multivariate relationships is difficult.
  • -
  • Play around with simulations to see how the -inclusion or exclustion of another variable can -change analyses.
  • -
  • The results of these analyses deal with the -impact of variables on associations. -
      -
    • Ascertaining mechanisms or cause are difficult subjects -to be added on top of difficulty in understanding multivariate associations.
    • -
  • -
-
- -
+ - -
+ - - - - - - - - - - - - \ No newline at end of file + + + diff --git a/07_RegressionModels/02_04_residuals_variation_diagnostics/fig/unnamed-chunk-2-1.png b/07_RegressionModels/02_04_residuals_variation_diagnostics/fig/unnamed-chunk-2-1.png index 6418e8f0d29d03a918e3c52013eb06e1ed7df63c..dc1cd4783eef684c3524f17a9e3d6be3df6b9704 100644 GIT binary patch literal 63954 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 V8`@`{j4KJQXno1sUrRfi{si>!?Gyk2 literal 63716 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

I+rN16BFuXb5qj4@20jFX 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 SpEi?Ye$ej7zMD4Q3I76q*J8Z@ diff --git a/07_RegressionModels/02_04_residuals_variation_diagnostics/fig/unnamed-chunk-3-1.png b/07_RegressionModels/02_04_residuals_variation_diagnostics/fig/unnamed-chunk-3-1.png index f1f9cc8cf26d3aec21552c4f4dc5867ef3533fba..dfb959b8057400d7ca50ee6f132e05dc184d4f31 100644 GIT binary patch literal 78171 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 z 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

iwOc= zV$8crNd4VnkWbtB%D6MI{FZQbGp{;d+{Rp=6x64#aVNbMbwPPo?dl%ceR3i5z6g@5 zG|mCJ@;a1=7R1=0qoYgpT#5k!3L6)SauBdN@@oL74(*$YO3aSM|44Y=Roc=~Qlh(f zYrcIs-PfWw8k=Z{3;P&hZF(=5gx^1OMy$#t>q-tqygdZ%cnq(+K|Lf26gsN)XJsEU zE#n2i?@7}yJdKqvRtkd`J z+-YuUu++03Kok^K$hVT3X`@r^wf9tw9#yqk6oyBOaaB?W*^&Xe zH7UUCh_c2Pw_1=M2kXC7Zv3ru=rORxJl5KfN{3rILPV(hZ%^J z3zf@(6{g_j9Jke$rLvb&ea-;@Ijf-utHH-gnxt>9p-P7c)AV$j+f=|HJ!tbp?aCqG zHsH`e)A}%3$%z#_f0cU@)N1Cn2J;c4&Y--4NJ$_J($mszR?)SBXcu0vSJP}+eC^Y~ z?3&iy1R2F&-dQ_;z>3h*-VTx}G*2KNk!Wq!t%@XvmYj0)8{XcfTh~p=1>FM<;y~iR zQ)j7a7u6jisZ;oBI<{krbTaUr^e-X=pNx8tj|3`ci~FNQwj0U$zrIXm1kC(#jIs{9`jdNSoie?r(TF^SF2fmir@VNZ9eLJvbDuwxe56$C__-G>ETE3 zrU1`|*`4to=WCxoFD@@bmM{hqBjtX)OO14?6~QO?ks#hBEv`TYLa_kYogpb zo!NGzT3b}s{W3(x%lYg@PLG{52wi-XI=eCX?W&iks0)Ns{s6Q9ft+SEG$D|x^${?* zkPy5e(YW-Kx|N0FaSOqBLGCVHwC{TsK4qPmd1x3nd zpZn!Y-~U7#KEC508#@M`$;>zOVCvd0Ki3_^MKmQP5nn{PqR0y$o}lnTzk&7Zz~1 z4yoCr)q_r(kCzuBlG^pyh**+R*Wa#({t1mE$6+>Hp0VAn?)=sHHGKDQwPA8H;xcP8 zt(DGCvhxcspJ1&E`|cYTy*iiv(II+D9#zpDkHhZ-*BG6#^JeODD$!t@Z?tv%8r>q` zadO0SoI>g0LPx%JC-t$i3K9_rxO})0Bc%b#17EBZ&BjpR^8uz=heVZ<5}PxQ1BIg( z2{mUo^P;p}VqKbMcc6JMm~eQX)M^HI37RiB$si4IW^T^f(h_V3FPu?dypa+KoYTp5 zSS)#PVQuSfhc(qg$OZ?i02`_|V)a2iC`eg^4JzNy{$sS#@R1d$T|t)b-82g(9LPNI zb>=Cvv7Oo-6gZa^ZR<6TiH_(3w-sDdbs#)NC<#&|gcece&h%tlC{N)>K5SOFPsPEgPr~1DN4yvcTET>Xxf;>t#OzwL1a!#dTdU>X+dNFbz!0T(@p!6XCwcN zR?lyyhl;mSWI^A$+9F**77)|8kCmH^@iY$R&w)U~HoKK_ds5+p^jPzv~&a z_*Gpub;wWTvL;8=N|x1-`Zz<`!U8lZWd*ql`t@62jATC9QKxgd@<&ddmRu5)s%gqcTK3w0D$+BUs_P)(cb5hbc3Oq`(Y{+W@0V^nJ$tupZ@`KbpnzB13 zpiL?pPO#Tr_5p!3sILKm5ZmJ4mpKvd zo9KXI;=il!u@IR1gC>UBPuFZvWko#*CxAh0_>v|s#VhlER7MQoeh60uMO1@kWN2vb z)D$xfbyIod@7GzR(MUa%UqwUI2^)DT7Meh>P7)PJc61EBiAWkZznmvHoO)Ag`_79h zwUv%@czB9`wY=X}CUp5%h9LJmxxfq|eyY6!`8#WUiR>em3R{K8{Re>&=`ve3p8HQl zkT#E`i{?%Y1YA20gtT|XH~(4=C>r^zf=(As2vLGoZ~%^v#|dkVTAnc$c)qsUZ1qn* zo0|SyNf(itxed@mSx>*a^_r@QO*oV}gf8(l8V2hXt~SL{T%=g7z&U__fQG;i3J1W{ zt|E3m8#=Hs(V$k-c@%S$RaT6Sz%sdd-w#!mcX?NKJO~UGe`K2IlD{Eg@axXksD#|K z@MC&G4vv98Mbl}x(=dhr%d2=?e`3ZKUHBZL(Kp=nycllm;QL708>8WlkEAd4SS`7VVM zP&x#H0Mav*NfCKK*SSFM{ghur-W~^m3^AY}^FG$6TZ@H|{XCtsQ{pOH7`e8*h)qJ# z{wDV8Dc78liwX8&N_f)4YO$ged0<4>Qgp1zZOabERzxuA)Hd&qTuW)8q24*}-mzX`sur`*bFXJ?7t z+RQvfLfiGwu>;C+Qmo?>ylkLcLI5hnCnNwYeT9j)|BHy044z1}RS7?3yPOU0Ya7}fuOPq|Xz35g3_sB-g9H&)F z?)UT~I;P_ZTo-xe44)4>eH*8LIaIX|PY3?}#q(of2*9ShoTPm9ps>)o5Cef(7_rG* z=6#k1t*0E*=5BL)g^(>M_xR3``@L}wU(u8bNDeM9|MBxDh9{tQ_k3uKokiJh_?s~? zT?YjX|Nh!&XD4vGU~OJ~??HC)R>tY$)N_-oVHrJ7U+7Hn))VF?mkfjuYHUko-?!>8hqS4q<-KUDFSE+Ao4&Foqm01Oy7a# z8JVE2s9@+{mKafuj+caBlbQgiZKf}xA!@Ap+_vdw0a;!i@{Qlk=RAzvZ7R$w;Iw=z zB~FY?li%sDTOSYa%#?o(R>m61lkQa;gE7#w>`iB2)I;__rGX^wSgdm79W<0egF_ty z1iQ!A!$rhiY5Qt(at}lp31U271{a^n=ic@76#+DQp|5v2Qg&P7pIvs?1 zZru}dx-EzIXU3$zN4Ryv6OjoD$bQ@bMFLtw0z-u685g42*(^1zQ`ER%g9xQjzXB8HoXAD2}mSXO?jJTi#TKNWpO~vs))3S{exh!}lsd8D+ zfGEW|kf;>=Ey(<(R~@)lXSpOfYl!qd(X2jRa8k0jZ>hs-f#$_A$+qmr51i}QwOK(n zPfSW$=eYA+{9WTpEFK@0A)E;RLWS2~U18v>it>vYrN_EDXnztg(&_Tkw(RE$OWCA# zWr*SdK;h=byBqz!Z~}q>;E|r5%IJu9^P^P4hymN1fU>!A*QR}U?|hfneOLx9aa?{e zMYr!|frVxVc%6Tia!f;{D@>`Py6%lCAey{T>heNt2hdDGeuFwuevgJ$!$d?`*Wk%v z8Y2WdgVEH*TZ#sLYE2+^B8DTNSrx)>H}{6*zWr`F>b?mS*_B7hm^C;d0XvR z2g`)3s|(9?Y;M}*^v0NK>h^ia1d&nG7FZaW=+(sgYHHQcbGLtUF1jJ%gEH%F{tdTJ@O55wmcg0^KwLQI8L9w z;}i6r`0slYpp%tU-qgb|^hX3LZ+lB5P%;N@l(R*9#QPLZQ{Y?)giuy@{z%+5};nQ5s>RN2^aOya$>;(_IR+M|id|AAFPM&r4}U54H`($#DUe}E&3 z8bGK~Hh#Fm^y8#x`4t#pj>&L&=qyH`K9!lo)1MHoNr{X;J`pi?)f*ZgHe>o-Gd(vu zpTsYz+*I!v8;r(Hq1g**{{vfix1 z&>k4<7#DkCll~>N{L}YA>+rOktH+Z6{_K=;QG`#yie%R>o8nwnU&v<$X8C8YasGk7 zRe1V7W7uk5N*?E);+ZZBo@wNtw~?=85*+}kNBb7{oToumVO@Zq+8$J+uzsJEQCfL0R*BNP_d@JpTbRYh9vCu&yxb(k*(cplnHkVX&X zs{@>8m}xThuHyH3$;|vg(`kz4>F#!j)uBtPB}PK-r*d|+;lB3*=koDYRh8S5$*k)* z_f=&b79^9Fm07q3hpjEGw(1skOs0fNz2^#B%GX^k#3}4}`NkYpvN;C_@7J8$4xy7F z?^9mq5@nTga59fqnw&T2Hc_l9znX1ecKNAed&0AYRH$@dB=)~iwpos7$|yWS>Yvld zDkNkin|#aU(tPQPUMmywXQh--U&W6iobsa(ZS!2DHh^Q9$;rFxqwLjG1jysZJ?how z{RJ?QX4U1;@Ko{g*z-ygEA`DhXIQe-SunSL zm8Fn{|8Zx~XE9mfMQhp~Wvc`!B5nfvnEHP78dVb%}yZYeYsEEOuuh2dC7;{s3 zVE21Tu;RIP(+*?aoi@U)=ch`x7-=oL=&V#lm>^=eDW z58Da6t*@b>U`RADm&JgGiAf?jz(YvV2vO(A%pjSAfxvv)OYcb6PPk?vCquK$RK>-m z%0IYv&=0#tj?YJ1_FXsP`Nte)_*#K9D zdfelnoByobY&uE5@A%w}Q)yeM{;|;7osmbBrIt;9|6S4F1=0Q{15rM^<$UERo5?zX z!;KtVF}qI&5UHc*ym8ue4rxHC5Ma`qE%L|m9v>RY(9xya94j!m}fKBJIrI^nHMn>1| znP-TjVdMe6-zjrNK&MoGPVRP{UFmcVoJQ;eoMl^K4Yy%k76BD#1P-dx+D8xAlsta>)N~K)rS~9+xrTerZ5dw+ ze%{OV-%X!bl&3}2M()S(>)u7~EV??ayWT?}=<36A97+q>rg`PcW?L^Tx;uC7tkN^Q zv$t5ec}l!Zw_X!c#ejg(VY1e(3PAam>MQ5ji4MT(o(B%>2Z?g82}M`Ezm9x5aW0dK zrCz)fcyi~OAr38f$lxnl#BuAOF#AXObdKYcq_y7P&n*jt_?Vt9hQazC5(uKdA@V}~ z33{Ib;T4hA(x0VEsgLHws#!EM=@l6NuNeC)zhwzJQ^A0rAre_id>i|73Io{~ou-%Xd2a;pW@QNZLizqANY=-SGvX&TUcZ^Y^jgWNX&$}-ZcFdH3G2Vx1Qi{ujjTTPxm z2Y0P?YwfkmWs!Ci~;8+#`*ZJA)CJCG-jj4)@^=xd>jJW9Nr+j=Fsi_f=uCu#+5v#9p#)*Z%i`L#e zb85Y|efP7Px~}M-o+?dH`!G;3pC~wPbG7cdQC!6oX)Us{v@cVD>*SP>i3GE> z^a|2)EyOH0kDOc1UnP8p6&bek`bMx~F*itZ}nUmt|O39HZ$|Hw)C*9zywsz^E8& z2M0(-gCiDUwW+;}UEv|6q^W|2=*Coz1g7-AN4{nAO&sPlJyBE%atIVwQ2+h2XT`C` z^8N>ifu!gkl`$iI)ySP_4Sn)WB%VKzQ4TLSz?TTg%wyUx%WDsNh-j6y-c9K*ArSI8 zcBb*EY4Ui9PN_@8sIFgVAKv@4sP^lTtpg0yp;)=Rk2KRtKN&YWHQ|&(w3ZjXB;`>G zsp)%77WM2Dg{aFAE-yOXFFlTmDLeRAq3JR2^^Ic)1BHe?Hou1mi--xGlvrLuwQH6(HmF_`Xh<%uq2b|HNRGn78Xg=(L-p5?F$!S^z%*z& z-|j*!P)LF_Hz&V+dv7&gEV|%pY;Bl-e#3sny#*onw%3ZP@po>;6Q69FINw0F!Ol=o z0gC?X9-J&Jcu493)?cRq88Zw7*N2Va>IZG&+R)tG-#?7^5#dK+5lbv*+bu#=%#{{1 zxQL^{74jQ+Vouu6Bo(MW2)};Q-xV0L@-_7L9b(Z|+9-0;!O1~R83|ra-nmBH&e&ZF zMEC&#;o$OGjB4g8(*@^ZO-X|DPzNO~PuNSHq8|<%KSucDZK*^Kj)~4+pi@j9+E(E& zt*NNU+wLDKDA^xs%Rs{+h!m7ACF|uy^WcVi#jFu=71c_n{Tr9g&nD5MpY}J9O?)RF)}jO+2lw2mR58t zNq&Eg2zjk8zrNy(iFE_Vq(H+2~Yn*HgWwD5+9nNO%>qh=XEz1y>pM2hD{?mBcrM)J-aBsEF&ie zUT>|SzplQ%db#B+y{8hX7aL%};&SEP6Ri7(w>j@Zit6Xd}I%9AzK z-N)Dcf_#&XnNV$w8r^S9%3E85V?=owRVQLbZi@PbVtfpwe0Z19R$t^H;L-2lGvr%t zUdVE@@*OwBj{Q~o&XRBfdVlP=wY5H>m*~RHoy%k(tryPd*H5QkjZtA_RpIVHB69G>=qXT_@8`bfdc+howD)kEnzew22HZP{t(~2fr6s`5 zq@;ME38++^2Oc($Eh&V-gLUBzX|EVxVT@dyw|5%o`f>wzPWtO0jS(#UWPc1s(XdD^ z+KGK&UiB)7Vu*cSNkyp{uCa%OxNrG*FaYGB;J8doOr)Wq zsY`?*_vpyYL5vA(4Otpm>Y|#w$PdZk7>y;bXShRdqzsG#?UHNi@se5PeUB=@QbG@>98zhtTj{il&C`f zOn+`z?tXd2s3)KhP!SOIZp`ptvA-4aM);lg+Zr2_r;VUgMPA2$-CMgh#}@u8Rgd1k z*09ARI>+#7*C?(%m94YtzQ?K^*WjQIam$42spA(M5XNnVbq60tWU?Z!hlV_skLyp1 zZz9^ezHL6Ss~KOr=hy?CH+~u~yU&UDars-9 z?DWl}jsXd?G~3r%14DP&7;=isYN57IOso}^E3V23kRd&x+cXh1mUu%9V9RFx?5wOV z{#`CHd0k3^=Tp!hy<)&Amf;N0D8HOe< zAu*>3QSd$=I=w!A-0tSAnP=^U{X|OKSU-kx@l{t>L+8n5&ON-&^E6rOtFK4kyqg8| zwD*D_a;6OQweBE~Ttyc)mip%z_j;$1Meah7Dq+vFY}18pYwmWw-=R_T}1$m zCL>D_(s%c$1^F~2Kcd$|$GRGT)n-RR0B;94_}E%GNJ4_4r?3%EYT*ymyg5CdG#nNueC>g+v(IKCrk5s(Cu+(nD=jcxIfcA6E|O_t%|$~?ZpcX(#>T% zqph-TdwMu{et>TY$`M>{iYi~%ceTG`q4b;%-$4(6rt-xUnZ{;9QQe2>hMc;iC6)u1 zRxue`z`h_B5l^FruVYBEX4@?v`nUD2k!An?jx9oHM6?<|U55-Vl+`{pIk^~4ZSa0W zdipcwmDN?a8pc2<2J@M=Reiw@3LcWn6cR|M5^DuF9xIMorBlWbn}Sd4L;Pzl@%iHI zsENM7JFK4)go!uXOnW6xoE|h<-A>z18){|FF#196L+hE7$B2QrKYZv)WnlfX?J?GR z4(q9ny8abF^4<{IA@zT4@q94`?%wDj{!qL%UG8)oJiVs@=;~*|g3zSAxwAR4#L4c) z4pmJ>E8C5})M+WwlzySs*2Jmmr6nsq*97;#!nR$rA?~Kzvi#dIC9f^&e^7!NSdC|pvL;CVr5oSKnwL_WK?2)@RA2$1#kM5a8mfHsFD^zYvxccfx}ZyX4C9~NnO^YvF9rAM26;-M@a|q^h9gPcgeR|C85Bdy}&1AyGD5 z!XX8k4NXEz7p+~-R&`r2tIG}Q94cd5+I?#SCx30-SFhq=VH!Q`*qEBinPyYiino5; zar~Sz>^;X=xu3kUS8`18+y#%|;eY`<7grhZM3)`{f1vdU^&tE)C&)@po(L5mYC16U zTlvQkASQ;ePlz)DGZO``?cc5#cCbi*qaB_z;IRx0YhWq3P?9_S43{(L&C%*(YwS}( z0GlnIlTs9T0XiWV6j9p>F9(KhUqwRVW$n%x@umYbUpr3!TEnE=sTpoM(!e8eF$t8Z zb2)i0V)YOK$lbfe&xn}$*I(P}wcft~2M6Igq9L7S>kwE37!Er5#HXamlrnOmPD?oS z;En@us&VbPj8gpQt(^X+o=;#g+6a~cmKc(W7&FFXR}+_naDI=8VNoA zj#$CiE*tW;YC5s2Blhs&u0srMlUT+d@^~9~fVcG*ueA6lmKHnO4P#uxMCw^hvx~oGE{lEC4oo$jw`tnhToq)Q6V7*6sE}*H zge4jr1tkd`4ZqB4w|bkfX_5NADXUC0pI>d(YK6m1@M3CLBv2_W*Wf}@I`~D?5~U=6 zqu+Hx9T*e+NCUi#NO{f9pPRTx2lU6Wq{n??hLOjf%QGq*wkN$IQdHizVG{pFC1R3`jAT5W*BdO11SX-$SR!TOp0?23reI&CW`~iV#MIx?1gZKuy0F z6csMch*dCAq-pk6QPtFW0ifg*{e`xyZs3_a*?FUhjm$U!@K@sUrr4^;SL%O89VL(wrTDk?K zQ;?EUDUp)ylJ4&MHlFV{YyLRvU2tTcxnu8ZUvcG4<;l-EUTQpNr?0og8Q?PBI^IHr z^dEL5ORPsh#~4>zdr17NYay=#Io#61>J>N=tuTzM0Ahb*Wi5dH-dJ{@V5 zL~+w>!Ls4ifVQ}S`ON9DmrizX8;B#qOhRF(O5NqfR^LyUz%W|UcJ}N1v}@@Sk%}t2 zcdF(qlkOQ3T3g&;7y70-ubM2f`TCnLX_?iQP1MrOEIhz)#ty!Q=vq_-zo0<#{ z)r1TH{9C?{-t=!oFXX1AYU@{487k5qbCxIPR=1^kBSh2Qn#R$`?gWA3*@bi+U5`GB zMP$di?=bd;7;Mn_lI9dnRE!8Qw>-HY`<8z%F^R$S0fswDdjxpr>u?W&mn%YT3ovw6(+dP4WG?zpj_NZP^tiHuOA4EiknoNW z<(EIE{1h|Pn^*xsy9nw??K7 zxyn762Fs!gP;N^W@|}eBBr#`JuL$l5>V4>0{c@WMI2gT4U+2G#kWbdnWl}jh0|6T= zuI86TZTy?=r+Is@r1AHwUJ;Tpqfjl^5xMSuS!~Q(@auXCy87M*#&n^|9+FWN4x0nF1%K(Hrl!~%o_YKS zH+?bulg*JiC@i*qSWgI4sj6(^2vV>sciWsrABnV~7#l;pw7Vw;sAzaXf|Jrq)9)iM z9#htPwO&P{Q|9*TjXw+2x=?X*VqU1gT<&>b@tuY*c;7kOD9Kn z&IJV7gTc+euJyyT4ky43OIhbIP5($C{PEHA4|eq&11bm7nLnxX^9@)`Qnfdpqc%hq z%FD~^Wv3=aMj)wM8M4^)wU|B^JXaC=A*=zX1kDyR4-?uLZXsj6}`OeSYDWG+Fm! zdOm%Egc3ghnlN~eCnXKHVm_X+A1^%Wpz8QD@w-g(WE1r}vM3MDxcvPxFmk<@gjh5I5JC z&VZHC!VpbjJyJJ4#Yz$I+2or{uVE7a$&b!b4z3^6s=9tlR#h5oG;e0l&r5H(Bn}kY z+jYB(yfRXd(1V-e3VfrHC-2`!^>2rzhh-CCa98}P+@kn<8)b<$nxNeD;|FWJDZ3;@ z+(BCmVHE$Q=S*~ya!K1vFUq-rAc9p_*^09Nv z9z7s%q3R430?z6Ntvz+rVZ%c(PKNjOnwkgn4Xy{qHO@K7!)`U=a_07mGIkV5_7X|d z`~n)Htv0U;lR4XGMZ(GaOusvtL!rs&V=w)~q0Ks*`F7ry2Z6sF9jV=OT6Ey4FTQ~& zMMYPxj>q32lX`%^E5!(8rhUoeB~ks7v5_-7pek)u+ddsSk)LW9HM%y5TRAcNch1OQ zL9NPj<-Os&l=)8&@)=zz2}Az*6l*=f0%gS$Sz<#YGtWWWo3z;Mr& zoA$}@FeXz*WZgAaqI?G67P)%m$8lmp<`%yBJ`QI;^1Y#9$N9z>SZb>jY2Uwh4-)}H zj6CQ2as%4$1XuSA>NezrrT5?>En5F(Vr)!ILHaHv-E@BseC2ldS$ z>9LMH@iKWLFUl|&ldLTCZp_fU3$7O}Ki3D5m2ibvDmK*Hp% ze}zHnHe-u009}S$TtF|gpFm?e{{gph!|;Enk1j|Me{l(PA#;0nRB><*$1~&q5K7MMNxSEtvj6 zTIG&0qH1qjGw;K<1lq-4zp{@OipZd3KNRNG(QsE+WOOgS=W~Cn7YmL> zpyPkt901C5D=PvbdY<@mIjF>)R5uFC%k>^cZ1ucZC@;d>*#qEy&Dr>WG?9K`cR+it z^ViB|_4-rZLM)y-l^=XbeZowFz-GJV4Zz#s`xiXfme7(RpP*Y2c(U1NTw3cJU$pM_ zRUy8KGUF0*4Zeh2HLaqzS*XYQyTkXOgZ$McZ<(F5Zjtr(%&0A}jy|`G8s8t_Y+S44 z(&QozX_b)OELKg)gZADSD0Ovu71tAag2<%;1AuUm{N!a_MahW+*sbDHqfNCol>)75 z&zA%~CAZF#5A2tJsml2G!_!i3D8PU^r!!GiCn>vjR2Eq8{`PWKbFkyY!frQS zUz__??e*AU=|s`Oy?E>ePsOyKm%0e|7o|qupq_`Z9)t_~ONb?V5qvT+V{LDdvCA-8T)-*Oy&N*?-+NHecGuRaVr#j-=iCxLNwv9a^nj^ZKC5Mc|FN9NAL@ zfQobfBaUWPo+%5@8@RpsWmJgCjQ3NKa(@)t1K6(yU!YeO6p7`6z z9Dn?nV&;Cd4_61pSqhvU{n~oI2VdiNTCyGq2X?^u)m8WnC|D{nQ5L)?Z7B)kCo>l` zhi(Ub;j6P(DFO`j+zrEr-N2ira8fcb0Cu3xHZ%pELHV#rt!EW$*M7}df&og}b;4isaKdbj`bicKUz4hipqU(-Pb1ommih!-B}qG{rS&#VHHqgLGNNl{~O+@`=S!4k(wqd_;uH7BAWpne&1t& zWCykcFz0{USt+$JHMP0aOFhAQ1#o{>{IZ$PcQb+YJZ)IJ1dihnSWs^@B67*vczlD% z_pIMu=-dIATVrDvrf%lQL4uN4x_|Eb0~xp3Zp(cx(}TzO zOJd{mI^sJWydr-j%$+dG*8c3BRLG9ZROA7#Z@4DqCm0{lN#>VmR- z83&GLU=;0NXq5Kz=W|!rBY^T-FuH)L9%9F_LEm{^Q3%{>FlKoF{#rrRB~D0kNygUu z{DwDJgq@Yu^&Yx(%mzX z|A_*spVLa$%-=cBkCB51E}$7%aVN7*8CzLjCFPcvfWBqBsZ`~+7uOAFJwC{UUA>Z8 zSds|dT^sd}*yu<5KP~1vJP%!ef|CQ9!EbrTD&%wlb|^Cy>KG(t*vuz zSlPZ7Br{oN9^>bS;j^=z4#hh7Si()poMjRDbp5PPS;a!ca`TyI>Z1cOEc(gc%JJ0cs`?etO;AZZ%8*S@#MO z7q!-BAUGUnPn0~Aq=*X`mi^YYwio%}cz>D67ZFua3S_Ttjrb>z-$!ihYDGK zovEa%Ugw$07SOoOvA4paIEn_-r6HpYl^~gey*==z+ayQzBjI5CHWQKX!Q_ZrU3Wg zyXN3YsH(b-=z}@?P09~Js7BUe68mNeut>cB;>f;j$~LHis(NC#@Q?P3%!tNvLu;;ruGVW7RxGctCJwLpQf` zdc!N;fHCfW;PiO=6M8oB-@kABH!cpMzF6zryz$O7cNsdG?xHiqyB!Gp1w|%iso4Tv zVXUB`g@gZax2MV*gS&Q&2^bagC%8D&4GZr33w{gt!Dr#di@)E{aj&m%Rq?KdqSjh| z{@jL3(X{uxRGvu3CMuSp<=x2!I(czgW!M|@t-Q^zC;%OW2iN%>c<$}aCb!6wKvVA9 zJ2w2}DcaOv!S^$$yWFd^{PA$Fdc(0c0V6Z!4fgo3Fa)VLZ)_`$+aWYY1qA@p42ygG zlDg*wGxSHoy@P{;y}di&cD28ci-%XlK>HKRclQw;of#0MjEp#cUty~^(A9-V?ASXu zOLUj$sBi-Z)i{Q~rf(Dj6^c7#_zL2y2l^s3Apmon_jr<&=YbLH%g*pdY|LiyNm&#~ zJm$Ps%*-5ymbEa9J9VDu<|*+6?{o4$J{+D2-MGSnJu@}`)TY&7>_v{jO7vYrBOtND zpI>DCC>1>Ukg3~uh{p>KT9_%XAZrDTUz4qFwf%BJykz_#UDK3((;D-|-^>PTAOnL| zMr+@qiuew@So)u5Qwch4|J6A%uO4$U`@=2~mpMITda#|rT#%LUf+C6EePCiDxvKgB z(I3btQB)LufDh6Zc4tG6OUuD|+`!B0@zJM_oQwakEo9E_(?t=(dWOJx2rvV0|DQi8 zXlQ8Qc!mBaE$unwc|a>f&)#D<=`>uJb;G}KJ=DC5p{glgt|%HMMmc^F8xS*Wm0kG3 zb>}a%3jE{amwiyuRK% zvfN{>(<|^|YCQhNi?o5BegNX5BH%U^GK zd67l+<8`E~&-&4aQpvixk=VumFKjzd?R{ohs%a`Gzk4}OG~XX#WqC|rFubQ6g?#_f z@kmhfrIbRvpBMHUA(-&y(=m2ROPg6*{pUw4`X#K+dPaBhx13r!tds z-ow24CeG-{Sf8BMwaW|^pm?>okL~k{Dk=314Y`24+B3!S+z!I0VMJs$t^n$^3}=r^ z!sjFqK7aW~MMeTsjQYWY2fV!Q-){q;0ishWX=w-}Z5rb|1U}EDN$zA_W^GU6v_NDn zkSc+@e!0iY1}PkCf`BEgJ2M43p!l_?m2QJ?y1Ue+6f~TpTz~CQ!{9)yRk}k)d{v8b zJ+G{amXn8%lX%MHM+?Xo^Kx=<_%dVFz(!Q-W!0}k%=8q!qDw|Gi-;kE9%X$QtTbm? za>Tn+Vn;_uc|e;|Q1daUxZ1nSJCc1K#mh=4(fI0tk3DE%Wn^V##l>lvn3{Xvfq&p5 zTH2h?pLb2XIva?{$jFez&kC$Oo-YL3AIfWLxV4C0R#KL5odpR2t>pi+S9y8Syx&Vj zCuFec_1qCadq$vAKSG4@e_Q~_8kvW7Xp*hR?6((KlfkPimbGDcSY0Q@^gSmW+yL-^ z-41{^bsK3XuYJ?@9CXUZU#={He@<#w%D?f-w>Pa8j9OV*B*Q~bgSa(VO$Um{%$&2k zdXIA@2rqQW&RM|&K2<;#6r540wv6uAuq5zr3=9lFY$=?9KG;tjm;2tneS6wv`rmK+ zI8O0P=WxUulg+10`?!C{oRD`kXWL$BfuWCN^C~FP;DQG-;v<|fXetn0@U6dkMQ;Fj zNX8w+-E&?KVXwj+4Y5++a{tp~wWSIP64c&5!M}dlYQ{jT$@U6<0zv=}-4?JNrIVD+ zP0W~PXUTNuifFh`6o;yT>;c*-NT`EP53aCXKYqN+cc2JgTwgED$k=ok8FK1KXPj8`=-wg5RRytq-S;LE~OTVBGq zoPl@ACx?kUuhZK`8`KrJAz#+Gh&;fDVbaO?(^A64;;>ejn!*?jyFS4}`UsDY)fk=* zaN*LsA#XV$J|64`;H9Q^E^@*B=vDyG^&wgYE*St&>oc>E@4!2adqQ{-xL6C<|c}o+cLiNg;Sp#y0+6iKL`FucH^KYy>Xzpm9PI0@}kGb&|SB$s7}q zo{YMp=Z|^*?PAJ@sog3ptINwhy}b>*_-NjBRddnlSr|oHL*xBXr1#)bKYA)qJ}KFp zP~IgsXklrU3pa#}#4mA~M(0dzR}xOWkE=9UBdTr|eSrA@IOOc!>*f9!ks~HyS}i_} zj-#Wd1|{qFt}ek@Z#b7i0|VJh#>!i#@1XB2RSe->aywvqz_U(HUZ4N=E%SI}A|i_} zub_gLOWoFZ@@9`d1rzz#%yKy;2OM0jYHk;*10VYqpX3Rhx{i^b`!uM}dFkoPqPF&0 z_kHz1Rq$O+9#ATO!N8&gN@^aBLW)cIaYrmGI>N)t3q<bJeh$;kn~qv@%?b>uOux;S#zXEPp?YgI?4q||3-`kqp+dc3?m z;eZ|jy<+_Lv$K-}_^P0~PYQ1MFOMI)#@+JeaE`PwU;&V&20kYwM&I?!%~$5*S} zzS>r&_>lw;Jffnttee!9o?INX3x*%P$y@^m|JI%(kUHN-jSWx87#k!M3je1ATq) z1XuetoA-H;(Sygbt#k{Ep44h&4e4 z4VM_T)w&vhc+{Qyc5*hPR~faWmoHX%{6(97XvfBo59ZYr=+qdfnAAZNbkU zgPS{`@okL#&8RT=7HRpFyNwR!;i*AcCu+t2qa}-j%R(XHI>K!CJ603>b6swaggF;h z+-ijKcD21k-TX)bv6HhCsF3hXL^ohO1p&5#2lzZp$ED|T(GP`SOO;gPkDHf1--}`SW<0gIu3?mFhDwc zpOuGS;IQD}ZWicSkRhnc^YT`7qR!V>R?Ll!n}0N|-6R$~wo=y-@Z{60icd=72XN(Y zAYHF|f`40zys+~E&71++O z>7GMNKW?5qJl^lP9linTEacC`fEla%e+XX}14ZeV;J;2Md322B+Mhdrbj-wUJBIZF z;6P$?;hUDG@8)(Kri=?oaZ1X{w0AzFHqA4(bmBh606L|I%^>JhZe0DDn{*;wVCj3? zeg=R#5ai|*&@|Ko!)Q#``IWNumQCT>>T5x(FQ+FlU6*Qa`i@?Of$o%2IYR5cM# zmsmDp(GP(0`P276C;|NP__5MrGm%RGSZBHrZweo*fSOlF=Wfi4@`26DbzUA$Xp&{-NCJKZcewK#z}%a*fGGa)0KU2>*eFm$fsRRGJ}d!Ucicx z2UN8Dho%rGq0uIdHU%lX4fh6M*4fl_4S|7Q?N?`#iDL&L81urIoErZ|5CBHssc9Tm z3kQM!WEp8Zcs9DFUF?&`K+E&B=hFjvA04^FpauF-`U<~@kfLmX$+;$XkEbbO6vJB8 zEkaNs0Ym4$6`%gY2yh+Rlz4IB4$Uj5r5?T!a&c@q8&)Q~P9OoQPp0Y$W9lX_`iBeT z`agE=g)t1cuZyI2Lji((w>cxY&Qz3_U+I4QOQk~{*SHx)W`+6C8cMcPn#1cv*AYk~ zQ!BTKgN_dlW_^PbRkx!gSlx%}syC536EBdHzs}3-@!1LK7nFG7>ar)r$b=!Hjq_pH zZa2Sh>D&9Z4!Gl~e*eb%IQxi+U0q5d69$6p=YmFNnYr0$LL+`+*Vo93tR*_4t zp81M}Ku`e#^+JUsC4`;oto2ssN>CNl?lL|fiQ@@y{IT7 zYz#><3-j|<5c0W8_w@n&Bbeb^ zd)flQ$jz7_zL}ng{u^L)hA`i`v?KA@#YPNKK~HO&UI`hlCdG0XKUQ^c`f44|TTq&Q zW+oR@*^Ym7#-Y(=T((pYIS<*bj~{0|#PHgl4S+xmwJl%)eku8UMQh~ov014 z_7~kH_#fRrt}xSfJ9UG`1PdWNu#m=fukbk9h8(C66h|{O1{UZ4+<<faPo*h|@w|T$6nAv)GBLAK z#%Y|axKOijeijvXQkCpZI(eei#ed+bWj+X`Xv}~Q9h%nGU+m7lpX?=&kWg5?LV4`) zB#9`>$=$%i19QM5qtbsxUh=s}?e*~b%XDgV@A5B8pGx+7PP?+o^P9hwm=hBZ=TBy` zwtni8vRyk*&p1jk*tp)}I{|@-@~>Wv0U=v8U#;7Ewx?%*-{}@!*R(R0W{xx>lqu(s z)s-a}oF>V&c~du$?xhwgqPm4DTf_EKBaEjql%&RnID`gMI7ZLTV9S{im>?w2z!jzFK8#8g6&3e(uYcJLO$V+EK&~F(K@WWW3O-pr+}(ao&cOs$ z^W7J<ks~;U7|NiysG}`o%1n5OiV=H>RKi39wTov-y zcWeB132hggM=L7If6?RVcrCsgm^DQYRV8LMJ4?MykjHg3kuUL_0>*w!yu2siOUIv^ z1B!1E5fKQLAV7$;v_M&aZ#i#>;g zmm9ZcdjA@*-I~$NmL8v!qzNVV8MMCvo-gBzHa~{9`Xl@WZXYo5oUOlSM~ZD$I`tlj z;&Gwul%7QV_`}YrdOz=dg9F;EvQjXErOrD)cxWrmkJrI>EAIppzW{v!i4LTImBpI2 zdKHMSe7k?K}D+Ui%BufCihZ^ZaKkH01)XdY++e-a965KBSCxP-Ly zHADdIN5gq4VRGHqVck$kSXwoA{zG(0+*x)8tbqe{sC~$}Z^d%3wV|~SG3U{$@|;@5 zksXpWr>DsG&gpRw?m@7~LwVLYd4uyBmG3subNlQ9=hh|6BGlxYweKDI`neMtmZ%qf z3R|Vf*s5kFt(4Wtjh1FEDizf=7#`Adn>1_{!XxqdxprV z81$8J(}S)kh2MRCaS?2+Kvl}AeE0E7WuwQ8eE|A=E+|-=pWg@72jQK zWer?9ds;+y6rQWNjp*G^5=mflPM%r9^3lqm!oR^qvI-(TX7VA&)59%RgJuvY9v>eI zxNIW4pJ<_;1rGpx{09#xKbyX8{Lykx$laVCIaRX}5fXC=@QK(6_k6Q%)gTf=mY&yT zyE)h$3MU7ex3as|@I@I|H=-lFSvTPsBSKcO5*rm_lw`0lOFlI4Ia^#ow0hN7Wlyre z^tX9&*`yW~7aqyteiTo(QRj9G6Hzhe+S%U1;j)uHs`yy*>K2~s+i*+)`)i1|?RAmU zx6eTrq^_>6p>fDCYait2*8<{ac!B*iaO>~hmCsQEAP(>(PEOAM3URJNe;Ri2_;u6$ zC6Z{)o^uQ1rwBoyqtzgRndkTouy>%YeKMh`uV3vlu+7OpU=DXD08x24_=yM6O!H?S|@#lixVRv~p> zsOs2|$jV2a5m8asyhlE4r-XRyQL+iH)PC~!FYUq!sScj6liVBoLc4E;j})sh0QhWT zvH;4M=B6gbSCwIYexeeWuMbUzP6u;8B!9F>A#zG2M>B!Y{jS({-P9QAJLZXbNszO} z>VtE#z18r@oY1+vA~;3A#=;NlgpiF$%g8kavevWZ1@E7xeB(Z|zR1pFz(8oC*QFQ0e6hy21(oOgT6-%6W<2-(`Qu7^WWk3Tyo z6u{e40hti!$bbh5(Q-JxZ;c1R#1kn0zE4;>UpWy0QQI`WahD}yTOJ~`GkiP;UTv(_s3$NWy;|mPY|21WTY4D1lCPF$(oHAGuxpQ^ZfT4Co7ddiH95|~8<1+{|@D2j*3yrp-<%XD+UTm_lh z=y(0#ehS5)H)rAUKu;ghx-%vs5|Z*uU5(+BH-2*48WCg_Bd^WOj+eyXGhID$e-0mt z8}ieUUt&R!QiG0t5_Xza^3}yZvV9Da^zL2=u0;ecAa+~32h4=Wx{ySqT~w>BN5 z2VacY;#3P?E!hTu;_Acb~5tD`rl3{B5^-dP+K{UmN?YbLO$wB1&N? zXHpH-gk7kU_(2mIfTKYfZmZSNt%s)3kbYR4r=np7=|0wOAoA<5sx#@4J#tC`mCWH zyO9&aN6V(OGoMyoJ|+L6>YE#!SoQk-(%X#j7GddmX7P~!LW6>8pdbn*;REOw+PJnr zEXBXci(QFr=O%h=M2~gs>Iv_H0b~yk4;;t(w?6*YAW9P~=QZVi6QSxz?A57qyA@yp zx92hY!r^^hxqZ%!i46M#rlbgxOg5(;!z#VsL-X77&A!`dKUXW5tDOmg*<4nAoPGN=nmh*P|meZw(#pp}12eMJ+}oa&F=2 za3=#Z!{X`AldEx3nY~LMf_+rvckNmc+I@2W-*W%J%5+t+3nQy>-{z)C`IM zORgb2QnS_1t@Dzq$M<<@D44pt2Q=gr-tEz>z0r|-{ZlF89#(XT4o<1xiE3wsLJrJ& zTI#kAY1!iV0B?mMD^xVQah3J5;2#2`vjQc$x)%QWyR&FQ!qUpZ(svOWIy%Tr>q_A6 zYHs$G$ud~kA`MekxbD53cIDLgm|RT?5{=eXfmf22o({%V_7D^fzoDT41ScRti3SsM zdLBDKE-p0mV_E;SyrjagcZvYuIzBq`lyZ#iBgdf&#T^Z4!@DxZ$t)Y`PLfPwim5>!4F-5s946I~4< z-r+5FJ_|MPe5W+>1VT`GPYhXL=mOyyo_mz~-Q`;R62~mx7S)6Z0{716c4+Nw^MXRI zUG)a*B=C<4B7Lf$tbF&x?K40g&ceL;$uH4uRHQhmWsyT2SEmgpQO%XmB5rQ3&yO1+C*#(QtNmXz+%o4C z=Q|rDA{|I_xo-VU1}i56!OYK}EygNuA_OBF3Ucy0BeiqqQ9BZk`fyA%_v);%%34QT z1s>6&A@7=eiAEWE*jdRl3Pue+VvDHCERTZS{lfG?ow3)G8ne`C2Fa6%g~MZ>7IDk$ zE^$dTWPHi^jsS{Z(VoBeBHy3=UJ!cQ{G3sp`yHDO-T7A`w-1`X5#yb3IuKi)pB_Pn zx~lUUEQA>uwd55dH$}6D)8+*0_Gm$PsQ8GyUP#nk6LObA0^EPJw2yqSlb7#?QRMdd zfoQYS=z;UCsjL@`kNa9=+dX6A3CJz$9PZ*?)*`UA;97!v0kE=LKeyHFzZ2uHcqyrc}@f3lVnu@sW2&iECRy@06$RSsP*_rkJ+Dj+~_J1+ti4 zW7oXl0^izqlbc>x!0>M8W_~)sm~L){i-?Dk*>Ja9ynPAQ)nj00D=aLG`64Y~?Jt(> zM{IxusI9HZA#4qd-5x$n#cO3|xk7}YEJkKE7#*BexXKp|KMj48&u5e zg6hz~@K%3&|Ds7{Rlw$SK-l))FjU4dO$7XQ2g@5q-4D@_VvB0~l$(tiMv0!Mv>vDA zA9Z$Pj`2RxEX+(?E3G&73X6;k^7qFFg;U=gQVb%cn~y}`;Lx&hYDBHYu12aNy86|I zk>yq^qeEph;Uw-3NBl}5&_J0li*DEDnX&4X75T*0)1fPWhYCOL4-n*+&lumX)l8=T)~nKV zbJ+?_PdoIMG1HgZQDLk1)eZeC1J?8hNt{Ej2@>USeyJ^+tBE+XWOgQq7#`@kf>2OU zU|*ksss<_6ZNq(dQ-1Y15VTuPzFlsB2-nfJao6d@)r!`RV4SS-LaS7+;GO|Tyg&sd zMe@EDB@*t5nF+-xR)d6PGg(XZ@mibC#WbCf`aqdC?TY@95y-c`iZC)VzI~gx`&V2-LZevs znY46pSoToO-aY~SU<7SssC5K5p1=4zt>@sV*8o`9m-Y#_wdlLm2c?rP{!NAxRW|cK z%CHy++8ll;P=wzhbXtMuf9ZJ6#&+u-#d<<)xBH39PoF>DihiT1ZENMM4QedfSbhF_x$lZMcA&yY87H511bD z8cf^q_o~ySbGmsA)#M-KbR`Q^JCpD}Ft@b4f9DS6Pp$qKFiK(6u8D2Zk7LyM@?-CX zrevF$C(e~O`1@brX(ZXIU2v@jf}wjJ6hV^PL&KBJ?M2<|a3j!A1FSrDap$Sz?px(P8RA zvLyonOz$+|^uIW|1_#cKx7?91v#?32L>EG#&VRng0&)YI&?^lQDTQOrX95MK=*Z#K zt3eDF(4VjCY=LrFGt@nPh-rR`pjCdFaGwVnE@8?H60x1{Ohmjn5Ij}-k(G}wS+K}4^00pNo;arbGt|{9(^Gq4TZ%!$ zRf$ddwQjduPiowi)iL)!d`>)N*<=0NQ*sA&4tWak+Z#<)Dc>p*%ps-K#YIoDluPa9LtPa<=$NNd)b}*rN1My1oH=YqyRCHwp^}Z{LW8}XF6yxjrS2?*#kQO zW*6TA7jNFUN)TA)ae%_Pe$5KPE}ubRDk5nU!RLfY z=RC*q%cYA4%qa&?SU%iiGyDbRIMDjRIA*x$^jAnrC^-ZgBuZp#hqVp~L=?+rsKxz) zVmPMBUNfgpZ#i9y2}6P&n_|!Ki`q0QMz}`iOKiL84gsa_WK2{Pu$dQGEnwzL$n+{q zRfUn6>3iLWFKT6a9d(aLQPBy5=rZ@OdsjKF46O394JGo@{bK$;j^o}ATJFsdw{DZx z2m4>t7%KV$1u|jK&pqd zTXY0R3thuR6g6;?qq0+xQuk}lqUhUt02bCw0)oQa+*)4iujS1Tu_?$`ksL(})hFU`yFCeF+nF7bVXN&6w zm89d}2Y=DFnm22fZpY zQCFDB-|rX_L8CJD%;UpxBh0=^$_|N5TOA? z1KU?tsF>IMVq0L`WU|vy@hk4|@bx4C0#Dve*iQLhLXK|nzAACLw5I|1>MCN~mAtmG z!Tj){{PyF6<8DvVcNB^=1`c~21O>(8i*hpcr?;kmLg7oCY0^)p#D z>DVEcm``ns0WU*=OFduwmH~~d8f_|63%I43 zSKUZ+@>Z+bFVcZ`H>$lpYD`=gf@*}c6wv+xNi5auQIk}I7$wl0ti~$42L_^d7ov^8*8p<5EXKd>!QqOq zSf33Dh8|^xg;$!jWJO$!9Vp<`(?0>9LsE?J7H3$ z30K02rgJZQ(jLtpZis{dZXyUmfHwebP&pLfd7KGPv0N@nRPB_m0$lp~HAn=bhD-a%^n7@2}ijc9mYx- zD{5JqPAtF)G8pOAP}sxHsZ(cuA=iHs2_q&)N8rq?wf^vUxQpC(doxU>C>T?qyjx zOeoUdT1TSJN}Mj_Gj4i*KH)D`%jaedwT4GrK(jD6lkVscMtdi!+h9ka2HK-F+fPNy zYK%!s#tkh&P^RC;zhwsb9oac_zt3Wm@e^Y9$TXKyxGdwdvKAoN5Ap6`CK%%Aa64bg z3Wu~0ZEfwLh09?OKo^!#N2Y`3oT6^>(cx~~OR*hR#X9yA*VrG66kB1^7KGBJ8lME7VeoFp zo>2{3c2JmJYogzxtsEn6fJRwnz{1J`Qek?#yTSi<;)?+W0`1S2=}mEqwkHWhL4^tH zqG@lf5pRgs^~E7gE}a#!vnvS?4=)}HBPn8Y@2ZND@FaCO+w1*heeLM%<h&3uNM1 zL1GdTh#_+YK{d#nR-+)s1CApmt#6ThQxofrjV}x%K44*cedXhzXtYjy0E# zg{fzihv+J`<1dB}e$|cb-nkXvFy9`h6IX`r4f>7zd<*DTcQEwW37A&43P1V(`fFKD zXg#W>{VFz`NN0afQu^p%Kbqh_!TL|d{)xXgS#MJZ_oh70ltb0fu}#qhHUWUW+&Mzd z?>77QFIZlnBj8RQR6gPI$l%&t&WEgDWOJ<7wYGnwP9!YHT%g_gdKkNaC!8XPeK#gL zj-~&FX(Ns8J#~t3v8?Xg`WVj+x0E9~Om~eL!aEKQv z>`jr-AD4-ro%{Rkg8?vYJu5T$s7#v4VFwlCDxh6_hTF{z>zP>5=TC&7*J?d|d^~UO ztP$U*;vwj;_y_)=6KuFr5y^wD(?bq3hSm!4IG z#rAI_L_ad=)OpAy6vNs>)2;NSs_Rv}$4`K$F%Sg!t*+Xq*JGe-i1H%4F(2*V4nzzPj$RTB#UNR63 zbcGD+C9^OnJ+tIE&I6z7*3r>wP;Q4Dm@QZZ!^_JnpO+uVQ$RlmxzCG@gY(p1MOpb8 za*NIGP)1?9>*X#OlHn95c1cd7Bl&oD>WW3LpuM@sRbscB{RJk}HK?Dcx+1yNG^`xA%9T z5Z}XYzT~jz>qAolHQ*DWC{HAeB-4&=cdJTEQ(G_?ynTbK39npEqUqhF2vE|| zib_a+p4D9pZWFfxSDiav)x2$F|3g+_s)7YTH@J0>5)*#|7-9k)+EfHz{BW?7;+FXM z*1!2r%(H-#`nCo?JUH?KEUnPI;W7ewvJ+?wKsSM|Gek}m5x{BicW$P^G8#d?ADCFS z&=PQ=W8c0RgLwPK(|K$FG~KU^JYZxTKVbytXxQt3v@R|#LLJwYBB-jWS^=?rJ3DQ^ ze}@or{szrfdwafU&qX>k4^X-_H8-QqPpi_>-io9{p$4}ORK$S6!U%tQC>FwfwxOj3 zKT=h#gBv$6@e&OW7UVx!AMQzBz4DNSMNU{4&V&0}Wh_HxGEdLG`+T3Z-uDl9-}O9e{qFT$%eOwd@9Vy<^E}Su*vH=cpji`; zLYrRFi1&I^6m>{)?kw%j+gJGF3l0z0PX`8~q3(iCCShg)dN5nHmNvX185jTS9c*Kp z*x+(@b|xz7>MV?ma=|{s-LyN1vAFPHY-o^kGi7I@UiEHcxkNmh+8goV>IsUiKK+e? zi`{Wmh6e0MT3T9G4jnmuTmaVPP$ul&Y6CuhoiSC5W5XN?p1vhp?qL0AkLVd9bX+h zJ&wosUXF;-^IIMu^xdCKsj6yiA~asA{Oc^4V2ey9zIc&`Zw%A4n$MqmX_d9K-eF>9 z*=q?2y2hV8PO7vRrNeLR(-DlA0FDzeRXSziYR3}8ezJY~?8?Q9vX4<$VM9*eiwX}X z5tZQA4yP${^MOyJ*Ul+3rm?YbV)%gg=$KjR8?N=46KhMkILE=Y+qIvo`Nt12mxT%yx!m6fBOEbH*b)Tsjae^ z`aR(fHINYfI)I`qKR6_b0lJo4t=W!(BHa!Pa?fiwO?U0twD1!70K zPEk&N{^Nja;D6+|M1LtwaG+^vKD+yVIubE!%fK?m19k(oa3v>!+OQC}>g4BQ7iWEl z!9kZp4rC+GDXDjP!#O1X)SSol?QbmdvDDvTP|+hiKVoJ6Wm2}8ICwDX!2?P#YDfl_ zaLf-6Ec7ESs7ds8D2Sb}j})%blSLz2@wt-;GV*~R&RJ?noFvR-C)|1W z23O5==VtU84N{(ny42~sS=@3s1D(!DZS=O;&XaE?Pyy>~ia+maUwLOMN_p&0J&$F3 zRNb4sg;}t+`dZ^q+oB$9Yiar2+Y3us_m5JYIC5q^u`V<}{A`?M zy_|4*@t=1KGnGFlwAF;!8#ZMb| zVY3g;^YM(rxJ_{HMALRVAwoSXy8YwbZRPjfk%z@{FKMTD9X`RXr>TXbG^Fn5k+n=r zmcGv*_#IW$irM=5I>yxNXKOf&w~m+7`>}b9Q9gd)XuHtu@s}^?;{e86+w_P|ux}p~H5USL2$SSfeF28B}WRHjf;>clX;DFaLSnR$NKw8=u*` zZfWR4dc5V^q`UT6qgiNEuL`YpOY z_C-^p)S|Qgxs_Ppa&J*rwRat@{oYT$kw)0g{HnRF{V8Vvgf5gW+k9w?_oj>3h6pUK zeMOVSQfvT9NlbI2W(a8v-$8^NIMe_2`9(wm6B82zc~t8#xWx;%0sgINuV1?%q~g4O zSNy<`^~e$IZ_wK+-^9)CAm1eJF2k!kJK5UZLE%mJU_@3^^C0ImljFQVa8>`h^Yi_U zAS7B0(_bslq#%$cRkEEVB~w|O$L%iL_V)MZphiYlR=(i+$)g>YIb$!3G}Kw~TaV_} ze@^nTfSt(<$7|lmRnvhS^hBNtpWEe-gWeHC`P_qnjtGF3;On8{gVoufS5YZEQNeeC zc>Pv)qG)GX&dnKyv`POZM9Ua{D;|FSPgr=EmPdMJ2`-Lz77(Ys?oI1Y-ckLXxqjFC z;FH?#RD^=ka?QelrKp1o-0r9HdaAyZDkWU1-mr^A_SI9$Y?0oHgBRkP9;3~qZ_>Lf zqwt78R&H)nb2ErtKj-a-L_2=&GKDwD%K#4W*3uV>0hqS0brM<4cJeNj2U&xDdDOr* zEvMHgIkHJjYdibe(++Lz1|jQ3wFj9mUeM6f*LpI3LYAqjqVhQ{)mqdox=vx&xXb-G zzM|67pDitq>lC^cm*+T%;}q(L#{54tR}hh);-bG;3%xRM6fGA*fNf7+QHzVF>sc^)#IaG$#*TpQKTz(LDs#P=y z118wedNV1LqoScfe`Yv$^7}KenJ`0m8}Ve)k;UP9^j-18>0R!D;)l^W@?KqhSZBsy zVP;17bgP~O>_aov7O%9u23A?1Ip%7l&&tgsbG5fk z!f##v!8KxL(Gq?BOT!33d=(bX4tPM;VM%h`AumIP)BEA$M^esA^tz1cOLr+Z+$r&1 zTD>>QG}hCm=GUEN&fC#+&CT=!ie|?7y(E5I^jc-jr;})EOZ{jZt^ay6@3T*u`%ojt zmyP;#sFu0MFm6Zi0it6q!S8q5JhHWFzp93uerx%FPI-Bf?G)rD_leKlq zt4A3J4iXhGOt%4hfvCV}M4vMnb$3oU49dnET}t`pF+WZr*~>xLgKP7mCKfMXaMBr<{CMEYqadaV9{N^B6<4{+RptN zeEhdTj+T~|z_)nbXt1O?NhV&GHOccZ$>~^J*@lWqo|N+S46xlghv+YFT~hU)bhmH< z#`y7m9iXhPzXBZ+R+~VG=JF2+*j%B)>7kWin5D&qtnJoThLbETEQHy>aL7nR(Jay1 zUfSuq#`8j~r);n^)C)#rblke`^2Yjd;pza;9y1=CQ^D_&%z8G!s}&S>VDDdPDGr}&m`H)0&y-ge^@n^^O} zdeh>H%X^Oo)d-rU1jjkC5ut0If6))1;>kfaix2|aq^bllPtMQPTn{6Zvwr^S9UTNQ zp{2XKp|P>?TgryFtgLKMP!KpQ9WH`04Q8_O(tQKm$B!>AP7h#Wo?S@&G4QG}vFMM@ zO9q{^v#uQiYbS82A3Pecckiy$Y;lj*=Q#j+X7p);_r!-A^-rfE`pEOs7|qwV1bao5 zvCq3-0c^UoH|~?V0%;aJ%9uL$N8r?%9VaY3cIChNCDTwm)Tk6MQnlXZCt3AGU?Qs2 z<4c%<@_-ScKX}dAz53rEp9S*NC+%p;MkgfnAiCw|$mAX z)&4a0zRY-0!!uDdJFAeS!+;4dB_$A{;egHL0)QgNhW41c{3!n(ix*u)U_LNln*3KOB{g&UVko)r0G+;Cs zsdagfIyGAin6>OC)$xx0{+A%BUf@LPgBNxSiVc8_Yo{u}h)`GU%RSi3Y!1I)P%@Dq zLBDNd$W$KWT3=UvPRSy%>$FL_hOvyYvdK-m?f@6)^I%p&6?sa}Yjx2MM>9c5MHPM4 zLJhNXd`Cq?nfAMFseXGdt7+4d_uM4DX?xv|Jf&9&-@84ySEVyDEo`jzQBu)8exRVh z`24v=1^4l0k@zdDJO_Mae80mVfq0<4lt~?qvJxG}WYOUDi1}ofaP@;#24ESyJH}f* zJWRd3;fMn`DlggrqhW*Qx7{oazJaKA# zZEXejdBUawl$ATazOJ{HZ_PY}Q4Q5XdE?~#{>(y`mBnczIGRdIO5#BzY=%M%sqgsM zm|N`jFZK1!t*tl6VvCqFcm~Vo{Vb#3XlqaZ9O$Obw-aDs8J8Lz))4X%Ao$LnwbOgj zi8YUmNI7HBM$B^`kviwJkQp0Rbf`HlGdNJ@3g_{ipuT#_0w=ZI4J(c|Pou;zd1CH#eb|=!JF_oERbV1|=A09}Mu&Ouj3{ zd|#0aPMIXCae?*EcY}i-Cl|57N4#X*QVp%D7LZhVP%qTx7!osda&`YV7XTcg>X%V_ z!eQciG9_g9?mg)6ThI$hYpeHIhIWT&f+^y~AU`_%*=?2wL^vx;6(r$Fqfg{cM^E%l zoZ?_5K_Ick2c{3!QA@6MQ0mmBrj zt=lUNv(Y5o5^oPK%rW_R21?3`!7V3Gow^?qqFd&1aCqWv-KhCw+O5yOM5&iW!H!6N zlOrK3YlYg!QkQfG4;PZwU1~-K;#Nx2h%wI+cn~7BAs;_|YKS?PSy~zw8F}u=ktCNt zL26xgifU@f85!5LwL43#?-#*KI$V1l97U`19y_Z$FZJvx@p9b2t)-@-DhzW*8382m z4=Qy~m8X`WvIbeBVWgt%YWViDEdLG~ub=E3i`z1iE=s61EGdbHHI;&}9=6F7(uSWu z?S`GIZg+HO!KDZMu%Ei>yG{411lSQs2lvM^X6HOVl7H+?mxFCy!;9P8HD2Ki9`m;< zQ%({jO&1P}XAP9)mIEV z=AGdV5LtkTyQ|1ZQ{zTPb`X5@U(n5%43FCgQ&dqY@!k-Px+ZsT^~1);=M%M_ZO=dD zEt+|F&%SC*>@%gUY!9$%-FP~)+&3o!O!;wcn!84`d@fpmRQs-HulSfQ^7{9ggLM|5 z)&|P=nw|KitNRFjT3+v6SFhH9Jh`c2E@>sLR$5@!d-lU1!7P6tZ;+%q!9DwvMOYhb zqP?D;wPjvQ*^)<+f_0yUGyWMEF*X`}dqWXl9hU3BAu&0nQf)m-z^?x>r#jI)QI%_F zz!EFF@-x^pa__`80=Qa4KB>E0&V&%ZSxsm&@%{UE%$RZ8i&7E?7Q~1IB{g+Z(oqI2 zyXuFym$1qLKW*{Er{ad|v^4uh5}SS;2(_?CX4<=hSwwMfWU<2NDF3yliNvN|J9px6 zZt$$YSRc#{p$o3Ux9A*wJ^9N0%Ch7SpYQ5YcBPq%eF28YYSx(lDdkOa!YQQX6+-+ml>jflRQVA#OnlgJM>LHW?PB1#V z(?O}{E#FzFi!darpGUr7YI+(uDavwM?*_pf=c`87zvv&ydRpH(B*LUq44-ere*nJ_ zLSjdQ{aHNxH+sefRKR@No`csNL4(B99DSqnA|gdK9b~;@?YZo7v4^RG!fbS1H2Kc0 z$nprQ(|Xi9YL^}#uD3hpYhYv3I2fcsI^Qc9@$f&~-n?Bd{`?LCC%d`%8vin2c3FM> z!^DklmkWQQ)U;Y&dje>dgN298jvXcAK7k(VLwvEGx<=54>CxMluNQCJ;{u;Ct4vnm9N)VHI-|j;?fc zPaw08jI8#=6t;b7>Y1P78>{ z%3*t6kP^%CebQYkwsU`4F!qpuOZ8{q=gWsk7UM`|KYfz2vzv~MWq@_km=l;lw2-R-VszgIzYkddkT{Q1iH8#{5TW58T((x+HYN@4L! z&in=`EL$&0c5Qk;e=2({u?grc5^LKij!3v;;Jgy^T$VgcNl}05$z%t6+KclQiy%r5 zHhfV?$OUg3J32En69F+ZddwSK1!2ti!{dNE1ewnj)>k3lAE+y0PeR@a7pmWv{9ziR zu_Q+olxP3D7M5ds7=`{8)YFlwtkcKw#DP0zcc@ARS~s6Z1;nFL)f0m-@(r%+;$elameErHfRQm6Kk) zX#V!C&uu`?JHKtaf0gls=IONKLrMMQb2+QrDEU2C7tbshOiR2}0tU-OL-Wy?2kr4Q zZp+~}>Y2o=j?op;+-&*{VnUGMw-6xb=;`%zvzL2kKYH{CQEh5!3Tc<< zMy4v71#lq;UDxPS$kJTXMSQsjObY$o+v$Q$U<&r=(Ix^XIWW&?9PtSmLO9%!=z%hf zp)KFP_w?u~Da~Zcbb()umtbL5QqpG5JJa&=UB&PU6!Bj7KnoWI64>brpvs0npjX)< zbl-VAYj!r^xiOC*CbYJ-Jzdev)<{Q)?SAJZqk3`nFY~vq?H^0L=tqhic!>vBUVuCk z!YDkS61i#!Efi8ZjM5$V@(;L1N3-uYOE_3Xp>JC!egF^&Wfm(luAy>v>sjZ)XeyjK z*z1T(*N!Q}nMzaB6%)m7#krD<3n+D-eJr(sz5$9tKKk9@zhAk6P6m{Ehxjdr&*YSp z=;-N{r>9d8VCmxyBKhh3{(aLe_6fY1j!wy|S3xm{H+X}Dj|mF4fBz111x2^iM@>r> zV+DQb>uP`UJ4Lx?8KbV1*$r&tI>e7!3)3j!g1wWdbAAWJ^Rwr*Yv7lg`(~pi#~>q2 zkt%uL54$Y^usC^mW|02jQ-5ZLUwMIK40-{G3`R#sH!_r*|Fs3SUkGw9XA<**V#J=~ zamQLMB!-xm;0DB{E{4|>bCfQG{jl5kDI_338pM}tf##2~i3!+u({bNz7Uo9P5ddI} z#$TXWz<2iU%5^t}UzaDxA|5<|3=CGGeO~ksm4N|rRbIZ@>-@%IQDU^vf*lV2yo( z_zM55`7uo_$>`_}?)w2=1wYXhdn|2r^X5JrJp1;s>`wNYm&e#ndt4cVg)rEZS? ziF#^5FZWnok!^Nn6XE+!bu9yiAftJHPt(tFkHp0hr_pQ#M{eMIO`sfPwt}<3Hzg7i zPsz&Cc-?*w;^D!$?e6leyGys$W&hNW(lzoK?Pnk3PN8;UV`GEK4w^X3`Wnb?(TWrE zSoE=yn$-1Pb1^)9pr)n*F%=DT3(hJ8@gsP#vSJhd z0XVIAz>Rx@&rMV#nbPi;17bL%)8hXld;vHPBJwIVCr$9L!)j!3i$|z}&J`3uvg_+;IjR ze+=j)={T^t5tZ6II_$k&wr=&u0ibWP2%jfFHH5f^hK97c?OD?{bmp_xFWd-LCl3tt zXyhP#xP*2u95U#1|0-wqZz-RH-est}+?$!2dNYCTUGC21z3bXB2P7g;Hxh^0#2iQF zOQq=eKW=pIxOkZAB`pp9H+Stz6ou6HB(aHG381WMX6fHX$Eh`xDRU_hM9F*i`e`!? z#>Onqohv}RAQMLoKiqk{ZB*9Dsjw$48zUBvva#8P{cE0l7Tfx|?o&}jLF8)TTk3jFb6YQ$b+dPza%t7~tuyt`M$j%<&s$6n; z^7JYCGMTSlE%jDz9;4k^?vr;X5nW;eV17*35cbY7{@#HZ2v|KnA7!uM|;+k7tzM*$co(o})q%|46 z4xEYE#yH*7{LRhNsyb41hq9_$OCY#8a;E!Mw?v6`tsxH%?d?7{n{3Uh{!LZdqLcfDfg`;z_bF29qX^r`G&JQN>V z!p;^dXZYy5$fx0`=>3DnDOJ_IPYZ`kN^MeKQBhN4TJL*Kl6MzoRtT7-QM}JcOk~B} z5JIE0@qTVPBQL=8*QIZWUaT<K~T(fQ8T>*aQ&J4 zQodgMzZb{ESGWJPdxk4UZ z!xw9E=9(uT7n!P*#ew?RI%A%T5)!sMK8rvc4&Kwqb7@owY!AJ>PD-j?ba>t3am?4Q z!{EB76YaTzJ%W?*bIUKm?*KWfFzBDSH+ciXrA zccb<~LHfQ3XFuTs7T?ZtBGh1M%NEtMe8mGBQa}|!(Ic`xd;QSQeEf*{58Z)dNdoE6 zm-Z;7r5-Nl5{ir46>Klcq?>=bzM7ic57b=z8%&dj(%*n5%6Fak-=|z4eM*17A@M*} z<&#KG`Xe5KhL*OE$yEV91Fhe`vt~R?6;ccKt$QpLV!t=|`&V8|i{#}5N2gfcvxC+O zMpjMNMV^Kg|-G zqy#a*;gccm#uxT|n^-JIMNC5sM@Ks_Tmbb*TYNZp%H4%K{uKx3w39;-z5m5taD}vQ3zZAEj^9E_7VcMe0vzWLuO!ihkF)ejR;HBzEnk?&ow9 z_K;RL?3tmSj)nOiL3mg0v7`%M+L-oENKZdWK*$mnb6Aq9#(4eF35TI7G*7+gqax?l z>jGT#L`z0Rl&(ogSAVpepUFo?zPh-qlC}hZ{72Y?i?cIsRP-66ZRci59|G%>ojAaT z!22b8R`hD$!soV*+^0_uOg!BFl9W)r2;i_|CV^DYaiF$DH{&~X{~HGTO@!>`BbdH= zVV|O_Ny{0ba4GYf)XT1FQTdimHIZFyUwaXnVSV)Q%F&4wzyHGLE(Ej&@QpW#yDE}R zJcMMHv^)U&5>ri~GQOKyRU%YFQtwFJEGgQL9 zx9kV0DRr`(wv%jPC};yoZsHHTSxEO-Sw$uGw819dZ*vou7(xx2s12hi?t<|Pa5dCG z@U-z~O5z!R^T46Ek2^jZp9ZY{ENl1~S8TRzkx$kY_#$d)(U&Pp{JWi#dvQC}QQ*Lp zdxk9ZOgIy!ka2QyG8oxQ$;$2qv$wx%`yZ$&h%29Ku>~(&zcTo{CEk1!flOfWf8VZL z3|FP2S!B=VFHz$W_xH?iS}w9&-ST>`@N3T%5K9qxcB29(79Xr`>dDd&pW8t#Sg7{n zBLhjrI~7OuF9vvfqY+q`n4Vr@Qb$KXc@tZsZ+q~5g!bqtZp3gtkW-U5`R)?CtKt z@h^URox#`adK3`>zg6_qQNV}o+SMl@r=xL2;B|_+*i9j|_Kpy?Wl5Ftf6%G79r?RtDn(o{O81T7?E81M_i{rIS-ZyTpNT>(3@;S# zk@MSw!@?%fTq10%R~+%a))J~u==31nARN@+n3hi}?cEJ7nD}#`+5(zcBvV$(UkSUg zfJCvzF!vp%Wd0Ja)U&rbuYEw*3^K&cI^Q+4Jx9B0fD4ld6VDZ_LB1WVKe*}kRNY{G zGUk`V-t=zeuu!ql5w)6!oByXDyJ^lKqG%JeIiPNwP$02T(aQy;_&wwgx!1W$b3@g`x}eK{mb()Ki)`&d9MuS zbDk~z^QC7-riDIVI?i|`g?YTake`*ce>Ah4Yi=(YLGUCNCh3ep5Q7^yJw1IRwI`Jg&Pt^hi!4!L5!R7RHF!?@)=Q>pV~hk6gp z*l(EjOvuX6{VZ|5ME)(=C^D7X$dO64ma2Dnf>BShOglp>AM7WK{EnQ}%=JU3UqbKXjKT&Ezrpdsn?r>o(S;o)9ue~LDOza=sEuRI_Xe-H%1m? zOg6lJeSXNl%8j?wROq@rldoTS=aq7bP_Y@icmB!Ll^*G7YOW1e^M+vqK~2rc(uHo9 z9#7L*KY|e7N#pXY3*;jEFVSb|*;D$$llOXzEv8$g4Z+1ayla+!07+Fp8V$ar3klu-ZrwO-?QO6kwer|Moz zva9u4>~-$Y8{$9FqKOM_*w3? z_Wr{Mhj7;`SPDM#5VKoTL^-C z|2?SGh{I&;`B>ouaZB`nfBygeu|I!v#kce5cA4?Lj(blQg)t`V@i#k}gx|(y8P)Ch z??;eaN)z33>V*jUD#o`oOiX2%tCz1#5I&K2a38QPz}als(|`Du{SIyEt5+3;H{tU% zpMDuk6t$v!SwZX4_9!f@@%hDo8x64s;o;^?7r+BdGef%olc!-hpf-MTj|l=jK-ZO60 z9DpjuD5}3wx-@<`6wALeO(WYd-@K(+u1^8OiTx?Tw;I#vR8rGbd#w`0XrYY+{0^h` zo`^=3))7b2e{r_N@@~(5Th+PEGL&&A?%Wlh{yqQy{-JH&Q&tK!oxc9FjtdO3P@lns zN?hCrf4HxknTan27zDT6?5|s?TnZS;%EEz3-$v(DU#lQmD*pEeP~6Nq@?QP-Zx;Uk zwQS3Jjz0u^GR#hmBimDD$uBH8?e}%QE&I10qqf}t=MM{Q8lW?T_@?vQ@hpj>;&!ka z|9`=c-b80YAQ?RsjF3ML*iBfNBo8~Kl}El~$1B~^cO6B)!k;{upKTONdGX@c@82L8 zWXeQxxs~cBeM^m#abrlF&jw1Z=e6|mg6}rcj}FaWH?lSQ2L@0;#iE6P#iW*@1=kBS zY4yf+zRO5ULshY%=e=ff`oN#&S4lrciycRlo=a@acc?MO*?~|w1|TF=F-e*yVOA?j zgNPAA^A}9-UCcMZPe9w#eR1k}2iePqadB&5-m6JdMw)4A89mT4ly7qU`}1fh_Mseir54+UdI7R>y&vEwOgtQKjZ5t zu;KOt?%^?Ut--?NvR%Nb@wV&_U%q5KWxod!A*u=H|1;B}5N42`@ zk^iA=43QV8r5`0WJcQ;q-Q3)Onds=m+8Yd@-LiQb1v>Id!pX)0lH)gVqtQ`Q7WV&( zCsQ4A(1<_ApVFp$%^7TTv=~UI9n{A6XgPPX;A8X6zOm*TNe@DIf(C=)dcCKor}yeK z$pZ{+5Bz=^!cJ{00@=pYhrO>qMN}ZOxJz+R>3vP?56g?=rh9A|lvCtX_i)(QOd`1y z%bx>dwUslj$7>~nV}}WNQ?9=sOJ=Bn>%aIb8C@DkFig%NxTQT-P+~}Qo~`39Kku5@ zch7y~>6aTXo5)!P8xuB~TTzB_#+*NY9iA|O!?^1T0-Mr$hu3w#l>Yb!F5`_OE9y2XB8uVQzd?|dEASj<-mAs%L(XNQ`*T+ko00-8#0=bx#p4in#nI9(XG6Ck^Wpc$# zU6Fh4ni>fk;0%h*hLr-Eto6gK=n#u9>3D0EHdcU;P1n5)vd3tQva*uW81p3CIbc4f zy5wACg$}y8v`=a)_yM4T>cHiPd1D3!292@2`W1u;oFt6PjdP$W7Iq#}_~g57H^=$D z{2#h$ib;1VSx=oBZxq|evk-`~3+zBw6-R45ZVprfk*Bniof(Qy2V6LKes;}6BJhNA zGP)S})NJTE=kFgY$jjq1K{BFnD-EoPx$%SOMa&2PE)>XYr^I>nT!odzFCjrsaWZLU zeqL=`QBl#c@EW-qV*~=Mjk7Emdwm(l%1(J(XXgoImOSfg3q9jevgV{<0Anzd9hcFH zCdJ#(BWJ>E@*IZbSo~n^402h5Ap6my;L?*`e0*8Y^3=3xhDTA8Q)C_6jn z=2Bg~X4$>KpYoi?wOBsF>}f3Wnmv}2E%0LW!B`}*AVe2?eZkCo9e2eL;H`89sEFi2jtQqBuPg!ZA1mL64lpQ7CS%=6t$2ST@DZR-Gz7>Kz6gA@XHziLKwkEfgI(a00%XB(V1$jT+AF1(i^2yI zk2WNTWl~_LbNazA4*6_oaBwlk4ydJBfohF%0B`=P(Q)BD-*}=$+~3+~7EG3{yg|q|uYTB#bT{HQ$avV#2n`NXy_G40B}gFL+sX+eyJ`q4UG!E$**6((2t?NFU2AW1{nI+EpmSj|F@KW zHyCE0y#9`lgG1VtFIK>gl~XSms`n&{d#*mY);V%gnzn&Ye&Vq|e)-0xY$_Pz zq$oDKyYl$f1`Ga=GEv9%5MS}c7|&V9+Bf+kn_3^$+fWj2mKjHQtbO)0(kvqekihuE zn&)^v*TH_fb*r%55?gT{yshTYfx}E9ZZ9ZWGxfYT);%%37k7Le6%X33;8&n_Q(@XZ z0cMhIulNMVY$5_HJhfDtFAk&92XJwcE;vqEkb`tFv@Q{!adipr4nN1@Z7hj{ipbaU+>0tK0Ix%L*2APJ|)_>yBKv zIdjZa<*XeQ+v)ASfsKQ?E~-nW*lnmMMG!dfw}4bQ)!&@detVLKN9pB@nWgc9p5^)R zw7eR)SIWl8R+w)CZ&FDPW<1sKaq&{)sH*!ce6aDKn8c&^e9JYz&VBDj4 zXt^(d8MhAy>b-kAckECU4jsr6rNO`+&yBT()>iA57gxjO#nv2g6iWmGYfI>kRGIzRfFSg;y$G7hzhec<~`(xlf zX*NuAZ^M|XGS8J%Nj8;7=Y}_5-d@ihiT3X0frge(0gE8 zxemqx_TlhFH!kMO4Pmx$(s39O@D*=VwlY!d&(3Gn@fYWk$|s~t1r`F^t6aa_E$k1a zio)1Hd%NCiK24k@;Tj{$xl-vb|2z*ba3E3K!Gw1ZIN_k z4%9Jn$9+M7qsgZjocp1tzHP^j9dyC|Ej%V4aY@G~vVcd_|IqWk{z?)R04OlXWmSYD zJhbx6o>O3%-j_;JOFMPG+D%{! zMkol`txZSXRq|}ef`^ zyb403EvOiZsR$d8hhgX7-gNVaO0og*R4V!8)`WyhU&oq3gkLko1k zBA(E|z$^=%sNIZ0Dz0Lm5Iwem6DLo4~*`&jLvULA}1F7apQFzP?P4Z%@ zpU}V`Y0Dny$hQEKkfiE?n>ZvySVjjawy{XUR{|Nn%I;ACTxrPGEdTP2wMjOyKP9M) z8&-1a8XLW5@@?)*4fM}=@9H#fdF=#el6+q2yBC|+m6VkquZ;{1r8v`R!bg_QiTlbW zSnpvoA=|CL;h>_TGQD>b1oTL06@_1ILH+S^EF0R?ep7qh+#PQUKkx$xc14Q%8!8?A6uXJuOa=havI7L)hQq=w_FVR#~);fy*{xQ+wV` zl6?zD`!CFOqJz;64kR>i_jhX{Z%5mZNzncUK6k!xumWGu@4pgK{2^3akk*oT$6{VO znYyJwWBAOzijON0W2e|*_TJ-F?6u~GqX+;FppMRb3sB_Kow0wjxgKvXgQpCA8Ez6De7u~Kmcoki-Dgyx7z z-wy1<#zy(5EGYg~*tZbXz!M4d)!9?LH&%LRIaDYmJQn)`ki)u}OE^0I#VYfo#A$_; zuXyJ^vWh-4q#PXw2|@{h{#yXE*Kt2EYC3aFg6BpNBX*OMpQgW$lo^f~-$xw(nBWsG z;1eRy;YN9=?BP*D$%+Yl6+UG0UW!TIR&mZFvr`j3MhK8UsU-;Mn)Y^A1W^dGB?6H` zAqgO7d2&)SQDq6NIW1wL?ZGVI`sM~KKUJ*Xd@U=O(xX~rI)CdcNJ3dzr<1<5;Wxle zw#e7Y-@M6ZK>rm5@$4G7Y_KY{?fn z<9GjZ6tAftCCFgO=-Pi##KJde0ThW;h0}X9v=}tTsIUhV)L_5}IZUkp5-xO< z{|u550g|Mz-GbvC#tl|$L&B3KC>E0pnF!k}fN{j5bjrO%khGG2Lx@7(Wfu!_k9h=% z)HqCK*zNL|jEIPDx10bXiR8eK5-=Q~BxDiDExwxZ;S0Bn&XGXH>PlL?-N-3`#5c!D zX>5CL3StQ+@%U4M=LV3R#M=D#i`!3=5z-?N+~UYVrVrGlqs+4yFUt4T)kEN811a&(vhFmafYno0%@l!&;#j5<_8fer3COQ1KhM$SzL$Nx5P^*jnvXG8_}{o=cOC| zh24Mu0-%DLmOF4#RO~aql7aVJx{U7_A~i7lElKuRxX?bbifmilyQ%jGPt9Ns!+Ra4 zFs#wvqGFJjJsouoX}5~?L>WHiYWT5N`>64V{ugjaPYPk^f6?gw{P_RLoml185W3^8 UKxPz3y4hDR$w|JE(7*G40WUM~@&Et; literal 76471 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 diff --git a/07_RegressionModels/02_04_residuals_variation_diagnostics/fig/unnamed-chunk-5-1.png b/07_RegressionModels/02_04_residuals_variation_diagnostics/fig/unnamed-chunk-5-1.png index f24b9b88bdc4677dd018512d75e1557b53083f0a..656dde1c60ada6b7559d21beb29d497da9e5bc0c 100644 GIT binary patch literal 64925 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 +gDYD04NdQ} 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 i2V}fNBGMqzCDLtxAl)6(-QC}r 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

wC!NAe}YjffBoKv6JyKUQ9Jt<>zjG8gy_i*yC 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 GLjMmWL_1Od diff --git a/07_RegressionModels/02_04_residuals_variation_diagnostics/index.html b/07_RegressionModels/02_04_residuals_variation_diagnostics/index.html index b940fec04..3f73bcffd 100644 --- a/07_RegressionModels/02_04_residuals_variation_diagnostics/index.html +++ b/07_RegressionModels/02_04_residuals_variation_diagnostics/index.html @@ -130,17 +130,36 @@

The linear model

  • Define the residuals as \(e_i = Y_i - \hat Y_i = Y_i - \sum_{k=1}^p X_{ik} \hat \beta_j\)
  • Our estimate of residual variation is \(\hat \sigma^2 = \frac{\sum_{i=1}^n e_i^2}{n-p}\), the \(n-p\) so that \(E[\hat \sigma^2] = \sigma^2\)
  • -
    data(swiss); par(mfrow = c(2, 2))
     fit <- lm(Fertility ~ . , data = swiss); plot(fit)
    +
    +

    Influential, high leverage and outlying points

    +
    + +
    +

    Summary of the plot

    Calling a point an outlier is vague. * Outliers can be the result of spurious or real processes. * Outliers can have varying degrees of influence. * Outliers can conform to the regression relationship (i.e being marginally outlying in X or Y, but not outlying given the regression relationship). * Upper left hand point has low leverage, low influence, outlies in a way not conforming to the regression relationship. * Lower left hand point has low leverage, low influence and is not to be an outlier in any sense. * Upper right hand point has high leverage, but chooses not to extert it and thus would have low actual influence by conforming to the regresison relationship of the other points. * Lower right hand point has high leverage and would exert it if it were included in the fit.

    +
    +

    Influence measures

    +
      +
    • Do ?influence.measures to see the full suite of influence measures in stats. The measures include
    • +
    • rstandard - standardized residuals, residuals divided by their standard deviations)
    • +
    • rstudent - standardized residuals, residuals divided by their standard deviations, where the ith data point was deleted in the calculation of the standard deviation for the residual to follow a t distribution
    • +
    • hatvalues - measures of leverage
    • +
    • dffits - change in the predicted response when the \(i^{th}\) point is deleted in fitting the model.
    • +
    • dfbetas - change in individual coefficients when the \(i^{th}\) point is deleted in fitting the model.
    • +
    • cooks.distance - overall change in the coefficients when the \(i^{th}\) point is deleted.
    • +
    • resid - returns the ordinary residuals
    • +
    • resid(fit) / (1 - hatvalues(fit)) where fit is the linear model fit returns the PRESS residuals, i.e. the leave one out cross validation residuals - the difference in the response and the predicted response at data point \(i\), where it was not included in the model fitting.
    • +
    +

    How do I use all of these things?

      @@ -156,6 +175,12 @@

      How do I use all of these things?

    • Influence measures get to the bottom line, ‘how does deleting or including this point impact a particular aspect of the model’.
    +
    +

    Case 1

    +
    + +
    +

    The code

    n <- 100; x <- c(10, rnorm(n)); y <- c(10, c(rnorm(n)))
    @@ -165,11 +190,30 @@ 

    The code

  • The point c(10, 10) has created a strong regression relationship where there shouldn’t be one.
  • +
    +

    Showing a couple of the diagnostic values

    +
    fit <- lm(y ~ x)
    +round(dfbetas(fit)[1 : 10, 2], 3)
    +
         1      2      3      4      5      6      7      8      9     10 
    + 6.332 -0.051 -0.049  0.143  0.000  0.036  0.052 -0.013 -0.003 -0.013 
    +
    round(hatvalues(fit)[1 : 10], 3)
    +
        1     2     3     4     5     6     7     8     9    10 
    +0.468 0.011 0.019 0.028 0.012 0.024 0.011 0.012 0.010 0.014 
    +

    Case 2

    - + +
    +
    +

    Looking at some of the diagnostics

    +
    round(dfbetas(fit2)[1 : 10, 2], 3)
    +
         1      2      3      4      5      6      7      8      9     10 
    + 0.143 -0.065 -0.041 -0.004  0.229 -0.112 -0.103 -0.011 -0.024  0.087 
    +
    round(hatvalues(fit2)[1 : 10], 3)
    +
        1     2     3     4     5     6     7     8     9    10 
    +0.213 0.012 0.010 0.010 0.057 0.052 0.024 0.025 0.011 0.026 

    Example described by Stefanski TAS 2007 Vol 61.

    @@ -180,6 +224,15 @@

    Example described by Stefanski TAS 2007 Vol 61.

    +
    +

    Got our P-values, should we bother to do a residual plot?

    +
    summary(lm(V1 ~ . -1, data = dat))$coef
    +
        Estimate Std. Error   t value     Pr(>|t|)
    +V2 0.9856157 0.12798121  7.701253 1.989126e-14
    +V3 0.9714707 0.12663829  7.671225 2.500259e-14
    +V4 0.8606368 0.11958267  7.197003 8.301184e-13
    +V5 0.9266981 0.08328434 11.126919 4.778110e-28
    +

    Residual plot

    @@ -188,7 +241,6 @@

    P-values significant, O RLY?

    -
    diff --git a/07_RegressionModels/02_05_multipleVariables/index.html b/07_RegressionModels/02_05_multipleVariables/index.html index f87a4d0e3..d410c0c99 100644 --- a/07_RegressionModels/02_05_multipleVariables/index.html +++ b/07_RegressionModels/02_05_multipleVariables/index.html @@ -1,456 +1,306 @@ - - - - Multiple variables - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -

    Multiple variables

    -

    Regression

    -

    Brian Caffo, Jeff Leek, Roger Peng
    Johns Hopkins Bloomberg School of Public Health

    -
    -
    -
    - - - - -
    -

    Multivariable regression

    -
    -
    -
      -
    • We have an entire class on prediction and machine learning, so we'll focus on modeling. - -
        -
      • Prediction has a different set of criteria, needs for interpretability and standards for generalizability.
      • -
      • In modeling, our interest lies in parsimonious, interpretable representations of the data that enhance our understanding of the phenomena under study.
      • -
      • A model is a lense through which to look at your data. (I attribute this quote to Scott Zeger)
      • -
      • Under this philosophy, what's the right model? Whatever model connects the data to a true, parsimonious statement about what you're studying.
      • -
    • -
    • There are nearly uncontable ways that a model can be wrong, in this lecture, we'll focus on variable inclusion and exclusion.
    • -
    • Like nearly all aspects of statistics, good modeling decisions are context dependent. - -
        -
      • A good model for prediction versus one for studying mechanisms versus one for trying to establish causal effects may not be the same.
      • -
    • -
    - -
    - -
    - - -
    -

    The Rumsfeldian triplet

    -
    -
    -

    There are known knowns. These are things we know that we know. There are known unknowns. That is to say, there are things that we know we don't know. But there are also unknown unknowns. There are things we don't know we don't know. Donald Rumsfeld

    - -

    In our context

    - -
      -
    • (Known knowns) Regressors that we know we should check to include in the model and have.
    • -
    • (Known Unknowns) Regressors that we would like to include in the model, but don't have.
    • -
    • (Unknown Unknowns) Regressors that we don't even know about that we should have included in the model.
    • -
    - -
    - -
    - - -
    -

    General rules

    -
    -
    -
      -
    • Omitting variables results in bias in the coeficients of interest - unless their regressors are uncorrelated with the omitted ones. - -
        -
      • This is why we randomize treatments, it attempts to uncorrelate our treatment indicator with variables that we don't have to put in the model.
      • -
      • (If there's too many unobserved confounding variables, even randomization won't help you.)
      • -
    • -
    • Including variables that we shouldn't have increases standard errors of the regression variables. - -
        -
      • Actually, including any new variables increasese (actual, not estimated) standard errors of other regressors. So we don't want to idly throw variables into the model.
      • -
    • -
    • The model must tend toward perfect fit as the number of non-redundant regressors approaches \(n\).
    • -
    • \(R^2\) increases monotonically as more regressors are included.
    • -
    • The SSE decreases monotonically as more regressors are included.
    • -
    - -
    - -
    - - -
    -

    Plot of \(R^2\) versus \(n\)

    -
    -
    -

    For simulations as the number of variables included equals increases to \(n=100\). -No actual regression relationship exist in any simulation

    - -
    plot of chunk unnamed-chunk-1
    - -
    - -
    - - -
    -

    Variance inflation

    -
    -
    -
    n <- 100; nosim <- 1000
    -x1 <- rnorm(n); x2 <- rnorm(n); x3 <- rnorm(n); 
    -betas <- sapply(1 : nosim, function(i){
    -  y <- x1 + rnorm(n, sd = .3)
    -  c(coef(lm(y ~ x1))[2], 
    -    coef(lm(y ~ x1 + x2))[2], 
    -    coef(lm(y ~ x1 + x2 + x3))[2])
    -})
    -round(apply(betas, 1, sd), 5)
    -
    - -
         x1      x1      x1 
    -0.02839 0.02872 0.02884 
    -
    - -
    - -
    - - -
    -

    Variance inflation

    -
    -
    -
    n <- 100; nosim <- 1000
    -x1 <- rnorm(n); x2 <- x1/sqrt(2) + rnorm(n) /sqrt(2)
    -x3 <- x1 * 0.95 + rnorm(n) * sqrt(1 - 0.95^2); 
    -betas <- sapply(1 : nosim, function(i){
    -  y <- x1 + rnorm(n, sd = .3)
    -  c(coef(lm(y ~ x1))[2], 
    -    coef(lm(y ~ x1 + x2))[2], 
    -    coef(lm(y ~ x1 + x2 + x3))[2])
    -})
    -round(apply(betas, 1, sd), 5)
    -
    - -
         x1      x1      x1 
    -0.03131 0.04270 0.09653 
    -
    - -
    - -
    - - -
    -

    Variance inflation factors

    -
    -
    -
      -
    • Notice variance inflation was much worse when we included a variable that -was highly related to x1.
    • -
    • We don't know \(\sigma\), so we can only estimate the increase in the actual standard error of the coefficients for including a regressor.
    • -
    • However, \(\sigma\) drops out of the relative standard errors. If one sequentially adds variables, one can check the variance (or sd) inflation for including each one.
    • -
    • When the other regressors are actually orthogonal to the regressor of interest, then there is no variance inflation.
    • -
    • The variance inflation factor (VIF) is the increase in the variance for the ith regressor compared to the ideal setting where it is orthogonal to the other regressors. - -
        -
      • (The square root of the VIF is the increase in the sd ...)
      • -
    • -
    • Remember, variance inflation is only part of the picture. We want to include certain variables, even if they dramatically inflate our variance.
    • -
    - -
    - -
    - - -
    -

    Revisting our previous simulation

    -
    -
    -
    ##doesn't depend on which y you use,
    -y <- x1 + rnorm(n, sd = .3)
    -a <- summary(lm(y ~ x1))$cov.unscaled[2,2]
    -c(summary(lm(y ~ x1 + x2))$cov.unscaled[2,2],
    -  summary(lm(y~ x1 + x2 + x3))$cov.unscaled[2,2]) / a
    -
    - -
    [1] 1.895 9.948
    -
    - -
    temp <- apply(betas, 1, var); temp[2 : 3] / temp[1]
    -
    - -
       x1    x1 
    -1.860 9.506 
    -
    - -
    - -
    - - -
    -

    Swiss data

    -
    -
    -
    data(swiss); 
    -fit1 <- lm(Fertility ~ Agriculture, data = swiss)
    -a <- summary(fit1)$cov.unscaled[2,2]
    -fit2 <- update(fit, Fertility ~ Agriculture + Examination)
    -fit3 <- update(fit, Fertility ~ Agriculture + Examination + Education)
    -  c(summary(fit2)$cov.unscaled[2,2],
    -    summary(fit3)$cov.unscaled[2,2]) / a 
    -
    - -
    [1] 1.892 2.089
    -
    - -
    - -
    - - -
    -

    Swiss data VIFs,

    -
    -
    -
    library(car)
    -fit <- lm(Fertility ~ . , data = swiss)
    -vif(fit)
    -
    - -
         Agriculture      Examination        Education         Catholic Infant.Mortality 
    -           2.284            3.675            2.775            1.937            1.108 
    -
    - -
    sqrt(vif(fit)) #I prefer sd 
    -
    - -
         Agriculture      Examination        Education         Catholic Infant.Mortality 
    -           1.511            1.917            1.666            1.392            1.052 
    -
    - -
    - -
    - - -
    -

    What about residual variance estimation?

    -
    -
    -
      -
    • Assuming that the model is linear with additive iid errors (with finite variance), we can mathematically describe the impact of omitting necessary variables or including unnecessary ones. - -
        -
      • If we underfit the model, the variance estimate is biased.
      • -
      • If we correctly or overfit the model, including all necessary covariates and/or unnecessary covariates, the variance estimate is unbiased.
      • -
      • However, the variance of the variance is larger if we include unnecessary variables.
      • -
    • -
    - -
    - -
    - - -
    -

    Covariate model selection

    -
    -
    -
      -
    • Automated covariate selection is a difficult topic. It depends heavily on how rich of a covariate space one wants to explore. - -
        -
      • The space of models explodes quickly as you add interactions and polynomial terms.
      • -
    • -
    • In the prediction class, we'll cover many modern methods for traversing large model spaces for the purposes of prediction.
    • -
    • Principal components or factor analytic models on covariates are often useful for reducing complex covariate spaces.
    • -
    • Good design can often eliminate the need for complex model searches at analyses; though often control over the design is limited.
    • -
    • If the models of interest are nested and without lots of parameters differentiating them, it's fairly uncontroversial to use nested likelihood ratio tests. (Example to follow.)
    • -
    • My favoriate approach is as follows. Given a coefficient that I'm interested in, I like to use covariate adjustment and multiple models to probe that effect to evaluate it for robustness and to see what other covariates knock it out. This isn't a terribly systematic approach, but it tends to teach you a lot about the the data as you get your hands dirty.
    • -
    - -
    - -
    - - -
    -

    How to do nested model testing in R

    -
    -
    -
    fit1 <- lm(Fertility ~ Agriculture, data = swiss)
    -fit3 <- update(fit, Fertility ~ Agriculture + Examination + Education)
    -fit5 <- update(fit, Fertility ~ Agriculture + Examination + Education + Catholic + Infant.Mortality)
    -anova(fit1, fit3, fit5)
    -
    - -
    Analysis of Variance Table
    -
    -Model 1: Fertility ~ Agriculture
    -Model 2: Fertility ~ Agriculture + Examination + Education
    -Model 3: Fertility ~ Agriculture + Examination + Education + Catholic + 
    -    Infant.Mortality
    -  Res.Df  RSS Df Sum of Sq    F  Pr(>F)    
    -1     45 6283                              
    -2     43 3181  2      3102 30.2 8.6e-09 ***
    -3     41 2105  2      1076 10.5 0.00021 ***
    ----
    -Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
    -
    - -
    - -
    - - -
    -
    - - - - - - - - - - - - - - \ No newline at end of file + + + + + + + + + + + + + + +Multiple variables + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + +
    +

    Multivariable regression

    +
      +
    • We have an entire class on prediction and machine learning, so we’ll focus on modeling.
    • +
    • Prediction has a different set of criteria, needs for interpretability and standards for generalizability.
    • +
    • In modeling, our interest lies in parsimonious, interpretable representations of the data that enhance our understanding of the phenomena under study.
    • +
    • A model is a lens through which to look at your data. (I attribute this quote to Scott Zeger)
    • +
    • Under this philosophy, what’s the right model? Whatever model connects the data to a true, parsimonious statement about what you’re studying.
    • +
    • There are nearly uncontable ways that a model can be wrong, in this lecture, we’ll focus on variable inclusion and exclusion.
    • +
    • Like nearly all aspects of statistics, good modeling decisions are context dependent.
    • +
    • A good model for prediction versus one for studying mechanisms versus one for trying to establish causal effects may not be the same.
    • +
    +
    +
    +

    The Rumsfeldian triplet

    +

    There are known knowns. These are things we know that we know. There are known unknowns. That is to say, there are things that we know we don’t know. But there are also unknown unknowns. There are things we don’t know we don’t know. Donald Rumsfeld

    +

    In our context * (Known knowns) Regressors that we know we should check to include in the model and have. * (Known Unknowns) Regressors that we would like to include in the model, but don’t have. * (Unknown Unknowns) Regressors that we don’t even know about that we should have included in the model.

    +
    +
    +

    General rules

    +
      +
    • Omitting variables results in bias in the coeficients of interest - unless their regressors are uncorrelated with the omitted ones.
    • +
    • This is why we randomize treatments, it attempts to uncorrelate our treatment indicator with variables that we don’t have to put in the model.
    • +
    • (If there’s too many unobserved confounding variables, even randomization won’t help you.)
    • +
    • Including variables that we shouldn’t have increases standard errors of the regression variables.
    • +
    • Actually, including any new variables increases (actual, not estimated) standard errors of other regressors. So we don’t want to idly throw variables into the model.
    • +
    • The model must tend toward perfect fit as the number of non-redundant regressors approaches \(n\).
    • +
    • \(R^2\) increases monotonically as more regressors are included.
    • +
    • The SSE decreases monotonically as more regressors are included.
    • +
    +
    +
    +

    Plot of \(R^2\) versus \(n\)

    +For simulations as the number of variables included equals increases to \(n=100\). No actual regression relationship exist in any simulation +
    + +
    +
    +
    +

    Variance inflation

    +
    n <- 100; nosim <- 1000
    +x1 <- rnorm(n); x2 <- rnorm(n); x3 <- rnorm(n); 
    +betas <- sapply(1 : nosim, function(i){
    +  y <- x1 + rnorm(n, sd = .3)
    +  c(coef(lm(y ~ x1))[2], 
    +    coef(lm(y ~ x1 + x2))[2], 
    +    coef(lm(y ~ x1 + x2 + x3))[2])
    +})
    +round(apply(betas, 1, sd), 5)
    +
         x1      x1      x1 
    +0.02895 0.02898 0.02898 
    +
    +
    +

    Variance inflation

    +
    n <- 100; nosim <- 1000
    +x1 <- rnorm(n); x2 <- x1/sqrt(2) + rnorm(n) /sqrt(2)
    +x3 <- x1 * 0.95 + rnorm(n) * sqrt(1 - 0.95^2); 
    +betas <- sapply(1 : nosim, function(i){
    +  y <- x1 + rnorm(n, sd = .3)
    +  c(coef(lm(y ~ x1))[2], 
    +    coef(lm(y ~ x1 + x2))[2], 
    +    coef(lm(y ~ x1 + x2 + x3))[2])
    +})
    +round(apply(betas, 1, sd), 5)
    +
         x1      x1      x1 
    +0.03055 0.04543 0.10559 
    +
    +
    +

    Variance inflation factors

    +
      +
    • Notice variance inflation was much worse when we included a variable that was highly related to x1.
    • +
    • We don’t know \(\sigma\), so we can only estimate the increase in the actual standard error of the coefficients for including a regressor.
    • +
    • However, \(\sigma\) drops out of the relative standard errors. If one sequentially adds variables, one can check the variance (or sd) inflation for including each one.
    • +
    • When the other regressors are actually orthogonal to the regressor of interest, then there is no variance inflation.
    • +
    • The variance inflation factor (VIF) is the increase in the variance for the ith regressor compared to the ideal setting where it is orthogonal to the other regressors.
    • +
    • (The square root of the VIF is the increase in the sd …)
    • +
    • Remember, variance inflation is only part of the picture. We want to include certain variables, even if they dramatically inflate our variance.
    • +
    +
    +
    +

    Revisting our previous simulation

    +
    ##doesn't depend on which y you use,
    +y <- x1 + rnorm(n, sd = .3)
    +a <- summary(lm(y ~ x1))$cov.unscaled[2,2]
    +c(summary(lm(y ~ x1 + x2))$cov.unscaled[2,2],
    +  summary(lm(y~ x1 + x2 + x3))$cov.unscaled[2,2]) / a
    +
    [1]  2.150329 12.391310
    +
    temp <- apply(betas, 1, var); temp[2 : 3] / temp[1]
    +
           x1        x1 
    + 2.211237 11.946384 
    +
    +
    +

    Swiss data

    +
    data(swiss); 
    +fit <- fit1 <- lm(Fertility ~ Agriculture, data = swiss)
    +a <- summary(fit1)$cov.unscaled[2,2]
    +fit2 <- update(fit, Fertility ~ Agriculture + Examination)
    +fit3 <- update(fit, Fertility ~ Agriculture + Examination + Education)
    +  c(summary(fit2)$cov.unscaled[2,2],
    +    summary(fit3)$cov.unscaled[2,2]) / a 
    +
    [1] 1.891576 2.089159
    +
    +
    +

    Swiss data VIFs,

    +
    library(car)
    +fit <- lm(Fertility ~ . , data = swiss)
    +vif(fit)
    +
         Agriculture      Examination        Education         Catholic Infant.Mortality 
    +        2.284129         3.675420         2.774943         1.937160         1.107542 
    +
    sqrt(vif(fit)) #I prefer sd 
    +
         Agriculture      Examination        Education         Catholic Infant.Mortality 
    +        1.511334         1.917138         1.665816         1.391819         1.052398 
    +
    +
    +

    What about residual variance estimation?

    +
      +
    • Assuming that the model is linear with additive iid errors (with finite variance), we can mathematically describe the impact of omitting necessary variables or including unnecessary ones.
    • +
    • If we underfit the model, the variance estimate is biased.
    • +
    • If we correctly or overfit the model, including all necessary covariates and/or unnecessary covariates, the variance estimate is unbiased. +
        +
      • However, the variance of the variance is larger if we include unnecessary variables.
      • +
    • +
    +
    +
    +

    Covariate model selection

    +
      +
    • Automated covariate selection is a difficult topic. It depends heavily on how rich of a covariate space one wants to explore.
    • +
    • The space of models explodes quickly as you add interactions and polynomial terms.
    • +
    • In the prediction class, we’ll cover many modern methods for traversing large model spaces for the purposes of prediction.
    • +
    • Principal components or factor analytic models on covariates are often useful for reducing complex covariate spaces.
    • +
    • Good design can often eliminate the need for complex model searches at analyses; though often control over the design is limited.
    • +
    • If the models of interest are nested and without lots of parameters differentiating them, it’s fairly uncontroversial to use nested likelihood ratio tests. (Example to follow.)
    • +
    • My favoriate approach is as follows. Given a coefficient that I’m interested in, I like to use covariate adjustment and multiple models to probe that effect to evaluate it for robustness and to see what other covariates knock it out. This isn’t a terribly systematic approach, but it tends to teach you a lot about the the data as you get your hands dirty.
    • +
    +
    +
    +

    How to do nested model testing in R

    +
    fit1 <- lm(Fertility ~ Agriculture, data = swiss)
    +fit3 <- update(fit, Fertility ~ Agriculture + Examination + Education)
    +fit5 <- update(fit, Fertility ~ Agriculture + Examination + Education + Catholic + Infant.Mortality)
    +anova(fit1, fit3, fit5)
    +
    Analysis of Variance Table
    +
    +Model 1: Fertility ~ Agriculture
    +Model 2: Fertility ~ Agriculture + Examination + Education
    +Model 3: Fertility ~ Agriculture + Examination + Education + Catholic + 
    +    Infant.Mortality
    +  Res.Df    RSS Df Sum of Sq      F    Pr(>F)    
    +1     45 6283.1                                  
    +2     43 3180.9  2    3102.2 30.211 8.638e-09 ***
    +3     41 2105.0  2    1075.9 10.477 0.0002111 ***
    +---
    +Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
    +
    + + + + +
    + + + + + + + + diff --git a/07_RegressionModels/03_01_glms/index.html b/07_RegressionModels/03_01_glms/index.html index 2bdb47aca..947240219 100644 --- a/07_RegressionModels/03_01_glms/index.html +++ b/07_RegressionModels/03_01_glms/index.html @@ -1,317 +1,251 @@ - - - - Generalized linear models - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -

    Generalized linear models

    -

    Regression Models

    -

    Brian Caffo, Jeff Leek, Roger Peng
    Johns Hopkins Bloomberg School of Public Health

    -
    -
    -
    - - - - -
    -

    Linear models

    -
    -
    -
      -
    • Linear models are the most useful applied statistical technique. However, they are not without their limitations. - -
        -
      • Additive response models don't make much sense if the response is discrete, or stricly positive.
      • -
      • Additive error models often don't make sense, for example if the outcome has to be positive.
      • -
      • Transformations are often hard to interpret.
      • -
      • There's value in modeling the data on the scale that it was collected.
      • -
      • Particularly interpetable transformations, natural logarithms in specific, aren't applicable for negative or zero values.
      • -
    • -
    - -
    - -
    - - -
    -

    Generalized linear models

    -
    -
    -
      -
    • Introduced in a 1972 RSSB paper by Nelder and Wedderburn.
    • -
    • Involves three components - -
        -
      • An exponential family model for the response.
      • -
      • A systematic component via a linear predictor.
      • -
      • A link function that connects the means of the response to the linear predictor.
      • -
    • -
    - -
    - -
    - - -
    -

    Example, linear models

    -
    -
    -
      -
    • Assume that \(Y_i \sim N(\mu_i, \sigma^2)\) (the Gaussian distribution is an exponential family distribution.)
    • -
    • Define the linear predictor to be \(\eta_i = \sum_{k=1}^p X_{ik} \beta_k\).
    • -
    • The link function as \(g\) so that \(g(\mu) = \eta\). - -
        -
      • For linear models \(g(\mu) = \mu\) so that \(\mu_i = \eta_i\)
      • -
    • -
    • This yields the same likelihood model as our additive error Gaussian linear model -\[ -Y_i = \sum_{k=1}^p X_{ik} \beta_k + \epsilon_{i} -\] -where \(\epsilon_i \stackrel{iid}{\sim} N(0, \sigma^2)\)
    • -
    - -
    - -
    - - -
    -

    Example, logistic regression

    -
    -
    -
      -
    • Assume that \(Y_i \sim Bernoulli(\mu_i)\) so that \(E[Y_i] = \mu_i\) where \(0\leq \mu_i \leq 1\).
    • -
    • Linear predictor \(\eta_i = \sum_{k=1}^p X_{ik} \beta_k\)
    • -
    • Link function -\(g(\mu) = \eta = \log\left( \frac{\mu}{1 - \mu}\right)\) -\(g\) is the (natural) log odds, referred to as the logit.
    • -
    • Note then we can invert the logit function as -\[ -\mu_i = \frac{\exp(\eta_i)}{1 + \exp(\eta_i)} ~~~\mbox{and}~~~ -1 - \mu_i = \frac{1}{1 + \exp(\eta_i)} -\] -Thus the likelihood is -\[ -\prod_{i=1}^n \mu_i^{y_i} (1 - \mu_i)^{1-y_i} -= \exp\left(\sum_{i=1}^n y_i \eta_i \right) -\prod_{i=1}^n (1 + \eta_i)^{-1} -\]
    • -
    - -
    - -
    - - -
    -

    Example, Poisson regression

    -
    -
    -
      -
    • Assume that \(Y_i \sim Poisson(\mu_i)\) so that \(E[Y_i] = \mu_i\) where \(0\leq \mu_i\)
    • -
    • Linear predictor \(\eta_i = \sum_{k=1}^p X_{ik} \beta_k\)
    • -
    • Link function -\(g(\mu) = \eta = \log(\mu)\)
    • -
    • Recall that \(e^x\) is the inverse of \(\log(x)\) so that -\[ -\mu_i = e^{\eta_i} -\] -Thus, the likelihood is -\[ -\prod_{i=1}^n (y_i !)^{-1} \mu_i^{y_i}e^{-\mu_i} -\propto \exp\left(\sum_{i=1}^n y_i \eta_i - \sum_{i=1}^n \mu_i\right) -\]
    • -
    - -
    - -
    - - -
    -

    Some things to note

    -
    -
    -
      -
    • In each case, the only way in which the likelihood depends on the data is through -\[\sum_{i=1}^n y_i \eta_i = -\sum_{i=1}^n y_i\sum_{k=1}^p X_{ik} \beta_k = -\sum_{k=1}^p \beta_k\sum_{i=1}^n X_{ik} y_i -\] -Thus if we don't need the full data, only \(\sum_{i=1}^n X_{ik} y_i\). This simplification is a consequence of chosing so-called 'canonical' link functions.
    • -
    • (This has to be derived). All models acheive their maximum at the root of the so called normal equations -\[ -0=\sum_{i=1}^n \frac{(Y_i - \mu_i)}{Var(Y_i)}W_i -\] -where \(W_i\) are the derivative of the inverse of the link function.
    • -
    - -
    - -
    - - -
    -

    About variances

    -
    -
    -

    \[ -0=\sum_{i=1}^n \frac{(Y_i - \mu_i)}{Var(Y_i)}W_i -\]

    - -
      -
    • For the linear model \(Var(Y_i) = \sigma^2\) is constant.
    • -
    • For Bernoulli case \(Var(Y_i) = \mu_i (1 - \mu_i)\)
    • -
    • For the Poisson case \(Var(Y_i) = \mu_i\).
    • -
    • In the latter cases, it is often relevant to have a more flexible variance model, even if it doesn't correspond to an actual likelihood -\[ -0=\sum_{i=1}^n \frac{(Y_i - \mu_i)}{\phi \mu_i (1 - \mu_i ) } W_i ~~~\mbox{and}~~~ -0=\sum_{i=1}^n \frac{(Y_i - \mu_i)}{\phi \mu_i} W_i -\]
    • -
    • These are called 'quasi-likelihood' normal equations
    • -
    - -
    - -
    - - -
    -

    Odds and ends

    -
    -
    -
      -
    • The normal equations have to be solved iteratively. Resulting in -\(\hat \beta_k\) and, if included, \(\hat \phi\).
    • -
    • Predicted linear predictor responses can be obtained as \(\hat \eta = \sum_{k=1}^p X_k \hat \beta_k\)
    • -
    • Predicted mean responses as \(\hat \mu = g^{-1}(\hat \eta)\)
    • -
    • Coefficients are interpretted as -\[ -g(E[Y | X_k = x_k + 1, X_{\sim k} = x_{\sim k}]) - g(E[Y | X_k = x_k, X_{\sim k}=x_{\sim k}]) = \beta_k -\] -or the change in the link function of the expected response per unit change in \(X_k\) holding other regressors constant.
    • -
    • Variations on Newon/Raphson's algorithm are used to do it.
    • -
    • Asymptotics are used for inference usually.
    • -
    • Many of the ideas from linear models can be brought over to GLMs.
    • -
    - -
    - -
    - - -
    - - - - - - - - - - - - - - - \ No newline at end of file + + + + + + + + + + + + + + +Generalized linear models + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + +
    +

    Linear models

    +
      +
    • Linear models are the most useful applied statistical technique. However, they are not without their limitations.
    • +
    • Additive response models don’t make much sense if the response is discrete, or stricly positive.
    • +
    • Additive error models often don’t make sense, for example if the outcome has to be positive.
    • +
    • Transformations are often hard to interpret. +
        +
      • There’s value in modeling the data on the scale that it was collected.
      • +
      • Particularly interpetable transformations, natural logarithms in specific, aren’t applicable for negative or zero values.
      • +
    • +
    +
    +
    +

    Generalized linear models

    +
      +
    • Introduced in a 1972 RSSB paper by Nelder and Wedderburn.
    • +
    • Involves three components
    • +
    • An exponential family model for the response.
    • +
    • A systematic component via a linear predictor.
    • +
    • A link function that connects the means of the response to the linear predictor.
    • +
    +
    +
    +

    Example, linear models

    +
      +
    • Assume that \(Y_i \sim N(\mu_i, \sigma^2)\) (the Gaussian distribution is an exponential family distribution.)
    • +
    • Define the linear predictor to be \(\eta_i = \sum_{k=1}^p X_{ik} \beta_k\).
    • +
    • The link function as \(g\) so that \(g(\mu) = \eta\).
    • +
    • For linear models \(g(\mu) = \mu\) so that \(\mu_i = \eta_i\)
    • +
    • This yields the same likelihood model as our additive error Gaussian linear model \[ +Y_i = \sum_{k=1}^p X_{ik} \beta_k + \epsilon_{i} +\] where \(\epsilon_i \stackrel{iid}{\sim} N(0, \sigma^2)\)
    • +
    +
    +
    +

    Example, logistic regression

    +
      +
    • Assume that \(Y_i \sim Bernoulli(\mu_i)\) so that \(E[Y_i] = \mu_i\) where \(0\leq \mu_i \leq 1\).
    • +
    • Linear predictor \(\eta_i = \sum_{k=1}^p X_{ik} \beta_k\)
    • +
    • Link function \(g(\mu) = \eta = \log\left( \frac{\mu}{1 - \mu}\right)\) \(g\) is the (natural) log odds, referred to as the logit.
    • +
    • Note then we can invert the logit function as \[ +\mu_i = \frac{\exp(\eta_i)}{1 + \exp(\eta_i)} ~~~\mbox{and}~~~ +1 - \mu_i = \frac{1}{1 + \exp(\eta_i)} +\] Thus the likelihood is \[ +\prod_{i=1}^n \mu_i^{y_i} (1 - \mu_i)^{1-y_i} += \exp\left(\sum_{i=1}^n y_i \eta_i \right) +\prod_{i=1}^n (1 + \eta_i)^{-1} +\]
    • +
    +
    +
    +

    Example, Poisson regression

    +
      +
    • Assume that \(Y_i \sim Poisson(\mu_i)\) so that \(E[Y_i] = \mu_i\) where \(0\leq \mu_i\)
    • +
    • Linear predictor \(\eta_i = \sum_{k=1}^p X_{ik} \beta_k\)
    • +
    • Link function \(g(\mu) = \eta = \log(\mu)\)
    • +
    • Recall that \(e^x\) is the inverse of \(\log(x)\) so that \[ +\mu_i = e^{\eta_i} +\] Thus, the likelihood is \[ +\prod_{i=1}^n (y_i !)^{-1} \mu_i^{y_i}e^{-\mu_i} +\propto \exp\left(\sum_{i=1}^n y_i \eta_i - \sum_{i=1}^n \mu_i\right) +\]
    • +
    +
    +
    +

    Some things to note

    +
      +
    • In each case, the only way in which the likelihood depends on the data is through \[\sum_{i=1}^n y_i \eta_i = +\sum_{i=1}^n y_i\sum_{k=1}^p X_{ik} \beta_k = +\sum_{k=1}^p \beta_k\sum_{i=1}^n X_{ik} y_i +\] Thus if we don’t need the full data, only \(\sum_{i=1}^n X_{ik} y_i\). This simplification is a consequence of chosing so-called ‘canonical’ link functions.
    • +
    • (This has to be derived). All models acheive their maximum at the root of the so called normal equations \[ +0=\sum_{i=1}^n \frac{(Y_i - \mu_i)}{Var(Y_i)}W_i +\] where \(W_i\) are the derivative of the inverse of the link function.
    • +
    +
    +
    +

    About variances

    +

    \[ +0=\sum_{i=1}^n \frac{(Y_i - \mu_i)}{Var(Y_i)}W_i +\] * For the linear model \(Var(Y_i) = \sigma^2\) is constant. * For Bernoulli case \(Var(Y_i) = \mu_i (1 - \mu_i)\) * For the Poisson case \(Var(Y_i) = \mu_i\). * In the latter cases, it is often relevant to have a more flexible variance model, even if it doesn’t correspond to an actual likelihood \[ +0=\sum_{i=1}^n \frac{(Y_i - \mu_i)}{\phi \mu_i (1 - \mu_i ) } W_i ~~~\mbox{and}~~~ +0=\sum_{i=1}^n \frac{(Y_i - \mu_i)}{\phi \mu_i} W_i +\] * These are called ‘quasi-likelihood’ normal equations

    +
    +
    +

    Odds and ends

    +
      +
    • The normal equations have to be solved iteratively. Resulting in \(\hat \beta_k\) and, if included, \(\hat \phi\).
    • +
    • Predicted linear predictor responses can be obtained as \(\hat \eta = \sum_{k=1}^p X_k \hat \beta_k\)
    • +
    • Predicted mean responses as \(\hat \mu = g^{-1}(\hat \eta)\)
    • +
    • Coefficients are interpretted as \[ +g(E[Y | X_k = x_k + 1, X_{\sim k} = x_{\sim k}]) - g(E[Y | X_k = x_k, X_{\sim k}=x_{\sim k}]) = \beta_k +\] or the change in the link function of the expected response per unit change in \(X_k\) holding other regressors constant.
    • +
    • Variations on Newon/Raphson’s algorithm are used to do it.
    • +
    • Asymptotics are used for inference usually.
    • +
    • Many of the ideas from linear models can be brought over to GLMs.
    • +
    +
    + + + + +
    + + + + + + + + diff --git a/07_RegressionModels/03_02_binaryOutcomes/index.Rmd b/07_RegressionModels/03_02_binaryOutcomes/index.Rmd index 6945c3e54..2df88e0b1 100644 --- a/07_RegressionModels/03_02_binaryOutcomes/index.Rmd +++ b/07_RegressionModels/03_02_binaryOutcomes/index.Rmd @@ -1,220 +1,222 @@ ---- -title : Generalized linear models, binary data -subtitle : Regression models -author : Brian Caffo, Jeff Leek and Roger Peng -job : Johns Hopkins Bloomberg School of Public Health -logo : bloomberg_shield.png -framework : io2012 # {io2012, html5slides, shower, dzslides, ...} -highlighter : highlight.js # {highlight.js, prettify, highlight} -hitheme : tomorrow # -url: - lib: ../../librariesNew - assets: ../../assets -widgets : [mathjax] # {mathjax, quiz, bootstrap} -mode : selfcontained # {standalone, draft} ---- -```{r setup, cache = F, echo = F, message = F, warning = F, tidy = F} -# make this an external chunk that can be included in any file -options(width = 100) -opts_chunk$set(message = F, error = F, warning = F, comment = NA, fig.align = 'center', dpi = 100, tidy = F, cache.path = '.cache/', fig.path = 'fig/') - -options(xtable.type = 'html') -knit_hooks$set(inline = function(x) { - if(is.numeric(x)) { - round(x, getOption('digits')) - } else { - paste(as.character(x), collapse = ', ') - } -}) -knit_hooks$set(plot = knitr:::hook_plot_html) -``` - -## Key ideas - -* Frequently we care about outcomes that have two values - * Alive/dead - * Win/loss - * Success/Failure - * etc -* Called binary, Bernoulli or 0/1 outcomes -* Collection of exchangeable binary outcomes for the same covariate data are called binomial outcomes. - ---- - -## Example Baltimore Ravens win/loss -### Ravens Data - -```{r loadRavens,cache=TRUE} -download.file("https://dl.dropboxusercontent.com/u/7710864/data/ravensData.rda" - , destfile="./data/ravensData.rda",method="curl") -load("./data/ravensData.rda") -head(ravensData) -``` - ---- - -## Linear regression - -$$ RW_i = b_0 + b_1 RS_i + e_i $$ - -$RW_i$ - 1 if a Ravens win, 0 if not - -$RS_i$ - Number of points Ravens scored - -$b_0$ - probability of a Ravens win if they score 0 points - -$b_1$ - increase in probability of a Ravens win for each additional point - -$e_i$ - residual variation due - ---- - -## Linear regression in R - -```{r linearReg, dependson = "loadRavens", cache=TRUE} -lmRavens <- lm(ravensData$ravenWinNum ~ ravensData$ravenScore) -summary(lmRavens)$coef -``` ---- - -## Odds - -__Binary Outcome 0/1__ - -$$RW_i$$ - -__Probability (0,1)__ - -$$\rm{Pr}(RW_i | RS_i, b_0, b_1 )$$ - - -__Odds $(0,\infty)$__ -$$\frac{\rm{Pr}(RW_i | RS_i, b_0, b_1 )}{1-\rm{Pr}(RW_i | RS_i, b_0, b_1)}$$ - -__Log odds $(-\infty,\infty)$__ - -$$\log\left(\frac{\rm{Pr}(RW_i | RS_i, b_0, b_1 )}{1-\rm{Pr}(RW_i | RS_i, b_0, b_1)}\right)$$ - - ---- - -## Linear vs. logistic regression - -__Linear__ - -$$ RW_i = b_0 + b_1 RS_i + e_i $$ - -or - -$$ E[RW_i | RS_i, b_0, b_1] = b_0 + b_1 RS_i$$ - -__Logistic__ - -$$ \rm{Pr}(RW_i | RS_i, b_0, b_1) = \frac{\exp(b_0 + b_1 RS_i)}{1 + \exp(b_0 + b_1 RS_i)}$$ - -or - -$$ \log\left(\frac{\rm{Pr}(RW_i | RS_i, b_0, b_1 )}{1-\rm{Pr}(RW_i | RS_i, b_0, b_1)}\right) = b_0 + b_1 RS_i $$ - ---- - -## Interpreting Logistic Regression - -$$ \log\left(\frac{\rm{Pr}(RW_i | RS_i, b_0, b_1 )}{1-\rm{Pr}(RW_i | RS_i, b_0, b_1)}\right) = b_0 + b_1 RS_i $$ - - -$b_0$ - Log odds of a Ravens win if they score zero points - -$b_1$ - Log odds ratio of win probability for each point scored (compared to zero points) - -$\exp(b_1)$ - Odds ratio of win probability for each point scored (compared to zero points) - ---- -## Odds -- Imagine that you are playing a game where you flip a coin with success probability $p$. -- If it comes up heads, you win $X$. If it comes up tails, you lose $Y$. -- What should we set $X$ and $Y$ for the game to be fair? - - $$E[earnings]= X p - Y (1 - p) = 0$$ -- Implies - $$\frac{Y}{X} = \frac{p}{1 - p}$$ -- The odds can be said as "How much should you be willing to pay for a $p$ probability of winning a dollar?" - - (If $p > 0.5$ you have to pay more if you lose than you get if you win.) - - (If $p < 0.5$ you have to pay less if you lose than you get if you win.) - ---- -## Visualizing fitting logistic regression curves -``` -x <- seq(-10, 10, length = 1000) -manipulate( - plot(x, exp(beta0 + beta1 * x) / (1 + exp(beta0 + beta1 * x)), - type = "l", lwd = 3, frame = FALSE), - beta1 = slider(-2, 2, step = .1, initial = 2), - beta0 = slider(-2, 2, step = .1, initial = 0) - ) -``` - ---- - -## Ravens logistic regression - -```{r logReg, dependson = "loadRavens"} -logRegRavens <- glm(ravensData$ravenWinNum ~ ravensData$ravenScore,family="binomial") -summary(logRegRavens) -``` - - ---- - -## Ravens fitted values - -```{r dependson = "logReg",fig.height=4,fig.width=4} -plot(ravensData$ravenScore,logRegRavens$fitted,pch=19,col="blue",xlab="Score",ylab="Prob Ravens Win") -``` - - ---- - -## Odds ratios and confidence intervals - -```{r dependson = "logReg",fig.height=4,fig.width=4} -exp(logRegRavens$coeff) -exp(confint(logRegRavens)) -``` - - ---- - -## ANOVA for logistic regression - -```{r dependson = "logReg",fig.height=4,fig.width=4} -anova(logRegRavens,test="Chisq") -``` - - - ---- - -## Interpreting Odds Ratios - -* Not probabilities -* Odds ratio of 1 = no difference in odds -* Log odds ratio of 0 = no difference in odds -* Odds ratio < 0.5 or > 2 commonly a "moderate effect" -* Relative risk $\frac{\rm{Pr}(RW_i | RS_i = 10)}{\rm{Pr}(RW_i | RS_i = 0)}$ often easier to interpret, harder to estimate -* For small probabilities RR $\approx$ OR but __they are not the same__! - -[Wikipedia on Odds Ratio](http://en.wikipedia.org/wiki/Odds_ratio) - - ---- - -## Further resources - -* [Wikipedia on Logistic Regression](http://en.wikipedia.org/wiki/Logistic_regression) -* [Logistic regression and glms in R](http://data.princeton.edu/R/glms.html) -* Brian Caffo's lecture notes on: [Simpson's paradox](http://ocw.jhsph.edu/courses/MethodsInBiostatisticsII/PDFs/lecture23.pdf), [Case-control studies](http://ocw.jhsph.edu/courses/MethodsInBiostatisticsII/PDFs/lecture24.pdf) -* [Open Intro Chapter on Logistic Regression](http://www.openintro.org/stat/down/oiStat2_08.pdf) - - - +--- +title : Generalized linear models, binary data +subtitle : Regression models +author : Brian Caffo, Jeff Leek and Roger Peng +job : Johns Hopkins Bloomberg School of Public Health +logo : bloomberg_shield.png +framework : io2012 # {io2012, html5slides, shower, dzslides, ...} +highlighter : highlight.js # {highlight.js, prettify, highlight} +hitheme : tomorrow # +url: + lib: ../../librariesNew + assets: ../../assets +widgets : [mathjax] # {mathjax, quiz, bootstrap} +mode : selfcontained # {standalone, draft} +--- +```{r setup, cache = F, echo = F, message = F, warning = F, tidy = F} +# Must explicitly include knitr or the chunks will fail, at least in Linux +library(knitr) +# make this an external chunk that can be included in any file +options(width = 100) +opts_chunk$set(message = F, error = F, warning = F, comment = NA, fig.align = 'center', dpi = 100, tidy = F, cache.path = '.cache/', fig.path = 'fig/') + +options(xtable.type = 'html') +knit_hooks$set(inline = function(x) { + if(is.numeric(x)) { + round(x, getOption('digits')) + } else { + paste(as.character(x), collapse = ', ') + } +}) +knit_hooks$set(plot = knitr:::hook_plot_html) +``` + +## Key ideas + +* Frequently we care about outcomes that have two values + * Alive/dead + * Win/loss + * Success/Failure + * etc +* Called binary, Bernoulli or 0/1 outcomes +* Collection of exchangeable binary outcomes for the same covariate data are called binomial outcomes. + + + +## Example Baltimore Ravens win/loss +### Ravens Data + +```{r loadRavens,cache=TRUE} +download.file("https://dl.dropboxusercontent.com/u/7710864/data/ravensData.rda" + , destfile="./data/ravensData.rda",method="curl") +load("./data/ravensData.rda") +head(ravensData) +``` + + + +## Linear regression + +$$ RW_i = b_0 + b_1 RS_i + e_i $$ + +$RW_i$ - 1 if a Ravens win, 0 if not + +$RS_i$ - Number of points Ravens scored + +$b_0$ - probability of a Ravens win if they score 0 points + +$b_1$ - increase in probability of a Ravens win for each additional point + +$e_i$ - residual variation due + + + +## Linear regression in R + +```{r linearReg, dependson = "loadRavens", cache=TRUE} +lmRavens <- lm(ravensData$ravenWinNum ~ ravensData$ravenScore) +summary(lmRavens)$coef +``` + + +## Odds + +__Binary Outcome 0/1__ + +$$RW_i$$ + +__Probability (0,1)__ + +$$\rm{Pr}(RW_i | RS_i, b_0, b_1 )$$ + + +__Odds $(0,\infty)$__ +$$\frac{\rm{Pr}(RW_i | RS_i, b_0, b_1 )}{1-\rm{Pr}(RW_i | RS_i, b_0, b_1)}$$ + +__Log odds $(-\infty,\infty)$__ + +$$\log\left(\frac{\rm{Pr}(RW_i | RS_i, b_0, b_1 )}{1-\rm{Pr}(RW_i | RS_i, b_0, b_1)}\right)$$ + + + + +## Linear vs. logistic regression + +__Linear__ + +$$ RW_i = b_0 + b_1 RS_i + e_i $$ + +or + +$$ E[RW_i | RS_i, b_0, b_1] = b_0 + b_1 RS_i$$ + +__Logistic__ + +$$ \rm{Pr}(RW_i | RS_i, b_0, b_1) = \frac{\exp(b_0 + b_1 RS_i)}{1 + \exp(b_0 + b_1 RS_i)}$$ + +or + +$$ \log\left(\frac{\rm{Pr}(RW_i | RS_i, b_0, b_1 )}{1-\rm{Pr}(RW_i | RS_i, b_0, b_1)}\right) = b_0 + b_1 RS_i $$ + + + +## Interpreting Logistic Regression + +$$ \log\left(\frac{\rm{Pr}(RW_i | RS_i, b_0, b_1 )}{1-\rm{Pr}(RW_i | RS_i, b_0, b_1)}\right) = b_0 + b_1 RS_i $$ + + +$b_0$ - Log odds of a Ravens win if they score zero points + +$b_1$ - Log odds ratio of win probability for each point scored (compared to zero points) + +$\exp(b_1)$ - Odds ratio of win probability for each point scored (compared to zero points) + + +## Odds +- Imagine that you are playing a game where you flip a coin with success probability $p$. +- If it comes up heads, you win $X$. If it comes up tails, you lose $Y$. +- What should we set $X$ and $Y$ for the game to be fair? + + $$E[earnings]= X p - Y (1 - p) = 0$$ +- Implies + $$\frac{Y}{X} = \frac{p}{1 - p}$$ +- The odds can be said as "How much should you be willing to pay for a $p$ probability of winning a dollar?" + - (If $p > 0.5$ you have to pay more if you lose than you get if you win.) + - (If $p < 0.5$ you have to pay less if you lose than you get if you win.) + + +## Visualizing fitting logistic regression curves +``` +x <- seq(-10, 10, length = 1000) +manipulate( + plot(x, exp(beta0 + beta1 * x) / (1 + exp(beta0 + beta1 * x)), + type = "l", lwd = 3, frame = FALSE), + beta1 = slider(-2, 2, step = .1, initial = 2), + beta0 = slider(-2, 2, step = .1, initial = 0) + ) +``` + + + +## Ravens logistic regression + +```{r logReg, dependson = "loadRavens"} +logRegRavens <- glm(ravensData$ravenWinNum ~ ravensData$ravenScore,family="binomial") +summary(logRegRavens) +``` + + + + +## Ravens fitted values + +```{r dependson = "logReg",fig.height=4,fig.width=4} +plot(ravensData$ravenScore,logRegRavens$fitted,pch=19,col="blue",xlab="Score",ylab="Prob Ravens Win") +``` + + + + +## Odds ratios and confidence intervals + +```{r dependson = "logReg",fig.height=4,fig.width=4} +exp(logRegRavens$coeff) +exp(confint(logRegRavens)) +``` + + + + +## ANOVA for logistic regression + +```{r dependson = "logReg",fig.height=4,fig.width=4} +anova(logRegRavens,test="Chisq") +``` + + + + + +## Interpreting Odds Ratios + +* Not probabilities +* Odds ratio of 1 = no difference in odds +* Log odds ratio of 0 = no difference in odds +* Odds ratio < 0.5 or > 2 commonly a "moderate effect" +* Relative risk $\frac{\rm{Pr}(RW_i | RS_i = 10)}{\rm{Pr}(RW_i | RS_i = 0)}$ often easier to interpret, harder to estimate +* For small probabilities RR $\approx$ OR but __they are not the same__! + +[Wikipedia on Odds Ratio](http://en.wikipedia.org/wiki/Odds_ratio) + + + + +## Further resources + +* [Wikipedia on Logistic Regression](http://en.wikipedia.org/wiki/Logistic_regression) +* [Logistic regression and glms in R](http://data.princeton.edu/R/glms.html) +* Brian Caffo's lecture notes on: [Simpson's paradox](http://ocw.jhsph.edu/courses/MethodsInBiostatisticsII/PDFs/lecture23.pdf), [Case-control studies](http://ocw.jhsph.edu/courses/MethodsInBiostatisticsII/PDFs/lecture24.pdf) +* [Open Intro Chapter on Logistic Regression](http://www.openintro.org/stat/down/oiStat2_08.pdf) + + + diff --git a/07_RegressionModels/03_02_binaryOutcomes/index.html b/07_RegressionModels/03_02_binaryOutcomes/index.html index d1cffc5c9..8dda406bb 100644 --- a/07_RegressionModels/03_02_binaryOutcomes/index.html +++ b/07_RegressionModels/03_02_binaryOutcomes/index.html @@ -1,502 +1,331 @@ - - - - Generalized linear models, binary data - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -

    Generalized linear models, binary data

    -

    Regression models

    -

    Brian Caffo, Jeff Leek and Roger Peng
    Johns Hopkins Bloomberg School of Public Health

    -
    -
    -
    - - - - -
    -

    Key ideas

    -
    -
    -
      -
    • Frequently we care about outcomes that have two values - -
        -
      • Alive/dead
      • -
      • Win/loss
      • -
      • Success/Failure
      • -
      • etc
      • -
    • -
    • Called binary, Bernoulli or 0/1 outcomes
    • -
    • Collection of exchangeable binary outcomes for the same covariate data are called binomial outcomes.
    • -
    - -
    - -
    - - -
    -

    Example Baltimore Ravens win/loss

    -
    -
    -

    Ravens Data

    - -
    download.file("https://dl.dropboxusercontent.com/u/7710864/data/ravensData.rda"
    -              , destfile="./data/ravensData.rda",method="curl")
    -load("./data/ravensData.rda")
    -head(ravensData)
    -
    - -
      ravenWinNum ravenWin ravenScore opponentScore
    -1           1        W         24             9
    -2           1        W         38            35
    -3           1        W         28            13
    -4           1        W         34            31
    -5           1        W         44            13
    -6           0        L         23            24
    -
    - -
    - -
    - - -
    -

    Linear regression

    -
    -
    -

    \[ RW_i = b_0 + b_1 RS_i + e_i \]

    - -

    \(RW_i\) - 1 if a Ravens win, 0 if not

    - -

    \(RS_i\) - Number of points Ravens scored

    - -

    \(b_0\) - probability of a Ravens win if they score 0 points

    - -

    \(b_1\) - increase in probability of a Ravens win for each additional point

    - -

    \(e_i\) - residual variation due

    - -
    - -
    - - -
    -

    Linear regression in R

    -
    -
    -
    lmRavens <- lm(ravensData$ravenWinNum ~ ravensData$ravenScore)
    -summary(lmRavens)$coef
    -
    - -
                          Estimate Std. Error t value Pr(>|t|)
    -(Intercept)             0.2850   0.256643   1.111  0.28135
    -ravensData$ravenScore   0.0159   0.009059   1.755  0.09625
    -
    - -
    - -
    - - -
    -

    Odds

    -
    -
    -

    Binary Outcome 0/1

    - -

    \[RW_i\]

    - -

    Probability (0,1)

    - -

    \[\rm{Pr}(RW_i | RS_i, b_0, b_1 )\]

    - -

    Odds \((0,\infty)\) -\[\frac{\rm{Pr}(RW_i | RS_i, b_0, b_1 )}{1-\rm{Pr}(RW_i | RS_i, b_0, b_1)}\]

    - -

    Log odds \((-\infty,\infty)\)

    - -

    \[\log\left(\frac{\rm{Pr}(RW_i | RS_i, b_0, b_1 )}{1-\rm{Pr}(RW_i | RS_i, b_0, b_1)}\right)\]

    - -
    - -
    - - -
    -

    Linear vs. logistic regression

    -
    -
    -

    Linear

    - -

    \[ RW_i = b_0 + b_1 RS_i + e_i \]

    - -

    or

    - -

    \[ E[RW_i | RS_i, b_0, b_1] = b_0 + b_1 RS_i\]

    - -

    Logistic

    - -

    \[ \rm{Pr}(RW_i | RS_i, b_0, b_1) = \frac{\exp(b_0 + b_1 RS_i)}{1 + \exp(b_0 + b_1 RS_i)}\]

    - -

    or

    - -

    \[ \log\left(\frac{\rm{Pr}(RW_i | RS_i, b_0, b_1 )}{1-\rm{Pr}(RW_i | RS_i, b_0, b_1)}\right) = b_0 + b_1 RS_i \]

    - -
    - -
    - - -
    -

    Interpreting Logistic Regression

    -
    -
    -

    \[ \log\left(\frac{\rm{Pr}(RW_i | RS_i, b_0, b_1 )}{1-\rm{Pr}(RW_i | RS_i, b_0, b_1)}\right) = b_0 + b_1 RS_i \]

    - -

    \(b_0\) - Log odds of a Ravens win if they score zero points

    - -

    \(b_1\) - Log odds ratio of win probability for each point scored (compared to zero points)

    - -

    \(\exp(b_1)\) - Odds ratio of win probability for each point scored (compared to zero points)

    - -
    - -
    - - -
    -

    Odds

    -
    -
    -
      -
    • Imagine that you are playing a game where you flip a coin with success probability \(p\).
    • -
    • If it comes up heads, you win \(X\). If it comes up tails, you lose \(Y\).
    • -
    • What should we set \(X\) and \(Y\) for the game to be fair?

      - -

      \[E[earnings]= X p - Y (1 - p) = 0\]

    • -
    • Implies -\[\frac{Y}{X} = \frac{p}{1 - p}\]

    • -
    • The odds can be said as "How much should you be willing to pay for a \(p\) probability of winning a dollar?"

      - -
        -
      • (If \(p > 0.5\) you have to pay more if you lose than you get if you win.)
      • -
      • (If \(p < 0.5\) you have to pay less if you lose than you get if you win.)
      • -
    • -
    - -
    - -
    - - -
    -

    Visualizing fitting logistic regression curves

    -
    -
    -
    x <- seq(-10, 10, length = 1000)
    -manipulate(
    -    plot(x, exp(beta0 + beta1 * x) / (1 + exp(beta0 + beta1 * x)), 
    -         type = "l", lwd = 3, frame = FALSE),
    -    beta1 = slider(-2, 2, step = .1, initial = 2),
    -    beta0 = slider(-2, 2, step = .1, initial = 0)
    -    )
    -
    - -
    - -
    - - -
    -

    Ravens logistic regression

    -
    -
    -
    logRegRavens <- glm(ravensData$ravenWinNum ~ ravensData$ravenScore,family="binomial")
    -summary(logRegRavens)
    -
    - -
    
    -Call:
    -glm(formula = ravensData$ravenWinNum ~ ravensData$ravenScore, 
    -    family = "binomial")
    -
    -Deviance Residuals: 
    -   Min      1Q  Median      3Q     Max  
    --1.758  -1.100   0.530   0.806   1.495  
    -
    -Coefficients:
    -                      Estimate Std. Error z value Pr(>|z|)
    -(Intercept)            -1.6800     1.5541   -1.08     0.28
    -ravensData$ravenScore   0.1066     0.0667    1.60     0.11
    -
    -(Dispersion parameter for binomial family taken to be 1)
    -
    -    Null deviance: 24.435  on 19  degrees of freedom
    -Residual deviance: 20.895  on 18  degrees of freedom
    -AIC: 24.89
    -
    -Number of Fisher Scoring iterations: 5
    -
    - -
    - -
    - - -
    -

    Ravens fitted values

    -
    -
    -
    plot(ravensData$ravenScore,logRegRavens$fitted,pch=19,col="blue",xlab="Score",ylab="Prob Ravens Win")
    -
    - -
    plot of chunk unnamed-chunk-1
    - -
    - -
    - - -
    -

    Odds ratios and confidence intervals

    -
    -
    -
    exp(logRegRavens$coeff)
    -
    - -
              (Intercept) ravensData$ravenScore 
    -               0.1864                1.1125 
    -
    - -
    exp(confint(logRegRavens))
    -
    - -
                             2.5 % 97.5 %
    -(Intercept)           0.005675  3.106
    -ravensData$ravenScore 0.996230  1.303
    -
    - -
    - -
    - - -
    -

    ANOVA for logistic regression

    -
    -
    -
    anova(logRegRavens,test="Chisq")
    -
    - -
    Analysis of Deviance Table
    -
    -Model: binomial, link: logit
    -
    -Response: ravensData$ravenWinNum
    -
    -Terms added sequentially (first to last)
    -
    -                      Df Deviance Resid. Df Resid. Dev Pr(>Chi)  
    -NULL                                     19       24.4           
    -ravensData$ravenScore  1     3.54        18       20.9     0.06 .
    ----
    -Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
    -
    - -
    - -
    - - -
    -

    Interpreting Odds Ratios

    -
    -
    -
      -
    • Not probabilities
    • -
    • Odds ratio of 1 = no difference in odds
    • -
    • Log odds ratio of 0 = no difference in odds
    • -
    • Odds ratio < 0.5 or > 2 commonly a "moderate effect"
    • -
    • Relative risk \(\frac{\rm{Pr}(RW_i | RS_i = 10)}{\rm{Pr}(RW_i | RS_i = 0)}\) often easier to interpret, harder to estimate
    • -
    • For small probabilities RR \(\approx\) OR but they are not the same!
    • -
    - -

    Wikipedia on Odds Ratio

    - -
    - -
    - - -
    -

    Further resources

    -
    - - -
    - - -
    - - - - - - - - - - - - - - - \ No newline at end of file + + + + + + + + + + + + + + +Generalized linear models, binary data + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + +
    +

    Key ideas

    +
      +
    • Frequently we care about outcomes that have two values
    • +
    • Alive/dead
    • +
    • Win/loss
    • +
    • Success/Failure
    • +
    • etc
    • +
    • Called binary, Bernoulli or 0/1 outcomes
    • +
    • Collection of exchangeable binary outcomes for the same covariate data are called binomial outcomes.
    • +
    +
    +
    +

    Example Baltimore Ravens win/loss

    +
    +

    Ravens Data

    +
    download.file("https://dl.dropboxusercontent.com/u/7710864/data/ravensData.rda"
    +              , destfile="./data/ravensData.rda",method="curl")
    +load("./data/ravensData.rda")
    +head(ravensData)
    +
      ravenWinNum ravenWin ravenScore opponentScore
    +1           1        W         24             9
    +2           1        W         38            35
    +3           1        W         28            13
    +4           1        W         34            31
    +5           1        W         44            13
    +6           0        L         23            24
    +
    +
    +
    +

    Linear regression

    +

    \[ RW_i = b_0 + b_1 RS_i + e_i \]

    +

    \(RW_i\) - 1 if a Ravens win, 0 if not

    +

    \(RS_i\) - Number of points Ravens scored

    +

    \(b_0\) - probability of a Ravens win if they score 0 points

    +

    \(b_1\) - increase in probability of a Ravens win for each additional point

    +

    \(e_i\) - residual variation due

    +
    +
    +

    Linear regression in R

    +
    lmRavens <- lm(ravensData$ravenWinNum ~ ravensData$ravenScore)
    +summary(lmRavens)$coef
    +
                            Estimate  Std. Error  t value   Pr(>|t|)
    +(Intercept)           0.28503172 0.256643165 1.110615 0.28135043
    +ravensData$ravenScore 0.01589917 0.009058997 1.755069 0.09625261
    +
    +
    +

    Odds

    +

    Binary Outcome 0/1

    +

    \[RW_i\]

    +

    Probability (0,1)

    +

    \[\rm{Pr}(RW_i | RS_i, b_0, b_1 )\]

    +

    Odds \((0,\infty)\) \[\frac{\rm{Pr}(RW_i | RS_i, b_0, b_1 )}{1-\rm{Pr}(RW_i | RS_i, b_0, b_1)}\]

    +

    Log odds \((-\infty,\infty)\)

    +

    \[\log\left(\frac{\rm{Pr}(RW_i | RS_i, b_0, b_1 )}{1-\rm{Pr}(RW_i | RS_i, b_0, b_1)}\right)\]

    +
    +
    +

    Linear vs. logistic regression

    +

    Linear

    +

    \[ RW_i = b_0 + b_1 RS_i + e_i \]

    +

    or

    +

    \[ E[RW_i | RS_i, b_0, b_1] = b_0 + b_1 RS_i\]

    +

    Logistic

    +

    \[ \rm{Pr}(RW_i | RS_i, b_0, b_1) = \frac{\exp(b_0 + b_1 RS_i)}{1 + \exp(b_0 + b_1 RS_i)}\]

    +

    or

    +

    \[ \log\left(\frac{\rm{Pr}(RW_i | RS_i, b_0, b_1 )}{1-\rm{Pr}(RW_i | RS_i, b_0, b_1)}\right) = b_0 + b_1 RS_i \]

    +
    +
    +

    Interpreting Logistic Regression

    +

    \[ \log\left(\frac{\rm{Pr}(RW_i | RS_i, b_0, b_1 )}{1-\rm{Pr}(RW_i | RS_i, b_0, b_1)}\right) = b_0 + b_1 RS_i \]

    +

    \(b_0\) - Log odds of a Ravens win if they score zero points

    +

    \(b_1\) - Log odds ratio of win probability for each point scored (compared to zero points)

    +

    \(\exp(b_1)\) - Odds ratio of win probability for each point scored (compared to zero points)

    +
    +
    +

    Odds

    +
      +
    • Imagine that you are playing a game where you flip a coin with success probability \(p\).
    • +
    • If it comes up heads, you win \(X\). If it comes up tails, you lose \(Y\).
    • +
    • What should we set \(X\) and \(Y\) for the game to be fair?

      +\[E[earnings]= X p - Y (1 - p) = 0\]
    • +
    • Implies \[\frac{Y}{X} = \frac{p}{1 - p}\]
    • +
    • The odds can be said as “How much should you be willing to pay for a \(p\) probability of winning a dollar?” +
        +
      • (If \(p > 0.5\) you have to pay more if you lose than you get if you win.)
      • +
      • (If \(p < 0.5\) you have to pay less if you lose than you get if you win.)
      • +
    • +
    +
    +
    +

    Visualizing fitting logistic regression curves

    +
    x <- seq(-10, 10, length = 1000)
    +manipulate(
    +    plot(x, exp(beta0 + beta1 * x) / (1 + exp(beta0 + beta1 * x)), 
    +         type = "l", lwd = 3, frame = FALSE),
    +    beta1 = slider(-2, 2, step = .1, initial = 2),
    +    beta0 = slider(-2, 2, step = .1, initial = 0)
    +    )
    +
    +
    +

    Ravens logistic regression

    +
    logRegRavens <- glm(ravensData$ravenWinNum ~ ravensData$ravenScore,family="binomial")
    +summary(logRegRavens)
    +
    
    +Call:
    +glm(formula = ravensData$ravenWinNum ~ ravensData$ravenScore, 
    +    family = "binomial")
    +
    +Deviance Residuals: 
    +    Min       1Q   Median       3Q      Max  
    +-1.7575  -1.0999   0.5305   0.8060   1.4947  
    +
    +Coefficients:
    +                      Estimate Std. Error z value Pr(>|z|)
    +(Intercept)           -1.68001    1.55412  -1.081     0.28
    +ravensData$ravenScore  0.10658    0.06674   1.597     0.11
    +
    +(Dispersion parameter for binomial family taken to be 1)
    +
    +    Null deviance: 24.435  on 19  degrees of freedom
    +Residual deviance: 20.895  on 18  degrees of freedom
    +AIC: 24.895
    +
    +Number of Fisher Scoring iterations: 5
    +
    +
    +

    Ravens fitted values

    +
    plot(ravensData$ravenScore,logRegRavens$fitted,pch=19,col="blue",xlab="Score",ylab="Prob Ravens Win")
    +
    + +
    +
    +
    +

    Odds ratios and confidence intervals

    +
    exp(logRegRavens$coeff)
    +
              (Intercept) ravensData$ravenScore 
    +            0.1863724             1.1124694 
    +
    exp(confint(logRegRavens))
    +
                                2.5 %   97.5 %
    +(Intercept)           0.005674966 3.106384
    +ravensData$ravenScore 0.996229662 1.303304
    +
    +
    +

    ANOVA for logistic regression

    +
    anova(logRegRavens,test="Chisq")
    +
    Analysis of Deviance Table
    +
    +Model: binomial, link: logit
    +
    +Response: ravensData$ravenWinNum
    +
    +Terms added sequentially (first to last)
    +
    +                      Df Deviance Resid. Df Resid. Dev Pr(>Chi)  
    +NULL                                     19     24.435           
    +ravensData$ravenScore  1   3.5398        18     20.895  0.05991 .
    +---
    +Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
    +
    +
    +

    Interpreting Odds Ratios

    +
      +
    • Not probabilities
    • +
    • Odds ratio of 1 = no difference in odds
    • +
    • Log odds ratio of 0 = no difference in odds
    • +
    • Odds ratio < 0.5 or > 2 commonly a “moderate effect”
    • +
    • Relative risk \(\frac{\rm{Pr}(RW_i | RS_i = 10)}{\rm{Pr}(RW_i | RS_i = 0)}\) often easier to interpret, harder to estimate
    • +
    • For small probabilities RR \(\approx\) OR but they are not the same!
    • +
    +

    Wikipedia on Odds Ratio

    +
    + + + + + +
    + + + + + + + + diff --git a/07_RegressionModels/03_03_countOutcomes/index.Rmd b/07_RegressionModels/03_03_countOutcomes/index.Rmd index 15c5bf301..54ef75a9e 100644 --- a/07_RegressionModels/03_03_countOutcomes/index.Rmd +++ b/07_RegressionModels/03_03_countOutcomes/index.Rmd @@ -1,316 +1,318 @@ ---- -title : Count outcomes, Poisson GLMs -subtitle : Regression Models -author : Brian Caffo, Jeffrey Leek, Roger Peng -job : Johns Hopkins Bloomberg School of Public Health -logo : bloomberg_shield.png -framework : io2012 # {io2012, html5slides, shower, dzslides, ...} -highlighter : highlight.js # {highlight.js, prettify, highlight} -hitheme : tomorrow # -url: - lib: ../../librariesNew - assets: ../../assets -widgets : [mathjax] # {mathjax, quiz, bootstrap} -mode : selfcontained # {standalone, draft} ---- - - -```{r setup, cache = F, echo = F, message = F, warning = F, tidy = F} -# make this an external chunk that can be included in any file -options(width = 100) -opts_chunk$set(message = F, error = F, warning = F, comment = NA, fig.align = 'center', dpi = 100, tidy = F, cache.path = '.cache/', fig.path = 'fig/') - -options(xtable.type = 'html') -knit_hooks$set(inline = function(x) { - if(is.numeric(x)) { - round(x, getOption('digits')) - } else { - paste(as.character(x), collapse = ', ') - } -}) -knit_hooks$set(plot = knitr:::hook_plot_html) -``` - -## Key ideas - -* Many data take the form of counts - * Calls to a call center - * Number of flu cases in an area - * Number of cars that cross a bridge -* Data may also be in the form of rates - * Percent of children passing a test - * Percent of hits to a website from a country -* Linear regression with transformation is an option - ---- - -## Poisson distribution -- The Poisson distribution is a useful model for counts and rates -- Here a rate is count per some monitoring time -- Some examples uses of the Poisson distribution - - Modeling web traffic hits - - Incidence rates - - Approximating binomial probabilities with small $p$ and large $n$ - - Analyzing contigency table data - ---- -## The Poisson mass function -- $X \sim Poisson(t\lambda)$ if -$$ -P(X = x) = \frac{(t\lambda)^x e^{-t\lambda}}{x!} -$$ -For $x = 0, 1, \ldots$. -- The mean of the Poisson is $E[X] = t\lambda$, thus $E[X / t] = \lambda$ -- The variance of the Poisson is $Var(X) = t\lambda$. -- The Poisson tends to a normal as $t\lambda$ gets large. - ---- - -```{r simPois,fig.height=4,fig.width=8, cache=TRUE} -par(mfrow = c(1, 3)) -plot(0 : 10, dpois(0 : 10, lambda = 2), type = "h", frame = FALSE) -plot(0 : 20, dpois(0 : 20, lambda = 10), type = "h", frame = FALSE) -plot(0 : 200, dpois(0 : 200, lambda = 100), type = "h", frame = FALSE) -``` - ---- - -## Poisson distribution -### Sort of, showing that the mean and variance are equal -```{r} -x <- 0 : 10000; lambda = 3 -mu <- sum(x * dpois(x, lambda = lambda)) -sigmasq <- sum((x - mu)^2 * dpois(x, lambda = lambda)) -c(mu, sigmasq) -``` - ---- - -## Example: Leek Group Website Traffic -* Consider the daily counts to Jeff Leek's web site - -[http://biostat.jhsph.edu/~jleek/](http://biostat.jhsph.edu/~jleek/) - -* Since the unit of time is always one day, set $t = 1$ and then -the Poisson mean is interpretted as web hits per day. (If we set $t = 24$, it would -be web hits per hour). - ---- - -## Website data - -```{r leekLoad,cache=TRUE} -download.file("https://dl.dropboxusercontent.com/u/7710864/data/gaData.rda",destfile="./data/gaData.rda",method="curl") -load("./data/gaData.rda") -gaData$julian <- julian(gaData$date) -head(gaData) -``` - -[http://skardhamar.github.com/rga/](http://skardhamar.github.com/rga/) - - ---- - -## Plot data - -```{r, dependson="leekLoad",fig.height=4.5,fig.width=4.5} -plot(gaData$julian,gaData$visits,pch=19,col="darkgrey",xlab="Julian",ylab="Visits") -``` - - ---- - -## Linear regression - -$$ NH_i = b_0 + b_1 JD_i + e_i $$ - -$NH_i$ - number of hits to the website - -$JD_i$ - day of the year (Julian day) - -$b_0$ - number of hits on Julian day 0 (1970-01-01) - -$b_1$ - increase in number of hits per unit day - -$e_i$ - variation due to everything we didn't measure - - ---- - -## Linear regression line - -```{r linReg, dependson="leekLoad",fig.height=4,fig.width=4, cache=TRUE} -plot(gaData$julian,gaData$visits,pch=19,col="darkgrey",xlab="Julian",ylab="Visits") -lm1 <- lm(gaData$visits ~ gaData$julian) -abline(lm1,col="red",lwd=3) -``` ---- - -## Aside, taking the log of the outcome -- Taking the natural log of the outcome has a specific interpretation. -- Consider the model - -$$ \log(NH_i) = b_0 + b_1 JD_i + e_i $$ - -$NH_i$ - number of hits to the website - -$JD_i$ - day of the year (Julian day) - -$b_0$ - log number of hits on Julian day 0 (1970-01-01) - -$b_1$ - increase in log number of hits per unit day - -$e_i$ - variation due to everything we didn't measure - ---- -## Exponentiating coefficients -- $e^{E[\log(Y)]}$ geometric mean of $Y$. - - With no covariates, this is estimated by $e^{\frac{1}{n}\sum_{i=1}^n \log(y_i)} = (\prod_{i=1}^n y_i)^{1/n}$ -- When you take the natural log of outcomes and fit a regression model, your exponentiated coefficients -estimate things about geometric means. -- $e^{\beta_0}$ estimated geometric mean hits on day 0 -- $e^{\beta_1}$ estimated relative increase or decrease in geometric mean hits per day -- There's a problem with logs with you have zero counts, adding a constant works -```{r} -round(exp(coef(lm(I(log(gaData$visits + 1)) ~ gaData$julian))), 5) -``` - ---- - -## Linear vs. Poisson regression - -__Linear__ - -$$ NH_i = b_0 + b_1 JD_i + e_i $$ - -or - -$$ E[NH_i | JD_i, b_0, b_1] = b_0 + b_1 JD_i$$ - -__Poisson/log-linear__ - -$$ \log\left(E[NH_i | JD_i, b_0, b_1]\right) = b_0 + b_1 JD_i $$ - -or - -$$ E[NH_i | JD_i, b_0, b_1] = \exp\left(b_0 + b_1 JD_i\right) $$ - - ---- - -## Multiplicative differences - -

    -$$ E[NH_i | JD_i, b_0, b_1] = \exp\left(b_0 + b_1 JD_i\right) $$ - -

    - -$$ E[NH_i | JD_i, b_0, b_1] = \exp\left(b_0 \right)\exp\left(b_1 JD_i\right) $$ - -

    - -If $JD_i$ is increased by one unit, $E[NH_i | JD_i, b_0, b_1]$ is multiplied by $\exp\left(b_1\right)$ - ---- - -## Poisson regression in R - -```{r poisReg, dependson="linReg",fig.height=4.5,fig.width=4.5, cache=TRUE} -plot(gaData$julian,gaData$visits,pch=19,col="darkgrey",xlab="Julian",ylab="Visits") -glm1 <- glm(gaData$visits ~ gaData$julian,family="poisson") -abline(lm1,col="red",lwd=3); lines(gaData$julian,glm1$fitted,col="blue",lwd=3) -``` - - ---- - -## Mean-variance relationship? - -```{r, dependson="poisReg",fig.height=4.5,fig.width=4.5} -plot(glm1$fitted,glm1$residuals,pch=19,col="grey",ylab="Residuals",xlab="Fitted") -``` - ---- - -## Model agnostic standard errors - -```{r agnostic} -library(sandwich) -confint.agnostic <- function (object, parm, level = 0.95, ...) -{ - cf <- coef(object); pnames <- names(cf) - if (missing(parm)) - parm <- pnames - else if (is.numeric(parm)) - parm <- pnames[parm] - a <- (1 - level)/2; a <- c(a, 1 - a) - pct <- stats:::format.perc(a, 3) - fac <- qnorm(a) - ci <- array(NA, dim = c(length(parm), 2L), dimnames = list(parm, - pct)) - ses <- sqrt(diag(sandwich::vcovHC(object)))[parm] - ci[] <- cf[parm] + ses %o% fac - ci -} -``` -[http://stackoverflow.com/questions/3817182/vcovhc-and-confidence-interval](http://stackoverflow.com/questions/3817182/vcovhc-and-confidence-interval) - ---- - -## Estimating confidence intervals - -```{r} -confint(glm1) -confint.agnostic(glm1) -``` - - ---- - -## Rates - - -

    - - -$$ E[NHSS_i | JD_i, b_0, b_1]/NH_i = \exp\left(b_0 + b_1 JD_i\right) $$ - -

    - -$$ \log\left(E[NHSS_i | JD_i, b_0, b_1]\right) - \log(NH_i) = b_0 + b_1 JD_i $$ - -

    - -$$ \log\left(E[NHSS_i | JD_i, b_0, b_1]\right) = \log(NH_i) + b_0 + b_1 JD_i $$ - ---- - -## Fitting rates in R - -```{r ratesFit,dependson="agnostic", cache=TRUE,fig.height=4,fig.width=4} -glm2 <- glm(gaData$simplystats ~ julian(gaData$date),offset=log(visits+1), - family="poisson",data=gaData) -plot(julian(gaData$date),glm2$fitted,col="blue",pch=19,xlab="Date",ylab="Fitted Counts") -points(julian(gaData$date),glm1$fitted,col="red",pch=19) -``` - ---- - -## Fitting rates in R - -```{r,dependson="ratesFit",fig.height=4,fig.width=4} -glm2 <- glm(gaData$simplystats ~ julian(gaData$date),offset=log(visits+1), - family="poisson",data=gaData) -plot(julian(gaData$date),gaData$simplystats/(gaData$visits+1),col="grey",xlab="Date", - ylab="Fitted Rates",pch=19) -lines(julian(gaData$date),glm2$fitted/(gaData$visits+1),col="blue",lwd=3) -``` - ---- - -## More information - -* [Log-linear models and multiway tables](http://ww2.coastal.edu/kingw/statistics/R-tutorials/loglin.html) -* [Wikipedia on Poisson regression](http://en.wikipedia.org/wiki/Poisson_regression), [Wikipedia on overdispersion](http://en.wikipedia.org/wiki/Overdispersion) -* [Regression models for count data in R](http://cran.r-project.org/web/packages/pscl/vignettes/countreg.pdf) -* [pscl package](http://cran.r-project.org/web/packages/pscl/index.html) - the function _zeroinfl_ fits zero inflated models. +--- +title : Count outcomes, Poisson GLMs +subtitle : Regression Models +author : Brian Caffo, Jeffrey Leek, Roger Peng +job : Johns Hopkins Bloomberg School of Public Health +logo : bloomberg_shield.png +framework : io2012 # {io2012, html5slides, shower, dzslides, ...} +highlighter : highlight.js # {highlight.js, prettify, highlight} +hitheme : tomorrow # +url: + lib: ../../librariesNew + assets: ../../assets +widgets : [mathjax] # {mathjax, quiz, bootstrap} +mode : selfcontained # {standalone, draft} +--- + + +```{r setup, cache = F, echo = F, message = F, warning = F, tidy = F} +# Must explicitly include knitr or the chunks will fail, at least in Linux +library(knitr) +# make this an external chunk that can be included in any file +options(width = 100) +opts_chunk$set(message = F, error = F, warning = F, comment = NA, fig.align = 'center', dpi = 100, tidy = F, cache.path = '.cache/', fig.path = 'fig/') + +options(xtable.type = 'html') +knit_hooks$set(inline = function(x) { + if(is.numeric(x)) { + round(x, getOption('digits')) + } else { + paste(as.character(x), collapse = ', ') + } +}) +knit_hooks$set(plot = knitr:::hook_plot_html) +``` + +## Key ideas + +* Many data take the form of counts + * Calls to a call center + * Number of flu cases in an area + * Number of cars that cross a bridge +* Data may also be in the form of rates + * Percent of children passing a test + * Percent of hits to a website from a country +* Linear regression with transformation is an option + + + +## Poisson distribution +- The Poisson distribution is a useful model for counts and rates +- Here a rate is count per some monitoring time +- Some examples uses of the Poisson distribution + - Modeling web traffic hits + - Incidence rates + - Approximating binomial probabilities with small $p$ and large $n$ + - Analyzing contigency table data + + +## The Poisson mass function +- $X \sim Poisson(t\lambda)$ if +$$ +P(X = x) = \frac{(t\lambda)^x e^{-t\lambda}}{x!} +$$ +For $x = 0, 1, \ldots$. +- The mean of the Poisson is $E[X] = t\lambda$, thus $E[X / t] = \lambda$ +- The variance of the Poisson is $Var(X) = t\lambda$. +- The Poisson tends to a normal as $t\lambda$ gets large. + + + +```{r simPois,fig.height=4,fig.width=8, cache=TRUE} +par(mfrow = c(1, 3)) +plot(0 : 10, dpois(0 : 10, lambda = 2), type = "h", frame = FALSE) +plot(0 : 20, dpois(0 : 20, lambda = 10), type = "h", frame = FALSE) +plot(0 : 200, dpois(0 : 200, lambda = 100), type = "h", frame = FALSE) +``` + + + +## Poisson distribution +### Sort of, showing that the mean and variance are equal +```{r} +x <- 0 : 10000; lambda = 3 +mu <- sum(x * dpois(x, lambda = lambda)) +sigmasq <- sum((x - mu)^2 * dpois(x, lambda = lambda)) +c(mu, sigmasq) +``` + + + +## Example: Leek Group Website Traffic +* Consider the daily counts to Jeff Leek's web site + +[http://biostat.jhsph.edu/~jleek/](http://biostat.jhsph.edu/~jleek/) + +* Since the unit of time is always one day, set $t = 1$ and then +the Poisson mean is interpretted as web hits per day. (If we set $t = 24$, it would +be web hits per hour). + + + +## Website data + +```{r leekLoad,cache=TRUE} +download.file("https://dl.dropboxusercontent.com/u/7710864/data/gaData.rda",destfile="./data/gaData.rda",method="curl") +load("./data/gaData.rda") +gaData$julian <- julian(gaData$date) +head(gaData) +``` + +[http://skardhamar.github.com/rga/](http://skardhamar.github.com/rga/) + + + + +## Plot data + +```{r, dependson="leekLoad",fig.height=4.5,fig.width=4.5} +plot(gaData$julian,gaData$visits,pch=19,col="darkgrey",xlab="Julian",ylab="Visits") +``` + + + + +## Linear regression + +$$ NH_i = b_0 + b_1 JD_i + e_i $$ + +$NH_i$ - number of hits to the website + +$JD_i$ - day of the year (Julian day) + +$b_0$ - number of hits on Julian day 0 (1970-01-01) + +$b_1$ - increase in number of hits per unit day + +$e_i$ - variation due to everything we didn't measure + + + + +## Linear regression line + +```{r linReg, dependson="leekLoad",fig.height=4,fig.width=4, cache=TRUE} +plot(gaData$julian,gaData$visits,pch=19,col="darkgrey",xlab="Julian",ylab="Visits") +lm1 <- lm(gaData$visits ~ gaData$julian) +abline(lm1,col="red",lwd=3) +``` + + +## Aside, taking the log of the outcome +- Taking the natural log of the outcome has a specific interpretation. +- Consider the model + +$$ \log(NH_i) = b_0 + b_1 JD_i + e_i $$ + +$NH_i$ - number of hits to the website + +$JD_i$ - day of the year (Julian day) + +$b_0$ - log number of hits on Julian day 0 (1970-01-01) + +$b_1$ - increase in log number of hits per unit day + +$e_i$ - variation due to everything we didn't measure + + +## Exponentiating coefficients +- $e^{E[\log(Y)]}$ geometric mean of $Y$. + - With no covariates, this is estimated by $e^{\frac{1}{n}\sum_{i=1}^n \log(y_i)} = (\prod_{i=1}^n y_i)^{1/n}$ +- When you take the natural log of outcomes and fit a regression model, your exponentiated coefficients +estimate things about geometric means. +- $e^{\beta_0}$ estimated geometric mean hits on day 0 +- $e^{\beta_1}$ estimated relative increase or decrease in geometric mean hits per day +- There's a problem with logs with you have zero counts, adding a constant works +```{r} +round(exp(coef(lm(I(log(gaData$visits + 1)) ~ gaData$julian))), 5) +``` + + + +## Linear vs. Poisson regression + +__Linear__ + +$$ NH_i = b_0 + b_1 JD_i + e_i $$ + +or + +$$ E[NH_i | JD_i, b_0, b_1] = b_0 + b_1 JD_i$$ + +__Poisson/log-linear__ + +$$ \log\left(E[NH_i | JD_i, b_0, b_1]\right) = b_0 + b_1 JD_i $$ + +or + +$$ E[NH_i | JD_i, b_0, b_1] = \exp\left(b_0 + b_1 JD_i\right) $$ + + + + +## Multiplicative differences + +

    +$$ E[NH_i | JD_i, b_0, b_1] = \exp\left(b_0 + b_1 JD_i\right) $$ + +

    + +$$ E[NH_i | JD_i, b_0, b_1] = \exp\left(b_0 \right)\exp\left(b_1 JD_i\right) $$ + +

    + +If $JD_i$ is increased by one unit, $E[NH_i | JD_i, b_0, b_1]$ is multiplied by $\exp\left(b_1\right)$ + + + +## Poisson regression in R + +```{r poisReg, dependson="linReg",fig.height=4.5,fig.width=4.5, cache=TRUE} +plot(gaData$julian,gaData$visits,pch=19,col="darkgrey",xlab="Julian",ylab="Visits") +glm1 <- glm(gaData$visits ~ gaData$julian,family="poisson") +abline(lm1,col="red",lwd=3); lines(gaData$julian,glm1$fitted,col="blue",lwd=3) +``` + + + + +## Mean-variance relationship? + +```{r, dependson="poisReg",fig.height=4.5,fig.width=4.5} +plot(glm1$fitted,glm1$residuals,pch=19,col="grey",ylab="Residuals",xlab="Fitted") +``` + + + +## Model agnostic standard errors + +```{r agnostic} +library(sandwich) +confint.agnostic <- function (object, parm, level = 0.95, ...) +{ + cf <- coef(object); pnames <- names(cf) + if (missing(parm)) + parm <- pnames + else if (is.numeric(parm)) + parm <- pnames[parm] + a <- (1 - level)/2; a <- c(a, 1 - a) + pct <- stats:::format.perc(a, 3) + fac <- qnorm(a) + ci <- array(NA, dim = c(length(parm), 2L), dimnames = list(parm, + pct)) + ses <- sqrt(diag(sandwich::vcovHC(object)))[parm] + ci[] <- cf[parm] + ses %o% fac + ci +} +``` +[http://stackoverflow.com/questions/3817182/vcovhc-and-confidence-interval](http://stackoverflow.com/questions/3817182/vcovhc-and-confidence-interval) + + + +## Estimating confidence intervals + +```{r} +confint(glm1) +confint.agnostic(glm1) +``` + + + + +## Rates + + +

    + + +$$ E[NHSS_i | JD_i, b_0, b_1]/NH_i = \exp\left(b_0 + b_1 JD_i\right) $$ + +

    + +$$ \log\left(E[NHSS_i | JD_i, b_0, b_1]\right) - \log(NH_i) = b_0 + b_1 JD_i $$ + +

    + +$$ \log\left(E[NHSS_i | JD_i, b_0, b_1]\right) = \log(NH_i) + b_0 + b_1 JD_i $$ + + + +## Fitting rates in R + +```{r ratesFit,dependson="agnostic", cache=TRUE,fig.height=4,fig.width=4} +glm2 <- glm(gaData$simplystats ~ julian(gaData$date),offset=log(visits+1), + family="poisson",data=gaData) +plot(julian(gaData$date),glm2$fitted,col="blue",pch=19,xlab="Date",ylab="Fitted Counts") +points(julian(gaData$date),glm1$fitted,col="red",pch=19) +``` + + + +## Fitting rates in R + +```{r,dependson="ratesFit",fig.height=4,fig.width=4} +glm2 <- glm(gaData$simplystats ~ julian(gaData$date),offset=log(visits+1), + family="poisson",data=gaData) +plot(julian(gaData$date),gaData$simplystats/(gaData$visits+1),col="grey",xlab="Date", + ylab="Fitted Rates",pch=19) +lines(julian(gaData$date),glm2$fitted/(gaData$visits+1),col="blue",lwd=3) +``` + + + +## More information + +* [Log-linear models and multiway tables](http://ww2.coastal.edu/kingw/statistics/R-tutorials/loglin.html) +* [Wikipedia on Poisson regression](http://en.wikipedia.org/wiki/Poisson_regression), [Wikipedia on overdispersion](http://en.wikipedia.org/wiki/Overdispersion) +* [Regression models for count data in R](http://cran.r-project.org/web/packages/pscl/vignettes/countreg.pdf) +* [pscl package](http://cran.r-project.org/web/packages/pscl/index.html) - the function _zeroinfl_ fits zero inflated models. diff --git a/07_RegressionModels/03_03_countOutcomes/index.html b/07_RegressionModels/03_03_countOutcomes/index.html index f01f2f899..9f4a87cfb 100644 --- a/07_RegressionModels/03_03_countOutcomes/index.html +++ b/07_RegressionModels/03_03_countOutcomes/index.html @@ -1,668 +1,392 @@ - - - - Count outcomes, Poisson GLMs - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -

    Count outcomes, Poisson GLMs

    -

    Regression Models

    -

    Brian Caffo, Jeffrey Leek, Roger Peng
    Johns Hopkins Bloomberg School of Public Health

    -
    -
    -
    - - - - -
    -

    Key ideas

    -
    -
    -
      -
    • Many data take the form of counts - -
        -
      • Calls to a call center
      • -
      • Number of flu cases in an area
      • -
      • Number of cars that cross a bridge
      • -
    • -
    • Data may also be in the form of rates - -
        -
      • Percent of children passing a test
      • -
      • Percent of hits to a website from a country
      • -
    • -
    • Linear regression with transformation is an option
    • -
    - -
    - -
    - - -
    -

    Poisson distribution

    -
    -
    -
      -
    • The Poisson distribution is a useful model for counts and rates
    • -
    • Here a rate is count per some monitoring time
    • -
    • Some examples uses of the Poisson distribution - -
        -
      • Modeling web traffic hits
      • -
      • Incidence rates
      • -
      • Approximating binomial probabilities with small \(p\) and large \(n\)
      • -
      • Analyzing contigency table data
      • -
    • -
    - -
    - -
    - - -
    -

    The Poisson mass function

    -
    -
    -
      -
    • \(X \sim Poisson(t\lambda)\) if -\[ -P(X = x) = \frac{(t\lambda)^x e^{-t\lambda}}{x!} -\] -For \(x = 0, 1, \ldots\).
    • -
    • The mean of the Poisson is \(E[X] = t\lambda\), thus \(E[X / t] = \lambda\)
    • -
    • The variance of the Poisson is \(Var(X) = t\lambda\).
    • -
    • The Poisson tends to a normal as \(t\lambda\) gets large.
    • -
    - -
    - -
    - - -
    -
    par(mfrow = c(1, 3))
    -plot(0 : 10, dpois(0 : 10, lambda = 2), type = "h", frame = FALSE)
    -plot(0 : 20, dpois(0 : 20, lambda = 10), type = "h", frame = FALSE)
    -plot(0 : 200, dpois(0 : 200, lambda = 100), type = "h", frame = FALSE) 
    -
    - -
    plot of chunk simPois
    - -
    - -
    - - -
    -

    Poisson distribution

    -
    -
    -

    Sort of, showing that the mean and variance are equal

    - -
    x <- 0 : 10000; lambda = 3
    -mu <- sum(x * dpois(x, lambda = lambda))
    -sigmasq <- sum((x - mu)^2 * dpois(x, lambda = lambda))
    -c(mu, sigmasq)
    -
    - -
    [1] 3 3
    -
    - -
    - -
    - - -
    -

    Example: Leek Group Website Traffic

    -
    -
    -
      -
    • Consider the daily counts to Jeff Leek's web site
    • -
    - -

    http://biostat.jhsph.edu/~jleek/

    - -
      -
    • Since the unit of time is always one day, set \(t = 1\) and then -the Poisson mean is interpretted as web hits per day. (If we set \(t = 24\), it would -be web hits per hour).
    • -
    - -
    - -
    - - -
    -

    Website data

    -
    -
    -
    download.file("https://dl.dropboxusercontent.com/u/7710864/data/gaData.rda",destfile="./data/gaData.rda",method="curl")
    -load("./data/gaData.rda")
    -gaData$julian <- julian(gaData$date)
    -head(gaData)
    -
    - -
            date visits simplystats julian
    -1 2011-01-01      0           0  14975
    -2 2011-01-02      0           0  14976
    -3 2011-01-03      0           0  14977
    -4 2011-01-04      0           0  14978
    -5 2011-01-05      0           0  14979
    -6 2011-01-06      0           0  14980
    -
    - -

    http://skardhamar.github.com/rga/

    - -
    - -
    - - -
    -

    Plot data

    -
    -
    -
    plot(gaData$julian,gaData$visits,pch=19,col="darkgrey",xlab="Julian",ylab="Visits")
    -
    - -
    plot of chunk unnamed-chunk-2
    - -
    - -
    - - -
    -

    Linear regression

    -
    -
    -

    \[ NH_i = b_0 + b_1 JD_i + e_i \]

    - -

    \(NH_i\) - number of hits to the website

    - -

    \(JD_i\) - day of the year (Julian day)

    - -

    \(b_0\) - number of hits on Julian day 0 (1970-01-01)

    - -

    \(b_1\) - increase in number of hits per unit day

    - -

    \(e_i\) - variation due to everything we didn't measure

    - -
    - -
    - - -
    -

    Linear regression line

    -
    -
    -
    plot(gaData$julian,gaData$visits,pch=19,col="darkgrey",xlab="Julian",ylab="Visits")
    -lm1 <- lm(gaData$visits ~ gaData$julian)
    -abline(lm1,col="red",lwd=3)
    -
    - -
    plot of chunk linReg
    - -
    - -
    - - -
    -

    Aside, taking the log of the outcome

    -
    -
    -
      -
    • Taking the natural log of the outcome has a specific interpretation.
    • -
    • Consider the model
    • -
    - -

    \[ \log(NH_i) = b_0 + b_1 JD_i + e_i \]

    - -

    \(NH_i\) - number of hits to the website

    - -

    \(JD_i\) - day of the year (Julian day)

    - -

    \(b_0\) - log number of hits on Julian day 0 (1970-01-01)

    - -

    \(b_1\) - increase in log number of hits per unit day

    - -

    \(e_i\) - variation due to everything we didn't measure

    - -
    - -
    - - -
    -

    Exponentiating coefficients

    -
    -
    -
      -
    • \(e^{E[\log(Y)]}\) geometric mean of \(Y\). - -
        -
      • With no covariates, this is estimated by \(e^{\frac{1}{n}\sum_{i=1}^n \log(y_i)} = (\prod_{i=1}^n y_i)^{1/n}\)
      • -
    • -
    • When you take the natural log of outcomes and fit a regression model, your exponentiated coefficients -estimate things about geometric means.
    • -
    • \(e^{\beta_0}\) estimated geometric mean hits on day 0
    • -
    • \(e^{\beta_1}\) estimated relative increase or decrease in geometric mean hits per day
    • -
    • There's a problem with logs with you have zero counts, adding a constant works
    • -
    - -
    round(exp(coef(lm(I(log(gaData$visits + 1)) ~ gaData$julian))), 5)
    -
    - -
      (Intercept) gaData$julian 
    -        0.000         1.002 
    -
    - -
    - -
    - - -
    -

    Linear vs. Poisson regression

    -
    -
    -

    Linear

    - -

    \[ NH_i = b_0 + b_1 JD_i + e_i \]

    - -

    or

    - -

    \[ E[NH_i | JD_i, b_0, b_1] = b_0 + b_1 JD_i\]

    - -

    Poisson/log-linear

    - -

    \[ \log\left(E[NH_i | JD_i, b_0, b_1]\right) = b_0 + b_1 JD_i \]

    - -

    or

    - -

    \[ E[NH_i | JD_i, b_0, b_1] = \exp\left(b_0 + b_1 JD_i\right) \]

    - -
    - -
    - - -
    -

    Multiplicative differences

    -
    -
    -



    -\[ E[NH_i | JD_i, b_0, b_1] = \exp\left(b_0 + b_1 JD_i\right) \]

    - -



    - -

    \[ E[NH_i | JD_i, b_0, b_1] = \exp\left(b_0 \right)\exp\left(b_1 JD_i\right) \]

    - -



    - -

    If \(JD_i\) is increased by one unit, \(E[NH_i | JD_i, b_0, b_1]\) is multiplied by \(\exp\left(b_1\right)\)

    - -
    - -
    - - -
    -

    Poisson regression in R

    -
    -
    -
    plot(gaData$julian,gaData$visits,pch=19,col="darkgrey",xlab="Julian",ylab="Visits")
    -glm1 <- glm(gaData$visits ~ gaData$julian,family="poisson")
    -abline(lm1,col="red",lwd=3); lines(gaData$julian,glm1$fitted,col="blue",lwd=3)
    -
    - -
    plot of chunk poisReg
    - -
    - -
    - - -
    -

    Mean-variance relationship?

    -
    -
    -
    plot(glm1$fitted,glm1$residuals,pch=19,col="grey",ylab="Residuals",xlab="Fitted")
    -
    - -
    plot of chunk unnamed-chunk-4
    - -
    - -
    - - -
    -

    Model agnostic standard errors

    -
    -
    -
    library(sandwich)
    -confint.agnostic <- function (object, parm, level = 0.95, ...)
    -{
    -    cf <- coef(object); pnames <- names(cf)
    -    if (missing(parm))
    -        parm <- pnames
    -    else if (is.numeric(parm))
    -        parm <- pnames[parm]
    -    a <- (1 - level)/2; a <- c(a, 1 - a)
    -    pct <- stats:::format.perc(a, 3)
    -    fac <- qnorm(a)
    -    ci <- array(NA, dim = c(length(parm), 2L), dimnames = list(parm,
    -                                                               pct))
    -    ses <- sqrt(diag(sandwich::vcovHC(object)))[parm]
    -    ci[] <- cf[parm] + ses %o% fac
    -    ci
    -}
    -
    - -

    http://stackoverflow.com/questions/3817182/vcovhc-and-confidence-interval

    - -
    - -
    - - -
    -

    Estimating confidence intervals

    -
    -
    -
    confint(glm1)
    -
    - -
                      2.5 %     97.5 %
    -(Intercept)   -34.34658 -31.159716
    -gaData$julian   0.00219   0.002396
    -
    - -
    confint.agnostic(glm1)
    -
    - -
                       2.5 %     97.5 %
    -(Intercept)   -36.362675 -29.136997
    -gaData$julian   0.002058   0.002528
    -
    - -
    - -
    - - -
    -

    Rates

    -
    -
    -



    - -

    \[ E[NHSS_i | JD_i, b_0, b_1]/NH_i = \exp\left(b_0 + b_1 JD_i\right) \]

    - -



    - -

    \[ \log\left(E[NHSS_i | JD_i, b_0, b_1]\right) - \log(NH_i) = b_0 + b_1 JD_i \]

    - -



    - -

    \[ \log\left(E[NHSS_i | JD_i, b_0, b_1]\right) = \log(NH_i) + b_0 + b_1 JD_i \]

    - -
    - -
    - - -
    -

    Fitting rates in R

    -
    -
    -
    glm2 <- glm(gaData$simplystats ~ julian(gaData$date),offset=log(visits+1),
    -            family="poisson",data=gaData)
    -plot(julian(gaData$date),glm2$fitted,col="blue",pch=19,xlab="Date",ylab="Fitted Counts")
    -points(julian(gaData$date),glm1$fitted,col="red",pch=19)
    -
    - -
    plot of chunk ratesFit
    - -
    - -
    - - -
    -

    Fitting rates in R

    -
    -
    -
    glm2 <- glm(gaData$simplystats ~ julian(gaData$date),offset=log(visits+1),
    -            family="poisson",data=gaData)
    -plot(julian(gaData$date),gaData$simplystats/(gaData$visits+1),col="grey",xlab="Date",
    -     ylab="Fitted Rates",pch=19)
    -lines(julian(gaData$date),glm2$fitted/(gaData$visits+1),col="blue",lwd=3)
    -
    - -
    plot of chunk unnamed-chunk-6
    - -
    - -
    - - -
    -

    More information

    -
    - - -
    - - -
    - - - - - - - - - - - - - - - \ No newline at end of file + + + + + + + + + + + + + + +Count outcomes, Poisson GLMs + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + +
    +

    Key ideas

    +
      +
    • Many data take the form of counts
    • +
    • Calls to a call center
    • +
    • Number of flu cases in an area
    • +
    • Number of cars that cross a bridge
    • +
    • Data may also be in the form of rates
    • +
    • Percent of children passing a test
    • +
    • Percent of hits to a website from a country
    • +
    • Linear regression with transformation is an option
    • +
    +
    +
    +

    Poisson distribution

    +
      +
    • The Poisson distribution is a useful model for counts and rates
    • +
    • Here a rate is count per some monitoring time
    • +
    • Some examples uses of the Poisson distribution +
        +
      • Modeling web traffic hits
      • +
      • Incidence rates
      • +
      • Approximating binomial probabilities with small \(p\) and large \(n\)
      • +
      • Analyzing contigency table data
      • +
    • +
    +
    +
    +

    The Poisson mass function

    +
      +
    • \(X \sim Poisson(t\lambda)\) if \[ +P(X = x) = \frac{(t\lambda)^x e^{-t\lambda}}{x!} +\] For \(x = 0, 1, \ldots\).
    • +
    • The mean of the Poisson is \(E[X] = t\lambda\), thus \(E[X / t] = \lambda\)
    • +
    • The variance of the Poisson is \(Var(X) = t\lambda\).
    • +
    • The Poisson tends to a normal as \(t\lambda\) gets large.
    • +
    +
    par(mfrow = c(1, 3))
    +plot(0 : 10, dpois(0 : 10, lambda = 2), type = "h", frame = FALSE)
    +plot(0 : 20, dpois(0 : 20, lambda = 10), type = "h", frame = FALSE)
    +plot(0 : 200, dpois(0 : 200, lambda = 100), type = "h", frame = FALSE) 
    +
    + +
    +
    +
    +

    Poisson distribution

    +
    +

    Sort of, showing that the mean and variance are equal

    +
    x <- 0 : 10000; lambda = 3
    +mu <- sum(x * dpois(x, lambda = lambda))
    +sigmasq <- sum((x - mu)^2 * dpois(x, lambda = lambda))
    +c(mu, sigmasq)
    +
    [1] 3 3
    +
    +
    +
    +

    Example: Leek Group Website Traffic

    +
      +
    • Consider the daily counts to Jeff Leek’s web site
    • +
    +

    http://biostat.jhsph.edu/~jleek/

    +
      +
    • Since the unit of time is always one day, set \(t = 1\) and then the Poisson mean is interpretted as web hits per day. (If we set \(t = 24\), it would be web hits per hour).
    • +
    +
    +
    +

    Website data

    +
    download.file("https://dl.dropboxusercontent.com/u/7710864/data/gaData.rda",destfile="./data/gaData.rda",method="curl")
    +load("./data/gaData.rda")
    +gaData$julian <- julian(gaData$date)
    +head(gaData)
    +
            date visits simplystats julian
    +1 2011-01-01      0           0  14975
    +2 2011-01-02      0           0  14976
    +3 2011-01-03      0           0  14977
    +4 2011-01-04      0           0  14978
    +5 2011-01-05      0           0  14979
    +6 2011-01-06      0           0  14980
    +

    http://skardhamar.github.com/rga/

    +
    +
    +

    Plot data

    +
    plot(gaData$julian,gaData$visits,pch=19,col="darkgrey",xlab="Julian",ylab="Visits")
    +
    + +
    +
    +
    +

    Linear regression

    +

    \[ NH_i = b_0 + b_1 JD_i + e_i \]

    +

    \(NH_i\) - number of hits to the website

    +

    \(JD_i\) - day of the year (Julian day)

    +

    \(b_0\) - number of hits on Julian day 0 (1970-01-01)

    +

    \(b_1\) - increase in number of hits per unit day

    +

    \(e_i\) - variation due to everything we didn’t measure

    +
    +
    +

    Linear regression line

    +
    plot(gaData$julian,gaData$visits,pch=19,col="darkgrey",xlab="Julian",ylab="Visits")
    +lm1 <- lm(gaData$visits ~ gaData$julian)
    +abline(lm1,col="red",lwd=3)
    +
    + +
    +
    +
    +

    Aside, taking the log of the outcome

    +
      +
    • Taking the natural log of the outcome has a specific interpretation.
    • +
    • Consider the model
    • +
    +

    \[ \log(NH_i) = b_0 + b_1 JD_i + e_i \]

    +

    \(NH_i\) - number of hits to the website

    +

    \(JD_i\) - day of the year (Julian day)

    +

    \(b_0\) - log number of hits on Julian day 0 (1970-01-01)

    +

    \(b_1\) - increase in log number of hits per unit day

    +

    \(e_i\) - variation due to everything we didn’t measure

    +
    +
    +

    Exponentiating coefficients

    +
      +
    • \(e^{E[\log(Y)]}\) geometric mean of \(Y\). +
        +
      • With no covariates, this is estimated by \(e^{\frac{1}{n}\sum_{i=1}^n \log(y_i)} = (\prod_{i=1}^n y_i)^{1/n}\)
      • +
    • +
    • When you take the natural log of outcomes and fit a regression model, your exponentiated coefficients estimate things about geometric means.
    • +
    • \(e^{\beta_0}\) estimated geometric mean hits on day 0
    • +
    • \(e^{\beta_1}\) estimated relative increase or decrease in geometric mean hits per day
    • +
    • There’s a problem with logs with you have zero counts, adding a constant works
    • +
    +
    round(exp(coef(lm(I(log(gaData$visits + 1)) ~ gaData$julian))), 5)
    +
      (Intercept) gaData$julian 
    +      0.00000       1.00231 
    +
    +
    +

    Linear vs. Poisson regression

    +

    Linear

    +

    \[ NH_i = b_0 + b_1 JD_i + e_i \]

    +

    or

    +

    \[ E[NH_i | JD_i, b_0, b_1] = b_0 + b_1 JD_i\]

    +

    Poisson/log-linear

    +

    \[ \log\left(E[NH_i | JD_i, b_0, b_1]\right) = b_0 + b_1 JD_i \]

    +

    or

    +

    \[ E[NH_i | JD_i, b_0, b_1] = \exp\left(b_0 + b_1 JD_i\right) \]

    +
    +
    +

    Multiplicative differences

    +



    \[ E[NH_i | JD_i, b_0, b_1] = \exp\left(b_0 + b_1 JD_i\right) \]

    +



    +

    \[ E[NH_i | JD_i, b_0, b_1] = \exp\left(b_0 \right)\exp\left(b_1 JD_i\right) \]

    +



    +

    If \(JD_i\) is increased by one unit, \(E[NH_i | JD_i, b_0, b_1]\) is multiplied by \(\exp\left(b_1\right)\)

    +
    +
    +

    Poisson regression in R

    +
    plot(gaData$julian,gaData$visits,pch=19,col="darkgrey",xlab="Julian",ylab="Visits")
    +glm1 <- glm(gaData$visits ~ gaData$julian,family="poisson")
    +abline(lm1,col="red",lwd=3); lines(gaData$julian,glm1$fitted,col="blue",lwd=3)
    +
    + +
    +
    +
    +

    Mean-variance relationship?

    +
    plot(glm1$fitted,glm1$residuals,pch=19,col="grey",ylab="Residuals",xlab="Fitted")
    +
    + +
    +
    +
    +

    Model agnostic standard errors

    +
    library(sandwich)
    +confint.agnostic <- function (object, parm, level = 0.95, ...)
    +{
    +    cf <- coef(object); pnames <- names(cf)
    +    if (missing(parm))
    +        parm <- pnames
    +    else if (is.numeric(parm))
    +        parm <- pnames[parm]
    +    a <- (1 - level)/2; a <- c(a, 1 - a)
    +    pct <- stats:::format.perc(a, 3)
    +    fac <- qnorm(a)
    +    ci <- array(NA, dim = c(length(parm), 2L), dimnames = list(parm,
    +                                                               pct))
    +    ses <- sqrt(diag(sandwich::vcovHC(object)))[parm]
    +    ci[] <- cf[parm] + ses %o% fac
    +    ci
    +}
    +

    http://stackoverflow.com/questions/3817182/vcovhc-and-confidence-interval

    +
    +
    +

    Estimating confidence intervals

    +
    confint(glm1)
    +
                          2.5 %        97.5 %
    +(Intercept)   -34.346577587 -31.159715656
    +gaData$julian   0.002190043   0.002396461
    +
    confint.agnostic(glm1)
    +
                          2.5 %        97.5 %
    +(Intercept)   -36.362674594 -29.136997254
    +gaData$julian   0.002058147   0.002527955
    +
    +
    +

    Rates

    +



    +

    \[ E[NHSS_i | JD_i, b_0, b_1]/NH_i = \exp\left(b_0 + b_1 JD_i\right) \]

    +



    +

    \[ \log\left(E[NHSS_i | JD_i, b_0, b_1]\right) - \log(NH_i) = b_0 + b_1 JD_i \]

    +



    +

    \[ \log\left(E[NHSS_i | JD_i, b_0, b_1]\right) = \log(NH_i) + b_0 + b_1 JD_i \]

    +
    +
    +

    Fitting rates in R

    +
    glm2 <- glm(gaData$simplystats ~ julian(gaData$date),offset=log(visits+1),
    +            family="poisson",data=gaData)
    +plot(julian(gaData$date),glm2$fitted,col="blue",pch=19,xlab="Date",ylab="Fitted Counts")
    +points(julian(gaData$date),glm1$fitted,col="red",pch=19)
    +
    + +
    +
    +
    +

    Fitting rates in R

    +
    glm2 <- glm(gaData$simplystats ~ julian(gaData$date),offset=log(visits+1),
    +            family="poisson",data=gaData)
    +plot(julian(gaData$date),gaData$simplystats/(gaData$visits+1),col="grey",xlab="Date",
    +     ylab="Fitted Rates",pch=19)
    +lines(julian(gaData$date),glm2$fitted/(gaData$visits+1),col="blue",lwd=3)
    +
    + +
    +
    + + + + + +
    + + + + + + + + diff --git a/07_RegressionModels/03_04_bonus/index.Rmd b/07_RegressionModels/03_04_bonus/index.Rmd index ac9afbed2..d9adc6d80 100644 --- a/07_RegressionModels/03_04_bonus/index.Rmd +++ b/07_RegressionModels/03_04_bonus/index.Rmd @@ -1,116 +1,118 @@ ---- -title : Hodgepodge -subtitle : Regression models -author : Brian Caffo, Jeff Leek, Roger Peng -job : Johns Hopkins Bloomberg School of Public Health -logo : bloomberg_shield.png -framework : io2012 # {io2012, html5slides, shower, dzslides, ...} -highlighter : highlight.js # {highlight.js, prettify, highlight} -hitheme : tomorrow # -url: - lib: ../../librariesNew - assets: ../../assets -widgets : [mathjax] # {mathjax, quiz, bootstrap} -mode : selfcontained # {standalone, draft} ---- -```{r setup, cache = F, echo = F, message = F, warning = F, tidy = F, results='hide'} -# make this an external chunk that can be included in any file -options(width = 100) -opts_chunk$set(message = F, error = F, warning = F, comment = NA, fig.align = 'center', dpi = 100, tidy = F, cache.path = '.cache/', fig.path = 'fig/') - -options(xtable.type = 'html') -knit_hooks$set(inline = function(x) { - if(is.numeric(x)) { - round(x, getOption('digits')) - } else { - paste(as.character(x), collapse = ', ') - } -}) -knit_hooks$set(plot = knitr:::hook_plot_html) -runif(1) -``` - -## How to fit functions using linear models -* Consider a model $Y_i = f(X_i) + \epsilon$. -* How can we fit such a model using linear models (called scatterplot smoothing) -* Consider the model - $$ - Y_i = \beta_0 + \beta_1 X_i + \sum_{k=1}^d (x_i - \xi_k)_+ \gamma_k + \epsilon_{i} - $$ -where $(a)_+ = a$ if $a > 0$ and $0$ otherwise and $\xi_1 \leq ... \leq \xi_d$ are known knot points. -* Prove to yourelf that the mean function -$$ -\beta_0 + \beta_1 X_i + \sum_{k=1}^d (x_i - \xi_k)_+ \gamma_k -$$ -is continuous at the knot points. - ---- -## Simulated example -```{r, fig.height=4, fig.width=4} -n <- 500; x <- seq(0, 4 * pi, length = n); y <- sin(x) + rnorm(n, sd = .3) -knots <- seq(0, 8 * pi, length = 20); -splineTerms <- sapply(knots, function(knot) (x > knot) * (x - knot)) -xMat <- cbind(1, x, splineTerms) -yhat <- predict(lm(y ~ xMat - 1)) -plot(x, y, frame = FALSE, pch = 21, bg = "lightblue", cex = 2) -lines(x, yhat, col = "red", lwd = 2) -``` - ---- -## Adding squared terms -* Adding squared terms makes it continuously differentiable at the knot points. -* Adding cubic terms makes it twice continuously differentiable at the knot points; etcetera. -$$ - Y_i = \beta_0 + \beta_1 X_i + \beta_2 X_i^2 + \sum_{k=1}^d (x_i - \xi_k)_+^2 \gamma_k + \epsilon_{i} -$$ - ---- -```{r, fig.height=4, fig.width=4} -splineTerms <- sapply(knots, function(knot) (x > knot) * (x - knot)^2) -xMat <- cbind(1, x, x^2, splineTerms) -yhat <- predict(lm(y ~ xMat - 1)) -plot(x, y, frame = FALSE, pch = 21, bg = "lightblue", cex = 2) -lines(x, yhat, col = "red", lwd = 2) -``` - ---- -## Notes -* The collection of regressors is called a basis. - * People have spent **a lot** of time thinking about bases for this kind of problem. So, consider this as just a teaser. -* Single knot point terms can fit hockey stick like processes. -* These bases can be used in GLMs as well. -* An issue with these approaches is the large number of parameters introduced. - * Requires some method of so called regularization. - ---- -## Harmonics using linear models -```{r} -##Chord finder, playing the white keys on a piano from octave c4 - c5 -notes4 <- c(261.63, 293.66, 329.63, 349.23, 392.00, 440.00, 493.88, 523.25) -t <- seq(0, 2, by = .001); n <- length(t) -c4 <- sin(2 * pi * notes4[1] * t); e4 <- sin(2 * pi * notes4[3] * t); -g4 <- sin(2 * pi * notes4[5] * t) -chord <- c4 + e4 + g4 + rnorm(n, 0, 0.3) -x <- sapply(notes4, function(freq) sin(2 * pi * freq * t)) -fit <- lm(chord ~ x - 1) -``` - ---- -```{r, fig.height=5,fig.width=5, echo=FALSE} -plot(c(0, 9), c(0, 1.5), xlab = "Note", ylab = "Coef^2", axes = FALSE, frame = TRUE, type = "n") -axis(2) -axis(1, at = 1 : 8, labels = c("c4", "d4", "e4", "f4", "g4", "a4", "b4", "c5")) -for (i in 1 : 8) abline(v = i, lwd = 3, col = grey(.8)) -lines(c(0, 1 : 8, 9), c(0, coef(fit)^2, 0), type = "l", lwd = 3, col = "red") -``` - ---- -```{r, fig.height=5, fig.wdith=5} -##(How you would really do it) -a <- fft(chord); plot(Re(a)^2, type = "l") -``` - - - - - +--- +title : Hodgepodge +subtitle : Regression models +author : Brian Caffo, Jeff Leek, Roger Peng +job : Johns Hopkins Bloomberg School of Public Health +logo : bloomberg_shield.png +framework : io2012 # {io2012, html5slides, shower, dzslides, ...} +highlighter : highlight.js # {highlight.js, prettify, highlight} +hitheme : tomorrow # +url: + lib: ../../librariesNew + assets: ../../assets +widgets : [mathjax] # {mathjax, quiz, bootstrap} +mode : selfcontained # {standalone, draft} +--- +```{r setup, cache = F, echo = F, message = F, warning = F, tidy = F, results='hide'} +# Must explicitly include knitr or the chunks will fail, at least in Linux +library(knitr) +# make this an external chunk that can be included in any file +options(width = 100) +opts_chunk$set(message = F, error = F, warning = F, comment = NA, fig.align = 'center', dpi = 100, tidy = F, cache.path = '.cache/', fig.path = 'fig/') + +options(xtable.type = 'html') +knit_hooks$set(inline = function(x) { + if(is.numeric(x)) { + round(x, getOption('digits')) + } else { + paste(as.character(x), collapse = ', ') + } +}) +knit_hooks$set(plot = knitr:::hook_plot_html) +runif(1) +``` + +## How to fit functions using linear models +* Consider a model $Y_i = f(X_i) + \epsilon$. +* How can we fit such a model using linear models (called scatterplot smoothing) +* Consider the model + $$ + Y_i = \beta_0 + \beta_1 X_i + \sum_{k=1}^d (x_i - \xi_k)_+ \gamma_k + \epsilon_{i} + $$ +where $(a)_+ = a$ if $a > 0$ and $0$ otherwise and $\xi_1 \leq ... \leq \xi_d$ are known knot points. +* Prove to yourelf that the mean function +$$ +\beta_0 + \beta_1 X_i + \sum_{k=1}^d (x_i - \xi_k)_+ \gamma_k +$$ +is continuous at the knot points. + + +## Simulated example +```{r, fig.height=4, fig.width=4} +n <- 500; x <- seq(0, 4 * pi, length = n); y <- sin(x) + rnorm(n, sd = .3) +knots <- seq(0, 8 * pi, length = 20); +splineTerms <- sapply(knots, function(knot) (x > knot) * (x - knot)) +xMat <- cbind(1, x, splineTerms) +yhat <- predict(lm(y ~ xMat - 1)) +plot(x, y, frame = FALSE, pch = 21, bg = "lightblue", cex = 2) +lines(x, yhat, col = "red", lwd = 2) +``` + + +## Adding squared terms +* Adding squared terms makes it continuously differentiable at the knot points. +* Adding cubic terms makes it twice continuously differentiable at the knot points; etcetera. +$$ + Y_i = \beta_0 + \beta_1 X_i + \beta_2 X_i^2 + \sum_{k=1}^d (x_i - \xi_k)_+^2 \gamma_k + \epsilon_{i} +$$ + + +```{r, fig.height=4, fig.width=4} +splineTerms <- sapply(knots, function(knot) (x > knot) * (x - knot)^2) +xMat <- cbind(1, x, x^2, splineTerms) +yhat <- predict(lm(y ~ xMat - 1)) +plot(x, y, frame = FALSE, pch = 21, bg = "lightblue", cex = 2) +lines(x, yhat, col = "red", lwd = 2) +``` + + +## Notes +* The collection of regressors is called a basis. + * People have spent **a lot** of time thinking about bases for this kind of problem. So, consider this as just a teaser. +* Single knot point terms can fit hockey stick like processes. +* These bases can be used in GLMs as well. +* An issue with these approaches is the large number of parameters introduced. + * Requires some method of so called regularization. + + +## Harmonics using linear models +```{r} +##Chord finder, playing the white keys on a piano from octave c4 - c5 +notes4 <- c(261.63, 293.66, 329.63, 349.23, 392.00, 440.00, 493.88, 523.25) +t <- seq(0, 2, by = .001); n <- length(t) +c4 <- sin(2 * pi * notes4[1] * t); e4 <- sin(2 * pi * notes4[3] * t); +g4 <- sin(2 * pi * notes4[5] * t) +chord <- c4 + e4 + g4 + rnorm(n, 0, 0.3) +x <- sapply(notes4, function(freq) sin(2 * pi * freq * t)) +fit <- lm(chord ~ x - 1) +``` + + +```{r, fig.height=5,fig.width=5, echo=FALSE} +plot(c(0, 9), c(0, 1.5), xlab = "Note", ylab = "Coef^2", axes = FALSE, frame = TRUE, type = "n") +axis(2) +axis(1, at = 1 : 8, labels = c("c4", "d4", "e4", "f4", "g4", "a4", "b4", "c5")) +for (i in 1 : 8) abline(v = i, lwd = 3, col = grey(.8)) +lines(c(0, 1 : 8, 9), c(0, coef(fit)^2, 0), type = "l", lwd = 3, col = "red") +``` + + +```{r, fig.height=5, fig.wdith=5} +##(How you would really do it) +a <- fft(chord); plot(Re(a)^2, type = "l") +``` + + + + + diff --git a/07_RegressionModels/03_04_bonus/index.html b/07_RegressionModels/03_04_bonus/index.html index 6d28a79ad..56cbce078 100644 --- a/07_RegressionModels/03_04_bonus/index.html +++ b/07_RegressionModels/03_04_bonus/index.html @@ -1,266 +1,224 @@ - - - - Hodgepodge - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -

    Hodgepodge

    -

    Regression models

    -

    Brian Caffo, Jeff Leek, Roger Peng
    Johns Hopkins Bloomberg School of Public Health

    -
    -
    -
    - - - - -
    -

    How to fit functions using linear models

    -
    -
    -
      -
    • Consider a model \(Y_i = f(X_i) + \epsilon\).
    • -
    • How can we fit such a model using linear models (called scatterplot smoothing)
    • -
    • Consider the model -\[ -Y_i = \beta_0 + \beta_1 X_i + \sum_{k=1}^d (x_i - \xi_k)_+ \gamma_k + \epsilon_{i} -\] -where \((a)_+ = a\) if \(a > 0\) and \(0\) otherwise and \(\xi_1 \leq ... \leq \xi_d\) are known knot points.
    • -
    • Prove to yourelf that the mean function -\[ -\beta_0 + \beta_1 X_i + \sum_{k=1}^d (x_i - \xi_k)_+ \gamma_k -\] -is continuous at the knot points.
    • -
    - -
    - -
    - - -
    -

    Simulated example

    -
    -
    -
    n <- 500; x <- seq(0, 4 * pi, length = n); y <- sin(x) + rnorm(n, sd = .3)
    -knots <- seq(0, 8 * pi, length = 20); 
    -splineTerms <- sapply(knots, function(knot) (x > knot) * (x - knot))
    -xMat <- cbind(1, x, splineTerms)
    -yhat <- predict(lm(y ~ xMat - 1))
    -plot(x, y, frame = FALSE, pch = 21, bg = "lightblue", cex = 2)
    -lines(x, yhat, col = "red", lwd = 2)
    -
    - -
    plot of chunk unnamed-chunk-1
    - -
    - -
    - - -
    -

    Adding squared terms

    -
    -
    -
      -
    • Adding squared terms makes it continuously differentiable at the knot points.
    • -
    • Adding cubic terms makes it twice continuously differentiable at the knot points; etcetera. -\[ -Y_i = \beta_0 + \beta_1 X_i + \beta_2 X_i^2 + \sum_{k=1}^d (x_i - \xi_k)_+^2 \gamma_k + \epsilon_{i} -\]
    • -
    - -
    - -
    - - -
    -
    splineTerms <- sapply(knots, function(knot) (x > knot) * (x - knot)^2)
    -xMat <- cbind(1, x, x^2, splineTerms)
    -yhat <- predict(lm(y ~ xMat - 1))
    -plot(x, y, frame = FALSE, pch = 21, bg = "lightblue", cex = 2)
    -lines(x, yhat, col = "red", lwd = 2)
    -
    - -
    plot of chunk unnamed-chunk-2
    - -
    - -
    - - -
    -

    Notes

    -
    -
    -
      -
    • The collection of regressors is called a basis. - -
        -
      • People have spent a lot of time thinking about bases for this kind of problem. So, consider this as just a teaser.
      • -
    • -
    • Single knot point terms can fit hockey stick like processes.
    • -
    • These bases can be used in GLMs as well.
    • -
    • An issue with these approaches is the large number of parameters introduced. - -
        -
      • Requires some method of so called regularization.
      • -
    • -
    - -
    - -
    - - -
    -

    Harmonics using linear models

    -
    -
    -
    ##Chord finder, playing the white keys on a piano from octave c4 - c5
    -notes4 <- c(261.63, 293.66, 329.63, 349.23, 392.00, 440.00, 493.88, 523.25)
    -t <- seq(0, 2, by = .001); n <- length(t)
    -c4 <- sin(2 * pi * notes4[1] * t); e4 <- sin(2 * pi * notes4[3] * t); 
    -g4 <- sin(2 * pi * notes4[5] * t)
    -chord <- c4 + e4 + g4 + rnorm(n, 0, 0.3)
    -x <- sapply(notes4, function(freq) sin(2 * pi * freq * t))
    -fit <- lm(chord ~ x - 1)
    -
    - -
    - -
    - - -
    -
    plot of chunk unnamed-chunk-4
    - -
    - -
    - - -
    -
    ##(How you would really do it)
    -a <- fft(chord); plot(Re(a)^2, type = "l")
    -
    - -
    plot of chunk unnamed-chunk-5
    - -
    - -
    - - -
    - - - - - - - - - - - - - - - \ No newline at end of file + + + + + + + + + + + + + + +Hodgepodge + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + +
    +

    How to fit functions using linear models

    +
      +
    • Consider a model \(Y_i = f(X_i) + \epsilon\).
    • +
    • How can we fit such a model using linear models (called scatterplot smoothing)
    • +
    • Consider the model \[ + Y_i = \beta_0 + \beta_1 X_i + \sum_{k=1}^d (x_i - \xi_k)_+ \gamma_k + \epsilon_{i} + \] where \((a)_+ = a\) if \(a > 0\) and \(0\) otherwise and \(\xi_1 \leq ... \leq \xi_d\) are known knot points.
    • +
    • Prove to yourelf that the mean function \[ +\beta_0 + \beta_1 X_i + \sum_{k=1}^d (x_i - \xi_k)_+ \gamma_k +\] is continuous at the knot points.
    • +
    +
    +
    +

    Simulated example

    +
    n <- 500; x <- seq(0, 4 * pi, length = n); y <- sin(x) + rnorm(n, sd = .3)
    +knots <- seq(0, 8 * pi, length = 20); 
    +splineTerms <- sapply(knots, function(knot) (x > knot) * (x - knot))
    +xMat <- cbind(1, x, splineTerms)
    +yhat <- predict(lm(y ~ xMat - 1))
    +plot(x, y, frame = FALSE, pch = 21, bg = "lightblue", cex = 2)
    +lines(x, yhat, col = "red", lwd = 2)
    +
    + +
    +
    +
    +

    Adding squared terms

    +
      +
    • Adding squared terms makes it continuously differentiable at the knot points.
    • +
    • Adding cubic terms makes it twice continuously differentiable at the knot points; etcetera. \[ + Y_i = \beta_0 + \beta_1 X_i + \beta_2 X_i^2 + \sum_{k=1}^d (x_i - \xi_k)_+^2 \gamma_k + \epsilon_{i} +\]
    • +
    +
    splineTerms <- sapply(knots, function(knot) (x > knot) * (x - knot)^2)
    +xMat <- cbind(1, x, x^2, splineTerms)
    +yhat <- predict(lm(y ~ xMat - 1))
    +plot(x, y, frame = FALSE, pch = 21, bg = "lightblue", cex = 2)
    +lines(x, yhat, col = "red", lwd = 2)
    +
    + +
    +
    +
    +

    Notes

    +
      +
    • The collection of regressors is called a basis.
    • +
    • People have spent a lot of time thinking about bases for this kind of problem. So, consider this as just a teaser.
    • +
    • Single knot point terms can fit hockey stick like processes.
    • +
    • These bases can be used in GLMs as well.
    • +
    • An issue with these approaches is the large number of parameters introduced.
    • +
    • Requires some method of so called regularization.
    • +
    +
    +
    +

    Harmonics using linear models

    +
    ##Chord finder, playing the white keys on a piano from octave c4 - c5
    +notes4 <- c(261.63, 293.66, 329.63, 349.23, 392.00, 440.00, 493.88, 523.25)
    +t <- seq(0, 2, by = .001); n <- length(t)
    +c4 <- sin(2 * pi * notes4[1] * t); e4 <- sin(2 * pi * notes4[3] * t); 
    +g4 <- sin(2 * pi * notes4[5] * t)
    +chord <- c4 + e4 + g4 + rnorm(n, 0, 0.3)
    +x <- sapply(notes4, function(freq) sin(2 * pi * freq * t))
    +fit <- lm(chord ~ x - 1)
    +
    + +
    +
    ##(How you would really do it)
    +a <- fft(chord); plot(Re(a)^2, type = "l")
    +
    + +
    +
    + + + + +
    + + + + + + + + diff --git a/07_RegressionModels/originalContent/002basicLeastSquares/index.Rmd b/07_RegressionModels/originalContent/002basicLeastSquares/index.Rmd index 09ea8caf0..cb873069f 100644 --- a/07_RegressionModels/originalContent/002basicLeastSquares/index.Rmd +++ b/07_RegressionModels/originalContent/002basicLeastSquares/index.Rmd @@ -16,6 +16,8 @@ mode : selfcontained # {standalone, draft} ```{r setup, cache = F, echo = F, message = F, warning = F, tidy = F} +# Must explicitly include knitr or the chunks will fail, at least in Linux +library(knitr) # make this an external chunk that can be included in any file options(width = 100) opts_chunk$set(message = F, error = F, warning = F, comment = NA, fig.align = 'center', dpi = 100, tidy = F, cache.path = '.cache/', fig.path = 'fig/') @@ -38,7 +40,7 @@ knit_hooks$set(plot = knitr:::hook_plot_html) * Make inferences about distributions or relationships ---- + ## Example: Average parent and child heights @@ -49,7 +51,7 @@ knit_hooks$set(plot = knitr:::hook_plot_html) [http://www.nature.com/ejhg/journal/v17/n8/full/ejhg20095a.html](http://www.nature.com/ejhg/journal/v17/n8/full/ejhg20095a.html) ---- + ## Still relevant @@ -62,7 +64,7 @@ knit_hooks$set(plot = knitr:::hook_plot_html) [Predicting height: the Victorian approach beats modern genomics](http://www.wired.com/wiredscience/2009/03/predicting-height-the-victorian-approach-beats-modern-genomics/) ---- + ## Load Galton Data @@ -75,7 +77,7 @@ hist(galton$child,col="blue",breaks=100) hist(galton$parent,col="blue",breaks=100) ``` ---- + ## The distribution of child heights @@ -84,7 +86,7 @@ hist(galton$child,col="blue",breaks=100) ``` ---- + ## Only know the child - average height @@ -94,7 +96,7 @@ meanChild <- mean(galton$child) lines(rep(meanChild,100),seq(0,150,length=100),col="red",lwd=5) ``` ---- + ## Only know the child - why average? @@ -102,7 +104,7 @@ If $C_i$ is the height of child $i$ then the average is the value of $\mu$ that $$ \sum_{i=1}^{928}(C_i - \mu)^2 $$ ---- + ## What if we plot child versus average parent @@ -110,7 +112,7 @@ $$ \sum_{i=1}^{928}(C_i - \mu)^2 $$ plot(galton$parent,galton$child,pch=19,col="blue") ``` ---- + ## Jittered plot @@ -119,7 +121,7 @@ set.seed(1234) plot(jitter(galton$parent,factor=2),jitter(galton$child,factor=2),pch=19,col="blue") ``` ---- + ## Average parent = 65 inches tall @@ -130,7 +132,7 @@ points(near65$parent,near65$child,pch=19,col="red") lines(seq(64,66,length=100),rep(mean(near65$child),100),col="red",lwd=4) ``` ---- + ## Average parent = 71 inches tall @@ -142,7 +144,7 @@ lines(seq(70,72,length=100),rep(mean(near71$child),100),col="red",lwd=4) ``` ---- + ## Fitting a line @@ -154,7 +156,7 @@ lm1 <- lm(galton$child ~ galton$parent) lines(galton$parent,lm1$fitted,col="red",lwd=3) ``` ---- + ## Why not this line? @@ -164,7 +166,7 @@ plot(galton$parent,galton$child,pch=19,col="blue") lines(galton$parent, 26 + 0.646*galton$parent) ``` ---- + ## The equation for a line @@ -173,7 +175,7 @@ If $C_i$ is the height of child $i$ and $P_i$ is the height of the average paren $$C_i = b_0 + b_1 P_i$$ ---- + ## Not all points are on the line @@ -183,7 +185,7 @@ lines(galton$parent,lm1$fitted,col="red",lwd=3) ``` ---- + ## Allowing for variation @@ -193,7 +195,7 @@ $$C_i = b_0 + b_1 P_i + e_i$$ $e_i$ is everything we didn't measure (how much they eat, where they live, do they stretch in the morning...) ---- + ## How do we pick best? @@ -202,7 +204,7 @@ If $C_i$ is the height of child $i$ and $P_i$ is the height of the average paren $$ \sum_{i=1}^{928}(C_i - \{b_0 + b_1 P_i\})^2 $$ ---- + ## Plot what is leftover diff --git a/07_RegressionModels/project/project.html b/07_RegressionModels/project/project.html index 0d9330aa2..7dae5a82f 100644 --- a/07_RegressionModels/project/project.html +++ b/07_RegressionModels/project/project.html @@ -1,188 +1,144 @@ - + + + - -Regression models final project + + + + + + + + + + + + + + + -body { - max-width: 800px; - margin: auto; - line-height: 20px; -} -tt, code, pre { - font-family: 'DejaVu Sans Mono', 'Droid Sans Mono', 'Lucida Console', Consolas, Monaco, monospace; -} -h1 { - font-size:2.2em; + -pre code { - display: block; padding: 0.5em; -} -code { - font-size: 92%; - border: 1px solid #ccc; -} + -code[class] { - background-color: #F8F8F8; -} + -table, td, th { - border: none; + +
    - + + + - -

    Regression models final project

    + -

    Context

    -

    You work for Motor Trend magazine. Looking at a data set of a collection of cars, they are interested in exploring the relationship between a set of variables and MPG (outcome). The are particurlarly interested -in the questions

    -
      -
    • “Is an automatic or manual transmission better for MPG”
    • -
    • “How different is the MPG between automatic manual transmission?”
    • -
    -

    Question

    -

    Taket the mtcars data set and write up an analysis to answer their question using regression models and exploratory data analyses.

    -

    Form of report

    + + + +
    +

    Regression models final project

    +
    +

    Context

    +

    You work for Motor Trend magazine. Looking at a data set of a collection of cars, they are interested in exploring the relationship between a set of variables and MPG (outcome). The are particurlarly interested in the questions

      -
    • Do not use any packages that are not in R-base or the library datasets.
    • -
    -
  • Brief. roughly the equivalent of 2 pages long or less.
  • -
  • Include a first paragraph executive summary.
  • +
  • “Is an automatic or manual transmission better for MPG”
  • +
  • “How different is the MPG between automatic manual transmission?”
  • - +
    +
    +

    Question

    +

    Taket the mtcars data set and write up an analysis to answer their question using regression models and exploratory data analyses.

    +
    +
    +

    Form of report

    +

    Your report must be * Written as a pdf printout of a compiled (using knitr) R markdown document. * Do not use any packages that are not in R-base or the library datasets. * Brief. roughly the equivalent of 2 pages long or less. * Include a first paragraph executive summary.

    +

    Peer grading

    -

    Your report will be graded on the following equally weighted criteria:

    - -
      +
      1. Did you interpret your coefficients correctly?
      2. Did you do some exploratory data analyses?
      3. Did you fit multiple models and detail your strategy for model selection?
      4. @@ -194,18 +150,39 @@

        Peer grading

      5. Did it include an executive summary?
      6. Was the report done in Rmd (knitr)?
      - -
        -
      • The grading will be for each of the criteria -
          -
        • 1 point - criteria met acceptably
        • +
        • The grading will be for each of the criteria
        • +
        • 1 point - criteria met acceptably
        • 0 points - criteria not met
        • -
      -

      Score will be the sum of the points.

      +
    +
    +
    + - + +
    + + + + + + +