strucchange/0000755000175400001440000000000012534551563012764 5ustar zeileisusersstrucchange/inst/0000755000175400001440000000000012534542351013734 5ustar zeileisusersstrucchange/inst/CITATION0000644000175400001440000000506612220001265015062 0ustar zeileisuserscitHeader("There are several publications about strucchange which describe different aspects of the software. The main reference is the JSS paper.") citEntry(entry="Article", title = "strucchange: An R Package for Testing for Structural Change in Linear Regression Models", author = personList(as.person("Achim Zeileis"), as.person("Friedrich Leisch"), as.person("Kurt Hornik"), as.person("Christian Kleiber")), journal = "Journal of Statistical Software", year = "2002", volume = "7", number = "2", pages = "1--38", url = "http://www.jstatsoft.org/v07/i02/", textVersion = paste("Achim Zeileis, Friedrich Leisch, Kurt Hornik and Christian Kleiber (2002).", "strucchange: An R Package for Testing for Structural Change in Linear Regression Models.", "Journal of Statistical Software, 7(2), 1-38.", "URL http://www.jstatsoft.org/v07/i02/"), header = "To cite strucchange in publications use:" ) citEntry(entry="Article", title = "Testing and Dating of Structural Changes in Practice", author = personList(as.person("Achim Zeileis"), as.person("Christian Kleiber"), as.person("Walter Kr\\\"amer"), as.person("Kurt Hornik")), journal = "Computational Statistics \\& Data Analysis", year = "2003", volume = "44", pages = "109--123", textVersion = paste("Achim Zeileis, Christian Kleiber, Walter Kraemer and Kurt Hornik (2003).", "Testing and Dating of Structural Changes in Practice.", "Computational Statistics & Data Analysis, 44, 109-123."), header = "If methods related to breakpoints() are used also cite:" ) citEntry(entry = "Article", title = "Implementing a Class of Structural Change Tests: An Econometric Computing Approach", author = "Achim Zeileis", journal = "Computational Statistics \\& Data Analysis", year = "2006", volume = "50", pages = "2987--3008", textVersion = paste("Achim Zeileis (2006).", "Implementing a Class of Structural Change Tests: An Econometric Computing Approach.", "Computational Statistics & Data Analysis, 50, 2987-3008."), header = "If methods related to gefp() and efpFunctional() are used also cite:" ) strucchange/inst/doc/0000755000175400001440000000000012534542351014501 5ustar zeileisusersstrucchange/inst/doc/strucchange-intro.pdf0000644000175400001440000062206012534542353020643 0ustar zeileisusers%PDF-1.5 % 1 0 obj << /Type /ObjStm /Length 4896 /Filter /FlateDecode /N 92 /First 774 >> stream x\[s6~?UaJ Vl'/$nF3 KÛʒ 4dLMT"Lt"JLbLlN\<QY¥0($pp\&"xIP2Ӊ9^D(65v9牴,QY''Ji4ρ|5d ]Mh瀺E'yb, $O,%R$.CAJEr\1HK MrC>*pƁƹD°xHe;FΝ`@"-Fgq#W$ +@4 <р,ր,rՀ,M7V'PK 5 +p>`•0 Y2H <'b803p-*5Md1נ04b,  [31=f7ut 2Mh-sV+"&[8M@4$rb; $s1n+ae],H0,9HسzY-'(ė/? C$GboSu^/2?Euf2qGXoACH5:›?߬G%Z?z$ytۣMu^'yTxYK@[R-ɿ!4a C1Y"tsyjA,)p/@X~[~bo޾ȥ*ZЕ0Jq7%+rUyD[4d<GnzTumRG T命Gv4qԨ@(DO PD D0 1w1D]cQبHWQX=A+qĂ L ԊcC#Ýh8*X ;خ2_K7 X QD5il%л9(y8@2޹#i;x_{,T$f$nV207bh(fsSB&,yVC7g.}L:{KRo.ʦI-}Go?eVGE:!-`EiTjV+1Y Lǎ3k`:Zԧ'h ٸͮe TfJ OTwWĶJnaB," 'B0oNBk0|bP3\n?B$yKנ\wwL)^%lt" MČ鹄NK$"MР+}=VHGф(<)ccw=C,=`#{~f'l=esvK޲w`Mq{ ?n7jstqv,?#(lU)ՖʳE=e*\(JvgEvNr*;[3vVm>XrNVlͰ`cZ/b`\r~k5Pїv ۲myVmh[}b%f,Y]-q.}bٟrޫx?7wh.ZIyt[ZI-X-K3;E8+1Vb e6͌R^}rד6+c5\e̷ڹO@љ~gG`_ ' midY姾) G3a{PR֥o#Ya6 f%rW\xb> x:]\5rvIaM[ \`BBPu脲4M7D Gm#B_A>4?#p;ɘّ0|a\'Ԋ=%'TX ~?y>#.3]PlfxCҌ{`{M:=4/׀箹?j`-mp D'<;X_3)&->SpGWTS>D%A>0!K>YOehg|rc-W!%9jgq%-V (y2THaܫ:*VN[ "DxK_f^s^2Z/νrulW!heJG&LD|54婥:K)8n3=%yע$Q+k:( ҡ #E Ƶyp2ʐK)S8F5ju¢sS:D bLuV}#KwH,!sw>{ lގWz 0,h;3ھ=?@qx.9φ{j#WdШt&ҤډaGr( XLS56HILxT:ՠ7E*39SZ*MXbX[K"Ls )RQ5 tR.B/rT)HQ#U -z#o1Erd9wt| n_!Tw!z4m)ont):7>!fMg8*[$k%ݷEJjA@ʱC2)6xti~.|H) %ad@j!<<0QJjHj? ȩNѕO= dj/^LS {uEџM2Oӏw>V*-ҢfBڲe]($|q?x9y/ːf rМEWB(y4` JA!CSãP:?FR@>_뮃7` XO}H ơ1 6rnYoAYݮt9a2˪L/d0r O_?Pcr3ANF&kNI.:#[O-8h3B&~bd_6 NBK:df5t伟o@F) 9Cڥ2㊘f!0u2/`Kww4sKt @? Բ.ʅ3?c)%Y I"a.Q%hq;tDt<S4zg9Z-Ig]Qmͣq0p.;ǴFHڣӣ?-endstream endobj 94 0 obj << /Subtype /XML /Type /Metadata /Length 1338 >> stream 2015-06-06T12:01:13+02:00 2015-06-06T12:01:13+02:00 David M. Jones CMTT12 endstream endobj 95 0 obj << /Type /ObjStm /Length 3237 /Filter /FlateDecode /N 92 /First 841 >> stream x[kS~>&H󞹕Je7!6Mj?8^\ov9#Y1r͜>jGY.!392YYpG?g75Bg'R l>8 ObRxR>DK24:::}e2mvKг'+ȈtC?JfFEQ1х*@e&rND<*UlBbfa5w̬ÜV':11+,)Nrb3g9dG&_46NyIp&^SFgRdqtc38q ]J], t/&yGe!PVg!zpPUT&F;1я#g((D$gA "LI_$HكDDI$Szr|˾yFJƀkOS52@q!bcG3ib)4K -*J6 T#C}UM["t'>WGSm}tѧ,?X̗Ojg'Wce0R'~\ぬn}\,>\O˛H듫ɴL$xid9Yi[4tbzR.1^7Y~Z~ZbW%G<+qٛ+x9zl}ܹ);rf깙znij}ane|{^&l5/WlW7NtT{No7M ,?U~YN/brfj+R/9G}W}y8(5]\5ZN.fӽES k9Y?g؍Z h)/SOʐ!?>:}X!CL!:m%= 85ֶł8:t ^-$6OdϻG>սg| 9gb鲡A".?Oנ a:/, >wW Ԁt8 fK@Y cAqЊrtsv͹򺶘E4 Y=ӱZi1]녊 7 wl#6C2`JJ1- Q!ed5-cy@iQq@ RQخR96N:Փk+ c5^cmf+VM#cuʪqCʪNW>VJwҌ+tT#^b*JJz)q; 3ԭO 4P !H ;F'w{Pϥn:XFǭQP3`@߷+-]`F9jG ֘ o PR #'6VT0l>q(_^?^7?#~;zՍjW&ejֻR;iZLys{JB1Qlr9l-wG5MwWco8O7W\?8q* olV e!*Qp="ant&z !^ *P{"P$M"(uK5Q] }J+#\qP} P%RF j:l(vnDZCj7!H+X%4gb-P0 aPAT,PuޗWZdIu[!BlMA#j;Q*kyd-7&.i`c2 [p*ΉXܩ݈II5&\ uG+X3#BEJ;ÚUa)]|.uW;-+F{dRiTkaMcs)46 <9S3Cyf,ws*]nuE~сOIpɕWN~HoPhnojr'lSI =d%wк <{;R !P{ ۃm `Ѵn@4-*a|CkQTzX\سo]X; < &^@HOL:d +@jPc{RZ5$Gnl[&|7=6s`4].b^nIA ߧ_ĵyVEiadZۻbk!|w`B6ܯ bU8)ȭ?Ӟ\w>lz/f5QcLp\a: o?DW߸j>W|-c~m~ WI# XgE~S1Uy=[_UUBGAS~bYckP 9wǷG/Rw,699 X9]vۗn62L/ă.%;:m1*v<:>6YGy򹓱JuJ)s&U5˿seU.Y1ee~돻 AR!|hTʤ\m߀wIR꺎DشH\8r~endstream endobj 188 0 obj << /Type /ObjStm /Length 3454 /Filter /FlateDecode /N 90 /First 832 >> stream x[[s6~_vv ~t&q6iUmNeI4l3/#KHù!2dW\%S"⪘Wͬpݷ{cQs~Z+(tA"uU (k"uL9.%:D)4Jʹ2t" tATzc`%(J0cz)Ɍ3?Jifu<=f^Y-gP:A#`Z0Ef Ӗi\ E)UGyB+phFkH x3*Q zYQcX8jY0 c$(S@%"@O-%1YHQx0HYQrD )FL: 7_Jc,AɃMj2% 0 RIQ RPx'0DJR@vB@.xPt"TVkIAKh@f~P =FI-^oY,ߔ7`H',{Wšlq5,)X&KK^MdWE9W/rvwDv̥GG^KG&RMIK`y.dt=2HN<,֛2IVjR>_ɼ'մrJ}L{;oS|~*t2\|7agWi"q jl. ,fl5_e8}Ib8ۏ\[% aH!|QS,X, dDi*V/IꫮVlxOV(ifq>+&OAh99Է=IY^a>X~ iNK A kӜXzvQc(ylb{jAy~V0gy9)v\0_x,_K"J#{E,px^Oi%ÛX:ine⏆I "e%]>*(x@gPqDa<f`>&O5/#j1!k "A&DN S2 4"u|yLXAHn *(PfJbv R幁Y n!8 -$@WrMڂ2kvV{G͍ā`kZ"R2W uPCxMMBde$5`D=~LE`QEY ˔ o79SztZmAi0j'!`LRh 80rCIA]ߏƃ"$n@50һ&2Tkz = uIth6I"FIil*#>rcb)+Nn:/Pc1NCD&%!^ O"S@xTh@1- n4j$46UUհxXѦG|<6l'=_L3J*e'M5Jt]:شHZ A6H*¿"LR}\J)~,f`V΅ۺK-p%])Dw^Q7i߇JMSӕoZ)m<43;~ȋ󋦊SIvg4{Mi6]ΗlYv]dEG62[g̮Nڐ mf9*=m[顇ԉa1z[?M._y1}8h āwN ; lGz+ԁB7h jFFQQ E+ڊdṳօIcdžL7Ϗ~N2U#.;v듄H=jN2'6Iе@i Kmmo.ۼ:e(Lk:tEu+>>_|S{6~℁⸑vޗ|h"pav2gEyZT+vw Fe=лr+t ~{Ұ]SFBՊZFEElJ4]ULQ`v_S~|B ŕй#ZMS/3*إ({\}Vq=ԭt4ѵ޼Kmʶd]qKD$r7+u)6)<9+yT.^]䋎S\.lh kUiMU.ϫe~MjC)>¯<ʿU!+ êmolĉپulaa^ۉ:}Gc!g/rB.FKЛ/_{׿~=ar? UP;;mkͳ;ɇ%h+-z-*dA Bv(11+{"}vy֮@N%P?"^QC=9+Z+]/HRq&d,'BVV(M#:=>\"^ќ Aw tȟ NVU5mJu m˺ұ˪Bg M  MH$jt>sw !p >8Q>Si5rKc4oUJlO˜ċOOwҥt.sN|^ -etQ1fG{߿ُkm(xHҞ )i1R)= E$%Aَј [Lp00q "wVUNow'z;ª=;2PRKEsOc:cu}4D[DpK4bNZsCPz܏Z4db28C`rtR\'( 1y:Eטd]*vlA@Ǭ%C_@`0yVX¹-(A"n/ްa8; PD[V)^I?Vi&Ií׾endstream endobj 279 0 obj << /Filter /FlateDecode /Length 8455 >> stream x]Iu>u;8=S> 1aI/"}h`LC=oɪ|/g ,d-ag_o_;{6]?3CzV۳|#I;k?{~_50R g1g?nvq~{>B)9͑P^<~l/#mĭx|_(w[ι`a/`ڞ5!sRLu,'qig& Y`xYZ҄]4.aJ0ƹDžol1A8+v >Nar PFP6e^MW^dy-Vf.\_hi4$fG==͝*95fqdo{`q0$y@oҹ5;8 7D! B 1qqLPe}r 7ɡP 1?aq*$D,m ΝN V4p98ɻ%ԮxC|AP6oh}oa^h:8d+۳s'~1 w8˺;iw@󛷰'55JITHZ>`|q 7յA[po M)q`SqjM`+zYH P'.l*(݉4CB% A x6X#!I` T1n}k.FŜ><{Z"7bJp&ܢ DG&TٲgyWl4ΗvLr,' ')FfP'ˉR\ &O,g-ǝ鎶mVXnn>U(pHT-m'#/ ɩɶ!PΈ\,=|'Ċ_7WN~ <{с3 h&c_ [? [*Pt1Tt0dơ*0h g<J=@~s{w "H%WS;8h7o J,: B8)+qykzO 'v*Z z `OG)8J_lHS V8 '~W_s ͆Ju%M%P|ׄI {):)0>ږ̰Ä'lw0),eeT2{ie",NHOoy#T2Ij zss"h•i;F;)NZ h)O$yxny#k]Z  OYIcŠw槟R.T3/#U!56`ngD9,OFhs&sRphN HPˢ;Sb+.Qg10tT>ubiY 8 .Qfe umG!!? Xbq0 b:y4Wt+bFy7j|ؓ/c<)VJs488J53Ę E2(wIrh_us<zj#d'\*>ZmQ!"eaV~,Tͨ&X*hupӠPC:8}ߓ-Cg`QO>JU`wJ·h8AP٦Ϩ) ,QRpVπ|]2VkaƾwJƥH2\ yUf855$! ~ q7$+tɒ^CjIcaѱKk"QUbcPֹӂF}o恇y<- xdhPN b'.{ ֊ wb=ڬ_K߀dfiLpK2H<|N쨼8Z-:7'J84V(\czŒA̚_4=@uXf#~|!B|m$RU.v`A`` J4"h 6QI~ek1vt")T뵻$VfL{rf=[ͶPVau'w~Ϗ#% J<|~0`i /EMjX떎Ve%eԮ2&+:k>Y%(bJ۱<-3NܚM>""VTKXUyj>R!gGWe3'ސ^+g=.>N૫`2Iik,|QUhX,i2(.jazz-6'D_s$ԑ r*j7*fO:QWe&]vcubўw ta@,*O!2ިf(Rϖ@pk.062f,X|`4kkO.P/]R矡 DS?!XKem&T@xM;aĖJϲҊʔs\L Es]?xµ7T{U`v;rҐD'APMM_Zn?d*(ɘoZTgv E+AOXxͺ,:ϋO1Z,Hɬ"kNk`jQr$)GxY IZB /?Kgly*zhKp6NtiU@5Y[ os7ƸLi"Ȋ吺ƏZ?0pd2O3;~sd2 4-˥+ $`ׁ&U؜@PFDZڬ_ kOb97Vu^,[",f_0#pԪ7y<欢cbbGk16%JxpZ_\mb00\]aUc3& i:J*<%-E.x͒BWѕ^:j>„b$[]yX)<.7#h@y??#iJNTv I_Eմrg@?>ܕkeJijqN+&h-=9&zďIbŅVս;4Yh [+RBѲ>GE/,e'վC &zE MU]|>&5cRudFn+aH^m/KS&n=T]^8_n Tt1A,?)at. &,;hz٢hJW>ثtYWƢ+[^t#pb?Z/9|cVr_Iv !2am;]Uj9*׫:lwK'5B;3Կ;OIb9L*&(.@%^MlY"72:`nR/~SG0w nB& :ltAt丑2~ԕXسX?/ ˉI4I `4# RB`K_l} xO_ًB0/vM֟'DCK4R11}4*r<8/OTWd@|T`ߑpDx-|G)'1B. QG5;F,\aǏ3r߀1jK1ؗJfKT D8y(mWOૼz U>-HcDvZ0]]Š ^V]!"᎗iUe\: j)$Y3FSES;Fh-(W=oCjI|r`Q3Ǐv8+ qsu{^$ 5@-ՙ^ :woЉ#,S}%mپ&g0+>?;+c 1wlpČP7jx&C]8Ϟ[d W#8``3Z^Q)hN ~AyHGrv| +EIh5/R&%!3A&tڲPfх1B k`O'X;~kZVtۈrNg f?{fU;tρ*i>I\x6i{ݔS|]h=t LI;WW՞  s xX<"TK ss,Z*TX:X˗ T'IXkD@u:Ny>(ō '3B3O^(_=9D^']'#ߵ5aqHRJOceOv xORid~$ip~/sl#( SplZTz*2Uƺ2N\dopFD)J)2^nE[^|l{}ز.fO.a}&wFw Xzc? BK.~\Zs7;/.xh>_XPVsgc5x?܎"eFQd~/+רوuUU-*}ڢK~'<0V3*b ܠ?еcM]H$ ,,nDG#\R uRI -:vf} x8c-~߆mfs $ѝH-7<@qY129WH$bV gjQoeɺ^YeSLַ=ގ%W6mQ`,Q'ibjTȬ6pFc YhJ5V[MM :ۺaVfLWlf.dto :pO UPEh e4ϛ@I=8Ì\׷kġ;Gw{LxL4?i z;& pI3\NOU,<4{Ȍ//KܱvMRr?.9.Aメ76\Aؾv?ѥL0;X8aZy* ~]do0H pp%C=U,O6&3YOh`LAf_G8 M3Ǹ6[V(!T3'ɫkįP"hvu~O^.z5On_ӯ˥]H+}DC)k5a[X_SR:{',%=. c1icq"I l9rg5O6(4g9paTqp&bB6Y=.ZI+@H+YxOL6ST`:T"jY97jDzڣ- 1$~CQendstream endobj 280 0 obj << /Filter /FlateDecode /Length 7724 >> stream x][uVL4qZu;Y @JZJ"w%.)yo9u=U]3CIF`k[;o^]}g#wWlw{ݥn^~Z87|q;vVȅ{{+kxtsLq/B0kh`em|[{{7iߑncwvHgV1fۿﰅ:7f!MBAwc=~N hp3k|x֥,WJbYa1aҢ_alPOc:UoJ+?9ŮKv`"NL:0wqGye㸞sOGx !\ד?\,H<" cBdj&A6 ?[.bp[a'|;B/+޿TsM;A3:' $(MCƓ5'Ixp%ȿ<*I{}XL뉝E^_?*wziop9gZRta =gekކi\aHcܰ ʠNޘ32O.(Jq" M%I"{=\arDxϫ, =d}[+'^@%qQ@&qyܘ4a,^37e' Ć&A%p3d/{`xB^3 440侠=Dbgԅ\\EOBlu@8{l,^ϚPYٴH[\Kd▒pO.*Oe[Q*6·"@n:LK61„jH9 >E]'j\FkD5 pFQpFɜ  {;RG$,$oݎE*#p _ZRIE\I:Hj8uDfJ[4$< Ϡ=h` #IƂ?}gb/Gw8 r,Q$L95.(#wQ䂎i1خt^VO΋2&䶕-Jf^ OvPZĪG 7n਀-}4͕pܲx+47*`;_#L;0gk^` 0J ? BByNI#YB b&dA0ZXJit,VЖ?l$\;H*k/%0 $c.}K -m6 `EVJvRLLJ:-fޗ:4  V{~=" ]11c4Yz$ǵ]\Sތ뀆8NpۉkQ$jCL>4n GAWDfU [(oWx& zwȴIfxW<(MfXT˵jpy˷vl(sk Uu[Cf圧w*Jgݢc13Q"NC AW0'&Bk5@kǸ"2rdSߖGk, S.V0CKp~cs>6utG[i b8]ݵ@ugf^ՒOnÚpv,e`R}f"].! Ze}wA6>mŴ߻[[P9E`֕áyn#\P4_9J3Ya^b yq&R{Ej"D2Hmm n*"ZF1>x!i8O4ۉ#-t,u{ܚxZ"!*J璽"H<@߄Aq-K00^A| HR\ 1}C9y:~Yt6AU QYXo΋! \ΦX ^s u}R;U}~J#h`3\'{@ÁD{bkC?)g m# Aq^8tp.F.:BS4Ip6,ωt %&w( ޑZz-7a\F}JbqI@G4? ĞTSv5 :' 3LvBm@R{ _n~?~s;W.;dO] ZS:O#^S5q7; `8q:#(pFE LJ#_7CcdJh2D9^ܑ$EʽU𽔭1kƟCLQXٿit m0-] qFByB@f G(}=&GsKŹ˒Eh X{+ =;l^sAWِ&?dD8QHZѷ\Q3uF2[Ihݻ}v8h,5Bl$QρРqL [м!*Hqħ\O1jHZ=$A0ҧbߺϾT"W7H)h#LT M2 U>ټ ~e5Y# N=}(I̟>+IvI 3}EXH\ʑ #iHenAm\xs .t@hq~ &ӦX&&d*u9v !h LA/xp#o~HH(v_ݿ/B+M^] ˫OK2@ZإPVBI|ݭ!X  9?) Eq3R^̴{ R3(N'lN5Cq0$;CiPiEHW"\1&0ZYI'qZßk<'e/$&\̇lг͖V R!P#ELSĕKzI-$oWWE<8&PLAndHt#D(q_*e8̀q clm1#jHzU4Lֶ%+gAb?w(9FRu#RKOYd$}}-d{t_8]7n gf3뛜4dňJpwV~<; ? ](Ms_Ai6#119D7mzz&fP:+F8aeuNF 8HL*14 I [qX{ eP s?,%ctoꠗC; b@tHz5{z`^X3FcIXIx}ؐ񴬊()?Nn]0Pՙey]+B%8`9gb}mꖎ~_t@u꼉3B1ฦ0ֵL.cS=6&/~ΏGYNSDѻv߂d&.iL%Z,e`x(Ehb 4W"|/Ptw{B ǾaZ婨YAc_,юHx%V] N hhÀ^M``i~}~P\WhKn&mDEi.vWR:iڷU?(a,j!Xؗ]cJOGh򒁦 mQfv Zn6!3N -xK*!a[vl>_])RgJ18\TkjsyW祖ֽN9ϓKVPM[a7XO]-D÷g$0q2m5/qgdsyT9h6SqR6 ,nHb}}$pi)/TϤjO92BHOI"U ě?hH9 klӵYUV+d1B{V"~$0rhPxAf8/6k̇'/@c)`L[SXcM{쿞Ás}O@ DA -eDCD#e_6!M2>Cm0n&`-pp /B~q|(KbݢV``\H Xs0]t!"sxrꄯ; {Xal1ΡmWOu}gP.na1C>xB dhyhQޝ1*l} u(`Gl߬Gkvh^v)HμG™6$f;z?˝Jwl{<-R&ׁA`[b2HFgwY3iRjZi+-.LVxk\/[|MG?Xù `kxc:p7)(VVFϸZ .]ekN5sN_:Ii| :y@BW2v[;+9W}̄1`(ϧU+aB69XK,o2id\]O&(w$mumŔ?'6:*:*vasϿ$Cg; sxI:am/(CssW#C-́r?\ia;GR[W#6J?Vm#iHoUxu+@g5.Xb̃#Nv!-"B93^ι_YZW,2cv>y@ <.l=ڃW^p7 . b'ʓxv N 1~<0HXjtkldy(KɕC#y,v3]Wx+QV?Ts=ZpMGG[C=n|sLmh”O٧|H ]+ylk3DՀF&7 iٸ⦞!T#*.E_(ztY7M9FKj SJ!qMlg 2Tm՜kx  _3h\q$2QO1?7R^B͊C6 \.วxN㉝%w5TP212Yu$Hܐ[%A׳Wʊ <րcZٯf]yCFjOkd\\%\0T6N[b fqM2H5g]J$ӏb 3oj(ArkYjX JNICIW"[}A2w^JI:~]Uٚ5Ooyrآ=20 ,6,;O)-/9;uMyeyxRt_*Ot[l̾bSzn+ųt1# *TV%*tW6>/^~}2`W51 ԃ-q,oq2dA0.޼n3ήc^6er|q{fP ϘgŊJidjCGH4_.+ neB#,  CPe^+єXTB,~bPPl4%4M;Arl \ Mڵ~]Db}z1wazT=ބ$F+q-e%5 o⾠21Wf+%- `"[ƞ%%*aUA/h>&E-> stream x=ێ%qD yK3N;v ðzٝ]Isvvuק&lvϙU@abYU绝Ng˻3{yݙ?ϯw~#):vO^/.Wz\yfF *NjlW8"Xzz{Z {1+7?'w#saz%q W?TzrDt[?ÿ8ɛwr8+OoeycM6d'} %*!7Otv?Ǚ^M @-oξxO!EI`X1$D?3M=G$4ʹX 6hn>n5>ӀWu3J!֢%`>`[R8X(o-`8@&es AMQ^-DW^(,q`gғKa71kNI@`$b0-n Bď]Rs&BQ$˯+Z=HLIZ=/ s:_XH[@N2uP(Fk0(&P*E;P@J#ْU޾No 3'(2#kR၅ƃ"E \%*leG+Ժ2:R(Υ6jπ&2KYA62s&@)"Ǥ,Rf3ǽ)<_cQ g*r&[1y%B{_nrA9Z=,P4Zǁ`IƆA"}OD"Lf@:j6u;"m<%",}!DX$KO_1YNY1[]afFBR!F0ߟ[ zId A>>YSgO4:ؽ:Ybl3Șa0=}U.ֆu|Ǻ?eM]$ôB`0='IGȎlL,7.h?#Q"T%S J). I.ZOfi%L_$L8` @2rK@x i61Nz˘/}e"stt>4/<^kK:Q-˼g K'cM:@C ;lkdO3z`ei`![)EBۍSvpQr@ҁyiZ*TtR)ǽ0Ł[9}AEijh)S>25 ƈ2#0Ә4úOek2Wk-Kb,56>q&<~B-JC $ZldY_TqڦsPz2@ 'R)T G6_|| 4-L K\ɠ1fz7η9N*p>CXd d5\Y[ޠܤc%t ?}6 VH{ꀟl oCy#N@[V͉϶aއó jۙ8(202A>lAZObz*kࢾ>.cI<Ajfni,fmG]@Wo{x{ ,2ZN; SO3Dij*$z x+2XЍpJ$=/)Ţzu/0sßςJB .Qp1`-_NaqT#{O}t1`ߤ{9.]Xжa`k/;.ߐ@իb]I.Fn]XoRho:\+TE[l.XA4{&^{יQe&1撴&9]%V l%).O>Ù#sz=¹d-S,`fR03eXnqM_Qr #QA峼^Kd"s MWlP,+%+경/UZalvLJf#zչJtAkaኛ4EpO+5˻[rLO.TMHktB&qSY+I\BΞ˟ %jMy,OwoӼ| o y xv0o`4 _ f*OΰjOE|;PEy:OӗqkP=@}yhߔPPP1ש<#,<}QYy:(E=O/Ss$b>7VY0fG&5(FJEFTbI'9xb̾l[2,DT;Y܀HdrU\?cJ >ŷ:Sfm%n^9pH|2ƻ$?XKTcEKo:xf8a.#Sˎvj:~% Y h*g`t>3AeQjowVB,l{[Ɣ]U1H9 a }EЩn H"&%E/тZW6wHyh1/>$i&XY> F xAJ[VDUrh~? uCE=sp5ʎ<+%/<6Aw:퀚TrRDSN$u1&y"&>yu8ƕ;M=}opXth[)Y$zcwvbSn}(%"Tf2Ts+7ôsKСFU*dzUV&hc;IC`.Сl da⟠,KLHM)$0m >&-%8隸o8?(!2I}{$L җķy{%y}r(`&xB\ t`hm$H eA47&dxcuW[ q1CZ04iPul$⠛6/9"Ս#b[.H =ϪO"$b]*h$7I~L&*L^:"(&x̾QEeruw  Ÿឆf ^CANa/3VUdYlxPgn[m wIZv%]DdJ O%DN( [gYÞmNW=vѶ,>"C wC(s\d:! wEy8D|m38$2R:. ڛˬ$6H 8_MÞ6ll*{~ XR9 ^lwN xz0cj-=\FXZ34I>ͪQo)2:r3>뀔zSDBwRi Ҁ'SY!\}(-*[6vA&t_uHrR}Nai&3L]i2VOoa#ĬPI5iU[zn j~VҎyd1GIY= V3Ig:̈7L6.3ۄ@bH#mCwޤ;+D}P RBw@-zXR@{[{$\">܀>@QF,`S =Q $ kS⣎4`Z#.\^!Hhtaԋ$hF1R6n$k_}%6L@q`~+N ͓"1k IN:O>ȂlSK3jmڪUjɥmm 7x.iwͬ[< XU.@.+zxCIfT=#ř?`=h4ER>_x\si>C~Jm*@fݜ '4<>QyH Ex/B c* %6vG nd {ʕHjzKi6#epDkKJn1IFirs>$Jq*Lshd ځ)e!P2`1A+*Kn4)(Ԛ@LZIf#VhI$1o=7l,R\u̓# S웇,1'c-{P\o1`ZҼM47ܫHH}Pgm1qqܑC`M;n`>9;xYL}LTÀٴl' d򗑝:T;'X[t1Sԅ29!@{n!booGݐHJ/Gr{c; j°5n|n'HI9z*MRUHosW2hV !,00 kZ@N&7(gWi(vT{56%0ƌCve.({ :a|mRB)]$d7 DZD?t?JA%okYXY.]Ajs[y9kYӖP{R( nK(VWYWcmBv͛h̹o=ʊ7*ށ(!:)owu=Y,~\mDt~[iFnN鎜K;]5wr¤IS_ [وK-OjŽ(q7OL@$X=vM)`eu^W֫ĩ( kZzJ}_h\\4XU}ܲH(k&v6&IYMA  ŁGXvG2 b^6 VĽj,nFFh. Ksh#i#Q]~chq.'9m z8j3|1a4d1շht%;DVls#.U9 ݭF &W;ZS}5Ik 1i3nŚlD+":͡|Hj/ƁiE)JsQ8`2$WdV97P`颀y<Ć䑏>ˣ0%^ȣ.)F:ٔa \EIxes#[3Ӈ:xKF,E O ?Α8QeDg ѹzw)Q+T(=5D4} (Pc3^&nUܜ70K54̿aԼسzs]sN.QE5sBO?]x 7׺[NҰ` y][2ibckS%nZ)pb z|+}c &?j谎;>KJ^;[H{k4ԲS ~¯Krʒ[K%$VW# ;|eJlcR;SFnMnd^f3M0*]0X^GZۡUK0a-3F.YL$5ɮ},):1/Lendstream endobj 282 0 obj << /Filter /FlateDecode /Length 6664 >> stream x][s7rN^p/9L|&_zSzMeע+pLQmG&EYJ|\)=pjFW@?o$7gWO7OO$ή68RMSnsITnx'w>YՉFn_Cyz]ߖ<}:My:/O_iy<}[s89U ONNv@3!득jQJ&n_` tv{K:i`൏!EhCx=ܤw.LiJ~wQ,`toEIU&@Z=K}W֋Mɝ8ss:ôl]5ߧπ>)ᷠ|}w1vლ9C{ GФٱ(5 7?,3 3rH~E;u _}aD*N4,GbO[}Rn^|Jm/pRZ x;i)zVxBhQ;>Hǰdl [>E UK&q2^H$Ah +a|{bk[L+}蔵kk;MMww2I;)D4/1,¶(FawCXEwGr"Whvuw raw:hENS/| Q\<٢Zvߩ7n?Sfw n@D)pK"7邙~`83F* ae{HoAV3P.B9iEVsV;Zca;c#f%&_$nnmޖ;`7nƒEҐΚ(ڠ!wS\;!c kbZ42F}rNx``^3W4͈H@K5l~ `_UC)E8aa@Ѿ/HLbXJWd"ļ?Ll¦325Jm|ĥ}[7r[dlwH{ a NY`ά~XmT{D0j>q:禿o(F]+ <:`KK{ rBm/^3N*{iLS98%5)Hx:[hU$(0kV3YZp'#)bI@M2;}`!I~Cr?y9(܍\vQ:;xs`Hmv)g!]SWP' &n'Om ƇЃG$K5Y̺ ,soZ y+2<.,3̓1B I+|oM4QWs|*wWAQ_*nvڀ,2g(􈔐H]ɤQ@5pf+W֚ z^/;4/a'G%m(oHv2%0_PC40sdߵf z u|YX 8][[؝4G0Nb H¤gj`I7;s'FI0Xt`"mk͈ F`"hp)B[&Wk+< ,o͍Z07S*'?=Nل=GbO8c]b\@ڊW Fʿ/@StLd}`u)&,:Zl L,\@5d .*`@mn$4x(Ly<'F Ir ѢBc4\7GAfU+X2A55x3@aK #f?͐f4CKB6--[Oq\y#KZ(+aQ2 z>;n7ߠH3}8KVXo!~m̘CM d__|'Rq@S3EWPnEv$҇|;%M0hХu4%2>nAgt"+l-wm|'kWM3ϺU 3݁4g1X ~f) 8ÐN Ӻ)F>O#by3 UNtV&Q)*Ep5?fJQ-sWsńe *˺J+[-M(y(Nȑ;4m3릮 8)$vE>6r}]NS0ˡ9eQτ70f[4()JɎ)іi<V, .}x&7]?}kƾ=<rN3Fĩ VQru, <1 ׫vUDcMs?KŹ2N)_ZMm\EAMK51X\2 hLayT|vKcT߲ͅ ^mչI'\WKӾ{_GX㢈9f@x0Lm:`6; <8C{=S<+ [ mu⸞uj^Q| O2u@}=pgH~f_V:uC&Y䘇hdʭO`%Ծ> X䬯]ǣ4B΂^wZu!y&5 .LhD]rJaF%c 8=`]yz5d[߯'i|i|\JK_Nn4xWOj>!FT vޟn7PC{uu4\]yRumR۠|t]ӗGXgXk;G4&JŰ& Ƽ+'a~yt4ҡagl+KB2`Fc';xbU A 槻{$Oߧ$O&)sCZRFZeT'zdgSb uvumM8OGg4%+)W9MA>sZ>?:Fmܝ3]>T"Sj'Zi"w~{ -?Z)1A7VSYe_!C)A-д9@i,ll sėX1c1劲̺A6Q-w5p!c^S>*u+tX71,ٕy[ h$R'H ֘#i7,K z6m=qn^N}%5 Gv%E4Eh842uLi&iVU6Pڄ{#3 z?.`ʌwzE$=TNkKTnZo8[UҨEF)QRo0ugN:+\د:W9?@"=ALnquqvB۴/7 {0Mot*ݢ,Ru;XeT_m\=+qs;je (iۺU -6hS gtf+Qz'5l]`]=>!t*,O;(|OFED{I!˔|#"?H{0@ YK=0[er`yxX#Yi`G0ȍ0kcncLV< ]g(M/rir`k AJ㱏;“\0C<0:.$]Q^aj3= xX 0b %nvjlsIb,86I FuO b<_ XߜWG/Kx|1RlV4#JUZ)GY F*#{,3i(ztZ͜ݰv@dX1xoUL#Dx(iqgIKMwq(~ͱ; p6NsIρ,'D2^t #T͹y$h;=,OQ=]J%s)@녱:oe"7tfmrk_O'tO}"(/Ws*-(7NRg(+r7(|eL3nM|L!MWE[ܰB.g$hb\l^Ӟ&b^͉́}ɞ/5_14qr/URvؠ;'r1ӣ-dzX;c> stream x\mq~X &AV$$&  d}w<:<4?zzggh( p_ϻq0^F}r1!ݫ o8J撒-J[w~ctn~\vO kbE7!tiM*(1`u`FGu=St) b@AtS8%.qK8ʏ@J2=/% :O{78%%PQb`čfY=[ 7HCD?6q?ΣGǠ n,JÈnlv1UUp]1hKL`1:'B3cv,F% F,D;Pc+>yF8u a[0;ViIP2Dz):@=*t,-ǮN%3N%[TJE(*|⛬TI˚MQܗfS S``21'Ul"fS LHĦ̎MW4$3f6cLE)xqJ,eQ&68JaJ!VzBБ8Vr/dd*!P2) mG*oMd*ie'2EMTl*%# 7jTFHL]c"S ,fͦ"ZERu'2K%Zr)JXMQ)8ͥ(h*Jů7۠;ĉsnKyZqwip! Pq*Ȋ EXo(̐ɏ}wu/İs ~gX%ӗK|`i'?{q]m[zm~2lGn:8"Rr7\h)+*Rz?U.UA:J8"bڿG1B%n :9{!叭룚{*K(bQ5ZenNQNlA,3hRWʝ<@G?R:xXi$7sUl8W KhlzzӞ޵؞m{9,49Y|"]jpӉiiPVjYW%}`i nВn4^#n B ys7t2aS:[ ŇQ(eިh}7k* 4"keX{_(g0Sb$$%2R'&lL[?LRt{'J_BElZ )k}L2u)U?xUaNi4FGQZbV3M5'^'N@& )n^ӫYєz*idӊH/P>{ϊ%h50 #M=2Lq2W&y|Y1{] '$S nz+ ~J[VP .CjIՏiUiE<5 QT-5Pj[:wˇYad|ķwQ8;r,f5D1=%)]AsХgT-RZ;N_ŪHՙGffB0Wm)rխ*<:r\D罼GNS4NF4|WݜX (y@hwd)_g5^נVXOm$^,_X>Sl.xr _2ݹ+^ߑgL֧*Z@4*e=4% T^ĠӢֈڊrG4E6HH<޳~h `nע~8,~M'֎ MNU/2hka\WH` w\N`R: =i)>BSfv=-TF𮖒-\>Sig1'$"8Go[Z*7uN~ن-帤nQiޤO6&E ͆ChYgM9QiA%'2*WC)NH3<3m T ѹiJtj]h}8d7Qx1 z>H&#ld7;R- ]͛Ń "8u|:(8[ 5ښiWYbױwCYxh汩+r^ƙ3v3v{I"[g-I0$H.-%:4Wa9Fڽt }ݲJG::ݞgs#% ȆrH1FVs~jc[Ns}EL阾lƬ}, *? 6zNL@meU'e>u ̩l}D}xeLJq3CصNK G5 ;]d-6GgNb->ѳjEVfzϬa5:;*f> Y:oY/ިq= )46.[˖"ȧc/JS$vgEqD*@q:Lm2Kd'iu/(q1)Fk{Tp1%oԊůmo%Z>Iu&A@m[g4^~vg<7{ky5џ, q۲Iw[7l|dT]yA>?$7[¯fb5""R*ws%|1Y z|8qAX Vƾ3xp􁘳!fBI1"T]eԛ~_ϥMj;КІ*C.:QK.)LxElɧG;Ř1&~מV^c{oOi=t}|@7)oYJ^=$B!XhGqrݎmP¥f A٪VMO=hK:託7z?>͓pa3FL?CCg?R;Rh'Om/_壯GX>m'<4F_/?i_#]x#,HpOd^*rv5>Jr9a$2u{꥔IwuόY=+i8՟X[\L+'l9rkhߕ>澪.YTOQ<Ξ/$H{N(T¨ʩwz56&AJ\ =ӧ;l-7/ԑ~dCk=e:"P'ZhaKVILr#V d nTyfXSC,n:CܡonBߓ2eJdv׆6Sn3qӏ@Gi;Yک&wbKB2^39#yv!ey8kw0wKֽJÍZt&Fۢiɴ=$uV{[3q|tխn>鈽Uuj`ytmoGMgq?kۭ^9uL{p5%ɬ^,}m/Å$A8%X2d'L+5˧q\l4=u67]DxJbTVaϞt.>kZ-Oߌ2 >?}-rnl-M5XK؁:>:9D~qXыuÛz憷%H|Tc2E֗,j{ڜkj!ur@[trOMӞd]~Lxiu Mo+:K̍w4^hh̋Wj$7op3Ɂi܊e ҆'D<|9ٚ~!F> `; _u1%h~sCeendstream endobj 284 0 obj << /Filter /FlateDecode /Length 1857 >> stream xXMsG [nn$JU 9u?5Zge\f6[<ħgLlYn? }و;sdm Nku7I}.t֤M F>vδklC]LFݛb7 7˷Ρ @'@;!s;G괨bL!B jAK 9 YԜuB8>tghgl-.uٻ8j7;~{35::UU/z \b!#$v>'BL]'sldYVe[ϿoJf  ,Zؠ?G\,]h&x+urTWH#"b*8ш*BԮaA++9&;) gY礍Xnm`SHA=ٴ׾+Sʠ-?/-%DXjX! .s[|^.>PBXN *C{&35=̴oy9- bZhH2'0dž|vѤ0G"8gOU/Pec/k"|Zhp2y[{I&dOϘLy10<ib5WeLJ@&gLTRh5g}1|k84U.xJGa>ANH34{ h 5j0/M!BdB*W00Z h&AbTy'h&!Qs'scAR&38mbĈFu=1!{`]R6 M+ ~h_<k`>Du }Br~}xb04 C:2Iwo`yI"m:ZFч4D7}2TW\Aq _ɖ;[C@l3kQ)9qLМebFm3)5zqLC_DPNreC4>nsU@Wn?X]r_&,C||6ڔ. vIޕQMcJv%q O2a{ڐOĝ$'J~`@Yԃq)o($w1Q_Mt|.Ƃγ%6bmSY:M2  S߈Z {9^``XGRL/0P@s|:dos=UIi9# F {֢^|(ߪ#,0U=IUn\K*0ud;rN.er 8(mC#EƣOflɋ?J Q ȿ,\t@$v TM c*O* +<1yW>endstream endobj 285 0 obj << /Filter /FlateDecode /Length 6446 >> stream x\YsGr~G8vnO0uKKy"C"8!DugfUWeUw<Khtՙ_~yTv,Xѝ>>ߎ$z^8Sӣ<+?< Z>(;W'ڙuv+ލRv »!h{/ඎ5]-/MMcR;x:ڦ`fGY^08u$h̵U5|\4:_:ԤFbӁ7@=3׈22&,𲒰2 QW0%4K[mdTHoZ1uL=УOT/L.Uʜ%Hە5k%ix ^gx *@)J% '$=Hck7ojo-` apU;uΖ<cʢdSciŷqv>C9i5 |O Faiz/y ;vgu-&&Oe3YT%#J-o\H$|)]B&wIo KթyXg]J֢e"sCTʐQ{MfHHhUFm B78=Zß'^6h7K>`x:j'`vR%ʈ4y",t/u@<[;d1([q F }\PA{nLNgmn *Zп:ؘT ")ֹ 6|VBݼ#3!hؤFQW%+D 4*Np5);Av˓p>\KӓO|?]WGL=}ȿdMO9e.3I(w^&0,ɤ0 2*P 5U^b%pGxn:aA6 eA} 94fDMm6(h,}gT`H`P)8<щ4P!vHE§BAb'<@.`G$[ #NsZThR%8D&vj-H?A7^VM`Ml ӊtRePvs6.0hE-h $gcg _,N})9иx(@G}(BVn@Dp@y@B2N-GfBbNrdb P~%q]0C˼xLw)9 rߎB5rl@ *.\lmP`Z7(Ֆ;+ 1b)L.`=x) @+Kp#AK.sN;Yqh.VtbpړU Bt@P%>ZƀW{ m0yZneAP&6~?ll_!yܻc(]X헬Ld/ٓ1Hwbit Պ*E{c7-[h1 a> t> (m 3M dIR?HFA+͓WrZ}ɺ?u<`[$cf՞1hh) ]ho*WbċN*ذgwE^4(tC0*SmȨ>%Qy^gy]A56)x'}iWܐ4ҫZ#-Q$NFMpPkI % u857GO6H_1&y9s?QN.]ڴ sΪ'KrnA54(ep,JC c6*4f'[d/a&Nۺ7\F{a 5|V!3 _;?"ݤs6*Ar"2!!A>%p?W~EJ/Wϰ0LRR!>0u8Iht8ipψ :EX)$lۖhaxUYiuʩJ0(S,xS#i/U481ó?a'ɱ Gə=90ِCA *~hlS:2~yRH'kՑTL#" fPLu)Fp51hR_0N#yS2=1~:>zeYj»Ex{ANPpҖ=Lٔ!,NE;X SƏJwd`pD}'5v^ Cg;.X\x^k#Mn+y %?J+il Mֆ: 6PC'Nk}[_|Q}KX+Mu9mV QA`S(h c-wqXtET,`"vs$ji^+v ioq&z 4raqDǵ7bÈZƕ|(v$-]Ӑ?fJU~'řZɾV*ks_Mx>) |]螤~@H[0<[2}1|20Tp/5!d|7~Wu[D*"*Z:]̀^v ˛%ĴDujSRos 4{5xr2f `KNv [2k +"װRg9^ԞeM,W%i>EpjmR'h'խ@zȚXR1@N P-X9yUl 嚤ʺ-{XG Eϩ$+}i>L\(.Mg %!*Ҩ,ջT<%O\h"g&#~^n>i9袼rz]/*ؾK`f높YACJ))A߅wԟ6ߕW)ٛ'z@\ix<NSuh /an&b]v~C.X,Wݬ3NZ'~CSTY!n)>Fdo)0ۑX&ߗDNli|Ih,~ltඨfT eh|'-2gJ5~iQk8/ȿuf80nBy޶HESeLsm zGw7sXL;T"ojN\0n"P;,JXm+R'r9 2>fNJqbXՔ#G,%}bq*{b6B-M`sȮ ]1l%8qsn/2< {V1k ^7kM (20xă})A^gǽ(3Ek tSIzx#X : J 1@6c#Fn1JJ뙫n3syw3sru,r\)W&K^(WgL{ӽ?3<뎵w1#A/ ؔz\*Wru\2Ez޸`T)^52\=e|ۃ$!]E2jiopb)naG4u?# >ʎd2VNb72blOF`<6oJ13Y0Hᠨ:nֶy`ǢMd hp(IuCtpO ʯlA)b00߼2WGM§RKW'`0ѣ{OC_4M+dhr)1sIz1<:\pO!zٽňG $X _:ɝĢI#uۚ˜#x$mt:O] K_x&/g[,NtQ[{ MF/ EfY+w@t"p^H.G0vPFTxI:~Y'g5ҶUyqoҪS, ZI% Yph3 ^{fAƧl˙_Ͱ1sU{˵/W\:(3X|͞(jTG 1pGgݿN+t|Ѧߗ6ܶv&O>*vo80u9?,\i#< pj݈Eݞ*JUx\ɸc9T߯_j7{`WS- \8ѩKQ,85cޔf)XMNc ;CE>$եr, ' K!hqu ATTy=# #2> stream xzta222-tB/ PBwބ-YHrE-7cN:!@WM/o}ZZH{9{{7J X;q_nBw{%oOB} x~ ԗ.%)G w>q̙:N0aН+\}<\uA;=ãG ~w#""ƻ `XLj>k= ](|tɮ"ݖGXkڝ|m4iCM1s{;4Q$g01V˖Pj=jzNޡQ#Hj5H6Qcfw\o>a^ jzг8[D, dK9uu|1x`G2bUCk㰩 1|-{ԈҶ= Lh_ԵCڗ<5w|k=v5`6UH&zKRh%PcxF!`stpHݢ2ELY= |l ,m`mZ;"_|uCOY\F;`1yP樶 *ڻk/A ZN|sr8_^ BA]ˠu4c\~ A+4,/elضo&Y`@{MvHr~:Y1Bn,RV=mqX(y>-x2_{ut]ʼ%J!kX'YoIY/Ah5C 6&2#? j y?ˢ7G}pXa1HChp@աֲf8;*wo u:nRvIئOΤcU`5 ɞ?(2B&W%x&.K)9t2cAD{+v|C 9dɊBo;5.Ш4%@W6ж^RS8_CI-4<DӿG@f j.uěw m  Dv$a!kh(Ylǡ2T Q' }鱐 Aw9]OOME`\W9- Rzc(q6ŝlq=W2_L űsl=l*y޴ψy׫,guCKXom@Gl?ˣxĿ G^I)x2Z+^[ˌh hA\~P֡r/pש!5^I4y?}F65!-;-"Gj8L};u_N[m/\[^mec>H3eU~rZDE}pT;<<-7CG/kX%f-9bo0%%aI!ְՆ(^ 8~$Sj/ͪ0H. ȌS"}jXZ<(`zS!;}z.ٜmFz'ܔ&3:kn2C *N||`r}c4b_iU}Rp[r2t&T.UL -׻cm\$@]Y]K߮T5%>)I/ZfG .{OCqd pIA3;59r T,0~:YYǎ87pH|٣ O#x%,#);&uQ4|ժԄw AJ#,lRZ?$4C`+Z RZ)-ELedQx4>ȹ}NUpj7No8y\Y4N˱sjM)x&$R_\~b /?$pPz$(\_8y?*}5W|m!b J9~ut08 P0hN \nc,bUsˬ7h#.f٢uJ8kO2FMň>%gs͂'C>8JP7bzD"\'I*Hu$@wa_Eh3$`u`h=0!2 XHdFy8XǠؕ&`Qɢ9Kw\'d1Mڳ5L{h59F}FajTϬIlRZIFTzu\QC$Q(S549?}vF LdJt>'QoU/lXA%sh+<.Z@h=n`Eu"~𔰏yw'!b4l"aiN65I%OVq>&B"l𦀏4K+=<{,ځǐt)^)؍غxZ1h2rWv  *@y~.ٸ=]-:m[4^A_x糈BH)QʄET+7~4m`ӳo5C\C"mTsj}.D"fPoD~oGZE!M[y#(n]khs9_ )JSWhdW75VņJƒ ҠX7h'/^oi -4nL/1=N-S O(),/Npr:)0.i%FN)bUpg٢?wts5z $zR4~iL@h2 _dYxء=Mt3;Lݰ`(BK Q/UeU'R1j3ّ͜UB%h(<.G[z` <|a{xY<'p۟>ſ7հs7bX ?$ gå@ N#ynx[:!YPo߄'qlލ`Ih¥hF*6ګ,$(`soWW7sA5:YL67NW̴zu%wIJN_ fɊK/eXs^g=#4uYj8pib*AAQ!NG^VXVSSQQC24IhDYPQ>}&ہDs4UdL세!h'8D> &!P Jr K<зOX% i |(Djͪ߉>u$UkhˈGQX)xb^M +ٜsG[ef Wh㬍T#xK .{0II1d6l1,2N~ix0b0y>AbNlhfzj'6$ BQRv~cZ#Imض_s\}K⾞sʓ�foWuIM%\nx NSe4TZYCfA#{,阋28ݿy!v{].1 @f轎 OC)\G/^h;<us4qg3$x bNZwt y**}UVro: ̣|ˬ+$x= bO<SR\cSV_&yX9F}Osc G/;U/Mcޙj!Ƥ7qXtB~#0NH'&քHTaHV!wdPiZ4 Z3>T008 O }', wZfɊ 0zj.Dh&;\rBFH N3~$ I&+EH}PvG~fB7,5&Z/O!C=zң ezZTIDֈ3ʒu*i&c$0Z]F[t6q{VT0W\K6|XT`ۂ*_Qʄ|iMsy7 ]$R߉x/pR@C`wY S|$<~3t~;VO>k|k= Mxҩ #ޛ;>J&4I&p꺑/-\dYLβff+ޘ]+~i=]wVk+燙ӿ1xh]fh?t ܁bSX4& cqK G |Q;87pWs_>}-6&885Uٓ@:wb<尝sdb eL3ߌ'=|r`QH`oZ?)EACnR,F/Sr6x*\ P(A"w<Z?*)ٸER&A[qIOƒweo-O37ԗ(K!Z۲P-P>4iwe$!~Id%c)ɿ[Q]Et-h4\&Wi TvM@Z/D:sD@2i"s H [Lw|{oFuY:{HEU_x_y_hw/>)Q{:DsEQѤeFJ7+i=PnM,bJRXj8z7r0jۡ)}bV>#K9JV/}*3ˀLMK͘{pPRUiV6[^ ~8-Dp K|6Cv~h qA_~C:yEXی%`!2sq,~`2tu?i\D yIք_Ő[2g=YޘY"0rBUidx/Dy9ᎢnyḤ5,@=( ѯ>moKe`3:6B~6m@iDDqqGމ R .<<`+"*Ҡ V_Y oUK A!aaj&~h1-ld0Pf{_ il6A|WRA@و~imcbsSɃ /-//=exk3pXOg$N[9o&L!L+a\4}]|)ZF,hD.'RXw&_Gz%^oS^L]rm5 _!Xn?ycKRCW KR$BDe^.ۓXƎvGol} Q ZŞ%kv( ^!(5t(EWz |!݉M731"1Q6/5L*|Z!jOs5{B~­[>W7V~ Sga}sw%,;m-co|ƨdg1p!x)u-p!td:H,vg]t0>*qo V, ~O{*B2o$Ļl_C3͏m"P%bb-z_SzAk.!}%JhPGgDDC$g@׾TTYЦfK:',2t4t42# OͿ9&1Fփz {jOE*ش.=ل/.8d Ng#AéhUykBd "3;iש4GeRܪHm =?kcW`Dw4x^Ig_=SѐTy y1%/FvˣM=/zvÐݻE}>c ެendstream endobj 287 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 680 >> stream x%_HSas8m[v( ?1ff s/ qt3J@8V$Y$0"XZ R"AsZx>y1C4t! iq~ SDKxyCqo xwCN؅$Vck[Sљ,hi` }lahղ>zxY<\qz}KK5#Yt&6V }M}~_cc_B2g9BP&A(QM(Q?Z|[P:J)!Y+s(ڲK稏0k)%&7vkHI]n ܱ[8~LU/H_0$5P3i;eDjjUB|TjRNTJJޅ Q=(  ?gE:_A e_0QPJf+fPB'l$ih1 8dE{4feCFrXRsw@ |6Rǻe6Pe5ks}jՠZ q#~uwN]mec/_}(Dk0* +4/Vc-جl3[,LL9C*)AFPḦ́xsX8~E.!OF{,endstream endobj 288 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 4180 >> stream xX TS־1$ nyW:8bhEqHdY@$2,""jKV֡PWZ/ ׮uVl>gow"a,0uq[9}ױ+kR J V-4o Ŵa#HB4.;c#o0ydNN }BTH&#t[od7##wΝ6-&&f*8bjh[&;D;Zп?\BwFE;0 3qaȢPK#FF-QmsN3gsNg(Ɲͬa2Zf rUV>tXdnv^8R1_ |߈U& ?g|=Ytus.<=xNpf$|c.gT۰Dž T kG/f˪U؈]iMFI=Za!ZIZ it2{(2x0;V '>5)*oigih/nMOg ח 6IΡ&Q +JXqrYB'd*Co@&]E,MLP!YH! ~:=7'^8$\V" )yP\U]1#$Oi0ĻZyMT{Gk|cQzMq% ս?Ul叜,i.wbGƸxT*+OєѴem&,9)hbG E'l?hC*j%$)`\QLxMjYϴ=2vO>AN>sp&v'k 6K[;z3UQ*'sATlk#fI?Ϥ8/4$dM6d{pd"#qHT}6ݘ D{*qE6RAXvhs PR.(;Z'Ì1ލW]'OAJ\s+ Ja02vDeG VrXmQ!t[xLbZ">">'u5^0ϸxUADp_Bg9ք%?QYIOh*~Zn-R:ގZkBj=<8$mXEDFuF(L\4OvdԜ!K\kw1kp$dΕlu@B]}⥛(Z.<3G O7TtzYv %dx mt=>XWI"6|NX?a''= 2egLHk /<{mvҫr y =>5S9C.h{dރD!CIe;Nx}lbR&IJˏti5z|Ǝ0Xf-/qJМ=J/-힑([Jو4#z,J*9L&5MV})d-C=2%5eppݼ\g)/k4mp6sĺݸ8ج?/$c dK0lF\5?7Wut&gAАTv(etyw򿭯EYD"}CPt(ܰN5)?d 6,gY ~BA#v͠bDoQ[bobG%j…p'ʒL=QɹxsUJPul"#*hЗttgCիS -)ӌ?H5m*ڭ8`Q}u)$3M!+Wo323򅂂}55nh6wN>{wDRCPEp2zmqNcNt= $ :Jn FymGD/jRR QM{^؜o|ɴZnw:wte[G'T 񡰓l8`,mh#P2o)ZhWA1+mJGJ?7!uN\/2|B(5@&M29|J$ėK 򲿦rj 26r: h_Nv)EhqzRpl .ccAƠ~6t V!Б,3,2hAԉmh4j>ñ077^縄+?\ʾA/RIѯ-'ulvJї Tt> K.SK}tJq}:hBrrn:iY2(`Yv(Ap%,ڥ,JPm]^P-yI*pky~laM($XZ.ؘge*+L+'_endstream endobj 289 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 4905 >> stream xXyxTa Hf(m)(FKؗu/d&˙,3$d K0mzc۫wz^BbaTo8}BE43K?3uV ̟ܹ KSSSdYy)2OnTiL?sqLV)(\:kv|T>$,=-|Yk)y#9PWX*K/O,HK/OMK)f楤fR-[ "[U*߫HM|-}mFRtCvŋ."~|DJ X+X X(H,l$ +s ^ X-5W8O LL2BB* cHcGԈ61i13?4 3&&N#X2v`RS?zGs>:b剗XSu{6,D_^*wALWd`$mrw(v퍶:WkO@qgd'nTYg\-d ۀ{M0<}sě{߶FVA석 O(*Dh<`lAֽ:Dȫ.T #BN='. X 8ꂇlBSM=t CNNfPAMB>/W%BK@N0i@/{w:|hX3es- 5>gHџ,f i&5ePyFMk+4%9郠O:jkV} ͕]~hBGk[V?,xddӹPNr33@ZFx]]o4P=2tdӅ Y֜@r;e"?4l:B(2]- ڴI,mU-:QЋB?QB^-rTPe|twSq kuOÝj@tfn Tj&m8p'tv?8lY4=f4g&v ʳzq٭0JYDsc"\&5f/.J0cVۋS!b!RƔkpm~QAqC4ifbTʩ|`mk{tgrn<.,EfA)p|+m?Na!bW$^"B{bB+y1=N婠 ,-l4!!^Lki2LZV=ӒK@iMqy9p%mbws }87;U x(a5?zzܖ z%3\q Hz@CдPWB;2VoYj0?67wX쬃Zơ1)BlS&G$QC"r7FAp{Q>?+.: XQbqdʔ þcn 5ѳ]e,b:Rn>A̘Rf͑޳wnO׎LN6w?Z&Do2f%6b7 בuu!JGoc_`&hPˋ[}IY2Y|m'iyqq.mD[[**RvwjnVUW\dy+I琸9lқ%9@Uvta1c2 ]D .G_\D5V冚FT[M%}:m4MB'Xso~nYT=#5i[3X٫vf!ny;+8%>tзUpSĶ8 4TiIQkR]LU{^^ uѺ]ڃ6/r-1:)TSxJޅ]urj[jr4='T.kŁZ<n4m[3.h\+ uu ?qdq%\z^lki;w8/O=~д9 Nl3y!xŃO.Ssg.د _/_e@4\L0 ތ[]Py jԣ#=uIYT(Eu@ⰠAOg!h'kzܡ86Wc,kwr3iC7;ٶu,0}p561on=};Vc&iAC:x0S*%E\PWϰ2|ĔkG~TF+1>qXUSI]Bl052t7Ya5 `c_F£S֢J1Ɇ  ‹O~a񟿧KwH%@?̱|4c-7fO8ۇA9J~\/h3iJPґCˇVgG@=L۟Ow?J('Q_[n>T #ha}'wWA:o9|wl&MTzUp_[xѝ{*f摆2ZS?J> Rb^?$&,Vw (4}W3}דW#ɟnF\܏8 hz&hyDD,yM8xzIg6dɊ,êZ4|K$"=|7>{p_o-2c ?K5\$oۺܡW}K^b*R 'oJ[z Z_N 4H,W'밺#gZµa {yakNf]KPUrΊ^jADԪe}o~r/}n ϥto~i7]d󥣗7l \楋F?]q}%:w+a5֘U蒽/T{Kmol/%%ɕޞ:[ao_m7Rt' 0vZac@sWNݢR^upEiSxф/gqWM=Wn]Ym&,Eƨ\D7M7㠚nڨUC9q b%uR80Vi}]+;ɿefNl2W~7m|Je0RRPֺȚ>/b߀\h RV 7U/-]Nbmޑ'!AԱ[o -ɀ$K/ aM8F1\}3f7 *ȍ&_jRc\ܸ֛-.?܂G o@Ʃ.Fonn 4%͹rKS7SpZPögsٝ 6\IJoy"G&|wZ> stream xY \"`}ZתVpP DEv! " Ț KXK%ƥEiL{yaK;ss|;ߙ(k+J zzyt1;Q&J^ "[릱cQPfFRB@Tʝ'na /8a{Y~Tب 8]S9)ͩޘc| 2@^Oa!ۂʷsnt գ21kl55PcO>>plk0͛f9OE?}"NJ0[#ˮ~ LE iуA^0D]k>{ 58N&YLĂGHN8baa>տY]Zf0,@YDnL`Xѡ*ܢ+PsS$RK|?k!љ C}-uF1=uǶmzf0?!5) 05,,Q&3mn$.Mb>| ඍO3D?* "rF{Q>:p5 :(`"EՒz>m3'+/* DIѻҶc.3pڦ%QuIr wsU![\e{][dmxH^ji\*Em("L9n$!SV-lMIk2KM@ƺ/񸭯"0]|m-CEڜ=1 ]&wa SƬ3'VL!DH;q>(1 ^͓ 𑠁!@DCtY@P$|jSo^{x"l7_!}RP`׍lbc{?u,4*Y+&{  <~hQu$b& e[*3FH' ^A@iqyfdwG@] H# u!TTpo_%LW:i]ZtHs{>ix e$½T_0u*YD2o'$M'X}8JOΊIb7"fߞԃ^D)ju-bju^A>x;xllݫ?V#4;SGx61 %<=$GPU\+CjĬ;HzԢEa !DGfJ\^y E=iih*+**- J2=s1ԳLuJ$3#"^:mv. Dh;1](O4vtMҢr悹@^ԇ8K ChqGc𶊭/bXG~3WNtA@2ZsW_XeNPoTyˢJWKiXճkO`95u/Y /PKֲj?Qxؔ x:XpF*Jk=7zgBU;է0[]$ݘװk-ˍ.I|pSqaܶu>D ,QDiv1e8d7u3z,Q=h##C G99+7D`{?yw(NFpP^|Nԣ뿵E}40UI_`"V /xWdxMZvv^q7ke7'ݟ`{;џc՛HZYp(˦l' 3MOlVS R"&ow@DdwN ["qGweqVb&)D=+l[)/ Fn SGE>ėgnCQ6%5=!~+p }y <#,¶7SkMޕ570N#%!5*/&qN|oU.jehUȬ#N|ѽt|>l=:܇_F"'l">)=#= FƫIZP'F"4^ FJ&< kW݄$I*[-oAUtH!ZAuu .6%&8|LyZJ3Ŀ,Q1{pxm:nnaw .+7܅Q }/u_=T@\=1[У:_]i <0 D wL9d; `3 oͶՇBCw6EknE\3'l>r"IXXT &ЉN!|QZڭcQyZr 8!FO|[QRGz md8ފq1v|fcY,)"`ؖoO3 1TUIZ. ǂr< ;JN@*& XΆ%:Tb{5UynOLޥ 4*lC28](WPSNE/Zv09j}p|_N&. .SvlaE6BEL2&:MN2+5:)5{ 熛:կhl'g< RI 0ǷOD<􍾮a878J鉉<جx" IYUFyu{\B4䙋 ="_Z oXY(2 5Z+C F1endstream endobj 291 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 1973 >> stream xyl_ySBpGmUN[W 6 ;>m38>ع%@eTJG$ʺǪ7H{Vi6ix/}~ca90ZZUԏYElW΅6䌬o|ٖeX&lč R~Q ׭[[5[6~iAZ-eZihCT*Z_R"WWJV ^( @!8.lwW V/ [E2@/j Önn"4465w~9=aaX {ہval eÖ1?`փE霢mS2R85dQEgTm^nr\3!wa NG`9w!LHCBVzY]< df.4|d Rl k P7@wBz`IX{; =z 5sݚoV2aQk;>d«\G \EcѐM}1wgГ$ݩ)wTvUjR+4AWmz볈`QzfBjUM-p"&{*_w0~P*:^008vg zeN}QDE /qw&F_~F{orV&jP!FR? 򾺶3-I~?>$1q: S!nkLXVЁLf%+;OsM.X~;g+B~ҹytOѪKB*Kso_4-ݓp3M à-nkЅxn@,J)W'f0}q/zBj+{Im>F6~A2Y̙@Ev .^Lv#a[w*F~)=b}=y*qklV: eO_ Y 1nP׸['<&l:s#H`K2dGN dҬWнTʼʣ^N"$ܘ^hhU6k%au `<0a kZr .]=AVvl~Ec ]eЋa#)fcǻ`P1._.K(mG0X·.jO~xpO;Lz#TkBjX\;64W V1alЁh ._[x_X(u6l.7I EmmPGz8It՜-& ࡓ ?Jz}IҟC]A?>Y{0R0s6;xgI{R&v-tU'ʰDlj'O,&/s+4k(>'ė/,*%΀ޅC'hNTͫڝ^bp{3ZfbT|4i&L훗LӡxC8\g6W LVY\{#NST 0g;]}Ops861ygjz"!dꪌFP.LHdrCڦCه?L]@Q gب>ʅ v 3 ^'|Zdp9hS e9(䗸֤I,j#D!unJPeƳ鐋hۛ hWCv"-p$"ycw<:g;pGIȪ7ut6|uw,$ qjD8=bⱜ1WA> stream x]1 EwN eXҥC!d 9[W| yK連ެL:_t|"> stream xUPkAɏM@[iHE1=IOk:ml&4$$HXk6T\‚{W6V= B(F v~9FVsfEk_,Ffpi Fs?\r߉f_)!ߌ>( c)5vD;n+Jendstream endobj 294 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 984 >> stream xMmLSw ɜ[%"l &.A څl;(k^$mIˡ8y!--Z4{a#,d,) sA^4LMLJ}99ϗ9M)(K yͫZ~I!EM[@̀: K*ZShH8kO̕Unv9:]>_hlf/1JU(ń[4Jjfe9L՞)* 2vT`;)5_j jE/Zk$Ɨ[ EQlΞ)yjJMPT|jcLzV *=I0e=xKpT,Z*t_,)N z ~t#NrCSf+770S=tBYr [u&`7s9!LL. D5PlSU ZR9Ԏ[;`gk+j'_~Y?5=~%1&V&.z:endstream endobj 295 0 obj << /Filter /FlateDecode /Length 246 >> stream x]n y `*.MӶ `JM}f>c霗Mu _Xk@5eɝK|~TtSwNLk k[ZCJ:(` # 0 )pEUw Y-Ud[#sV{ ZO3@H'zF2k8|½V̛-irKR]螘}#endstream endobj 296 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 1587 >> stream xUlS;CUD$p<=شmii޵Xm%.b YP4Q<g<;xۊܓs~w>(/#H6mK\VgɅIτ&)!d/|׽x1h\ J,)$Ec}:ʸк`U~P%@b_Tmb^Q}n3m~lOO=ozKbQo\E ]XZAOh~ڑDO}Tq> PxqyEޤ?h/3LgnFV*SD;Rz_%K~$։A$ & ކUx ނmcЦ* ^Xź/$tFg#S'z˷l\-Uk1/5%G %}?$\EͯUx}E>#>dx w/0 kcCxhdb,PDD X~&8C0D <=q}.E!bCç;u7VJGoyE0@sE!Rdf_{㋟}p@X|ay/_ G#xunbo\C o;,_)r!Vo8[.>'s e?o_RIJ_!OVq ]'.- 3)I6> stream x]O  AU%]:!t`$c׌՚HGp:궠N0K؉jʫI3ޤ R6JX])@m^bendstream endobj 298 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 1777 >> stream xUT{PSW@uشн$)(3B-j|2LXnBB` B_#Zajő]jTw][;c;ut3X{w{}wX&>aY61KssbrWlj2<I2HV,Ă'żb#cfcc0'0_02d6dWՍrSU$KѬV?Qo4ZKtUm:kRg krQbcZ~ժڕf7Yrkzh7*zҨM`+\Y]g5ZZg1VhV3qX8grޢ+1lL!&u1*CymujkPn0R>/s>0Onya3ջ %E5 +X?`l͆6}l?;,%sMgqoݐ\{ W|^~g+L&~G  dbAi Dor> v/xUtUoZõtè|@?;BzuвT@G U;3(,g!?`,!H1I%nOL`lعDa]+F!Gw]F-0P$۫t{p ffb1uIx*h nyg'B;=!,Ne^D a+ـ`g|pC!襬aſ N.u,M R&l_}=0ETC;Oo#qȐ@\ $BKfsjkӡ֨QU?bdEۻzz"=.yb euS&>ORqbuÉ]w'KSN]Op_]j+~S< -'v 펌9(h&q^(.t;pd6YX8N!svè8_Oz#q)S6n:>i-qO PEnku;;g\tJ=S )|~5G, L$X_?+;j8iR.vwC=t`]RitQ9yn_7]{@=sL&[A<BTiP :AHk~eS㬨HWv [O%Y^n_SYP˩Mr2)n`_G;REȁ4.TGiM, UFZNK2rFT$BiuN>u~Q\vNx)LDz,# 7~1kAg5xl_=I>O@jXOXHX_@L"7m2w$,m競V2L~zLoFµC_czI?g!lV2aXN1x|_(7%%'a_> stream xwTSϽ7PkhRH H.*1 J"6DTpDQ2(C"QDqpId߼y͛~kg}ֺLX Xňg` lpBF|،l *?Y"1P\8=W%Oɘ4M0J"Y2Vs,[|e92<se'9`2&ctI@o|N6(.sSdl-c(2-yH_/XZ.$&\SM07#1ؙYrfYym";8980m-m(]v^DW~ emi]P`/u}q|^R,g+\Kk)/C_|Rax8t1C^7nfzDp 柇u$/ED˦L L[B@ٹЖX!@~(* {d+} G͋љς}WL$cGD2QZ4 E@@A(q`1D `'u46ptc48.`R0) @Rt CXCP%CBH@Rf[(t CQhz#0 Zl`O828.p|O×X ?:0FBx$ !i@ڐH[EE1PL ⢖V6QP>U(j MFkt,:.FW8c1L&ӎ9ƌaX: rbl1 {{{;}#tp8_\8"Ey.,X%%Gщ1-9ҀKl.oo/O$&'=JvMޞxǥ{=Vs\x ‰N柜>ucKz=s/ol|ϝ?y ^d]ps~:;/;]7|WpQoH!ɻVsnYs}ҽ~4] =>=:`;cܱ'?e~!ańD#G&}'/?^xI֓?+\wx20;5\ӯ_etWf^Qs-mw3+?~O~endstream endobj 300 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 5150 >> stream xX TS־1zQ|^ g:VPH 9!!$!!¤ XkۧVVQjVl߳uO4{[ $}~=zM&Or} q{p᧢tRA?ar ~0?BD ☨hIЛ{M5k)& Z)! Z!qAE{b"%AoΉHfO,G3>(5F!2)R7hH( Zܿ%բb!A E! KK$+RR#vJ߳zȵ7l9.~Ԭig5b֜3nI bXGN'6hbB%ۈEv"@K,&%Db)1XF,'VS4b:A&DACD '^%B0K>+D_1HƸ~D:O[;cQ;=l< Ǒ={6S6^޽{ϲ>rѷo3FU (iAku lӀ~<$rH'CgU P,p=gفNj7:̑R dG9Hi"/jeShL"p:Y8RBJ@8ؐX*ד.o-$zyR@}(qWs+t`piG$<w[;,"(":m]KS|-OwXQ0WSrt+|i74A/7 9 9~wgmZh+-p3D$v‰w]Evq<+A]6&%u|)~)Xp$@ZBjϭPkaw#[C1y N^J@44V+ e֘!8/ǀo#J6E x+;N؉nV-حV.W؄wmZ(0Ƀa :u^:PSbTVed*J3⼪8,c]7zEL&rc672;AJ^V*V3%TصNzO ijd4|q)iԔQes 㖯XCy~sovÃ񰁆HM*%lM˽Xm5p4^4Ï)B,6|QBpf9rni83#n LX ҂ѨƦăxQnfɗ\*,4f{0xPj}|5k暷o(㐼ZhsA[~]I`Jr+%478w[5.eΑ4JÒxm4ɜ(Kr/Re`t偳/.v.HSUb #[XUࠥ#y%!gu&M~w%u-"GO;{ܔq\6bwrLɩ t o`!z6& .ﻉߗn|$rW!p3Ɨ DШ&|R{>mTh*ŔEY-̈Qns3 ̋*4} .W5L%# O;.\<@JXN*D6 vo^1Ow[pJDAJy(2pOZmP Qzy \n9=jP_7܏fcJG=oNxx3^|$&0|@Ymg9a{ +3EDj7߻krf/C/ 50IE#@)A`d&Q@|ǵ*m؍ezؖcVQ_!o Pdm1űzcڔQ8Mc}IP"L-|!|wƷxāׯ] Oصmul Cd{ { bA*Vٲ[S_:Hʽз\gkA+ao_ڻSwɛ%;Uj.UJE/е{7J@ft:wכMul~QjwBzum7,b.ޱ>7DצEq8іhkdЄg A㔗Nɿ.FEPsUFTrut@+Tޞ㧍Z+Naidۣ@$fmTh1@!ZR a4J1:Ps4C<0!'ѭYelB}ZȺ4S\gNO݂4a&Hi+,3"F]ܚ2sтW(,, pz*+%C_,<7.,)8e $Z} }7=g.l|yc4jBw\3@zlnQ6siJ}KA̞Oע Gү!$~>_M3گ񎏎]г|t{;@ f\EO\̂_UvUx+˂(plALvDSZb=ՀՅS~Ϗ`窖z0R_QϿو9o:^o+Q5&ȩCg F#JEPY{ÇdvP~ K; {R .'؁UХ ΘjH͠rZwm/N=<+oѸ͋E7V5Յ@ϴt-p$a0%%03"lu*t\^4|[0Sb\ZعJe8Ά\rm D4jى4|?OƫSNΒm |m2钂c{zY*GŠg("Mu˔& <",ٮVTeEyuevaEfk[;|K[@kkkLfFfWJ "1!|K6J KA9*Q) -Q1Ne%B5 K0nU*Y6HL̪(*6\β3 gK`3 s oJ=лx8 SkT2 {ίmT]Au517MXJJ͑Jɼ*,ov$DCUcJuͅG]nayM|h#f8Y GMX+d)jaq4lf'J60:&&>2ޞty_]s`@x6p__0 1ȂW\ zhl0Z={Nu>dtztJKJFBaЅ!*.E Qiob>!3̍w13ȾR./UXI^jo_?A/gebendstream endobj 301 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 554 >> stream xCMR5$u.  ]VQmqCopyright (c) 1997, 2009 American Mathematical Society (), with Reserved Font Name CMR5.CMR5Computer Modern201u&< ַ UaxM{7|Xͼdzŋ #(=)Wqlũ΋Q)7QK>Jcme> stream xX TSgھ12 FM^ZZm[ZKX˾E d @WvPTpZV[tѶ];g|7^s/`δsNg99 ps}}'g;6.[q>3z?6N?.raĶ_Ϟ#P4dg sia -[Ea/]2l]fr01^9>7-93>(L- [tZnxc,ܿ$+' iaۓ'''% 6~%gers6g%%N\z9s7Ŀ\9iKrԴCD1J#HbEDyb N!'o6W?|WIL7 }0Ό ~3-./c^ (l6M0@en 685ujJPi1ՄwZ=wPl$UAq 9H0SpKx恚r%Htf=RЪ 2kAl2/Rx^JF[z4T4cͱ}DD+|25NRZJ)/dhzD$?ݳI :)lT(ȕfJK,uhZ˵'}@6H!IRz-;W4(uj{ GvE|!̍3>z3|g:DSx]2V<0ˣ<^G-}lr(Os@thv? j9cvB>桇$4/wl{Nen362 Bky7m~d\v8vteelz4>Ο4u;,=|'[cKE;v2/q#rkFdp5(^^wi[U46cS(8h W)h*PvKOCo4ez䫯?GgkAG6-Cƪb"~+3$Yjt o+C7@ _O)ve7[.4^Ԕp<h_#NFKh`'B RU=wtq5 \}hyN\n pfk8?梵BoErdvtAٞ[FmcM@<{ }K*CRD^)wm6Xא8P9hK@$KV7 !h:Mϋ%Ac( |,FKj@f5`4WT %veTb}`cMϫ^I3+J׹ȍzFsVh:YB)iU:ɽ<)Ho~a\~ -9 rCuYwhҾRIWf=-N[ڒܬ-CO$8l4֏\k.MrSZJIs?Fvr£QTx梬UMZ_{ʙyj7zHռnR& ꋬ9x%&OkaV+ #̟O]r0*WnR MUveqw<6 s3o`&ʂLHc4/+HD@Ɣiv[+<$]oB9|-_veItvx:"t5R5;k*}5=Aб yjJ)yYd6TpԸG]:\q-;eJr(7'7Įls:֎SqcӖw(k2cEA%^ 5chxad>έoL'{d%SmV{:!^sl`98IEv^v2} ثj;CkMzh4z5]3ef2΃6ׇ@-{,ޜ'm-ϋ J Fj_urNcIvi`޳B6rZWhܬ̮\ +/M#zZ IȨ^kM7 e0xPDĈsS%rrj߸'e60ո[zR64z{NuEY034?UZn`(UR?-rgN@w'讋a+;3֝w3 p ds̉ ^@Q}cv$3a?6+3c3F=dy^T l:;f_w QNo7雡`T!:TJns36 faY4R7;RpeŘ ]($ *NT:] ܗ-{HuaHomĦk@*h0d.H@g\Re>?_u4{΀}XAhQ8 NQG^WF_F0*vߦe? JudvNxf[bإw*KHEJ$W"C/=Νφ/;&-?pX h^c$>^Nu5mX?Uw =sMeG{ w^_.CWSZTwhBCvPE6zTaPI{nt|si:_DB)H̊6kE#ԑB4' -h~^7ӌug\6GP4`hv$7>RAc>]>RAX:-)Z=jNqMny`/Yߡ/OʣYBAD,%bwSdyYmva,)wW޺RK!R2\HK~}@&nNd' W߀p!/ ~ Ie V+mhrq>;T=Co!ܿ@Pv=zY\[_^6Sv4:]FSM{]7/7iixΙy^</:0E@ڰyis@^Kv3Eѹ8Ύ]#»g/)!pMp" BzLI+je ! y{]o+)1h:(23=L]K{LǠΥ]|f;ZGBt%Q%\QM_@Ϻ ^KnJY,dj~:gG1WT:}rȒodRc™[ 78d€:eE]ksp^AhctLd _ŴMUWjOf)v 2wKkn7X[n LF r}(6Y2pQ[6rPnOs{3@bVs(䀪7͋Z% $,j^>quúlJGdAr,Wts C0@5d-JB_h\cg6 \QKp+a6?+<`XlL&|=Z@v@R˰-q, +}̧ ՝:w)<)dteXKe/ja8_4QQlB>l :wtvԺ)oO0Q?mn{J[0򲳡wfP)JhWi@9u5=ͅ1RiZfJ~έb9Gk X+DO]KS9U}jԠQpI|~ ]wL^vU"}- a|O7mu{ãcc3)奨=7y^=;ᗸ+hOydRC EkҖJ!!>xQ_$+TQ:ذv7|X'Wog%lDk2|@9#foS7 #+BNkSξ 36i_zޠ_&1H!~DONS?w? dU2'UYPRE|l\:b6=&͋w(Lj=hKj$p)*8ˬw*/wOM2ɺΩS Pendstream endobj 303 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 638 >> stream x%oHq/[+ v&Taa vۭ9cy6( Vo2z׫^ߍ~ik0k-Vή}yVm5xe,_ЁAsqdG[0 3XZTgOOwC]ЬaRV;=vjƩMs!qfs0l{&vbkts.=AI3^{h`Y,ee40׏aױfLSi/8I:SBj㨻%vDC1I!--Dn I(!/Z.SI%dy !#jFͿmkCp8: \x'x)d ٴCD2ʇoessku9};cm$;4:2 @4'f|Nu^~6B8'>K|5NZL_QX'%lM`Z\x%νFtJ_~2 U|RV$iM4,Y(" <H"'#diK^"褾O" F ʼ(l.|}nXW:lv a<endstream endobj 304 0 obj << /Filter /FlateDecode /Length 11603 >> stream x[qWHbsu-?AYR `聴#fX,fwpzgwYU}.XRvsr*뒕oz篟'>ٖjKn^?tqIK~OWoC\rW?Y^;ii/>\={zu=lEֲV$Կx&&A k+,QӡY H!坤fjZ>]mY$m$OSӲRok25׳6S3>mglz`FIb[V\MSJi?Cדaa(iiLl9LRLQTM>`2T4[52k H]MO4J陽2Գ6%kĞ9&aA8IYMϰӳZq4=%&j6G昊 )ڰTLfjd§dUmBEEbH=Eud"^%jEdUmjr" F&XåPMS2$'3L5?U|dJ ^QjJLLh-̐HdV%D=`kKN=$J陱Tbh+$,HL0K4$2&(|H&XT룂ʯ $3B"T lT B( aa2†dzUI)c+fDbm3Baz!$V?2vlOбNLy]2gLZS0yRdk(f}DbOmf}3V2*ȬX4mZNPL')aj&G$IJfrDR(kNJv{JfT!(c'͉27]1eH)(|o. KtirAMV!S%,eJUC1^+լH QYX5 ^XbK1c}(Ze: !Zk*&I@~"a]ՓfYK%feDtLꗲWHY.,S({eF74 2JO+MZ+h+>y:eJUAṰQü,fbD >U31"siC} |)ETKPdF_NEL <XAvV=E E&6;J4S@%OvCLHxPNH++#]ׇiaJZO)41p8 2(ͬn7]YR U%ffFf4b=왍-FK#ի2I[$R-q91IӶ`֦EشhVF6Tll[&7ho H%eTLVcD5`e\*gdj7ܔTp$!WZHXlhj\*SL2=@5$UwZd>yڪgj8 ѳmpN_rsMV\+7SGr :֍:*YVw*]!MN6UN`$SεPI\aJ5fgR U#%\ C%&ZQaJrl&{,jj˳.j_c&Q=:*3hzDӃ;.-KﲶѴ QR\Uˤ7odj)!󡍶G|.,j)Gbeh{vIP?%&JH*գDU-a"Y&LB#V.sXU$z")TTܝ#Gj*TT$}δ?zIbUS3>Th~d㶤FEaXF* K2RZmcJ_"Y >(,vuѻHSIREqV$zoUYi ј@ Jp)m*iPM/pxP d.-uBj4.Gj*{+rT+M$w 8 USk4EA| T~2P3,BUPZ0lͤ;DRUѸZ! TUUlD(pYi"_iAL/D@ j/B5eQia?pbő(ױA *`EC.LjFDU3&[AfxSIR=EbU҆J2#3l\VE_VdNQMqoSL**[/Y2֣DJM X h+>TO9yD!VzfsEhW(CfۨfI6jUS6 iT-qR@+gؽ@+`(3jVfD6w/X Fr5 MlfOE$Io*+ Z%H LEDUcQh ѩBi-V U@AȪ@0HBCdqk! lUUb**CI㐐((T4Z! jj瘢chHh4dڡ ))E[IXıɦB= H"n.RJ(hRdWJz_54sNц*ZrF%ZT-*V$2ǪiuGT>,bXe_%Y1H(U ıTf8y`d$\d *)L!3K6l SF tQM3\2' s_rr5Ulj6&W$CD nTQqF2Bl D(=MEbI"1ݴFG^ %Ip4XLbeREcɑI*fFr5z< FwKRMhI$ "2+QER)n{2Q nR0*HhxN\l&nE$ںEO"\)L pHo%!HÂ* &# "f9-LѨD]W QyS |5ӃWQIGdJ"ѓQfцWUA~&[\qpA˲moDJ %F ypLAa6FSTߙR=c6\T4[UWL *,(REeHS FK~B RTh`S@K5-KhJ HhJlxxA"] jPeUQzP*T >Ui0GtJ*qWMU$ujĽHg  -Q ~>ʬ7 (=ZLJ,+.NIƄp)#إzfjcHʘ7"PE~ SgR@KdzH%zʜm1Q&b8 a詴L3TKdnB.g)kV=j ,WI׼ eE*P[y MGHWX ِG4ِUh@$vGĻ(a1l;TE[dW2CEU&nGh"cF 4E- bȈN,BÝDY5 wDFpuDFh1%ESGdD;3$,v F+c.%@(@$\-ށl=d1Xpg1fbh"' f\'bDB%aσvF$֒1C@ H@ B AD;x0K daj*t# ,7TNtfazZ0&axr0Ow(&X"k@19N S1agb;3$`1,&K;1,bB1p,&8@,FV&6;,Z?`A1=ڡ PL(u(Y v1PLB9|"1(FybBv r:Vb@iQ`LL\gb:ՙh7 I@ęh`8%,W9ӡ H112k֊31L 'd/$Ebg2Ťkv(&YFC1ഌ#{Ġfu(w AפC1ɝŤ%fjR17C1p(&9'ܡRb:GPLvǡ^-ءl|gb`87LLvu&&ޡRu(&ڡljpb bT@pXT،@BX @*rbMb2N a<Ybñ\tc1+#Y+m,L )>Qf11k1z82r?H 1"xVaq&QXV.VE*VZ;\l$é6wugb&;|>ե`{տT$fEۓ#q腬w710A5T<[xd8<06=O*=?9LZ@j-^a@!Wۺ4;œ>ݐ&g;7x!?ysnvѧ3S4MtkQ[d3a?F0u;ZSLnngiuٶ]S#w,li2ߝ|fM^N{uxbg팛UK&1橱u#VB0/!EЮRsvԍETo6}:r_1){V# &_^R.<ف#L}w?,m~)nmoVa-'?Jڟ\wo]Wo>Y65d 7+o9K(>'/F1X^8PPTb5$ͼeT,~@J}vyَ~]S pkFne^s]̑{ہEcvaYJO]0EnY[22nV"2p;S|1M'즂1clsiiݟF>n'xo{ xʕ~I߷5=-dIn%={J]]LTlT|%0 O)SR ߏߝNF|Տy/{qŗNPG6an!4gH,۶'LavFlz7;lr\t_[uIɆx៏<6$91,qLHԫ{@.rkEq_3!fY~mn?>wׄ8W95zn4V%*PiŋsmPKٌ)34SKJ{vB_jt?&Biu|_JMF_~$BPCĬ2@KO? Xˏ`n+|F[X~+-~ \VMg Ev޸3^_u>9XwlijJL`:z.Co٠Mȱ]sjk2 ]x5] O9SړwVbJݏiщnM^ڔ!ICݼF2=}ߙ\Iz8#ud/Ŭ/=Poj>ya&-1d 18A$E,n_zpt?wKg5I ecj**j-*+a]ߺ{̇82]5w9APwbfB>H]idn+2N.xg[zyCv(z뿚Zu3^6z6èrwW=vli` X9~:)8v F#],'R]ͺ3'g3 Lno[L17$K)ώ*7U'HNbo~GΘ)ʹc8On1f?wt ?mJr;Oܥ\fYMy٣4.NpE+^.^ċwV#4^C{CaԵ޲m')w[aO֘?>u7g;1u3ty~4az_[|JƏ/zަ$ }9 P𙊗rcma &z=lZW ^Pb{z{s楢iwa5n/t@s?A#-qLOmOg +7~3ԣC,Z.:W]z;k}M5LÄKDzw8oWQ+՟(l /)H#\#i#+Gy/h? ƙ?yxkYwpT;u ,3"~GH>n7+ O~d0smQ XxlO.8 m>fSxf.%/>QyȺaJ/Nk3t#wݰAnu0`͊|X= 4N){O<};pi/ F ?9 .mϵLJOMÒy#G6$8eP@/[ hłߏu) >]%gt}8 >En S_;bN17Ǎy>@m‘i943oDZtϽiZv}sjї6 ?7ƿ|9ߒ'C\Pۛendstream endobj 305 0 obj << /Filter /FlateDecode /Length 9137 >> stream x}[]U\}~< ܯJ- >s h M?׌.pK Вgnpv[J:H-dϩ,#r4{$z:{\;D+w($}*@+ ɝ{,} )dک|[Z6HKϺr'2i`rhle` Z^[\XvM1e3IøaMVYv=t2A<ΑEՁ61IxXVű bT"BXɣ^|&7wo"?т_GytPYbҀ*8RT$,& lHRkc"76ۊ t\`NPb Ñ s'Cper`w !9#rB2vlU#ISH hHd*^=Mİ;0UU;Nٚ$бc V<ALJaoH)f5 Tq,I$XV@I2+ Zft!P4ʗ9y@(7GRba㩭ǐЖ6J2+a>oWBeE Rɶ,(5M/mZ^v"һ*wGqϟszo񀿺!),º ny &IF ?=--<5{ĞuF,ec`by}x ]h7?{3eǹK-/c6̜A19k̜LMX`搅 dNRfAػ2s4h+ `aO fN e%S.xΚ{?×T]urbgrb* / V^^𤅗{ /?*XD'O~ph%$WrN19'J. ]&9'ߔxs޾Pq%TJ= It%#<:Ji'Œ979-B8R@ !BsG 5'5UmPsd7j2|ed`BD3&3e5GR jN fPsFYRsJ8G)²{.|ƆA= wPs.jN f0sGa0sBŠA)Y9,9$bH) WbN/F;OYI > (-%A9c= bN"N6Í`Ov'/wT⮼V[{a㆗VwWbNypcjgL<-G*܃Sv):9J%戧Bj'19i9b4Nb)ACP;')]9|Cyy/Dz7xypQerhA=dQ+1Ӆ 1G;ψ=9ĜITJ̉'3=Ie>j_NWBǒIL2E GWOi%e!/sKN6L'mYzQ3ePOXaziZ|]&H3X2hZ#s|F j}Cf-¿a##5OoɳZ?o_ûRVc-wYƮRsirF:,gZ ~,KK9q8R^i) rl/LQWVʨqJ@]Vb92@2@ J0F9*@PnȺ.\Y+ B:1U`=v7iE+X*@ڊ)%Z0pQ+5*xp}oi έL5ZSEqkkW( h@Kl cZK蹪2m JSܝK"O!D!Z8R*{Jרu[̳m&ŷ77%S/sꋽTea"7 {jEf2p9\hA=` O5h m=^Ȅŗӿsv I<}}y4:;5e,9"߫T m±v'Ba*b4:D$Ck痬ӭ rzQ1m+ ''bdd#T9m:}mF@|dTA&2X˧t}:Оqug2[;CP[Tћ\>+1!@-RJq@N|Ĵ|@8kύb E=={AodcTt!G゙d IA}fZ-@| k'x%HlN߲ |ю.ELX$+e!ADaoߪ8 )7: za Wlt0|kBXc`~D};m%Bɂ!nGSO>w-;6$x1 U-ݕҡuWm7JJ_SLƏܹ'K޾ rڶEEZv p7$<(1=XwPYyضH@"p0pLf߳q{5n}'';wV:N@]nP*ڂp=)ʱY<PmaO:qYF%#ZlKX {y(.bӯ7ȠjuN\=)fknG,!Kُ__o?$KUL8e;*mCwGCGUX! "e B[ FA<.Oٶ$Jo =[6m6J~n[чM,v۲:6n?'o/fPA̚)eh,ZJPۋHkHQ` u} Ϯ"tdIBYlK" rm\ɥ"nm OT)qTߓy&˾Gޒ(LDMz"{jaK o}$tȉu NML4-퍍̹܏My.Ոğ&6a-X?}e/GJX h٧q:J9@M橱n2ڬ1-.U.wz/N*5S&{ZipsmOۻ1SZ)"7)\p٠n[[~ί8Yt`Kl?H^l2]!/â4 ħG/ta C07FIr=`zȒhYpkA^l~yRČ=S~[[Դ+##i+'}[j2yI*WbŖ,僅ML{Yݿ-\,9܋yzf(r]K>Vb]W/kqυQ{ЯV+Omy'`(ODjiL*X4U`ׄwk(*):|~y7;+ G5ܢ5ϊ^2vK^|tZCE\.7Drzrsc$KRoeG,g rȳTzS.Ljg&˜̇dUλG@5,*?}X3$a6"P#OWwgEe5W.=]?wN*葉{ T$:B{#;--&#^rBQnK+|C Af6T#DO~*E+Ew6H/b:[:Xtɼt,@4n*:̦ (~ zV9̖Z%Ґ~~q}-Jw_/YxO/Нϲܚ#mɗTC)VoOLbhHBsq͍\ T]YNl>e+A=Bb] bva܅sY\R0 r:C:ŗBj6𔞗 `Y,k"StC]xD4s"4K֖2Կy[Mz-{ ;g1:!tv>iF!z}e(̡$l;@:C\)@͞lֱ Swjb|#r8ٍ!֔/`7Rf&g54Sp\YK"֍ϬEؔUG?sig2)xrk9נ;ih9_%K1=#s+z!dݣKG>(zFHz2FӐ#Yo"}]KVHu Ĩ!?xN[я*QȱAG`]e2c4%K< !BityQŁNwwI.\Zx'CWX߯;qC_u;]F%9Z>хL2#㫡Za_nsuYݾx9A %%%O~ޯ7h^23kMjg)n㾔z;kw:j|T;9$ ]kuR`HxKE7r\.1 ?1R2PN_`kz2N9ˊ6?zVг]CRNjwĒ­=H_ I^v&1c4_hl;^s*[S"XﯵO5 '{?Gz>[kCBS5m [ >-&c\pݣG f_vzwiN>Toa.rm 5U(Xnb9Wy_ a.5.ݙtO{A.ߎ5yH(pO1a+K ci,C^f*s}Kޏ*-aow4bo'Q9K2\ލ2LbmB_zT ތB#wtj[]+Ɵ~к'?Oi'9Qurl8GkPS#dtMFƊ"2w< <1b05y䎈D.-||W@ϙٜ3-GN]I^gyqǀd`xCp7_9[1\h\=\_2@c, ?uy^Ff mnmYp8c76}(5SK+G_km=4m^lK&S4Ƙ3\H6f+-5,'#p~a'/Yϣ¹6OeT~s6iණ;[&|@J.00Q:_i![}dIBrE͌O`&CtyODbSW8./.K6iy[pھu%D`{./aBsnK<[GF7}Np2S6[B:_\ӯ7硷z5.c3|fN9HJ\EjKhLi 4'%8Y7T<9nmrӧ1:PhLq*lx}y] Zi0M"u]2YMe)jkDdۨw㿍zZΤFW/uob^J1u+mȟx#"-a˨xr}|[þA?3R.vVׁ[μ?tKs;^!54gGLgz@B<}E)N>fn7׫"}pr?xԷ6CQߕ8)#P9w|.篯毟]es&v/-rSt ѻrbEtso~&Pq9:}n']FnS#Pl.1_<}>LQ-/ê^~3> stream x}ۓ\y_ !{hJRQcT+R`I`…$O,$v<8n}|ł?~(Ez-H䵿xR]"h_xw?\^A)w.Iƨ{xwൎV{/_1:Sq^CP㔒 ܸߛ[(ZG'a0Tz;wi}>hzY,ƕoh3q)zG]dgD62ڍ>p:n?LRkc":,\R~v-"b҈>Ӝ[uMЎaYZYt8nLƺ Α0O 1~yK|hջ+c3-**bTOđ{.;^f/ IFP"PF8qDqoAFڃşz-4PD=B# >usagʛREVX~>#LzGU߽+D ١nP^,q; - ia>&au91/v`/ߞƁe (bЃ W,_X֣U€ɫXYߧu-@+.ȥ40. k*ahMRQM-.kh q&HF (. #'~d1Gq(M@l`2(Rykoh\ѡun *]_ó,AsI0|80 hU@ enJF@`]'D'lDH{u5 H"H"@֦,F8 34.H%a`&Kd< oANh7'5[3**O<5i6bjUY[W;`1?"EFcFQK:g*Jʏ3>*g ,l# Ƅ8r J!'%AR3Wڝ؝DA[%VBM>;` %I7rdz%mR1qOIhuԯV#CpDVr \A4A ]_qu)pIx%Y%>eujO*5*g:1xOyu^25sKK3mGw2Dp ,'Z=9#*\/]cE U0oxjt" dzw!WXU,i#j3cc9ɕ{Z9(h(x=>C УfΎjدO.D##4iHJ&YT@BOkBl7JOXYEn#U8HҾ!vt*nÓ@j:̸60-ixgCL8 bq"Q> C:".\  }JE@X="y{P{\)ҁ\(!|;|ByryeвM!Ňj4Nf +T6>.%lo=@7QࢶJ~0@DIYsaTܵul$aJ,lL7bb ,Fקv~ZJLIqEj#"]\هlGNCv{L_`ؖhglG2УTLD5Zhl"Ȅyo7&S~헰 kEQBF7 %<|\_ 9IWahۥG^LKnq)BEd!̉)A ,i&9":i$H2ϔaH 08 ?el:,IN54 vƳb)OxIzb. 'M'M#g8m_fG4x> "ifǟOA6 ,{b#vg%cBs׹qybˎo+ =Ic9H/t_ OVCmNj!#>(: VG\$\@L?RO0$TSˌʳ`n[0o~NaFIҍ&t䟞 V好 x3*^^ͱ_7K c9| 8ޅDc1a`?fڠ(ܞVȄ`fy(Aܦg!/6jB*&C =.[['˳̸s'˪PZmMY|튒6,Jl XKji»}6Li3գpZ!MgAeE2"6Sf4ޅN_xm]Fy_MppHM6U`eyzR>/Oyyz[7<ӭwT|Ffc Cwa4?[tRJn|6o>-C&>QbFo[yc̯Ox -ë́#G٫ ̽)9AH4j@V+fw.iuŜW TMW<`)_/Nsdx1 ;I0DjjT{Kko}}ez: %0F o+ s`u0`Ǿ NT'VH]Gҝfw?+#7Ī;i"mn9Z󱵀(@fXPkG@ 09ulj67ʸHFjܸhHdQGN9l<ҔS_wU+!+k>s=p y< *Kvx+6tj,we:P`tͤrf4-y<8{n檶p-QCcҴ𨜌$0H:$=Ƀ  sXV1;:MXmZLd H?(] o&@ „YkUYDR^IDi"GWKPQAC<6xOPFEj+c98F-dNz(`, PduR@8%\0`_cRNj}(39j^?W品!TM'`UyQwub]/Ѵ ^~LlE CWmZmvs<&ٗ6i"wAo`*1f7QZ&\Q{ y"CO)Νc>=WOD٠/QvIvXEG_L6pvGKŠDS=M ǵAt8=ds{@fVUIi~6;sk<&=YBx^j3s( 6Aa2D2Q,nzPbޠƻ+jsQߟ0{_EN nOs%`P_@V0ȩB qK4@q, VcǙ&;|VeNk[B'$Z=%ԭ#"kpr}JLCM!ۖl3x%'}5f mEQR vcׂ}Yΐ{ !|(j}x, YX0w̓2ĺ̓84'vqx'_{,fH ,t IJw7kYau4cN\U\~7y0-~wY\t_SF/:6js(/L`=Oo1-W}Iu_䕞e^dyVk&[zu6ToB1ެǁe$[<;q梕yDs^pw[LECg:J4tq5iwpH=|phy!y QBy(Bk:r>\/^?aQ>R_T\ ^My[x@Cjyܰt{fPqY.ٵ ! Phc/Uo+hk.Ɂׯ&)ԭ`fGq>Zx(u)⼮u\5OXAAX%Ul۲,s ]#]5 .arDj@ g4nWVTۢZ[lZy\M?{)'UClw!ew['3yS:Ց$o-hLiҝk< 0Fejei"8K/&?+;b|X -S -HTɜeuc¸eqѢpF@WdWrI'rV aVL%I4c,V,/6(3'.V~||Y'4ӫɤ4K-hؖau~҆ZY]-f,O&; M]iX41qmRumb(-ъ&f%)^ ]jw T`gqŠ2|C+/]2&P97E&o"4¦ѓ|nQUzG9@':kT$׺DK'܆!s)h$|&a(;m=~o y:^Wk>2ۨQ߉* 9ʸ谪MU/&Fxk| uzJo2yѲfrK_J<$RZ}{) ll`4BA+;.K#8M|a}Wuf]HQ ,AH2ׄ_zbmpi1LyO¯gwf .U86- A!bBk;4ftZ5`lH,X"D>:ЄM)mz$RgA-zIg+Ǣ8s.}pS|ʕ"NS!ӈ4L~fpA03ٷGmdY!:̴γ\8}/Ki,Hv{ Mf]ڿi8NQR\}+T'Q0 06$*><{oE] [VTLj X 6{ΝsF; ZqMl՛v_K_@kɧ/nYrmn\JynM΄m_KhūԼ PNu9ak8E~yj؛H"#)l շk^AS3%!Qx-,pRAkZ+LTosq=hyOqrn>\ZǺ*cs)ʾbܷ817_˱)ûnO|2Ah~Ht ;{Ktebmw-u]zqM𲪡15WR7̯Uˁjrʀm|lPIl]6&L~o~nl@/yj|x4Fڟ8ߟxĬE :X}Kr!0$n?V+W3 QM֛OZ3̕U@T?E\!DŽd,Ye(Rw*5zRo^OBG߷8 m5F:4ms{@aX%Pm/ 8񾕥 f4ЄQ/0͗Y Ϧyլ-J&_ߜ9^޽(fggQ'{\+`y;m?,m@ƄHK];SOG1wzԏXZh1 v"/8LZ|ژ0 yQeכqJ~P#s}Vx;ی&tMѦ%Z}~}u{da'ӯw&wiODVB%'|W0dP|Znx.ջ}`vT{M#Ck3*]#nB{o,1q&v1}?~z:m7jMc wWnuvjXR頛 K*AQI/c:$^g#HrJ"ʀ`WW/|)Дfendstream endobj 307 0 obj << /Filter /FlateDecode /Length 8508 >> stream x][o%I~o G * VbH3Yi=x{/.YYtì@M9NT^"eVFuN0o^7/͋^8|sN-|xꅼm:NSNo^jN/^O:M㫳)vStE0\NkZπfJȩ|/)IyBC;yLxo޻r<^̊k '7ZxtuΕ3'*֚^|R,xo>~uK8K[C J"N,]"׌Zx/,9z޲<҄M_4$,gkmE{[l# Oj*1ql^cG2zfve1ak.Q̲Ѳ8:poT!W |* o0R}kFfgFa*+L'2Rm$ z? Su]\9]ZB1XTy `U>w'ȗ|ϊԜxoVFOƣi{ަ B?OǍ/ ӗW槫b~z7?}4莿[_OOO>?%vԌ0BYDq1덹|\Oh/W/_/1k>Οf__2Zׇߜ; qv6'bٚhfAFػ\ZΧzZr/?Ohڮd\y";^* ryo}q-&\As{$j@0ɫh*/Sd\q2ZíNe# iBm7ȝMշE$[Kc;!q;rtv-+2īd%k˫e7#0ŨLp6ʘMo6Q.Jç? <5y觔_`I:":g? )NJ&A W JXK|!0֚(okMgޱ4oѷ[}U3lD: V61~UT2E`R(DNn.C mltU7(*+˥Jzs5.χ($UoZqT S>*ŊO.e={\/OVX:exhϖsYYi\4Oy=RHn^WEڳr_D:/p4L̏6LNE[OMG;SǏ%q erэY%,Bʐ ?|␈|x-TV(>6FͨB)T0ujOS-eOTa˜mT^ ;X)|ppᕏ7aPgQt1&T<6G{7$TȗۚmD)N_\pClyQoW$D& jE7C~B@(KH4my/NY*eD<, uKf̆ b&g2DfTP\c2iW&V8up'yZhP漗/igzalb)d>bFoh’ƀ!-Mr{mAcmm1pjM%o-))A zfb;bVb=+9X3^GCǟ/ %`%%^+|g'1&modGtm:p`*58zK^; Z8?_g 2.%n A,,a@'ZYexHX4? 1ݾXZ3gܾ,zv4)ɖ+l/6aΜ~v2\@"9#q9\`4w We:Yc'g2mx#YPm$a~|u>" !^[u移i{n77.CI@/)g ^1l,׋Yp6qJ#ߐ2Zgyo6ML=YTD GcG>%fXEO5x A؝Bqfcl3zv/rۍ7.N5O_|_AyT>@Gq͋Hѳz$WxP[ //p C8|~셜b?6C|f߀"u)TP'P$.@ M%<SJ9% GxB1Q^=(Hj'2S=`t1$# ^&XY (@P+QʉG"KBKq9 q%!:P0"o!ƒ81 JR ! ha=,F Y# $b<j{$Ir_1VDɈGLȞ~FtJ(M m,bNZ)*d9qzɝǃI(a0%}0!AO"JхL)r`nMzj4<^1 >ZhB BXMņT9'h9R'4K9)A`L!%f NXO'i6x'TZ$^ zaWN$mnM<(՚QIL':Pi"a)3OTr&2u;4o9՞ !锁 e?+E)׼3YyԨ%)pى/Tw:JhWy[5ڽ\ ~=%f%G%%Rґh #RH y"$H xۻwo^~)0@^1T&zCq*It0@-Pn )@8AҒw68mB4 hi԰0NM lSH 4AL:HQQGh@ :HG4⑤4n)HCBMʀ4_{A ]RdXQEЖB 0@P5 YC4PڌB.PC{n-${h‹!Z M"%}E=u.Iʌ"!3(FKl $W1Z+#icgD 6c_ x8AZK( U:Hx0ERhH;H# yIAZ|'AZD=u$3-HA&1mvqTAZtEli1`4 A}_ѐ*\3UKxhTQ/hHЗ"4o)@ (AJY$$0JY,5I;>C)UgwxF,A^Rxywx633 #8gԌe3egDs bϠ_ y;< 0CRq^$IigŞc>,,I +)DŽ bchg%P0<:LfX * nC1t%P13*/Sr` RHUcdWKί` 5W0(kM tc6 AabH0Ge,lXc \(]{bWcbq̒3kb.$9`@D`1^P,&f),ŰMb1/v)Y}br*ERl&P eaU:R(GVP;^X SPu'EgVҎPv0IaA22;8U|ñPh@&±@Q'K; 3EA ՜*T}p Z3L}UPF\ -ęq"R.2!IZF!Q)^!Q M䬪Ϫ̙Y&NµPh"Ϟ.\3ph) gbzHXfR0u³+o#rtɵZcF<+/ lqQʯ(Rc},Lk_Kdo ɏ/ov:Wj7\=~}{ws~d?(=|=eyZ/"\0*k%Η7|Q?|N7&a>X>rwy?O3T6~l "3|@=CjuSe$6eaI\ Tљzgx_sek_@޿\El ||g?à㽹giZ/|:%aLy(.p'SS^щydWR\6PZcUއcje# |ݦ"Λj]%݄;fwΝ ]c!k|r:~Wƣ^ KaFhpK7zjwcLX;<@Eob wTT`Vq\ٕP'*jiMU3^DK0i Jl!3k7F4;|zK7H9j:jۨ_|xZnDE?A"!T8&#n`-\|k /1þ ֒ ydx:h_nGn4ǫO65ipjԧh*5z:WB_\VIy=bCB cn(18-e`M*J:O].w.Wd#?4CZ5|Ӳ-0c a\ԑ+{alQ\&*&)s*5tY~HN/HiC^s1)5Z,vIk^->dEOTGaLLu؆N%#փ/>w֯/ i}ijsZ`Ql1[XHmg"S"Y_,UVV5Ļ%/E=%u^7[*{omui>0{eT{|袥i <ʋXB ̭F5"֎xPT fYItA:>x , 3) A\NɰuƊ&'Tb$ɕp3ƹ}%ҦXW{*84>򴯍wldKp},m"saPÒ. xVHjOA;mtct٤??2 l ut%؏ fu.+LHuF:">A64)p;0oE*Aa, 䱢񉢨B)jTJaK͢w]J\fh\ɫaI047ή@b (=)em%YI%dpoU@OmiLʆ70;\7veD9±LtpUq9tlֶj@V|n {m*ҋ6Q1oV_w0͌XnrO VGa ? [>>q- $$/9eR+L>zyZIi41+;8kKԭ !f|P۪!Ϧ4/HNs:(JR~ .g2}/屩ZJ_306VbPy_YK'3~/L'` OȫPG+ƓFKZ]J bw9Ҹ:[Yv߹'*Aǐm xg;5̌yVG_~aZ}{ !`YTtN@9 ud癞ޟŵF//=W@>i8wbZ~^:8nZ˖If39#)ϧQEiI%Ь+xZ%R3h69~MAnE#"nn#E Db_|wfz\< *젩K$Nq{hg3<Z B1{$ͥϛILmRB%jȯ`pջZM 㢯ƃIh%,o2~f䶳yPBKvk͆-ގq'te;T ճmcT1gGs6NqG.1wRŠ9R$ :F]};(+3Y_J뚶yYHxYLf'W'ftN%l:>O XE#`UHhRJ>L;1|';E z L(;}HE8 L't/­rh;3 . pv9`c2a%Qy4pl\|erF벟^j V0uab8^TX^JLΤꊣѷljn&;endstream endobj 308 0 obj << /Filter /FlateDecode /Length 6905 >> stream x\ݏ]q֏.t~(q(HA<\ֲծrx9]%u Y^C{a7n꿗^ޝMg?uW|Syg̡`wO9fW]0Ű{p>|֥K6fo;L/Ol ӹM uL sLs;1atjlC3O>:.0|E1[pKbr)&y~qߠs޿|'SZ=k1[\ #g7Y 2#/hGkoŕߕ  2vvM) //|(x `s2e|(+Sؿooi4M9C*wjK_Wi1j}HT ,HX&\o8/`xPBlog<8Tp4'x'=N-h̤kAev-KNSI:Ům<ڂ MG_pdXah.ћuR@6Ȯ , QloB 7<\X[V؃ %wnS3a쮺\gnDBpttķo䊽-0v-2ɥh.tw!mdo/N#!OK4%1!6/+ᄸ#QX![+Л@'/l8gxv`;扼w׍Gx*BiNNgiDVA+J^5NXicyތ_Ux%jxՈ}#|Qڨ#Cx,aK)fcƙ_U T wӳ?9ȌOq2>{~̭ɦnOj&(X5]ve$|KkU< 4m/r4S1$sUv+E|crkݚ4%fJ%I3!1%ЩR37 ՞f;X I"{K\DKĎ9A*RTND6K-I{NU̙ܲfV@Z(%RXX gt]a2vbd$6uEg!>QTHQ\tf>˰T nI~Edd` %ȶ+y`U&`R\p5=1B)g:<袇+g?ngٞO46J.SHL E* <59@%! 3a6WVxS 5>=ͭ~1]P->{>+B(1Pc.(֌7@ 6m(% (pL;Բ-xMbvHOڥ5:5C!C-E J"W88B^Erl *aa`:cBL"Sl.(d,3>=Zb0%ˎ˸[hμkX}ՃG_=o]~Bnf0imm_dgћfQ=R!._,UBtߴMIHVI# wsp *acI:eS4,?g cIE v9K{*Rm /*3&?etIcdJ020bN`2/>. K={7JFQlU9q)xu,0kIw[j0q*#ZNԣFWA[RM3mKێjEjeY(V5p.!7fnBl>ާԮ Pȩ,-~ǖ$^,4'zVCHi"E/'V9ji(_AJNG#(0N+|O#!@y#Rߒ{8N֤eM@l=NC2+ILb =h6#׽4Bw~ˮ')<~Tx{)xJmRzS[;g7Ě8wJ˥vdBH~aSjxo:M ͉,I;LYCOf> V6UJRB|D^/dw?%9bð#ڌ(mY?v=?ȰӴnW$(- g'XVs"<"lH0Y{p\Y[ehcL}.[5B63T6g4B2ٮd+#Fd/[Z4tͣE5 .fkB j;AS81Uc6vFi&(T J{^7Z>6ɗU7CCp-:p̋nJ$ |m'!kfxG#J i˛MpsZ-lmsCVx97/XR*j䃨fR {Sv(lZ %1N5;WpzNJd, ;Ae>>tƎǭ֒ЗTN޾rΣNۨJ1'@SSV;/f]TVœ76”ύm/]KIE f׊_ 9.uJk񭌋eRN:9r124 +Tuވjz؈)!5utMW]szƦO!%PpJb#JxW4.H6p|]W7}AÜ& @k^ÿ]$\u=Cuq DC}kQͪD.mk-6̕ ́k?)+o=*V)6ʶb<)͎a%'9 WBa>Ś}(d+x+s떕gA(Clue)ц= CjK%&yA_I va Z-:iY$+YVLbv7*0^T(fOG8'w ҕ:uE5ڇZ w~a]vZ`T)%r]H]:1"IyNM'oQs]Z6/3+3$!5ڟnScݍ4NKcc4ء4tji,E?Sz:bq-8VRd#v>$wTQd#])E6͆cKIiiI3\Cz1(MR!D%Jn/Z_4)>~l9/t&*9[Kjհbkd=Ho`G>_hbzIeh>Onq%9Y]0ut;7?E>+/| [-Us:r?JkJHX堡5Zj X3Q\A]CNuxR6s\\.2|U 7K&ai5BT}8z 2M9w  jE@D[d!:B ni&n()̑O4J،>Ȝh+(; *L`,o:IF z*'&Q T$J$y:@EvЫIQm.q%o)T <X~0rZ '9a!f]5#.o# Rfi_;cWd i~ݫw.A(;V3AuJ~6WUƪWkQPZK5 ֢z-֪W{bI=$ʵN ,ay7aݸmmAfk;fkVs_z-C/ڌzՖZU[^uZ)Vlhǜpy.L}=/Qi발g 14̩+CqY֖&f'4 ogCyZ>R×,[REgy\jW߂Xޮ[^: 4TMJ̔)ѠJX۩i<>*8,K yk/"$oJ> 26χ!1CHtDW.ʎϼU]vz[dN.)M͔JxȻVZiy&٨ں{˧5WV벞Yۊ624x'R޿xW^KY)zAfTUY ze2J$ -^"#4ϵYbO.s9 W3~0AfA-)1xfS^ ]FI szwB\~X,7(f o Ө^Ӿr}*b$|s@Ë E5h}UaU}/[Bp-_eB_F3>zCij3ȺmuȤz,˫;>+[;ߴOwtkˌ%"2.mY=5?WLEsL& 貢iD3%rcKYcm W+;U>ƛT~+`l^.rV('7Ngd+C^;k * /7Becũҍ|)Q))$]$\pF?@`鱸H> stream x}Lwǯ_wY쮙dTԍ DeH& m=(W*ЧPywQ f)SW/3jSbM-\*Spn'>y&D2٢>!&W س0NGʩ(~&p&ݤS*Yɼd?ɢ% C$_h:U\+JFκ4IR&ɼJM_``k2]g~UJL.KMhYɗrB2.`hB'f)tZ ü麈LV/OV*1,0_L6`a ,VaQ[cAJ zyNO]8)t>qB_HqTZm3T֖9t=YRߙ$p7q(5)DH{@<~fK KزkUoy5NsW6yv`y [4?2r)wQ{Cw7( Œh+wKJ\BOm-8W^JK:UXP81GCZN̉'ݖvyJ0::VKՂmJFZdوt@c58{礻 -nB\X6q'NpCU!cT= @K$;e;Mmw{kȈ2`j_YP­@}  :@р6WŔqČ"P[`kojm>5DAc}D^{Y{| '-QY9FS跿I;]Wz'5xH>q9twP.z܊/qHSM=jjf,s'2).ϖuٍ J,"X]u3v]ahC5I3yU/<>J0ЫI`!+ɨܱ Xع?ZE6#٬\v_nN>m"(mHoi(4Z̐?\ Dc]U%‡x~ʰ/YT[rv{BuBHF6A~ƈȓ?76fѺF_ ,gCw)4 瞰g^^׸o^N,Qm e[:)??n2L(b@I!'s=+D8]q5ud9J*KiZ.gJܧjbʰO%Th`7(kezFu#JPSN'8w7&H[6mvpU% #Xŏ~\ImwP+ΛI$O#ȉNRendstream endobj 310 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 2649 >> stream xV{PSg1{4 h{ohi]V+nU|D$@$D*$y*(J<+ַvu;TvtGwu;gלrI(!D"CC > %kCץ@Ϝ)O֎DpAI%tcAhf>9IgPMLPM5kfjFP,ռT>9A tTA|٤Z5T gO5U95]4' PlЩVj3-DՂ4j&UzFV OO(N4diǛ˒WN=S?VSQTHRkT*Z@Q`-j)5S>b/(7*Z'93oHtm[{۲[t} QqD0˅/ SҌb*NbGM{Lf'd8%{%QRwÃ'CttCtl$C0@(`7x/)[_?]yM,|gX|L!DC4(ю#]]`9V"Ö;0>[p.9O> 8(6K0mÜߋ)H.&y=EWwp3~C6mJkRE"mWÅX.lpyǭSwjg;08Cߠdܻk6 a7MtOh5h '᪥zs,-i`˸ٹ-_ہɄBG$t6*Á)c8п3E)n'6S)f jj^DS#Ɨ]oQ”[bWi넵'$5^_#7 ݕ%{K56nT˅\n *o'$`%%ȱ暎vٶ[-\2I.2~da*||{mӕiSHg/BT0 Xڪ8 yYy%B!Z_C;lHq +NyHst'huP~ Ɠ݅`q@nw܃.h+4^3 -^w⊋6(W_8xݗ{Wƀ'B :-3)%XBi9tQT9aajH@$^y@D Q;+iTQ;HLLzC}s2ٻ`xX/𲍖V+a^ b1) v%u9YtJ#\#6I!8Rdie b^;” 8:LdKbD';T4+9/_?Љ>JR k(A?jM7g-b)^-ku\EA )=mɞ氊cƆʳjscsBt܇vq=x!fD y8/H]{pB ou*Ҹԝ $'?'dtdďEc ~Ft)>b9'\4zQ-5G/:jm9Vx3,jCp82z4 OVeCQhk!%fe"1ϊr'm5k vmӉe/kw<"o1DOL#*20Yv\S./7߀?_hk]\2BX ͂ؐ0j`h7/aן1x 學a 昭>(Z. +ϔNht]g)|%?學) 3dU'ogcϣ'ؒL4\r|ug~E1"C'Yt|]^{%n9!11 %Z`,rM^=}ӵ gcNqP:N!F3~\I] 6[aF`xVTD"!ޥf tVY6+ad-P z_b4EH0W~CӗJ IN/QdyVtCPKnwωڬ9,COEF`Osh!VƦ,aEwYv [0}0HrSԵĽ%n&PRWxCɕI> stream x]O0 ЅjqP(_Ct;,ֳ ":ր#MEY' ݕ> stream xcd`ab`ddds 4T~H3a!+k7s7˄ ~O/ȘW_PYQ`hii`d``ZXX('gT*hdX뗗%i(gd(((%*ݦ&s JKR|SRrKF000010v1012u{L;O!f/^Zo[M~w~YyVӝ|yr|ŋ/d<0a yxFmKendstream endobj 313 0 obj << /Filter /FlateDecode /Length 7771 >> stream x=]7rAF'y/=s !ĊsK`'HZڑCSUdEv|/GlXoVU_gYzlW/ξ;U_>&:V *Wz#]=x~obBk BHݣr.¹0*pu mR{xI6.a{m4 e8%B?yʩ}rl]g_p}'~ _|3VbԎ|76D cTӻ$ ӈRGF:Wtv-a4Fc RqHv=)TTfӰ"8lt=M򂉴d@{ jo:yz^Up"ن 6v™&:݌P :#d&縶086jئ|PvxxH?+Q)tʙ|6?^KݓAPԺ*ZM'.JibF>ТJʾwi)k8e/i|F"Ӱ#"5*Lds6:nm24Q(yG&a^)`,ޚV:ïiH0 %x`W^tN/hz5^S8( K&.9/ 7/JdP Ag"l)c$QHQ @4,X6xg_n3*a'U^{쀋)bq-lV. E&_| bxc*vz}@/zeF Cd_앵mVkdhmz`V%,lRKBT镤"'gxxpl3 h@*8PKJgaCIˢ4Տ h DJX9vWπCm.ʹ R/\7"_~͸1Gdにow2 i@n`m&}{iil ZRV ed6AhV ǑΉ qՈ %r#wFέ&p|dO:%Wk :c3X'"sQbNng= aQT5HH $G~t % vUȰj^a bc:t Mˋ=u&[f3K&Sl(%uȒ,.*k#QU"x`xJ?Ye@I8CIybccf"> 'u3*2[LUUfA>)&Ǯ&GFt4 ITj'{nrsG p :ek?!vqT([\Y%tm|Z0a~dfM5<nj=&,hօ/{RE_ۼM*i9^7'[DL~[x/pX{c*QqT3s+-:gՍ#nS8fut1 йbdf:)1'h!/!s˄:nDN8H+>G^U*&/Y8@(`OOV +e1A#T 47zqsXIjG{Txm$M]t)3A#adUtH]ц?/Ib-1P,(oDMDP$5. z0}o$ؼiu8ց3Ǝ!;oFh):ʙ&XS'HUoHoRpLҵQRӵer53u}CBkoS77k,.߳v7=( 䉢_.QbEg`׋9ʺ RcR;TLː'O‚=AfRQJc; 9wY;dwSB!C+PiRE 2Vou9Ia D# Qi [&&̽Ʒc>H\U~%r9Z_*_g+>C`JEЌЋ)>e/˯/f9 j<{, >J~}tK|*{HK>^:`$2z|m[AH_I7V '5 qK@G-_p+XG$8rɎTQJ5茉OQr,V }FƶfBiA#%&>ESbdfhsuYEE࠱̳G3uljcMwbtƌ^ ]OMk|#~3 I !e'#M})y4^* qf4W'I#i0d{&2m#x`Y4{qHn-î,bIyM;gfCE<4A"`Ʋ}ak6 (xhh?Cxs,y/i<5b~8Kb3 3M7"e|}LIy уJ3gt-gŝC⅁1Hf"2mJ8t ~V(Zaw ı˦ I;pDJF>]AhE)/26I>lJhŨ#[ SDe#)wǠ >yZ9,FI = c#<7 omBdЗi{.jqVJ;4\12 S y"ahhbz0I07mYee`}uw^ʆUXI`KŸb* s-v#FV4KLb'Y9 -M$͒Њe$)#܍E){ ALsk܈{5&3Q7ldDs6(-\-tVuwԿ߻o8N8(@;=ϾLB0МS 12 q"60ΡŬ˓3X!Wơ A?K BMx3\ ON"thFF Sޯ*,'~v6(IÇ _m U Yڏ:PZL`kg%$X1} P6/Hz(j4鱻dx[xQ}B69J1y6FCɚp@E:f*%P` `'Y~32(RZ!ZۏEOڗӢp'HYp6&Afxb:5-'tW?ǫfw-KrOu1g.ѧJ*(ccϳ?xg2 [0!m^h7њ _M-8SRVkn}+iK!7w1Ց ۼr9CBk_!6q/zBMFL:fF $ <2xyRߧ?x`:KOCd`#u)"G, )  Dz1fNq'Q)R̂y͘%!l{Z ;VX{aE/(օ"!OzRΈPȾNcmEQ*(@:wrXo_ s"B1n'[F]Qĭy%4gUV[R"WB&<Ds>*:0t1YH\2@)]ɇr0#|'%UCi{ %0&0GbS(-APڤ8FԜ/`%Z9Jq|H!S# w W|# W7fH:zo΁VX!hAOt{6>'p ܸ蓙 D#ht{ ݙDAo06ʆ4:a]{;V5 "w+]Ds^t1W>.ph%v>4[39o,α;ulNbFL5v;;8X5ǝz>HV͘e3.̋ط yFc`@p:z{Qm5u>e9n&-R[RD`%[0mcRisԙVSo,lTTWifpc,Iz̄n]& ͟ $VIIZ2!w/sW޹L#0CkV3"-+[2K1mͦNtK%hKm5N+aSg:OA|c74`$_:x/ߧ)}T;fG ,m9 xiFEuzW-cڽM 6[[5B4k;۪ܦjUB0rBLJ۫Dj)>r(m"-%יRchBj s̶R WW`O:jƘIU {ulN{jFa$piw_:ÚI'E ՞aJ> Fq|Q^s*wmqqwp\푫S0ZsKIx1tYeIkA/ٮ*+6a/ R^Z)\2 1{Utl% 8Utpāi6Y~B6(0vlC'ʦnnԞFx S0dopTTyɸ;#8[SF=܅58L_iQ:j_>v" V`"??V\NEv|=l\3Ͽ91.LH?<~5kgԝMz-ZUOYA7}Xw\L&Z`4hdtZ.#pasM\`tOw оKvCXj۷`CHmMҚ{N&5F^'tWpd9'vM{fOQcs#g )%,BFЇj[QԹ*J+Z#a^5 ->sx-yghR*P>OY\jѶkMU0Uu{UxL6F5KQYJ=LdWp4P"Uw,żtIM=%6>BŌ򌰾+0Ţh-+6/ޠIm{ ~cKg [45:'osa(XڮХ=wLS_jG'@~J.~ ~k{&)PyQd_zN,vߩ՞[ ^&X\FCzbXYOX۴$^i^%=腽x˴6jX&1 tjZcl+S.'YC@ L?8n ӌ;띟q"Rwޣ]+l'G7&5sޤE=\ ,`XJ*P{CE&8)u6595  !cX9>Cm`1_j;j`hIZ6Sa6s\]+: &HT_ J&F;_ǘc_M9m-t#qlٚ4X7G;79W쾻Ĵoe8Be%@4pC md몥BE:H*j"'(]*~<͉ΒAv؛ *5~K\A*^aŦS>yo&|[K Z_4(&Vl?1Nqu]sNZf>3W#?ُTښ׀[TiݪCB7G`۳_eendstream endobj 314 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 588 >> stream xcd`ab`ddds4TH3a!;~<<,+~\$={ #c^qSs~AeQfzFFcnjQfrbobIFjnb ZRaQRR`_^^[_nPYZZTWvt-(-I-ROI-K-Id```d`gb`za cʏ_, k~a>w{ߊ5wqέ7k%z&L5qݽ3]𝯛cςD *Ǿ.dfUw{UW{E\lxt7GI NY(?gl݇81 ϐkk='C=ng sz'藟utѭk'e6ʷ4&rς@7O~}}&ߗֽB^U`t'S3sR >=qNr6/cĬrdK$pxm}S',p¢Wl=s3%w4Wf^!Y2~ަ).> stream x\Ksq^}^X[>hCϐ GXa`R+{Y] KCa*+gew`w{y{O~^_w?<njvPKߞɓvW.;0)ߞa֚wnzo‡rC2 gуVj~]+i=sƤT/nZgkoIlBTɶj~CϥZ/҆Xco~#S }/1!|:}!xЉ6>܎bK QtGohz+e g&c|mUǻs8E р_b&d o oy!O<08`h8{~hh%L.i4vmCU+z $&`1=X%a\dWK+Dpz?휫#7mb]AXk_? i.-u=#hFB]}awaƐ;\QBLxNPBBkTC"73|Κbj6#/ieBg1%u5u[envXLㅥʙD8W'&⢦_kHٿ?/@px82p:PrG@ޯf]HϬDaFrZ%W!2!kE7DR8W jh]W}"*pC[Wҟi̐י 4Ukj]iU+]Lv2> `Z`* d9m39:ުoP&ZV&D@έinM8kֵZ p0?CY *9;Y@ۊцYSIYkMadnd`D$cBI7)ș_VyN;;iձGFKFn%?0;na[k:6|c=/瀉3oԄfRY~7FR=[ Lʡ yHυBA$^jߓ<?J3d.*>l ]B칆ߋ/1F x<"|u⸂I$h;ҳs P&NLk[VA7^bsư-2ZtU<#qAx#hDՌ)21Alk1ȩ)ݜ]k;x޳᠟a;0{i)H^Tr`Rlmh'_ en:'& ÚL9GR(&SI4c-GI p-*_e<+87dZM6R-:ղ4(Tkb([@ Eߎ iWJ/y=,g;b jhY\9{YRJ**- G ,u0f$%kRBK@%A0L_`i],GjXۥmM:LK"7I_)fJ{}oe-s`..orG-YgG2kl^ ;&)0@k/&14=Lf#inT[Kh"0M]~,Wlm߲/ įu|A1eQrv(ӆ`Ȃ|'"дOr C-s}9 ڄxÙ))O.aF&!4b։[d{9k׎+-!lÊ ]Sr 'uFca|ZD*P'dyE_jP- 2>7.aoDp(Bِ-LMUh-#QvLSftWt6lF\o-z4Dsv>1kMLzx%s-mmg'$lԆ*R r ,?1ZUWP\,=6a?e{6px?jt(1Sz%ď51;̹[Fi47=X;x#]| Ϗ $xPY-d ^Kz~A! ($бQ#7@mӉ#?ڷ zJWa{z`+pU4f,mD(cn "])<^Ͷ5urԎy3{Un"/53%5eI63QkA_8 y!lv Q`ZHb՗dȖ ("sGEgk˦D."LcBa= t.@2UV&iNvbI\TCB%nYuw6?pp/2Å~|8]m ݄aXRtnjR9_z$Sr$>'|d9R UMэ@Ȁ>D ZcAOg PJg?L!șXz).l7ebdA߯QN620"f2kn:_BN܈PJH]#a[l־w$PٌȻ]  4[:Iܽ3䐆M9qsj \z^k+.C׹v0<,,_on夭\w#ft˺ǃ쁌ccyө_)t#K 20]oTT0~6efնzL@]"$2i'!Km8ns' {#Ovda=z1YjԽӢJ_UʊuZJY#UT0K`Ս 3]W8Q[{hv1 ftX,2;ؚ Ǟl,d4 {tb^zi3zY;&$Q&" PV@llVS`cAEJsUr1߭4M5C˞#6떺|@5{C" ]߸QR(1C= lsk$cO%Ov :׫mĜp)f%#U-S=Й9y\nfE|t15 r}m7X|W758tAX#`kc.b?UrNFZ}UbD"S<)w?ej4ޚc?_6sq!mIg f6RՌYoc KKuImTtLf3|)i0ce{9|S֤b-]s'b^#6lw]u7*E7˛p]A0 toe)z+8P>prd1O:sQ y;ynJZ0}Η:.6o9?.aMbsK,涱py~ѤSjeJ|cЧ, ?c;UNN/U͐u밨K10 lC R\y2}hOio/"xs8>)XWt%I?Ps.tcI퓻[Z'}#7HTvwg6,{pWi3zl"Ͽs1RR-721b#tGj9ذs;qTp4y -+b֞vDʬyy٥k5kq1rYDȶE^_Eəu=$wA./Yn}dEAԬ627$4IL9= y,u'|n;GqKm-z 6_"Q\Ģrɒ]iхRDrf0YSaVYJiO^ϏiF gmò\ V/u]L¯'ͷ$R;ķm֣ˆ}[;e䵋X.RxATW|Jck5G1 XvqlG>jO+Lb{~k<>Bm|!^и^ⶢI`m]ߵ7)ySAtP6~7a_D2&2-XiOjWyKy4USkܾQƶRe5y'~nyz._Ѻu7~knRTmI-~K3ԃm>&[9#8+">S2޻ц>rٞbJP]|2Dz%ߝk<'endstream endobj 316 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 321 >> stream xcd`ab`dddu 21T~H3a!.k7s7鉶 ~(Ș[_PYQ`hii`d``ZXX('gT*hdX뗗%i(gd(((%*\"s JKR|SR Yt޽M3~_+ۻsO/{Vw\B ۡ݇f<ʛUg+[yNƾ|Փxxe` Kq'endstream endobj 317 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 2594 >> stream xV PSWBEb׽7V@)Z*TiZ *H!SIyD4D|HGwEmm.Z>scgtӮәMf;pBD"אo8~mF.yS"Sb%TJdT!8kw~IZ^+S+ \JRh֤i1qa ?H% 6D!‰b xxXE&k%:b=N  \,hS!O\]\7?+R}n3ܲΙ5ix6rEQOG̗BRrb<kNz3uocz.\C_~K3ԥ=;=Alj<'F?~yY!Qˇ=3yP]},ķ{X19,cLCM(˖yu>r;96Q#ycjA8w:5wฺE&- 1i SIbt@ p;z!ru/a&a Nl96q4喐M[(B)w_ LˑtEW*$`"dd< 3JsX72wDѢ?s"Rc#>n6)69<ʀܚ%%Y\c28a:q9ׯ嗆V!bǾA.@U)[_a*B>ݎDh(I c.Q\hV]V ]?pfjUNC=1~P i;;xgLwlh0F1‹eFEN=S &NnEl~@S51o27li9/|  ќ :1 pSLӚҝthNo+8Z{m'S:"ɶb(`B+.5w:+S$ZA9S=%A)Evdn#7(ԩ v<tȦw[7ZK_^Ybxbivv]q_:M3e68{++*}{ˇNrv@PT&{mpӷ饑zlvWZ*hTu~I-y!O4䕡c [{?l6Y뚸[ugSw%g T :O6$zsP!KýI^^ MбkU65OmΑ(ϴkɚy{aio(Qe@ц3 uP#hc2Z0 9B{GD [Yk];ŵhy4B'36KrAMo5ŋDžGxuODQs @]BkrS,DCs¹w̲S),ABVIt5gC!i Z> $endstream endobj 318 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 648 >> stream xPOqSI[ͩ\,sslVkt"d8{xg9=ljh|ѿЛ^a[>/)+0U:ҙ^>ˇ+# gi`k~kV.}V-ߋ)p c1YDh:+X7fj`da7ZhC5vYqv;cnjL]4㢇^ VֲsuvcJoa^ 5`LIJĂL.rߦciO]41@"'8 bȧ'73 )*d EQTsW[mk" anG/+@X?䆷.h&"kC(Ur .x7htVɚS-"uTb^4GH8,'E`23'&Sz(Dug=@W}EDQ5P+4 O =I lTCB$k>h*$xAVJ% ȗg"an~u0@  THU#E>DY/;\ACDfbUuY(J_WmVkOՕ 1*endstream endobj 319 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 662 >> stream x]HSqdzΥ KC~n͏c  TD?ozznO lK-nO^~..e^:='ᰉM\HvA6b{hk|=x6@۹.6G)z|t ㈒!@ "n759! 1|Zm!*WehRkj7)P8.B:UJ-u-oi_I) ? (~MH&#B6dr̔>^3ሜ2p6R܂и%2Fl2< ƈMNQ OŅWfpdvBA^PnS;A0@Z]jFދkKDl H_2i&Lf(5t7?o?웻9<~'xBgBJɔ ![۠2'CUw#׆qqƇ: Ť1bc⤔,-a(|Q^n:3oC6ȂR<&܁h̐j>)KRbju|D?C$endstream endobj 320 0 obj << /Filter /FlateDecode /Length 3925 >> stream x[Ks7RS9eS>*eƒ"{m=bYzݣ!@Fr#?Dl.O~?鯛_OaDiFmڜvB?(6^Q89:y9|IhN&Fpn+F+Vz*F+u3xQVKG?6 iopΗgB`|a;6M~Z(=RGzO0Քhs0-1Fhxgc54)[(=z!iOi!(-0Ơ]lr8Ni=:-70FhNڎ6Dd309Yщ}U!HVQм8oQW%Hyoc;1`i4)Q UT_Q;Z$p;lnq>[u`Vv`%d|Ikp.>U2H!KڑHsK2[X I]=WK7Bh;'t1㎆w@ WPxJaNDSZ1%h "WK^$ Bc/ɖ>zW`wQw)6 B->ӣ`OW8l?xr2wߒަ$94>}>(%IhB4N17z6B%_@ÓJMuC[ &Qkk4p"iMoրF/ik40nw1 rZ7{K5Z{ѠxB;Ol0sR0  j4>xZf`h^[ϱT+~ c k:Lep眦\oѓYFyRr-Z0=Ȓ3Og< z,z&E/y$}VRv9`${ENhi3g5tkTJ`W371 7,h>pX^UhhiT+f|v}![I;5/R|m!9ɦ<-<.Ot].v!8 #Y^Lxm?@ 76@p (N6hVqA#@ᛄZ :l/e՟ȳDR  qCu3~׹ i2#GUm,Lt#A!oX&BF׷b.r7 )K++ԃƜ~ʃ`m꼉[ 9QflYɟ!T`t^@*ܝ̈́oUk-e|4#WڮDe7f;Dټ9}i$T2ʜYS&H(ns~eals[$j֋/oK4R衊XMT BsI,]0nr<|D b0BYD&Pqw$kj)=p(VʲY}gJ IP .*5q4jr3Z,fܧ+a[[D>k-=!`^0ԜtQNPX]䮝6-{ /+ԑc+t($e>LE\5z0O4U, Ѳ0 !S^_Ԡp^h޹.Pt{&7 >r"Rj`f=i:rgg} d'qT@ls>T %a:TR11ܼmCƦ.BJ \fSqSufR)raLzSzxWWyT拎]/xIJ,e?[SaCO L#Y:z?hPgF.p$tK´2#e[S㈳f_ @/MrBY9,`]^: Oϔcd|: |:=x|=1fAe=!4@C3Uz Sb< ɐ֢l]#ǝձfN `*ޜr<9}`$_iG$FäBQ65/`|ҵ:}Q`菗0*.|"եM,dF^>QIo /'w6hw6xne{6?lAh?O[ aZвB^f:{RLBa7hF1Xxݽ Uۃ)> "iԭ zpI':LZieqQGW#ly9:mYʛqJc gBrd9{=#1oz|+ s(r;9 yIP5cs ka&`爃Ȏh"#?aGm+sb;v~Wm4 dx:m.zUء?aޔDirgڼ)vQ: >_^OfZ>WF^[bMwX.w뀕>nSM.{ PvRI$)x yqI]+,|opǵaVG5^up)"Cko͝GTfNPmra}^=2cOƶНMIpd&ٰ]^ r(~N2r\TЇJKOxSzUkٰ`YyղXKh961wں#E?:[Iɰ?]|ifnZUi=f[#SːF7|vn, EHsK%tUe. S;ƹK+r[R7_W4QtͧJX 3)V-Kd%.`rw)`{TNJ 9no6,%.2qCKU߶~uX(*Gv12݌?[\^w'IDl&v2Zҧ6]swɪ`M4YৃYvL:Vchg̮t 04g_H ˿+g$HsW)ޱ.-+FcIrئK2xU8_xT]>eFd\;#'V Ts77 o CPV +*x)̢endstream endobj 321 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 2709 >> stream xViTSg@UNo+S7Nm*h*JU@l!*aXIBDE,.hj[EkcEJgt̟$9yy^pw#H[8Y)R&Ltu^/ xwL{ 5ODGG I&*5)qj L<ɞ;_LLNS+RdEJA>˓)괨u[bBCö'bJ b2KB$VD1XC, ^ SE8w@ 򒛿g),woRNZ$K /wǭpO24A 'I*Py`e;27sVQ6S7C3tCi'TUPa*5 PC4 ILVE 7i3h Ƶ!y;X/dV 1?$UN's=T-nMd';{CaWG}|X6L ^xUqu&9yЕ`qQ0#B7~qlf TyUeo/xDJ1Ak~h-0W`UXTC6C$0VVww%Oo-Ne;t GQ$a5` O4Fh,/e*j,佪@ӄR+E%_&tIg 0|rXtF0iFjt*UP@}ȳIm/Ԉ(j>$>rU1pFu'࠷vʪw5gVk8uĶ辡\64q] PKHo;`M=@7 |ՄP&ka,{#ޖv-\I'H.Thb,W*7vpAjru8ц--j=L2TԹJSṰU b68F9.H}8eZ#KΛ)^sk}h*KqH.=f. 3y>v?!A SXE=JE7 qTfN0R(KLS s=18|]:Zb:"JĿ2W:T X'<_' _4H9R_%lJW}:@ls$~9c.VPhO~6g QΈO/:Z^Gtp*N=hQxj@͉())XS>Oܞ n72s1Wյ:\sE䆾rtn,6G$IO>Nג,H +pwla2ܮrз2;~ 9dEcЮdX%i:+Օ9_긢5Ii  O Ga칏`5Hڝ$(f$ID˳M*YaơWejiFGFg"yC>Ng}Ny]k~ B._&)66gI0GtDqje[tRwP: d?DƂ( fSi[ k,SO|0ٝkNWm*(6@hͦ9EٖGo<8Xǘǂ'z'J#g$.7ftVyؤ(Mlr^9X}"V#(EJ. Pe+)7{MM2G|SC$R2 9QE}N#DK=M~Rd8f-Cgdd8B6_5<=?װu=> stream xcd`ab`dddw 641U~H3a!O/nn߷}=\19(3=DA#YS\GR17(391O7$#57QOL-Tа())///K-/JQ(,PJ-N-*KMQp+QKMUMB9)槤1000103012{='8÷}%`wyV]پz>3l[Bz߳f/;a* r\,<'\azWendstream endobj 323 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 2336 >> stream xV PSW1ޫ"kkbK  tE}@UܖZ4BQ@D3ɟD! hmeNWvwN_fhuLޙ$TJ"1/GJ|H"LB?YR 82u%ΤF_e)£"+"/R*`tV6o欷m n #0J|WbI4;UgpxE>:[8 DBpZ'BY"û 1-A0JAer^C E&5C d$1K;H l}>(^JpOƾ :wA#ܒ1"L9}Y8?ߋqDi7?Gr8'˷Crf &#{W!C:l־A Ed蚨o'.m.ieٵ10يSRC˯9hJTX|!^]7G}8zO#<7k= 7痒tbTȫ؆RX/UH滌ң {+'&эIfqh" ,~4so.|wI@f͞|T{9WTYMkA۽@Gw2͢%Iiu8ֆ$'A!FT|@5z@/lGۙVK gmο=P3Kmx^{Pd.ZYˡ{h4M 8e.IW듢0sY*_#H[ҏڃ' 7v5ݪ{eɺW|a\;le`JxAimUTs_CS. eviux;T.rr*lT3<ra③#r*Pg _leMcN_:{ø(Sµ&nՇtXex]F~xOE-z[h@ Qw(5nfllQ$J+vka)(bzXzCQZfYgJwCW:Fx֑ٖs,N8(Gp2Y[T5#kt7ټ[nIh-'гhzgr`c5ֶcio=䛪p>ZؕC_O3Wٗvؖs 70/*8EgnMv9 NqCb|_Íz/9Y!r0̴]`Ņ\|frs7':HGۘ$v7Ld,41(w;Kg;Pj`?U0agkE(r'1C0'Tkahւϱtf2w&κƶC,J}oJz!{[HJ4 wQH[}1.تx sYWC5%xSZ W<g)H6}ζ+ԅsƼ0$C(vk7JT'4V||lșݩdxή Rtar SG}x֍04ew_à*~Ď~('j6ӷi^6ShO> stream x={LSw{]*cCǞ$[>2&RKֶPcPzJ ב2P!!S 1lb[۹s:,'99'9{TxEӴX_o'l„E\RH6~xs#)M,Fݬ+) Kii{v/ʵfFm3Rmj|QZ|BFjJOIlrK\ݼMg-峵R[21u_rSUk3Z(fbUPT CRQ)%ubCkQT5u.%-dkؠpG &w Ԃ=0'EU\2_|3c;A:0^QQxUHb##?`&']Őǂ^2AΊeBmH4-"4A>:PÞ] &WpndoCD>x|fa~]uF&|\VH!d/%[}MC+)n= $*U8?}lV#ݿ^3(v0vp[σ⫀/Oe2 . ,S N`= Pµ D nEP11H1G%v'}b5?~so279Pb7E?'?/˸@H9Hr6y9prpx?euu[4Q(cH:("Tt̀ ş@G=!~Hnc M*{VC71#rrO~cfeA⳸}}]]-G |,FcM6he })A2Ea4ĭ"/mol,`I `#q[FwVs4@{j2<8CC1=Dd&c`H 𲲳]BVuvɉv&% {|RxT+ҧ> stream xY XSg־1{U*^a\SZҺ[-("!&$'aߑ=ҺֶZj[j/A3:<',s{>$L^D"X9|/)OC^ O D\#HB5ʰUP@uhI3fL:}?UO2u_p] SǸV͜81**jOH*`qQA@WO?mj7|B\{`PET˔T Lj~za(%[.E@`U!4lQ?} c3+̛ˌ'Ƭd^dV1f-yǬg<5fżgܙ$f!YyYLe1o0`f81AL/„0PƁ d1iLES򰗪;W{E^%D[٧O}on]3;aCŀ{s 30bPAI;908 ?0N= .#\fwp\:t,JISTߵO/AHp=zNˬhj1k 7f;w")26+ɠt.(Ù'C&ZŲ@d4\ Gvevx } 997.ް\ q& ,3v+ GOlc@op A٬6 e~?`H}/?uTۉi] h#1GJFt; (_>&VIi 5l<~t/A5>ujrӦ(b#-]-bzT-g܀#kt&[q&p)HMS8b?opSɢw⓷a.Z+7&ҋ+*9& ?1UMNhz 3C,Aa'Ǎ?:] ܍sCd k'T*› ^_-z}V?㞋,eM앜-g$&E\now *9ܮ}dig89U=+%t J;, 92qF%MwT7=}d,q"OmrڟU>ԂdIc8ZE[QdZ{B@C[ppm̺gQw}P<'1$~ 2"1Ւp\ę:HLttE"'fyKk"M}Ǔ'V#?9(h 9CJ fc!(`(r [kM_ڮ^>UY#;$+;fTQw9?Csg-jvERj+QИ)Zc_'_1=픀dPA;YNư|pm.QvvArQ916ҢTC-JQ'Ņ6G\^,Z!l[c;ԔA眸C1w>758 dAij ᐤehlgʽOzS5?̪`;A<ئ/ (HҥiS'Lg7 .uc&V R_)-5A"aqZ)%,6|Z3(ysvbfR)BVaVA'qJҔK)ddpV2E5cfӠ^kWN^*bG3U2=XIMxn>KUuum# ?7EucV/ \ ܌amw%Ϗyc;Kb6 3 ծ$ {Ŭ/MhHѦ;3,Pâ"O4. ܡcԂQ:n{] $?q8ѪD,[ɧ惁>_YjDFˏ pS(85iKf9Mj.PTXTc [ zFF] fQjrOƪ {4Hi%嵖FSM7H:Yh"nXkh: {b4s=[%п*Rd(,kj?Z@DO ik}#*ր7FWTpɫxcSQ"?\~o6W]*_a!i hf[ -@;^[l黏cQM).#WU6>~anY"rMࢂb1`΃&.L n?N[k\$\XW~k{iAd&#)#ō$SlԘq|_*2 x+vY.o <֕ $wc" h5MWnɌ8 ?8W|JӼ'Yiޒvyw Ao} 8yrD\LdlBj Qw_r&j\J.d֯ΆHZ%Op$Y?3 YERY`,:$mf]?l^N^?}ȿVX& )Мzb3 Mj奕fLn9{y ޽#nm)).ZucOu+2 E6?M[l%%BBLAk4txeo.O~[=A}?l>P.") &؜~f (`(˓fQJA}|vǡFޅK=8MiX.X]sf?([Z3*p (ЕghPPa6lo&"^[vàJPgȯ*0C9)*CK [cuF o<"[/CFIw(tq*Kx$mvJ6sJ!p ?i^&5#SnXݣgT]Sh2 9dcgٱ,qE__Vn::{H0Y[5o/Æ;6qe&;uZ$aRq+N.!eEB\Z|J@/KΟNd}DwmՍe{wT+ҵj\MZg#gOZ+'KUw.S#ʹqXPtr:͇>S ʊ9۫#J󕴒n-+u:N)9Ok&.CǑ Eɾ-ߛn6QϵGU 3|p/kc8PxsJC>4%yY9Bc=2!@˔0mD\3@.ʆ⽖D_LD)!>_H6q=ۘlIX~^NHOoޔCwަl\"$ZJ| "#A'z.~_ o  k../FҒMFt.='5^Car/s!srơ1gOT<5?.:, ee 2_e ?Z^ܜSW)I=y-z Aiun#Fcf&dsiIS%u>ּ7Xg介R$L%<݆ ='6 +2Z'MJMA$#|";MMSnvV1N}xD+pKҥhӍT[ky> ÉIfd#S ^E)׵۲NR&/oV(jRY6kjz =#ǁ_6vʛw|ޚ,^-їgkEmi HBjck*gW~EbU vfۑUNMK ~R#)fHކ[ױ-۞TZj-2Ӹ] )"?CKFnt۟3K^UKSύ+K }.H ^p/ 4ϐS|C)$$BRD$`pY{'_Ω}Ücτ98mVq\3~x9C# w>U1pKi<-i"#d R<țFlDPXo*6 }b "ڂFV00ZF }{OcʱVfߟatendstream endobj 326 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 325 >> stream xcd`ab`ddds T~H3a!Sk7s7넾G ~"ȘW_PYQ`hii`d``ZXX('gT*hdX뗗%i(gd(((%*&s JKR|SRYt^}י1y#no~\~r]O9V=׋翛}}5۟'Wgq>7<_s.wt3\Xpso/)nxendstream endobj 327 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 1216 >> stream xTkLSg>eΓlӝs/#Q-xyzJ˥KA,L(B2FlMN :۲8m2Xn3?_7y2 qeFfvvJ6Sd+rD@'lϣQ$LF#3 z&0SRa^KJJaŬ٠L g5|4(b6qZ˗3yޔ:ofK[9s~ZfFšK] 3Ybm.qMV53.l0ll-ǰu&,rtl{[*]YY+ي)F{ :/w#h}D.~m+ X*xt'DYAaRx-P1ށ{#\d)TUUXլU)͊֒.@դ uq{4еƵtPSj$^4BJ׉(6Ŗ1$WtXjU B~}۵*2I\YK{-}4a&Qdzۨ:O}x)v > PN@Q⦵ukZVx(pvs~88E?ЃّQVQFSUv1]ZHUi؀WWn _.J[Ca#հUk5 ėљ4ranCR[lY9Rק8G5{e/#IC]3aw$!hV PEKAd8 S>Cz'dJ{),$PW@sv)4I?J(u'VkuXTB+ >BS48& MRgIS D4=x'49G%]CGb*@z=DY" sfHIƣ)[qUul\5D8Ȯ.~ K(T6R?BC%_$kj*"k:@tf8Nw-%ZWGtu`.m: mz ӓuQJ@7[ v"u4хh"7}}}y99yyipX]73!\ߙйf}dКgjČChiR*kQ c#㨱r.9!..7ݫ*endstream endobj 328 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 467 >> stream xALPFؠHHl腌 Qx51֌fnl +u Ʉe&Wo&<{AnF3dQ7pp3  !EU2}z1kVB)d"5I3St> stream x=rǑGLh_BCZr6(G؂$? q2m32H=8VnS=9ퟜ\яG2)l<lrˣRnx' lWjXL:j-Dk=3;**FO'O͉6!lNwi_!Kט)͉Lk^E YnJaKHk sM3Ldm 45kȘM;7ώNsp2Jmd2\q?m4O“xxJgD=,ŁBK$PDv@)5ٝԱ )r~tg8tSeHmmp0 #e 4}<YR@5H~\݀YYGsT\;ti;oP; *I%!(i2#<iAmNVOF2<.WVfI[𵀫QSILU]bsd* @wc!4”|#U3]JM#2т%n1m؝Ϩ~&&gȤ ژRJei+Ȕ(_WÙL|"pXfVjUsޱh.Cz=1\A0c<`z[t8eH)2'7qe_n1FS%En[4,q@Q]H,D>3n(SJdAx leIW0bv?P;]h tݿ6URf.,d y]fZf.`zKֳI9v+*8)+pXdh #e>xPFa^". a%ll9gai-אj&rgIQ&jgifhBSUHǀsk}aMrdt vY;:/"-&2zAҴğW>[Vkz!"S虢ZCS!ͬfNȿ)YF2S:ghѐ HT#+KX({gmafSfX4J깽֬?a1Q&z;H)!q# *)y0GDNir#8${Y>Z V}72Hn~mS獅.`CTAbHXpC=zO21q>E0px; FXwyBj ')6 ,B+~n73;였ƠX?쳖{ cuޡH̅{IJ /ʯL̗W(\C,m}ΐΆ i㠈W-ZWϕ 3Z^MtȇCҗ*6;p8"^#ݘ>p 2iR7vŝlPp2mc~R.-.."* yvD5WՈ7A}b9HR): @'"">#.i;nO+q )ylTyOPO0Ő߿0'c )*hnDיR&iw &&9>'/*&m=v[QX;Azlbܠߊ8|he ߪo9T w3O E|G#t"q-r-p o:냘J4WĹWIۙ bU>Q_5d.IE-ɚؕ$Z7k#ucu<jRmTr_G%*y`X6Z閗k+Zkn|F<$m\,^ HiI_q2y~aZӖXmMGKs}jX@+OͳZZ^}]O0:L0(”kuY;ĔRXjޱt*'J˝:̝:qU\8t.,p@m-SU{Xs2iˁ)-AfupK`.ctSOeM/*~.XJ^+,R kSﴟ[he}agQXlry"6c/i @=m:? 0[0{o.4-"TC)NBdկikJ3U9MDruc=kԭzB?1_E-0i1 1-h6:woޑR]jQ:e闡I>ˋVN]0fȰF;UDjt5Bg,u$GI쓬|vj}Ƹ\_ x9>㊿7MlXFZŠZYm5yk$H5׍5.{=Jm[v8:KinX!Mdq{MμVK7'N*50s߈V#?[`endstream endobj 330 0 obj << /Filter /FlateDecode /Length 5827 >> stream x\[od~#K+y}pċg}Ж4ْz<"Ylbg`jXWdq~ڨEoo\ݟO'nxl Nʗz&jhyz{NTVfkJNWn[벵&gޘ%'+O'CCx׉ uZo:~v:`͟Ow&Z_[__LL(?O4vL{)Vw1ҳIkk0o[%3﬉Z҄ZfBZQz۳FTIlkWZ-MRAYkm Zn";˔,+U.15/3fvL[l}InJk6/5itvL }8(nbvv a~Mr">`D!AQH\X"8#rvuI.R15S^gUp N6fKM->g*ݿ$zց.+%=ԒV_=$Ig|xR&"dl,b٥ыeS>#^t^5\;"qkK *iݥ`,/h[Ytʧ$BԠbtؚ$ caX WʤU֚+N';Wa^zUܕ%`hgmW>h>=:hUzBPfI٘"¬%>sYC)<#V*#T&Őp΀Ũ&R%pp BUGO}+#77We&`zL kIʯ2r`Q ^Q 7D/eȘv7.3i ;t ȴp]uyg&)) /ChM1K!M-ިm7I/*]>y!/f=nMtL^64H"t蔱G\ /N,7@OH@/yG℆!Dhs^:aWb>GӘA/׍epzM"2мZC[';]Nwn&Sѝ qɢ7"Ekʣ\i2)XQAZS `R34d*``)c.#o ׅ΄tݬr{zs5>sfzz1> ^ET iV)Q!`{cr4dSOOrRNJA(`'|><\ }KJ€O';AІM _FioleSa$7`Olfy샰.ނk4)G̉!Jb,&;JKt`Er]-E L ?B )ЗA!X@p`!|,PRl" bmb79I` jQKP(H)H@y%`yS9K(nrF«"K:pK;l"u`#rY([ao  9(|{p_DepvDؙ@T)%`+HZ-38l fRJ(00nNHʤX^4UYg)'VG mb2>Ll+-(Pف"YbKvJR`G^ X.ڞIrU˴dՎɬxf0g2+WDȔ1ؕZ5 -^#Ӹ*UDOY51N*jnea>R[[&@-.x`Ů`3ikw L1R$Uɰ)h)L:@ڲ@_|n8Kìe?=?xEq$7"Hp2er`X"49>$r.dL otSB(GB~xa8d`3H"gnc\WrCD0RkpcNEl)‹;JR(32v\)zeىLJ+# :G. DViSb CH"PB6Eiŗ]IRt!eSU( g}B"oeK4m/rD177PCnnzLEՃ]\@Q*ˌ0HF 2(M%zˊ΃ }i~(9ٴ9XD}gJCQG4 ?醚ɮΛG7!"a=&G0@Q]B.(ݗ,1 il"H(5TΗ(A؀9xp)Ѐ 8H8_# Uqq?a@@ @㯔FΉU@W}owG(0x$ڃ/X_n.6mo3׷;ZF814\(>$ M\;B<Gᱰt?Gy)rͫW}9ag"WɤW@cޫQD5^{DN"zGe\X|!PQ4 A/y_X/W o\}mPOK,Rړi/,bP ڡW ȧA{EJ4Ũk *=e-&caٓ 95$uji"ߘhX"ymPT"] /E4VB*ZРR\DKD3Kӕ`bD"H(&rRÃ$Rrk <R;IY¥l%ZJt%\J@Gp)Q .QVR@bK9pr4\ccKw|p0\BSpAKT%e+&mxI 8^R+x)z%`NĤ*j S8 b5WZ6ĂZ*f󐎙: >- ¢2+fhbŕ("& $kۊ8ë &Pr1u`;DGؿ@1\ _#- ; >R}|DH(o %РtZK\?>,)]~:bZR~/%vU\Gp,=߈"-<0açd%/Đ*j5ɉ9·]bNRTQTaQܠeKxLA\;OUR) %3%.TT䋆"Ǘ#\8rnk^W%U1\bQ±{ٍqGAh'aǺu ҁc^,Q+NR.Wog,ߊi}U/g'τ%g[b˥n{*IY6Tq65UY8 o]Yf!a3UKč |oo5!E"㬔ddR #}ҺD5=Rwu:15/UmxjkGk.NYA>4\O;~9YŻ9IZ@Ue\?^qYyF/"pܖ M\wd턉N 1?.Qן_&w9ݭ^ D?Mj*Uw6ے쌱ө!Vҫ-zzSҳhEӻh(!/@[[֬_aD[cFϗcd+ T^vw1qR`UdEi֛tCq`W<S)㈓:R<,r/!5I (ΖLj>/aC'7t5mY) ^>d(#/)t>8Puk] &Ъ):J g_X]|x_&GVE8>7S'Q2/˽k^[`Q^W{~u]oF&AVʹJP)ӽ:5蔁[a׏M<[s8(~tZ!b:nx#D:.QFOBg$ O%R y䀈x|ϴzzH>bX[K8~ 津g㔕^Qo^qӥN 䐦)Ȼz&b,Mј/[xkK _r}>HY , J=ώA=~)ϔӾdИ 7.a|^C~>}_Eh9d1,Μq3 gwrMoM\!+OMjlx1\&x*FMS҉FDZd}Ki/ULH7TGt^p%0[ҝFz:u] ]T݁\əBn;BbG#JIh1vP-'oe'Nz^ݘԌݥ32RO/p{XW?+L #U$>.%7w> Q2Lȑ%ɡKϐ33Ћt Gurh1Ǡb9ۮ3F9U*O2^!?ԡ^34ɽ;>Z)G/dm_K j<28 ||UncV3ƣFkȅZ-xj8wQq=PRA9уǮ|m9_endstream endobj 331 0 obj << /Type /XRef /Length 245 /Filter /FlateDecode /DecodeParms << /Columns 5 /Predictor 12 >> /W [ 1 3 1 ] /Info 3 0 R /Root 2 0 R /Size 332 /ID [] >> stream xcb&F~0 $8J8 Sl=4v4͌ӌڅrw4SIr [1B1 2@${7XH2*L R`=i1 CD2eA$XlNfHbJ6Gԝ"U~U b+HigDrom0 ,+^vm0{6خZɏMT "8zjXl]Kė Z* endstream endobj startxref 205352 %%EOF strucchange/inst/doc/strucchange-intro.Rnw0000644000175400001440000012166312534542351020641 0ustar zeileisusers\documentclass[10pt,a4paper]{article} \usepackage{a4wide} \usepackage{graphicx,color,alltt} \usepackage[authoryear,round,longnamesfirst]{natbib} \usepackage{hyperref} \definecolor{Red}{rgb}{0.7,0,0} \definecolor{Blue}{rgb}{0,0,0.8} \definecolor{hellgrau}{rgb}{0.55,0.55,0.55} \newcommand{\E}{\mbox{$\mathsf{E}$}} \newcommand{\VAR}{\mbox{$\mathsf{VAR}$}} \newcommand{\COV}{\mbox{$\mathsf{COV}$}} \newcommand{\p}{\mbox{$\mathsf{P}$}} \newcommand{\email}[1]{\href{mailto:#1}{\normalfont\texttt{#1}}} \newenvironment{smallexample}{\begin{alltt}\small}{\end{alltt}} \setlength{\parskip}{0.5ex plus0.1ex minus0.1ex} \setlength{\parindent}{0em} \bibpunct{(}{)}{;}{a}{}{,} \newcommand{\ui}{\underline{i}} \newcommand{\oi}{\overline{\imath}} \RequirePackage{color} \definecolor{Red}{rgb}{0.5,0,0} \definecolor{Blue}{rgb}{0,0,0.5} \definecolor{hellgrau}{rgb}{0.55,0.55,0.55} \hypersetup{% hyperindex,% colorlinks,% linktocpage,% plainpages=false,% linkcolor=Blue,% citecolor=Blue,% urlcolor=Red,% pdfstartview=Fit,% pdfview={XYZ null null null}% } \begin{document} \SweaveOpts{engine=R,eps=FALSE} %\VignetteIndexEntry{strucchange: An R Package for Testing for Structural Change in Linear Regression Models} %\VignetteDepends{strucchange} %\VignetteKeywords{structural change, CUSUM, MOSUM, recursive estimates, moving estimates, monitoring, R, S} %\VignettePackage{strucchange} \title{\texttt{strucchange}: An \textsf{R} Package for Testing for Structural Change in Linear Regression Models} \author{Achim Zeileis \hspace{0.4cm} Friedrich Leisch \hspace{0.4cm} Kurt Hornik \hspace{0.4cm} Christian Kleiber} \date{} \maketitle \begin{abstract} This introduction to the \textsf{R} package \texttt{strucchange} is a (slightly) modified version of \cite{Z-papers:Zeileis+Leisch+Hornik:2002}, which reviews tests for structural change in linear regression models from the generalized fluctuation test framework as well as from the $F$ test (Chow test) framework. Since \cite{Z-papers:Zeileis+Leisch+Hornik:2002} various extensions were added to the package, in particular related to breakpoint estimation \citep[also know as ``dating'', discussed in][]{Z-papers:Zeileis+Kleiber+Kraemer:2003} and to structural change tests in other parametric models \citep{Z-papers:Zeileis:2006}. A more unifying view of the underlying theory is presented in \cite{Z-papers:Zeileis:2005} and \cite{Z-papers:Zeileis+Shah+Patnaik:2010}. Here, we focus on the linear regression model and introduce a unified approach for implementing tests from the fluctuation test and $F$~test framework for this model, illustrating how this approach has been realized in {\tt strucchange}. Enhancing the standard significance test approach the package contains methods to fit, plot and test empirical fluctuation processes (like CUSUM, MOSUM and estimates-based processes) and to compute, plot and test sequences of $F$ statistics with the sup$F$, ave$F$ and exp$F$ test. Thus, it makes powerful tools available to display information about structural changes in regression relationships and to assess their significance. Furthermore, it is described how incoming data can be monitored. \end{abstract} \noindent {\bf Keywords:} structural change, CUSUM, MOSUM, recursive estimates, moving estimates, monitoring, \textsf{R}, \textsf{S}.\\ \section{Introduction} \label{sec:intro} The problem of detecting structural changes in linear regression relationships has been an important topic in statistical and econometric research. The most important classes of tests on structural change are the tests from the generalized fluctuation test framework \citep{Z:Kuan+Hornik:1995} on the one hand and tests based on $F$ statistics \citep{Z:Hansen:1992,Z:Andrews:1993,Z:Andrews+Ploberger:1994} on the other. The first class includes in particular the CUSUM and MOSUM tests and the fluctuation test, while the Chow and the sup$F$ test belong to the latter. A topic that gained more interest rather recently is to monitor structural change, i.e., to start after a history phase (without structural changes) to analyze new observations and to be able to detect a structural change as soon after its occurrence as possible.\\ This paper concerns ideas and methods for implementing generalized fluctuation tests as well as $F$ tests in a comprehensive and flexible way, that reflects the common features of the testing procedures. It also offers facilities to display the results in various ways.\\ This paper is organized as follows: In Section~\ref{sec:model} the standard linear regression model upon which all tests are based will be described and the testing problem will be specified. Section~\ref{sec:data} introduces a data set which is also available in the package and which is used for the examples in this paper. The following sections \ref{sec:fluctests}, \ref{sec:Ftests} and \ref{sec:monitor} will then explain the tests, how they are implemented in {\tt strucchange} and give examples for each. Section \ref{sec:fluctests} is concerned with computing empirical fluctuation processes, with plotting them and the corresponding boundaries and finally with testing for structural change based on these processes. Analogously, Section~\ref{sec:Ftests} introduces the $F$ statistics and their plotting and testing methods before Section~\ref{sec:monitor} extends the tools from Section~\ref{sec:fluctests} for the monitoring case. \section{The model} \label{sec:model} Consider the standard linear regression model \begin{equation} \label{model1} y_i = x_i^\top \beta_i + u_i \qquad (i = 1, \dots, n), \end{equation} where at time $i$, $y_i$ is the observation of the dependent variable, $x_i = (1, x_{i2}, \dots, x_{ik})^\top$ is a $k \times 1$ vector of observations of the independent variables, with the first component equal to unity, $u_i$ are iid(0, $\sigma^2$), and $\beta_i$ is the $k \times 1$ vector of regression coefficients. Tests on structural change are concerned with testing the null hypothesis of ``no structural change'' \begin{equation} \label{null-hypothesis} H_0: \quad \beta_i = \beta_0 \qquad (i = 1, \dots, n) \end{equation} against the alternative that the coefficient vector varies over time, with certain tests being more or less suitable (i.e., having good or poor power) for certain patterns of deviation from the null hypothesis.\\ It is assumed that the regressors are nonstochastic with $||x_i|| = O(1)$ and that \begin{equation} \label{A5} \frac{1}{n} \sum_{i=1}^n x_i x_i^\top \quad \longrightarrow \quad Q\end{equation} for some finite regular matrix $Q$. These are strict regularity conditions excluding trends in the data which are assumed for simplicity. For some tests these assumptions can be extended to dynamic models without changing the main properties of the tests; but as these details are not part of the focus of this work they are omitted here.\\ In what follows $\hat \beta^{(i, j)}$ is the ordinary least squares (OLS) estimate of the regression coefficients based on the observations $i+1, \dots, i+j$, and $\hat \beta^{(i)} = \hat \beta^{(0,i)}$ is the OLS estimate based on all observations up to $i$. Hence $\hat \beta^{(n)}$ is the common OLS estimate in the linear regression model. Similarly $X^{(i)}$ is the regressor matrix based on all observations up to $i$. The OLS residuals are denoted as $\hat u_i = y_i - x_i^\top \hat \beta^{(n)}$ with the variance estimate $\hat{\sigma}^2 = \frac{1}{n-k} \sum_{i=1}^n \hat u_i^2$. Another type of residuals that are often used in tests on structural change are the recursive residuals \begin{equation} \label{rr} \tilde u_i \; = \; \frac{y_i - x_i^\top \hat \beta^{(i-1)}}{\sqrt{1+x_i^\top \left(X^{(i-1)^\top} X^{(i-1)} \right)^{-1}x_i}} \qquad (i = k+1, \dots, n),\end{equation} which have zero mean and variance $\sigma^2$ under the null hypothesis. The corresponding variance estimate is $\tilde{\sigma}^2 = \frac{1}{n-k} \sum_{i=k+1}^n (\tilde u_i - \bar{ \tilde u})^2$. \section{The data} \label{sec:data} The data used for examples throughout this paper are macroeconomic time series from the USA. The data set contains the aggregated monthly personal income and personal consumption expenditures (in billion US dollars) between January 1959 and February 2001, which are seasonally adjusted at annual rates. It was originally taken from \url{http://www.economagic.com/}, a web site for economic times series. Both time series are depicted in Figure \ref{fig:USIncExp}. \setkeys{Gin}{width=0.6\textwidth} \begin{figure}[htbp] \begin{center} <>= library("strucchange") data("USIncExp") plot(USIncExp, plot.type = "single", col = 1:2, ylab = "billion US$") legend(1960, max(USIncExp), c("income", "expenditures"), lty = c(1,1), col = 1:2, bty = "n") @ \caption{\label{fig:USIncExp} Personal income and personal consumption expenditures in the US} \end{center} \end{figure} The data is available in the {\tt strucchange} package: it can be loaded and a suitable subset chosen by <>= library("strucchange") data("USIncExp") USIncExp2 <- window(USIncExp, start = c(1985,12)) @ We use a simple error correction model (ECM) for the consumption function similar to \cite{sc:Hansen:1992a}: \begin{eqnarray} \label{ecm.model} \Delta c_t & = & \beta_1 + \beta_2 \; e_{t-1} + \beta_3 \; \Delta i_t + u_t, \\ \label{coint.model} e_t & = & c_t - \alpha_1 - \alpha_2 \; i_t, \end{eqnarray} where $c_t$ is the consumption expenditure and $i_t$ the income. We estimate the cointegration equation (\ref{coint.model}) by OLS and use the residuals $\hat e_t$ as regressors in equation (\ref{ecm.model}), in which we will test for structural change. Thus, the dependent variable is the increase in expenditure and the regressors are the cointegration residuals and the increments of income (and a constant). To compute the cointegration residuals and set up the model equation we need the following steps in \textsf{R}: <>= coint.res <- residuals(lm(expenditure ~ income, data = USIncExp2)) coint.res <- lag(ts(coint.res, start = c(1985,12), freq = 12), k = -1) USIncExp2 <- cbind(USIncExp2, diff(USIncExp2), coint.res) USIncExp2 <- window(USIncExp2, start = c(1986,1), end = c(2001,2)) colnames(USIncExp2) <- c("income", "expenditure", "diff.income", "diff.expenditure", "coint.res") ecm.model <- diff.expenditure ~ coint.res + diff.income @ Figure~\ref{fig:ts} shows the transformed time series necessary for estimation of equation (\ref{ecm.model}). \begin{figure}[htbp] \begin{center} <>= plot(USIncExp2[,3:5], main = "") @ \caption{\label{fig:ts} Time series used -- first differences and cointegration residuals} \end{center} \end{figure} In the following sections we will apply the methods introduced to test for structural change in this model. \section{Generalized fluctuation tests} \label{sec:fluctests} The generalized fluctuation tests fit a model to the given data and derive an empirical process, that captures the fluctuation either in residuals or in estimates. For these empirical processes the limiting processes are known, so that boundaries can be computed, whose crossing probability under the null hypothesis is $\alpha$. If the empirical process path crosses these boundaries, the fluctuation is improbably large and hence the null hypothesis should be rejected (at significance level $\alpha$). \subsection{Empirical fluctuation processes: function \texttt{efp}} Given a formula that describes a linear regression model to be tested the function {\tt efp} creates an object of class {\tt "efp"} which contains a fitted empirical fluctuation process of a specified type. The types available will be described in detail in this section.\\ {\bf CUSUM processes}: The first type of processes that can be computed are CUSUM processes, which contain cumulative sums of standardized residuals. \cite{Z:Brown+Durbin+Evans:1975} suggested to consider cumulative sums of recursive residuals: \begin{equation}\label{Rec-CUSUM} W_n(t) \; = \; \frac{1}{\tilde \sigma \sqrt{\eta}}\sum_{i=k+1}^{k +\lfloor t\eta \rfloor} \tilde u_i \qquad (0 \le t \le 1),\end{equation} where $\eta = n-k$ is the number of recursive residuals and $\lfloor t\eta \rfloor$ is the integer part of $t\eta$.\\ Under the null hypothesis the limiting process for the empirical fluctuation process $W_n(t)$ is the Standard Brownian Motion (or Wiener Process) $W(t)$. More precisely the following functional central limit theorem (FCLT) holds: \begin{equation}\label{lim(Rec-CUSUM)} W_n \Longrightarrow W, \end{equation} as $n \rightarrow \infty$, where $\Rightarrow$ denotes weak convergence of the associated probability measures.\\ Under the alternative, if there is just a single structural change point $t_0$, the recursive residuals will only have zero mean up to $t_0$. Hence the path of the process should be close to 0 up to $t_0$ and leave its mean afterwards. \cite{Z:Kraemer+Ploberger+Alt:1988} show that the main properties of the CUSUM quantity remain the same even under weaker assumptions, in particular in dynamic models. Therefore {\tt efp} has the logical argument {\tt dynamic}; if set to {\tt TRUE} the lagged observations $y_{t-1}$ will be included as regressors.\\ \cite{Z:Ploberger+Kraemer:1992} suggested to base a structural change test on cumulative sums of the common OLS residuals. Thus, the OLS-CUSUM type empirical fluctuation process is defined by: \begin{equation} \label{OLS-CUSUM} W_n^0(t) \quad = \quad \frac{1}{\hat \sigma \sqrt{n}} \sum_{i=1}^{\lfloor nt \rfloor} \hat u_i \qquad (0 \le t \le 1). \end{equation} The limiting process for $W_n^0(t)$ is the standard Brownian bridge $W^0(t) = W(t) - t W(1)$. It starts in 0 at $t = 0$ and it also returns to 0 for $t = 1$. Under a single structural shift alternative the path should have a peak around $t_0$.\\ These processes are available in the function {\tt efp} by specifying the argument {\tt type} to be either {\tt "Rec-CUSUM"} or {\tt "OLS-CUSUM"}, respectively.\\ {\bf MOSUM processes}: Another possibility to detect a structural change is to analyze moving sums of residuals (instead of using cumulative sums of the same residuals). The resulting empirical fluctuation process does then not contain the sum of all residuals up to a certain time~$t$ but the sum of a fixed number of residuals in a data window whose size is determined by the bandwidth parameter $h \in (0,1)$ and which is moved over the whole sample period. Hence the Recursive MOSUM process is defined by \begin{eqnarray} \label{Rec-MOSUM} M_n(t | h) & = & \frac{1}{\tilde \sigma \sqrt{\eta}} \sum_{i = k+\lfloor N_\eta t \rfloor +1}^{k+\lfloor N_\eta t \rfloor +\lfloor \eta h \rfloor} \tilde u_i \qquad (0 \le t \le 1-h) \\ \label{Rec-MOSUM2} & = & W_n \left( \frac{ \lfloor N_\eta t \rfloor + \lfloor \eta h\rfloor}{\eta} \right) - W_n \left( \frac{ \lfloor N_\eta t \rfloor}{\eta} \right), \end{eqnarray} where $N_\eta = (\eta - \lfloor \eta h \rfloor)/(1-h)$. Similarly the OLS-based MOSUM process is defined by \begin{eqnarray} \label{OLS-MOSUM} M_n^0 (t | h) & = & \frac{1}{\hat \sigma \sqrt{n}} \left( \sum_{i = \lfloor N_n t \rfloor +1}^{\lfloor N_n t \rfloor +\lfloor nh \rfloor} \hat u_i \right) \qquad (0 \le t \le 1 - h) \\ \label{OLS-MOSUM2} & = & W_n^0 \left( \frac{ \lfloor N_n t \rfloor + \lfloor n h\rfloor}{n} \right) - W_n^0 \left( \frac{ \lfloor N_n t \rfloor}{n} \right), \end{eqnarray} where $N_n = (n - \lfloor n h \rfloor)/(1-h)$. As the representations (\ref{Rec-MOSUM2}) and (\ref{OLS-MOSUM2}) suggest, the limiting process for the empirical MOSUM processes are the increments of a Brownian motion or a Brownian bridge respectively. This is shown in detail in \cite{Z:Chu+Hornik+Kuan:1995}.\\ If again a single structural shift is assumed at $t_0$, then both MOSUM paths should also have a strong shift around $t_0$.\\ The MOSUM processes will be computed if {\tt type} is set to {\tt "Rec-MOSUM"} or {\tt "OLS-MOSUM"}, respectively.\\ {\bf Estimates-based processes}: Instead of defining fluctuation processes on the basis of residuals they can be equally well based on estimates of the unknown regression coefficients. With the same ideas as for the residual-based CUSUM- and MOSUM-type processes the $k \times 1$-vector $\beta$ is either estimated recursively with a growing number of observations or with a moving data window of constant bandwidth $h$ and then compared to the estimates based on the whole sample. The former idea leads to the fluctuation process in the spirit of \cite{Z:Ploberger+Kraemer+Kontrus:1989} which is defined by \begin{equation} \label{fluctuation} Y_n \left(t \right) = \frac{\sqrt{i}}{\hat \sigma \sqrt{n}} \left({X^{(i)}}^\top X^{(i)} \right)^{\frac{1}{2}} \left( \hat \beta^{(i)} - \hat \beta^{(n)} \right), \end{equation} where $i = \lfloor k + t(n-k) \rfloor$ with $t \in [0,1]$. And the latter gives the moving estimates (ME) process introduced by \cite{Z:Chu+Hornik+Kuan:1995a}: \begin{equation} \label{ME} Z_n \left( \left. t \right| h \right) = \frac{\sqrt{\lfloor nh \rfloor}}{\hat \sigma \sqrt{n}} \left({X^{(\lfloor nt \rfloor, \lfloor nh \rfloor)}}^\top X^{(\lfloor nt \rfloor, \lfloor nh \rfloor)} \right)^{\frac{1}{2}} \left( \hat \beta^{(\lfloor nt \rfloor,\lfloor nh \rfloor)} - \hat \beta^{(n)} \right), \end{equation} where $0 \le t \le 1-h$. Both are $k$-dimensional empirical processes. Thus, the limiting processes are a $k$-dimensional Brownian Bridge or the increments thereof respectively. Instead of rescaling the processes for each $i$ they can also be standardized by $\left( {X^{(n)}}^\top X^{(n)} \right)^{\frac{1}{2}}$. This has the advantage that it has to be calculated only once, but \cite{Z:Kuan+Chen:1994} showed that if there are dependencies between the regressors the rescaling improves the empirical size of the resulting test. Heuristically the rescaled empirical fluctuation process ``looks'' more like its theoretic counterpart.\\ Under a single shift alternative the recursive estimates processes should have a peak and the moving estimates process should again have a shift close to the shift point $t_0$.\\ For {\tt type="fluctuation"} the function {\tt efp} returns the recursive estimates process, whereas for {\tt "ME"} the moving estimates process is returned.\\ All six processes may be fitted using the function {\tt efp}. For our example we want to fit an OLS-based CUSUM process, and a moving estimates (ME) process with bandwidth $h = 0.2$. The commands are simply <>= ocus <- efp(ecm.model, type="OLS-CUSUM", data=USIncExp2) me <- efp(ecm.model, type="ME", data=USIncExp2, h=0.2) @ These return objects of class {\tt "efp"} which contain mainly the empirical fluctuation processes and a few further attributes like the process type. The process itself is of class {\tt "ts"} (the basic time series class in \textsf{R}), which either preserves the time properties of the dependent variable if this is a time series (like in our example), or which is standardized to the interval $[0,1]$ (or a subinterval). For the MOSUM and ME processes the centered interval $[h/2, 1-h/2]$ is chosen rather than $[0,1-h]$ as in (\ref{Rec-MOSUM}) and (\ref{OLS-MOSUM}).\\ Any other process type introduced in this section can be fitted by setting the {\tt type} argument. The fitted process can then be printed, plotted or tested with the corresponding test on structural change. For the latter appropriate boundaries are needed; the concept of boundaries for fluctuation processes is explained in the next section. \subsection{Boundaries and plotting} The idea that is common to all generalized fluctuation tests is that the null hypothesis of ``no structural change'' should be rejected when the fluctuation of the empirical process $\mathit{efp}(t)$ gets improbably large compared to the fluctuation of the limiting process. For the one-dimensional residual-based processes this comparison is performed by some appropriate boundary $b(t)$, that the limiting process just crosses with a given probability $\alpha$. Thus, if $\mathit{efp}(t)$ crosses either $b(t)$ or $-b(t)$ for any $t$ then it has to be concluded that the fluctuation is improbably large and the null hypothesis can be rejected at confidence level $\alpha$. The procedure for the $k$-dimensional estimates-based processes is similar, but instead of a boundary for the process itself a boundary for $||\mathit{efp}_i(t)||$ is used, where $||\cdot||$ is an appropriate functional which is applied component-wise. We have implemented the functionals `max' and `range'. The null hypothesis is rejected if $||\mathit{efp}_i(t)||$ gets larger than a constant $\lambda$, which depends on the confidence level $\alpha$, for any $i = 1, \dots, k$.\\ The boundaries for the MOSUM processes are also constants, i.e., of form $b(t) = \lambda$, which seems natural as the limiting processes are stationary. The situation for the CUSUM processes is different though. Both limiting processes, the Brownian motion and the Brownian bridge, respectively, are not stationary. It would seem natural to use boundaries that are proportional to the standard deviation function of the corresponding theoretic process, i.e., \begin{eqnarray} \label{bound:Rec-CUS1} b(t) &=& \lambda \cdot \sqrt{t}\\ \label{bound:OLS-CUS1} b(t) &=& \lambda \cdot \sqrt{t(1-t)} \end{eqnarray} for the Recursive CUSUM and the OLS-based CUSUM path respectively, where $\lambda$ determines the confidence level. But the boundaries that are commonly used are linear, because a closed form solution for the crossing probability is known. So the standard boundaries for the two proccess are of type \begin{eqnarray} \label{bound:Rec-CUS} b(t) &=& \lambda \cdot (1+2t)\\ \label{bound:OLS-CUS} b(t) &=& \lambda. \end{eqnarray} They were chosen because they are tangential to the boundaries (\ref{bound:Rec-CUS1}) and (\ref{bound:OLS-CUS1}) respectively in $t = 0.5$. However, \cite{Zo:Zeileis:2000a} examined the properties of the alternative boundaries (\ref{bound:Rec-CUS1}) and (\ref{bound:OLS-CUS1}) and showed that the resulting OLS-based CUSUM test has better power for structural changes early and late in the sample period.\\ Given a fitted empirical fluctuation process the boundaries can be computed very easily using the function {\tt boundary}, which returns a time series object with the same time properties as the given fluctuation process: <>= bound.ocus <- boundary(ocus, alpha=0.05) @ It is also rather convenient to plot the process with its boundaries for some confidence level $\alpha$ (by default 0.05) to see whether the path exceeds the boundaries or not: This is demonstrated in Figure~\ref{fig:ocus}. \begin{figure}[hbtp] \begin{center} <>= plot(ocus) @ \caption{\label{fig:ocus} OLS-based CUSUM process} \end{center} \end{figure} It can be seen that the OLS-based CUSUM process exceeds its boundary; hence there is evidence for a structural change. Furthermore the process seems to indicate two changes: one in the first half of the 1990s and another one at the end of 1998.\\ It is also possible to suppress the boundaries and add them afterwards, e.g. in another color <>= plot(ocus, boundary = FALSE) lines(bound.ocus, col = 4) lines(-bound.ocus, col = 4) @ For estimates-based processes it is only sensible to use time series plots if the functional `max' is used because it is equivalent to rejecting the null hypothesis when $\max_{i=1, \dots, k} ||\mathit{efp}(t)||$ gets large or when $\max_t \max_{i=1, \dots, k} \mathit{efp}_i(t)$ gets large. This again is equivalent to any one of the (one-dimensinal) processes $\mathit{efp}_i(t)$ for $i = 1, \dots, k$ exceeding the boundary. The $k$-dimensional process can also be plotted by specifying the parameter {\tt functional} (which defaults to {\tt "max"}) as {\tt NULL}: \begin{figure}[h] \begin{center} <>= plot(me, functional = NULL) @ \caption{\label{fig:me-null} 3-dimensional moving estimates process} \end{center} \end{figure} The output from \textsf{R} can be seen in Figure~\ref{fig:me-null}, where the three parts of the plot show the processes that correspond to the estimate of the regression coefficients of the intercept, the cointegration residuals and the increments of income, respectively. All three paths show two shifts: the first shift starts at the beginning of the sample period and ends in about 1991 and the second shift occurs at the very end of the sample period. The shift that causes the significance seems to be the strong first shift in the process for the intercept and the cointegration residuals, because these cross their boundaries. Thus, the ME test leads to similar results as the OLS-based CUSUM test, but provides a little more information about the nature of the structural change. \subsection{Significance testing with empirical fluctuation processes} Although calculating and plotting the empiricial fluctuation process with its boundaries provides and visualizes most of the information, it might still be necessary or desirable to carry out a traditional significance test. This can be done easily with the function {\tt sctest} (\underline{s}tructural \underline{c}hange \underline{test}) which returns an object of class {\tt "htest"} (\textsf{R}'s standard class for statistical test results) containing in particular the test statistic and the corresponding $p$ value. The test statistics reflect what was described by the crossing of boundaries in the previous section. Hence the test statistic is $S_r$ from (\ref{statr}) for the residual-based processes and $S_e$ from (\ref{state}) for the estimates-based processes: \begin{eqnarray} \label{statr} S_r & = & \max_t \frac{\mathit{efp}(t)}{f(t)},\\ \label{state} S_e & = & \max ||\mathit{efp}(t)||, \end{eqnarray} where $f(t)$ depends on the shape of the boundary, i.e., $b(t) = \lambda \cdot f(t)$. For most boundaries is $f(t) \equiv 1$, but the linear boundary for the Recursive CUSUM test for example has shape $f(t) = 1 + 2t$.\\ It is either possible to supply {\tt sctest} with a fitted empirical fluctuation process or with a formula describing the model that should be tested. Thus, the commands <>= sctest(ocus) @ and <>= sctest(ecm.model, type="OLS-CUSUM", data=USIncExp2) @ lead to equivalent results. {\tt sctest} is a generic function which has methods not only for fluctuation tests, but all structural change tests (on historic data) introduced in this paper including the $F$ tests described in the next section. \section{$F$ tests} \label{sec:Ftests} A rather different approach to investigate whether the null hypothesis of ``no structural change'' holds, is to use $F$ test statistics. An important difference is that the alternative is specified: whereas the generalized fluctuation tests are suitable for various patterns of structural changes, the $F$ tests are designed to test against a single shift alternative. Thus, the alternative can be formulated on the basis of the model (\ref{model1}) \begin{equation} \label{H1} \beta_i = \left\{ \begin{array}{l} \beta_A \quad (1 \le i \le i_0) \\ \beta_B \quad (i_0 < i \le n) \end{array} \right., \end{equation} where $i_0$ is some change point in the interval $(k, n-k)$. \cite{Z:Chow:1960} was the first to suggest such a test on structural change for the case where the (potential) change point $i_0$ is known. He proposed to fit two separate regressions for the two subsamples defined by $i_0$ and to reject whenever \begin{equation} \label{Fstat} F_{i_0} \; = \; \frac{{\hat u}^\top {\hat u} - {\hat e}^\top {\hat e}}{{\hat e}^\top {\hat e}/(n-2k)}. \end{equation} is too large, where $\hat e = (\hat u_A, \hat u_B)^\top$ are the residuals from the full model, where the coefficients in the subsamples are estimated separately, and $\hat u$ are the residuals from the restricted model, where the parameters are just fitted once for all observations. The test statistic $F_{i_0}$ has an asymptotic $\chi^2$ distribution with $k$ degrees of freedom and (under the assumption of normality) $F_{i_0}/k$ has an exact $F$ distribution with $k$ and $n-2k$ degrees of freedom. The major drawback of this ``Chow test'' is that the change point has to be known in advance, but there are tests based upon $F$ statistics (Chow statistics), that do not require a specification of a particular change point and which will be introduced in the following sections. \subsection{$F$ statistics: function \texttt{Fstats}} A natural idea to extend the ideas from the Chow test is to calculate the $F$ statistics for all potential change points or for all potential change points in an interval $[\ui, \oi]$ and to reject if any of those statistics get too large. Therefore the first step is to compute the $F$ statistics $F_i$ for $k < \ui \le i \le \oi < n-k$, which can be easily done using the function {\tt Fstats}. Again the model to be tested is specified by a formula interface and the parameters $\ui$ and $\oi$ are respresented by {\tt from} and {\tt to}, respectively. Alternatively to indices of observations these two parameters can also be specified by fractions of the sample; the default is to take {\tt from = 0.15} and implicitly {\tt to = 0.85}. To compute the $F$ test statistics for all potential change points between January 1990 and June 1999 the appropriate command would be: <>= fs <- Fstats(ecm.model, from = c(1990, 1), to = c(1999,6), data = USIncExp2) @ This returns an object of class {\tt "Fstats"} which mainly contains a time series of $F$ statistics. Analogously to the empiricial fluctuation processes these objects can be printed, plotted and tested. \subsection{Boundaries and plotting} The computation of boundaries and plotting of $F$ statistics is rather similar to that of empirical fluctuation processes introduced in the previous section. Under the null hypthesis of no structural change boundaries can be computed such that the asymptotic probability that the supremum (or the mean) of the statistics $F_i$ (for $\ui \le i \le \oi$) exceeds this boundary is $\alpha$. So the following command \begin{figure}[htbp] \begin{center} <>= plot(fs) @ \caption{\label{fig:Fstats} $F$ statistics} \end{center} \end{figure} plots the process of $F$ statistics with its boundary; the output can be seen in Figure~\ref{fig:Fstats}. As the $F$ statistics cross their boundary, there is evidence for a structural change (at the level $\alpha = 0.05$). The process has a clear peak in 1998, which mirrors the results from the analysis by empirical fluctuation processes and tests, respectively, that also indicated a break in the late 1990s.\\ It is also possible to plot the $p$ values instead of the $F$ statistics themselves by <>= plot(fs, pval=TRUE) @ which leads to equivalent results. Furthermore it is also possible to set up the boundaries for the average instead of the supremum by: <>= plot(fs, aveF=TRUE) @ In this case another dashed line for the observed mean of the $F$ statistics will be drawn. \subsection{Significance testing with $F$ statistics} As already indicated in the previous section, there is more than one possibility to aggregate the series of $F$ statistics into a test statistic. \cite{Z:Andrews:1993} and \cite{Z:Andrews+Ploberger:1994} respectively suggested three different test statistics and examined their asymptotic distribution: \begin{eqnarray} \label{supF} \mbox{\textnormal{sup}}F & = & \sup_{\ui\le i \le \oi} F_i, \\ \label{aveF} \mbox{\textnormal{ave}}F & = & \frac{1}{\oi - \ui+ 1} \sum_{i = \ui}^{\oi} F_i, \\ \label{expF} \mbox{\textnormal{exp}}F & = & \log \left( \frac{1}{\oi - \ui+ 1} \sum_{i = \ui}^{\oi} \exp ( 0.5 \cdot F_i) \right). \end{eqnarray} The sup$F$ statistic in (\ref{supF}) and the ave$F$ statistic from (\ref{aveF}) respectively reflect the testing procedures that have been described above. Either the null hypothesis is rejected when the maximal or the mean $F$ statistic gets too large. A third possibility is to reject when the exp$F$ statistic from (\ref{expF}) gets too large. The ave$F$ and exp$F$ test have certain optimality properties \citep{Z:Andrews+Ploberger:1994}. The tests can be carried out in the same way as the fluctuation tests: either by supplying the fitted {\tt Fstats} object or by a formula that describes the model to be tested. Hence the commands <>= sctest(fs, type="expF") @ and <>= sctest(ecm.model, type = "expF", from = 49, to = 162, data = USIncExp2) @ lead to equivalent output. The $p$ values are computed based on \cite{Z:Hansen:1997}.\footnote{The authors thank Bruce Hansen, who wrote the original code for computing $p$ values for $F$ statistics in \textsf{GAUSS}, for putting his code at disposal for porting to \textsf{R}.} \section{Monitoring with the generalized fluctuation test} \label{sec:monitor} In the previous sections we were concerned with the retrospective detection of structural changes in \emph{given} data sets. Over the last years several structural change tests have been extended to monitoring of linear regression models where new data arrive over time \citep{Z:Chu+Stinchcombe+White:1996,Z:Leisch+Hornik+Kuan:2000}. Such forward looking tests are closely related to sequential tests. When new observations arrive, estimates are computed sequentially from all available data (historical sample plus newly arrived data) and compared to the estimate based only on the historical sample. As in the retrospective case, the hypothesis of no structural change is rejected if the difference between these two estimates gets too large. The standard linear regression model~(\ref{model1}) is generalized to \begin{equation} y_i = x_i^\top \beta_i + u_i \qquad (i = 1, \dots, n, n+1, \ldots), \end{equation} i.e., we expect new observations to arrive after time $n$ (when the monitoring begins). The sample $\{(x_1,y_1),\ldots,(x_n,y_n)\}$ will be called the \emph{historic sample}, the corresponding time period $1,\ldots,n$ the \emph{history period}. Currently monitoring has only been developed for recursive \citep{Z:Chu+Stinchcombe+White:1996} and moving \citep{Z:Leisch+Hornik+Kuan:2000} estimates tests. The respective limiting processes are---as in the retrospective case---the Brownian Bridge and increments of the Brownian Bridge. The empirical processes are rescaled to map the history period to the interval [0,1] of the Brownian Bridge. For recursive estimates there exists a closed form solution for boundary functions, such that the limiting Brownian Bridge stays within the boundaries on the interval $(1,\infty)$ with probability $1-\alpha$. Note that the monitoring period consisting of all data arriving after the history period corresponds to the Brownian Bridge after time 1. For moving estimates, only the growth rate of the boundaries can be derived analytically and critical values have to be simulated. Consider that we want to monitor our ECM during the 1990s for structural change, using years 1986--1989 as the history period. First we cut the historic sample from the complete data set and create an object of class \texttt{"mefp"}: <>= USIncExp3 <- window(USIncExp2, start = c(1986, 1), end = c(1989,12)) me.mefp <- mefp(ecm.model, type = "ME", data = USIncExp3, alpha = 0.05) @ Because monitoring is a sequential test procedure, the significance level has to be specified \emph{in advance}, i.e., when the object of class \texttt{"mefp"} is created. The \texttt{"mefp"} object can now be monitored repeatedly for structural changes. Let us assume we get new observations for the year 1990. Calling function \texttt{monitor} on \texttt{me.mefp} automatically updates our monitoring object for the new observations and runs a sequential test for structural change on each new observation (no structural break is detected in 1990): <>= USIncExp3 <- window(USIncExp2, start = c(1986, 1), end = c(1990,12)) me.mefp <- monitor(me.mefp) @ Then new data for the years 1991--2001 arrive and we repeat the monitoring: <>= USIncExp3 <- window(USIncExp2, start = c(1986, 1)) me.mefp <- monitor(me.mefp) me.mefp @ The software informs us that a structural break has been detected at observation \#72, which corresponds to December 1991. Boundary and plotting methods for \texttt{"mefp"} objects work (almost) exactly as their \texttt{"efp"} counterparts, only the significance level \texttt{alpha} cannot be specified, because it is specified when the \texttt{"mefp"} object is created. The output of \texttt{plot(me.mefp)} can be seen in Figure~\ref{fig:monitor}. \begin{figure}[htbp] \begin{center} <>= plot(me.mefp) @ \caption{\label{fig:monitor} Monitoring structural change with bandwidth $h=1$} \end{center} \end{figure} Instead of creating an {\tt "mefp"} object using the formula interface like above, it could also be done re-using an existing \texttt{"efp"} object, e.g.: <>= USIncExp3 <- window(USIncExp2, start = c(1986, 1), end = c(1989,12)) me.efp <- efp(ecm.model, type = "ME", data = USIncExp3, h = 0.5) me.mefp <- mefp(me.efp, alpha=0.05) @ If now again the new observations up to February 2001 arrive, we can monitor the data <>= USIncExp3 <- window(USIncExp2, start = c(1986, 1)) me.mefp <- monitor(me.mefp) @ and discover the structural change even two observations earlier as we used the bandwidth {\tt h=0.5} instead of {\tt h=1}. Due to this we have not one history estimate that is being compared with the new moving estimates, but we have a history process, which can be seen on the left in Figure~\ref{fig:monitor2}. This plot can simply be generated by \texttt{plot(me.mefp)}. \begin{figure}[htbp] \begin{center} <>= plot(me.mefp) @ \caption{\label{fig:monitor2} Monitoring structural change with bandwidth $h=0.5$} \end{center} \end{figure} The results of the monitoring emphasize the results of the historic tests: the moving estimates process has two strong shifts, the first around 1992 and the second around 1998. \section{Conclusions} \label{sec:conclusions} In this paper, we have described the {\tt strucchange} package that implements methods for testing for structural change in linear regression relationships. It provides a unified framework for displaying information about structural changes flexibly and for assessing their significance according to various tests.\\ Containing tests from the generalized fluctuation test framework as well as tests based on $F$ statistics (Chow test ststistics) the package extends standard significance testing procedures: There are methods for fitting empirical fluctuation processes (CUSUM, MOSUM and estimates-based processes), computing an appropriate boundary, plotting these results and finally carrying out a formal significance test. Analogously a sequence of $F$ statistics with the corresponding boundary can be computed, plotted and tested. Finally the methods for estimates-based fluctuation processes have extensions to monitor incoming data. In addition to these methods for the linear regression model, the \texttt{strucchange} package contains infrastructure for testing, monitoring, and dating structural changes in other parametric models, e.g., estimated by maximum likelihood. Details about the underlying theory can be found in \cite{Z-papers:Zeileis:2005}, \cite{Z-papers:Zeileis+Hornik:2007}, and \cite{Z-papers:Zeileis+Shah+Patnaik:2010}. The corresponding functions in \texttt{strucchange} are presented in \cite{Z-papers:Zeileis+Kleiber+Kraemer:2003} and \cite{Z-papers:Zeileis:2006}. \section*{Acknowledgments} The research of Achim Zeileis, Friedrich Leisch and Kurt Hornik was supported by the Austrian Science Foundation (FWF) under grant SFB\#010 (`Adaptive Information Systems and Modeling in Economics and Management Science').\\ The work of Christian Kleiber was supported by the Deutsche Forschungsgemeinschaft, Sonderforschungsbereich 475. \bibliography{strucchange} \bibliographystyle{abbrvnat} \newpage \begin{appendix} \section{Implementation details for $p$ values} An important and useful tool concerning significance tests are $p$ values, especially for application in a software package. Their implementation is therefore crucial and in this section we will give more detail about the implementation in the {\tt strucchange} package.\\ For the CUSUM tests with linear boundaries there are rather good approximations to the asymptotic $p$ value functions given in \cite{Zo:Zeileis:2000a}. For the recursive estimates fluctuation test there is a series expansion, which is evaluated for the first hundred terms. For all other tests from the generalized fluctuation test framework the $p$ values are computed by linear interpolation from tabulated critical values. For the Recursive CUSUM test with alternative boundaries $p$ values from the interval $[0.001, 1]$ and $[0.001, 0.999]$ for the OLS-based version respectively are approximated from tables given in \cite{Zo:Zeileis:2000}. The critical values for the Recursive MOSUM test for levels in $[0.01, 0.2]$ are taken from \cite{Z:Chu+Hornik+Kuan:1995}, while the critical values for the levels in $[0.01, 0.1]$ for the OLS-based MOSUM and the ME test are given in \cite{Z:Chu+Hornik+Kuan:1995a}; the parameter $h$ is in both cases interpolated for values in $[0.05, 0.5]$.\\ The $p$ values for the sup$F$, ave$F$ and exp$F$ test are approximated based on \cite{Z:Hansen:1997}, who also wrote the original code in \textsf{GAUSS}, which we merely ported to \textsf{R}. The computation uses tabulated simulated regression coefficients. \end{appendix} \end{document} strucchange/inst/doc/strucchange-intro.R0000644000175400001440000001255712534542351020275 0ustar zeileisusers### R code from vignette source 'strucchange-intro.Rnw' ################################################### ### code chunk number 1: data ################################################### library("strucchange") data("USIncExp") plot(USIncExp, plot.type = "single", col = 1:2, ylab = "billion US$") legend(1960, max(USIncExp), c("income", "expenditures"), lty = c(1,1), col = 1:2, bty = "n") ################################################### ### code chunk number 2: subset ################################################### library("strucchange") data("USIncExp") USIncExp2 <- window(USIncExp, start = c(1985,12)) ################################################### ### code chunk number 3: ecm-setup ################################################### coint.res <- residuals(lm(expenditure ~ income, data = USIncExp2)) coint.res <- lag(ts(coint.res, start = c(1985,12), freq = 12), k = -1) USIncExp2 <- cbind(USIncExp2, diff(USIncExp2), coint.res) USIncExp2 <- window(USIncExp2, start = c(1986,1), end = c(2001,2)) colnames(USIncExp2) <- c("income", "expenditure", "diff.income", "diff.expenditure", "coint.res") ecm.model <- diff.expenditure ~ coint.res + diff.income ################################################### ### code chunk number 4: ts-used ################################################### plot(USIncExp2[,3:5], main = "") ################################################### ### code chunk number 5: efp ################################################### ocus <- efp(ecm.model, type="OLS-CUSUM", data=USIncExp2) me <- efp(ecm.model, type="ME", data=USIncExp2, h=0.2) ################################################### ### code chunk number 6: efp-boundary ################################################### bound.ocus <- boundary(ocus, alpha=0.05) ################################################### ### code chunk number 7: OLS-CUSUM ################################################### plot(ocus) ################################################### ### code chunk number 8: efp-boundary2 (eval = FALSE) ################################################### ## plot(ocus, boundary = FALSE) ## lines(bound.ocus, col = 4) ## lines(-bound.ocus, col = 4) ################################################### ### code chunk number 9: ME-null ################################################### plot(me, functional = NULL) ################################################### ### code chunk number 10: efp-sctest (eval = FALSE) ################################################### ## sctest(ocus) ################################################### ### code chunk number 11: efp-sctest2 ################################################### sctest(ecm.model, type="OLS-CUSUM", data=USIncExp2) ################################################### ### code chunk number 12: Fstats ################################################### fs <- Fstats(ecm.model, from = c(1990, 1), to = c(1999,6), data = USIncExp2) ################################################### ### code chunk number 13: Fstats-plot ################################################### plot(fs) ################################################### ### code chunk number 14: pval-plot (eval = FALSE) ################################################### ## plot(fs, pval=TRUE) ################################################### ### code chunk number 15: aveF-plot (eval = FALSE) ################################################### ## plot(fs, aveF=TRUE) ################################################### ### code chunk number 16: Fstats-sctest (eval = FALSE) ################################################### ## sctest(fs, type="expF") ################################################### ### code chunk number 17: Fstats-sctest2 ################################################### sctest(ecm.model, type = "expF", from = 49, to = 162, data = USIncExp2) ################################################### ### code chunk number 18: mefp ################################################### USIncExp3 <- window(USIncExp2, start = c(1986, 1), end = c(1989,12)) me.mefp <- mefp(ecm.model, type = "ME", data = USIncExp3, alpha = 0.05) ################################################### ### code chunk number 19: monitor1 ################################################### USIncExp3 <- window(USIncExp2, start = c(1986, 1), end = c(1990,12)) me.mefp <- monitor(me.mefp) ################################################### ### code chunk number 20: monitor2 ################################################### USIncExp3 <- window(USIncExp2, start = c(1986, 1)) me.mefp <- monitor(me.mefp) me.mefp ################################################### ### code chunk number 21: monitor-plot ################################################### plot(me.mefp) ################################################### ### code chunk number 22: mefp2 ################################################### USIncExp3 <- window(USIncExp2, start = c(1986, 1), end = c(1989,12)) me.efp <- efp(ecm.model, type = "ME", data = USIncExp3, h = 0.5) me.mefp <- mefp(me.efp, alpha=0.05) ################################################### ### code chunk number 23: monitor3 ################################################### USIncExp3 <- window(USIncExp2, start = c(1986, 1)) me.mefp <- monitor(me.mefp) ################################################### ### code chunk number 24: monitor-plot2 ################################################### plot(me.mefp) strucchange/tests/0000755000175400001440000000000012220001265014103 5ustar zeileisusersstrucchange/tests/Examples/0000755000175400001440000000000012534534151015676 5ustar zeileisusersstrucchange/tests/Examples/strucchange-Ex.Rout.save0000644000175400001440000021061712534542314022375 0ustar zeileisusers R version 3.2.0 (2015-04-16) -- "Full of Ingredients" Copyright (C) 2015 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 <- "strucchange" > source(file.path(R.home("share"), "R", "examples-header.R")) > options(warn = 1) > library('strucchange') Loading required package: zoo Attaching package: 'zoo' The following objects are masked from 'package:base': as.Date, as.Date.numeric Loading required package: sandwich > > base::assign(".oldSearch", base::search(), pos = 'CheckExEnv') > cleanEx() > nameEx("BostonHomicide") > ### * BostonHomicide > > flush(stderr()); flush(stdout()) > > ### Name: BostonHomicide > ### Title: Youth Homicides in Boston > ### Aliases: BostonHomicide > ### Keywords: datasets > > ### ** Examples > > data("BostonHomicide") > attach(BostonHomicide) > > ## data from Table 1 > tapply(homicides, year, mean) 1992 1993 1994 1995 1996 1997 1998 3.083333 4.000000 3.166667 3.833333 2.083333 1.250000 0.800000 > populationBM[0:6*12 + 7] [1] 12977 12455 12272 12222 11895 12038 NA > tapply(ahomicides25, year, mean) 1992 1993 1994 1995 1996 1997 1998 3.250000 4.166667 3.916667 4.166667 2.666667 2.333333 1.400000 > tapply(ahomicides35, year, mean) 1992 1993 1994 1995 1996 1997 1998 0.8333333 1.0833333 1.3333333 1.1666667 1.0833333 0.7500000 0.4000000 > population[0:6*12 + 7] [1] 228465 227218 226611 231367 230744 228696 NA > unemploy[0:6*12 + 7] [1] 20.2 18.8 15.9 14.7 13.8 12.6 NA > > ## model A > ## via OLS > fmA <- lm(homicides ~ populationBM + season) > anova(fmA) Analysis of Variance Table Response: homicides Df Sum Sq Mean Sq F value Pr(>F) populationBM 1 14.364 14.3642 3.7961 0.05576 . season 11 47.254 4.2959 1.1353 0.34985 Residuals 64 242.174 3.7840 --- Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 > ## as GLM > fmA1 <- glm(homicides ~ populationBM + season, family = poisson) > anova(fmA1, test = "Chisq") Analysis of Deviance Table Model: poisson, link: log Response: homicides Terms added sequentially (first to last) Df Deviance Resid. Df Resid. Dev Pr(>Chi) NULL 76 115.649 populationBM 1 4.9916 75 110.657 0.02547 * season 11 18.2135 64 92.444 0.07676 . --- Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 > > ## model B & C > fmB <- lm(homicides ~ populationBM + season + ahomicides25) > fmC <- lm(homicides ~ populationBM + season + ahomicides25 + unemploy) > > detach(BostonHomicide) > > > > cleanEx() > nameEx("DJIA") > ### * DJIA > > flush(stderr()); flush(stdout()) > > ### Name: DJIA > ### Title: Dow Jones Industrial Average > ### Aliases: DJIA > ### Keywords: datasets > > ### ** Examples > > data("DJIA") > ## look at log-difference returns > djia <- diff(log(DJIA)) > plot(djia) > > ## convenience functions > ## set up a normal regression model which > ## explicitely also models the variance > normlm <- function(formula, data = list()) { + rval <- lm(formula, data = data) + class(rval) <- c("normlm", "lm") + return(rval) + } > estfun.normlm <- function(obj) { + res <- residuals(obj) + ef <- NextMethod(obj) + sigma2 <- mean(res^2) + rval <- cbind(ef, res^2 - sigma2) + colnames(rval) <- c(colnames(ef), "(Variance)") + return(rval) + } > > ## normal model (with constant mean and variance) for log returns > m1 <- gefp(djia ~ 1, fit = normlm, vcov = meatHAC, sandwich = FALSE) > plot(m1, aggregate = FALSE) > ## suggests a clear break in the variance (but not the mean) > > ## dating > bp <- breakpoints(I(djia^2) ~ 1) > plot(bp) > ## -> clearly one break > bp Optimal 2-segment partition: Call: breakpoints.formula(formula = I(djia^2) ~ 1) Breakpoints at observation number: 89 Corresponding to breakdates: 0.552795 > time(djia)[bp$breakpoints] [1] "1973-03-16" > > ## visualization > plot(djia) > abline(v = time(djia)[bp$breakpoints], lty = 2) > lines(time(djia)[confint(bp)$confint[c(1,3)]], rep(min(djia), 2), col = 2, type = "b", pch = 3) > > > > cleanEx() > nameEx("Fstats") > ### * Fstats > > flush(stderr()); flush(stdout()) > > ### Name: Fstats > ### Title: F Statistics > ### Aliases: Fstats print.Fstats > ### Keywords: regression > > ### ** Examples > > ## Nile data with one breakpoint: the annual flows drop in 1898 > ## because the first Ashwan dam was built > data("Nile") > plot(Nile) > > ## test the null hypothesis that the annual flow remains constant > ## over the years > fs.nile <- Fstats(Nile ~ 1) > plot(fs.nile) > sctest(fs.nile) supF test data: fs.nile sup.F = 75.93, p-value = 2.22e-16 > ## visualize the breakpoint implied by the argmax of the F statistics > plot(Nile) > lines(breakpoints(fs.nile)) > > ## UK Seatbelt data: a SARIMA(1,0,0)(1,0,0)_12 model > ## (fitted by OLS) is used and reveals (at least) two > ## breakpoints - one in 1973 associated with the oil crisis and > ## one in 1983 due to the introduction of compulsory > ## wearing of seatbelts in the UK. > data("UKDriverDeaths") > seatbelt <- log10(UKDriverDeaths) > seatbelt <- cbind(seatbelt, lag(seatbelt, k = -1), lag(seatbelt, k = -12)) > colnames(seatbelt) <- c("y", "ylag1", "ylag12") > seatbelt <- window(seatbelt, start = c(1970, 1), end = c(1984,12)) > plot(seatbelt[,"y"], ylab = expression(log[10](casualties))) > > ## compute F statistics for potential breakpoints between > ## 1971(6) (corresponds to from = 0.1) and 1983(6) (corresponds to > ## to = 0.9 = 1 - from, the default) > ## compute F statistics > fs <- Fstats(y ~ ylag1 + ylag12, data = seatbelt, from = 0.1) > ## this gives the same result > fs <- Fstats(y ~ ylag1 + ylag12, data = seatbelt, from = c(1971, 6), + to = c(1983, 6)) > ## plot the F statistics > plot(fs, alpha = 0.01) > ## plot F statistics with aveF boundary > plot(fs, aveF = TRUE) > ## perform the expF test > sctest(fs, type = "expF") expF test data: fs exp.F = 6.4247, p-value = 0.008093 > > > > cleanEx() > nameEx("GermanM1") > ### * GermanM1 > > flush(stderr()); flush(stdout()) > > ### Encoding: UTF-8 > > ### Name: GermanM1 > ### Title: German M1 Money Demand > ### Aliases: GermanM1 historyM1 monitorM1 > ### Keywords: datasets > > ### ** Examples > > data("GermanM1") > ## Lütkepohl et al. (1999) use the following model > LTW.model <- dm ~ dy2 + dR + dR1 + dp + m1 + y1 + R1 + season > ## Zeileis et al. (2005) use > M1.model <- dm ~ dy2 + dR + dR1 + dp + ecm.res + season > > > ## historical tests > ols <- efp(LTW.model, data = GermanM1, type = "OLS-CUSUM") > plot(ols) > re <- efp(LTW.model, data = GermanM1, type = "fluctuation") > plot(re) > fs <- Fstats(LTW.model, data = GermanM1, from = 0.1) > plot(fs) > > ## monitoring > M1 <- historyM1 > ols.efp <- efp(M1.model, type = "OLS-CUSUM", data = M1) > newborder <- function(k) 1.5778*k/118 > ols.mefp <- mefp(ols.efp, period = 2) > ols.mefp2 <- mefp(ols.efp, border = newborder) > M1 <- GermanM1 > ols.mon <- monitor(ols.mefp) Break detected at observation # 128 > ols.mon2 <- monitor(ols.mefp2) Break detected at observation # 135 > plot(ols.mon) > lines(boundary(ols.mon2), col = 2) > > ## dating > bp <- breakpoints(LTW.model, data = GermanM1) > summary(bp) Optimal (m+1)-segment partition: Call: breakpoints.formula(formula = LTW.model, data = GermanM1) Breakpoints at observation number: m = 1 119 m = 2 42 119 m = 3 48 71 119 m = 4 27 48 71 119 m = 5 27 48 71 98 119 Corresponding to breakdates: m = 1 1990(3) m = 2 1971(2) 1990(3) m = 3 1972(4) 1978(3) 1990(3) m = 4 1967(3) 1972(4) 1978(3) 1990(3) m = 5 1967(3) 1972(4) 1978(3) 1985(2) 1990(3) Fit: m 0 1 2 3 4 5 RSS 3.683e-02 1.916e-02 1.522e-02 1.301e-02 1.053e-02 9.198e-03 BIC -6.974e+02 -7.296e+02 -7.025e+02 -6.653e+02 -6.356e+02 -5.952e+02 > plot(bp) > > plot(fs) > lines(confint(bp)) > > > > cleanEx() > nameEx("Grossarl") > ### * Grossarl > > flush(stderr()); flush(stdout()) > > ### Name: Grossarl > ### Title: Marriages, Births and Deaths in Grossarl > ### Aliases: Grossarl > ### Keywords: datasets > > ### ** Examples > > data("Grossarl") > > ## time series of births, deaths, marriages > ########################################### > > with(Grossarl, plot(cbind(deaths, illegitimate + legitimate, marriages), + plot.type = "single", col = grey(c(0.7, 0, 0)), lty = c(1, 1, 3), + lwd = 1.5, ylab = "annual Grossarl series")) > legend("topright", c("deaths", "births", "marriages"), col = grey(c(0.7, 0, 0)), + lty = c(1, 1, 3), bty = "n") > > ## illegitimate births > ###################### > ## lm + MOSUM > plot(Grossarl$fraction) > fm.min <- lm(fraction ~ politics, data = Grossarl) > fm.ext <- lm(fraction ~ politics + morals + nuptiality + marriages, + data = Grossarl) > lines(ts(fitted(fm.min), start = 1700), col = 2) > lines(ts(fitted(fm.ext), start = 1700), col = 4) > mos.min <- efp(fraction ~ politics, data = Grossarl, type = "OLS-MOSUM") > mos.ext <- efp(fraction ~ politics + morals + nuptiality + marriages, + data = Grossarl, type = "OLS-MOSUM") > plot(mos.min) > lines(mos.ext, lty = 2) > > ## dating > bp <- breakpoints(fraction ~ 1, data = Grossarl, h = 0.1) > summary(bp) Optimal (m+1)-segment partition: Call: breakpoints.formula(formula = fraction ~ 1, h = 0.1, data = Grossarl) Breakpoints at observation number: m = 1 127 m = 2 55 122 m = 3 55 124 180 m = 4 55 122 157 179 m = 5 54 86 122 157 179 m = 6 35 55 86 122 157 179 m = 7 35 55 80 101 122 157 179 m = 8 35 55 79 99 119 139 159 179 Corresponding to breakdates: m = 1 1826 m = 2 1754 1821 m = 3 1754 1823 1879 m = 4 1754 1821 1856 1878 m = 5 1753 1785 1821 1856 1878 m = 6 1734 1754 1785 1821 1856 1878 m = 7 1734 1754 1779 1800 1821 1856 1878 m = 8 1734 1754 1778 1798 1818 1838 1858 1878 Fit: m 0 1 2 3 4 5 6 RSS 1.1088 0.8756 0.6854 0.6587 0.6279 0.6019 0.5917 BIC -460.8402 -497.4625 -535.8459 -533.1857 -532.1789 -530.0501 -522.8510 m 7 8 RSS 0.5934 0.6084 BIC -511.7017 -496.0924 > ## RSS, BIC, AIC > plot(bp) > plot(0:8, AIC(bp), type = "b") > > ## probably use 5 or 6 breakpoints and compare with > ## coding of the factors as used by us > ## > ## politics 1803 1816 1850 > ## morals 1736 1753 1771 1803 > ## nuptiality 1803 1810 1816 1883 > ## > ## m = 5 1753 1785 1821 1856 1878 > ## m = 6 1734 1754 1785 1821 1856 1878 > ## 6 2 5 1 4 3 > > ## fitted models > coef(bp, breaks = 6) (Intercept) 1700 - 1734 0.16933985 1735 - 1754 0.14078070 1755 - 1785 0.09890276 1786 - 1821 0.05955620 1822 - 1856 0.17441529 1857 - 1878 0.22425604 1879 - 1899 0.15414723 > plot(Grossarl$fraction) > lines(fitted(bp, breaks = 6), col = 2) > lines(ts(fitted(fm.ext), start = 1700), col = 4) > > > ## marriages > ############ > ## lm + MOSUM > plot(Grossarl$marriages) > fm.min <- lm(marriages ~ politics, data = Grossarl) > fm.ext <- lm(marriages ~ politics + morals + nuptiality, data = Grossarl) > lines(ts(fitted(fm.min), start = 1700), col = 2) > lines(ts(fitted(fm.ext), start = 1700), col = 4) > mos.min <- efp(marriages ~ politics, data = Grossarl, type = "OLS-MOSUM") > mos.ext <- efp(marriages ~ politics + morals + nuptiality, data = Grossarl, + type = "OLS-MOSUM") > plot(mos.min) > lines(mos.ext, lty = 2) > > ## dating > bp <- breakpoints(marriages ~ 1, data = Grossarl, h = 0.1) > summary(bp) Optimal (m+1)-segment partition: Call: breakpoints.formula(formula = marriages ~ 1, h = 0.1, data = Grossarl) Breakpoints at observation number: m = 1 114 m = 2 39 114 m = 3 39 114 176 m = 4 39 95 115 176 m = 5 39 62 95 115 176 m = 6 39 62 95 115 136 176 m = 7 39 62 95 115 136 156 176 m = 8 21 41 62 95 115 136 156 176 Corresponding to breakdates: m = 1 1813 m = 2 1738 1813 m = 3 1738 1813 1875 m = 4 1738 1794 1814 1875 m = 5 1738 1761 1794 1814 1875 m = 6 1738 1761 1794 1814 1835 1875 m = 7 1738 1761 1794 1814 1835 1855 1875 m = 8 1720 1740 1761 1794 1814 1835 1855 1875 Fit: m 0 1 2 3 4 5 6 7 8 RSS 3832 3059 2863 2723 2671 2634 2626 2626 2645 BIC 1169 1134 1132 1132 1139 1147 1157 1167 1179 > ## RSS, BIC, AIC > plot(bp) > plot(0:8, AIC(bp), type = "b") > > ## probably use 3 or 4 breakpoints and compare with > ## coding of the factors as used by us > ## > ## politics 1803 1816 1850 > ## morals 1736 1753 1771 1803 > ## nuptiality 1803 1810 1816 1883 > ## > ## m = 3 1738 1813 1875 > ## m = 4 1738 1794 1814 1875 > ## 2 4 1 3 > > ## fitted models > coef(bp, breaks = 4) (Intercept) 1700 - 1738 13.487179 1739 - 1794 10.160714 1795 - 1814 12.150000 1815 - 1875 6.885246 1876 - 1899 9.750000 > plot(Grossarl$marriages) > lines(fitted(bp, breaks = 4), col = 2) > lines(ts(fitted(fm.ext), start = 1700), col = 4) > > > > cleanEx() > nameEx("PhillipsCurve") > ### * PhillipsCurve > > flush(stderr()); flush(stdout()) > > ### Name: PhillipsCurve > ### Title: UK Phillips Curve Equation Data > ### Aliases: PhillipsCurve > ### Keywords: datasets > > ### ** Examples > > ## load and plot data > data("PhillipsCurve") > uk <- window(PhillipsCurve, start = 1948) > plot(uk[, "dp"]) > > ## AR(1) inflation model > ## estimate breakpoints > bp.inf <- breakpoints(dp ~ dp1, data = uk, h = 8) > plot(bp.inf) > summary(bp.inf) Optimal (m+1)-segment partition: Call: breakpoints.formula(formula = dp ~ dp1, h = 8, data = uk) Breakpoints at observation number: m = 1 20 m = 2 20 28 m = 3 9 20 28 Corresponding to breakdates: m = 1 1967 m = 2 1967 1975 m = 3 1956 1967 1975 Fit: m 0 1 2 3 RSS 0.03068 0.02672 0.01838 0.01786 BIC -162.34174 -156.80265 -160.70385 -150.78479 > > ## fit segmented model with three breaks > fac.inf <- breakfactor(bp.inf, breaks = 2, label = "seg") > fm.inf <- lm(dp ~ 0 + fac.inf/dp1, data = uk) > summary(fm.inf) Call: lm(formula = dp ~ 0 + fac.inf/dp1, data = uk) Residuals: Min 1Q Median 3Q Max -0.046987 -0.014861 -0.003593 0.006286 0.058081 Coefficients: Estimate Std. Error t value Pr(>|t|) fac.infseg1 0.024501 0.011176 2.192 0.0353 * fac.infseg2 -0.000775 0.017853 -0.043 0.9656 fac.infseg3 0.017603 0.015007 1.173 0.2489 fac.infseg1:dp1 0.274012 0.269892 1.015 0.3171 fac.infseg2:dp1 1.343369 0.224521 5.983 9.05e-07 *** fac.infseg3:dp1 0.683410 0.130106 5.253 8.07e-06 *** --- Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 Residual standard error: 0.02325 on 34 degrees of freedom Multiple R-squared: 0.9237, Adjusted R-squared: 0.9103 F-statistic: 68.64 on 6 and 34 DF, p-value: < 2.2e-16 > > ## Results from Table 2 in Bai & Perron (2003): > ## coefficient estimates > coef(bp.inf, breaks = 2) (Intercept) dp1 1948 - 1967 0.0245010729 0.2740125 1968 - 1975 -0.0007750299 1.3433686 1976 - 1987 0.0176032179 0.6834098 > ## corresponding standard errors > sqrt(sapply(vcov(bp.inf, breaks = 2), diag)) 1948 - 1967 1968 - 1975 1976 - 1987 (Intercept) 0.008268814 0.01985539 0.01571339 dp1 0.199691273 0.24969992 0.13622996 > ## breakpoints and confidence intervals > confint(bp.inf, breaks = 2) Confidence intervals for breakpoints of optimal 3-segment partition: Call: confint.breakpointsfull(object = bp.inf, breaks = 2) Breakpoints at observation number: 2.5 % breakpoints 97.5 % 1 18 20 25 2 26 28 34 Corresponding to breakdates: 2.5 % breakpoints 97.5 % 1 1965 1967 1972 2 1973 1975 1981 > > ## Phillips curve equation > ## estimate breakpoints > bp.pc <- breakpoints(dw ~ dp1 + du + u1, data = uk, h = 5, breaks = 5) > ## look at RSS and BIC > plot(bp.pc) > summary(bp.pc) Optimal (m+1)-segment partition: Call: breakpoints.formula(formula = dw ~ dp1 + du + u1, h = 5, breaks = 5, data = uk) Breakpoints at observation number: m = 1 26 m = 2 20 28 m = 3 9 25 30 m = 4 11 16 25 30 m = 5 11 16 22 27 32 Corresponding to breakdates: m = 1 1973 m = 2 1967 1975 m = 3 1956 1972 1977 m = 4 1958 1963 1972 1977 m = 5 1958 1963 1969 1974 1979 Fit: m 0 1 2 3 4 5 RSS 3.409e-02 1.690e-02 1.062e-02 7.835e-03 5.183e-03 3.388e-03 BIC -1.508e+02 -1.604e+02 -1.605e+02 -1.542e+02 -1.523e+02 -1.509e+02 > > ## fit segmented model with three breaks > fac.pc <- breakfactor(bp.pc, breaks = 2, label = "seg") > fm.pc <- lm(dw ~ 0 + fac.pc/dp1 + du + u1, data = uk) > summary(fm.pc) Call: lm(formula = dw ~ 0 + fac.pc/dp1 + du + u1, data = uk) Residuals: Min 1Q Median 3Q Max -0.041392 -0.011516 0.000089 0.010036 0.044539 Coefficients: Estimate Std. Error t value Pr(>|t|) fac.pcseg1 0.06574 0.01169 5.623 3.24e-06 *** fac.pcseg2 0.06231 0.01883 3.310 0.00232 ** fac.pcseg3 0.18093 0.05388 3.358 0.00204 ** du -0.14408 0.58218 -0.247 0.80611 u1 -0.87516 0.37274 -2.348 0.02523 * fac.pcseg1:dp1 0.09373 0.24053 0.390 0.69936 fac.pcseg2:dp1 1.23143 0.20498 6.008 1.06e-06 *** fac.pcseg3:dp1 0.01618 0.25667 0.063 0.95013 --- Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 Residual standard error: 0.02021 on 32 degrees of freedom Multiple R-squared: 0.9655, Adjusted R-squared: 0.9569 F-statistic: 112 on 8 and 32 DF, p-value: < 2.2e-16 > > ## Results from Table 3 in Bai & Perron (2003): > ## coefficient estimates > coef(fm.pc) fac.pcseg1 fac.pcseg2 fac.pcseg3 du u1 0.06574278 0.06231337 0.18092502 -0.14408073 -0.87515585 fac.pcseg1:dp1 fac.pcseg2:dp1 fac.pcseg3:dp1 0.09372759 1.23143008 0.01617826 > ## corresponding standard errors > sqrt(diag(vcov(fm.pc))) fac.pcseg1 fac.pcseg2 fac.pcseg3 du u1 0.01169149 0.01882668 0.05388166 0.58217571 0.37273955 fac.pcseg1:dp1 fac.pcseg2:dp1 fac.pcseg3:dp1 0.24052539 0.20497973 0.25666903 > ## breakpoints and confidence intervals > confint(bp.pc, breaks = 2, het.err = FALSE) Confidence intervals for breakpoints of optimal 3-segment partition: Call: confint.breakpointsfull(object = bp.pc, breaks = 2, het.err = FALSE) Breakpoints at observation number: 2.5 % breakpoints 97.5 % 1 19 20 21 2 27 28 29 Corresponding to breakdates: 2.5 % breakpoints 97.5 % 1 1966 1967 1968 2 1974 1975 1976 > > > > cleanEx() > nameEx("RealInt") > ### * RealInt > > flush(stderr()); flush(stdout()) > > ### Name: RealInt > ### Title: US Ex-post Real Interest Rate > ### Aliases: RealInt > ### Keywords: datasets > > ### ** Examples > > ## load and plot data > data("RealInt") > plot(RealInt) > > ## estimate breakpoints > bp.ri <- breakpoints(RealInt ~ 1, h = 15) > plot(bp.ri) > summary(bp.ri) Optimal (m+1)-segment partition: Call: breakpoints.formula(formula = RealInt ~ 1, h = 15) Breakpoints at observation number: m = 1 79 m = 2 47 79 m = 3 24 47 79 m = 4 24 47 64 79 m = 5 16 31 47 64 79 Corresponding to breakdates: m = 1 1980(3) m = 2 1972(3) 1980(3) m = 3 1966(4) 1972(3) 1980(3) m = 4 1966(4) 1972(3) 1976(4) 1980(3) m = 5 1964(4) 1968(3) 1972(3) 1976(4) 1980(3) Fit: m 0 1 2 3 4 5 RSS 1214.9 645.0 456.0 445.2 444.9 449.6 BIC 555.7 499.8 473.3 480.1 489.3 499.7 > > ## fit segmented model with three breaks > fac.ri <- breakfactor(bp.ri, breaks = 3, label = "seg") > fm.ri <- lm(RealInt ~ 0 + fac.ri) > summary(fm.ri) Call: lm(formula = RealInt ~ 0 + fac.ri) Residuals: Min 1Q Median 3Q Max -4.5157 -1.3674 -0.0578 1.3248 6.0990 Coefficients: Estimate Std. Error t value Pr(>|t|) fac.riseg1 1.8236 0.4329 4.213 5.57e-05 *** fac.riseg2 0.8661 0.4422 1.959 0.053 . fac.riseg3 -1.7961 0.3749 -4.791 5.83e-06 *** fac.riseg4 5.6429 0.4329 13.036 < 2e-16 *** --- Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 Residual standard error: 2.121 on 99 degrees of freedom Multiple R-squared: 0.6842, Adjusted R-squared: 0.6714 F-statistic: 53.62 on 4 and 99 DF, p-value: < 2.2e-16 > > ## setup kernel HAC estimator > vcov.ri <- function(x, ...) kernHAC(x, kernel = "Quadratic Spectral", + prewhite = 1, approx = "AR(1)", ...) > > ## Results from Table 1 in Bai & Perron (2003): > ## coefficient estimates > coef(bp.ri, breaks = 3) (Intercept) 1961(1) - 1966(4) 1.8236167 1967(1) - 1972(3) 0.8660848 1972(4) - 1980(3) -1.7961384 1980(4) - 1986(3) 5.6428896 > ## corresponding standard errors > sapply(vcov(bp.ri, breaks = 3, vcov = vcov.ri), sqrt) 1961(1) - 1966(4) 1967(1) - 1972(3) 1972(4) - 1980(3) 1980(4) - 1986(3) 0.1857577 0.1499849 0.5026749 0.5887460 > ## breakpoints and confidence intervals > confint(bp.ri, breaks = 3, vcov = vcov.ri) Confidence intervals for breakpoints of optimal 4-segment partition: Call: confint.breakpointsfull(object = bp.ri, breaks = 3, vcov. = vcov.ri) Breakpoints at observation number: 2.5 % breakpoints 97.5 % 1 18 24 35 2 33 47 48 3 77 79 81 Corresponding to breakdates: Warning: Overlapping confidence intervals 2.5 % breakpoints 97.5 % 1 1965(2) 1966(4) 1969(3) 2 1969(1) 1972(3) 1972(4) 3 1980(1) 1980(3) 1981(1) > > ## Visualization > plot(RealInt) > lines(as.vector(time(RealInt)), fitted(fm.ri), col = 4) > lines(confint(bp.ri, breaks = 3, vcov = vcov.ri)) Warning: Overlapping confidence intervals > > > > cleanEx() > nameEx("SP2001") > ### * SP2001 > > flush(stderr()); flush(stdout()) > > ### Name: SP2001 > ### Title: S&P 500 Stock Prices > ### Aliases: SP2001 > ### Keywords: datasets > > ### ** Examples > > ## load and transform data > ## (DAL: Delta Air Lines, LU: Lucent Technologies) > data("SP2001") > stock.prices <- SP2001[, c("DAL", "LU")] > stock.returns <- diff(log(stock.prices)) > > ## price and return series > plot(stock.prices, ylab = c("Delta Air Lines", "Lucent Technologies"), main = "") > plot(stock.returns, ylab = c("Delta Air Lines", "Lucent Technologies"), main = "") > > ## monitoring of DAL series > myborder <- function(k) 1.939*k/28 > x <- as.vector(stock.returns[, "DAL"][1:28]) > dal.cusum <- mefp(x ~ 1, type = "OLS-CUSUM", border = myborder) > dal.mosum <- mefp(x ~ 1, type = "OLS-MOSUM", h = 0.5, period = 4) > x <- as.vector(stock.returns[, "DAL"]) > dal.cusum <- monitor(dal.cusum) Break detected at observation # 29 > dal.mosum <- monitor(dal.mosum) Break detected at observation # 29 > > ## monitoring of LU series > x <- as.vector(stock.returns[, "LU"][1:28]) > lu.cusum <- mefp(x ~ 1, type = "OLS-CUSUM", border = myborder) > lu.mosum <- mefp(x ~ 1, type = "OLS-MOSUM", h = 0.5, period = 4) > x <- as.vector(stock.returns[, "LU"]) > lu.cusum <- monitor(lu.cusum) > lu.mosum <- monitor(lu.mosum) > > ## pretty plotting > ## (needs some work because lm() does not keep "zoo" attributes) > cus.bound <- zoo(c(rep(NA, 27), myborder(28:102)), index(stock.returns)) > mos.bound <- as.vector(boundary(dal.mosum)) > mos.bound <- zoo(c(rep(NA, 27), mos.bound[1], mos.bound), index(stock.returns)) > > ## Lucent Technologies: CUSUM test > plot(zoo(c(lu.cusum$efpprocess, lu.cusum$process), index(stock.prices)), + ylim = c(-1, 1) * coredata(cus.bound)[102], xlab = "Time", ylab = "empirical fluctuation process") > abline(0, 0) > abline(v = as.Date("2001-09-10"), lty = 2) > lines(cus.bound, col = 2) > lines(-cus.bound, col = 2) > > ## Lucent Technologies: MOSUM test > plot(zoo(c(lu.mosum$efpprocess, lu.mosum$process), index(stock.prices)[-(1:14)]), + ylim = c(-1, 1) * coredata(mos.bound)[102], xlab = "Time", ylab = "empirical fluctuation process") > abline(0, 0) > abline(v = as.Date("2001-09-10"), lty = 2) > lines(mos.bound, col = 2) > lines(-mos.bound, col = 2) > > ## Delta Air Lines: CUSUM test > plot(zoo(c(dal.cusum$efpprocess, dal.cusum$process), index(stock.prices)), + ylim = c(-1, 1) * coredata(cus.bound)[102], xlab = "Time", ylab = "empirical fluctuation process") > abline(0, 0) > abline(v = as.Date("2001-09-10"), lty = 2) > lines(cus.bound, col = 2) > lines(-cus.bound, col = 2) > > ## Delta Air Lines: MOSUM test > plot(zoo(c(dal.mosum$efpprocess, dal.mosum$process), index(stock.prices)[-(1:14)]), + ylim = range(dal.mosum$process), xlab = "Time", ylab = "empirical fluctuation process") > abline(0, 0) > abline(v = as.Date("2001-09-10"), lty = 2) > lines(mos.bound, col = 2) > lines(-mos.bound, col = 2) > > > > cleanEx() > nameEx("USIncExp") > ### * USIncExp > > flush(stderr()); flush(stdout()) > > ### Name: USIncExp > ### Title: Income and Expenditures in the US > ### Aliases: USIncExp > ### Keywords: datasets > > ### ** Examples > > ## These example are presented in the vignette distributed with this > ## package, the code was generated by Stangle("strucchange-intro.Rnw") > > ################################################### > ### chunk number 1: data > ################################################### > library("strucchange") > data("USIncExp") > plot(USIncExp, plot.type = "single", col = 1:2, ylab = "billion US$") > legend(1960, max(USIncExp), c("income", "expenditures"), + lty = c(1,1), col = 1:2, bty = "n") > > > ################################################### > ### chunk number 2: subset > ################################################### > library("strucchange") > data("USIncExp") > USIncExp2 <- window(USIncExp, start = c(1985,12)) > > > ################################################### > ### chunk number 3: ecm-setup > ################################################### > coint.res <- residuals(lm(expenditure ~ income, data = USIncExp2)) > coint.res <- lag(ts(coint.res, start = c(1985,12), freq = 12), k = -1) > USIncExp2 <- cbind(USIncExp2, diff(USIncExp2), coint.res) > USIncExp2 <- window(USIncExp2, start = c(1986,1), end = c(2001,2)) > colnames(USIncExp2) <- c("income", "expenditure", "diff.income", + "diff.expenditure", "coint.res") > ecm.model <- diff.expenditure ~ coint.res + diff.income > > > ################################################### > ### chunk number 4: ts-used > ################################################### > plot(USIncExp2[,3:5], main = "") > > > ################################################### > ### chunk number 5: efp > ################################################### > ocus <- efp(ecm.model, type="OLS-CUSUM", data=USIncExp2) > me <- efp(ecm.model, type="ME", data=USIncExp2, h=0.2) > > > ################################################### > ### chunk number 6: efp-boundary > ################################################### > bound.ocus <- boundary(ocus, alpha=0.05) > > > ################################################### > ### chunk number 7: OLS-CUSUM > ################################################### > plot(ocus) > > > ################################################### > ### chunk number 8: efp-boundary2 > ################################################### > plot(ocus, boundary = FALSE) > lines(bound.ocus, col = 4) > lines(-bound.ocus, col = 4) > > > ################################################### > ### chunk number 9: ME-null > ################################################### > plot(me, functional = NULL) > > > ################################################### > ### chunk number 10: efp-sctest > ################################################### > sctest(ocus) OLS-based CUSUM test data: ocus S0 = 1.5511, p-value = 0.01626 > > > ################################################### > ### chunk number 11: efp-sctest2 > ################################################### > sctest(ecm.model, type="OLS-CUSUM", data=USIncExp2) OLS-based CUSUM test data: ecm.model S0 = 1.5511, p-value = 0.01626 > > > ################################################### > ### chunk number 12: Fstats > ################################################### > fs <- Fstats(ecm.model, from = c(1990, 1), to = c(1999,6), data = USIncExp2) > > > ################################################### > ### chunk number 13: Fstats-plot > ################################################### > plot(fs) > > > ################################################### > ### chunk number 14: pval-plot > ################################################### > plot(fs, pval=TRUE) > > > ################################################### > ### chunk number 15: aveF-plot > ################################################### > plot(fs, aveF=TRUE) > > > ################################################### > ### chunk number 16: Fstats-sctest > ################################################### > sctest(fs, type="expF") expF test data: fs exp.F = 8.9955, p-value = 0.001311 > > > ################################################### > ### chunk number 17: Fstats-sctest2 > ################################################### > sctest(ecm.model, type = "expF", from = 49, to = 162, data = USIncExp2) expF test data: ecm.model exp.F = 8.9955, p-value = 0.001311 > > > ################################################### > ### chunk number 18: mefp > ################################################### > USIncExp3 <- window(USIncExp2, start = c(1986, 1), end = c(1989,12)) > me.mefp <- mefp(ecm.model, type = "ME", data = USIncExp3, alpha = 0.05) > > > ################################################### > ### chunk number 19: monitor1 > ################################################### > USIncExp3 <- window(USIncExp2, start = c(1986, 1), end = c(1990,12)) > me.mefp <- monitor(me.mefp) > > > ################################################### > ### chunk number 20: monitor2 > ################################################### > USIncExp3 <- window(USIncExp2, start = c(1986, 1)) > me.mefp <- monitor(me.mefp) Break detected at observation # 72 > me.mefp Monitoring with ME test (moving estimates test) Initial call: mefp.formula(formula = ecm.model, type = "ME", data = USIncExp3, alpha = 0.05) Last call: monitor(obj = me.mefp) Significance level : 0.05 Critical value : 3.109524 History size : 48 Last point evaluated : 182 Structural break at : 72 Parameter estimate on history : (Intercept) coint.res diff.income 18.9299679 -0.3893141 0.3156597 Last parameter estimate : (Intercept) coint.res diff.income 27.94869106 0.00983451 0.13314662 > > > ################################################### > ### chunk number 21: monitor-plot > ################################################### > plot(me.mefp) > > > ################################################### > ### chunk number 22: mefp2 > ################################################### > USIncExp3 <- window(USIncExp2, start = c(1986, 1), end = c(1989,12)) > me.efp <- efp(ecm.model, type = "ME", data = USIncExp3, h = 0.5) > me.mefp <- mefp(me.efp, alpha=0.05) > > > ################################################### > ### chunk number 23: monitor3 > ################################################### > USIncExp3 <- window(USIncExp2, start = c(1986, 1)) > me.mefp <- monitor(me.mefp) Break detected at observation # 70 > > > ################################################### > ### chunk number 24: monitor-plot2 > ################################################### > plot(me.mefp) > > > > > cleanEx() > nameEx("boundary.Fstats") > ### * boundary.Fstats > > flush(stderr()); flush(stdout()) > > ### Name: boundary.Fstats > ### Title: Boundary for F Statistics > ### Aliases: boundary.Fstats > ### Keywords: regression > > ### ** Examples > > ## Load dataset "nhtemp" with average yearly temperatures in New Haven > data("nhtemp") > ## plot the data > plot(nhtemp) > > ## test the model null hypothesis that the average temperature remains > ## constant over the years for potential break points between 1941 > ## (corresponds to from = 0.5) and 1962 (corresponds to to = 0.85) > ## compute F statistics > fs <- Fstats(nhtemp ~ 1, from = 0.5, to = 0.85) > ## plot the p values without boundary > plot(fs, pval = TRUE, alpha = 0.01) > ## add the boundary in another colour > lines(boundary(fs, pval = TRUE, alpha = 0.01), col = 2) > > > > cleanEx() > nameEx("boundary.efp") > ### * boundary.efp > > flush(stderr()); flush(stdout()) > > ### Name: boundary.efp > ### Title: Boundary for Empirical Fluctuation Processes > ### Aliases: boundary.efp > ### Keywords: regression > > ### ** Examples > > ## Load dataset "nhtemp" with average yearly temperatures in New Haven > data("nhtemp") > ## plot the data > plot(nhtemp) > > ## test the model null hypothesis that the average temperature remains constant > ## over the years > ## compute OLS-CUSUM fluctuation process > temp.cus <- efp(nhtemp ~ 1, type = "OLS-CUSUM") > ## plot the process without boundaries > plot(temp.cus, alpha = 0.01, boundary = FALSE) > ## add the boundaries in another colour > bound <- boundary(temp.cus, alpha = 0.01) > lines(bound, col=4) > lines(-bound, col=4) > > > > cleanEx() > nameEx("boundary.mefp") > ### * boundary.mefp > > flush(stderr()); flush(stdout()) > > ### Name: boundary.mefp > ### Title: Boundary Function for Monitoring of Structural Changes > ### Aliases: boundary.mefp > ### Keywords: regression > > ### ** Examples > > df1 <- data.frame(y=rnorm(300)) > df1[150:300,"y"] <- df1[150:300,"y"]+1 > me1 <- mefp(y~1, data=df1[1:50,,drop=FALSE], type="ME", h=1, + alpha=0.05) > me2 <- monitor(me1, data=df1) Break detected at observation # 183 > > plot(me2, boundary=FALSE) > lines(boundary(me2), col="green", lty="44") > > > > cleanEx() > nameEx("breakdates") > ### * breakdates > > flush(stderr()); flush(stdout()) > > ### Name: breakdates > ### Title: Breakdates Corresponding to Breakpoints > ### Aliases: breakdates breakdates.breakpoints > ### breakdates.confint.breakpoints > ### Keywords: regression > > ### ** Examples > > ## Nile data with one breakpoint: the annual flows drop in 1898 > ## because the first Ashwan dam was built > data("Nile") > plot(Nile) > > bp.nile <- breakpoints(Nile ~ 1) > summary(bp.nile) Optimal (m+1)-segment partition: Call: breakpoints.formula(formula = Nile ~ 1) Breakpoints at observation number: m = 1 28 m = 2 28 83 m = 3 28 68 83 m = 4 28 45 68 83 m = 5 15 30 45 68 83 Corresponding to breakdates: m = 1 1898 m = 2 1898 1953 m = 3 1898 1938 1953 m = 4 1898 1915 1938 1953 m = 5 1885 1900 1915 1938 1953 Fit: m 0 1 2 3 4 5 RSS 2835157 1597457 1552924 1538097 1507888 1659994 BIC 1318 1270 1276 1285 1292 1311 > plot(bp.nile) > > ## compute breakdates corresponding to the > ## breakpoints of minimum BIC segmentation > breakdates(bp.nile) [1] 1898 > > ## confidence intervals > ci.nile <- confint(bp.nile) > breakdates(ci.nile) 2.5 % breakpoints 97.5 % 1 1895 1898 1902 > ci.nile Confidence intervals for breakpoints of optimal 2-segment partition: Call: confint.breakpointsfull(object = bp.nile) Breakpoints at observation number: 2.5 % breakpoints 97.5 % 1 25 28 32 Corresponding to breakdates: 2.5 % breakpoints 97.5 % 1 1895 1898 1902 > > plot(Nile) > lines(ci.nile) > > > > cleanEx() > nameEx("breakfactor") > ### * breakfactor > > flush(stderr()); flush(stdout()) > > ### Name: breakfactor > ### Title: Factor Coding of Segmentations > ### Aliases: breakfactor > ### Keywords: regression > > ### ** Examples > > ## Nile data with one breakpoint: the annual flows drop in 1898 > ## because the first Ashwan dam was built > data("Nile") > plot(Nile) > > ## compute breakpoints > bp.nile <- breakpoints(Nile ~ 1) > > ## fit and visualize segmented and unsegmented model > fm0 <- lm(Nile ~ 1) > fm1 <- lm(Nile ~ breakfactor(bp.nile, breaks = 1)) > > lines(fitted(fm0), col = 3) > lines(fitted(fm1), col = 4) > lines(bp.nile, breaks = 1) > > > > cleanEx() > nameEx("breakpoints") > ### * breakpoints > > flush(stderr()); flush(stdout()) > > ### Name: breakpoints > ### Title: Dating Breaks > ### Aliases: breakpoints breakpoints.formula breakpoints.breakpointsfull > ### breakpoints.Fstats summary.breakpoints summary.breakpointsfull > ### plot.breakpointsfull plot.summary.breakpointsfull print.breakpoints > ### print.summary.breakpointsfull lines.breakpoints coef.breakpointsfull > ### vcov.breakpointsfull fitted.breakpointsfull residuals.breakpointsfull > ### df.residual.breakpointsfull > ### Keywords: regression > > ### ** Examples > > ## Nile data with one breakpoint: the annual flows drop in 1898 > ## because the first Ashwan dam was built > data("Nile") > plot(Nile) > > ## F statistics indicate one breakpoint > fs.nile <- Fstats(Nile ~ 1) > plot(fs.nile) > breakpoints(fs.nile) Optimal 2-segment partition: Call: breakpoints.Fstats(obj = fs.nile) Breakpoints at observation number: 28 Corresponding to breakdates: 1898 > lines(breakpoints(fs.nile)) > > ## or > bp.nile <- breakpoints(Nile ~ 1) > summary(bp.nile) Optimal (m+1)-segment partition: Call: breakpoints.formula(formula = Nile ~ 1) Breakpoints at observation number: m = 1 28 m = 2 28 83 m = 3 28 68 83 m = 4 28 45 68 83 m = 5 15 30 45 68 83 Corresponding to breakdates: m = 1 1898 m = 2 1898 1953 m = 3 1898 1938 1953 m = 4 1898 1915 1938 1953 m = 5 1885 1900 1915 1938 1953 Fit: m 0 1 2 3 4 5 RSS 2835157 1597457 1552924 1538097 1507888 1659994 BIC 1318 1270 1276 1285 1292 1311 > > ## the BIC also chooses one breakpoint > plot(bp.nile) > breakpoints(bp.nile) Optimal 2-segment partition: Call: breakpoints.breakpointsfull(obj = bp.nile) Breakpoints at observation number: 28 Corresponding to breakdates: 1898 > > ## fit null hypothesis model and model with 1 breakpoint > fm0 <- lm(Nile ~ 1) > fm1 <- lm(Nile ~ breakfactor(bp.nile, breaks = 1)) > plot(Nile) > lines(ts(fitted(fm0), start = 1871), col = 3) > lines(ts(fitted(fm1), start = 1871), col = 4) > lines(bp.nile) > > ## confidence interval > ci.nile <- confint(bp.nile) > ci.nile Confidence intervals for breakpoints of optimal 2-segment partition: Call: confint.breakpointsfull(object = bp.nile) Breakpoints at observation number: 2.5 % breakpoints 97.5 % 1 25 28 32 Corresponding to breakdates: 2.5 % breakpoints 97.5 % 1 1895 1898 1902 > lines(ci.nile) > > > ## UK Seatbelt data: a SARIMA(1,0,0)(1,0,0)_12 model > ## (fitted by OLS) is used and reveals (at least) two > ## breakpoints - one in 1973 associated with the oil crisis and > ## one in 1983 due to the introduction of compulsory > ## wearing of seatbelts in the UK. > data("UKDriverDeaths") > seatbelt <- log10(UKDriverDeaths) > seatbelt <- cbind(seatbelt, lag(seatbelt, k = -1), lag(seatbelt, k = -12)) > colnames(seatbelt) <- c("y", "ylag1", "ylag12") > seatbelt <- window(seatbelt, start = c(1970, 1), end = c(1984,12)) > plot(seatbelt[,"y"], ylab = expression(log[10](casualties))) > > ## testing > re.seat <- efp(y ~ ylag1 + ylag12, data = seatbelt, type = "RE") > plot(re.seat) > > ## dating > bp.seat <- breakpoints(y ~ ylag1 + ylag12, data = seatbelt, h = 0.1) > summary(bp.seat) Optimal (m+1)-segment partition: Call: breakpoints.formula(formula = y ~ ylag1 + ylag12, h = 0.1, data = seatbelt) Breakpoints at observation number: m = 1 46 m = 2 46 157 m = 3 46 70 157 m = 4 46 70 108 157 m = 5 46 70 120 141 160 m = 6 46 70 89 108 141 160 m = 7 46 70 89 107 125 144 162 m = 8 18 46 70 89 107 125 144 162 Corresponding to breakdates: m = 1 1973(10) m = 2 1973(10) 1983(1) m = 3 1973(10) 1975(10) 1983(1) m = 4 1973(10) 1975(10) 1978(12) 1983(1) m = 5 1973(10) 1975(10) 1979(12) 1981(9) 1983(4) m = 6 1973(10) 1975(10) 1977(5) 1978(12) 1981(9) 1983(4) m = 7 1973(10) 1975(10) 1977(5) 1978(11) 1980(5) 1981(12) 1983(6) m = 8 1971(6) 1973(10) 1975(10) 1977(5) 1978(11) 1980(5) 1981(12) 1983(6) Fit: m 0 1 2 3 4 5 6 RSS 0.3297 0.2967 0.2676 0.2438 0.2395 0.2317 0.2258 BIC -602.8611 -601.0539 -598.9042 -594.8774 -577.2905 -562.4880 -546.3632 m 7 8 RSS 0.2244 0.2231 BIC -526.7295 -506.9886 > lines(bp.seat, breaks = 2) > > ## minimum BIC partition > plot(bp.seat) > breakpoints(bp.seat) Optimal 1-segment partition: Call: breakpoints.breakpointsfull(obj = bp.seat) Breakpoints at observation number: NA Corresponding to breakdates: NA > ## the BIC would choose 0 breakpoints although the RE and supF test > ## clearly reject the hypothesis of structural stability. Bai & > ## Perron (2003) report that the BIC has problems in dynamic regressions. > ## due to the shape of the RE process of the F statistics choose two > ## breakpoints and fit corresponding models > bp.seat2 <- breakpoints(bp.seat, breaks = 2) > fm0 <- lm(y ~ ylag1 + ylag12, data = seatbelt) > fm1 <- lm(y ~ breakfactor(bp.seat2)/(ylag1 + ylag12) - 1, data = seatbelt) > > ## plot > plot(seatbelt[,"y"], ylab = expression(log[10](casualties))) > time.seat <- as.vector(time(seatbelt)) > lines(time.seat, fitted(fm0), col = 3) > lines(time.seat, fitted(fm1), col = 4) > lines(bp.seat2) > > ## confidence intervals > ci.seat2 <- confint(bp.seat, breaks = 2) > ci.seat2 Confidence intervals for breakpoints of optimal 3-segment partition: Call: confint.breakpointsfull(object = bp.seat, breaks = 2) Breakpoints at observation number: 2.5 % breakpoints 97.5 % 1 33 46 56 2 144 157 171 Corresponding to breakdates: 2.5 % breakpoints 97.5 % 1 1972(9) 1973(10) 1974(8) 2 1981(12) 1983(1) 1984(3) > lines(ci.seat2) > > > > cleanEx() > nameEx("catL2BB") > ### * catL2BB > > flush(stderr()); flush(stdout()) > > ### Name: catL2BB > ### Title: Generators for efpFunctionals along Categorical Variables > ### Aliases: catL2BB ordL2BB ordwmax > ### Keywords: regression > > ### ** Examples > > ## artificial data > set.seed(1) > d <- data.frame( + x = runif(200, -1, 1), + z = factor(rep(1:4, each = 50)), + err = rnorm(200) + ) > d$y <- rep(c(0.5, -0.5), c(150, 50)) * d$x + d$err > > ## empirical fluctuation process > scus <- gefp(y ~ x, data = d, fit = lm, order.by = ~ z) > > ## chi-squared-type test (unordered LM-type test) > LMuo <- catL2BB(scus) > plot(scus, functional = LMuo) > sctest(scus, functional = LMuo) M-fluctuation test data: scus f(efp) = 12.375, p-value = 0.05411 > > ## ordinal maxLM test (with few replications only to save time) > maxLMo <- ordL2BB(scus, nrep = 10000) > plot(scus, functional = maxLMo) > sctest(scus, functional = maxLMo) M-fluctuation test data: scus f(efp) = 9.0937, p-value = 0.03173 > > ## ordinal weighted double maximum test > WDM <- ordwmax(scus) > plot(scus, functional = WDM) > sctest(scus, functional = WDM) M-fluctuation test data: scus f(efp) = 3.001, p-value = 0.015 > > > > cleanEx() > nameEx("confint.breakpointsfull") > ### * confint.breakpointsfull > > flush(stderr()); flush(stdout()) > > ### Name: confint.breakpointsfull > ### Title: Confidence Intervals for Breakpoints > ### Aliases: confint.breakpointsfull lines.confint.breakpoints > ### print.confint.breakpoints > ### Keywords: regression > > ### ** Examples > > ## Nile data with one breakpoint: the annual flows drop in 1898 > ## because the first Ashwan dam was built > data("Nile") > plot(Nile) > > ## dating breaks > bp.nile <- breakpoints(Nile ~ 1) > ci.nile <- confint(bp.nile, breaks = 1) > lines(ci.nile) > > > > cleanEx() > nameEx("durab") > ### * durab > > flush(stderr()); flush(stdout()) > > ### Name: durab > ### Title: US Labor Productivity > ### Aliases: durab > ### Keywords: datasets > > ### ** Examples > > data("durab") > ## use AR(1) model as in Hansen (2001) and Zeileis et al. (2005) > durab.model <- y ~ lag > > ## historical tests > ## OLS-based CUSUM process > ols <- efp(durab.model, data = durab, type = "OLS-CUSUM") > plot(ols) > ## F statistics > fs <- Fstats(durab.model, data = durab, from = 0.1) > plot(fs) > > ## F statistics based on heteroskadisticy-consistent covariance matrix > fsHC <- Fstats(durab.model, data = durab, from = 0.1, + vcov = function(x, ...) vcovHC(x, type = "HC", ...)) > plot(fsHC) > > ## monitoring > Durab <- window(durab, start=1964, end = c(1979, 12)) > ols.efp <- efp(durab.model, type = "OLS-CUSUM", data = Durab) > newborder <- function(k) 1.723 * k/192 > ols.mefp <- mefp(ols.efp, period=2) > ols.mefp2 <- mefp(ols.efp, border=newborder) > Durab <- window(durab, start=1964) > ols.mon <- monitor(ols.mefp) Break detected at observation # 437 > ols.mon2 <- monitor(ols.mefp2) Break detected at observation # 416 > plot(ols.mon) > lines(boundary(ols.mon2), col = 2) > ## Note: critical value for linear boundary taken from Table III > ## in Zeileis et al. 2005: (1.568 + 1.896)/2 = 1.732 is a linear > ## interpolation between the values for T = 2 and T = 3 at > ## alpha = 0.05. A typo switched 1.732 to 1.723. > > ## dating > bp <- breakpoints(durab.model, data = durab) > summary(bp) Optimal (m+1)-segment partition: Call: breakpoints.formula(formula = durab.model, data = durab) Breakpoints at observation number: m = 1 418 m = 2 221 530 m = 3 114 225 530 m = 4 114 221 418 531 m = 5 114 221 319 418 531 Corresponding to breakdates: m = 1 1981(12) m = 2 1965(7) 1991(4) m = 3 1956(8) 1965(11) 1991(4) m = 4 1956(8) 1965(7) 1981(12) 1991(5) m = 5 1956(8) 1965(7) 1973(9) 1981(12) 1991(5) Fit: m 0 1 2 3 4 5 RSS 5.586e-02 5.431e-02 5.325e-02 5.220e-02 5.171e-02 5.157e-02 BIC -4.221e+03 -4.220e+03 -4.213e+03 -4.207e+03 -4.194e+03 -4.176e+03 > plot(summary(bp)) > > plot(ols) > lines(breakpoints(bp, breaks = 1), col = 3) > lines(breakpoints(bp, breaks = 2), col = 4) > plot(fs) > lines(breakpoints(bp, breaks = 1), col = 3) > lines(breakpoints(bp, breaks = 2), col = 4) > > > > cleanEx() > nameEx("efp") > ### * efp > > flush(stderr()); flush(stdout()) > > ### Name: efp > ### Title: Empirical Fluctuation Processes > ### Aliases: efp print.efp > ### Keywords: regression > > ### ** Examples > > ## Nile data with one breakpoint: the annual flows drop in 1898 > ## because the first Ashwan dam was built > data("Nile") > plot(Nile) > > ## test the null hypothesis that the annual flow remains constant > ## over the years > ## compute OLS-based CUSUM process and plot > ## with standard and alternative boundaries > ocus.nile <- efp(Nile ~ 1, type = "OLS-CUSUM") > plot(ocus.nile) > plot(ocus.nile, alpha = 0.01, alt.boundary = TRUE) > ## calculate corresponding test statistic > sctest(ocus.nile) OLS-based CUSUM test data: ocus.nile S0 = 2.9518, p-value = 5.409e-08 > > ## UK Seatbelt data: a SARIMA(1,0,0)(1,0,0)_12 model > ## (fitted by OLS) is used and reveals (at least) two > ## breakpoints - one in 1973 associated with the oil crisis and > ## one in 1983 due to the introduction of compulsory > ## wearing of seatbelts in the UK. > data("UKDriverDeaths") > seatbelt <- log10(UKDriverDeaths) > seatbelt <- cbind(seatbelt, lag(seatbelt, k = -1), lag(seatbelt, k = -12)) > colnames(seatbelt) <- c("y", "ylag1", "ylag12") > seatbelt <- window(seatbelt, start = c(1970, 1), end = c(1984,12)) > plot(seatbelt[,"y"], ylab = expression(log[10](casualties))) > > ## use RE process > re.seat <- efp(y ~ ylag1 + ylag12, data = seatbelt, type = "RE") > plot(re.seat) > plot(re.seat, functional = NULL) > sctest(re.seat) RE test (recursive estimates test) data: re.seat RE = 1.6311, p-value = 0.02904 > > > > cleanEx() > nameEx("efpFunctional") > ### * efpFunctional > > flush(stderr()); flush(stdout()) > > ### Name: efpFunctional > ### Title: Functionals for Fluctuation Processes > ### Aliases: efpFunctional simulateBMDist maxBM maxBB maxBMI maxBBI maxL2BB > ### meanL2BB rangeBM rangeBB rangeBMI rangeBBI > ### Keywords: regression > > ### ** Examples > > > data("BostonHomicide") > gcus <- gefp(homicides ~ 1, family = poisson, vcov = kernHAC, + data = BostonHomicide) > plot(gcus, functional = meanL2BB) > gcus Generalized Empirical M-Fluctuation Process Call: gefp(homicides ~ 1, family = poisson, vcov = kernHAC, data = BostonHomicide) Fitted model: Call: fit(formula = ..1, family = ..2, data = data) Coefficients: (Intercept) 1.017 Degrees of Freedom: 76 Total (i.e. Null); 76 Residual Null Deviance: 115.6 Residual Deviance: 115.6 AIC: 316.5 > sctest(gcus, functional = meanL2BB) M-fluctuation test data: gcus f(efp) = 0.93375, p-value = 0.005 > > y <- rnorm(1000) > x1 <- runif(1000) > x2 <- runif(1000) > > ## supWald statistic computed by Fstats() > fs <- Fstats(y ~ x1 + x2, from = 0.1) > plot(fs) > sctest(fs) supF test data: fs sup.F = 12.252, p-value = 0.1161 > > ## compare with supLM statistic > scus <- gefp(y ~ x1 + x2, fit = lm) > plot(scus, functional = supLM(0.1)) > sctest(scus, functional = supLM(0.1)) M-fluctuation test data: scus f(efp) = 12.258, p-value = 0.1158 > > ## seatbelt data > data("UKDriverDeaths") > seatbelt <- log10(UKDriverDeaths) > seatbelt <- cbind(seatbelt, lag(seatbelt, k = -1), lag(seatbelt, k = -12)) > colnames(seatbelt) <- c("y", "ylag1", "ylag12") > seatbelt <- window(seatbelt, start = c(1970, 1), end = c(1984,12)) > > scus.seat <- gefp(y ~ ylag1 + ylag12, data = seatbelt) > > ## double maximum test > plot(scus.seat) > ## range test > plot(scus.seat, functional = rangeBB) > ## Cramer-von Mises statistic (Nyblom-Hansen test) > plot(scus.seat, functional = meanL2BB) > ## supLM test > plot(scus.seat, functional = supLM(0.1)) > > > > cleanEx() > nameEx("gefp") > ### * gefp > > flush(stderr()); flush(stdout()) > > ### Name: gefp > ### Title: Generalized Empirical M-Fluctuation Processes > ### Aliases: gefp print.gefp sctest.gefp plot.gefp time.gefp print.gefp > ### Keywords: regression > > ### ** Examples > > data("BostonHomicide") > gcus <- gefp(homicides ~ 1, family = poisson, vcov = kernHAC, + data = BostonHomicide) > plot(gcus, aggregate = FALSE) > gcus Generalized Empirical M-Fluctuation Process Call: gefp(homicides ~ 1, family = poisson, vcov = kernHAC, data = BostonHomicide) Fitted model: Call: fit(formula = ..1, family = ..2, data = data) Coefficients: (Intercept) 1.017 Degrees of Freedom: 76 Total (i.e. Null); 76 Residual Null Deviance: 115.6 Residual Deviance: 115.6 AIC: 316.5 > sctest(gcus) M-fluctuation test data: gcus f(efp) = 1.669, p-value = 0.007613 > > > > cleanEx() > nameEx("logLik.breakpoints") > ### * logLik.breakpoints > > flush(stderr()); flush(stdout()) > > ### Name: logLik.breakpoints > ### Title: Log Likelihood and Information Criteria for Breakpoints > ### Aliases: logLik.breakpoints logLik.breakpointsfull AIC.breakpointsfull > ### Keywords: regression > > ### ** Examples > > ## Nile data with one breakpoint: the annual flows drop in 1898 > ## because the first Ashwan dam was built > data("Nile") > plot(Nile) > > bp.nile <- breakpoints(Nile ~ 1) > summary(bp.nile) Optimal (m+1)-segment partition: Call: breakpoints.formula(formula = Nile ~ 1) Breakpoints at observation number: m = 1 28 m = 2 28 83 m = 3 28 68 83 m = 4 28 45 68 83 m = 5 15 30 45 68 83 Corresponding to breakdates: m = 1 1898 m = 2 1898 1953 m = 3 1898 1938 1953 m = 4 1898 1915 1938 1953 m = 5 1885 1900 1915 1938 1953 Fit: m 0 1 2 3 4 5 RSS 2835157 1597457 1552924 1538097 1507888 1659994 BIC 1318 1270 1276 1285 1292 1311 > plot(bp.nile) > > ## BIC of partitions with0 to 5 breakpoints > plot(0:5, AIC(bp.nile, k = log(bp.nile$nobs)), type = "b") > ## AIC > plot(0:5, AIC(bp.nile), type = "b") > > ## BIC, AIC, log likelihood of a single partition > bp.nile1 <- breakpoints(bp.nile, breaks = 1) > AIC(bp.nile1, k = log(bp.nile1$nobs)) [1] 1270.084 > AIC(bp.nile1) [1] 1259.663 > logLik(bp.nile1) 'log Lik.' -625.8315 (df=4) > > > > cleanEx() > nameEx("mefp") > ### * mefp > > flush(stderr()); flush(stdout()) > > ### Name: mefp > ### Title: Monitoring of Empirical Fluctuation Processes > ### Aliases: mefp mefp.formula mefp.efp print.mefp monitor > ### Keywords: regression > > ### ** Examples > > df1 <- data.frame(y=rnorm(300)) > df1[150:300,"y"] <- df1[150:300,"y"]+1 > > ## use the first 50 observations as history period > e1 <- efp(y~1, data=df1[1:50,,drop=FALSE], type="ME", h=1) > me1 <- mefp(e1, alpha=0.05) > > ## the same in one function call > me1 <- mefp(y~1, data=df1[1:50,,drop=FALSE], type="ME", h=1, + alpha=0.05) > > ## monitor the 50 next observations > me2 <- monitor(me1, data=df1[1:100,,drop=FALSE]) > plot(me2) > > # and now monitor on all data > me3 <- monitor(me2, data=df1) Break detected at observation # 183 > plot(me3) > > > ## Load dataset "USIncExp" with income and expenditure in the US > ## and choose a suitable subset for the history period > data("USIncExp") > USIncExp3 <- window(USIncExp, start=c(1969,1), end=c(1971,12)) > ## initialize the monitoring with the formula interface > me.mefp <- mefp(expenditure~income, type="ME", rescale=TRUE, + data=USIncExp3, alpha=0.05) > > ## monitor the new observations for the year 1972 > USIncExp3 <- window(USIncExp, start=c(1969,1), end=c(1972,12)) > me.mefp <- monitor(me.mefp) > > ## monitor the new data for the years 1973-1976 > USIncExp3 <- window(USIncExp, start=c(1969,1), end=c(1976,12)) > me.mefp <- monitor(me.mefp) Break detected at observation # 58 > plot(me.mefp, functional = NULL) > > > > cleanEx() > nameEx("plot.Fstats") > ### * plot.Fstats > > flush(stderr()); flush(stdout()) > > ### Name: plot.Fstats > ### Title: Plot F Statistics > ### Aliases: plot.Fstats lines.Fstats > ### Keywords: hplot > > ### ** Examples > > ## Load dataset "nhtemp" with average yearly temperatures in New Haven > data("nhtemp") > ## plot the data > plot(nhtemp) > > ## test the model null hypothesis that the average temperature remains > ## constant over the years for potential break points between 1941 > ## (corresponds to from = 0.5) and 1962 (corresponds to to = 0.85) > ## compute F statistics > fs <- Fstats(nhtemp ~ 1, from = 0.5, to = 0.85) > ## plot the F statistics > plot(fs, alpha = 0.01) > ## and the corresponding p values > plot(fs, pval = TRUE, alpha = 0.01) > ## perform the aveF test > sctest(fs, type = "aveF") aveF test data: fs ave.F = 10.81, p-value = 2.059e-06 > > > > cleanEx() > nameEx("plot.efp") > ### * plot.efp > > flush(stderr()); flush(stdout()) > > ### Name: plot.efp > ### Title: Plot Empirical Fluctuation Process > ### Aliases: plot.efp lines.efp > ### Keywords: hplot > > ### ** Examples > > ## Load dataset "nhtemp" with average yearly temperatures in New Haven > data("nhtemp") > ## plot the data > plot(nhtemp) > > ## test the model null hypothesis that the average temperature remains > ## constant over the years > ## compute Rec-CUSUM fluctuation process > temp.cus <- efp(nhtemp ~ 1) > ## plot the process > plot(temp.cus, alpha = 0.01) > ## and calculate the test statistic > sctest(temp.cus) Recursive CUSUM test data: temp.cus S = 1.2724, p-value = 0.002902 > > ## compute (recursive estimates) fluctuation process > ## with an additional linear trend regressor > lin.trend <- 1:60 > temp.me <- efp(nhtemp ~ lin.trend, type = "fluctuation") > ## plot the bivariate process > plot(temp.me, functional = NULL) > ## and perform the corresponding test > sctest(temp.me) RE test (recursive estimates test) data: temp.me RE = 1.4938, p-value = 0.04558 > > > > cleanEx() > nameEx("plot.mefp") > ### * plot.mefp > > flush(stderr()); flush(stdout()) > > ### Name: plot.mefp > ### Title: Plot Methods for mefp Objects > ### Aliases: plot.mefp lines.mefp > ### Keywords: hplot > > ### ** Examples > > df1 <- data.frame(y=rnorm(300)) > df1[150:300,"y"] <- df1[150:300,"y"]+1 > me1 <- mefp(y~1, data=df1[1:50,,drop=FALSE], type="ME", h=1, + alpha=0.05) > me2 <- monitor(me1, data=df1) Break detected at observation # 183 > > plot(me2) > > > > cleanEx() > nameEx("recresid") > ### * recresid > > flush(stderr()); flush(stdout()) > > ### Name: recresid > ### Title: Recursive Residuals > ### Aliases: recresid recresid.default recresid.formula recresid.lm > ### Keywords: regression > > ### ** Examples > > x <- rnorm(100) + rep(c(0, 2), each = 50) > rr <- recresid(x ~ 1) > plot(cumsum(rr), type = "l") > > plot(efp(x ~ 1, type = "Rec-CUSUM")) > > > > cleanEx() > nameEx("root.matrix") > ### * root.matrix > > flush(stderr()); flush(stdout()) > > ### Name: root.matrix > ### Title: Root of a Matrix > ### Aliases: root.matrix > ### Keywords: algebra > > ### ** Examples > > X <- matrix(c(1,2,2,8), ncol=2) > test <- root.matrix(X) > ## control results > X [,1] [,2] [1,] 1 2 [2,] 2 8 > test %*% test [,1] [,2] [1,] 1 2 [2,] 2 8 > > > > cleanEx() > nameEx("scPublications") > ### * scPublications > > flush(stderr()); flush(stdout()) > > ### Name: scPublications > ### Title: Structural Change Publications > ### Aliases: scPublications > ### Keywords: datasets > > ### ** Examples > > ## construct time series: > ## number of sc publications in econometrics/statistics > data("scPublications") > > ## select years from 1987 and > ## `most important' journals > pub <- scPublications > pub <- subset(pub, year > 1986) > tab1 <- table(pub$journal) > nam1 <- names(tab1)[as.vector(tab1) > 9] ## at least 10 papers > tab2 <- sapply(levels(pub$journal), function(x) min(subset(pub, journal == x)$year)) > nam2 <- names(tab2)[as.vector(tab2) < 1991] ## started at least in 1990 > nam <- nam1[nam1 %in% nam2] > pub <- subset(pub, as.character(journal) %in% nam) > pub$journal <- factor(pub$journal) > pub_data <- pub > > ## generate time series > pub <- with(pub, tapply(type, year, table)) > pub <- zoo(t(sapply(pub, cbind)), 1987:2006) > colnames(pub) <- levels(pub_data$type) > > ## visualize > plot(pub, ylim = c(0, 35)) > > > > cleanEx() > nameEx("sctest.Fstats") > ### * sctest.Fstats > > flush(stderr()); flush(stdout()) > > ### Name: sctest.Fstats > ### Title: supF-, aveF- and expF-Test > ### Aliases: sctest.Fstats > ### Keywords: htest > > ### ** Examples > > ## Load dataset "nhtemp" with average yearly temperatures in New Haven > data(nhtemp) > ## plot the data > plot(nhtemp) > > ## test the model null hypothesis that the average temperature remains > ## constant over the years for potential break points between 1941 > ## (corresponds to from = 0.5) and 1962 (corresponds to to = 0.85) > ## compute F statistics > fs <- Fstats(nhtemp ~ 1, from = 0.5, to = 0.85) > ## plot the F statistics > plot(fs, alpha = 0.01) > ## and the corresponding p values > plot(fs, pval = TRUE, alpha = 0.01) > ## perform the aveF test > sctest(fs, type = "aveF") aveF test data: fs ave.F = 10.81, p-value = 2.059e-06 > > > > cleanEx() > nameEx("sctest.default") > ### * sctest.default > > flush(stderr()); flush(stdout()) > > ### Name: sctest.default > ### Title: Structural Change Tests in Parametric Models > ### Aliases: sctest.default > ### Keywords: htest > > ### ** Examples > > ## Zeileis and Hornik (2007), Section 5.3, Figure 6 > data("Grossarl") > m <- glm(cbind(illegitimate, legitimate) ~ 1, family = binomial, data = Grossarl, + subset = time(fraction) <= 1800) > sctest(m, order.by = 1700:1800, functional = "CvM") M-fluctuation test data: m f(efp) = 3.5363, p-value = 0.005 > > > > cleanEx() > nameEx("sctest.efp") > ### * sctest.efp > > flush(stderr()); flush(stdout()) > > ### Name: sctest.efp > ### Title: Generalized Fluctuation Tests > ### Aliases: sctest.efp > ### Keywords: htest > > ### ** Examples > > ## Load dataset "nhtemp" with average yearly temperatures in New Haven > data("nhtemp") > ## plot the data > plot(nhtemp) > > ## test the model null hypothesis that the average temperature remains > ## constant over the years compute OLS-CUSUM fluctuation process > temp.cus <- efp(nhtemp ~ 1, type = "OLS-CUSUM") > ## plot the process with alternative boundaries > plot(temp.cus, alpha = 0.01, alt.boundary = TRUE) > ## and calculate the test statistic > sctest(temp.cus) OLS-based CUSUM test data: temp.cus S0 = 2.0728, p-value = 0.0003709 > > ## compute moving estimates fluctuation process > temp.me <- efp(nhtemp ~ 1, type = "ME", h = 0.2) > ## plot the process with functional = "max" > plot(temp.me) > ## and perform the corresponding test > sctest(temp.me) ME test (moving estimates test) data: temp.me ME = 1.5627, p-value = 0.01 > > > > cleanEx() > nameEx("sctest.formula") > ### * sctest.formula > > flush(stderr()); flush(stdout()) > > ### Name: sctest.formula > ### Title: Structural Change Tests in Linear Regression Models > ### Aliases: sctest.formula > ### Keywords: htest > > ### ** Examples > > ## Example 7.4 from Greene (1993), "Econometric Analysis" > ## Chow test on Longley data > data("longley") > sctest(Employed ~ Year + GNP.deflator + GNP + Armed.Forces, data = longley, + type = "Chow", point = 7) Chow test data: Employed ~ Year + GNP.deflator + GNP + Armed.Forces F = 3.9268, p-value = 0.06307 > > ## which is equivalent to segmenting the regression via > fac <- factor(c(rep(1, 7), rep(2, 9))) > fm0 <- lm(Employed ~ Year + GNP.deflator + GNP + Armed.Forces, data = longley) > fm1 <- lm(Employed ~ fac/(Year + GNP.deflator + GNP + Armed.Forces), data = longley) > anova(fm0, fm1) Analysis of Variance Table Model 1: Employed ~ Year + GNP.deflator + GNP + Armed.Forces Model 2: Employed ~ fac/(Year + GNP.deflator + GNP + Armed.Forces) Res.Df RSS Df Sum of Sq F Pr(>F) 1 11 4.8987 2 6 1.1466 5 3.7521 3.9268 0.06307 . --- Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 > > ## estimates from Table 7.5 in Greene (1993) > summary(fm0) Call: lm(formula = Employed ~ Year + GNP.deflator + GNP + Armed.Forces, data = longley) Residuals: Min 1Q Median 3Q Max -0.9058 -0.3427 -0.1076 0.2168 1.4377 Coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept) 1.169e+03 8.359e+02 1.399 0.18949 Year -5.765e-01 4.335e-01 -1.330 0.21049 GNP.deflator -1.977e-02 1.389e-01 -0.142 0.88940 GNP 6.439e-02 1.995e-02 3.227 0.00805 ** Armed.Forces -1.015e-04 3.086e-03 -0.033 0.97436 --- Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 Residual standard error: 0.6673 on 11 degrees of freedom Multiple R-squared: 0.9735, Adjusted R-squared: 0.9639 F-statistic: 101.1 on 4 and 11 DF, p-value: 1.346e-08 > summary(fm1) Call: lm(formula = Employed ~ fac/(Year + GNP.deflator + GNP + Armed.Forces), data = longley) Residuals: Min 1Q Median 3Q Max -0.47717 -0.18950 0.02089 0.14836 0.56493 Coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept) 1.678e+03 9.390e+02 1.787 0.12413 fac2 2.098e+03 1.786e+03 1.174 0.28473 fac1:Year -8.352e-01 4.847e-01 -1.723 0.13563 fac2:Year -1.914e+00 7.913e-01 -2.419 0.05194 . fac1:GNP.deflator -1.633e-01 1.762e-01 -0.927 0.38974 fac2:GNP.deflator -4.247e-02 2.238e-01 -0.190 0.85576 fac1:GNP 9.481e-02 3.815e-02 2.485 0.04747 * fac2:GNP 1.123e-01 2.269e-02 4.951 0.00258 ** fac1:Armed.Forces -2.467e-03 6.965e-03 -0.354 0.73532 fac2:Armed.Forces -2.579e-02 1.259e-02 -2.049 0.08635 . --- Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 Residual standard error: 0.4372 on 6 degrees of freedom Multiple R-squared: 0.9938, Adjusted R-squared: 0.9845 F-statistic: 106.9 on 9 and 6 DF, p-value: 6.28e-06 > > > > cleanEx() > nameEx("solveCrossprod") > ### * solveCrossprod > > flush(stderr()); flush(stdout()) > > ### Name: solveCrossprod > ### Title: Inversion of X'X > ### Aliases: solveCrossprod > ### Keywords: algebra > > ### ** Examples > > X <- cbind(1, rnorm(100)) > solveCrossprod(X) [,1] [,2] [1,] 0.010148448 -0.001363317 [2,] -0.001363317 0.012520432 > solve(crossprod(X)) [,1] [,2] [1,] 0.010148448 -0.001363317 [2,] -0.001363317 0.012520432 > > > > cleanEx() > nameEx("supLM") > ### * supLM > > flush(stderr()); flush(stdout()) > > ### Name: supLM > ### Title: Generators for efpFunctionals along Continuous Variables > ### Aliases: supLM maxMOSUM > ### Keywords: regression > > ### ** Examples > > ## seatbelt data > data("UKDriverDeaths") > seatbelt <- log10(UKDriverDeaths) > seatbelt <- cbind(seatbelt, lag(seatbelt, k = -1), lag(seatbelt, k = -12)) > colnames(seatbelt) <- c("y", "ylag1", "ylag12") > seatbelt <- window(seatbelt, start = c(1970, 1), end = c(1984,12)) > > ## empirical fluctuation process > scus.seat <- gefp(y ~ ylag1 + ylag12, data = seatbelt) > > ## supLM test > plot(scus.seat, functional = supLM(0.1)) > ## MOSUM test > plot(scus.seat, functional = maxMOSUM(0.25)) > ## double maximum test > plot(scus.seat) > ## range test > plot(scus.seat, functional = rangeBB) > ## Cramer-von Mises statistic (Nyblom-Hansen test) > plot(scus.seat, functional = meanL2BB) > > > > ### *