Formula/0000755000175400001440000000000013131006611012042 5ustar zeileisusersFormula/inst/0000755000175400001440000000000013131004422013015 5ustar zeileisusersFormula/inst/CITATION0000644000175400001440000000135013131004171014152 0ustar zeileisusersbibentry(bibtype = "Article", title = "Extended Model Formulas in {R}: Multiple Parts and Multiple Responses", author = c(person("Achim", "Zeileis", email = "Achim.Zeileis@R-project.org"), person("Yves", "Croissant")), journal = "Journal of Statistical Software", year = "2010", volume = "34", number = "1", pages = "1--13", doi = "10.18637/jss.v034.i01", header = "To cite Formula in publications use:", textVersion = paste("Achim Zeileis, Yves Croissant (2010).", "Extended Model Formulas in R: Multiple Parts and Multiple Responses.", "Journal of Statistical Software 34(1), 1-13.", "doi:10.18637/jss.v034.i01") ) Formula/inst/doc/0000755000175400001440000000000013131004422013562 5ustar zeileisusersFormula/inst/doc/Formula.pdf0000644000175400001440000035101713131004423015672 0ustar zeileisusers%PDF-1.5 % 1 0 obj << /Type /ObjStm /Length 4172 /Filter /FlateDecode /N 76 /First 621 >> stream x[Yw7~ocؗ9KK$'vr@-cԐMͥI[sVoBU(&f3Ì2%s[]-v=\|îrgԳ7OGbl:Z K{t9ᬺYJfwp}VcP{.'rĎS3csVMɷx1k{6s6VNt2/w[NTxRP@D>|BØA)]K\Gs'9Lk0chβ9欛iiN'H7|?}D0H"}et1CW2b2}tZSgI^#g,oU[s?'MX1z8{٢lKk?Tc'?d~L* /R,Y'=L#+jȵneCjT_R$ۨ}lROK2tfՏFdOO= "s)!ˏ|McI_. !9fT&OgHJi!螸I<]R=)HnNAr]b%C™GM(]B(SŃa8.'ixYZ WŰN _] QQyU7tⲨ?Ÿ*&ŴNX]MGӺzy3#^Y1/ꢾeQMxWy7=xpAGYA'[)Ԯ= +z p`B9א8˫'u3/=멌쫌Qe,=Z&>:Zph8:d{P3P~Su=g/RPIh `)0靆kLj@<t.-Q"<wRvX@{.ѽ&%6鹎Iht#54njhнI?@,GçO.A^`bpł3=ڢjEMuCˤ;^.r+=*ioʪ*;ݭ4}^A5]1S[5M7 m@p+I`S?w+wgώfnɼZ=XD=S6j s "Lm$^ |(c)@=]DÚ5]ɣQuB.asUxbH.8HvCýN "enQi3_OPΈ [AF1Ǖq#Ht0 V.t׎ёJ# xG ~ l{d建zm~V!T79޾_MpAen9Tm$ʦaCdl$sqB{MI.VRT^7FP2P*#koSmfO1*;{;\gfinC7TO!n^7}mSD q; X77 i0._љm[yM+JMãqW.^RУEn`ZZ~|@Ԧ~<]-EnZwEoZĺ=!٪Oa!|XUj6\\џ.5Lx5 _u  S M`LZ^Y?F bS&v,&#]|_r0X%0+:JoJQp4x֏|lk˝ P< +ɕ4% U9rNGewVgfttu6:Tg+:V:SљTLb2Ld*&S1͜H#)9̉4IP)Ms5熎lc']Lo#nwE4Sɾ`H9{N xAd7톗[g ;D!-SJnbȭ5]%Sb &[@˔` &B<ךf) Li ybNy =d lV9, ʷT\ÓA_EX%O^roiKY8yo68 R t*,&"MU< d N%Op3N(IhNKh,Y/:rCAJa,i!xL3$' }qaozÊ%Ŀ"OK*H $Pgqʂv#d%1 |%tPd(5;w1iC(M5o;OKD𣗈[ꍏIӡr-|`0jJpO W)9qAxrRxZ&qOxASݧG'Iӝ7d$Nw}?ivU,GySr5ZLMiN:~{oHfPT D[R2e]4%AزbGGinf*۝=MVtU⦼M_Zݗy&alg>o~{ݞ]=,Oџ r6/1Cʖ˜l6cTh:Hjw)}ӵ4>ٝ1vbD~M[d=uۜ#3Dfv%{I/Wl'uJ,5؇CK FP @ɭiek+i1uWNPoj#T4ז9ѻ&>(ɖ2@a%[ ,2p 9&;gSsv"1e pRN,726<*G+W9! .O3g*RSirF8sAո~vfW7^M3nXNSeoYHW]eE L)ǵJ+:pZxb|ߋIެi:E5 *dr+:{w:?/Җs1]Wl=zI 7vꝵ&i^ڣϚ/y+U9x.Y(~UV`}{m]36endstream endobj 78 0 obj << /Subtype /XML /Type /Metadata /Length 1701 >> stream GPL Ghostscript 9.20 formula processing, model frame, model matrix, R 2017-07-11T01:09:06+02:00 2017-07-11T01:09:06+02:00 LaTeX with hyperref package Extended Model Formulas in R: Multiple Parts and Multiple ResponsesAchim Zeileis, Yves Croissant endstream endobj 79 0 obj << /Type /ObjStm /Length 2609 /Filter /FlateDecode /N 75 /First 647 >> stream xZmsH~b-V 9ك=*$Zl+#˖d[XLe) cLytjXa*ؠ1hL2EBɲ p+(&<d0)d2)1{pLj~I5 I aA!a2(LF /ULIIh0Lh# AY] ZyR2L `L+z$$+^ʹ5 tPXL H5R#L.3FBU1Kf<: `1\*fpU*>кe6G99  Y-P6Ҹ`Yʹ0Â4 0F )ႤkXGCl.#6 ,I`iÖ$]cfg1!`f 1.0sp*,_~bVejA2~%{˨@1E{QL׽٢Xlh/W*ŻWe1>*_=0~]VpenW-1dI1~ C$RI fɄt%:#Y)$!j554we$&{pTTQYv9'aUhkrFZH+f9rL棲HhEܭQT(FiVzWN'{ 7鯾bha|0XX4 StFIexI {ZLss{>uNpb}=Ev6tv$.ʏꂍ'"ϊr~~ƻYݭdR{X&A..Aĥ6CAEU.ǑC޿[ptsspBl7= +8в5lf4;}ׁ2w nGW׻p D24-N ;+Gl76Ue>+l>[Pٻw JHķq'<`YVYɦYuQ\`n34˷5w)gUlLv]$`t:*'~\0Eox#ꛕ\b[KDk"cOH4ڀHR8az/?TcuM)$9T 61TxܽR~K'i|ZJ'UUQKhHo]t%Z'#oP vxhlLC9i }IJ9Q"_m=<:>~Zg┨gEi)ŨJ=W:خI3CLU5;ÃѼ,(OGH8j\56>MQ,,9 XإohnVpJ38:qC * t o:GľNa5iL"hp9h|ЪDFLRSp;kt]ntZhP@Сkt]ܸ҉nG)`V*O=xJLTH);thj\:s_~|uV#[N{;Ba+߱uS̲3 ?'3 {f;l򳓣g4 [q !mΞ <8>{MTjvr==87}Zwu82ظ~ݾu[\Qw6MD7xixNULʯz5Oc.VTcBC!so9b}vC>>I1tOyO99O,e sd[e6dgU}U>ʼ8?E~Mݧ ^s3_Z!HQ;HW*W{uXtwϰ 23. tLretGIlY{i{vVH[JnxUt=)qJZ9ۼiFc> stream x]IGv?P) `c_tόm#0H2leV^GI2[@i(Smwe-P>d1짟JeZ鯕*)GiF-)+c 8hGmEb7ߟQ6֚]JnS,A"‰G<)(i4(ggɤ&Z;ĤDw*/bjԬy 覿ۺ$, :/--]L+k\m5m܍Np4{$ߜ䛟A$/m嶛oLw.ǹM`8&fX)n@~|S7"l"q909(S0 5&Epɴ':~h]مHST Z)QS,d#Z0xe vt]KſwCTpg€UF nrUJA$>H $R.0x(_w̷&5;CWҧn85!Cf`ߩPB'{KЩf+q>6@"RUcZdBf2(%TR ]<ʿ'8 8][N!9& )ӰL9A=1?"x?@V˖ VBz 9 ,B]`ZP<`_.Zu Gc`8z/o ta#i$xmb8#NGL{B:~Vi{i->l;)Gܣs?>Z8ɡzքX~qL"yg| :BA=۾&WL;AQ Jq0-8VA!ڂeؗ"ѭWV[.c5|#X.!x(ޕxV XpMC,LF87HqĔK-@LCw][7ba;.Bͮ(vPVXK8}#x,%$`0\[,;$"ȁ[*1ΑScFJW݊HnK(SW[!&}?8/BvI`2wG4@^ D%N3\\F;[oOlLz[$HRHY#SW䉧̒љPV_mAXZɕרtHO 8 bO-m#6.9kFCbn!P{1yS֥#b]O6mpK(Ƒ5Y&7įU`o W$8/T`FGlg:{k!l|v_Tq&ec|/{iP}) $ cvA)ПV8Ew @Ќ A5^pY^Z la  1W]zc53WTǖR (> 8\Vd\tؔc_^<2CaAiC#loG ˡioI_0/b3%. f%ȼTa{6`g-}yzCg s՜Vwdz@/P`!XyKq<*M׊%_+鐜F`A<ʠQv-My t?f 3`r&'O2´X[KC]u ƌ8'p!08']8; x +Jtë][ >%~rhbi Ft'^z8E q 5n H;.ghO zܢPE?E)6't2.(T 09㘞cWӯ4z7P0М]n9L%8~|E._A}"^f%mF  \eX鐤#ٽKۖx"Žjs-m鷁2<_ѣR A0c${VdYbke;->gar}=2l.eFӴeB`V"΁8[եY!ֲ4&Ks ~ A5&.6mZ3#ŰD'  <Yyx>1a>W0r]y1. i_{CaϏ@7jbm8;zmл׫}{kOO=s ܢ+܎ll~X`]WONWɬ $:LcX>DB~NGGꐗD0T X}kOO=x*QGqڮ) IK%#D5oB pX#tz:`1 4m9ԠCDˈ|/T2Y6>+ceXz [?a7JK%JBΏLM88Ph &nfmXhxn-p`d7+jzkbF-jӮRG!2eȻp-Hꀗ9ڤ X9-;cto@sp!~zw+U."z@G&lJwP;`_d{IX{eҰ!4^xn6St{k{b^s0MBD'/[6H_.(5ShrK?l-]- u`hAZF]-:ac+Wm  xc<-^1i3M˜GfyFq6&b fh( mߠցrǢFJeo^х!Z&־\l?c[,@>At oq ̧ Qv4!FA kQYJ-ȣ= E6J8F38UTb!pYKyfTM$dXE M5c>=vd@j,]QCDa[LXr_UӌkeL] ^@k ف+Z=1`Ec.ŏ:51f al# 2qmU F {IwW DKN ,O`ȵ\f.YQR8Mս9r=IUH33[s! 蔯{$.CCJµ?F0xWs#G\QhhY1ё NPtt?oXhlB^ȿ%@0lF>_H~Ep5۩W"v}UD W,&݅ȣ䄳|w'J \h-ޜG;5GIht7_W`b~FZg}} P.k7W*0]ZC$n YSZh(GF H iPo-%W}/_+FbHń8pXu9B1#BûKxLxm/n!4VU,\(> 9? ]dȔT*mkyEu׭kq]gs0CRck~(Yl8s)r^EZ'6ZUGIiݤ;JmZH(3x~18 ,LR.Ɉg_K@+ּX):Oi>o@T0G#Zm[y} 5=Ьcf],ꐏ;PވD1} b7Re3 MwJr7DV+t6)Om#MA< ' J%-l~Q9ffr­q^eý)XJ6⠰4h m Z>C쒟sӐz0U%Fk~c2fH?ںL^XcaxșF4 2;/DŽo9Y=\qWƫ0.1t᰿mg\i08}}-˥#=V5H ,?pK5yXILֿ !RՅY Hy"]\ GQ[a~Ǿʛ\Wced0)F;@&q(rU$SXWYȓ`۔ڐs{QK5 `jB=צ6`d`'/ ά;!4b.{7f38WGԳ`%rj΁bDŽLC^mz >%m`KP"zx_prIJօw9ƃxe5&e=J][2]q1F:#<Fd zR'1IGԜV8DABrT3G0a&M˕[ofoZw:$~_%[Iv.r!kpc)j" !h"D#ϗ<̬3WcbONyQz]$6'IKPuO i"xbuiRH72|WJJd'd^(3Ҿ\VO4@ Q6g S3ey@IWR|bR8nQ3ED4W Ql&%rx9VafJsc^\%W(Mӂze>bOȻv%;%[.e B J#/ >w }Ǔ9 VO74&^+8M ;1y%dqc,CZ6n+Mtb1j `W(O[uGM/ʞ)(w^BJZGDbIf&c^4uq1f ٬I 6<&`P^Mi `bs fiʁ̙/r6b=_~@Gp]Yۻ~|}Qa%g?cƚt]/+rI%ak.% T]-}N"Lod40GL|w Nk:ƍq!hxvPbX>D)cAN$K)w?_fz5Sh9_#$qӊ1p53D_cB *YW$I*FlbwFgp#m'61 "7{O(%kt:RRDPIX xc)/rytC"㱩Jxb v)u vaW8lHI¿79uLƚ@ٳ2kX{Cr/jñ1W|8*Q9nb{>yU?/ Y4S_b΃%"O=pff3i8D1YȲgK:֚o^V"7aܣ)pW"m"W+~:8`8j[&,Pe(Q4FJBBo/% DEf!e@FBzv d<q,mq 9>8J6a_fS^qږ;A4,El"?<\!P6Agz:(uԹ:Qcz記o rAxޙJؾJҨ+E%ƌ-L*F`<t,ƈUSYt: ϕ,#s%_ϲb /Lc8_9Vl95`IW\)rv7{Wv=ωTwĶ> 蹈Ug\PHUP^|bdu?ӬsX IfDBwuD麁ύPQ)=1,De9o;b Kk3E02m鸧PGOzoVo;E l1Oƴj:A&N.B "^YeI vO k\t/Kp=&o#:N5e84`&m0_:g.[b ]ͱtfpXw95^b(וwdKP( RvD5eSendstream endobj 156 0 obj << /Filter /FlateDecode /Length 6163 >> stream x\[s\7r~gm70~HĚc/8UZNJq\2yQ$-мXݭF IYrR!Nї/8?I /óda`FTEGf?'c%f6h{&]:AHΤsL4^"&3 bNM05d3M0t^3A,< ;O6mQ L?d ]^f9wszWiڞl1\O;`$ʘsRM%|LD;;6;FEqF#۞w52.6L7AFcT?/? HWU ؠ꧵FDh6`'O2*2cTddm8tځiZ̸s _`cNn+ 4+0a|ɖ %XИ&5*(/|vK㝷|\c{ފ Bݳ5&#H.釐h/"1pz}8zAK*+w>2[bpջծ}ggt / -E%i–J,$-=kدnO xW{0/g['/GÄ,PpW̔ `ځsp41X,2p{`GB%/eTnA (ҩ@,i?YqMX^Nw;bfM.TЍMm׆m}*Sy({K="Fr"-ےG r C|= $X$͐4IQM~nӊOqM`U ur`qO4dzji4p˄ ߠV¤fzIL^weQ.~&5эB do;W ^c;6&ߢQylK~pU.j$qIӆ7$@wcIn#Έ!GE@: Ӄ9Wq%U[ Oh%\ɏG%4D9QA^rXÌ.Z'Sdίmu~v.W7zwFڢѲS)MHXN1?3*1*4@P0˳:û:C6a0ՖhZ.l6UH ;aRpXZz0!w K@'u]K$3V< D1K3e鑫 tkB@SOo2R  q qW:nvJu=fΦf)+qT| HRab14qrlǧUyjצSv{ϗg݃7{ l/E e4a0m&饤?ipBYRgr_g9UeDY72bɜWcb6 ?<\0:?(x{DlIPsޒ AC#bm/Ŷ2^zJ\頗Jƀs0i;}H}:4(,jy&3!m/qrF,gk Űl3a]ɱIA mZ풓sV+:O$ {xa*J+x%w#v1(C((d$6ɧ  tϦJ3T=,h#R3ԠG?BH-W箪dhXc۱ZHd*Aw+P#fg@Fԍ\.I %zQfI< s `Z"2hrcj UݿRg6T1nVfͪ~[HDq댊pS{ot`~Q ]#B] UU:3XBv[hD) ۜLmAdvI8;jyٔ'g^RFiJ%bOkxN%ROs@a*"L};YuIR: IRkc+) ^ 5s-M@e6=ck (esRT\-E.Ex+2Wmݑ7|{gU]Xbd\O tTI`"qrd;(@dd7q+_~ 'X hY=@ocprLAP[眃rN.2B3W"#0Vwcie/2\|Lc+&ENȸ+6u-td5t@den9R}XeۇHfI0}2ܰ˽a}fg-~|LnIȘM2.ȋ @9g}]V Km7H~n RplKHo1<`H׈^KqL]52S蓡DÖbJaG*'xcpcӸ8R{#.!۬)CJQ`2k qiofT'6v-:uV2H z\fpMn2Ja| <Ͳ!e) |MsM6$b2n)!1NkVTk\6[5͐zRaYU"{`L>$wfz;)NƦE:DPj=(KB"LKYM31}y)7i|)'aTS§Ъ$h1EMM"4?Lr,$UjVX ^xEzr/Z "ɽǜGɽ`{J2 Э7oV!gzˬABld Mk޿KXe<3EMk=bJ=eVjt% d*|sMI).-t OA 0%%Y`Rj U_r^.Iw% E T'@a9YǴ p EI&ЏDLEx~yRR'c C,[Z'R3ix7ƋPw(P ^H?#Ҳ->E: %8.q(eCbDϱ̀\7e<&]|_NM,yWlq{@5PN(ʋz6q_w@Go?f^O]_GVTB*S! 渔o{߅0M UFطGOInJMj 51Yھ;\FuǺ˱B8% AX& =pʗX7k"}yTh4Wg]7v 4U;:$ς u3Ғkm\.@5{gzRv#@Ϳ~ a6IJ GQVjSzCȿu8_qK۞/I;Ȅf)KpN ; ʽ' ^.lX܁/)YRp\ԆԍZ&P!=`Bj4E3|X3Z9M198\ӪDfڧ.ʛ*`QhN}+Gk [M5MTc9\.WT;_V~i/ч(+ϼ]j4v؅[Ji}4%\o:1K<}Oe/ɦ[|k)ȗ%hC%V2)ۏ%pi>çuUNù c/,{cX֦z;|8}6a;|O gC>Ӈ6gwYK|V@[NpҲL\,4hYB+^I?+|7zTa(tSybi1%ჾ =O7_/߯;-k !0y̥ r5Ο,ra ,p@ CSv]J/g|k_氫ftR:[Ƹrll\r|\pK';SM0k ]RΞµj]zP$%W P?S7PrT`r%bn; `nf|Wk .#:uhs(Q}D큵}BBO3niFJP[MVvhn [HN$w@3,Yg9Jdd5~$S?F-1*;r.1(Hݣ㐠OM8,gཿ.[˯z0źhH{(k-I%oE"b!,ZQk'za`}M19y>t"^TOPY6dKR?G~Z:c\d~Cv{}v]kXSnշbUTQ,G9aoclW&x,ì ;Z"տ usD74ƨ?҇@{hCoGD #Ulʒ[K箯#47uq_~M%!O x= l~"N JNљ w7L.K$Wudbr]dRyJQ^Hӯ3,Y׶ H;Џ.yפ楄8. -&W}0&E)y9-sָDTIݯ -C5}0 z!r0g`.7hT~9`7d8}9`P2*V0s>2W)`Q:ù,%Sb ZoOK{t?K5endstream endobj 157 0 obj << /Filter /FlateDecode /Length 4942 >> stream x\Ms7{ u : #;<2=k-(l )J(bKUHTWHn B#e"_^.W<<{L՞X}O]?8Gx/T.\x|jyc;غ>Xr)z#Pu!-z^M:@V :Vo1@6˕X%fvR3Ceнw4yTwNuoRhU;lu I40nijyp+㕊,V6YRF8۽J{?ٔ٠?0m&DtE N]`|#<1FFtI:͖U`Vqپ!Fg}6DE$M3d0Jj>K!?/OsuYT/~ (܃uLu -q8zEx e +]XG$5Y4d~q`'Ph #EYҦVb:OK7F0aI$mChޝ.!8cC҅Ad9c[ZSu9gPY0-%T$ؠ j#v`rjo YvSA:Z  bdp؋ ǹCoi9' $?í"w숯fܦ}kt.Igڀ{秎  9xׅ[;_0*òswnY=ӴƗ{كrw4bg(k,x3΁d!Atl87|SOjlM;6_^6vSӱ,zn!c6OjqmMUavimc9|77leHc#obqG!Q h#`dW 6YQmwDtS2cwsd =):'0eq-,"TȅNH:&vDDqN`mՐ@|!EmǕ")V+ p ,ߌ,gg`>fa;3%ԽO tCaFXvxeA$`s=z3DH6e}G@3ʹ8-) {TVnoI*#;ǒn3e$?]gaəˊz/.,D t![/ K@MSܞBib$E#ȋ~h&9[)Jd`f}c:rrUl«?U޴Pz=< mꓵ3rszD ]]_OAMoc&?%1ƔyJZwLħYǴIz":q@+^>5flZX 4'xxfv@6)ϐ*<6զM=;6YԼ.ޖ ިݬ ju@[Yrof% xx@,ɫ%k6=)O%s~ r4xT`ŌS=fS/:_&ڤoAjzNyI&Y4p d ==|_V͍EҽԔ))hR4/_S Jeoy_2eL^\e/v UL o *ʷqs: 7铳w`**pju^Uypp/Q~!w}4 6(V-ܼ5+kof԰l"ʄH8&C̲LEc9o7@/byL︪K Ǫv] Z]LaX+CID Lo;ꮚozUՎ7{Z{3Ad1|<.8θAm"-PaXӰEwK$;3<,b, @DD)q|]W g{Mmώ BУvt65Kds$5%{D:\1e;HCg.P&){Rm2V70I<=dI !i> ΫVۭqI?loktuf1@6|y7'Qyq{dn?+ Le$F|)w~xZ ך%YZ7^X|litIlp%IQWFct#;oBkA01Qsz %|IE6{`L Η"}`N7um$`g$HAA&>H/9if@)?jZ5%vUMCi>@a\`TmQb'I>㏛>Ri%e|Jo685cx&4_Sw/#^MD1ti\:V%YveҦ4smrI=M),b bk &3,}R m)>ii踠S NX)otpxvm~EdH_o|: O $=H*@!`U\hpTm͎d|SOjlMMV6f^xvlmil^l 6Umٱ)j38 *"Acъ^()y^JdAr Mq{(l8,n6lœYH/h>;<<']K)&7~LJB3~@ [y;*,E!9kSȫ-8t9\vL ":0w~Q냙Mg.55}>%L uѷWZ>CzA((Jk5d gBdrVf#L 2x(LXlH|ta*Q6>i3' W42*2=Ig*Cu:i/'|:4~.CpP2F^brjek=6fvvV!|V}j֣/h7e6?c?e=`UY+?<}ЛncwxORq~3Gi]^z:Kfkj¾:i_~jBOi??>)^*L:[Sץɡ:Ĉo[o'R82#jgILǬc!IUP2ȏ̬ rz6VKH4\zq{= s&6ٱO'ϕ$iWRt1QJפmqu.qb\o zI6rECp_hj.Oљ;_nJۡ{BV_^O6g`,Aݿ ArTG*ҁF_^Gh ~=1\>_|5u{up΅}c&Gwl3;9cx/_Ωendstream endobj 158 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 4762 >> stream xX XSg־1$Ui WikRpŢA@6%9 }Y@pڪgکCme>%`ig<Hrn{9+a1uZsKħ%3d3v޲̨/M~`wꙉcQ0J$C QA1γq^l7UaQU^0U }?8 &y A11[(..n*,zaDTs;9o R;{F8oR8tC1Q^Q ,^ЫQ1qx^ cRn ;2Tƛylfgf2>,f+ev0;.ƝyyYx0f1Y,e3f#,lb3 L`☧`&ɌbJF0K(ʌܓxHN[>Mj'#milL///`fn W̑Fa1eWđ#v?*xTFnLEcd\ȸw/5~]qft1k$7^S= Q$IDFDdC,p J1Û M1k0BDw 'LZu"[;hgɗb"閑#rE{((*y2+`AdEL^S>z'ҍ+BXGjfIҊXR #x|z},sF&wb\}+̓ o?Uw(NWu8TQ;[#`P7K''?WmGhBD;Fl#TM$t|KghgPa&Ec`H%l:(vgLd.qG E?N=ҁWrc}έmXN$,$3sԢ'4H)|X aiΐˀWn|PtnT P\=4odgĉ4uF ( xO*oz8p& owƅW\dɪSi)}Zx[p.f͸F=R g8LJ;{vwsN'W>.vC_wi p>7OɮܻiKٍ_rz7džOsN23륁S ю˳C$0 'ID@,Pk,Nv@@`zp'V1Ct gfZC-Tс.+MA"cYA"maY|20ސUNP`((k 0/+s߰M@FLWNSL%Nfy֛.c-*q49/=7(@$'154>|!l(X'i&VMzD* c/ ט_9L5INSg%^﮾FejMbTϒ%d>"uA.QymզF=T@=G$WB^32<* жzLsxj: ̬B0W Ufi@j 9qɉ`Ṗ,-TWfh}`V=p|P9G/P<@J2R`x6| (vf2 Mʶ_=leueuEͅS( pN^pL8˟8w~6ȸu{aKEX!MfI qo,+a`mV,$drxk%FS"(TCxE/ˌ#Y)N!S hз@'g VUyOzkhrhSeRbKR!-QK4.<pzjt:VIN(N~-OJ,yE8 "/8>8԰Ί8hLT:)+X.2;AK.F)7|jSφE kE$:7ޑRhhȫ4dQ̩+mHhS) jp'IGh_Op|B^eLy7s}a,n|d) ť03_=骸B|?HIW:o\rm-cgr{SkBy㿶M1x҄汶|t┉c5>%Xd?'-!?Ofl*d=)ϊxs=VUH2)?rK#m0CC/@ k"AHnvnjR̢h#I3RxUjUt ^bhl!9[X2%fn&=zC?(gā {Y:a5Va~#݃'vi+~5|AEb7sD!5`RrxZ|~ɺ@.v`YU_>`ڄ]*mw8mv`Bֈo#B:ܡ>0d!4k<\;b!j(⌇s|cUݢ2&ޭyTӮ t`\A'Rр!tQk24+ 2"yg?\^ҿwqh!M 󷛓[;jֆ ]g.w% Fi%8[.tBǞ=OqzYE $|¨*̅孴ÛTE(tG}C5 oz|tN]5>S־;_~ϰ=EGj)8]6346H] )=X)*y./*A I)鷼"SI"'AK} C Lߢ~)s#BohzûݭOS}JRtZJ$C·xwƐc.+H/Ԛ"@() ^pidԁe+.vuD6;e8K2yoFX(u*E7^⠗ "^f,9xgߡg LGCL ąԇӥ/r6?g =5(~m5Vܣ>5]r@<0(Ȍeii&ө I=PCSy n,3싺; EMKH@Stx}o̤U0?f~CL=F.HAnŅ,ElGHq5Zɤe~>u#_7[[M^I7k!DXHO(pUYB~z4 d O?QUCYQQz~cr6AջT@dd.LB_t{f_+۴ MBXzTnR"z⾚9ٓϚQ2B[V0%# Vkendstream endobj 159 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 7867 >> stream xztga XLLI(B/ PB{qr%"˖llcl)!,eBۄ@ w׻m{,kf{0cwyۯn00 ~-a!+=B(Z97`^A[0tQb钝K]E.t[}*^kwYoIL6m?0jt\}Ex^5ZE VSP#5ԧZCj5ZO6PjGPqVj5F}A}L-&Pbj 5ZJMQS4j5ZI͠ޣ©-eG S1M1ՓJ>TeMR}~TFSЋZE Gu4A|ߺi=·ݷwj SZE_b˜=F{CJm}Y7]ѷߔ~fxԀwl=}jkك 1/CBd0D^h6tЈaÆ g?|U#FJ0-&~^P6Wk[&ң mf jƏ.փ ZU5#-!r&KDqV ;u+Au|I$ be 6Y,·TdͷjlP@ =gq (Fu ('28 A韯p>{ZnPW3h WS_9p#CeV~$+ d$Щ^("5]MoP?im' :=_V%i/oTϸP?~=~3o`ad"Uzl9Bb+eF~APyUȇEF}p1XcP؁u!,C#/_qd/}rrgXNRG-X*&0 B>ptJ 0&O?X ֐M2yB.3q ^%eRJ)85.ZE%Ȑ#O-Dw/]%gkP4%L(Ah6Omk޷.8PnhV?" b =Vx5`VͻQ'Ԋ6>&6yDBH)mYG`'~Wx2v&nMhk1ڼ ?Gً4aFtD|ݻ b5rqIF5oc^.et8EtUGvv2}>C$) kno&e#( aӳɟҙ9sE2,2ґU4$:s:}NeC`%~^z6?1Wi!?72P̼z]w) g14jDuF!rea$Ev?gNQQho 7%:ϊ8X_%QVgn>(>E߲%fYE|7YkԴh+a/^ 'vsU4ӵrJux3%ц"cNM_3'98"ۓ0[L`Gh8Ylw2Tu[M𤓄>Xȭ |MEi1`\W95 bZc!i ;4PAq7 3fO:mU IlKTjA[T债`>?ˑԸgdE^8Ԡ[D?-I$Bj' U) G+DY{,^]X!WCc(`їi\^l`2!#_э)_9TWL/Yj:d-nݱ8!p)ZR{'+85;OÓ vASdV"ߔ>Mb+3zhB3/As,nzh#WѸﳸW/p'CĽy.'\G+?gBM>m+^}+3sI U'q,nE|7i NuҟYZq}H m&y#ى4meHL?LG ^HOٶhtEK+-PN1lrcکoC .6WnlfuFVNuFgMN;LRZ\&+|.jH S kwutuvD@J}3lqwT#%ڕ7Bz* MoyH٦hs!R2S*S;$hBB%~eF"8ŵT;b^]յ+7% nʃN*Γx=#zyEGLu氤$,)6#z!.Uri; (rfPzfU(C@WT PʊMgGLɶc>9,늎<(`ƫ#E6]9ڴԼP+ܐ"3e (e]&k(IIOZfN'Cs!& `GcpZw{hfbo GY8vD+} `-ޫN OLq-@4b^K2c!ߝXb-t:rzLone!ڋ={[̰VI7jc;`Qʈ%sBT|l|l?%mag-W`'8h:|4U/0k;ڶfj'ZYU\CU?=6CEdB5'b]DjêL7 .Ml\]qAif5F|8,y]fm ,"<"Y+`+ Š.hBA9VD<סߚ2fCDb}_@p3jz7}՚D^ IJE"r1D Ʉj EVQ`|ժ AJ!,,ob@~FHyhL696G+]p$"SJ 򈂰picבM'Oqjj6Noy\X4nj:U)X&(\_X}iNgǘ8<(A5wVV<(U\q_Guʾ/#DlAI.1jp-^C#_Ʀe.#%jگXՠdU g_L<[ NāglI0 63,xLn"DrqScO{U܀#> 2PA]L:)G *FpϝN!AuuL; ;}t4Kv F3?؏w.`ǰјG!3/t.4J =Mʓ6hT(1=N9䘽3wSJ~fEMbrԚDWK5D0PB:5YNc۟fiAz?LW@kPoVVw_C}݁94`C䄋!uGl}߸Yx'dQȠ1%sތ!$,J&'*{D-V.B=HZ6\@ܣkaz"gNEx]'h)MF~}Pҽh?XSESgŧh>?E ݡCu)"c! +ח5xnbơg7hD&c SΛG,-Bu口K߭,(Q!J;G"4nuBv-EkO/EPjS~ͻQtj ASei&() C$ƅ 1,@i1IY ̳˗o6D5JwקWS2cvdո;]]8Z ~d0FG7#n/j31_G֨Go\m\+^:C7e MF ;aNrZul-XYYh)Bk߶j:8׿u[@{̀ZM6dGjd5ſ0E94BA=0Qw`a'xe,YEH韀t4D7UcbX nMM^_ʫUx2 cexGVH<, [k^mQ67~qq_b{s_eʉT9-#rTו%F~[R' 2*%5#JMm*mN_@.l$ ^,`Z~N]9~Ԁg8q9ȳ;K2%qIZ*צId~NQ7\rw񡖬=m}漌5fӎ S%An0σ yIP۶ ]6꒦skV`br/kiZyeB: F6w! m8w+'@ڦG*sy-^ǥe?R͘s(9 ,5TP͞_&c-,Jz2˕$c]m>VJ#p)($pZ׎kNB xŒx*/S߀OfKOzJ.ɧڢO:޴x< MO&#oӓ$ɾ}& qxiDjǓ]a]NSydw J yn~>21 iQ%G\iS|tRB}:@1>[q fN>чsV1DT#͙_̭K8՚`'u:T$53v, F! ?/<-K6`Sql  'O^qpw% BԂfSMm.,`q5ñNL_Fh=E%(;|} 2X!%:#Zn@ÿ́"o@YkKLms&Z/M!*ʓ4ejZdIxJu*i&$0 yZ]Z ]pq{Fd0_r u u Nخ:&ҹj ee>1Iۧ^KĿ Hl6ed'j֦_3# yYij5 0ZQ&_BGNdRF=92Ka%yܟ.} tEͰ/co_kvw?/Op_|[<#/MZ5љsu sѨ;',45bp(~#RPqdOnq ; s|SvfƎ19s{ 5? O, t:Z-@h֛LȆ((2Z&+8+2n&~ ޞh-G}Xe>6sKo7^,{dn j9q=ӻ6W!IjdEcI \`Խ+6n7a `7ߞW]^u:| Oj0 FI@ޚ30\)!ߊM ֮H fFwvo5;wd~c<6{;mXn~1K_ǖ 9JV??'1DǤ'$f=W9+(7Ks5ou% ^8%NG6h qAP_?& <~",^mⰐٸϗ `i0i)toFQH-YB}~\+AU)qI<9xmb;&OQe=ħ[}3/_>{)DNٲr@40 ֗qh{RCxph>`:o՛'D˟=tLuox!mډU*{"+ы{ULJ9W<҂ǽ6cE>@7i5XsҰBܺViV:fYJ'\NN,mD)2K^$缘DGF{ɭw(y0,X7\FH!yP%(!"3 dzVd"!BSh MJ2 B^2XCBJ[CO2>:pv(䗶9f3 E|ۼX2d y)YY:.l {(㞐wFX&Y`^x߅ɳS> stream xET PW0 c/g! !aI4zEAJ1d0#0r } 2B28&jv(V̦0jEZ+7mv^;;/gP2 ޴&gj#. gvP0f+5{j-5*{2/ 1ze'R i qzG7 zO:()6-!Zޤ&ia:\7=V)-_MJ֥}LWŦǦeƨڤX:,4&]LlZ2EQ=+>Nm"5T0RRs)rަQN35GBOS9Yvsg3~~E'oXq}o┝<̇CEbƜҢ@`34<\ =pΖ^pX$0e~h7UQO]L x u:=<9Id 1Iۈ8F5*\83"V1*rmˇ7{-? fcN9o2!ӕeѱW@FV!0v mc4(0nok±;mU9\bT?2Ǡp bh`7֔xq,U>62r:ڟϗ4@.`ԫɂ–r8bpHEPEh3UʱUR^HLƑS^/i"tVc$qp cZãccwAn.|tB?]1n~ӭ-Tm,&2~K<ÈQ֬S]sgK]ޱjU RX[Jj Kq&-c.K +.T gڍ[4 (s q1C ȓ|Q #T<'dJv$gdJucXTq U15{e6k'ť!, 'lVD’yO7~xٚ\8h0weEKTK9ksiiJ!֫fdW]\؄i.,ܐ[\`\ %sK!SE?7wpN{W Gs*v[C7CņUDe9 I.B/FW[0zG!]EI(|ѫ0Ύ^Z;Sl'~p[Ov _䙈"jOYtTvrP-2E+R}YwQHg"RbI';)^ bH G%ŭ=SeU )''MA>"#VxG<Kh.ƍ/q)> stream x:CMSS10/u`B@PϘd  5kfbouCopyright (c) 1997, 2009 American Mathematical Society (), with Reserved Font Name CMSS10.CMSS10Computer ModernRS34O7ҋ#J2PG$PDDKP ue.TTB4)(`aa^}vrzj`ITI0b17|:T}ʋlu\j/Q{mo߻jluPWb  7 Ȏ ٖ ƄAendstream endobj 162 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 2304 >> stream xVkPgqqHb:jԞ`\yA0A !03c#kf (Q#($dU̚h&)5dnTv?]U=sN+(w7JP0A~Y i45~uXbJVolm:D3bӵ:N>Y&AOtE=F6MYqxmbҖ%5DSgAm j' QSz* t!;ORWsvN{ ܿ0x|1vv-{ <=gJx8K"Rv3gf,:Kiq]k|- ZQ^@Hfya߀ 8-_`ɨM=HQ dh)/׌:hG&`!yh؋"C4qG|y!e\IZJE=sn ﻌ$XB}}鳎QM'Y yd_Ka^GAa6Z{lu o>ﵿ:zlh1 $J&G^cp}~xD\wל#޻tL_z]h8B{:UKXHǽx'ɾf!}+ 2MT(4p9¼/_3G7QxI'n4btLK^#Ȅ|ϩpBV[BLϝDHԦmDΉFdi)X+'fTreMG`lAe@dt tȄ펔,.[e\/{>2( j/9rzc[^AF.K#|w=`u5/,6 kBa~m_Pa $AZy<`3En7X-o)u؃J]ZZ:h$$~oq:>=SsC.YKa#WGʑ] M*%NwH]'h%mqO z^S^ xodrr;O&.#f9BN4T˂, MW|#N@p|^fG2 kTj**lk)rzs{{}c[k~_\~%E+B/#ʮ*-ޒ([Ý=%o` sU FǮR2'TgG`}sH ;h/zY~iˉ]rgc:.>-_ƿ^ϋ" kYnN }gt77~ viNh6Ba#UfuBP;5ˊTe19?(ZrVM/Kpnk¿]_28 ֭ `2G[<Go.R4HO'JN޵/Ԡ@6 YO]wrI#V礗J>UWʧe>%;尵*rM׸ݯL؞!x<`Gn{l{a,«0!Q8 SW4yy*jRRԿT- ;endstream endobj 163 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 4167 >> stream xX tS>!4+D9 L($Ct :if:9;s阎4miK P& Z w]}O9}k?m].do1~&ٰŋB.|V ņ=@6zd>Lth0AS>'ѮH 2)QsE-^|-Z:=)S!.;%)=.H*I'eD}&%;[ƥg-d&?;o~T8;%굤ܤĨ%QғF]8F.Nʌ IL b eϋ{Ղ IS[XHMfbxJkH1XX1:8h43Mpr6/T51:S_b"f|[U)!_ 8mLk^ Ȣg~" ZLZ$~J@j{ LKk?1sL$y3ŐKmL>u+gsi@cHJ\ZL}g)_Ai{M yٲf0jؼ&FUW2T2& Wqg:VH,;*Tx9=~Ўo6_~ Cs.lMAB4=LqvJ/zo>Kh: doͱ9sR7v2|hoN`hA?tjhd5JYڨU1[vRN-DhCOԠiA;Wsh:G~UU h{T`Pnʈ@G nzgnPaY#tG#4C+AãNzk݆rşgmSݱ Zɼ@BgOZj ̌]-NbvC+0VvsH)4-%`"J`0-{H.\2˨1 C&ղE F0v\aD?ȣ\B~ WlqZpSKAjT0Y4gCZjVR\ ' Pp@UhYhXYC` L& .WU˟0&u Mn$A#TSTL*IEI~}E/&ʑQ3I79:TP}.? ?\*)dQRjMe T LLÕc& O{1giVzj G,Ǚ%K< Ղ鵂ÃU'Wnhϡ|8=6KxLݭd99[ld)3YfK c6%@=_/"ؓG﫭ЮNtSԤ^X[^9enbTmxQ;4'ƚ%$ט]ǀii `B%6Fy*7h 嬗f,F$q*]M Q_-zS{=> "{ԭYhWKnpnqlevF$o!]G_KPl  g7>M΢0b=!j}0B29rxߌUR2fZWe6ó&\_zZ8RqS3B9J[c-|=[Q3Qi4wq)jt3x6ph!!Ɛ:0>':5 wɺj#Չ{ D gtϬ2#1yoн=?~TXRGSRgr|.n>ВӑWXug/y9{- +hdM8B ~.::\ C |J^E j*z.r\&('ʅL&R "S@ѥGHzf|>p6;@T]nYK'A< oI (dBĠÝNb9BO y[Ybw6*Chф[\x¤& *AaK;4aypDVb:٤t(X7' >5;*0Иq; {dĮ񈵗_A3ducÀƭ1ZC^}g?A]:yFOߞ6 ;ߞ GYEX!M3~#dy#K {[1FF@L'fGkRү حeHla g.D^9!5|׼m^׼5c4Z|oTC *fYQ*E*0k NEQ@3Y\X|Zzs-6o$ 5l%se@>0]GOc4H&lw-'*?iK {~e6C'|Wh~Q; x᨟W^ Ђ?VyylQ+LP#K=gL蕥YGT+ō {9ċ<\L}^Du.W+A VZ U%K9~ k -f8*՛`ߣ/s*wr%bQž<RwS[\y M^p+\/rnse&@E~sP.mɍ&psYKr)8P0[Iݸv&48]wX7.Y%nU/X#^1"UIQemftqtc.i3+^x߱1FaG};fg#:zP{2{4rSCN_DϹ*Eo&[ G$LG$O2`oGTla]S+͓dViJ+b񺼨^D{Cwrcֳ,61[}_;|^EN-w@2hÏZv`qS`61(b) $0xldv9)m~4(}(⠶@3PZ7JfϮuZC~@k :finr o7`ۦLUxIEfKjBLVZE!#N yXquu3?VybB&8X@ jUkqJ 6p95aUPD dff@b[ZL!ͷAbOσ"ю}':Tҋ(ׁk$ IÇ~zxq^0{> stream xY@T־+p( h,hk@@D., ] XD,&q/&ILDs;;so;2CD"kN9U&6م۔yoR7 sӆR9-` D$ K\z{zڎuvYL6e,[[[[(ٮ tU؎d?yL&2)P9 2P/!pBm{d ?(,CjC@Q" 6-.Y.so_pرcjou~ӦG?cv#fُќsߛ7n ['Lr? v3X[k/;M<ρ _Ҋ@NX)gti-18VJ_GبS`B{Ht *4R1o\I K yZ!\h"ȅlW$%&sPjGU I1K0;@~`?bCQ@*}vL{^_<վόȈl@~VυZ+]!P^8iG^ߟhfѓ@~ygϛP E%8*T zon~#H\P[5b´y +Qr?hYJy7X%t@XPU%WH]OtC'K+I16:LV ~\zH1Uݪ>YX|ϰcfoA ]O`06G%z&04, p7>ؘQ>L2r},k!F맵#"'+d;cOVr^ n$fw0숗mU|2mHo*H1͂1.݃Y${ByH9 Et\|S)?t_5@ Q ܥ;z֜j;mZx] N"oFM5ꅾF^Qz: !DO2+!}Xoa2Ӽ6#2+K 4"oR#JT ܥhEeBUd#)x,!djTɷ)4zW]fťB/G莹]2&Z =/W"n TB6Pf~*&Єf%ET"Ԅ2˲rM>ZmkgRpO#[w"b4]ں{m|udM&)Cy验b[KE)b/9=$M-&pb";.(1ln:"Rm@ Ct:햯ݼ꺅 wAaŃ 3wPpvlaU1\YЂY(fȡe(\.U-'iqk&3fcF)"$/& nuFd5uD4nY H#UNd!I)XiE$/;~6itre:r$Z׾{h_ešTfRk=Si(=;3 iP"m{ӣ`]:i' "V"Re\R|bf. a ӽ*jS.1y+Q` _ʍ0iAs'bժLTޥȏ ըu!_pYZ 0(`AW *eeW/ŕ]?O(כĄ74ZRﳽl0,?K^vk5](^b7gk?_5k(x &ZUf!fbQRe/3&Ӱ#ث,4eZqόwLR-jH"gV]^ -gkS$OyhLEƅWi&. &^{r2o];4?D>~QlѽHףcEp8w"lhY^WW] Q]v̹#GNٖ]]7S-ytz{C|}WdU' Zg]4|dWVL\8orR9/Tld|PU"͏qpAKP,3rx z]'\YD'h1%%i*2J /c>Rبk Ĵ:oۘ.|wO)&\8=@BQ4"+˧Y>ЁM"ȏ)ӏܼe~ k}/*?.EE03zc%'okрQrCNȿҷ_1j.E+X=7tٟ5i[ ;d7&?}Xpץ}z>;1;3n/һU9 _O$bSdH_j)Ğ](ppxsuIpIuJ2\o)V FrGu9Rӷ^gy6>!)E1~Gͮy ~uХcѷ ~gܩ-WWkscEݯN_iZOd\s'}"S99ssWXm^S/VTsMo׮tWzTջ0 ѿx5˦)<ggdj*ihwړUV=zIk[.86/Ā7+wLYGF?]],S{ !S!YYV5hJP1Ѫ}h7ҔUJPEPZJT& &D' Sνc#m}@:%EH~n;z8-Zn_4?Aak0VCQjqJ6Vdeq+y| pi@Ѽ\вp{L8BP6E Do 0~`K~dDRR!U7x~>% 'yt =$!e;uB;ZdԜ,D>:i>2-7Zœsct#s2x7B|sa"#0 qtRBoQwrjfha+nu. B;h>yjg7~췻sݙqll6~I~t弡O`'.8ٸsli_ѹe;#E/R?_Qe6w^4b3]u23\jQvEz afAnC;DwÃ>;#^k`,߷b!j MtMth;RKi@J4:]~f뿺ZÚPY_S 1i(%gExfvLt"M`6zHv67ݳLy]h6&| ^ f 2 4*岐DyL2Z+.5%"+kr+H#yaƝ+V):mPt^lA"%i*+ɣ<>fz lz耰Dpl^NbED^^{Q/&"dz8?G*N(:*?%=1P9y4C C+c3K)~[XT(ƒmaeYKVmǦȝk Uy=5lk?t/;$xٹǧ˚iI;w69Q SjD~a18MC} g6x>&suO쿀 ,[z\c^kbIeabv vXTg78f')ʸddrd\|C3yJ H`]AdtJN3fϟ"B<Vcb}x\&E8#1=Ms4ny5_c]}ώYeoz>X\"XcٗVjw@yQW䧦%{K`][K9.E姢Dd#V(I&Zd6P!]O NsD6g^7>ԺΫ}5-)͊WX*9T鯥b}82X^[;j*!]%> jXA'hң}~//x8_/Ft O&ui^xڒ襗?U:oH&:,(o|98Q/ݛ Q:g_{9 z Jk,rcx6Wr@Sx&NҌO PX[[Ľl{$> \lw2%&t2a~&.,ܲt: 5,QDʼni%(J#TU9\;/'up:γ|X>tL-˟c+Oa(/؏Ѻ_o޸:~uc4P>r8B37S#SQ #H.l9p밟"6,#=205Q[(,ȇ4V䊵t~@Zss_endstream endobj 165 0 obj << /Filter /FlateDecode /Length 9415 >> stream x=ێuoi6ЎU8vd'1`@[yrɵ,Chs.UTwgbAޞSM篟kvO퓿<1]׻} Ox we*feK! ?óE?Oz_]ModǫJ.aiJS޿PJJv7pk.D{휅g[Jq0xǍXWƙRw=i2- KÖɩ3-<sD'P%)=*Mwx?lmQ{P 27l9'ؠ1svj]F^wo43x8C[6%O@Sv|.~I6nF`J@6xo܉^jM*^K!]y+\ ON6<, (J}N$,/ mCX@@7"4BB oT3a?a1j)R?cW' Ϩps_@Wqx8_f@0D+yȫV àU8,'Iگ: /Ed?4\0J`OԷzH` +qj=. {w1n-kacQ0gt >do0ᤀ},;)%>O$P"<ކx f8ȀO1U*\{1> $:j5 ѡ5Jڻm;B * ʸvum>╺ܒWV.4,ybn`BhPZɁ)EIz݅heJ%_0HY }Ll=!1VcOY\țyG(6V]C՚[*6v [ lf|q|Өtm?\1S_ku `sR.b0Tc)J CMy KC1K!P]wd_Ⱥ}tƀhոmHCf ޚLdmF)y!H%2VE##):Y%`Dʭ2%3 SHq {;?K!Kbϧkm#󉙲ղ!LZϮZ@L@멈KfDᢰɶz21ʚ_/^"spf4јѝYKHN>,ځq=E]iQءc\;A zp\# hw>ah|SB>2PՕ8&V[QGc7# +5Kw(X3AFYSCPzOO`zZghnU6Mk-͵K"' Z 4 \RC;M-Jl'L/}jO4ktd=]]|/WU4 '+apQYz0Ѿ*@U0n9K~KKm7UA(U0^2pBFq8{C&I^(#7 GDك1fY_O;qS$Z#j*^Oj%s ѹ[=bl>`5i.kC jԊg^{1J-œKs9[la}\sCuͅxV;.YV.*UNLTH%sL{żހՉ2"#*^t`ĈQ:DV\<:uKtR%ı?ɵ]Ɯ ŐS4WX^PFUhe0a"sOE8A (`nO  Z B*H A9ZhɳgK{Z?\v{9}+5&QtqHHEY)gU`Q1r4y l2b p:KHCV!{oc'-˾+.q~ULj .`' l-xorSmڔD{2vcW{mE ߍC&HJȹՎ4gB~}< k*˹jHǒtQva/p[uuN7|1/ꔓ#M6*a7q-Zm u i!9CFq%xն2@zlSfvϳLVw/#҃FC:KBt` DنeP#R9817isɋC4Suz:٣)nd,H?(tDI8fkcC6pr *+Ty{`F@Fq('q^Ī-/\4ivZcsa`M^Y+i@R|G5ۍƴj8GI7v+I,X_Bqq˺g0k}mE+}sxrs]] \O}#Bj<~*휨 ڶlPPˡn"#ztpX D|(\4h9&Ѝa8D{a[J][0(٥'?<TQJ]ޯK6ʡ6ZnMB~+HrPw}/:k|[‹.2 KOͣ#Mz"+yhY%T,K^_1,kv ѽ^ #D d KǿLK%\!iayi st=H msZ\}|O[rJ,gW gN2 l1~Z]* [7wj/'4#-vQEspnNĸeb55_b/ڜ&=K _Ko5-RPꦌhM>AO0TY/+Spz@Os{Y5Jo빂J2>FA8 aηAC*+S&R籑ZZ l)d6 oQܵ-w:Z8GO;SyDX`G#gk$a&;!ypV{k[R\Sbc2X3FL$+d It`!ZKNK l4Ʃ wU~6)Y/藿"ɝX HPr d8B\yz_U|~e]<>{x/~nm뵄0W_K9WHN5*|E4%3_ZCڽPgD'C^@')3DZa*.=ocO0"`$g]| }|/U6Iq2쏪IVS.a u.XHNG +h(LD[]ỹިܫ /RFB>l"pݣ>(O]*4bT*DW4WRc%:%j`uP﹢"EnUn} 6>kĜFmx/a-䝬Wڡ`m!en&(/lI~MNMn|B4%t>X@5q:!j'eL$&tZ0L۟NLxKC(95#qw "([ظ0@`&F ~`2V v)E0K\P)U2!@?lC+f-B\}6>p`ywr5T,]AiW7]TtÑT*%(rBW tsZ\?xIB_vU3leO:y<+bzAT ͭh_G|L LTvmlUB?P=)+5QR/)+e̐"yqEOyv@ 7뗏2ܤPa-գxvܱuQe\\e csU+qw逓.;$=dx˧z{eGvOtrF6}Y2JxPO:<~.(UԣQ6/Z11vY0q[G90ZZLI!$JˁTT{$$̉fQtKc2S**.1x|A)R=QdԺɵ谮w|H8nvHd-c݋Fy/ntWxRt2UGbc/ZZ=@\ }ѷ:Nꎶ v>H8?M(b1}; M nBӥׯ[TIւsmrfG?mt?ЇP7TE 26[жokDS:XaSPb$um{a1̛cAٻR>[Nw&/JbT,qrp:y .o}}kܥH3.Sgq8qZB%Q uNE2dE-~^xۍ'1_arj?./ӾYg契āu33f cP+k|t׽2~MIs]'l[WP,vU_"ؽq;ok̴Vi/YUxY8ۤ0۩Wk71{B_T)j7[T7\4мwԌ%W&πNk˱sHMo>EMEo~6ACv}~ȖMx/`zUh l6skgd <|1 C٪ pO2x h'6$[jw^=f;.wMQ"6\#[X ]'7~$xkU\5$@BN' B;N$akN8PۀnA>?y&ՁkO_#v}I/.i.ܾq;{JR3O$ X«T"4xKu˷"Nhr"MTU/ /@LhDpxm"QR%#$ )1бT V_ 0cџVp3GJ,,א0 J{bϒЕs~hڬlr]ܱ1*yԗה:i/4C4 oPϲ mŶHHg}'t` +$Iģw^\GO ;lpiQ+LkY{ z |1JJiU%)%M 9HvI p7_p y\RĒapfBIy[FsH"lvzzW$@'3JXPG0xĕg5/7X?2w:c,滚Oyz#3L|F2PC/K)Y8endstream endobj 166 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 2963 >> stream xV pea2M aPv"QŃC]hp"@  dr&$!! )rz^+%zXZU55=5~FP b䂴UKfLΐ'(Gӿ36&RcϝՆjHTBbBFkPuz,ʺR*}(gk1Sg̚5{O E,Lt}Z[|&q? kqA@S$^n[ EZo^xH gZOd* 90xל侮V'!*aU?kējzFgu+;8ܑ# v2O#rwASEUk {Z'Ev7fk*ƺJH(=M܎+.4oZ45}^aV-5ѷr4H7c50;Pb%[8:>˝xKU8hTv*_>Avb% X/6+܅ɒ佷lnaG@bC!M<\;rXtl4b+ySö8}zA( -JݬmB4E_MҤT±4A^ "$ D%Ϭl] ބ3q.Nj޺=ɥ/Ab쒓U*-\쉕8 Jm4St-w} JhPI[f%$:B(ڽG;24Ej4rQD' &>="rn=ns\ybo|6uR]ǔKpc/z59xS`đr(e: ނkWgkձd˱(:%Eh>_3 k^Z8 !vF;7T e?~J7ҟcPU.b}&N-kk-NU4>K*JplՄ89M n18f=b} K7]ތ8b`ˍ$ IRkklr-IGMdegy3)׭]g >BiyW k'$=DOZHM.ߢAaB$:+^}47%}H]|9I-r,ݳS3nh)Յ*cLe-/`E*QY^p?*vG_•q-c67Wo3_oI-;ك2qe1KZI>sIXIXnrCQ&U|$[]ԇ;W3ϩm).ήfcnA TUGL*S0ڢq:blzH6n.P?_T!A MM'%ԕB/Hg(bycIߢN<vVP `+s'/ 6PBIewenۖdmB;zR}-S( ?ԟBx+tݟu*.\BWxM&ogwˁDRD'J?gјڠ١m+YQh_7{8wY+ױ4vQ* ?ƭ~^b9movX^J'ܻ! / '*^Z)}"$]PxnKhj}AML$w c6h` TB/="G|лig8.Ԕ' ݄C *~f4~+ε4,(<W/>pHX/De]`R;Cs}#.5wymh~X{(@e.to ҷO*'?4ED7{&,NRj#O=ڃ/qNof/\)&* ėCهh<;I51KjEWo7uiwnu\qX&E-ǔ> stream xcd`ab`ddp 44H3a!]3g,l|<<,+ }=U9(3=DA#YS\GR17(391O7$#57QOL-Tа())///K-/JQ(,PJ-N-*KMQp+QKMUSJ;)槤1000303zGO>0w|%]qӥ78_-,_/ևl_dnE'luGXoEߪl|?^,w߳1S_4dm,n9~fʛ2[~}cW*/_<\v lwuK~];]6L2X4{Ne7ο>2v_s/wt\Xpa`ݱendstream endobj 168 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 5622 >> stream xX XSWھ1zQuJޠNZZV(I %z ! KX¦Z{hm:V/s$jgCx 7{{7D-]y-S&Larag9H~5El\=?;<r82RqL,y.aL̔9sf:yDIJB(f]49Q/ob6R%Ks'Mə/̜($-3>&'E)13Q7fX$Y/LyG, ӳu⽉A%+2Yss%]/)yS-[ӄS Ϙ9k9s2o7>v®&ObxD"6-V%b,2XBl'Web91XA@$Vӈtb1XG'n&h%C  "I#zO >B/4яI'bŸ.DwBqVst[.w5ݿe^%g{qOEEGeD^S{5N}>wVߖySlFni'G4: V*ō]?|o.{y)"LŇ~uY;x X\<ՠ](=)Ǘ D}P{csW Qp1bc'H4;7ݹՋh+5 A[V*T,?HV/ZJU4*-L/fv̷S b "nԓ@GeVk-:+㼂]ໃ~N94+ ~\%S rQ-x]gFD 5᤭YէSB(_wn>P[V]ֺGC a `JJ[gsy0{-p?4~a4OPۉA | h \v%;N} qg6'/8Gb_U1:-B`(Rd(PTSYUe)9Xü@А/3xFE*}ή?W?HivFc tRH$qK(~Z_ $|yν,-{ؚM&hϩ'~s2=R N4g,ZVU`೧i w: #^D;9K a+*6݈/J Sufxn7%ՠk@ R 跹'`!P/Ru_P_W_3ړA ގxs`CxHpk8Dr +0K/¨;q8ANHPrϗd*nP mT?9ᲊ9'4;qt[a=@ǺQ3uzd/h,w_t2Uo>B lYMҚ}~RNFd@TYM:Iz5BՂɣ6k{BwshBI9{ԗQQp/~{8n*sXq+8g?18uus؄ 0;?PR!~LQ!. lSu `~¦kI  Y wp|VYϐg\N5Ufxy̠@߹l..Kib\.@y<g ;&`TH>i-?zy"؁VMGG~ EHI35sy;g ,,*ZfXNn;`+;(@'P q##r7HU Ot4#z_ǒ7F-IoaQk5@".C5| 9_uZab) `|DfxGjyDGFrK:/kS.++ȟhm83v!1 W`+=n[pe('yp۾`mڼBAƞZNu@fg*Xhˁ?bvEVa)ioXڀPwy*=Ip ֈqu c;9sG@y."̔* VT-E~P?nV]%hrZ*L6 (RٶIdxS쩀zvII4N+U_2% Z~s N}Xk,#=uO "=vCǡ*wA o&L}_AgwӐoԷ aN1u_/ɫm584N;vE@}A(jfNCzI?87d%%fGaP\Y`/;J7(be>@d,aZw A+3eDq,Z1ÐWzy>4@U O5s{%7k!mk.;P:KsSI^0|l.fA| w9;0^own]xi7$u/ǝl+wo߷0{?.~k>xuٶfCm]&7:e%҅F!`7.l+1]QP-+Ռ\'U ȑ_W}eQjTdBV()XWz CY-7cꩯl<|@٨;Χ# 2b2  z@Dh ?$ U BfM'z O| qZBGw/)J&9UʫvEbۙg.Zպu˸ K&oTPU:rϷ݁`oL߭E8Ϲ!'҇[^[ѪeS,CϢU;>滈ڰ5S|Nb g7kU[ONt\ut^R^0fDN?z<4d2D*ktpWZyS#Å}^fP'`VW-8m2Op\1Ņ{F։s Zt'S 024e{359- x KyA^bbcS8]W 6X<+0 a{_>L1a- 3{:l?u6'^E8+Csh8Nn8r1X:ӓШLkoV>ˠQekw|#@}:F Pko[Xg8`'"mLNI& kaaNV) .qA8ohZJ| d3׫v`l͖*#y>/CT\ G<*HEЉ e5-fWՅd^O}ՌV畎9UU>kXkK V~KtY.jlOl'N](<>9/M[)ewcl4P+ 窊UBm(1]xFUUj Kmk1|.Ǭ˚OtyhoO d_I \A*_9})utuyi9pւhCʜEZtFj@Ϫ*,[leĥh+ \E%J7ra7o6PXE9S4!EVQDqT2BF %]pA 6 4M:L<F&f~*[ CIe)L4`d[#H=q7}p4;y1Wr(eyU_N;ve$&[dnTbabzn8Rie 8`'s4Y8a#0{\#&.PVjTZ<ĖنW^lpmF{ݍNڦ*?j.}}i 5˾w/m+V+ [~_]k@_Ϋ.s:JjUe.!rE&|[nї~k1_^;N)Í\v!n2c BVDĠ4e6LLU9<$ҋ]&Eivendstream endobj 169 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 1372 >> stream x]LSgϡ(b v8\ .@cDʼn +-Ji9-QZ-R Q$"鐩0Y673\%&ۢ3mc.\ޛ>}?q0ܟqΤa'7ћ8L+ᛰ6evŁ(Fl=XAe0WP*J-+jD %D;wm,JKԲB)H%rE9DCH5Uʎ:.Q,LTKn.4RQRJΈҕ X.r@)WUi$jQD0,BTk$gKer ;ea9X.cGLRc\"7^&s,8nSx>_!A:.9sX1 EL U,4[Y(s|"yΡEӂ?n1Ln&v˝#(xRzgzғ;3>&8ԧ3 W'T)O=h,Q砯Aw޷p̓5EZիvk/&K O&%ނ7P!thGO8G= xnw ޭ46>]AfLtI|2k8>u DAAGaC8h)˨LeRYgb(vf{Ax33v¦njmLp+9b {1~Wun Onarx5FQ4=fQ5S,f-46ZG ]4;MU T%( `Tpl.T8S0xW>;<)D|km]^w&]q'FunyTU" ?+u 8".nxa` zK`$3w~`biي\WAT{ʥߡ ?(C`f"Ѝ)N_LO|^Ţ8{<84W=$?+IUZt 0E25ϽVai>@N/On.`6hW궀F[TImn<-\>\I[:n\gfb:A @}ly~\ :He"t*f4Qd@4lWY|+^>}i\TݱXl/=zove2$в'2wY6$ivbۚPH2K)/DEG1endstream endobj 170 0 obj << /Filter /FlateDecode /Length 3979 >> stream xnGBfcð 8A 'p!$ QrHæ ߞٞ]?ܬ鮮j?^ o7?jx~s >Ho#*X飈AT*-z+]=Y);}v%z#{B]Z^KcB"tg_ɈȰcl+pCZ=Ǎ?#݌'NQ]!mN]4 1h'2pgX-b\2T 8utzOp(MSBõC̗}M Nɮ_M,#lKIMTX!yd"z!+[N:x_xo!*1 rɎ|A[*lDRs Y+ϮՏVAA 7^QvD @E"w!0k1]Ko\7U(RtȈW}KKC@BqɈ] i-'F-nAGks&}h#BF2]kf҅޸De*hx7P*%e+zɸ8el-g/{ 6(kP>ph&yAH?q8}Qv&@èۨ 5НB*e1l qIMg./q8<=V9L0۶/A'ܠea 8@1S:Jz}[Bb$By2y^uEAl%+;w Q(d6\M X?4^2AI ƀFB+ ),]f#;Wsa Z+0l:F#{s&UO y俰R01+ yB夿f8]IuE7€&VKbոIx ى'i7g1l?fIE;% 68 m׾b&Fkgpj3 E&) )D]7W@>ȴ1p I5L\{0%mݫWd䭚;Kّ. lS^VM_g+ }9JVʗ2RdFs4Bg4^D;@T0J&O.7H 1|t/`$[?² F /=G^7pG}]Veuhިo^chdh~M\&g95ۡMWn i ӇݢM{ U@0V~>Mdϛ-7eɧ([9x%Z=)ঀE}{QhKIM/ xCk^blL/>ӏiD?GIbtdِdٔ3,q#r%,&q[SEA*W 62m 2y߯꺬iv<p|gP  /1芶fޔ|W5`L:b7Յ{1ا U?6%eYPzsYoZR}r dRܵ^Bx[_}s f٫\kՌ僉ɐRY- 3Xp*xo . 2}U:ÝX$&_xQ$d+q5jߧq5jrGjz՘sWF,>ZKrfe$DOyA-1Pf˥sLwwA_jM×ڹRM{*pCʙ50%6Ym6rR6-SȪL7(jT|ȫ,q6?:U}Azt2߰ džU-ϥ.Gx6Lvci=eYL 6M6zعH5D5 u(oӻ8Qw5F6U{_$2 /ŰXa٩cAl/+0$F^XjЩr<*nT%, w"^R[6~ F7/!#ZQWyd`-x󅕴y&aSjvlR$&!FZOV)5vAyEpLJ7%TUm~Xj.ܦD e:5$ÀO6̊`z!$x#cûlfJNk`6OԬq_ܾl[ ^gzE-K, UU$f`MWJ:x'鄉=zwb7'q[ P3T74f{rs/YX7a> rr#T*NlfyĶȼ6w@ogFjjwݶ&5lg6vQT }*KX~|:Ʀ0s~2V&lB6L\J5! .=m'^ZKZ6S NKv5&{1lQ5É[/D=YX2Ҕ|0RzQ:O;'dD`Μ&Z)AJs/c? \ lz/2NlH`òw^.A&S%f T|WDuBh bרl:ׅBS^E4W$;4䅖w8ð: $JCm6k6nf 'x:wAQHCl #q|ژv$S:IaNgvw1En,TDŽiA`j5OWtU۞I9MX3-dgT{ѶUW;F ۜK"oo&V)&]ܙa zl?Jӯ*Zc2OuDX6͕iғz0M'4%C8n !/vwդC@OUbVΚ!yF-Do~g ShE  &|z-f+渦}0G\=_mai2G4|ldx _T-6=ɺ:ʧ_00#FdB+qG8bӊ:3r; cOyXV[.c<,tlh5Ku߲ŨI\Q~HXC+g]PK=j魓> stream xZ[o\~W"Og)wmC}S`-ɲIX@ޙ!]hBpǕa?:÷&#oWo8jJ:~{**0&VWG]sS;hǧG/j`zƐbr=RA IRz >aL "qG7hㇿR~ح7: pS8{0pׅG [fa^}B,׎V8< uXHפ Q0Yy2(goPцƸ1z? [7NՆhP*ggXܻJt^R$uքkL,["E> 7t33:ȓ7Ukc%J.+n B٦wЕn.i7&JJPXI]Tm|stWG.zᄽ9zgtg2}Cِ#JЏ8p'ѰU%[?xdr#fo1j@`?ba*AƤKZ#77cz/Op"XHvwY Ncb\Xue|׈@7La-*]Ec." h tD{XYbp*E/mT@U/ @e, ^`e0Ǘ:i%*yYɱöE%WĻL~1?(1*,IUe창 cl N:f'HjX6bE`vx$[JÜGmMb8(̰=E + zh.i%ZtΥŤQ$<*M>7QNB=VG:Zڰ#akKIX"zpsYt[Ju0Ք+#uAF) )7ybܧŠlɡ[_P@9NOAmTXg?\Jmq)`vq4ఢݡd̕R%8 }0qelX ^.aN^Zn&[OG=&4 +qC ldN[,=r(1w;IBl3ZQEWv-I+ |tOlѸUNƦL}C˂ $rDIm15 !A6oLz-n#N38 ,pgﲸ\}Ƹ qM#=~a8Z4a fL[ElUYU,wPz4-\ ! anm2G23R:&b 3iжfpR!*ۓ HtO\6 >8=$iPYEAq~1{l |CS6+&XB'~F18ntֺ`2>YR;Wsdݲ riZ%.&,{=TR@d0vut _Ulp^CX.|J#&^*ЀY b ?La;"dž.OQ]Z> MxCɌpAȔfb*wGuPۣ/2#`{[}H3ʺ)V&k3h 6P}omX,IlMXWFBeY*bN H ՠ~{JL0\%b|M )( :B# 4zg.I vY*0ۤA<6]pybiD:({.PT4~PFJes¡ÈnQy:j4 ybjReZssK%]GL7R=&m|WVIϾ԰w;YXZܗwfo оhpZD, jo&~i=kK\y-L \՝᯵#0BOz|`_8ݲ5ffej)e>eE+s¯yà6sgڰ#AZqvs y3 F/bu>M$%EyKqt<2]`~ >(<]mOutSG\D lDGyL?Ŧ%޷R N2ݻ.'d |݁NOwDd Z|Q5t؍{)⽜@u~s }xqm>?Eo4wϡf-ln- r!˯߮u9/v*|ˬ3{K3):1e=8M}GU=IeSj R0ojK3i@߿endstream endobj 172 0 obj << /Filter /FlateDecode /Length 5596 >> stream x\[o~GNWx/r]$2Q-ٲYe=*YmyYb̡Xwj ^9v:>iyo.`D23&3TF1Y~rcW5:OkhlÛZ;Zla#JM*/`|)nhOip^|Ɖ OMA~v+8|K+8bq>u `N@匋g4o4*e#Ncvs>Npxb@S)y}WFuʋ9`xJa)(冻hӰǙMzm ) : w\# pq6 Ս-'}!n7Kѽ*]PJ{+8s g.fv,􆿛^.aę@ 8?Q+N}f_ qfVyJdƫʽ,Mr1Uu6LGgי xC*|rmeN[Rlݕ=9BeڱÉA,>ܿ-7{)&޻󭶣wtF@~D7Ϥ7Nl.i5U1nC~]x@ emKnZ.IÕudT_rMujVޏʤ+K4_Miy{(ͻݱb"ty;w,B J6}H:c+ǫq`h٢o4]PZ*mW]M:IaMat&Z ]Ӟ;Yۗ_lR*kwIҫ Ṯ5^Ƅ,512!w`cuXʲs<&#L\MvRCe=Hݼ^{ 9\۶)]oZi޼2]U]}y嗂lTj|lՃ&Y92|ZE0,QeZJw85,wh-f`Ң?Q$*=@򦸬{N]k÷QfGHɔ/$\$򔀸;{w>6ty`dm#TKq-2x3nuSsrYtS1fT] l>?)!Qul ? Kl~7")c>/5JEiޔXݱҼ.q+f$4bL v_=ϥln?}"i5scrqhd]TpSLѠBo{[xJ2_J*ORX W+(O_צ=e> IlTΓse@\{VY)ٞ/ ~wU4'[ Ai:?RK=/j]hL*ԩEGty|/|qe:xE1!7`1hSQ 2G}(691Ĉ+&L]cW`q+2[a/6ޓH/XnR;u/"Kis&5n5ͦ i$* '8,j|Q?7 GP=x4pY_[8t8!5ZU~Q钗v 3GR%]lP1le4{ȋt(%iV<+t+(xo⎼/q") π bmMEM\1Hc9W`Г$ +Z1Fs;Ӣ|~OzN Sk)FJ0#Ā?h{ws).íf![yy $_n躊5aഀo . c$L|I*: c߉8'3Xj¹gϺqF۩8W=wK]@2_}2Jj &Ё (@=óe+wvqUk '&1Vl v;'sEOۚtMVxo4_+櫾|J`nV^^Iց'A\ՊXPcSjB|g<㔳?_O1~YEp칇]1•rdN'YMm!TY)i}Yڎ 2QC0g:RyŚq GeWׯDu9e@v"tXz42& ?/aʯ,':5X ˹ޖ= E__lz;$ʰ*AԯW3t{ ">d$2Ԟ'_ S%\MGX<{ѴJ2-A>Xj? ȌL4uQ"Zypb# 4 sەJS`+M(~=o-M캳q'Mi~] 4yuǯhQs* ‡a]A>oΙrU\ TjaXYbHBi2~qa rL Gp(s$8#%/5#,r2U;gr%#-󢔖^ ;}CVW9Jm0&¸PEЭ[Ѝk0HVTZUS\mtITኺQ^T;J-Gz{@EY{"@\z?s|-~-)tkI1E#bdeGuףvII-"NY&Ќ'-,q6).&f,M'P>lwmN=FT)rW;v*5)ߋs#xm7<ߺ49UjI!arrlBpĸ9Axw#ƿUF!q o7Vé5Ǡ D- Bhǰb]2]c]tug6MeXX19/J5檢UDdZ4, x5:Q7W\fewضƂdLbPFm,A2׷%5_2GtEc D =v^_(D> u>Kdc*ЧRvKȄhB<] fx/OV7nSùy}[  Jً UV3\3.ct^6Z4' v;2 =F\&fx/$-/!DT=0˄ꐲTm*dΉD^uWGЅbqiBS Tb]4؉_3s:MBw# !& Xbr-&&y/yG8\F}h쬅#p_jRb@x(,ڒ~Ac0i޷KMlWlk`V&6o8Ss!7p/c4ZF |?bocu otM)9o()+j&,12j>GdTR![%ZwUK CQVֱn!k4Fvp"F YYk"`t*j_b86OLlXQC"$Ixݮ6{.*>T^G,Jbέ}ΘYo/ho\Wre|Pc Q*u(n8rC7=V 2v  cDȦ2|# %qE^6\QNErcd=D fA%Ď'=u+vF?ꦉ&U(/S[I3$-j%\ س1&vǦHW=x=k{&,KCHAm],D3~GTn,)\ n[3oϵp xQ 9.H5<׵~u]-]J$?T<ɛw߬WXC#wixT?0rzΗ꾯_؅Htu_w3{qG1č+^; +/ s fj^mն[5 lS K/oR4qt G1(\Fx0BК2 <@#F0!b~)YmQ,E)+M& <#xm3o}^}G`V"qI[na'Qq54X۽RA}6+є+ F񜕚YXc1 g3PˢJe8WD'oцNKCjpDt `-j a /fЦ^g70EaHwqYD!KЇAt+4v^f(u,zZ}GjR1S)j3e:Q4ߔ4Jd!24 Uކ'@o>U#\~{_*z @O2pY*JG#ɃdP|uP(1 klx|hwxpmDxDO赧Gd (6r*Pֿ,wWWl,#>s*b]htGhю&̂Z ,V#~)bǡ "qa,5εqhj)4f_)/?$89@3׏:ި?(VG{ӝ1ħ7GO_t$(gq?cẘJgm 2sU)Zvßvy'l,y?uendstream endobj 173 0 obj << /Filter /FlateDecode /Length 5790 >> stream x\o\7v!L׺|E@Zl]d toq %YNV8;`=^;0Pwx8nvX?"-lC ه.-a) gM{~%JٸyC &jmϭnK&Om[ aszovb\Q8-u3men~:20/Ǹ{E$ֵXҁ3NZVxSIқ 1(rbum_ʛ`%=PymAش=a?AZ'1`>yNR 3KцebDŤa{+RmaelU S0MYۗ:oFP^sہ`ы5^vllL8+yl Η+39 6"'ېGH<+grSe5g<۬r' s| gt\ c7/2v2l^2@w\cΠ(dvGή$;HnU)){,$'G:'g}'80F t;:YG벆}'S>iRHh(d(.zcDaJ%F6.aa%bWy0,PQzO<8[\7SYb^gqvacan:eVFy,0OEXvKIFDDqYbzMi|esvMdQI 'O| =,Xhg ::B{Nh4 򒀄GÐ"ORlW՞47i|˹Xb:qHe`SQ(>cg=C/($@o'cH)]ꝵ4)`Ș RR^dj55],0ͻڼZ?Wp<y%omNjj/FbHQ 11+1c7P+c?i\H\U%}k?/'g<s6j0 >]]ۡ9[HQ[=ThClKn_WmmNC *jpa_1B9;lcVʛeߐl/͎P(:9fM߱>Glrlz J&=)8IAq!,Bi"'l K(+0yE,pu(BxeBIAlVZ\|m-1:Gg?RZh϶X` Շ>2%'PG6&` s4F5btΑ!P .l$!{3",ǡbmm~tU-Rc4Xkm䍪O[OA.4gTN-65;*%%ojS*?Ԧ=|dgpMQ _ f\v {-xe.yvãQTWh@=<ʚF:OyX4|/POiyB(T@oG dOj}G3p>'44,nT-d|3cwXnm9iv.պimVLZ+De\r׊D9;ĐaD]2P`!iŵ# a9(u,#oU7~]~7`G/֗ײ:ĹbbAu;I#DDgRyky?8=WLŊta/wᎢ`U-A7^cN>BErքqw (2X3tpFtvFwsPqtqq\kXdr$\O\,t((>KIxsx™9'8Bp,GAE&j@!ĦbDQa.Hab HKZ0孕!tMC˨$vv֐XiVs~๥Lɀ_G\E vU%o+uYW#R1Nű$DkF;M&kSTW~*-{+߉zRC\rXdL_Un|V=}XzaWyS[JXzd9,&l0SEwtEkJ'mB.88pjt8],8"V)ӧG i5њۧ"v^ >vyAIa`ZGΫqao+70rQ? ?)[P`C / d >>jPpҢ4vF:qXL Vy+UxiadE/_i'F`xoՈ0!2B4^!өn:|×aQ* 7'Vۡպ'Mq4L vר' f UY0$_O@;UVMNCqEhy<]hΉcO\3- ЏG+TW4+kʅsۣZ|p^]vE5Y V uj[Ņ º́Wu AU|TaEe ksL[AQR ftZB |K#wf:2QеtMSYX?`RG,n1삊1q~26V#e2Ե!ŇgVmXtPCAjڛ|Rn$4<֭,Wz0C\P[ K*4@}7Q6Xkr508<%@R3LӴ%:QTJȸ+kԻ}5jP7yB:_ezC˫Cf4+ :}kik_H>v6 oUfY_Iߦ3G[mRjX]0cu oO*VLWJ8>hآ쿀NZ8+}ruY7 /?a=eFMaymyW?N8&{OG}3IųBlendstream endobj 174 0 obj << /Filter /FlateDecode /Length 4791 >> stream x\[oq~W91l/`ae$1pDRlG`.=szxHraOwuu]5/ƓzR~=3 < ~UFIq֟}Ƅ1h5:lHZ;ZlJ%̀t8pM M9h[zjO).ly'$^ ۲sJ?9똆0êlH!; s>&A9ҰypF9g \r L֣K8uvb?:O֏)|A а2s+ڈR:aw=3yE?o649֌;|\@{jm` ?㹒qr^~ RZmLq4؉Bx؊+w{+‚ b{+#BilA~P}/:=tf4,âa&$rM{y_&hS a҂2+16HBX*1ĆYNǞ.YYmÂTPؕrj}]c%4م = Ȱ{AXrFsc iVAN ڐGo@qSD\\02]4MNs?GP[T(OE'NH-ڋI͆?aEQZ'ɮw0Y4 ;Iޝ{$IՆ%[>d?2A&"!P@9UN:'m .gN BrNl)el5eȿ& ɺ4<+;  ޠo[VoY F 81Zcu{Bq܋r 2[-8}ވ97WJ0D3btL>PWr&E y+Ok:( Ħ~zEOc"n.|X%ځ'_%a /7`8ph 06K0[F5J(We5+&=i FM:} IHS /JE,VoGMRFZ윆d'curϫ]ϑuqg '$H ,R:|[ux]MORBB.'(|r)^>@mv2 ̷9jPlNwzCk1h-mˀq&2 R3|wu V;9OU(DE4J-Ծ `!uّ9`8Y{cVrAo&ɥ:|[ux]:qMWr Pi{*>Qix[DIQ UPD iB6-Bzݚn:P ˚Gp@шpKڜU9++*M*wQ&!6ÐQŒ 9>A8FWXFF0ջr68S^!vYkU(|5"%qmޡ]!W!詃00/K vEn`3 uB)iD~%%puP^ Ag 8s Lpe-o y%MQ&s..o% |Nu qՏ5oSu%'uKZࡌM&?u(}^SɕPY2~k \C!\7>i/v۪ά ha lL^&`M4SSRoyCI6o;4:*7\׬׃v0*矨_s7p;hdQg̺Pb]OuFeDz'| xAS7 羅b3RaD^^ A:w%R5˜j V;016KLLn W0e p]Ǥ06N: B3du~i6i#Dyڭ/*ө{iqy/moz*Qn$K*z$cp˂ˤ&o|\*a 6acjMυnY3Cx1MV͜r {X mPWLrζIIɽ`U;tIRC5;~ wn.;D7•w;f)dQ \vi=𕎮Ws m4R:48ùANT+|u v_Eeq9ae`n[9'HBEEKaDJM>R JDlWSo :LIEǴyGpOmU.@$$aVw 2>2Ш:ҪiKG8) ?qOf!ߢd`;I1T} Ю+LM}:O5RZ3mҖ?Ty/uhݧuTO>xu }t?1Wܦ+x'+M3OmK9 :~[۵^1끈uxU*Aj:c闓,`}==^`^ bgv!BMK51ʊoPO?r>펖D/el2ͱ؍\JFP%-yjjٜxjWVl⁒rP˰%2!%E ˎB i^Hq-|Qa^4P dɂ1V/-R(|kҦ6H>_ DBM[ʃɖE*E$7͙A/(eW0' Rm+V,|e-O ?A6 Kdusv좯wzϛHE( 9*2( ;*:fD~`2(q*yhIDyb-TsOT1kMxK`z! tSy51^VEud_+Xi"-r ˴;*,$ IHXi_tAU% (WW (60JbE,@ BtsK9vYB,JW>}_!* ?xf;( X=5!wLZDb4t+'ZrLv.LV4P .jl^UMQbg:AZqU%cquE`XsBNd!2}8YN\9k4mXrK6bmmE[nQ[2캊5Q{/xNa*jx N}fZVv>E4aVH?j<[ v& _3s{:ޱ gx!'CZk%A_w@ʫC帷\K"x$JŌec[?U?ա@Mo^֡!݊QZo{H ІxjEK?=UkO d]Mu-vV_wʇ>7g/ )sendstream endobj 175 0 obj << /Filter /FlateDecode /Length 3266 >> stream x[Ko fcA1@9DfdCrAr).ſ=U3S.)Q:جGw}5w3ʙG{߾~jݞL|FHE1D\è‹,1z dcQdX u0Zk *\/o5줖16gyaT*xʵ.Sg.4%hؙl0-La Z`W2- UZg m\֊7 TBW"|!A5 s&Fr2Q܆ԭ5/:٬lM6j_p¨%ػc Sc.v&GWz]%řO|B5K"s"["ψ< cc05H|an>U X35 ^u aP=k"WDN'"5dP>E>) ފB/K3_kA*?,DJ1'ɘ0̥~Kw`Aͩu5we팸Wȁt@}޼%Q*O㪺MuC몡6U 9_kx^j<\yu0hkK"/<.n7ω =sZedvr0 ,o&$1P+K!H MږZ;=xtXG j'Ҧ/ƽacIB es`(w8q>7=swq!@٤U:2])abxAPE0bf᧔E׊.bB$ӏXfp=X_ rO?5okT ǜ*a!7]814d <\ɃՊH)YfVWP0σabg%@j{97+6~E@$jߦۡOw x GC[4vMp!TE*ǃhQC6Ao%'XgT@_pL68%rC4z T>S;s~'hREݺl޽dNQ8  ?D$ƟIwS!d-: bScu42u*br_(JQ)T5H^ (@sZ+' ?H8&&dcԊ` B0*P eHih'Wi?j % ce/[{(aIW&8/ F,TJg$s6q& EfB`oƎ"q>݀@V2`=^t3&*~G@-%}ǖ+5j7C}ϽeQŋy6 :P8PCBG[U1y >6ғ6Rp5Vkp*ڴ73GIZ Z?MAWΙ!hܒq`);GEx4pϮH c;fdpI`{HhkƒJe)C".A 9q-PxVZXܐr"`n9$]Ѿq8~vi0C0la4gZ%4tOnU8ڨNy5C\VӢ%X]5ǘ0^}e>`/DEln6=8Eka:VvPFöuR`amZQC8|%o;B@V(b]"rw:cޘL1` mW Kat696`sXn\R2f/D9=*\oPZpScd\K nѯk{laW$SIֽm~AwAXuQ0f:˦/>b~YbPF6i/W}t@`v|fT>S=#gH䬳-iT#>kr&D;yxFtֺ,+Ή >P+.SjՎ^ڿ:vN_ށ@&F4ʦ1_"P}[] ׿`e%ka0R5jzH$cXraك<}VDڪhj2.|K${r092r%Vދ z¥f*-.Mǥ_=RS|W~?N{K/\QSo۪FhS(Q&H#/xLԎ#_%o$rq -wۇ?H屪J* mYkGR Wb;UwBz7/_TU'wxPpUa202 Ȼ=XloXբr~ 2lPcK)&2ׂ:w):|lK }C0Iy֤b7f*~{pU*LDve{ϴa BԠ(yF/&ַGǔaReؿ|=+}#= j2>ʿu rAW,y+{[w ߮oe!WbZخ?DaX[dղN5y# ɨO+D0Az -8"ٛVU NܗhgXd^m{ M[d7yo=^uxL?mɁyN4י#B!p Cxm7 ]5UYf!N>|"%}<0f"N8Ǹc~(u);;Y ,MX"9m'5Q+fĄ{"eF#9Q|)_N=?;7~/endstream endobj 176 0 obj << /Filter /FlateDecode /Length 3571 >> stream x[[o\~#y:zOyhhFCkZeV ggydvҗQѳዓ c6jt: V6j֎V 0TTi88cNsFNQ| 0n) s1 aU)4OCv8s>&A9Ұƕa<w8#|/ %Hd=ARǧGC^SJr9X?pڳk t.]o#dQ<0'&-O ZΧߎ~n~Oxɤe }ͣkxܖooژ47Iqٕy_(BVZ(m Kl`7|{BҎȤ:ڟv3>~ztgVo_ww LӾ~떷뒯}g]=+.Vi- O:dUe$ w 9h wvB%<4a,x6Ewn]X:No"YƔp䜂-P\ɒ*ob`PE˿FMop)zCzC|;z8B>N.xl:7pT)\ (Z)a.<,tHH? W%g_pK\))G# tz]a&V8̡ 0T#=jg#(p[NTN..\yPރOYWϪ6+(|X'˵u (0 -z@+RWªP`-Er29ža H{Ɣؑ?&_&-PI9ۨ8sl`8#*o0@MlNv'C#~/ .h|-,@'QJ9^9Oޯ #28WZ1*nfNqG:j-(e{ T,FAzc\hn~q6) &taJ6cqƁ'gdpu8D,rf;P %CfQ߀ZzO!n^tK>YY F~`*PkW(o٠7NJ'yJJ?y^R/w]k`1L{o|*.(@ UpTipUlѐQR.̓Y t`0e-O ,kd[ !XS Xw nmeoH".;BpVd8pOgT0A!I'f&*2G4tASrI$pR:_InE~vIe׆$q uć C TVƚf zIXMt@%\` NӇ[NſҀMT$1f)XR(\MV'$oI3xCV-TQgG \A<ߵ4#ѵCAA+aqO$ʲcy&CG8J_;N1P]drdRЯoJ|[%Jp*GxX7K'v1?mDJ>4/=^Xiּ|81j:uwPuW|}BMQ}C\cr%VS(z*٬r8Y>]|Obn&wߧkIGK /Ga:@a*6ESm(ܖ Pcj);X8JJJhp'LYY&MISJtN{睲KWk˰ ght^C.9V(ڶt+;n֐b!L6ݾgx&ĵ\Bx'Kn1NMP/e)9^ $oj(hv6YbϮtm .`.#QW4BԂ}=5>:Ͼuc3%p]h=GS>&&-7L xݝ+Vx`B N jҴDhtFEWgB)7h"*s״)cmӾ^+zňTV΃,v?i.A.dk S0茞`ˮQSutڒ:U3 13{2/f> stream x]o]#@ߖKmHCNZSt#m~{g\rIyȘ7=C?<_o@| ?Q0A*<m.:)GP#[{;ݗ ib)!`B wAukDH =",:]ju,j腄5N 줖!t8Oju50/.[ڮSRh67Bvo0wGANFeN|{2Km{8 03&tX,=pv pUeW ( |\u}?+G'}t}AxXDJVG_I$1cSSo yY*]F*_.ޕê2gƍl,?8].].6"*!Thf!iB23o*զ, S狦sΜq!C02h SqD@/*a;hpmr Z^j< rR>x۽|T {> "M xY^pdnHX8-l'h ݸ4_5Nz`6i ۲K/+߽j\ꂐ݄& -骐u]m{SD.@=ՙQeBJuEv04]ٝaVQ/0کjrg8!c}gKDw#QRT3T^6GFp/ԃEq:mYR^ȇ <\hJaP(@q]࿆n/uԻ\v$HYFX $5׃EGe8#)9PJjZR-_Dt\CHt=do&xV>Cw. _[ߔVq#2s YrUt=*P, Abjtt8ɯȧ `Tn_yQTBhP r~P87k$mzgs6MBM$(,@+A1M^{& FTot #,CF&=ʆ=ƻrF:M+xWxDɂe*'$PÉQ$F8dt_Q*e'y| uK ꊆ"9yX_,KʲP2Bt$;HrAq[ M)Ӿ "#F1^߲mɕ9ȩ`a~:6qtipI,alIݖ-՘FZA0"V[XSi H`pP,&^xW٨0Hi1bX+< BdDΙ &^a9 Zb)BXn#q)tK*͍!r?j"lIKgôx,oVdžHЋ(` c_rbwy4enT)UUU26]MkQvvb.2OMQDsnt.Ae9UY8xcTt$Zn( <7DIPa )wv9Jrb`|׬KN+Mi~PZٻ7+ ̅?M赒y͙ꔱmywn;\ 馁0]̋0BE\wZo%fׅXոo>eN[]K.G1s!5o=`Gvg$_2%?cYw;Z/kyO~(QpV""s=&){#%((&3bXqWI Wtm|vE$atc ճwTSxkW4<dsQT uDv#@`<5z AK7W!Ac$ Tgmu{_g#Fzr͚5pBU iPpO'vBUc톈}9fٛuGL]Zh”lpD~%˪CWuEUjkJm/S'jUb:1(E /z6 A+gd@j^lWLٚ$=SiWhs|%joߕee]B\7x@zg75' 'M}Ӷ^p"n7G4n%(]*UrrĨmR VRU~d^&^]bϕ..`D`. 0&&,jJq)@ۙ,_~[/wHNC?q{m£mYS5Eײp{߻/U `I,dygޗd::~|6r= vTךXثt=پyìyM~=|ҺvHf3Sd̐N$Uu̖K0&c?ew{ic+OڧdG{\EJ,cthMȏgbG-ghhAqcw2#a s@J3`mVlD dΚi3҉V38>H'{uOj'/q !?ޗDIWlx6{I MӠ D9Oc%zp G9?K'aP֏0[% %OLslu|{3'IA_3m:T߃.v/rޜ7?T7gNfHǟoeuyՃoY endstream endobj 178 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 371 >> stream xcd`ab`ddt v04qH3a!S,li|<<,k?'={3#caes~AeQfzFFcnjQfrbobIFjnb ZRaQRR`_^^[_nPYZZTWsᜟ[PZZZ`ȒgP./}"zj֫8G펓–^ߐ&{ r6NN-~oY<{a1sW1U{w1 b=jC.7{BI_r}b1]fobiendstream endobj 179 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 332 >> stream xcd`ab`dddu 1H3a!#.,lsyyX~&=I{<fFʢdMCKKs#KԢ<Ē 'G!8?93RA&J_\/1X/(NSG<$C!(8,5E-?D/17UH=ᜟ[PZZZh 5?V>{-~ .)KJ+b_}2?S:u2ض=tQ^1}<_قγOw45\׹Xp.s}6/sendstream endobj 180 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 332 >> stream xcd`ab`dddu 21H3a!.,lyyX~&=I{<fFʢdMCKKs#KԢ<Ē 'G!8?93RA&J_\/1X/(NSG<$C!(8,5E-?D/17UH=ᜟ[PZZZh M?o>҇]ޝ+ڝ͑¾lzٳTR> 7Qޔ=c<_قγOw4M\Xpso/-tendstream endobj 181 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 4066 >> stream xX TS־1{E"ފmNu_:`p B$;a3 (Db:اm_[jz.O@_}kuYXsηo#FQgQ$a6 'Q+Ot`{n|8t i\QSP UcaJ3=x{/\8(""XA FI<8BLrRt޼rEز^ pO?iT_Z(zڏ9G*<7ChfD}bbk${HC#mE-t׌^c.CQSO@mP3TNP;UNUj5ZK|ԟ FʝJ"є5\q'j&r{`ਠQ:Lq8GhnI9f^Ӝ7+d=7nSݺ>7m q+hM1C( ?oxt q2Z NAW{y L'(oQ6H˶\س:EDxQF_)!51:t]bU?$h(EǮ}'@nIy,C ] }G#k"%@(- L2t :4*g[]lt`V h)^6$4RR!Sg`/b*0^t5#O~i9^dReTB~҇(-SQgq^ՊL wuKvlM0/,yqi'NT3ḵ}ƠQߢ hӖ{b#i<Ղ=G DuB~*zWNn~wSqSWvD},$AIV`VrDOw-LvY>Ϋ(m/A/ 4cbjW45G5.lPrvܧ_!NL<|zU2u z}x^V/0BPjN^"l9EcI)m#-ET%-RE|PxCDh+14\*?N`A=Bg<[ iVVgedZ}+"c6Y[f'@q)̋!eZgg8M HPU\^AIY~~.0{',#a+cWA\qQKNYPXM0ԓ-܏iT֊nqYF9nZ޾ɷ+daak*5.C%KVd#{oi_F)VCWoi!<K#=9yØ+eZ7T.{g'Re*S ![/"{؅,<áOix"9SSxO/ 0@щ#-ע]Fod[ p.Hx&!ƾ! Oi)++* ^6 "e@6]YX_3v=G7~۾(+X{yGbX9;n*1SEg[upe)0y_"444jnBs? R6CmfoCsO;4VC21d޺gSr&m oyDB_o%K\d&K֐2UT7H]ˆV\YTLEק5_!{q;~I_jkYu\J: )ɕj/Q k> stream xyPgwIYkƣ!S[NA[B6$"BKUPP9& xTbآU#::-u:Vˡ>{% A$`AhS==B!] u2x>$uƂ^cЬR ?8ЩILAL)R*3E b>ԨjAЇM`6R2AaUY#TF![R1 LfP=ԛAǯTtA`JYRf "Db>H"hb!!1IqD<1HxC r7BV/<H*9!)͑}"kHj]_DN ո$n 2'w,ò@?}#)v=F>,V`&:ƃ_z!nĄhN'r8I4%A%gjۃA*\|OT XӺByzHϰA5w[^9:k3>g7.V4@G: %;~aABi5pȢz7SY7lwݜY 跷D#'yڅLbptp +H]}NÎ}.(xzُ|J^Qd`Zjh+ 8<`77+h/^]˫=bBZ($c v.=UMCbп?c,wR/tA+ [j82Wث"r B7=nh] %|^&#&Z}ﵘrF~sQݗĽaI'[ SٍWOc^*k{r^e94]~q,Ε>ͅ=ĿC XWZPKE,<:g}kK#_7m)-JbC^:w|69$wLYUNt&VZ[ѧF&ٟ]p. hTW|M9Y ٱeʈEKA]Pmi{ZOP-FC%sHkHk3MlMJwVYIեr@ v4ty&6qyendstream endobj 183 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 1199 >> stream xS}Lg~SKUKf' dQƊV^)Wڪ2 *H!QeDݢ8\įD^r.aђ%or/~HPg 榎lS'M#k}RϸihҒٵ!A:89pdDڕ;NKYgqs32's))܇6Rls`6ٌRX5|$xEfAp,3v덶r=,`V2f.TnrV6sټ]Vm&.Sd6K099#&re4Xm5h&*@k'h F9ȀV"1RQ&3 K^rXROĿRZ TF2JI f? N`"92zr t xP$^qVnܯoz}@w4 36.ͷY;32ۏa-y03VZ1*JT]$Epb| 'Rf􄡣R@-1r"cp[ف( UP+ '^Tb~'WD 7.`!ȗZ8@]M!ף {vyzݝP@Xƣ7+݇@+ܺ 3M7 @c`EtV{7ձu=ҦE)[ NiQ/~ )5o-[U֮B}'DprX176*#ǵau8ySG!8Ĵmo%dnߕ߅lG`COY? ~{]{^=w奐Ctu lۖS@BQ2w]CnTl򘷭j6|Ǐ]SuL{+s)oϔr$̜XCM9W/tȽm9t?=mo!* %"F cP|?u:ٚ%=2aGڤ[`O@R\8'I9ES_#@;#ꋗ1=H_fU̖%:Uj6\^mQɃ꭮Q(V^u~:VRo{/Rd>8!2F#/ oendstream endobj 184 0 obj << /Type /XRef /Length 153 /Filter /FlateDecode /DecodeParms << /Columns 5 /Predictor 12 >> /W [ 1 3 1 ] /Info 3 0 R /Root 2 0 R /Size 185 /ID [<89b23701c6aee84e5baa37ac4419d214><6aaedc3f927c856d4f22dcbc263f88ae>] >> stream xcb&F~0 $8Ja?@6wP6CϠļ ȖuţD,"Hy1 D2iHh)D HUF,"YU^ RL ,l># RlY0 D2I,{L.& endstream endobj startxref 118883 %%EOF Formula/inst/doc/Formula.Rnw0000644000175400001440000006136511710474652015713 0ustar zeileisusers\documentclass[nojss]{jss} \usepackage{thumbpdf} %% need no \usepackage{Sweave} %% additional commands \newcommand{\squote}[1]{`{#1}'} \newcommand{\dquote}[1]{``{#1}''} \newcommand{\fct}[1]{{\texttt{#1()}}} \newcommand{\class}[1]{\dquote{\texttt{#1}}} %% for internal use \newcommand{\fixme}[1]{\emph{\marginpar{FIXME} (#1)}} \newcommand{\readme}[1]{\emph{\marginpar{README} (#1)}} \author{Achim Zeileis\\Universit\"at Innsbruck \And Yves Croissant\\Universit{\'e} de la R{\'e}union} \Plainauthor{Achim Zeileis, Yves Croissant} \title{Extended Model Formulas in \proglang{R}: Multiple Parts and Multiple Responses} \Plaintitle{Extended Model Formulas in R: Multiple Parts and Multiple Responses} \Shorttitle{Extended Model Formulas in \proglang{R}} \Keywords{formula processing, model frame, model matrix, \proglang{R}} \Plainkeywords{formula processing, model frame, model matrix, R} \Abstract{ This introduction to the \proglang{R} package \pkg{Formula} is a (slightly) modified version of \cite{Formula:Zeileis+Croissant:2010}, published in the \emph{Journal of Statistical Software}. Model formulas are the standard approach for specifying the variables in statistical models in the \proglang{S} language. Although being eminently useful in an extremely wide class of applications, they have certain limitations including being confined to single responses and not providing convenient support for processing formulas with multiple parts. The latter is relevant for models with two or more sets of variables, e.g., different equations for different model parameters (such as mean and dispersion), regressors and instruments in instrumental variable regressions, two-part models such as hurdle models, or alternative-specific and individual-specific variables in choice models among many others. The \proglang{R}~package \pkg{Formula} addresses these two problems by providing a new class \class{Formula} (inheriting from \class{formula}) that accepts an additional formula operator \code{|} separating multiple parts and by allowing all formula operators (including the new \code{|}) on the left-hand side to support multiple responses. } \Address{ Achim Zeileis\\ Department of Statistics\\ Universit\"at Innsbruck\\ Universit\"atsstr. 15\\ 6020 Innsbruck, Austria\\ E-mail: \email{Achim.Zeileis@R-project.org}\\ URL: \url{http://statmath.wu.ac.at/~zeileis/}\\ Yves Croissant\\ Universit{\'e} de la R{\'e}union\\ Facult{\'e} de Droit et d'Economie\\ 15, avenue Ren{\'e} Cassin\\ BP7151\\ 97715 Saint-Denis Messag Cedex 9, France\\ E-mail: \email{Yves.Croissant@univ-reunion.fr}\\ } \begin{document} \SweaveOpts{engine = R, eps = FALSE, keep.source = TRUE} %\VignetteIndexEntry{Extended Model Formulas in R: Multiple Parts and Multiple Responses} %\VignetteDepends{stats} %\VignetteKeywords{formula processing, model frame, model matrix, R} %\VignettePackage{Formula} <>= options(width = 70, prompt = "R> ", continue = "+ ") library("Formula") @ \section{Introduction} \label{sec:intro} Since publication of the seminal ``white book'' \citep{Formula:Chambers+Hastie:1992} the standard approach for fitting statistical models in the \proglang{S} language is to apply some model-fitting function (such as \fct{lm} or \fct{glm}) to a \class{formula} description of the variables involved in the model and typically stored in a \class{data.frame}. The semantics of formula processing are based on the ideas of the \cite{Formula:Wilkinson+Rogers:1973} notation which in turn was targeted at specification of analysis of variance models. Despite this emphasis on specification of terms in models with linear predictors, formula notation has always been used much more generally in \proglang{S}, e.g., for specifying variables in classification and regression trees, margins in contingency tables, or variables in graphical displays. In such applications, the precise meaning of a particular formula depends on the function that processes it. Typically, the standard formula processing approach would encompass extraction of the specified terms using \fct{terms}, preparation of a preprocessed data frame using \fct{model.frame}, and computation of a ``design'' or ``regressor'' matrix using \fct{model.matrix}. However, there are certain limitations to these standard formula processing tools in \proglang{S} that can be rather inconvenient in certain applications: \begin{enumerate} \item The formula notation can just be used on the right-hand side (RHS) of a formula (to the right of the \code{~}) while it has its original arithmetic meaning on the left-hand side (LHS). This makes it difficult to specify multiple responses, especially if these are not numeric (e.g., factors). This feature would be useful for specifying multivariate outcomes of mixed types in independence tests \citep[e.g., in the \pkg{coin} package,][]{Formula:Hothorn+Hornik+VanDeWiel:2006,Formula:Hothorn+Hornik+VanDeWiel:2008} or in models with multivariate responses \citep[e.g., supported in the \pkg{party} package][]{Formula:Zeileis+Hothorn+Hornik:2008}. \item There is no simple construct in standard formula notation that allows one to separate several groups of variables from which separate model matrices can be derived. This task occurs in many types of models, e.g., when processing separate sets of variables for mean and dispersion \citep[e.g., in the \pkg{betareg} package,][]{Formula:Cribari-Neto+Zeileis:2010}, separate equations for location, scatter, and shape \citep[e.g., in the \pkg{gamlss} package,][]{Formula:Stasinopoulos+Rigby:2007}, regressors and instruments in instrumental variable regressions (e.g., in the \pkg{plm} package, \citealp{Formula:Croissant+Millo:2008}, or the \pkg{AER} package, \citealp{Formula:Kleiber+Zeileis:2008}), variables in two-part models such as hurdle models or zero-inflated regressions \citep[e.g., in the \pkg{pscl} package,][]{Formula:Zeileis+Kleiber+Jackman:2008}, alternative-specific and individual-specific variables in choice models \citep[e.g., in the \pkg{mlogit} package,][]{Formula:Croissant:2010}, efficiency level variables in stochastic frontier analysis \citep[e.g., in the \pkg{frontier} package,][]{Formula:Coelli+Henningsen:2010}, or modeling variables and partitioning variables in model-based recursive partitioning techniques \citep[e.g., in the \pkg{party} package,][]{Formula:Zeileis+Hothorn+Hornik:2008}. \end{enumerate} In many of the aformentioned packages, standard \class{formula} objects are employed but their processing is generalized, e.g., by using multiple formulas, multiple terms, by adding new formula operators or even more elaborate solutions. However, in many situations it is not easy to reuse these generalizations outside the package/function they were designed for. Therefore, as we repeatedly needed such generalizations in our own packages and addressed this in the past by various different solutions, it seemed natural to provide a more general unified approach by means of our new \pkg{Formula} package. This has already been reused in some of our own packages (including \pkg{AER}, \pkg{betareg}, \pkg{mlogit}, and \pkg{plm}) but can also be easily employed by other package developers (e.g., as in the \pkg{frontier} package). More applications in our own and other packages will hopefully follow. In the remainder of this paper we discuss how multiple responses and multiple parts (both on the LHS and RHS) are enabled in the \pkg{Formula} package written in the \proglang{R} system for statistical computing \citep{Formula:R:2009} and available from the Comprehensive \proglang{R} Archive Network (CRAN) at \url{http://CRAN.R-project.org/package=Formula}. Built on top of basic \class{formula} objects, the \class{Formula} class just adds a thin additional layer which is based on a single additional operator, namely \code{|}, that can be used to separate different parts (or groups) of variables. \pkg{Formula} essentially just handles the different formula parts and leverages the existing methods for \class{formula} objects for all remaining operations.\footnote{Throughout the paper, no terminological distinction is made between classic \class{formula} objects as such and the way they are interpreted by standard processing tools (e.g., \fct{terms}, \fct{model.frame}, \fct{model.matrix}). The reasons for this are twofold: First, it reflects their use as described in \cite{Formula:Chambers+Hastie:1992} and, second, generalizations generally require extra effort from the user.} In Section~\ref{sec:motivation} we show two small motivating examples that convey the main ideas implemented in the package and how easily they can be employed. The details of the \class{Formula} class and its associated methods are discussed in Section~\ref{sec:implementation} and Section~\ref{sec:usage} illustrates the usage of \pkg{Formula} in developing new model-fitting functions. A short summary in Section~\ref{sec:summary} concludes the paper. \section{Motivating examples} \label{sec:motivation} To illustrate the basic ideas of the \pkg{Formula} package, we first generate a small artificial data set (with both numeric and categorical variables) and subsequently illustrate its usage with a multi-part and a multi-response \class{Formula}, respectively. <>= set.seed(1090) dat <- as.data.frame(matrix(round(runif(21), digits = 2), ncol = 7)) colnames(dat) <- c("y1", "y2", "y3", "x1", "x2", "x3", "x4") for(i in c(2, 6:7)) dat[[i]] <- factor(dat[[i]] < 0.5, labels = c("a", "b")) dat$y2[1] <- NA dat @ \subsection{Multiple parts} We start out with a simple formula \verb/log(y1) ~ x1 + x2 | I(x1^2)/ which has a single response \code{log(y1)} on the LHS and two parts on the RHS, separated by \code{|}. The first part contains \code{x1} and \code{x2}, the second contains \verb/I(x1^2)/, i.e., the squared values of \code{x1}. The initial \class{formula} can be transformed to a \class{Formula} using the constructor function \fct{Formula}: % <>= F1 <- Formula(log(y1) ~ x1 + x2 | I(x1^2)) length(F1) @ % The \fct{length} method indicates that there is one part on the LHS and two parts on the RHS. The first step of processing data using a formula is typically the construction of a so-called model frame containing only the variables required by the formula. As usual, this can be obtained with the \fct{model.frame} method. % <>= mf1 <- model.frame(F1, data = dat) mf1 @ % As this model just has a single response (as in base \class{formula} objects), the extractor function \fct{model.response} can be employed: % <>= model.response(mf1) @ % For constructing separate model matrices for the two parts on the RHS, the \fct{model.matrix} can be employed and additionally specifying the argument \code{rhs}: % <>= model.matrix(F1, data = mf1, rhs = 1) model.matrix(F1, data = mf1, rhs = 2) @ \subsection{Multiple responses} To accommodate multiple responses, all formula operators can be employed on the LHS in \class{Formula} objects (whereas they would have their original arithmetic meaning in \class{formula} objects). This also includes the new \code{|} operator for separating different parts. Thus, one could specify a two-part response via \code{y1 | y2 ~ x3} or a single part with two variables via \code{y1 + y2 ~ x3}. We do the latter in the following illustration. % <>= F2 <- Formula(y1 + y2 ~ x3) length(F2) @ % As usual, the model frame can be derived by % <>= mf2 <- model.frame(F2, data = dat) mf2 @ % However, there is an important difference to the model frame \code{mf1} derived in the previous example. As the (non-generic) \fct{model.response} function would only be able to extract a single response column from a model frame, multi-response model frames in \pkg{Formula} are implemented to have no response at all in the \fct{model.response} sense: % <>= model.response(mf2) @ % As \fct{model.response} cannot be extended (without overloading the base \proglang{R} function), \pkg{Formula} provides a new generic function \fct{model.part} which can be used to extract all variables from a model frame pertaining to specific parts. This can also be used to extract multiple responses. Its syntax is modeled after \fct{model.matrix} taking a \class{Formula} as the first argument. For further details see Section~\ref{sec:implementation}. Its application is straightforward and all LHS variables (in the first and only part of the LHS) can be extracted via % <>= model.part(F2, data = mf2, lhs = 1) @ % The same method also works for single response models as in the previous example: % <>= model.part(F1, data = mf1, lhs = 1, drop = TRUE) @ \section{Implementation} \label{sec:implementation} Below we discuss the ideas for the design of the \class{Formula} class and methods. As all tools are built on top of the \class{formula} class and its associated methods whose most important feature are briefly outlined as well. \subsection[Working with classic ``formula'' objects]{Working with classic \class{formula} objects} Classic \class{formula} objects \citep{Formula:Chambers+Hastie:1992} are constructed by using \code{~} to separate LHS and RHS, typically (but not necessarily) interpreted as ``dependent'' and ``explanatory'' variables. For describing relationships between variables on the RHS, several operators can be used: \code{+}, \code{-}, \code{*}, \code{/}, \code{:}, \verb+%in%+, \verb+^+. Thus, these do not have their original meaning in the top-level RHS while they keep their original arithmetic meaning on higher levels of the RHS (thus, within function calls such as \verb+I(x1^2)+) and on the LHS in general. A first step in using \class{formula} objects is often to compute the associated \class{terms} using the function \fct{terms}. Based on the formula or the associated terms and a suitable set of variables (typically either in a data frame or in the global environment) \fct{model.frame} can build a so-called model frame that contains all variables in the formula/terms. This might include processing of missing values (\code{NA}s), carrying out variable transformations (such as logs, squares, or other functions of one or more variables) and providing further variables like weights, offset, etc. A model frame is simply a \class{data.frame} with additional attributes (including \class{terms}) but without a specific class. From this preprocessed model frame several components can be extracted using \fct{model.extract} or \fct{model.response}, \fct{model.weights}, and \fct{model.offset}, all of which are non-generic. Last not least, \fct{model.matrix} (which is generic) can compute ``design'' or ``regressor'' matrices based on the formula/terms and the associated model frame. \subsection[Constructing ``Formula'' objects]{Constructing \class{Formula} objects} To accomplish the main objectives of the \class{Formula} class, the following design principles have been used: reuse of \class{formula} objects, introduction of a single new operator \code{|}, and support of all formula operators on the LHS. Thus, \code{|} loses its original meaning (logical ``or'') on the first level of formulas but can still be used with its original meaning on higher levels, e.g., \code{factor(x1 > 0.5 | x3 == "a")} still works as before. For assigning a new class to formulas containing \code{|}, the constructor function \fct{Formula} is used: % <>= F3 <- Formula(y1 + y2 | log(y3) ~ x1 + I(x2^2) | 0 + log(x1) | x3 / x4) F3 length(F3) @ % In this example, \code{F3} is an artificially complex formula with two parts on the LHS and three parts on the RHS, both containing multiple terms, transformations or other formula operators. Apart from assigning the new class \class{Formula} (in addition to the old \class{formula} class), \fct{Formula} also splits up the formula into LHS and RHS parts which are stored as list attributes \code{"lhs"} and \code{"rhs"}, respectively, e.g., % <>= attr(F3, "lhs") @ and analogously \code{attr(F3, "rhs")}. The user never has to compute on these attributes directly, but many methods for \class{Formula} objects take \code{lhs} and/or \code{rhs} arguments. These always refer to index vectors for the two respective lists. It would have been conceivable to generalize not only the notion of formulas but also of terms or model frames. However, there are few generics with methods for \class{terms} objects and there is no particular class for model frames at all. Hence, computing with generalized versions of these concepts would have required much more overhead for users of \pkg{Formula}. Hence, it was decided not to do so and keep the package interface as simple as possible. \subsection[Extracting ``formula'' and ``terms'' objects]{Extracting \class{formula} and \class{terms} objects} As subsequent computations typically require a \class{formula} or a \class{terms} object, \pkg{Formula} provides suitable \fct{formula} and \fct{terms} extractors for \class{Formula} objects. For the former, the idea is to be able to switch back and forth between the \class{Formula} and \class{formula} representation, e.g., \code{formula(Formula(...))} should recover the original input formula. For the latter, the objective is somewhat different: \fct{terms} should always return a \class{terms} object that can be processed by \fct{model.frame} and similar functions. Thus, the terms must not contain multiple responses and/or the new \code{|} operator. The \fct{formula} method is straightforward. When no additional arguments are supplied it recovers the original \class{formula}. Furthermore, there are two optional additional arguments \code{lhs} and \code{rhs}. With these arguments subsets of formulas can be chosen, indexing the LHS and RHS parts. The default value for both is \code{NULL}, meaning that all parts are employed. % <>= formula(F3) formula(F3, lhs = 2, rhs = -2) formula(F3, lhs = c(TRUE, FALSE), rhs = 0) @ Similarly, \fct{terms} computes a \class{terms} object, by default using all parts in the formula, but \code{lhs} and \code{rhs} can be used as above. To remove the \code{|} operator, all parts are collapsed using the \code{+} operator. Furthermore, the LHS variables can only be kept on the LHS if they contain a single term. Otherwise, to stop subsequent computations from interpreting the formula operators as arithmetic operators, all LHS components are added on the RHS as well. Thus, for \code{F3} we obtain % <>= terms(F3) @ % Instead of using all parts, subsets can again be selected. We illustrate this below but only show the associated \class{formula} to save output space: <>= formula(terms(F3)) formula(terms(F3, lhs = 2, rhs = -2)) formula(terms(F3, lhs = c(TRUE, FALSE), rhs = 0)) @ \subsection{Computing model frames, matrices, and responses} Given that suitable \class{terms} can be extracted from \class{Formula} objects, it is straightforward to set up the corresponding model frame. The \fct{model.frame} method simply first calls the \fct{terms} method and then applies the default \fct{model.frame}. Hence, all further arguments are processed as usual, e.g., % <>= mf3 <- model.frame(F3, data = dat, subset = y1 < 0.75, weights = x1) mf3 @ % All subsequent computations are then based on this preprocessed model frame (and possibly the original \class{Formula}). Thus, the model matrices for each RHS part can be easily computed, again setting the \code{rhs} argument: % <>= model.matrix(F3, data = mf3, rhs = 2) @ % Typically, just a single RHS will be selected and hence \code{rhs = 1} and not \code{rhs = NULL} is the default in this method. However, multiple RHS parts are also supported. Also, there is a \code{lhs} argument available (defaulting to \code{NULL}) which might seem unnecessary at first sight but it is important in case the selected RHS part(s) contain(s) a ``\code{.}'' that needs to be resolved (see \code{?model.matrix.Formula} for an example). The LHS parts can be extracted using the method for the new \fct{model.part} generic, employing a syntax similar to \fct{model.matrix}: % <>= model.part(F3, data = mf3, lhs = 1) model.part(F3, data = mf3, lhs = 2) @ % As argued above, introduction of a new generic is necessary for supporting multi-response formulas because \fct{model.response} is non-generic. For model frames derived from single-response formulas, \fct{model.response} can be used as usual. The remaining extractors work as usual: % <>= model.weights(mf3) @ \subsection{Further methods} To conclude the suite of methods available for the new \class{Formula} class, \pkg{Formula} provides an \fct{update} method and a new \fct{as.Formula} generic with suitable methods. The former updates the formula part by part, adding new parts if necessary: % <>= update(F1, . ~ . - x1 | . + x1) update(F1, . + y2 | y3 ~ .) @ % The \fct{as.Formula} method coerces to \class{Formula}, possibly also processing multiple arguments: % <>= as.Formula(y1 ~ x1, y2 ~ x2, ~ x3) @ \section{Usage in model fitting functions} \label{sec:usage} A typical application of \pkg{Formula} is to provide the workhorse for formula processing in model-fitting functions that require specification of multiple parts or multiple responses. To provide a very brief and simple example, we show how such a function can be set up. For illustration, we compute the coefficients in an instrumental variables regression using two-stage least squares. The \fct{ivcoef} function below takes the usual arguments \code{formula}, \code{data}, \code{subset}, and\linebreak \code{na.action} (and further arguments \code{weights} and \code{offset} could be included in the same way). The \code{formula} should be a two-part formula like \code{y ~ x1 + x2 | z1 + z2 + z3}. There is a single response on the LHS, one RHS part with the regressors and a second RHS part with the instruments. The function \fct{ivcoef} uses the typical workflow of model-fitting functions and processes its arguments in the following four steps: (1)~process the call, (2)~set up the model frame (using the \class{Formula} method), (3)~extract response and regressors from the model frame, (4)~estimate the model (by calling \fct{lm.fit} twice to compute the two-stage least squares coefficients). % <>= ivcoef <- function(formula, data, subset, na.action, ...) { mf <- match.call(expand.dots = FALSE) m <- match(c("formula", "data", "subset", "na.action"), names(mf), 0) mf <- mf[c(1, m)] f <- Formula(formula) mf[[1]] <- as.name("model.frame") mf$formula <- f mf <- eval(mf, parent.frame()) y <- model.response(mf) x <- model.matrix(f, data = mf, rhs = 1) z <- model.matrix(f, data = mf, rhs = 2) xz <- as.matrix(lm.fit(z, x)$fitted.values) lm.fit(xz, y)$coefficients } @ % The resulting function can then be applied easily (albeit not very meaningfully) to the \code{dat} data frame: % <>= ivcoef(log(y1) ~ x1 | x2, data = dat) @ % The same coefficients can be derived along with all the usual inference using the \fct{ivreg} function from the \pkg{AER} package \citep{Formula:Kleiber+Zeileis:2008}, which also uses the \pkg{Formula} tools in its latest release. Apart from providing inference and many other details, \fct{ivreg} also supports \code{weights}, \code{offsets} etc. Finally, for backward compatibility, the function also allows separate formulas for regressors and instruments (i.e., \code{formula = y ~ x1 + x2} and \code{instruments = ~ z1 + z2 + z3}) which can be easily incorporated using the \pkg{Formula} tools, e.g., replacing \code{f <- Formula(formula)} by % \begin{Sinput} + f <- if(!is.null(instruments)) as.Formula(formula, instruments) + else as.Formula(formula) + stopifnot(isTRUE(all.equal(length(f), c(1, 2)))) \end{Sinput} % In summary, the usage of \pkg{Formula} should reduce the overhead for the developers of model-fitting functions in \proglang{R} with multiple responses and/or multiple parts and make the resulting programs more intelligible. Further \proglang{R} packages employing the \class{Formula} approach can be obtained from CRAN, including \pkg{betareg}, \pkg{frontier}, \pkg{mlogit}, and \pkg{plm}. \section{Summary} \label{sec:summary} The \pkg{Formula} package provides tools for processing multi-response and multi-part formulas in the \proglang{R} system for statistical computing. The new class \class{Formula} inherits from the existing \class{formula} class, only adds a single new formula operator \code{|}, and enables the usage of formula operators on the left-hand side of formulas. The methods provided for \class{Formula} objects are as similar as possible to the classic methods, facilitating their usage in model-fitting functions that require support for multiple responses and/or multiple parts of variables. \bibliography{Formula} \end{document} Formula/inst/doc/Formula.R0000644000175400001440000001241213131004422015312 0ustar zeileisusers### R code from vignette source 'Formula.Rnw' ################################################### ### code chunk number 1: preliminaries ################################################### options(width = 70, prompt = "R> ", continue = "+ ") library("Formula") ################################################### ### code chunk number 2: example-data ################################################### set.seed(1090) dat <- as.data.frame(matrix(round(runif(21), digits = 2), ncol = 7)) colnames(dat) <- c("y1", "y2", "y3", "x1", "x2", "x3", "x4") for(i in c(2, 6:7)) dat[[i]] <- factor(dat[[i]] < 0.5, labels = c("a", "b")) dat$y2[1] <- NA dat ################################################### ### code chunk number 3: multi-part1 ################################################### F1 <- Formula(log(y1) ~ x1 + x2 | I(x1^2)) length(F1) ################################################### ### code chunk number 4: multi-part2 ################################################### mf1 <- model.frame(F1, data = dat) mf1 ################################################### ### code chunk number 5: multi-part3 ################################################### model.response(mf1) ################################################### ### code chunk number 6: multi-part4 ################################################### model.matrix(F1, data = mf1, rhs = 1) model.matrix(F1, data = mf1, rhs = 2) ################################################### ### code chunk number 7: multi-response1 ################################################### F2 <- Formula(y1 + y2 ~ x3) length(F2) ################################################### ### code chunk number 8: multi-response2 ################################################### mf2 <- model.frame(F2, data = dat) mf2 ################################################### ### code chunk number 9: multi-response3 ################################################### model.response(mf2) ################################################### ### code chunk number 10: multi-response4 ################################################### model.part(F2, data = mf2, lhs = 1) ################################################### ### code chunk number 11: single-response ################################################### model.part(F1, data = mf1, lhs = 1, drop = TRUE) ################################################### ### code chunk number 12: details1 ################################################### F3 <- Formula(y1 + y2 | log(y3) ~ x1 + I(x2^2) | 0 + log(x1) | x3 / x4) F3 length(F3) ################################################### ### code chunk number 13: details2 ################################################### attr(F3, "lhs") ################################################### ### code chunk number 14: formula-method ################################################### formula(F3) formula(F3, lhs = 2, rhs = -2) formula(F3, lhs = c(TRUE, FALSE), rhs = 0) ################################################### ### code chunk number 15: terms-method1 ################################################### terms(F3) ################################################### ### code chunk number 16: terms-method ################################################### formula(terms(F3)) formula(terms(F3, lhs = 2, rhs = -2)) formula(terms(F3, lhs = c(TRUE, FALSE), rhs = 0)) ################################################### ### code chunk number 17: model.frame-method ################################################### mf3 <- model.frame(F3, data = dat, subset = y1 < 0.75, weights = x1) mf3 ################################################### ### code chunk number 18: model.matrix-method ################################################### model.matrix(F3, data = mf3, rhs = 2) ################################################### ### code chunk number 19: model.response-substitute ################################################### model.part(F3, data = mf3, lhs = 1) model.part(F3, data = mf3, lhs = 2) ################################################### ### code chunk number 20: model.foo-methods ################################################### model.weights(mf3) ################################################### ### code chunk number 21: update-method ################################################### update(F1, . ~ . - x1 | . + x1) update(F1, . + y2 | y3 ~ .) ################################################### ### code chunk number 22: as.Formula-method ################################################### as.Formula(y1 ~ x1, y2 ~ x2, ~ x3) ################################################### ### code chunk number 23: ivcoef ################################################### ivcoef <- function(formula, data, subset, na.action, ...) { mf <- match.call(expand.dots = FALSE) m <- match(c("formula", "data", "subset", "na.action"), names(mf), 0) mf <- mf[c(1, m)] f <- Formula(formula) mf[[1]] <- as.name("model.frame") mf$formula <- f mf <- eval(mf, parent.frame()) y <- model.response(mf) x <- model.matrix(f, data = mf, rhs = 1) z <- model.matrix(f, data = mf, rhs = 2) xz <- as.matrix(lm.fit(z, x)$fitted.values) lm.fit(xz, y)$coefficients } ################################################### ### code chunk number 24: ivcoef-example ################################################### ivcoef(log(y1) ~ x1 | x2, data = dat) Formula/tests/0000755000175400001440000000000012213624611013212 5ustar zeileisusersFormula/tests/Examples/0000755000175400001440000000000012213624611014770 5ustar zeileisusersFormula/tests/Examples/Formula-Ex.Rout.save0000644000175400001440000002105112510735736020571 0ustar zeileisusers R version 3.1.2 (2014-10-31) -- "Pumpkin Helmet" Copyright (C) 2014 The R Foundation for Statistical Computing Platform: x86_64-pc-linux-gnu (64-bit) R is free software and comes with ABSOLUTELY NO WARRANTY. You are welcome to redistribute it under certain conditions. Type 'license()' or 'licence()' for distribution details. R is a collaborative project with many contributors. Type 'contributors()' for more information and 'citation()' on how to cite R or R packages in publications. Type 'demo()' for some demos, 'help()' for on-line help, or 'help.start()' for an HTML browser interface to help. Type 'q()' to quit R. > pkgname <- "Formula" > source(file.path(R.home("share"), "R", "examples-header.R")) > options(warn = 1) > library('Formula') > > base::assign(".oldSearch", base::search(), pos = 'CheckExEnv') > cleanEx() > nameEx("Formula") > ### * Formula > > flush(stderr()); flush(stdout()) > > ### Name: Formula > ### Title: Extended Formulas: Multiple Responses and Multiple Regressor > ### Parts > ### Aliases: Formula formula.Formula as.Formula as.Formula.default > ### as.Formula.formula as.Formula.Formula is.Formula print.Formula > ### update.Formula length.Formula all.equal.Formula str.Formula > ### Keywords: classes > > ### ** Examples > > ## create a simple Formula with one response and two regressor parts > f1 <- y ~ x1 + x2 | z1 + z2 + z3 > F1 <- Formula(f1) > class(F1) [1] "Formula" "formula" > length(F1) [1] 1 2 > > ## switch back to original formula > formula(F1) y ~ x1 + x2 | z1 + z2 + z3 > > ## create formula with various transformations > formula(F1, rhs = 1) y ~ x1 + x2 > formula(F1, collapse = TRUE) y ~ x1 + x2 + (z1 + z2 + z3) > formula(F1, lhs = 0, rhs = 2) ~z1 + z2 + z3 > > ## put it together from its parts > as.Formula(y ~ x1 + x2, ~ z1 + z2 + z3) y ~ x1 + x2 | z1 + z2 + z3 > > ## update the formula > update(F1, . ~ . + I(x1^2) | . - z2 - z3) y ~ x1 + x2 + I(x1^2) | z1 > update(F1, . | y2 + y3 ~ .) y | y2 + y3 ~ x1 + x2 | z1 + z2 + z3 > > # create a multi-response multi-part formula > f2 <- y1 | y2 + y3 ~ x1 + I(x2^2) | 0 + log(x1) | x3 / x4 > F2 <- Formula(f2) > length(F2) [1] 2 3 > > ## obtain various subsets using standard indexing > ## no lhs, first/seconde rhs > formula(F2, lhs = 0, rhs = 1:2) ~x1 + I(x2^2) | 0 + log(x1) > formula(F2, lhs = 0, rhs = -3) ~x1 + I(x2^2) | 0 + log(x1) > formula(F2, lhs = 0, rhs = c(TRUE, TRUE, FALSE)) ~x1 + I(x2^2) | 0 + log(x1) > ## first lhs, third rhs > formula(F2, lhs = c(TRUE, FALSE), rhs = 3) y1 ~ x3/x4 > > > > cleanEx() > nameEx("model.frame.Formula") > ### * model.frame.Formula > > flush(stderr()); flush(stdout()) > > ### Name: model.frame.Formula > ### Title: Model Frame/Matrix/Response Construction for Extended Formulas > ### Aliases: terms.Formula model.matrix.Formula model.frame.Formula > ### model.part model.part.formula model.part.Formula > ### Keywords: models > > ### ** Examples > > ## artificial example data > set.seed(1090) > dat <- as.data.frame(matrix(round(runif(21), digits = 2), ncol = 7)) > colnames(dat) <- c("y1", "y2", "y3", "x1", "x2", "x3", "x4") > for(i in c(2, 6:7)) dat[[i]] <- factor(dat[[i]] > 0.5, labels = c("a", "b")) > dat$y2[1] <- NA > dat y1 y2 y3 x1 x2 x3 x4 1 0.82 0.27 0.09 0.22 b a 2 0.70 b 0.17 0.26 0.46 a a 3 0.65 a 0.28 0.03 0.37 b b > > ###################################### > ## single response and two-part RHS ## > ###################################### > > ## single response with two-part RHS > F1 <- Formula(log(y1) ~ x1 + x2 | I(x1^2)) > length(F1) [1] 1 2 > > ## set up model frame > mf1 <- model.frame(F1, data = dat) > mf1 log(y1) x1 x2 I(x1^2) 1 -0.1984509 0.09 0.22 0.0081 2 -0.3566749 0.26 0.46 0.0676 3 -0.4307829 0.03 0.37 9e-04 > > ## extract single response > model.part(F1, data = mf1, lhs = 1, drop = TRUE) 1 2 3 -0.1984509 -0.3566749 -0.4307829 > model.response(mf1) 1 2 3 -0.1984509 -0.3566749 -0.4307829 > ## model.response() works as usual > > ## extract model matrices > model.matrix(F1, data = mf1, rhs = 1) (Intercept) x1 x2 1 1 0.09 0.22 2 1 0.26 0.46 3 1 0.03 0.37 attr(,"assign") [1] 0 1 2 > model.matrix(F1, data = mf1, rhs = 2) (Intercept) I(x1^2) 1 1 0.0081 2 1 0.0676 3 1 0.0009 attr(,"assign") [1] 0 1 > > ######################################### > ## multiple responses and multiple RHS ## > ######################################### > > ## set up Formula > F2 <- Formula(y1 + y2 | log(y3) ~ x1 + I(x2^2) | 0 + log(x1) | x3 / x4) > length(F2) [1] 2 3 > > ## set up full model frame > mf2 <- model.frame(F2, data = dat) > mf2 y1 y2 log(y3) x1 I(x2^2) log(x1) x3 x4 2 0.70 b -1.771957 0.26 0.2116 -1.347074 a a 3 0.65 a -1.272966 0.03 0.1369 -3.506558 b b > > ## extract responses > model.part(F2, data = mf2, lhs = 1) y1 y2 2 0.70 b 3 0.65 a > model.part(F2, data = mf2, lhs = 2) log(y3) 2 -1.771957 3 -1.272966 > ## model.response(mf2) does not give correct results! > > ## extract model matrices > model.matrix(F2, data = mf2, rhs = 1) (Intercept) x1 I(x2^2) 2 1 0.26 0.2116 3 1 0.03 0.1369 attr(,"assign") [1] 0 1 2 > model.matrix(F2, data = mf2, rhs = 2) log(x1) 2 -1.347074 3 -3.506558 attr(,"assign") [1] 1 > model.matrix(F2, data = mf2, rhs = 3) (Intercept) x3b x3a:x4b x3b:x4b 2 1 0 0 0 3 1 1 0 1 attr(,"assign") [1] 0 1 2 2 attr(,"contrasts") attr(,"contrasts")$x3 [1] "contr.treatment" attr(,"contrasts")$x4 [1] "contr.treatment" > > ####################### > ## Formulas with '.' ## > ####################### > > ## set up Formula with a single '.' > F3 <- Formula(y1 | y2 ~ .) > mf3 <- model.frame(F3, data = dat) > ## without y1 or y2 > model.matrix(F3, data = mf3) (Intercept) y3 x1 x2 x3b x4b 2 1 0.17 0.26 0.46 0 0 3 1 0.28 0.03 0.37 1 1 attr(,"assign") [1] 0 1 2 3 4 5 attr(,"contrasts") attr(,"contrasts")$x3 [1] "contr.treatment" attr(,"contrasts")$x4 [1] "contr.treatment" > ## without y1 but with y2 > model.matrix(F3, data = mf3, lhs = 1) (Intercept) y2b y3 x1 x2 x3b x4b 2 1 1 0.17 0.26 0.46 0 0 3 1 0 0.28 0.03 0.37 1 1 attr(,"assign") [1] 0 1 2 3 4 5 6 attr(,"contrasts") attr(,"contrasts")$y2 [1] "contr.treatment" attr(,"contrasts")$x3 [1] "contr.treatment" attr(,"contrasts")$x4 [1] "contr.treatment" > ## without y2 but with y1 > model.matrix(F3, data = mf3, lhs = 2) (Intercept) y1 y3 x1 x2 x3b x4b 2 1 0.70 0.17 0.26 0.46 0 0 3 1 0.65 0.28 0.03 0.37 1 1 attr(,"assign") [1] 0 1 2 3 4 5 6 attr(,"contrasts") attr(,"contrasts")$x3 [1] "contr.treatment" attr(,"contrasts")$x4 [1] "contr.treatment" > > ## set up Formula with multiple '.' > F3 <- Formula(y1 | y2 | log(y3) ~ . - x3 - x4 | .) > ## process both '.' separately (default) > mf3 <- model.frame(F3, data = dat, dot = "separate") > ## only x1-x2 > model.part(F3, data = mf3, rhs = 1) x1 x2 2 0.26 0.46 3 0.03 0.37 > ## all x1-x4 > model.part(F3, data = mf3, rhs = 2) x1 x2 x3 x4 2 0.26 0.46 a a 3 0.03 0.37 b b > ## process the '.' sequentially, i.e., the second RHS conditional on the first > mf3 <- model.frame(F3, data = dat, dot = "sequential") > ## only x1-x2 > model.part(F3, data = mf3, rhs = 1) x1 x2 2 0.26 0.46 3 0.03 0.37 > ## only x3-x4 > model.part(F3, data = mf3, rhs = 2) x3 x4 2 a a 3 b b > > ############################## > ## Process multiple offsets ## > ############################## > > ## set up Formula > F4 <- Formula(y1 ~ x3 + offset(x1) | x4 + offset(log(x2))) > mf4 <- model.frame(F4, data = dat) > ## model.part can be applied as above and includes offset! > model.part(F4, data = mf4, rhs = 1) x3 offset(x1) 1 b 0.09 2 a 0.26 3 b 0.03 > ## additionally, the corresponding corresponding terms can be included > model.part(F4, data = mf4, rhs = 1, terms = TRUE) x3 offset(x1) 1 b 0.09 2 a 0.26 3 b 0.03 > ## hence model.offset() can be applied to extract offsets > model.offset(model.part(F4, data = mf4, rhs = 1, terms = TRUE)) [1] 0.09 0.26 0.03 > model.offset(model.part(F4, data = mf4, rhs = 2, terms = TRUE)) [1] -1.5141277 -0.7765288 -0.9942523 > > > > ### *