strucchange/0000755000175400001440000000000012233602354012753 5ustar zeileisusersstrucchange/inst/0000755000175400001440000000000012233570617013736 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/0000755000175400001440000000000012233570617014503 5ustar zeileisusersstrucchange/inst/doc/strucchange-intro.pdf0000644000175400001440000061430312233570622020640 0ustar zeileisusers%PDF-1.5 % 1 0 obj << /Type /ObjStm /Length 4825 /Filter /FlateDecode /N 89 /First 747 >> stream x\Ys8~_}vt npb#|-_ݶ7@(ӥ*uX<%S<(H`"7@$Kdbl!dPLMPKro9 4 Y5#k"ǫW*^ux5‹Cgk&k#<ODx""q?KVu "W.3@PtSwS/42ܮ7!~M#TY5` @ˏ86: ceO (r[ĉ}jxkrI?Π~*qDŊxU{& 5 ]uMQU$Uy@UjTݍFѨRX*H&"or(ZvFշ D0ƣxt 1A(M`|"37j{&DQhD(.`כb^ԛiּRlK!boѻOfVE:(-`EI!D>xA&pdP׼ tGOLHEpUwBg7ښ=G:翈hQOPOWj;+Jn5hS ,3S `#tPٳbo "k7WxyIe&xbzz ʓyFhЕvFe ]a$қ_)BHbbw]v݇Y{GW~gO{ʞ%gk{޳Mqgn7jsx~z,?rӂ-آ*7ڲy\Xy('\_Œ#X#<.cvN+V?ْp;m>h;<3d|0|Ũ`pyH]eŎ2<"ppz\|Cp(rh@,œp&~}CSCN܃AsIߋ,܏KX1}횏ϩ`s+I5#O3X펼8{)r$'!(P9}L$ dVNID55]`&Hc` -`O&edLXcv&kg)@w0~!jq_訕|5Qps Fr)c{w㞽rla-TDW\mpij]7J~M5ux.B酝Pew&Y7`A(iRRs ?P3N9kF>Ʋb7f{B\1Ry$#/!YxFTMFp`UG^|P, FPJ j[?'=Q$Q+7]'@_0g{j;|g?\O-XHLd:R-76NM5~څs߀tO)A|ld-:a=CvًaU`;|71w%׋z~q"fRBP@MzX|н$j(:k'~xS7yb'S7LQ)Y 4P Rn!FBTV-RG[M3g3c/=IMjvl[;׳7񑴼*љ>Y?U 𮂿5Yxm?x㖻iO0}:f'j#ͺ\M,& tۗo$GoT]ON,9HAGǒ~z[~ *yŠh^o;w,z}棸N'j*XT̕wFy={ה3c55!t yNa\vMNHȮ\'&L kco9!f,5CH>\7OgMr|* 1a;3˔]L3y}e5kDoU.Ksų?4ʆx4PG.IKdM9ݰe&x.O\+3Oi?i'|ie&~(35XCgrzgzDiS8ՓR#ef\%ٳS7o?zJᦞựў ;2[ ŝ\'c/f0ff@O_=o'HFp"a/;q6 -Xo)Ix wtMYtm慯q3)Tߴ؊}m=l>y~nu8VX<yJ I&; "DjDGbb>e4{"ad좀wE7gWM6 -S12,jE|Jt8K)YbL w7n<͌ۡ$*{:( jh"S$<$P|' =pU-RqQ^^ 9zOs:=Z1QY.2orYJkWC w={ ,ގze/ě=틝u .%SkX v:HOf0K:h`:  6bWi  LS@&yҜyIl 9X#STstOnpڑ$3ԣ_xIE&UƶH)x u`K:媥rde܏EJ9<:bAo˖lE0W2vbaFtLSIM\7HIS Pr:S210)U\HyovHi.<7?)(ZXK:H)G!).&M8Q\F1#G{3Mu}@dRin )c{5H "(RDLo|(J5l!%*EJģA@O!c?)eDx%v4ao<)'RJv4HIs:z=tC` n[JIm<?)X/Wi*Q8&H y>tx-+m]ԧE}~:*Wiq5߿KL-;+( އmAGᾋ{􈅘Yt+hhVnxrpЯ4czGΧO#)N٧3 }RuW/[b6(~< w%+7"DW:]o̲*:c79dCn̼$r::*7a1do nFЎ 7goT$6 HgnH:/"kIgJhGf"J<ی: :IE%?yCeN[Oo/Lwj[}=xtŞ{> stream 2013-10-29T00:21:52+01:00 2013-10-29T00:21:52+01:00 David M. Jones CMTT12 endstream endobj 92 0 obj << /Type /ObjStm /Length 3251 /Filter /FlateDecode /N 89 /First 810 >> stream x[[SG~_яIV*U@$^y D;>hf$`K63G0ɒeZytR`QFe)1cJJFK*bDKjn x6X8t'00Fb6%3b@%H)f#qa&X,31 JqqCOMd01k#ђYo^+fVf6҆hq9BU2_מ9G漡\$Ag##ż6C_ 4e>ipcς$"h Bb`V٭d\x"ͅՆD!,*3TZt< h#1pY9Œ߀6cpC\v@F n X鈋$(bTDH "4DOA2`,$&퉡ߌ[FH}??EVd}ȭ7i1OL_quAh-*qZS[]Vuh:L似V1zl7V+lu]VeFr)nȓL\X7moM?-㗯wp|vUϦvprs;?T܎o& jT! |_\6-a _Z!F/=hiDoġ('q..T\q+L]h5Mqx9:e0y5CfP><\\0Uĥr2ޛ_)G_['`Xyq+b@w]D ]]` $>$o{N L6O47d?)Ϗm.l'c\'E}hW&NY!6r4-³6xKlD@</űE7? pl*>B.(b"Ĭ/Iȟ^?l%|"'#r4i)rd ̹n>7qلEx[wS9.7?|yIN13.i\Ë2)p!>؇콚LqfKް)S&ޜ5lZ~|~o!|‹l:O|<f˻zIO \@m9[n( 0ă%t9I! A D9p '{ƌ<;{{t:}ZVR {ƃ:-َٛYiNص٨h>캥^nٞjIHyZZu2T`WkU;J&ǪpBaM#q`t7 ۲E!e1CV'mX m, &ٓPha >:B_}Do*i(p86PFLJ.̉, ^03pC\2tӮV)&]*RrL5U)&b"sHͩ2b*~)-^a);~M|$CΎf8ZY8$ǐ;-S pwB5@G@H1 VrV؀'cpH4ɨ1np,` N`_)D$qJ+x>!exᠬG D%ՄGߝ֙&\a?\5oʆʁ`?t:ڏl6qu1i'c[&BRy^`uCk8XQ*[`Ʃ@阰9ͽ*3g>Fg} (n9Zl@%#&}PT ͘ =7i6ih}`M#Rjr&ْ{!(9P4>v쎅 `˱DP 巼'G~9g:&%n&Vǁ>"%R*(Ub VAuU{9v9>ŭc)n.߇`y+5*DD?,zay:O<ɝ;+1ieA2Q0mĹ9԰TâX6sǰJZlE<_<ʨ*Okf#S=( 5Ș߮:ق+2I (#RXi:nRʫC6n-K|pgZKnXuyS&bLh\$ԚZc>Q\Bly0z[4F62>I;>j1򔸯 "qPlkEgz:`W!fY A5::t5Hk@QZ &EK栖,\ F SKn2U@ە+dfbU bmxUJ8]EvCɵέ-|>ٮ JQ,X/ 6֎jʫ_hj,Ηw1m~Lėe%n–,׵gWW\fXַNğR\i5.n&uK|߅ 'eR:r04ץp[zYYU顪ZxǙeQv@v 5n+*+`~%@$}NwxK@ B1 @endstream endobj 182 0 obj << /Type /ObjStm /Length 3390 /Filter /FlateDecode /N 88 /First 812 >> stream x[[s6~_vv ~t&q6ڹUmNeɕ4l3MdB 熃CD0)p˔;3+9E#^1D?"JQGEOjꄁ|ZP! (DS L b*ЃeZ膂gZ&4KKt.3R(0czanzzyf#,A xjQJ2k, 0C0$zNhtW9mg0&{NH3S"D2o-0cJ>fY6h0v, (DM+2L0!F! Jo$UHS d) g0*#0I HCK$ gACjbMj)yeA G%K%"/z*4-!s`dT%\Huց&)Zphh+iH%RyN}=˞eVs\Pg}`2YUjr%sumd**yξyu,~6:=:F:2wlRNZBktN$9ACX"RTր-LЏ"_Mͯ, Vͺώhz`?||˟˫bUL'r?z1Ms؇vCy:Cɪl,KF. ĺvZ/3L1AY,/L,v1pd[g1Ԙo C+X]WۊpHO&e{wL$5\<]b<pu]#uaw2%fo7{>׏\Z%-aH!7Bc@ŮDsuXqz $׿iϋ + !2ZPVraAIE* Z`'ZLQr Ldl*rdBPhA05J.#E;,6Atr<&Dۀ J @INA!<76s!f%a @Bhija$8JIXPcTbjn<&[10֑+,  yNY3\PCxMMBbe$5`B}~L)Ue3d&8GNُ&wP '!X^0&xa`)MYh_$sm X,(MBȉݙldxAeSQW <_Uhwe@1- @wd5cDJҮ*E#F@5=8Rru۟}p|t9RX0;.k81.--ag P '/b5*zEF)n *Ͷj+-Zzl'wF2=x>`<=zdFr!`nI%{d=3ܝdNmk@ؗjS;CALRʳ#Yi˥;=X숾v0); VJ)E.V&Sd&r=]}]r}d^{1=~Dq@qH Ηh!pav2gEyZT-vw XFh]_]9:ڻnP诟?:4l[BՊZEEF 6-^O#l*XJ%JßO!sS E#ZMS/5*ئ({\}iAh׈knռFe\gDMmʶd]q D$ntyy9כ*_yT.\UvEYYV!Wrq,oԠTmȴ'bY2>ffղpaX -f83<7-;?(` ~t=>rvPs˅,ǖkd(ً`W29LCjNZA=ذ-E/7ҢME t3HQBJeҐ=ƾQ:Ny9Ї4loO rLQ9J13nLY4R`@Җ>Mrw&m!5Tr[UtZsOs96 u>f}>̦jG٭T:.F67u:S`-}N0A8HN;yC\sZ(GLڥnPUv?WvI!W 9\֜_$}<^~ǡXnݾ݀v> ľ'HNs)v|I҂t.0ʣ,^o7 !:wߦĂD)%A^ `=08{%bbA?2"&HAZ2_|79[\ P&h`ᱜFI,[U <(pndLPքt5a+?-lYkNT70t'VmM_;8%iendstream endobj 271 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 272 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\ɠ1fz7N9N*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 #QZ%sShZb`Y)-YQux C`cTr6\+U( BX WĠH.҇}ZY G+gx2tjW).`U~@J^Z71ʀZYdM%Tɿy+P]bPY^ޔt7+hv0Ǡaʙȉgm7 ~\.O]` f+T51˚X>+O_Cy<}9WaFu<4qhߗMyqU 5*z (Sq9"ǂPB1^r05GlA)&CipcE> z,Oo@aRg ay_hD+`A;x')+e;(|\BO婾 Ѝ$Lv /W% 3ԫ`PiS|K揄=e6NXuJ- ыTlΙ-c۪N%:*~C ]z_|K [ˤ$ لɂZȧ$5Ín=T9}ϫ^k&RX q>j3(yQ _Wz F .-bRRD-xu~ehiZ[z$(IAIl%ɜpK;aĺ4kET/&PÐ_W:DXs(? : wQszsrhY"CmDS?I%'Jq~0eJRw|c)jb<ޚZ(`\f׏UKg2YEb>va*8EևbY)ߘJ%(g6\A9Oaڹ%VQP#n**F+C f1睤!w nFP6 0 OPj%&$EF 6YYBƖHQ}SwS7  Y=|ˆWK ۼ޼\>w`SyE!.D@fqk06A2[AXYW 2{`f +Xkme-]?}m4D:qLqFO_WyF-!1x\5jü. IT58 &T-}k=)푻*i1<)) 4ȅRss_M/[>hQ3ՊujtN0h'7ii,0]VBca+KC`WsF>eZV˹` hGf3'3Yi$`g'}P.\~A|4KEmtT&t[ fexH~-;̠uZ$J)4QE?.4'÷0|RbVz$-=`G7ʍvrU}v+i<XݤӬa3fDրGahms oH6_oҝ>(a|);j= ,l)[fsԭ=ojNn@m (#XUўTjLڿj)Q|[x0@p-[tבRn$I]4PEEbB4C )yp7ӵþ}lvF{&80yL'IIita}5X$''dAK6m*R6@~6}@݊^A<`;fV-*y\re @ەo=th{tߡ$c3JmDL0Qt`K~P)/_4J?6 nN~ J@Oy <$feI1_oRe C]i;ޣ~AfU2uy=JU5K qǥ4CR2f۵%7DEEqXYJl%8XJ&942RrEVOy YBɲ(hw cߕS\Kg% lvjM_ U P&u`-N$3+$`7si6~e).:w&|7YVBXMD)/E7nlyIfE"ͳʮcsy~7J[ ҉0m[΀=:a{}ݚrqt,5?uJu1 cvхjn̡#OSr@F5 k~kb8!C_ }4BI{ k8U`F1F@e e@ZrvI?qFvXcq~XĶx:,>-Xb31Z 5̬x֖LZ|-pL6y&NħCPU NސؠL ˛wU!L@s;~%#}桠K yXK׹[ u4o#="j5x9`$(4vhsLDw10aļ@SŎ-&Uv|@0`g6aIedN5N #`~=% u+jk4p&l<=^%@HQ7$ Ѣ\؎©ڠ0Emį(_[ FRJ2|ӧrܕ |d#K!(̢!sb YUxGIx6̄1]Y=gEeNvʁcW+ MѢV"=5]鏶yjtwK$v7|z(Vh^Úgִ>T5 "dX]w>s.BjO"acMʩw?JkN []~j;gW='n_sV5+-l#NW{kb|0iW8V6R1rӬc pF)yiqS>'5#I!V]D}6dYi~泷*4q*Jk.څkW$$C=8M)VU,(%] '! q{RVb$etzsrBeq VݑLzا1,x$ZKDBE҃/HrLjzTߘ(Z{dI0`N†4ڌ!@cL ?Y}m2ھ5] #QHKpUNn-}wQ%ia!|}MZFp&rLڌ[f/JHNshiz#_cúڋqubQ\)|~}eNf6s)'$)` IsٳU%͢X(` "y(m h56딲3Ȥ뒜5Rp3żHx,/aEdoY,Ź>Na hsja7v vhU0ǸR2L|zXˌQKօs.S;8 lEkKJ/.endstream endobj 274 0 obj << /Filter /FlateDecode /Length 6665 >> stream x][s7rN^p/9L|&_zSzMeע+pLQmG&EYJ|\)=pjFW@?o$7gWO7OO$ή68RM?ϟO&WznN|瓝UjAm_I`ey:my|^nӧsz//ߔUyWXe0l0p1nNd4x>i&5i1Jg:s@c=go ˠY'\\ޡy961B87K|} H.J6^BpyN\$V;7Mz$PQv||FXTA:Z`Aճԗn{oJڴ>q{x>77S?Ll̶)X} X~ jnG{P*ni>3YkΚ0a| M*:a{IR|rNyL21(\YC\u6@hBzTHNr .:0Zԁ1H';)%G,oD$ 3\g7n]!$8KaK@Y | KΘþ_dQUK&q2^H$Ah +a|{bk[L+}蔵kk;MMwwI;)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+|oM4ďIҌ+o]QPɻ«d(/ 7;mrj zDJH}O C.d(Q8lE+kYn~SVV67X]Ya};/(!`DY9o Z3=I:s>,,ՁO.-o-kNIjQe#'zjyR$aR@3Q50$9IqE$u,nd a:0if܋fD#HU4kh \i`|V-pZ7F-A)l#|q{.GN. mE+q )M&pq2>F b[|Ffk?&Hnfqj`L a 2d~C67H~p&S<|EPDሆ$9h Gl 1.˛#Zl@Sh o <{0%`fF^!׀%me!-8.<逑%Ezn- Z㕰H(fwe=oPE$ؙ>%+,Gߐ FU?6lfL |ҡ&_/Z@u@8 ǩ+(h;RMC4/ޫE812V(y`[6Wvt%iA2qzcK"S7uĀ8ytyMkAL . X WmZoG ͻZxPpZ>n'pCbf +;yJHQ 6f\|vR]<T[JԞy)$y'_WmCi8 Q E 0 2 X+sߕi2mڠHA8Z3z? %Jf^b$qlw:5@"cM=5cψr"U|6ͣ)B̀qL?$ ݳ8`΀4헣qכ[+j5uY<ֽ4jxk7S,rҥb h~u= l鷩(8IU@P_xϐ:+5V J_¬&6fE#`DB2-A I/+ðI7JE`@^^ UZi$j ,p̯ӀN P;e$E>ے&|4:KQoWѳY:RwK;zYvnS+Ѝg*U b ]SJ I?ĂaHRi#Ъu'gX}UZ"E3Ӗ+ڹb²J~xe]uϭ&H`D^_i'|H`ӶuSWrm[;"Iu9.rղg-K E}dGƔhKvSSJ`޿lGZ燍1L 4-JLᚢJQyL6AU1ޮDޡN_#Ƕ5qy!+Uy CSu@}><>5sScH ~A9 ĿK#T+FP(UQU "t[˱ùIO`ş\'̔/.H렍&%|,ITp X0< g>V1 wfogByJ\ŤKXzi߽үс#u}qQK^~aj<6́E{0R}=Fמ) Э?\6w:q\O:5 v_ ]XaMc8J[g$B?/+:! rC42 Lkj_WV,r׮QdgAT-ƃ:[|<l&4qz?%0бÁULs~T~`~<R ~2m-W4>D V4>.q%ٯCA7Wi'5 zyj#M*H }~z;zDOk7˛t(OWáM=|:}.Sy.Ogˣt3,赝#a%NbXtvcۓw ˇ0K?׼e:aelyϰZ3~ %yj01 Z<1٪l='SyzNMs9!k}nb#\-<$ ?t$3m !7c*p0 <3TGc0z׻42\=h|lP̥oΗsC<́b Pirj,%?z紬,)r6;_5N-}H Uk?f+c@`Ϙ~ƵJ$1}u:΃70H\v*cdxDOtWR`Lrs&Z|dqf"3>%gLT)wf1n:;j~MΦQ^`3[cהޫߦ 9- oҙr.W)F Fh;=OVRGڃݍ]`8QR.r>\I {;xڒ&vGG<.;@/yȅSy5twn;x4x.%A͓XMPE;^5DK]M֢9Fj\90_75*)2CFqMQ1̗Ht>{rc %<[툏j᦬ƃQN/vwv R= ]lf]UO@O3Iޔ麚B#G9Yi:g4ř05ѽl#<JG7oHoAWXx6&]|6x 4hC:[7"|uK)C3[Sc%V+9-호jU#ۅY-x\XlYS)nEֲˍiqU]MC8 094'tB"_\sbW3eYXAXj;лfjY}mAv~"O}%0*%+o/׮H'`+G` ^ee%7eUsX0MS~Ѽ-{(H#R:UiQ +7~-H ]}H&׀h(PP‡Ֆ ̄LXwbc-}i,邡IFhZ [9sK1HrEY Rf^}W 81`J:x:,UJ<̭Ob wJ k̑כDH8f7/\^QHM#izj"IF4: 44\* Tm=ӑ˙W=SCe0exDpjzߞC*g%it 7*iTڢe#QOƔ()iyWY纳w'E bWN[v &:b8Gvi抍ymڗх=d}7ŏyrdnQ)G cy̺@ʝ,2[/Tжc.Ϟٕ9E^4m]43yjaw6.]:XdT>ݧ F#""eJ>KJR]=zJG@ap,IZ~y29<TJ)`xdGkDŽO6L[b5DKR0y}x߂yԬxG& +Zx Vfr7ۅ9L/F@`̺Ѽ,U y{FrYd:$iTSb%Q$jOy-9`yžC^K2_y ˆZ<]n9'jߟvT0qx|N'pouO{!3i~}Geip3L]W6H``6o% |ɓ_һ tGQi v?[4v{ZCqLsT zs/#,f bN6?,Yr78Gc'NeXّ9>? endstream endobj 275 0 obj << /Filter /FlateDecode /Length 6991 >> stream x\mq~X &Av$;&  d}w<2:R<4?zzggh( p_8H^]>\pabwqeHn›1.d7xV+yq۽0w&]tcRA֤2X36PatT'S-=E!D7Uq𑪌C.\`$È$!S Rs?NZaԹws\R %vJXhnгp8;DcC01@U#"OPgn&NP ]VS(/)7J%&2) f)oif g|3? ^*0R#L̂ !f\A+LU **R*ZP"a( cadq @##6,e0P1@\G0 Vۍ !0n$nT/,,@в%ahX7F?AIFRyXzXz}b1Ǩ X~?][UDBk)ьbaFMfclI@6a  U (C&dBfyyQY>itRD1K39W^D0V RG[uXbNq `&dk .[d2f\_ra+`M(2$a`858S+JZ;6Qw"  dL )Vrr< kIPU2b٣1;.@u.@jah"w|x(P1 d`rgb'VyH+ltѰr5u(XQ Z ^UEeu!0=?GÜU1&3#!bLXn20 QK pva82p"N" wbEd"bꂔ#At6VS!llS]~z" /CI "3#AXlc j$%0] ,( \FV]H5 Rl`Vs*M(`6U KtR^,TRv!d/ RȜ`/f–\cdۓa< ̑grwֆ2 ES]+OEd&\)ؼ2wO_7;oL髋ߞ_=yy{ݷ_<=ۿ:hf`(}³OK}±rf`E ,ӗnO@c!!y Co^_^v]}w|t{tu~n5h!LlTr#SNUt`UUZJTXKZu'.Ĭ@ YƑ}+-G ]++~fĿlgz?wFAdnFZƍʘQw6DVIQSEdA9m(mO(XċZxQ/N<# TE l+kZD\%LUXdcrhEM)ZD\#&M|%"-|fE{J̴Ø:ZVEp'Z!ʢL(aq:VD'VB<"pб8V.<Ӭ(!1"mNJ*oM(ie'V@*MT(%# 7D8TƊضbbE n+fMYŊRu'V%Z"D0c8Fi&EҜ h4'J&ٞ>(ݎŢ(럡szJZy:HsRb0Q, 3_#do.aK11ppᒒXd{z/͕8K-OZHC-AfRZ;N7bۿs2eEXD*H&?<xsf/1:i8{#ځ/)1s2^Һ>]-R+PU1脡Q-181u2~'u{zØ* '%sڏ\=tF0+MSDk} r y/þ%n6&xuӁcWw,AG-sB=9 pMq ]"@ ?}7FlAI)?,7i5_ r]y_X,g1ro&_D^)ZI"eH?<_IRhjEՋTE<&f~4xVk־Bxh)%bc*7HXGcӛ=][1Նs_x(*Mի269.SfոQ :}ت4n%mdæt4@~Q& !ʼQnU*0hfE` 屠h(g0Sb$$%2R'&{ϊ%h50 #M=2Lq2W&y|Y1{] '$S nz+ ~J[VP .CjIՏiUiE<5 QT-5Pj[:wˇYad+!l9qNwwX|j̝]?b{KS,ƃK/+b[ 7;N_Ū ՙGffB0Wm)rխ*<:n\JE/f {yh%n"i1-9VAPH.61.+˹S̿jAg N+*H5YDZ,|\Y[vXe$s)>Wh#?N6]O1*UƁhdSURf'~ 'G{fͧJ!AAE{^wi0MґN1xg{Ӈܚ E p'YpNA4G_2`_2e¸ %L>3tA zR|l/ŧj`{ZWP]-%O[?>94}Ӟ4G%c6OIEqжQ˵4-To뜎 [qI/Sݢv6CIl0Mȋ /Ѳ ds҂ 4JεOZ eT.R0ʑ$%gygb׳9ʣs76Kl}ݻpn 3Pc*I|&Ik{LF6nw<[JW7绚7 AEpQq|;*,>HkDO5Ӯ@4Ścg5X'cSW伌3mg!f,*D"ZVaHZ][Jt1js{@{e tt=)FKA b܍s~jc[Ns}EL阾lƬ}, *? 6zNL@meU'e>u ̩l}D}xeLJq3CصNK G5 ;]d-GgNb->ѳjEVfzϬa5:;*f> Y:soY/ިq= )46,[˖"c/JSw܂˸n"8s2Kd'iu/(q1)Fk{Qp1%oԊůmo%Z>Iu&A@m[g4^~vg<7{ky5џ, q۲Iׄ[7l|dT]yA>?$7[¯fb5""R*ws%|1Y z|8qAX\ қ˔Ѭl%_Rmu,颸j9nG6(RilUa 4Υpt=qdnmϰ#}ʥTޟfC}d|Χ?t/~ L\,6]n4ܯݑ:rMVS8}0f yW/[9REn0=RJ$;ggڕÁմSI\ .txQ JAs_ _t{}M,Sh(gZD=os*r]aԻ}Z=al<./.qyq)_+x+},o}[7Oک;{|_h9L]ً7^Wxvl\#kwo]SKゾ\NSʓC۾/u@v+!K[1Cȣη/%F aN._zugk֧!,q*[}EPw0>,rmZzɪsB5LA;ueIo9ACG@oug 'u_sOu#ԉچ|~EXҾU,,܈v4Dl^x>Ps8,wh=b鳙PLݵ! uLocm.QGnù,Nźtvj.'uXңХ |mFyLo0m]itY}#9kF, ݒup/t|abK2mI՞Vl\>zukǴ|b:bonm귳!X^"fÑfvWN6\ qI2'Ep b N L2ىr(Ji\>MOxA8&>M F4%ѩR3UUtس-h29E{V77x$BD#h\6eKSF >v΀άo%2pg֨?gDz-F =՘LQi*8e{#-6'ZH]';#]{SӴg7&c;wV7qjZCx{wGㅆƼ(FrIN ;o  nͭX@-m_qB͗s_b>ż==KO_[endstream endobj 276 0 obj << /Filter /FlateDecode /Length 1858 >> stream xXMs7bō!S 011␿ҌgvSEqmuKݯk۵h`g^ޮ|^wֹuhl_^=Uֹl-BhU'vZFwQXPlRt!m8KՏl&2J{xk fQ\U_HY:J!oR?]]#.7͗,qce6՝ONOEyz{Y)ř5g69{ϣ(_6|΢fz}UmÁS꺭޷Ջ겭dS13w7}Q ۂ<~қq]PVrM+|_M(Uv5ɝ#uZLIY1J!ƍZԚuB>` khkl-.uٻ8j7qZ{35:]Uza Bb!#$v>'LC'sldYveSϿoJf  lؠ?G^,.4e& u5 y]/Ui"\Ҡ=njvN^gS`SΛrLv:n!RIù23/1uzi}W,Z~^(-Db\,-Jw58VW*C5!#(V{s)٨Pی>39 fݪ0>4lY!ɦfmvTXa9GG+THsƸ`q%ZA5+Won[9UV/jw Z W4;`w}@ m*;?`gT`d[іUQfJ~Ygb ՃG">7W qQO?3-{^N ZD3>q .Gn2bBs]wL()ؖԽ ,sJ߿%!E~r]&/DPꠜ_1BݧLL6Ȑ̲ݱ[ &X~q6D_OԇG&1\6[ !OaLg8"Mpf1hKޖ/A%3\> stream x\YsGr~G8vnO0uKKy"C"8!DugfUWeUw<Khtՙ_~yTv,Xѝ>>ߎ$z^8Sӣ<+?< Z>(;W'ڙuv+ލRv »!h{/ඎ5Et xSӘރN`q6Xe#Q~9 Nݥ/Ah s-aw /-_GKǵOl:'cQ:BƄe^V@<40c&=}iM !M+A8_O%h탉uƒu6 ~7R-hlLM~CAHb +~VnN{ё4Kl]#+"v q[ DX8`LB W yw8x%I'j ctBr~].n&tʞxi_QAq&2m$f`;fkpd @omd*t 8<7AڠR L̄ ҲM ݾd`Frgy R"vlH4e*0$Q^@DgN;$"S Xfoq0Zb-`9*@tg@GTQ_;d$/Y_&&Wei]:u(Q;D9EHhY+zd "\ < pD _!]P#3^1'92zE(Ⓒaee<;oAfL`6yL{@uJ6(0Sj˝󋊀apj 1g&C% %H^9,ڍY{Í +LNT:1fIt* V:v hlVcnж_wmwf!C2%vddBNx0s;둘bc غ'Hka[g"Z .ǷƬ_M8&t?6b(U< p<]Yh{ڢD-SWE\^BֲQZI4w2Qe\W:mn"q㹷~JqtH vm8v1 ~iOU j*m ۧX Um:uM'KE]rY zO ۄ pnRù] tANJ 8K៫?"zo%+ bgXɏ &YMZ)Xa|zTLL$v4J 4ybjgDA"mmKjD0\TZ߂/a}Ӿ%&X:Bb6+ )bE册zĖS`8,{"Ffyn*V0@b9vp4/ÕEpD78^Y=srz8M^"1CČaDLi{tlJi>; iȇN*Ld_+@Ɖĵ9q&u<`yy.utOR? --lؾ[e V`*Up›q-"IZx[.f@qLt FnbK: ar9vw<\ 9zf3%'-Ji\kH/jO\2CצIwEpԴ}"\6)Epy =dM] S 'hiіm[`3U6C)a#{`1# kr|%@FH/+↹S I~gHdLGkUH 6+j*BK|UFO%u&o2:0* *֯Rb(M<(s \HFЎ|xjK9!9x,Bn6CrMReY=Up,#kTEʂ4`&. @&3CsʐXiT]g X*G'A.4[n3?RwWiyKٴЉtQ^A=ZUw.Bkl_ ~y0uCάϠ!MzΔhTCrt #YH` xW< _CK G햑`S.`)w(c»^O+=h rLy| Wc.4IE )Ϻ`Q}40\7twb1.B;sfQO,˫nF'X?!),e7Gj @#Z7\czdtIyY'$4C?{6: p[Lqi24[RAu{X 4d (DյTMߗ{쉉MߺI[fB<̃I]ho[_26#[9a\X}^r*75'.PkOPE cv{t@ ~,Ķܕ{XYUܿx~ nzhdcݸ\czs]P^jʑ#i1g8= Ye9d҄`If~J]rq=+55&?YGImymMdMzy;s`hMo?,U9g ^IXW&`g.nsk^ݠuΦF!]z/zUFǒȍ^{^U< &yawU؛soJ7TBp( ¶[[;[V*&)ڃtwΝ5YجlGd37L53vhO_"#,,1_nJѧ+v,gĸ-x|Ǫ=7FT?~Ha,P)ܯ-(ȫ'"199yPiU p~[o]ewv?mҫc'kĦZGCo% 5D &9&|`shva yACcg&{Aµ1bAx9 WޑyD,CެAȽdHNxW<% 0+-c)%4mendstream endobj 278 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 8128 >> stream xyta X`:B(^w[.ʑދ,[n 0 @h/!!!;:yd彼_^K˒fss%vhƛ{ vc+y[ BϮo{EͽS@'qH ӦMg{lww p\F9 t8bOXX :.0c÷8 8?0 qew,sa!=ٱw)S qN#et|1޶bޟ8i=(j0BSCUԇ0j5.NFP먑zjMmPcM\j,GPPQjZDMS%dj)ZNM)?Օ@ (bxj;ՍQݩTO*zQG-HP[KMSjAAwj#)'yF_P FMX(|ukolٜM=ULsۈnni=kKKl^ֻϤ>}Gnx[Iofsض}J_P>7,wƿ±(.+~ \pd/9>ră<`? IТaÆ5ym["&H/m--eST JyJ,vo>r{:5GiiZCLcNJ~6DGXB+% ࠺Ye%^:l6X*[4K vEyꂞvBzm%TwY^(r֭p쿼vAkh&آU0.c_xƏYb۶d1!tg< ỰHMi3Z8GK6OBɣDipm6ů\t]+󖴗*G\?P>iװ0W dq_*N*Jq m6Tb+eF~APuh}Ga_FnO? 1 \J쇳{Xʃ-MI+UlU ްN"uv mݽ'ﲍgOcT U` ɞ0"\&S%x.ŋЧ٠4RcD{+V|C1d o;5.Р4%HGѶm^RSX݉o} xZ$Ɇ8\8 Y7BG$P+ڰ,<sXPSR J CP@|iWãAD71ޡ9h"*O}d/x3.vNҴj+߄ :Nn^0/? GJOgKGUىdlwO Il)h@v26!_e0r׊dXjce [h*Ylݡ'@ IQiP" %aIX Ѵh Z‰lUN#r -RL`iؘ[[W_ c";0[L5̵F4@f k*}Mz B𨃄;1W/A{ٝOI1;)Bs$`[J!HcاZa.}DpW#5(򚜅yW콇Mr,"9LH~:EqRPzVA 5>RAmpXԔG!&~E_>xSO?٤xc88/C~A?GV\WẄ́ |?&;FCslL'I=tI[̙hi7< NqWUآ:m!*̑ qy*蛺Ȕ\y7Ɏ͎=3=J&A +'{lVYѾ )T0(klTA$ 0iZy֡bpר 5^ITy}z6% 5+5"[j8;M+yO{֬/S\knMEC>P=e~rZDI+pT;<<-7?@G/kXf->lʫ7%%aI!ְԆH^8~UrꍪPΨP&ψS }J.Xj<(`zaU";}Z.ɜmzZOgܘ*3:kn2C *Nx|`|}c4b{_-Ϳ%9^"PH ͰǻcϦ-L_UQUM۪T!>I%^xэOK?\OCqd pIFS۝7>|MK'T,P~ ٙG8`/7햂M0H脄d|ڣ K#xE4=1+=u aw#Tmn]&A.&}԰ `:y6 RUfRf)l  KoCH ;Id-%Ш[VYǖU+U;К4P ͪr ugj},//11&&ua|Ԫw AJ%,hZ7Sk.O! RZ)5LEDaX4߹'OsJ7NoXy\X4vѬsjzM)8&8B_TŬ=a /[? p_zfg'(\[_?q,}5WU|-!d J9|ut8 uP:Ph Fnei,dU ˬ7h|U|y'3LQ0:9'#AlDj燱Y9fc WcL{% 1="m(8fr;İ n4wTwQgtG}h4yMc?:a[:3,0}22+v XT(-mfWޫD>^].SjE%:UΏijQg%] - B}ԛU;`lXA$h+K/X@h].`gE"J\yo(+!bl aIv6%Q%ORq>C'@lFO4mS*=<y,چGt1^I؍غqx<h"r7[v4-G/GC,\ߙ-t7 @]/neheZï9[]N*C!cv<+%eUM܇aAjߘIR|X;B*Uэ!e] iЩe3Qy%eE.r7WεU'f<;%q1;Qi _ ܙ?E/GnXŭZˉ^ndoN w9zpw~ 4Rb=R`B+ipYɠoܶ-Lj =j@&;2#5~W( dQ. ekekACUGHűOoXtMHG4-bpE!'Nj|Odl#O⾶002;նq]CBCC˫="YVf7 (4 ƵMcۑ(r&ԡPL`*U ;s sk;=w#X~qjt Ǔ-Vs//_&JѮj&u<>y D:DD)"uUR@ G-WkS҉J|&;ܑfm{( eXk(Qg cmfR"AL?ak3 [4pnD9_^4LO! t~ޢ>EF?M@DxA>i[̾iW:57TŶ?[C[{vs[YK*WZ6BOMKXy&7~$jwǓ8u* 5r,RmZ7='r cIl.Zy"=H|;"!5@kz5I7 Q&ֱM^yڄ=.SKс&tP/mXe_ӶՉ$<"b9\#DCI ?{L\Ri`AZU(к@P}pMPu,mۇ tf;vᇲ3$wg^Hch;j bF㽦jJ̎škg=6bE4:m弙00ݬqѰCw07=3jm4u.NJaJ͛~1RexIOy1vN{mķ(n42`6xI͓^ͪ*.QS$.=\&%٢{h)A*j=W*Wyd )mUhbp?ۜش<3*sR∿WY;?5;[g Ux"6 seN 6w~L>Nw־W^L7썯 4geN#t16h(px zt#ξ|#1xDƶf{9 ܽ>I*P+Ϗ5Ѿ>4c2 ^wgi<-BslBD). 1IȬ`NIZ1-?zO)`oWDv{Z1k!ڤ7TvtB^0{K'īVHlWԡdHR'!dPn\0>v3 APXO!}g, Rj:o]I[i$>iZɬ G;fSL- щJ/Lv⩑pI)BJ5v-5~wń":E==Ԗm>@uɵĔ(/]&" OakSiNE2M> 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 280 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 4178 >> stream xX TS־1$ nyW:8bhEqHdY@$2,""jKVV}CߡjxOvo ds9{ c1H$"3̿_ߐ"]VRhyѶxs( CDq 0~γ';prrvXMঊ VE7A|#cƿsi111SUSCޙ0!& =h_АHժ`_M3*7-7qpC I [F<:qK3ٯKĒ_4 Նk3 XZUF(Ђ<0tp;'N)Jy~,+ȑV-鑁I4JP܂x? \z 'ReJ\(W%[ek~W `yHE|YksC#V$8ҖEyoRdGϹL88=}:r*\>a  <~^,,%̖Us ҚWzBkdQd8p Nw@ d Os>,kRT=Ar?X^ $/mCG1MڣWAV`ORT2l'8L@"6hYVC^B&~tX3{o<(NpIIh:DR*0T+h&cG4Inea2wŵO7~Ǣ0>y3&pK{l9Yg]Ďq\TV)iLXrR*^%&##N%=_цTj$KIS\<ղޟi:*{drqk?={}07L(NA,m1v?vj7TN+oЃmC,F|7(:4KEkq>_9 i:HI2ɚtmhl?D G␨tEm1mM9*'\U*3》m.\8Pv438Oc+,xNr݇ f/ 76V@VGaem14(0$9@ @D1,DC ރEn|E| hOKk`qyfqg1, !g9%k咟(¬ۤ'qF\?kx-6gD~quS].\,s |.m';y 2j%S͎Kum2qaĺiE!ZЮIM(Z.<3G O7TtzYv %dxmt=>XWI"6|NX?a'ཾ'= 2egLHk /<{mvҫr yz|Dk>4+cs]"/}4CZ1#,6>2wޝ&fMܓjda[J _ޡ9{4`_@1[='%yQMiFYFI#my+p9A,gbkU4iƼj(V_g6 3r1\? \H݊UPU̎ m<2?lD-]t2/EKdPIfed 6,gY- ~FA#v͠bDoQ[bobw2K|aeI@9*~| (:]w7BV4^J:f)rcxņtҌ?H5m*ڭ8`ڳ'Q}u)&3M!+Wo323򅂂}55oh6wN?DRCPEp2zmqs$%hn#[t6} [r8IwΨ8SΫ:2)~Fm*/Ȼ &6L! < _ i: ce#̕٫lIahMrRps-(jEEHܝ\Volp ɮ%b_ݽfkK-%CSb즥BKW$XSTF !)T!ea=2eyT( & tJkf~҂쯩r\N11>ݝp)a#rkJN)B7*HYD .#ώ oocPK?9:-1/N]C YGځ'Z>~¢ -4A!!HaڈF3[>Kdr6M5zgSٗ;Sb)E@~}Fh)Y;sw@Y/t> KPy>W}5>3VHN T <#e|Y/XAU ,S;mnIq PXHw]2a>$ %fN%flZ0I΢=+Rрָ֥'S582Mߋ PCKT$dWN~ߔPUTq-"hpx /pRAI:V/>Nǣ-(o&W8QE u0k 8&zyV”W\֐:oUHjړu2|'O j?=7.牂X8p*us>glV|uI}.M ⲩ+'U}"Yߖt4Q\( AB@{ߕ)EDSi/DmP\%ʫ8Dyq 5'%|cj-jzZ_v5{0It9~c~yl*-pISv: BaQS0mEo_UQsʦ;b7ͺ98m%olJ T*6x-6IN ~8L<|uʶϨOhVfćNί6ေm$CɼyhbT_:LNŬ7 (!+!tFn#܂<wz ool E> 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 XS׶>!prT!=wu±j*U:L a A0(ECPoJն>uaJz`k_ڈ(K J$I{xt69AxQ$GՂw7+d-F֖M cl6",2e,L-W8M9iMuiY<`O7GANe;|jI3fT>!erœ:N|#|J]Nd >!Nk,$,R+wrR8Ed62<ыj0Bdah,wX4caM4H𣒀jEUh?*>`g@ baq-FRXB#7Vtz}v=(@1!rON̥LZuЕdq5WpO"'ry1E9II!Xrs×xWK6LWԖš¬Ҭ}1 ^KO{ͦ)cW]u*PWf&k@]jh/w||$jp,0]08Ԡ~ل%O&|a8GV;MOaX(lz,rLk@VC&(|ZǪ8iO;);/U^y/ʄ`R Wwy Ymݦ`=Xe. c〸ݩ`L:*IR5Rf^¿& 2 ~(+cԕhuONCq.71n TOPJR㢶.C̼7= =,*M-bj_F^xxll+`+`P)cJ#l(O# bWZ^$H9pA0Bxx5W盗\RҜ <N?IvI=K$3C@0@;! ;AQhf -qREGըdF2AqC#9 ϡY1pGhT,ţyWNtA@ zW}o\XaNPnbsYa1ѯfAeѰw>zTs$C3f^d|xA/`ZEV6#L6x éoR'J#ې$CK31_3YWۗ/@D;ˋ3C Ī?\bRݱ2 Gakj(wBv6kğEԅ>*>rsI7ZؿjbX:o{E`Y/TBLRdX_*/_D gkxYWm35pq>53NFq(9ۨKJ3Q6.|ʢjFLXKO`Nl)`sh^oz`i@ j1T̍gBٲ]g~9 A۪zI7< g لZd5J| Dڿj!]!|rh:y**L7*!{bOV=.a,ۯ_2#tڄhS!RY#EFd5:]ML=sסuh`u_s;dsvr> G3+3+2+6vS5-Eܑ}5[z8VF%#}ҧķrVa(qs3r,1h|| EٱلQST(ѡK~D`}>~yw)pT^|Nث񔘔iia$N*d$Vf:x֠<< /fb^f|c}3Tn2ܟ;H0VFrrEg G;zznt;5I6gi#@ ,Q-"mXp\u 6pD`~[^\K4raZux(ގpqrf&˝ϫ.43>!gpE0b7g6^y*98%o %esncP,kEƳa^ l#~5mk5&>=q: ز芖? ;!AY}ީ!e"oAwd|j%aX݆-(BPEƥLǪLe5eʰW[`ˉ}k`O`,'* 7`᧏oߘ'InxjJ878-pTj||;3!*#&Sd2=qw$arM+"cf=~WBA7^vm2rn/үW<<&!5-5 hP"J.+ۧ0$QDbC#))//th/vU++_Q]X*dUoS|IqW1E)aLg6NFG8_eXVgI;NshLߠIpdwʎH#:A\C$JFܼ\CK{%R>_UxAFąꊦ^%0p)8,]~я_5г{0)'ngЮ>#?3?#A(3OVBg_,Ȩ JʙO_lܨbay,)@n Tˬ魭 #)Qendstream endobj 283 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 HL KVU 0CdHSU7sB-ZM9I#pt@ˇJՓut@UMNM:ҘZIЛV3P$nd@lQ-H ycM''>R~)g9<]ty]endstream endobj 285 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 533 >> stream xUPkAɏM@[iHE1=IOk:ml&4$$HXk6T\‚{W6V= B(F v~9FVsfEk_,Ffpi Fs?\r߉f_)!ߌ>( c)5vD;n+Jendstream endobj 286 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 982 >> stream xMmLSwb{adέe6d_XH Bd|Z.;I[EPQҢef/l%ed9XܛaJbt-$~ؗ'rJLhޤ+lC̮}l< "Hd"D KS_teΣ(C0 7=:pm5.} 3Ý_^0p0OV"'ض^,UƖEW/S<^L.DoXL\ [HZA~;B#Chƾ=%p4imi[ebc+`fk7F{k(%MM%Ot2E ܤw[,MGw])=\yx`$5_eQʽ>ã٫7 fN=GV::YO申.rv^|Hs*)|NZJPendstream endobj 287 0 obj << /Filter /FlateDecode /Length 246 >> stream x]n <opHêi pJM}f>ct)?q˚Sv5+ :q1Y5Bztpl"֐/òx9+١u˟ Oj}̎|$VK`HR0U0M=UzJ2tϱ'M``YHki$u|F2s8|V̻-irkR]Pߘ}#endstream endobj 288 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 1588 >> stream xUlS;C+%&(8i6n+іvs[ϯlcS8YxM|<cS&/ys3^=9|~H IRڸ`}HXK ʄڿ+?\UTZ']uZ}{QE.>>9w/ }6۬|XS߶M*6^֨ը}js7۫6ɠѲfnGZu^ST&UkVĚXP6սYWZ }GͬQ:dbUN^kF^VoZZ5QQ)t^:c;K+ Vd᮲?o|o_m NFJ3Od !2LF{Jsd9, S)'TT"&x)dϑ oDvd iؙ9Vk &jt A~BQ@6cM&~433==<8:mDn ? A 'pUv:Gs[zF}n7P⾏u%xRPC{ޏ@'~fo9;4dO֒ oN^K,"-7> stream x]O9 y?"ӸH%]€0.p)R 038]'(ݽ:â iZ ˯\#xq@XzvmjJHZ0 'pvљ=<҆g`HYTXQUQaEsLړܽYvj .w֥ _m^bendstream endobj 290 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 1774 >> stream x]T{PSg@@}l*$0(lL1Ӫe-V3 #HrOB G@h S+ljWSu|lb۩۝Υ_V?sw.DG1,xeovV$\->ˊ|,>1'x.}h\&=%,eBeLss953Ʋ+T6ݒ[Y`.5XElf}YYrHWޡuߨ,*5ZK,kׯѕ׬4~/wk:AWYaQԕ VWZfJ\Q3+4Xz\\f,a9.X՗Ʀǥ/.H:CQDkj#VVJkt ?~ެ+2.b$af,_ƮڛRX`dl6}l?;,K4+4ֱSQ;eòF< ;!_>(/;ŠeD&ZY2Sv1&\>W6gu/5NIjnSB7x9AU}P\SWO[ a`%~l=08O$+H}RHɁ[% 6nx2aXBsX7T/n9:b{.74,D<K 6mQX~|vRQ M xe4Mlw=>+ 7^TmQZBPL0GwP+21GhOnz d/d;#Ouu*5)-> zU a u(:Ja% ?{DQ|D{IK!}/)@i!7'';;)[gd^ZK)kIMcV "ݢw?/NS -9o5ng姗Iut & a_xTȹ@p 3V>'%5 |;lG^4n!/?5~&9VWKK)t0.Z9w߈|t]b``#[\4y,R6tLsqGG?ēk1faly]GF5'Mn^ ]IXgT^(QN;AiǗ:tyߡA9ƓC1<w&v$QBImAML|o=3<i\Dza<*M|T%uMy5*"'@*'_qJܕ(Dy_:rHKUy Q;6= 8~prׇydϽI*|‰b7~QRV+`-'c mY(dhFr\*&w-ֵqҝXUәdiXn cCѥҏbI>LKmχ3>!h7&|2}f'd9 \ x/2SFU~Hqd=='P?"=ē% qOL0csendstream endobj 291 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 5153 >> stream xX XSg־1zQ~s/T놻Vkq߫($ž!@’aSqUELvѺt3| hgQ!_#  H(Z`xy$qURrXʞԽkF1z-qo=w7ǎ01p2ϘIuzb#1D!6[8bXL wD D,'&+*bN b-G׉? D‡xG'"0bƝ"Ryj^{}?`9ػ@z 7W>+|{-_~gk@Ѐ,yй#W ~4dho:/ONò=᷁l7Z}Ik칦@)42} /3lH"pY H" FXeO,zMZQdT)|:v8x\U>C'HZj 'Gt֮+$1@/FyyvkvtI𮇥j6S]gN8u0EЪXo9x:aS3"zͿ> D>hb` `ze{w|LqQ8B+m=e,KNRd39*E:;`h.@@4Es aIe*SD#X@~){_N гr]!kI='"NqU>\>m7 / }7 vM| [ ִt+0)r-}/e|~Pn[)Sgn/>wp0`:Gդ1YH6#D[!o (ւ>j`P`>nzc'BI4;ӷ=ʅ{r+U26WCCImNn*ȡVui?cg~E1Yh60Dsp*s̍AfQXʘ.jti$ole3S3՝Y8BxK!`^Uf-l;،͠P[/UkjvY.*hΙM?ha*T]7"ٍ_Ъ{-Sد4/ #t(>Du;d'^Лhߓ.|ݦm$ꋲo Wi'DРh:tR'h&Mk,0"ʬE+4޹ze}vs)G)ĉjUD&Ԝv^!cjŬNZJtht4aԛצ`<2tQE~ґ i IN&(wWvf] (JK eeHԺ N_m6'HClqPNӂ Ixsɮ*fWkX@AQ'Mm6G |w}Pv^W$uN\NV6{يj…SGZG{P9æ%pCRC<[yLw+2+'<(6҆ۊ`O#.!  7эfW8bBR`̅8}9i=;Sf~OlE|~o%ȁFVg\;K?cA#W20FJ 8 8􃲧-LV((T|+=Jq4ek՗VG3CJ%Rbq^4' p'K{`k&ǻj6"\ً0"P}t^4"ZK+֢hOy\)+zP3Y&@Yu捒]ktQ ޘ>uR%VfS$X@Y2#X$R_EH;h\^0#]q-'.8yp ֲB#=n]{kX-[o1kz, zco bru@w7}5H%*[vhAaHx}mB}=iTO%oJU刵Yb P j{5ܫ![*FUN{gv^ؐW@)5X l}($h,^'jeʱ/,Mu3Э_1W bM ՟knTq6RM?  U(1x.ѹt;V YgNr?>ޅ:;`wûM[p ^;9?/0s]{?<;,jlp )KS)*LKAOOw'5|t~&Xۥks >A7Jꢢ"l͍35QkА~bpڈ??p3 a}C + sm4.ݳsݤK3*S3sJF*#Y@UU^V><+&Q"48?ߐǔl}=?X^)6RSXesy㜍hi 45 Dds73#GһLE`,Z6Ji,@Xpw;Xa;UHN`%@UEnEjPTĜzPM[6xr [\PlsBV- eN <^}+ >D[]1?6|jn 0,WPsj^z⎃KYj[+#jݖktaQRԦhvLx{^ d.OQ-) Jvڗ*&bendstream endobj 292 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 554 >> stream xCMR5$u.  ]VQmqCopyright (c) 1997, 2009 American Mathematical Society (), with Reserved Font Name CMR5.CMR5Computer Modern012g&JcmeuCnb  7 VsXendstream endobj 293 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 4641 >> 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 294 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 295 0 obj << /Filter /FlateDecode /Length 11588 >> stream x]q[X?bsM[& ]v,4` vofU%mG8='>2>j9W g}_&o|d[v*/Jz$K>%Cj8M$.?]~q!\}d??YɶrU^ic[zXMPZ⡚v6*V XCQC;I $մ|h2۲IJITUVI=,&e=djgmf<,|jL5oы* ):$AĶB1M!")D4zb5M9m'âòQLęr0E!"*))|dhjdLAd"i$3{dg9,lJc3=%sMƃq8Dӳa)gh{JYMR#%m^1mdSaY 2$ODžz"   V5E )QMJ L-Ebc#%VL)[K"dIOfjVS3p 6%j/Ք>$Z!]9q53ɬJo{ $֖zI$3c,V/HY"X`hHdMPLG_#HfDR@2#$ب@2#.Q7*†ezUI1= R:W*fT3B"I*>!SEdf6{cWٞ c3>"a$heδ.`2*PZĞ5f*1냭heUYh(`R>%PUO&,SLH.䈤QHĮCQ"6$VO6enػb6'ʐRPT;XK]T;'dӲJ##9fY3k#.B4$JX&˔bV )(>%Y4>$3J6ij6xĖT?c,Q`tjC"4)x+qVUL6{BD"R'i&2IחJʈ8fR/e8\^Y4Q@"ˌn&hd*Xȕ&& VXõW>V}^uʔ"ᩘ[y5IYĈ|,fb]ET5ӆRD;ڋL0ȌB;|oyW 40"VZN){&V;EL*5lvnh6,qdN7(PY"~*Yޥ*)+#Jͦ/,x֙fF꣑YY6RuQ˚TX}f]iiz3-M[FzIWejUK92IZ6bD-mM4 5iѬBfmĩضLnW%JJg5PG)Pc-jVcʆ.Tbn* )SIfC2Y%+8H85*ƛU6e{*Vsj*I$:mQ|rU-Άjqpg2tLjVn&*hu6%buTv TBl$JIݝkivbUMCՑkL;Y&FJJMfWD5LLBӣ9XfW Ֆg]пXMzFuDUg \l1qiw@]Z"Q#>>#emiIo*RCCm\X" R 풠~JM23%$STjGSZDLmG:]$]"IER; G2T#H*iJMŊ2g|VmI%бWUe*KHD$?| PX w3⮫'Hު+A1t؝;RTxܼdfS Y e↬GNgTl.*|4j*zRP TSNXO! |F_ TSis2ɪ)\Zꎅ(il]bTVV"H4p#h7x$~MfY5EQBcDc)U))HV,`뫚8Y[2˪i)1l§Q"jO3vTQZM$*feVDcdBR-J HiQ-kuPj)BcjR-? VZ"@e#yj"`#Z5*UR|df\Y(B`ؚI%vBqC@+ ؈P VE'a">Ue-S!^="_"%j !~R-Ċ#-Q?cP8U]Ռ XfLL% VzF iĪ dGfXMٸ 3JL%ɼ5ަ`UT^f5d GS`*,"@TLW&`}rBJ$QOѮP@3XͶQ͒l1ժl>$ӨZbV(bϰ{VzQfXլ=̈lq_d=RMZ3j%ٚ͞H9 TW@J<*d!z$ > Ǣ !dSiZ5 BA4`d3UQ/ԁaz(8B@ت.a+UT!!?QQhC@J1ETh1sip$C)1S$8RJLcMŅzA4D\H;dQv'1W$,j*i朢 U.q,%JՍJ*DZr' UIdU0>}XİʾL)JrcMQ cq,2ǛIRMiTBSYCfl4EyeI-$+nfdO8$RM"kDmM& %Hxh%$;dݨ(e8hAQt%zĒDbiP%*,J$BEhp!#UR͌Fkxy@dK 2.Ix-AdK5ETeVF$RSHI(e,RMŋ%`|UbYe1TSL1nmLI^uDTS@X$J5B.UnM4G8:E&yCr.(ZQ"q_ڣ#j! G4^E' ʣ %L*)LK-*h႖expeD/# -K0K2%DR%ƃd)lp[׍D3!ȥzl©Z!iJ̯A.U4YP. ʥmD(*>(ѭRb8jZrbAf6.dD(T(.A|a!ԕT66"̑ +b"]I%;IV=x{uA,!+Z|n-QYoQ{V ;XW\F RFK 1oEڡ@$Sd饀`J"9cbTM2XqœSifb#Z]'R,3znYyjbUDա!q(&lPL ~bĨ@ Fń`}b:TL6NHňʼfbw1&B;#" دt31 H(gbN6Ĉ:oLLhގ11 X21L - 7HL:65ɇ8-]ёLGbbܯ31Zb0gb:ՙ)0$FfZq$S[A31L VƘx$Kv&A228?cbD`ӹJ{?11bڪ; e@L,]q Acj<  ;Ĭp;0$bP]5 4 a, AڋI'bBNĄGbBLGbWvHLhA;cbLLb v11z n87ޙxС7C1q|C1xb0*;&&nWgb⶚w&a=Kgbqܵ`&,Bk Ďh:O31h Ax8bbC1Œ0(Pcbb,9r И##i ޵$eA`8C1>⋧C11.;(&ͦˡHxL:I2hbehs)*aL Ffיd&cxJgb ֌!34gb3;$&Bj "ā^$&b$Ck&kGbҲ9cLL•QH tII];"ZT'bf7NĠ u'b01ӟNĤ^>DL?Y&[v@ XbRm:w@L&äz:d0):b, 6bt Y>Yp&1fp`Vcƶ5<Wy Aa2a8 1j:0 BƵ  Oaij^t\l0y@KafI5ZɫaH nN%ޙ#aN8 1arX p&#`F9zpr€Tq0`2` PS0A00BSq FS0Ҕ``9+ă)62 v 1 31 Fc0,Ĕc0o; &7wSbla2q0!c6F*PD)feH,q))!RF Fr Btb09),KG` ަ%bLɕ#0D;k00C 1W`F;Fɯ|d&*'q!GKO fz:n?^]'UV2쥧_~^E`[zӗ<ŏ׬W(GFok⨲З/_>eTԹ73c3d3䋑&dbLܙd*u׹ԏxC*ޫԀ& זۈ[o UVߚ|ko۲,7?pƏ=^ "6g %JmLL6OLy.e])8^;/e])vu*4#=/ޮ@|j8|˷|a0?qg*#W!5 fK@ &K&ڑ=7Bi?>ywF9SY|W/߽1/~95䀬$_(e7Ӯ_G7pښw70Tҩ[Yz-R~C?,T[o!ơ a-|w&iV5_Dq~6?O{N 7YWʵ-8B!dUҴKRD}lNNW`xׯ ZmE'+0 |Iu74 B;?BC wf7rz:th;G_>'6ߖ+d0Zdòp"٪5/57 >? E4IbYWc0aElhd0FKUV؏:^ ?"H,{M>b;Nz"iVVe~䯇q8)Ҏw/w#>Or Qn>'1ak='#w}~hӺ~|7}ڎk8=?if?cOc 8RZ,VS:$&cU·O S}:>OzE-bɧlt(rX~4 C~SƴSNN6xx#:L {[PIH9G9>rY+ O>'Y0t -O(VG3oPl}NvW [^yԫO0'ɋsry#XEM}~4B+ܐMBX%g}QS,eOqCMuɳՈGcnΣ cZQ>. "cӋˡ)Ԯ.rUkLS8d.E1xi.)ɓx?wҋӗKi{vqr|B>{+u{kk\nL0w#}nd5 I%Y\A̫,$}3%t5찾OI::[朝 lڭؽ=O}8NI4\\j׽'NH[X6Wprxd;Dlm柷%%&sa^[ ;4MξL&4xӛ @)7~Ӻ?|R/oN+ʉokz,3~[ɒ6ӗtݒKz"#|3J0 O)SR ߏߝNF|uy/>{qWNPG6an!4gH,۶'LavFlz7;lߌayyzG9.q:g#%X~hLJ6~ r~`ĉa,wcj .0<%' dss9>au _O/ ǗgÙnLݙܝ%fCwR}}7qЄSnϽ'5!Mл3\̹y;7cbgJ~;wV9 >9ehM=t֨g@zsZ 3z_'d>>oޝ9Xl y~,?j/G;tƔ1X|ZCtg,s8ƢGޫ#vbk~U9^>~6MAogg )]ďyC|z |5d}˧wη;c$O/pF60'q|}LO?Ay^.v[!q5"1`%]֨/cڻĹa9p*Q{J+^hxdž\bfM9綧<v_RڳPۧ[f^7eJ'F#hvUw^RnJ0~0!:'fyTz_Z~Vv[3[(?ncUx<咗a$%rYqysD~.pPDKdbsέp ?9S {:1d/h=k(3x/.Gٟ5G?ǺgLSlUSB`Jlszm/>2P[)P«b|=\՞S~LӌNt0l¦ I} (0ɽIVnWN+1~#;~'f}`(6~=]W_Km/#dT-K1S,V{M/$)Uя۪ ~춨uQ| "뺫-3⌞|`߹{J& Z xA݉y Ųc#evv_ 䓹t 8eG/mmk 9\]rJjex۠ /^cصv) rbf`qԦ|'҂4ftHaZ3w7μb2p32i,ߜpcvoIR_; TtoNHJ@,1Sfʹc8On1f?t ?mJr;Oܥ\fYMy٣4.NpE+^.^ċwV#4$^K{Ca{c8ulG zV&#5ߏaOM"iNLfGk5`_-w׽-&K)- ~vk{_{x "hF!=|\˘q8q~^iVCW9Tw<ެܼchyh]ql[Kм\pOPhK!;Sә #Ǎ_ho̫a6>.5UrZnS S03:,#U ?~v5 }qHi;H=.m"`Qb C=q&폻m^8#Z\9>΁mvecdh]KŌѾf?Rl͊2Ӻ4!\~TBov!>εl:joX~k"1QK܋<rkȃC7]-^:޴^q-;>^9K_+Z oIסTendstream endobj 296 0 obj << /Filter /FlateDecode /Length 9094 >> stream xŝ˓\UY o`ǦaU "^`c08ۚ06iF#[ꖥM#]%{áR*o̓*ʝ^?۟xݓ> .s-W%~nK9:[^͖?{œ_\=IJW_=W?~]I4R*skxG[@K\hDfxv[R8=s >OOKR9Gji&|NesxN2NoZkhXN+COQt!sҒ+7C iԂyJK>--Jjg]i9{9rIG_yO8 4 md!05r,E#K\ {BR$n0F9s7GISU)EVy)5?%rO;Suox aaϱ-BH+gR ˳KIUo#|v* m ZD* A*2(U7;K'wG=ZD:ۖ3^f-H%&4l_ͧ|<"A#,X kq捹uݹY(5x^Ε4 A[ YSGRs"۳N̂6@bw*`]Y@ww/΋ >'л&F웣`'6$=|XQd_aYZװ܀hPnSdR:oRf1}wfl9%"znFfYqB6Hx n<1% \ƫk\2~qBRT^aSI-kDV폘)X;HD^,Ɣ$NAsL113WNr#Fl ddN2,lNjc}_$r8U2 RNZ  S J:b Em?BPA'9AM}l9rh9ѻ9#rB2v,U#IS%#}xi@P4MaOvּ$KJd91*q!9 u69zZ3=/]q8XUC8&ONVX  pjVBN(?SАsD3>(7G˫RDES[ˣ4 ~ZFYe%Қ!^0o(hYzlXH,(#*ҖBaK[l1׭zA;D{<{}ZC_z |Пo۠O_?_ߤNO=ˉ:px_~51 t~ygB~j`;S2<菂mpm(M$`1`qOL&r¶  >h3aTr۹aO ئRWY; kgCɇk#3\rG~D^Y8GYO %c ێcam\FiCp kc*k+k;\_Y;r<`m|k{">ir;YaQڴR=-Q*]QTU1oArQa6C>ڔV%+gM^PQ RviP@m 3PCPovFYQ;va҂ڞBڛE vA x@۠mOgI imGI<(Nνw-pn^In݋lnCYv`a\m3f6\ n9:⦘.&3P!n8MDHlҠ "G%EdJJq{!ĝ;4R^lvMs-pT'pOiMp Bܙ8VIjM@QV'r{<l=1r%n 7"7k>ܘqu4+X{zӋOv]Xy"d۴s2mlIoO2ylS2ۼ|km?U$vNZyV"3x{m`v򄰵v#um|26^]Um#!gjhev ۤ̀! ۡm{àmJD4=0l)7mPS=ڞaжfmSv!0;h"̀mG a6aam"9X򘅵˒M&3EM~LZYܾ(`mr`mGIm*`mxk{#=dmx0Y't(`EQ `W֦Z|,@6.+dw4(kψ=YlV&#ay6!omݓQQs{ȵj%s"Q/Ѳ)L>Zvv- K80eezi -k=AVm gBp{t~#֯o(%\3t۵S;z* ?&io>{oo:UӖW; +|H3ۦts}pR>'`}n)=b(9)gB5/B}9w{X̕Ktd} EcLr}.2/zw_L'/L #)*c=P&-(cN!mu!tPaB=$ τRQ>P X0Z%z8S=xORU\ DSD}}N&$z.JZ:J^?%zTE%1!P%zX;/@: 9y{3i=BNj)g()/($=-R(H-z{h=a c@+Oc> yZ cU`zfNL)#rQezvu:nVxsP"@DDZ YUyz wJ#+V@zVrH>^N#AP)cfAp2={Հzֿn>3:[e%{΋(USM7O> SGDѐQ="=)srAz&>e]Tɔٯ(ӳ8 8ߢ`z,A`zT 9>Pgw-@9}]}B¤G,U^j-ASz!ze_%zvѢeȚ=j%z8U=tDH`f}EE Ȥ@OɄS~@,e z8 WSQB=v]*C=Ƶ)\W>>b=a]V@SpyxHt=`~%HUhzsu]{kP5tf-n|F#e#WU E>h|,J -<98QlF "%~<=ygﮟz<]TJ7cӗ?.ZxlHFpf=\IMTƺx=?&4KO/_ K>&ŷg7S/SꋵTe" X1:wԊ frUw 9΃zA~kהITw3|k\^X|9|콝5{dzӗڗGs]{),c͗=;; Dx{pݥ{3k9<YæӭX er/*8v{ ~3$%4ImۓWm41 D@OFfAVEūZ0.kJ֧36."8@u3ސy_!MLHBj'̔Wo?#A!-S/*Z,#a{|'#9[~Y]лg2݅$BiLYİVnsGm,Rf.y =*0+zIVy\nM B OJx}֍.FǸm#GC c~MA1y+"x?P"ѾՕ:WC@ݎ |/L[6lHTTtWJSM.jQ X)հtA97;Wc;boem\94mnlzEv 0i$<(u{r+jV~["2pPdf%+g|d;q;x}aO_&¦#w!w[?6iwhb6:U>mIސKo8HmCP̥Q:یob˖۸H@cAbt`F͢tϽi< _vBM_zò]^JάD .ɥ"mN"@R⮗W}I}x5t7G4gz{]TԄO!+rGB(XޜޭGsi&Y}x퍎ɛs/w?TU&cPLW#b9'3ƽ?Mج tXmyO/Og/'&HIk>MRN./ͣq<5ޛ6k4CYqj?r/w^(5S &}Y$6r۰7tknupBesomїۻ1;&S,Kd---_|A|l 1}bhύ'htvSe|D|P.ͮf7+FIr= =,dI]4,#Z'x6<)bƚ)P>5󕑑4ۙYľ-y5;<$kbKXBSߟo;[.L~!Ki`z޾])r]K~"_[u^Eŭ Q{ЧV+6mr`(ODjɧhL*Xvinf_M@\",ՉFހD?n 8^XSn˔oNP9J9xgܰc$Ks1!(V_3c=ϖSX}OŦpaR38@oj"|8jNvP|qM㠾z]>W_3$a"Fsӯ;N/ b_tc):QCgV4P/ItHJW!Gv6Z<70Kɚ R"F-F&[;`]%yXP&T+9*gKTgc+͚n}!/znd*'}RfSh䃰QN) x }w2[[Ϫ5c=txHCnϴ(}=x JI޿<:VūDy^BW~C^JrKYWբ/|LsGҥdmaȇYq(F#'c:)?y,&OMw7QEb!?XN[UcGܺeF-m^N?!e\(ޛ6#K9 [o@ݻ$.-+_ҡں.g#9j>хL2嫡ZaFv$Wo.I(y2L~ `S|qoFxe\ӪZYʱ۸/Tk/Vu8)z\sH&@,8M"=*) nJ[ s\dc vcP2PN7៯awh#m=kn(5$%$P#JB ws{P¿<}ڙ@<Ç0/al;XO_s*[S"X_Ik5[+,2{<}{\X^lk&w" L swaGb_vzwDZvk>Ʃ\88yԸOלW]য5*O7!%rVG!{c9_Ma:R4 #)/6-> ;Ds~@xɃ{}FoMћH7vCݥe_ (@92vFnnKZH_XzCe`Xp7_9ebXh\__R@c-weP@t]ỗIsA\<|.Ɔ/6p/ROݵom=4mFoS&ScT ew_IHw?a'/Y|ygUssm~B;\flij`F9[&|@JpM`t!Q:_i![}@$!R$fq׺$]2ԕetHhp%|oJi[i}kJ@{Я,VttwyYA]b~/?޼hݦHߏ;Q~ױbf.ױba?kQ>K,t țu٬W}Bls-dݶi$ }\w\~dtC?Ir_ki9)3'TWU\!ty^n>$%"m%hLi=iK)q> stream x]Iuv}VR#$e&C! ;,LCXHBo|ӃŖ;zqo\=Eݤ=|}h&ns=iOnz/vm^퓋io1ok;M΅sx_+c!%t551*ύ JK㏱q&47VSӟ4sbf4iT=,&3/izarK]h\g4)ۍΫLv2f?l0Dtz@%R ۩@M=:{Mu lֱ7Q v46\"lͤs1Eg*@>6]t 44V_;cVo//v"%ͼ8QR.GbZtwNn#xW~ daVn5%NL6&JDEHx\`7䣓[ .St瘍f65.#ͰD V3 >i4+gw2lbaRq٩3^5uD*NThl=~ۑsWYjPt_ OtZݐo.w'դG8\3T+3 I=AkbF–J} OV9؍O8jb~Vv~DW΄y[\x8>@X; p؊➁ޕ) 42XNY#6LZRHmP%-РH>™ġmk>dz vS )㘸='$n@bzuF+ tVR fej d*g81xyuN<5sF-bc K}M۩}2D'YjZh=)#L*\/Dz@:\07xtv" dx}:/?DW J&ibu^u}\8(߻`懇(x=>iC УfΎjدX5O##4i5ȊM(ܳ0П܅Po$&$hqGpZO4삯HDOqa O\L3x'hmp 3y>$tʼnD6{]4$͢W6 ~ R'"1n&)13yH@^w4"2;9$Oc|6O(@^0721ÿ<\b8E^'xp~anLJM'i 3*\B}HVӇ` JIHFpQ[%u oZjZ9@Kzuim$aJ+,3+!nX@2/Oֽ]n&9ˤ8"&ޜP].F{L_`hglG"УTLD5Zhڬ"Ȁy/U&c~& kAQBV %<|X^ 9HWa2ӶK34X4c "'RL<MֳEӜ0"@>SfQ %,9F$!:mOW3x <6HA/xKeIg8i̥V9i*=iKh'6: ɻj,nd>xUx_ZtTf]L "=k6tэ#nd6&Kv`w6 2qȸ{ĩFVD3SҳkyVLȈS bD'o= J@de7Vn(xlS!Vv8r$= q$=ύg [ד$M0M9@9 QMMb~Qf2=bu~DPɵBQC#P";yLs!B5E9¦v`1Љx!.TKKo}yW{2۴2|9ZMmI7΁jGbg[0Fy@Tts6_|ƍ|m:NwW;ZӄYQ0:fR>3<As_WKcUr1iZxT$0H:$=յɁ  sXV6:MXmXLe uH( &@ „YkUIDR^IDi"GgUKPPA}<6xO7QFEj cmP+ 9&@AzڥKalr}K7?w'\1ë39vbX?旻Q*0ڊ*OO.?2?}iW}CL2<䧗w7&?=O b#dWJlKNB6OřHm#f<޴tӾDlE rCWuZm A»>P!v2a|y>z0ebk nyTXwy珕Rזt.3W'rD%' oc/ك#WKHRBRVF; س7'OL^dыZ]37yʹK#X`[LnU@ssy`jR4yd7d;֚uɲ{u՛P \"-6$tkzWm?/Olub4># VΝ Wcl!caܔ yd4p0MڹPZFn .ZYG0E8[qWu`*6ᐣms\{ /0 seC ud\7D ģ/{y~r^~E@QvQYWksi穽N .՛&_k5acL:]k#jB8_꡶*^ ^|74<$^Pׂ͚)ew/~~@!׹ *WrIw8cYԃ ~Yud禗8vV n41@stX̃q5.=̻^YRJn>URkYЍ#mQK9,v+b_v r27%,Q IR4p,܎$f۞.ݙ(+t+ϣ}7Zf&B$bҴ#G2В MY&]W@ .yB6ZR1|#_ ,Y|{\J. DU\*ݪ!̂)45t%`ʔe<@ze\8W1KU<_0 h2(lss CeXCT~ZV`zu({+^ƓGXҞ]w[ ' x|hȶj,&-r~sqo?QRH1o区 "$ݲZ5k8he4_٘{tUDW5xwUK1jkp͈=,R7s)5GJ:X >M =XaIx@KCc|/85/_+S*n17^\h*ڨTd5p":T|:7~Ҡgע WRbo OoI_MAmOO4Ƹ5hA<:J+`4ʷ#Tac]w^s{ZLՅSg9qJ =[hetZذZT -*>0DLԁ!VtRx( 𲜺5Ȳzy󆄔]kZo{MaR/R<Ӕ % Ak%:\>zl̘&WqKU@^ȤU˽nO\&+EuPMW,Wж%";u0>AfOF$4ucgOd8fKnCiV51 yO XY%\j?{qcA4>A 3gʨ2 :nvTA\I[G򩫺E Q\-nq̕.`$პm+RQqyZLW922;Ru+&_N/ PcSh$֐DJ5+|7.{7hr,voeO.9׈^xV dgȂʪږLdݥ?u qpdxWc-WAPŏ2=ހF]ȴygKc*v(̌؋*֌KdVeDN|շe$1Fç@6e(Q]4lTO.\]6~>zhz<'\h?ӊotgNQ9QɋWɯ7"XƯo{LwxI[Z9ҵ6%!O·K ѤSz <$O|WT=GflhW@soN)Sp-4 |N~vSܭ=],Uݒ 1O%?~~=$gn? vxur7SUDendstream endobj 298 0 obj << /Filter /FlateDecode /Length 8491 >> stream x][q~'l=wp'rK4`j\LRR|u93+2R fn_ttr~엟p}l:>_ׇyԲχ/ɛЦC4tx_NTt? ;>̏n7E^sjt|!]k;3YyO7?5wrjy ?HmJf$>%V+?>^9ڒ7ufŵ|_MMJcqVk|>M)O=@i%u ͥQ%'.kFZ ,%zÛ٥ 0 mkiHX0މ7,\G[4Tv)cpظ;*UDze,,//8,Qcد\0eVee7+2)qudK^BZW/~U$(&\`@çZ.(]J70_JMݓc(-Ou pB_tu/k hbQSA5fU@j _+Rs.Y}/?up%GӸMAf V=A1 gzϏ?_Ow/z/d//O7v~ni7Ͽ>>~7?}~KܩOanc/6js=^^ Zc1g}Οf__2Zׇ_; qv6'bٚhkfAFػ\ZΧzZr/?Ohڮnd\y";^* zyo}q-&u`aHԀ`WTx#%_Ɋ=8e?ԋ[F^-]Ю!|<slFGl5,"]]-' a`7kY ^%+Y_^v(yUI/Fe{Qtlz{!rQ>E^xTշ$F?Ke%I9V̘<6 zjj|# 4I6W2.piƺtjI}3Y)a}!ynZFs~ 2khS\L+SD_)2LmbD%qez׊; $VHP)Vxr){()|WKż@x*8Wp-Cx_{OJxm<z:ܼ/^HFiF%ZD @03?>0:ly?5ON}?(y6(bt]ˉF7WSdfY"*CDn+nC"⍶P[<%6 }LP}=QgOʞ|+lÖ9mT^ ;X)|ppᕏ7aPgQt1&TMmf n>IϷ5n1ͦ8}u{ AE _:x;qO y.!ѴY;!<_)grYA b /yMd:egdAoMFpNʵаy/E_aϒ&rkR2}2㥍$|5B2% /CZj&f6c=lqK[ ;S$[S&b4wtm;Ĭ\E`]xQ U0}ʖLzo${P:Ęն ӵn=nx xW,"ox4lj;_f 5ȸ m\NkecHog a3/HvbiDqbLx٭Ӭ$[rP>dDeۄ9s^bviypv čzVnzTc-l_" !^[ui{67CI@)g ^1l,WYp6qJ#ߐ2Zgy7ML=YTD GcGڿ}ecK~u (75x A؝Bqzcl3|r/z7N5O=g_AyT>@GqHѳj$WxP[ op C8|l:jC;Gj5(-()OPA Jt)DvR`J)"Bx"Q(&ЫY%wܻGث 8&`^Bx>Uxc!#7(QZL%J9A$^xSxp!N<4N$< [-;% SbJ%AA ;Jz8-GXDx*ոH$b<= #&Q ( <) y2h(CDлlx/VG)*X z2 ,`N(2'E&E+}UZ'Tda,Xzd\dDU(d7z7FW4Չճ*zNLq<]PI `$Is` :eC8)PĠcc '*ʚ0/Syr> dMRpן!_p-2/QZ`U'sOJvn!%@Xb9-ʔZiKDd`sE wZHKxM0q;<*Dka*NzXluZ|'O&&)DRiĒuS&{m*-:Q0H^ Or'+i ,"iBE8@źpY@al"6"m2x6VE]-2IEu$;,J 5 ͱ2 6qOW]??޾xFuPʫRЃ@B\Ru^!fRJxTNL4M^0EĔ;]9PXЕ)Nr%dvU!j"afV%TX\Ƨ)d+vIaU_rRU)[*0% yH?WSdv_AVzU`v. !+@b*eHUIrQdtIRRkEVVDVKU *Dj3LRP oMV_EVA>=<,PYн(AVǫ xwt*`qZMqUHNW\& ,g +N9!u$ /MzfyzSq+P::SdFf$*P6 Í| ´ 5 ƫuF%Xa( dY) $Q`jV,*o  )B@._Z/ J/$( dV) Ȳ 4V (b;t[JJ-V,S=lŖѯc+RXގ%V= BVgЎ=ڹ~b%* S`'ڏXGgX!Jy, tJqT@~U0Kb\gT+( Fz a]]3k*Pӣm\Î0`Xrat\Œ% S/ +q+%gɊ )URU/JRXWahUi _.S( ع |TXŋ. M8K`*ªt +ױ*nv\ q+뮈+άV8݁ <*hWgXx+gXx)w$ bYGVDaV7VNvZAgTz Hۧ9 UO>8Iv 3efqO6$lKm2RfKGa̸~^K(0+i%?Q97B_hQg\ )z5S WO{pAwZ(;k.8 S',~POwC$t3e y:uJ҆[_jT_k̾۫glR,~d!0:k!]yѩ6ۜT6|K'p],naع^Sk,^Z2oI]֎TxԻa= mN|xFoL.<}q8)k)PeKOCQ՗o'7ՃG8vܹ`9Dkmu#m:R|Ō+RUGr4 *tG"Cz3;[3/BMgWb5v˅C]tD.A^QR o2Y=v=70Lxn*-[. r[.wgqE6ryP'>ޒ>F7]*R f ͫ88}qe[Mw(H7jƘPaM@+OKP\t6:;^=䕯to/'A*H& .;Z[;*tV5Jh*J ث/ :ҘT(qk+] awqhsoƘrZc+ڣh~%s|٬miծ> UxsuQ (.m٬pY`z+Z VGe R; [>9jnw}`ٟw2&DxVL ҧ=ukwu-ԩĶܦGȳ)KclʎSP$9u%u??[3JT,%x/]E >hϿY3_$L:7%*ԑd-VR?W?d(w4n.Vw$?у! vjWح= ;.41AB2'NCU澝&vSAj<]3=X_^:7>i8wbZ~^:8IZV$f39)(ϧQEiI %ߦЬ+xZ%R h6s9~MW=b)u`,gW,^$3F4qY+ZT|J#G&E>.T{!ľy UAS z:H8,.fyhotyxc>HK0WM+b䣥n_J>^^7wG[.}E 4߫O+Ydh#R4mgKVk"Xor5c [ iN.~Eu=ճmcT1gGs6N1oG1RŠ9R$ :F]}:(+3Y_yYHYfW'W'ftN%l:ﱞEֳ}VX@=T$N ɩlB{?N*$g(C4=0JNRG |p3l嬷N'# \D]Ev#?X6 w_IT, )_p¦W66L`he;/sWR3i(p-± ? MPendstream endobj 299 0 obj << /Filter /FlateDecode /Length 6886 >> stream x\[\qƏS~Mi'wT))eW^lѕ劢ܡd|gY2*R,@w?즃M_ſ)i ÿ?ׯw{9972ʴKv^_e./Ѻ?\^w }ir0)VOC4bg/0˗=OS0A/C1ͽNƄ MfDujt :IdoSqzRu98(WEJ<˒x;iЩj˜ hfR/\e~-x ͯi'vҬx#$ɶ+ETueJ?o KeG]DFPrIl2y]V%l&7i3S(rÃ.zr)sIDl3,2uĔh]Э_3d[n0fxeW>/nܚbI]"t(35 bx`ӆZwɴcYL-ۂD*&h׉t]ZÓU f I.1 dMɁԜaZ<;>Ν"{ϰ$Fi] E(BE_wFZrMQB 2xfr?Nh57㥌+W67dvGT-ẻoaó'2o*؍l]:_(öM @?yO~Umu!m^Qшa!6_ W!>Wzq ~!s Z%&_DCіȫbelevr>Hc*"¡l֔f515K|w÷9^+ y{$egCÚݖNgPPaKՇ A<$GCvXΘ2  }0 y+O6'L Ʋ2V "83:m*&#zWEk_ e!73EY4y}5yYYTxKU7mS"AU-F]\sJyjzGv !AXR1ÅdR!`8Ku dO/]/DạL#̄{= pR_wνa`( ΃:m 5O,滀-K5́8a-LgQz YVXq&V6ťmG5"5,t[8}Wΐ3s]t7M!6j}sjWx Pȩ,-~ǖ$^,4'z$!ȴEP\ڢe+p~\uSQ!%u" @;J΀/{CgςV@ViWKs6q{o7}n_Sz$Mm_uq)^W;5C_1U ( ?55k-v\]_߷wE[zӾ^79Jh ykP94|S0e/y26[\m5-JҸb8LIZxhx9:t5|l ƇN3Ok3Ί8n) ROӲ:*YPZN>2GxlωA}Y&C/icU'|ExDf-ِav,mtg~\!x]'-B63T6g4B2nd+#Fd/[Z4tͣE5 .fkB j;AS81Uc6v P)ܓc(Y zBh\$_@꾿zZlk1VAc^tU"Y_e7kk? Y˄57;dW(MLH[ޔl$֊hm9fon^b]wBs̩U{ƒe_T)M3|%De4S ](޻ZCa7je,wݥӛ^?V$#fn *^Qd3v46BT%ՋDi2 | %*Qr},M `y3WqozXW[E UG};BCH*Cr+ȊiO G߁a+YXˉ"p,FSQ2՘H`^]y{h-jYw2w4Ci]ܗ}/U4uaf-WWjX6'Y:ղz;#Yfzk]T-T.&Q25P2nO$]X.-]ghj!QF !@L'd"şq*~"g&Yn樌<Ƞ$kJoJ3Dk(j!36)% )(˛%0(hiB2O,Sr|.1rHC4Cq%U_6Ư#ce#u-.PQ:8 &r h1L_iW*Ae0 $TN3& OYxS ojRK8>xe8,8u D1E\5t)qK}EJ-4`Qsy22eVB;yrt+YV!朓0(C HMTTQ xOs i 0!yN@̠Rfx $" aA%:Aqt[8'%,Mxk[0! jK T'# pPi@|T8yPߞ@E!;4f\4Ŋmn˕IBP<I{;i/^~N_hO!,jKew,tT&ə7!W}Eg t<>ZB\"L Yzv,1]l =bCB{sK2BDo2 ?[2+?嚥8G1^;ԥF3~A鏾p7f,Ay&\U *.57y\ 4 *ܒ .vȽp&VîrU% W < :Jls6q,XOߒ{6Z, z(z뺴`_rڕn 1\Mi>Vĺt/ .x?)@Sucv}~ L~{鑧܌l}&uwP ͲUԤRtZ!Ea8cfx)q(.޴ H총fˣRjW+zZEr9d~#_1Se/=6$f)\>e]qՙ*tKOy4ykSJ-s"V`ɳ*t]3;u[FVtf1ʛ5n$}兓"ϭ[](5*_rM@+-+L IhYyͲ8~~ ͹Ztw1 ~maNcѥ³wȞ骘Ie3zZ%5׊%o;_Bpabv/uf=U.?T\:-I7: x |^\@-)piY< (c2iC]Og5!- $͐[\?kl8x6>_YܹJ)ޤ"\Ń%nEZߣLz蒯z8uUJ蕦$F=pvI[_.RBx~k& #m̹ZjP5|9y.ZwI3F\Y7v"3 fJ^6# E>J] ef1|W;EgvM ?ŝ3\endstream endobj 300 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 1424 >> 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 301 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]O10 vXЪj8(Nߗ,N>ˮGֱ4%"@cQ+0I!O X d7~I]ʪB A#E#V?i vw-PJPr48n.1Ҵ4CN _nSendstream endobj 303 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 303 >> stream xcd`ab`ddds 4H3a!+kc7s7+g~O$ȘW_PYQ`hii`d``ZXX('gT*hdX뗗%i(gd(((%*&s JKR|SRrKF000010v1012u{L;O!f/^Zo[M~w~YyVӝ|yr|ŋ/d<0a yx mendstream endobj 304 0 obj << /Filter /FlateDecode /Length 7772 >> stream x=]qAB%y/ً aN8(8Ga4"?$=]3{$m9Ѓs=U5ݨ(ˋ?O/~{_G/7?~}&l< &M4vwJaI΄}z }JFxI! 9ා9L_`N Q>UlLYo<.ų/W/U 0f*qƟ>%{&jt6-a%gýa\ luwz?K>+HPS:;}K9}OUNʘӵ>4B+i+t^= !t@{4 :v{WI*@f>k=)Np3a0tNDM e`/qp ֙s@qKF#h+sKx5$IN=< j֝6L;ٻ\;rAN1Ѣ꾈!n%?ˉ*;;J1d=gaGHcUj0*N-ds6m2tYy8K"QA'y8t? NCn'oh`WEb=Ay/)%TbNY ׯOFdLD AY dD>[T$ c@  ^ thyۂlJI>hw8qŴ f _C?x#ay Tbxc]gU[n߀6K88S_Q"pN+VӰ-f H :-aV fRWXeN/+"Ti4*ۏ{m E%ڳ6_ 5)ibFݼ/.>;SAFlB5…}#-M{yd1o^ǠP}U ֎QSh{KOc^ВR &0 Og1L1OtNCKfFH<8Gujr`>/hwb .D e`87z |3e]#=2[O;@րg/""LɢLq=(t`;P@WӦ{Ep0%Ѓ'7=/aG5.M#ZxX<@>*K~p|f_ζn)NHTd- 2|RM̎8 M:M;YXT=j'n )JGOp*:uoV?~qiG3Pgg hN+]h)„i0+o)F?faBcoXW"uZO%}m.;Bx׽^l5FƍonuL}S)ln^{tuϚG2pfm9ۥ: ХҜ\agw#lH{sиN[baJn܌g*DՀPP?bʊuubB$X ?͊ݳ_nI;4U|޳,Aҹ幜cئ+%'MlKb6'2:4 8~.yQԫ)Y'T :Q7KV<з @I'3S?oqDv 7Eoc kM0 1,4T}wܿ>^<0?-L=1QJK"NXpAU!e2`{N6Kti xK| ΃nt)A=b5Iظ%m`3V.ʕ n,%ksaZDiB~kl#W2Ayi1bx1zRhKId-1D2`hVɚz f1!͠>l$ڍcU\0r*A%3D" ; Ybv/^FMt%[٩-87J޵(v7)ϛ9 .aS_#=l~.(; r {.L§}{uk#utN*qCC˳4ØaFʼ#Sd,KBs gT`ȫ :!&̛1rM %ZYwy'fzS ]T8r0шqNSpEAt|qDY< x@FNEi bmJɂ`塯yhTG.jqVF4- ){+LV,ӺسM>Ŀu*"^'[+sXxp@BaEab, I E)a>ţYP{췖"|DB )8"ݸf>)b;yz9[4'о~ʍd2*>PM,tÄ>*/% ނޕK7G 'W{wIFSc*!FJ&q1qQem}r~{2g-Az!k;arr?Y,CbԵr + _2/f܁R5p]W-3 4zwFVGn@v֨QBKׇ; lIRr'=׃b /&V|^ȾD)f/N(yWPۃJɧekT85'gkִ`#h1?*--'Т'KwӢJpg(Hwdgo7jgM?-sb+i"^>kݾ_Cܭ,pC=ew1VSAX?|u5ֿQ؛<'Yi/rǚ jnYΙxفutQY X1 L[*մlnĕd3ͱGL,M}w<~jr''dDAk{l\[@Qᙍ:(>L6_3:"i9>Nd^, .Y9[͟E 0KZfT\+o,\Ak9pMlZaYĆSʄ~80H zFBu;):0ty$S`*]%ώ tfKu‡2)he[C᠘FN&@S+|Zbj>|$6*BgzH%)O݉ۃz{rp!YOiWic Ecy9+wVդ^rTyWS~>^+E;Z1Nf s 1g30w1849!8Lt_ 0[C ?9f4r?KYP+y@c-YH ᅘ sJ>17nFH[9>cm2Y-x9rʉ6]&re4ִl`l?`pLadM<,RpLsw^3^ *0$}ˁRJH>U+;=J;R(48,.Bi]fŹ`0bcAUC ٞQg:VX: C18 ,soDs}rsn=O3IQPDۓcp?eXm2gf2 SxI9D)toesHYDܱi!r8G4QU {)A6֗IKCwa[;#wA(g osΜ$݁ȝD]+IɯZ |1-sӗfD]p͙WylVD-,zHT߿:JhwNmɾŖ2̧vm<}V<]L(Z+`itTw"lVOyfpc,Iz,a& `ϟ 0Go,RGj{􄗢Lk~jTд!<3TF2Ów e-YB|kD /UqS7V%tVI9v;TyZ";mIF]\.l$iTj7wTN*h(SR!=Xf)ܞ }*U&Ij"L^'.-SUj h--* %,OYfܨD8eB龹L"jaHk`([3H1mϦf6e|JXDعo ZS}Il蜊j|R>QQg: N_^a/aP K7(jjA]mP__s;,D~V?o0`R7zʤV\h?\VR%n s,R WΞ^Sa . *1: { lNGjFat Q5yN.@# "}t!(M> 0գ$MPWӈۣTC`0a榔q1D9ˡЂ_CUV!+À_)<:Q~iujTqԛ"lsX+*y%6,Y~Bw(0uCgʾmԑFx +S0htRTM_.J>Ne˞" ΁n |;ZDꥠ)-:4lEֳP۵G}|&xELdVۭsj@NRtn1gfwWcyU;xt+l5} Gr˚qwGpVLKpW ?h;Xv0-~-NG}PǺxlϻZAD|Xq:X#yȹ+ʏq-<Ĵ0vt՜>t]vn1xU!>i6"j2тsA#۔̪py1?$5+F _I7DD x y$cLENw>KZ X]S'9KnDأ5ˠ}2Ů?_H,b1>tL6ߊU_5B\ѣx:~y+׸ZiYk絞ݓ+BPiqΒ5:Q\n2VU)/E)9~|]M@T1Xy&z jl5|JacW`bU5[PWh}y"x$'}pleæ?FcKKn M6uhXSzu#xLt̹ hRsca/ala`U5}4 ۾+tm}/SKB8h$Tj GWY8`~ GA4ʚmzQe5J7*Dtg$Zl,z ^xqxKF GVhmt5M<=ڝ'Եƒj(f]@5}Oůt >qNקw>Dp}D3OO/.5s٤TE=R ,aXJ*P{"?25O}wI,T)5pqZG?nj 31qV;-yQ"ļfQUfD*BPqonu&h **M!">Wqe;7elFrjNa d\y}0x*Eͱj(*l|!L155 VޑA5mnl'JUvRojxEY* ŦF>ncuR.0&h͠kBb)lfn_QNt w@BK23t)Em $Ł]PG6dbOZգMpXNצj[\',^6~:]>#kB6[Dݗ!9g DN]{(wz ??VGC߻D1=GE&8)m6-5  y,͜ܣ5}</mu1]֜j`hIZ7Sa%6sZ]+:񝡎 3iBed/bP l_cf9E ԟz$NXqQ:f1F{50j[P ^K(XMLy*ѽƅ t7!*e,OQtjU@D?]$7.7%8U+4=HeK);ȗRiTS`}LMľq`~%RsЬ`l Zڈm $8e^5t! /s8E[{t;:HUe HE׭T x#rZx?eendstream endobj 305 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\Kq+^}A[>H!RH#,0]aQ2:{ P(8Y9؝^ޞ7^>˳?YvQ®jri3ye&۳?쟟_`ZsWm__P?__|H;L;z0jS_+1T\=gASܿl-=i U*VMTke5mh5vw29Gc%Xckb'ls H(0%NOyZJIb^z{j26X;\ua;wS 8%Pl?(*yJp1r`tݞcӌ1W V2!rqOs+j=y[^p9NbV҃\ϥNMvԼIιa>r&%oL]3n`,`)D܅Ovj Yc)ĄwJ` . d|M5t!q3Gajl> s/b2M3r \٢,[YV.OϳsC`#B(S- H2I6!ijnPp`ߛvÂx~3)v?ݯyv)ng%QBNҒP{RWlARr鸶X-%Ŀ d^ 0f[;E{zx] Ц Ѥ4$b}$ebޞq޹'Q/?qI I0 :A62/py"*{ܒuY*zp~t)7R1!O9Z{1ɠIe2Is \"ZBtpi*gj'0e;Ehkf$չe6ƔEI[ȥ{ڡL! b{x"bTl[L@ӦS> (TS.g k,$7hZ g< /;̷ӈ*ZZ'nYP];0qS+tINew=4M9RiAN@ac}AH&P 5Q*Q eC:W3S6Uu~ѷDq1%L}a^ vK۰4quFEǬ`o7i3UM&EQR[xXK*1h%V]; nFCq=xB'AipHƼO?jƒք[c2nQl+`ta@^/m"[6pϥ.VL0+ vE$йTZ9١%urEPY0 ]d! [th[岾ȈITCt 45tRqwtJbI]ImUJO\V~ u;O Ls#BA(!uW,*wf'fD@"U@_ťIݘ%4doƏ$ApmSШ0n?m' ^^pm1edd~p5H-'m \亟6{]=dd#|d5WNEJa]Z9x;&/w)3e ,䯐O'IG< Y2DvXntC=p9}#k͌ V<%UTV̔WM…_n)mRweݢCP1úeȏM=T=ec!f`ĘKK"16!0QBZb+gewu+Ō$[}*Rjɭ@nqTmBQ5rXMYԝySIƍ*` Gھa(g^# xR-N~xBcoQ^~m&ĆK1s.j1t0ߞ=?+t3V/rK\QP'eku%:滺xߧ 2;]#t}SM.s2:tވ\|/$Iq/[|LUslW֔0MicL:SPX~7ӴaĮffzvhXX3(UWOjʥc5K5N-S5X㛲&ku,8A{)aޟU,Yt bf@{+Ns[s y1x2lx-XsvTV҂i{(Mtty{QAu kB[b1+&b]tGU+sVK>e9O@pX;7OrrҴj[E_1\gsbhUʓ|E|J}|a%iǛI!B+U%I?Ps.tcI퓻[Z'}#7HT?vwg6,p7Eg hFB8^P'ƈP2`΅`hQi)x(C <,S\{(T>M(#b=H@S@ $NVdO yi^(9(xk۹F\kīPi9hQPe$"`9GϠ~ԶU8#> `lN x$F"^?s|D*[!%DK#$@+yyH "N@q$\B yDboH4h yaJ"6aYȉU*SŐ,~nj,5N$WIL[2#6+IT!N҈);X"l#L&,*p2;0B]j,4OhWe0X*8Fh&.GŖgG1ݷ23 Kp6c&9GxNaz&P}#'gK@1Y4Bٹ#Dl^4W0yʀdlѐ^LO޾#MȑI zF F8XD$Vyj,C`*PMa߬s^vZ^2* u4*@pJ Le#x-ib'@҄Hj Xn7ԗhĈC@jKpd'i%HPhh$ !"PϮEWyq"*o #¤CY<›Z{="^Nh?i+oIm0(-c9>AaD\UPX d~x  (SILn(C!ej J"9S@ u OB7/Ov)BC Ļ#PBqY3dx1brof#`rPJHE!'@9B!km;u&][&"Ve8>"/ڠ[SjS\Ř-ULIOl#~LM U hLΙF,HV7ٗ<C &! #`?cJ2B_bMCDSDB`IϽL &G㳥`9X ܆*#zɐky)-a30I'A05NԲ̐l'Ad6b8"r"hE 5kq\H. (C.DJX;ڙW"]cBZyzh4Z\/\)U*&-S隓YWυ@pTM#~>W Te]EpKCdy)ICRS9(J^fX$e (dh99޺Vw6e`:OqT:=5HnXbth6 ]n0|13ə׿}vp}Ͼ[J^)Ō;z׀t;G< E_I?u{Mi RVD7g߿<쾻yw7sMQi-;znle< X_8zT#$(ޑcj _$g_Crӓe0>?[8GYDBj#,~ @OaΜOY ӳ0GR'|"ghVsfw=`hjE.qO,l,יߺp"FUO(H$n`EafAV\ڿiE kzs²\U7 /G¯ '7RWﱷwmچ[(ӥߵS.R@TrH,c_k5ꇟԥ.eX*qlG>vjOwLb~7>B \W/U\ xq$0\6~Y{ɂ[Ԕ%o<Ό)u:Xbu0_60?oVT]_5ئs!l\I/.!57Gk!MÇ._(m>o׫劊/"`kmtmSI;5n߂ћc+ǚ> stream xcd`ab`dddu 21H3a!.kc7s7넾G ~"Ș[_PYQ`hii`d``ZXX('gT*hdX뗗%i(gd(((%*"s JKR|SR Yt޽M3~_+ۻsO/{Vw\B ۡ݇f<ʛUg+[yNƾ|Փxxe`qendstream endobj 308 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 309 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 310 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 311 0 obj << /Filter /FlateDecode /Length 5726 >> 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#?:Lendstream endobj 312 0 obj << /Filter /FlateDecode /Length 3926 >> 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[M)9*;=cpcw6VQO?n"ݣBFRI҂ c &)s֣rchC$K;SIC`Zk}_ou͋Ӂ~uU"_с6xI^01:F\E1̠_^ZEep/@85ܼE 3sE^Gk@ 8iem6]BF)̗7X%rdj !41/?k sui}#d}N9h8yr)J! FD4MK9X\ }E2!4FlCWqzuGϘi В3=J F4yJ''39p-y mxLCCo{ЗY4\&DTPqH g#ٍ~!TXi:<[T7$` 03Qkk4p"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 313 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 641H3a!O/nn߷ }O=J19(3=DA#YS\GR17(391O7$#57QOL-Tа())///K-/JQ(,PJ-N-*KMQp+QKMU8OB9)槤1000103012{='8÷}%`wyV]پz>3l[Bz߳f/;a* r\,<'\zendstream endobj 315 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 xX \T?Ȝ"xuB2(wpEd``dyfwdqʺ]5?JҊ,C/} Zwsy9w/F"y,a|/)OC^ O D\#HB5ʰUP@uhI3fL:}?UO2u_CR䧎q5+P9qbTT JU\ԁ~~~\+CծoZ6CS.SnS2 3m^#lCꅑ;|Do],vrA+WVl5:~\'MҰ 3Yά`F0o2/3yYŬfF3k:Uf`3ט :3qg0"f17%f)3YƼ1}L gBf382!LL]fz3N^^H_Bob%{A$ne>}n]wOvϴ?%)U~|́A% :63N>4wHb'] E7T.j ^qAS*Z§k tiiq$svul=`eC 4Cp i@;cdBKJ!nkbeO2sdF}#;2XD;KiלXቋooX.8v'v+ GOlc@op A٬6 e~?`H}/?uT-@A,И1&I{G*FcN͕ &w8@ Qd|L8k:xX^8 +j| MfMQ>9tFZ[$g;z)[<ϸG֐%ML2WS q~঒E'q'o\2VnL0WUrL`wA~bV&5gXb̓_;Nq~7u&LW!O#Tp zׅ7m8쇽F'4[wȭ~r=Y2+9i[݁hlM/"ѷpR ZiHY.Ω])T\DlV)e)DGVЎ͑97,iפ|oHK$cq}Zn|!2vn+hֳN9 i]l]]u_]4BDֆt*21܃̡rm6ɱ>H܌JKL5s;*Cw0.#VtF_yuBc _DguDªbkjJw4z/Y#%`N /ڪb_&:,SZd3/P{l`=E=M&ap% ,}K}r+Yjv" `!|V.`#C,du]"<cu"֮MZ ޙտv8m=Wuܰ/g%Vx )7:]e~%N 1KZud =!`8Gkqц2Uhga$#>Yc!ZM8"uR\kst9 nѩ!B!5JM?tΉC>swx˹xsQ!ZoJJPF۪ݮIz]f8v]oJ|YUֵZl?ߞ7K tiԉ$ )fBKXGI*1gnk}A t gHqXVJ.˥~M6_PYGGW<9;13J!08Od%eiJ2 8@1eiP f'G/ ~uiht#*VH,դ&{J7u%غʺzy}ݑ":1us{F_nƃ}mw%Ϗyc;Kb6 3 ծ$ {Ŭ/MhHѦ;3,Pâ"O4. ܡcԂQ:n] $?q8ѪD,[ɧ惁^_YjTFˏ pS(85iKf9Mj.PTXTc] [ zVF] fQjrOƪ {4Hi%嵖FSM7H4$%DXXFAu !izfJt5+U 4QC*OPX~l:- քFoUoh Wǔ~# 6EȩDm}LmȯTB^)ӸœAdp=̶dv[dZw𥇽`wSǢ'R\?i% F @mE}P+ ݬjEEZcM\]tZ❶N H|% * <ҮMFRFI٨1{ 6DZTdQʅWFU\x}2x+HGӕEj@& _ܒ'pqNEyO8"%xޮp.2,HL⹔J1 \Ȭ_5< t>NK G *՟H8R/wf)6Yt0I,xHq8_h74 b?M>.(vzHs7Lk .ާ6Γ$"MXGRe#{:Clȥ]5]]ô;w(7E o oӽMG#d݁-'+=DspMx2[7ᶪr %,UGGk`-ζ%{V+WgC+~pqEJ5G$'iS3򠑓u; ֫՟VPㄻef8 | d0"&5XS_Lĩd9&id3ٌA/ww#ϰ88|ђB"&wF\'mڱn+(eIS}yE>=^E7?a cx"E氻xS*%r9!ljo3_p^)'#( z\zzL4כHq .Mq}uGM %{;ҩ@ ɍ))+zkm%4vX0k]c@NN TP.6r}㉃q'>_+l~Q~chNt=ZYvi~1יOƦ]R3pwaZ c&l~7=~eޑ[%=~JK'ϲ?$BXI"tytR nR~MUOXe8etHr2}|cDmB QYkkZw%uIQTKp|ȟV"dFҋl~Fl%%BBLAk4txeo.O~[=A}?l>P.") &؜~f (`(˓fQJA}|vǡFޅKHZ,Xx ,Ү]3YY-C% t$:;AsM!ۛ֝m0(mR0+ P%d-X[%Hiz pQph2A0߱N= NeyMTNְzNi;Da'ˤf$z[j {T_Jkt\Br mF!=;'lS"b,;֗%n( 6BG'Uպz/ =/09%ϏĮ 6,vIZ%ť6G[ƒ/ qrE6($w 9?5#*%8Ʉ&)=d z8xaј \vZnjԹ~IOksE}7h%ƪ<+%]$lmfZ.6\8W_qhVIDZ1H?'ӤdWtfg{2&G,'{E 0ϓt)t67UZEpEFi)EwpH|ScN)n7kJZQ55f=Ĉl4vw|,^GGїgkEmi HBjck*gW~EbU v$Rv$l?Sy p.2\L qt;\zNjnmaaaaͦRo%zׂސ(3ѺdY&OY? ?}UUj!>58>7,.&V. )z)eRZ&?CFN UhHmD)4u 2I;R1?NS&,9O s`qL۬7fnr·G|xD]pf/7>U1pKibKRY-Kl#oU²%iȧé:&N29epE-QEr!4RV$ĥ%ϧ΂#e|q츏¾-=lojE:= ʥ4u6?rtrlX EtH3sV}`Ԇ\^/4o>]znWV^PUQ$ԵylƐ4/\ թt:Hd}^34!v O> ^.zL5ot=PUN#O_[t[r܂Iw!̬H eJoyO6X [" G \eC^Kdye?&/}C$^帞mL[~^NHOoޔCwަl\"$'S'V3V\_(8#%/ y˛zHu, > ,Gnq= c7ŏy,<[ѷA%gpqaQfsEyߓ48"K~{qNp^[9|=a{GbCam(.[(,-TQ׆h0: բ. -̩E~B*rgendstream endobj 318 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 328 >> stream xcd`ab`ddds H3a!Skc7s7 ~.ȘW_PYQ`hii`d``ZXX('gT*hdX뗗%i(gd(((%*]&s JKR|SRYt^}י1y#no~\~r]O9V=׋翛}}5۟'Wgq>7<_s.wt3\Xpso/yypendstream endobj 319 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 320 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 470 >> stream xALPFؠHLl腌 ,x=xhFUuRcݺ d2d7={~]r}HaD2(ƃ8 nܐaEU2}z1vB[d"5I3St> stream x\[o\7~#":l!dI<؇d:,+Ԏ%C[lNf`0UCu,ZFoN>6݉\rM'&/9y|7Ym֋֛'7'oT/JeezɭtQ릵.[~B{yzYrx7z2n:tp߈\ZwuZzZoaӿ> ht߾m2n߱u>NOϴDJiɴB mu!=I:.Y~1:CΚ(/eI/Mϭe& ůgZ(=kD5ĶV խt!5֖o0֊,4LiHRu1S32lf4֚ٗAFDfi3RVLg'tЇ&f'k70i&'q Iml΅)3"gR"E]پ95a%~6;PנdcsoyRKGH)Xjh2Hھ_2كKA-Yih%U}鑨MMtwj ګL߁'e8!BYB{.]:{P֊1gt?}KP}Ƣkg[$ΝwmCAA%- ݖ`4R6YXT[ps2 $QZx؉$:z\8S󡊻2Wu oG|'GJP/Р\l\9)SĺX^Tg9+ca98gգ}*cRs6z֤2nxuӤ_vD r?ɹoxeJX/I~{4I[FV.,r p=[owC2jn{rr6n0.cU"E>EÞeIy뮌t([14#|$`Y3^]#a]~bF?}n#GwDYUSI| ETTX' 8 7X ųA z2-ȹ:u3]7k{1ܞ\yͅ#2d^ ^鶬*ȦhbU4H塵U+czJT{{B=2QLsJPCɟOI߼<~2:b=, 񤃞G4>i 1rI)Wzg6ڰ9qZ([ AYg'=qX< X#x70u8h5f*C!=pD$d(鱣.-vtDpHU>aѾ  Q`LAƹdG+1EXYr0DqS ^I!g[QP߸dS#>(RH$D ~[(fEc{ G%b}/C\c3Xg6&JJ/se|])`Fjyak0{ ]WE.qpB0P&Ųe:#H8=Bh4I[Ք56I``HXi1DiBp\XPb};(pdrHH\%OvNv43 &?cUY%B֭ԺȬ/PlY I֞U$}ʪqrU3Tt+C%2Ajaw,vEȞ)PLX[P7VG]` b$٭J ׅMEL&gFD֖;AGv;Z f-y8 g+BgGȈ QG?|@o 4/+Zɡ!s!gY>x[B=J( !3AZKy+\%A0el|%Qburd9;YꔂÚ2>867# f{}y}{ys}l͗˻ۛ!T5 ?r3h~hd}P2qqFh+xʗ7/_ e w7O:n^ܟ_ޕ3tFPlŬ )בw^ zFX{5JJ}VW;5uQ 7keM` @l jJӁ{=A )e*^q\6|E 'ti@Q4)MOG +􁌊r^ E?US؇]Q}@CUð1 U4JXXWàm>US(h }:B ȿ@|J1PN࢟JH](ݑT'od0K"_?WY6|vzCwBn(qe$У|wukqy)d_.[!/$0Y>hYڱ{p#EZZ;/K4x`,;ROJ^b!%UWl/WԵ+q|0vei;T-@$r3\֒9stX0<,(*RnKid?HS:ſEJLRHYԀ`Vimyq3XJ;gݻ)>׸24q\O~8~9YŻ9jGY@Ueg..̸Qg<Z8 n˄&q={܀뎌w0i{!懗g{D.ի(dzi:?]MΦ{[1l:u9tPzD*ojTz-r8z}zz>V!dEck֚>hk(5XWpsl>Jv#&Lʺ 0(zS`{(k ||}=eqR] ~Et2%}& C㾣N8!KAr":trC'( _%꘢jhU NJߋrBﳉ^kv*qhm ά1_pYk/T_Q*~|{{K.܋fo( NZwjQ_uu۵E5Z=6.JSCޥxT~ NנSnuK~w8?v6lyyIh |iԺ<{G; ܓ,?ŗHuߑ"Yhv/.dx6gy1thڎ`61J@>Rc#{pJqCRE*ȵ|ZzƱKw-8st|*~gv# ύ,˴tU%'4MA=Cez4Ƭx7w[eh*f2|J@ 1gw#f/zl?;n >Sz|b3?cR||haxy]MYhw?|4XtbưγS:sEO3TF&Z^!$3-Jt HL܌_r +IX_" N"EԞ&HP֤?m=r3!*ѷP* z((k_~%M93r3&WiLtd*$69e**X3]C\"!+Colx1\&x"FMS҉FDZd#}kIi/U>站byYo/Ja9;q9<>/ze:E]'YT_݁\ən;ȿQI1?v^ D//+$iLjAGNOȹ(1%Kg^WedU9yǯ?b=+ nHzKtr͝Bw1DL~4rdIrh3 ;6?]Q4%-2Z1Aζ̧Qgx; ꓌_\"=ujd8 ~wr/͍ϺV  ?01>=nũF¦Z LxE -'_j1 (>lGrV3E.>.]T\r1T&tTDPng+jۀğONɓendstream endobj 322 0 obj << /Type /XRef /Length 242 /Filter /FlateDecode /DecodeParms << /Columns 5 /Predictor 12 >> /W [ 1 3 1 ] /Info 3 0 R /Root 2 0 R /Size 323 /ID [<96c52dacd9c67ff8bf621d6f5fecd8a3><39c1e937f7ac6966817ed0464218423c>] >> stream xcb&F~0 $8JP? B^4Q=ZLQ*AB DʚH`)3DrHJ ɨ b33H RDŃU HFfɔ"Y l{"=Ah Xl0|DU\٨ V,lkɽl "喁MR'*kkWH`Y#XW5͡`5`m d;O܊,_ endstream endobj startxref 202430 %%EOF strucchange/inst/doc/strucchange-intro.Rnw0000644000175400001440000012166312233570617020643 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.R0000644000175400001440000001255712233570617020277 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/0000755000175400001440000000000012220001265015661 5ustar zeileisusersstrucchange/tests/Examples/strucchange-Ex.Rout.save0000644000175400001440000021275312232711605022374 0ustar zeileisusers R version 3.0.1 (2013-05-16) -- "Good Sport" Copyright (C) 2013 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 object is 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.9298, 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 RSS 3.682680e-02 1.915789e-02 1.521998e-02 1.300657e-02 1.052593e-02 BIC -6.974416e+02 -7.296334e+02 -7.025485e+02 -6.652504e+02 -6.355766e+02 m 5 RSS 9.198182e-03 BIC -5.951538e+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 RSS 1.1087756 0.8756063 0.6854095 0.6587436 0.6279026 BIC -460.8401553 -497.4625451 -535.8459249 -533.1857089 -532.1789212 m 5 6 7 8 RSS 0.6018729 0.5917348 0.5933721 0.6084319 BIC -530.0500553 -522.8509509 -511.7016920 -496.0924207 > ## 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 RSS 3831.680 3059.473 2863.003 2722.783 2670.544 2633.841 2625.697 2625.597 BIC 1168.720 1134.305 1131.627 1132.180 1138.903 1146.731 1156.709 1167.298 m 8 RSS 2645.033 BIC 1179.369 > ## 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.03067807 0.02671859 0.01837817 0.01785840 BIC -162.34174380 -156.80265333 -160.70385201 -150.78479201 > > ## 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 RSS 3.408620e-02 1.690204e-02 1.062031e-02 7.834590e-03 5.183220e-03 BIC -1.507502e+02 -1.603642e+02 -1.605064e+02 -1.542308e+02 -1.523113e+02 m 5 RSS 3.388099e-03 BIC -1.508732e+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.9219 644.9955 455.9502 445.1819 444.8797 449.6395 BIC 555.7445 499.7952 473.3381 480.1458 489.3454 499.7110 > > ## 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 2835156.750 1597457.194 1552923.616 1538096.513 1507888.476 1659993.500 BIC 1318.242 1270.084 1276.467 1284.718 1291.944 1310.765 > 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 2835156.750 1597457.194 1552923.616 1538096.513 1507888.476 1659993.500 BIC 1318.242 1270.084 1276.467 1284.718 1291.944 1310.765 > > ## 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 RSS 0.3297082 0.2967377 0.2675731 0.2438039 0.2395281 BIC -602.8610528 -601.0539119 -598.9041553 -594.8774283 -577.2904615 m 5 6 7 8 RSS 0.2317149 0.2258093 0.2243860 0.2231045 BIC -562.4879701 -546.3631592 -526.7295255 -506.9886310 > 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.3749, p-value = 0.05411 > > ## ordinal maxLM test (with few replications only > ## to save time) > maxLMo <- ordL2BB(scus, nrep = 2000) > plot(scus, functional = maxLMo) > sctest(scus, functional = maxLMo) M-fluctuation test data: scus f(efp) = 9.0937, p-value = 0.03047 > > ## ordinal weighted double maximum test > WDM <- ordwmax(scus) Loading required package: mvtnorm > plot(scus, functional = WDM) > sctest(scus, functional = WDM) M-fluctuation test data: scus f(efp) = 3.001, p-value = 0.01458 > > > > cleanEx() detaching 'package:mvtnorm' > 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 RSS 5.585766e-02 5.431308e-02 5.325480e-02 5.220120e-02 5.170801e-02 BIC -4.221198e+03 -4.219994e+03 -4.213353e+03 -4.206911e+03 -4.193650e+03 m 5 RSS 5.157302e-02 BIC -4.175918e+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.9337, 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.2517, 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.2579, 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 2835156.750 1597457.194 1552923.616 1538096.513 1507888.476 1659993.500 BIC 1318.242 1270.084 1276.467 1284.718 1291.944 1310.765 > 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.8103, 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.8103, 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) > > > > ### *