lmtest/0000755000175400001440000000000012270261150011751 5ustar zeileisuserslmtest/inst/0000755000175400001440000000000012270260476012740 5ustar zeileisuserslmtest/inst/CITATION0000644000175400001440000000126312220001273014056 0ustar zeileisuserscitHeader("To cite lmtest in publications use:") citEntry(entry="Article", title = "Diagnostic Checking in Regression Relationships", author = personList(as.person("Achim Zeileis"), as.person("Torsten Hothorn")), journal = "R News", year = "2002", volume = "2", number = "3", pages = "7--10", url = "http://CRAN.R-project.org/doc/Rnews/", textVersion = paste("Achim Zeileis, Torsten Hothorn (2002).", "Diagnostic Checking in Regression Relationships.", "R News 2(3), 7-10.", "URL http://CRAN.R-project.org/doc/Rnews/") ) lmtest/inst/doc/0000755000175400001440000000000012270260476013505 5ustar zeileisuserslmtest/inst/doc/lmtest-intro.Rnw0000644000175400001440000002736512270260476016653 0ustar zeileisusers\documentclass[a4paper]{article} \usepackage{a4wide,graphicx,color} \usepackage[authoryear,round,longnamesfirst]{natbib} \usepackage{hyperref} \definecolor{Red}{rgb}{0.7,0,0} \definecolor{Blue}{rgb}{0,0,0.8} \begin{document} \SweaveOpts{engine=R,eps=FALSE} %\VignetteIndexEntry{Diagnostic Checking in Regression Relationships} %\VignetteDepends{lmtest, strucchange} %\VignetteKeywords{diagnostic checking, structural change, autocorrelation, heteroskedasticity} %\VignettePackage{lmtest} <>= library(lmtest) options(SweaveHooks=list(twofig=function() {par(mfrow=c(1,2))}, twofig2=function() {par(mfrow=c(2,1))}, onefig=function() {par(mfrow=c(1,1))})) @ \title{Diagnostic Checking in Regression Relationships} \author{\hfill Achim Zeileis$^\dag$ \hfill Torsten Hothorn$^\ddag$ \hfill \hfill \\ \dag {\it \small Institut f\"ur Statistik \& Wahrscheinlichkeitstheorie, Technische Universit\"at Wien, Austria}\\ \ddag {\it \small Institut f\"ur Medizininformatik, Biometrie und Epidemiologie, Universit\"at Erlangen-N\"urnberg, Germany} } \date{} \maketitle \section{Introduction} The classical linear regression model \begin{equation} \label{eq:model} y_i \quad = \quad x_i^\top \beta + u_i \qquad (i = 1, \dots, n) \end{equation} is still one of the most popular tools for data analysis despite (or due to) its simple structure. Although it is appropriate in many situations, there are many pitfalls that might affect the quality of conclusions drawn from fitted models or might even lead to uninterpretable results. Some of these pitfalls that are considered especially important in applied econometrics are heteroskedasticity or serial correlation of the error terms, structural changes in the regression coefficients, nonlinearities, functional misspecification or omitted variables. Therefore, a rich variety of diagnostic tests for these situations have been developed in the econometrics community, a collection of which has been implemented in the packages \texttt{lmtest} and \texttt{strucchange} covering the problems mentioned above. These diagnostic tests are not only useful in econometrics but also in many other fields where linear regression is used, which we will demonstrate with an application from biostatistics. As \cite{lmtest:Breiman:2001} argues it is important to assess the goodness-of-fit of data models, in particular not only using omnibus tests but tests designed for a certain direction of the alternative. These diagnostic checks do not have to be seen as pure significance procedures but also as an explorative tool to extract information about the structure of the data, especially in connection with residual plots or other diagnostic plots. As \cite{lmtest:Brown+Durbin+Evans:1975} argue for the recursive CUSUM test, these procedures can ``be regarded as yardsticks for the interpretation of data rather than leading to hard and fast decisions.'' Moreover, we will always be able to reject the null-hypothesis provided we have enough data at hand. The question is not whether the model is wrong (it always is!) but if the irregularities are serious. The package \texttt{strucchange} implements a variety of procedures related to structural change of the regression coefficients and was already introduced in \textsf{R} news by \cite{lmtest:Zeileis:2001} and described in more detail in \cite{lmtest:Zeileis+Leisch+Hornik:2002}. Therefore, we will focus on the package \texttt{lmtest} in the following. Most of the tests and the datasets contained in the package are taken from the book of \cite{lmtest:Kraemer+Sonnberger:1986}, which originally inspired us to write the package. Compared to the book, we implemented later versions of some tests and modern flexible interfaces for the procedures. Most of the tests are based on the OLS residuals of a linear model, which is specified by a formula argument. Instead of a formula a fitted model of class \verb/"lm"/ can also be supplied, which should work if the data are either contained in the object or still present in the workspace---however this is not encouraged. The full references for the tests can be found on the help pages of the respective function. We present applications of the tests contained in \texttt{lmtest} to two different data sets: the first is a macroeconomic time series from the U.S. analysed by \cite{lmtest:Stock+Watson:1996} and the second is data from a study on measurments of fetal mandible length discussed by \cite{lmtest:Royston+Altman:1994}. \section{U.S. macroeconomic data} \label{sec:macro} \cite{lmtest:Stock+Watson:1996} investigate the stability of 76 monthly macroeconomic time series from 1959 to 1993, of which we choose the department of commerce commodity price index time series \texttt{jocci} to illustrate the tests for heteroskedasticity and serial correlation. The data is treated with the same methodology as all other series considered by \cite{lmtest:Stock+Watson:1996}: they were transformed suitably (here by log first differences) and then an AR(6) model was fitted and analysed. The transformed series is denoted \texttt{dy} and is depicted together with a residual plot of the AR(6) model in Figure~\ref{macro-jocci}. \setkeys{Gin}{width=0.8\textwidth} \begin{figure}[htbp] \begin{center} <>= data(jocci) plot(jocci[,"dy"], ylab = "jocci (log first differences)") ar6.model <- dy ~ dy1 + dy2 + dy3 + dy4 + dy5 +dy6 jocci.fm <- lm(ar6.model, data = jocci) plot(time(jocci), residuals(jocci.fm), xlab = "Time", ylab = "AR(6) residuals") @ \caption{\label{macro-jocci} The jocci series and AR(6) residual plot} \end{center} \end{figure} Not surprisingly, an autoregressive model is necessary as the series itself contains serial correlation, which can be shown by the Durbin-Watson test <>= data(jocci) dwtest(dy ~ 1, data = jocci) @ or the Breusch-Godfrey test which also leads to a highly significant result. In the AR(6) model given by <>= ar6.model <- dy ~ dy1 + dy2 + dy3 + dy4 + dy5 +dy6 @ where the variables on the right hand side denote the lagged variables, there is no remaining serial correlation in the residuals: <>= bgtest(ar6.model, data = jocci) @ The Durbin-Watson test is biased in dynamic models and should therefore not be applied. The residual plot suggests that the variance of the error component increases over time, which is emphasized by all three tests for heteroskedasticity implemented in \texttt{lmtest}: the Breusch-Pagan test fits a linear regression model to the residuals and rejects if too much of the variance is explained by the auxiliary explanatory variables, which are here the squared lagged values: <>= var.model <- ~ I(dy1^2) + I(dy2^2) + I(dy3^2) + I(dy4^2) + I(dy5^2) + I(dy6^2) bptest(ar6.model, var.model, data = jocci) @ The Goldfeld-Quandt test \verb/gqtest()/ and the Harrison-McCabe test \verb/hmctest()/ also give highly significant $p$ values. Whereas the Breusch-Pagan test and the Harrison-McCabe test do not assume a particular timing of the change of variance, the Goldfeld-Quandt test suffers from the same problem as the Chow test for a change of the regression coefficients: the breakpoint has to be known in advance. By default it is taken to be after 50\% of the observations, which leads to a significant result for the present series. \section{The mandible data} \label{sec:mandible} \cite{lmtest:Royston+Altman:1994} discuss a linear regression model for data taken from a study of fetal mandible length by \cite{lmtest:Chitty+Campbell+Altman:1993}. The data comprises measurements of mandible \texttt{length} (in mm) and gestational \texttt{age} (in weeks) in 158 fetuses. The data (after log transformation) is depicted in Figure~\ref{mandible-data} together with the fitted values of a linear model \verb/length ~ age/ and a quadratic model \verb/length ~ age + I(age^2)/. %% just to remember: the Royston & Altman model is %% fm.ra <- lm(log(length) ~ I(1/age), data = mandible) \setkeys{Gin}{width=0.6\textwidth} \begin{figure}[htbp] \begin{center} <>= data(Mandible) mandible <- log(Mandible) attach(mandible) plot(mandible) fm <- lm(length ~ age) fm2 <- lm(length ~ age + I(age^2)) lines(age, fitted(fm), col = 2) lines(age, fitted(fm2), col = 4) @ \caption{\label{mandible-data} The mandible data} \end{center} \end{figure} Although by merely visually inspecting the raw data or the residual plots in Figure~\ref{mandible-res} a quadratic model seems to be more appropriate, we will first fit a linear model for illustrating some tests for nonlinearity and misspecified functional form. \setkeys{Gin}{width=0.8\textwidth} \begin{figure}[htbp] \begin{center} <>= plot(age, residuals(fm), ylab = "residuals (linear model)") plot(age, residuals(fm2), ylab = "residuals (quadratic model)") detach(mandible) @ \caption{\label{mandible-res} Residual plots for mandible models} \end{center} \end{figure} The suitable tests in \texttt{lmtest} are the Harvey-Collier test, which is essentially a $t$ test of the recursive residuals (standardized one step prediction errors), and the Rainbow test. Both try to detect nonlinearities when the data is ordered with respect to a specific variable. <>= data(Mandible) mandible <- log(Mandible) harvtest(length ~ age, order.by = ~ age, data = mandible) raintest(length ~ age, order.by = ~ age, data = mandible) @ Both lead to highly significant results, suggesting that the model is not linear in \texttt{age}. Another appropriate procedure is the RESET test, which tests whether some auxiliary variables improve the fit significantly. By default the second and third powers of the fitted values are chosen: <>= resettest(length ~ age, data = mandible) @ In our situation it would also be natural to consider powers of the regressor \texttt{age} as auxiliary variables <>= resettest(length ~ age, power = 2, type = "regressor", data = mandible) @ which also gives a highly significant $p$ value (higher powers do not have a significant influence). These results correspond to the better fit of the quadratic model which can both be seen in Figure~\ref{mandible-data} and \ref{mandible-res}. Although its residual plot does not look too suspicious several tests are able to reveal irregularities in this model as well. The Breusch-Pagan tests gives a $p$ value of \Sexpr{round(bptest(length ~ age + I(age^2), data = mandible)$p.value, digits = 3)} and the Rainbow test gives <>= raintest(length ~ age + I(age^2), order.by = ~ age, data = mandible) @ <>= if(require(strucchange)) { supF.pval <- round(sctest(length ~ age + I(age^2), data = mandible, to = 0.9, type = "supF")$p.value, digits = 3) } else { # warning("`strucchange' not available: p value set to NA") supF.pval <- NA } @ and finally an sup$F$ test from the \texttt{strucchange} package would also reject the null hypothesis of stability at 10\% level ($p = \Sexpr{supF.pval}$) in favour of a breakpoint after about 90\% of the observations. All three tests probably reflect that there is more variability in the edges (especially the right one) than in the middle which the model does not describe sufficiently. \section{Conclusions} \label{sec:conclusions} We illustrated the usefulness of a collection of diagnostic tests for various situations of deviations from the assumptions of the classical linear regression model. We chose two fairly simple data sets---an econometric and a biometric application---to demonstrate how the tests work, but they are also particularly helpful to detect irregularities in regressions with a larger number of regressors. \bibliography{lmtest} \bibliographystyle{abbrvnat} \end{document} lmtest/inst/doc/lmtest-intro.pdf0000644000175400001440000023625312270260500016640 0ustar zeileisusers%PDF-1.5 % 1 0 obj << /Type /ObjStm /Length 4149 /Filter /FlateDecode /N 90 /First 743 >> stream x[Ys8~_rvısmHYYHr__CJ- FZ 0L2krr-_x&%J|1VXFlIo0BNRΔ672t7S>`&4aZǔe/`: Ki^δX`F)<2KX53>`Lnp2+=cF`<ꁧb%*8,@kP*FyfA:5,0 8dˁ ,br[F9  rXCjj` 2 "a^); ? +-s q>v9&“K/.qGWj9^7+gbr53QV_,Тe 8{i5eW`fޗ2DPxt*/ JPT||*f/OI9?m%Ff`;u5Ίv1OG+"pN$@b!_|Zo5Цr\0?-jA\-/nS)MbP ]*^6-ئilz&lS%5nPәofE!:@E$)QtQ|PQevx1/3>\K\2.ċ> ]7%DV4TyCD\귉w1oU&{'JO"w$ MB"!"SQ5Pڴg\|1QNk#SgfYP p:<&oF1'߾_E |^8gV RfI~N<@:8)2IYNxipSo?) aW 0NX}fp$ ;)9A߻L4%k 2*+)$Z NU Y;!)A AHH=J9hDPJL# WW20'!LZoMC ¢ޤfSay(\43)d N:@8)X)dRL#Rgy'wgvr)͆הAgK% z4Efyz\'l-X~e,b<~al97ba?#>WS>s~|W(DH*Attmu:4a9-4&(}:.:\xovQ .K)RY;m4`ॵ~O,=>:N틅fڴ7<D7Fx#!5H{fq /MS,Rw-{1F (=U!||PP4T(d&xvp|;4"TF`b`0L X!-nLFŢLO[:)mg="6.D'w0*(M.oіm)]3"=Ft,.NFE IyaԙF]g3__JPDkaezחӣgOI_M%--?̄P8w>#|TܒqK4jm,ݓB-`2kۄXqz `,=q:6Vȼ5O߾}smv?!?O9lKnpt}S,لϯG|'e("zɫ?oY,O\h>lz`)D[*Ec0h[I?s z1&f넱tsCeZpJ,rF( cD+rKQDxvGWcFWr#* chGd""K"9b8rw1]||VpHk9TZ_}ۖV-z.+u$bEC~ܓGƈ@4 6 g'h=Ȁ*[ͭ@F W Be-ʼn!ktL)E=p$ _ߡ~HWOX]aL4bD,ႏU F}I}6 =EfW)/>kRI/y&%my>bVBa+7>-.VAiVLo|U ꋣNz~Y|DS }yY y$o Ԛ6mjbƍ xyrضgT Cm՟g 8_f؜HUC6,F;v$ZCX*)!7R Op^S3y-nq$zY`cGeb|3`5/ʯǵDؽ]6-&b$u.hv7MrF2W6lxM;DkjUA65FE6IJL7oN({xѲomj^mKwַ~63>1 o8_! އZ 0)$ )c!q):.e9.^I%ZGA1œ-1ΔOrx%3)\fk@D4驥Tu!F;Uѧ Iwjߔn?r[v30tsҙmZz6ɭ]t0_g@}G yM4:ֻVmôT$[Pj#ԡnaݶTZ)۱5Skc=k> d\3""33w 2\?'MG89ՌU]"O5<'<gߋ2jɦ=ŒmK?!@=?f/!EBPJ#Bns@dyW'GOJas &qxRa8PU7)u~8Q=DE4 ycvqEWM|* }*v~Kѯ7"\,]0aKk_hg:=ml_것Vʥnx:Z"!Ԗ";TSE}B]gyrBk#砼(ȉe.iU!s- QfsqOϔe9[qSyxL*ΪlVlt>Hҫ;; ' Qd;N]C@;(foK9ĩendstream endobj 92 0 obj << /Subtype /XML /Type /Metadata /Length 1337 >> stream 2014-01-23T19:36:46+01:00 2014-01-23T19:36:46+01:00 David M. Jones CMR17 endstream endobj 93 0 obj << /Filter /FlateDecode /Length 8470 >> stream x]Yu~;kرp53Υ9$%KI#0dzk9u,UgޜM~-g7G~dg_~Z8x#Ԝng1Gw%vߞ_LPJNyw~J݈wL:;R;b>OJM awy~&SoE'6M"N>~}4jwLa!::eCspN-WU26f >$ɚi^#>va2M*ND읏}.pDl4f*x4=lsX-d\]pD-|B^f}]gҾDc3_[|KtMymm쳃WyibLD/`%Nikءդqm~udO.0>3?ŭL~Κ{ tX';WqZ8pY[F^&ͬL'G70?=޼w0'O'WO4kqIPru{zWlV929EPy}6eTQ:."[ ' >ޠK\[oF5l1>GV WMbazA ΀,TGP+q}U>[#n#}v'Jb{;$< ?xȦgm,L=]fw|QptK}DŽȫw2z.{ŌwP.v ^"'t'2V,Bъ0Ϡ8hL a6c=B#T$,0KW  2g;fK& x`M9HAyJfb箍*2bFpTY8ꂴps qLJH cK$=s*sv]Q#^s4+\6+8>J0/4ޘI n{* hV;KrhpGcY0|u MtjCR.6" ŝMΥו~jB Ð&,ҀJ ]֖̃@av_ώҊcWA|02bԀ!FL[H5_͝HlrI5`nUQLꊲ&fҗ*h,FqպSH^0Ѥ!H{ o]JJ((+Io7aȂ>EY`\畬s UŔŢ6uG Mć+* F[6@n"+>!4۫Nl-:FJb?AHi ʣ`*iD*hþ8/nW0dHWd=#FL9mR/5T,0} di"Z;#oa؄rC0ioD1zh1ho3ݢ{^7 K$̛HR0 HGEr Xmc5RRwnl-ӪQqsd P #Ix\-&]̔6Z8扑/$nEsx48_7uNQ#SͧKi{'&;!m憎,0ALOƙAo Z+#BoCyRN쭂,Bw +c@Hc>ڔO:ҞT4'& ,kC6!PlOg;XBS`udFm0jV{%Z BF-].V4??cnp,O> aHLi\_:l>iCkVv`OS7, _w,GN.k8Mgyxs}_jbc ;@!0VC]gՄtqPשqY܊;=X,jhÞkB y`4rR&>s%f+| :΀ЛY#fUUd:&|9K(=]{ו |scl(6ʖsxٞ^˕ОӍXZNjo.*W*gޱɔmN1VDy36]({[_ia^W}ll{,,fa~&`(d*{ S襙.dueWGu6YM n=*^\r|ocl]ވʭ'n Mh0W?IB2#N&BDXYǎLbal-e[d:tpl#rPR>KbΩ*hʛQ!M}\䬲F'ɭP$9 E(x RN &ve'n0W C wQPτ,w3"B]v&NcqRݗRqwq Κf] aѹ-)O,FSVAaK/3R0S%xXAXd9.tl8Cu8梳6ҽ$||ObZsr.}tk }3YW'%fu=%.!4Y3n bb; U  yxȠVFDwǷYնN>1t-MX qcS]gWgKq3Gu1]/Z~S(RآFKba`MIS5::J{US^wJPSw՞BX:ߝx-UȌ.sm\Q2FdԄ]jz[[e7)?yǽ(Ԥ"H|Ω(R}cXG=DbUԕJ9weq(E/Y !@>~'=:=7G9,mw5(Z~Ǜu[9KouI?SqX0vÐH _r, wJ>Wx^?"e52ǯs(2Ba.ReBf(5y[PħjeJr$Λ3R_Wi~߽;VOYĕnV6r xohoA Ѹ>Vx뉐`6+=0CctQP):~n[lW:^rЇ8r-iy.Nm8 GKs@:8\HD1 n5i/keC$0"Lk5%2eԁ|&:0] P/FrDf1nQ%=BH1~=9(+2G{L1bI0b"- Lwv?.Ƃ#xtHT#&'~A%q5LFquP7t BDaQ Qҩ:ѡz>&N|Zh1b,Phs+$ ZɤIW[V^) OCDyz2空3Z ZK5K%xxY -Avv+eEB7cb5qAU{qe^{%Ch;Wf slcnF5E߉0dXrhb"l @7TT{L YVO>:=yɔO:]T긜*w^= =Qץ)M#@R_ʌyỳBH͛Em+5ݾڬPG+M_xʈY-g8CV&ms`)Յpiqj=):h6ΙDļ=:t4C%I.SܘTDȼ<78=4HϊqREEO]swKOo~g*uӔ8˃#=F R0dN!'aV܃ -`&;P ۓt'Oɮ`~:6ue[ɼxY1ui*;s0:(_+||P%V<*OzNc0mňD ƙ=VWN~-9 o&^Rc"bh}}8/Lm%UۥqV-ef?*Da+WsOv7b#7%ܦ~;se._t[R+7,rU'% -!fq]{3e30"ЉRwrTS25lpH\Eu65rS L5jh*,JYxddv!iPLF>i@4+܄u%FO]N(N4NnM~߲:C1cyLFvXȔ@?@ԑrh\lt|>QoK ʺz\4*3B<IЁU|yʽ]4ɦE+x (v#X }~-#VXvunsUspյ:]jѵm#SZgryCx=.adRlYJ fG4eȀ@c?jĵ8~3~\ٲTGNs z!;H ykG"7W xo+P}ae1dlZI "?;B@ _JΙOGީ2u; FJ͉-6Hƿ_/Jc/yr=`Ĕx)h kݗAǬ}i>h.2guY3皑}c؅ f㌁(v(c&X,uxXS]3Y84bp./bеty@i욂dDZX#0q'p(t%:7E]rl6'(cmp؈=A/kkۼn eiF\;Mh C(L^kU/o,%_pYSPތ* Aj} WIߛ"_zҀRJyU*z֍4߫4|c\Bɰ?\._BH֚8ܸMY[]R[ȫ[ O%a1É~Fa e^ Ҡ >m`cZ R&V&R{"7nߍ[9zom ~OR0?)ICZh4yKCbX/pLս.2]xJ@n\x͍]9]O:SϹ;q}"?wx966-ڲ38`޷y?.+Su]uK9K>9-Zǧ/{ʬ ׏2^Sn!~`'tIRIʫ]yi3rBXHAc}:)؉;{㥉9[0O| e2T תP!^!IocɽC55ge.D4*-F)J)9cA0jV>q:6*Ai쓫3o8]8ßiH}!CQ\ e_,7=| W۹`j,9 FA?5g}Mxj|HdIz9{endstream endobj 94 0 obj << /Filter /FlateDecode /Length 9508 >> stream x}[Ǒ;?bؚu(؍X;"z0č-@/O6R BOd}ysW߽ݽyϼz7yDw>]c*gxu%=쏗p}H|{o^z̾\?Ěg9Q](:C<8_ΗW޳O#V|x_^}+XC`\^jS5wSG>wB<ϟgʧ\mgPqrU|c+6 SC:zʵ/rm`փR`-^}/up{O 0&~07oxp';5X \j(D)IE%.߰@@ݎszT vǹ҂Yun8Qcѧrk[OK-R ;t&Zw,Z{ksi G[iw/"J!/<1؈y{7,}]W΅B)ssO/!nwKij??$ׯ5;kk1sGچy};SI)o嵆|vZeifO"˵y,^/j04 HiɋM(:\+q׏i_\NF$ve8`;}go&䓾ܢuGS;L<'߉xؿYsv19+aں^O=[ {Api"t&̞&!tk -\ˆpK𸞳f.|4ϛ:xlnlfn`]ܽ`Pg)}̔/|4IK߄ZS٧&V,2Q{<] ݋_[\nHZ w(ݽGd!q[)s~孍ͳ?}xFטЕߢ{g.骽'%_k$}b7L]NJsc.D+p*xWVJnRy;)ꥫ5+Xŀk'm+3dH %-9fϾ # acYRfP*7` !˜pQS1zvK50DZ&k.3.dA[E)hFd`^2Kڵ;ޖp] ꕁ)!\+NfЭfそJi$S8.~_ \i5iλ"ggD'.(_npZ댋Ɖb$}?2tݰ kӾAN3k=*{9@ae[2Nvbx6(+8 V[6W@龿)x ߩ/y@@JmiHEsrՀ$c ˘-G@GV6ƮM  13Fby;2zP$ܪ/e6Q/ t(p(` *SBhg6՛ieB (PD(SK%Z+I y;P۬i;D .PHw3eUYچ H3@!=; [QPDG1Y:y u p椔=I)MŹpN(\ZsQԤLզoq!sK]]ӎ1BJZ )-frPJWۀRмo i^5G@8p0 *P )Հ9b E^ oFx O)5ӉPe3⬄&8K3D ViLESQX@yԦ,V #jBQ&Ӱyp*h9gv*ЩE\$@28(Mm6r&`B |"`>eQY52(TvR "eo@bCamSz@, 5+Pz|@*RFS(-R!H(QB9.Mdb MM  IUN0D=@5aژ+U)I(RKń"H9' ?k]Dq'5TL==Ɣ!LgzZqP"y`0)z~t&0X+C=YQMJ/A;-KZF^S xqE9jtna)B# gQa@uE缊w2=8j"`)`ny`J)-hfq-^`TD^HE"n#'7@K"Bo?""FNT 2M%hi8.݉j( ֆ hɥ:~KǩצRqiz1j#@JAAqqȆ|z)FQK1QܸQ DCiq$|֚aE)Z3@ZEwa$(~0JQ#Î?0y6@c+nTHܧ'CϚ6L۪͸BM_e2X2])] (?PJ0L4#)z$kbִT9> Ad:`FU ECY0謨L#qu9Jb5TP׈}Jk:` UK,@R!W!J)RH#2 \ؗ ҙIj+k,pTSRt탒1M> S1Ѷ_`TRR M`M$%{Ӕ<ΘiIIfEsph@%XɮTCr̋!i~J:wj18Y)U 8tIQ+j (>kP3Ӭ^|dq(1}yO~Ȟv9+RQ HW\KAWoJZ"Ahj>8LtʡW@i-4w7xDHyE4繎2]CYpT*1zx"Wps*ཪHPf\CO[w%!ʓ 6wЉA("кn$, -`36%0u\z|aSDW+iIG4nbP̅,y8x]K1d3)6 obʳLI^2},@3F` u0.) /1 - a%w5 @ C4FՖE-}a(2HW^.|N^5RjJaPaDI) B2 ii,e$3}j,4x (L )d1мf;Vc'ϩT@T%9 X]b!hjrZ FKe%&hM83iid=r]IBrKiv=W_]Qp]I TS 60vESQ5 J2ӲzSN)a 5J?t(5dnت0,G-j%)3(Y"OPpJËWtڃE_](?=س5^]ݭ#G*m+FIà}.LVVjN-HLVTjeS2TjLBJԁ;3R?X"CKnnp!BB⯪񻓶 9΀.v_WMU3![+5!OPyVqЮlmm/#1?>-wL=g :=qO.^B$彭'1[1gŒ3cd}xmV}t{5$ lX2)ͪ g{O]-!Al}\1H>u -[åsR :E Zpdji+g"+9Ccbne)h#'p9f1WZ.9gRG,ծ Dl>б<l%j !7brfI걫8(J:(jr(/53?:kČOb5ŚvE`пo8[cBLыufpl)|uْ\{Q4G}4-m)[m-šW@Y3t(M%*ߪH-(7:T7dnALP]o'B[̹{`v=CwS4Iq bNԮ;13nUn%(^r X>9rh2 ڪsӥ)\ַߎ8#$j+7VuQF',fZ<}8=nA؁Kfs?BdNpOGv [j6w?4{63f$ >eMҌV~n0m8(pri,6nBNx7 K6mM8wuK &QsHzfӬ|}f/Jȯ֛U.p9L©o2iKoٟzFe#gn@`dO+nגtժÑ먆:W+90o,PIP'ч3E;\Oj ; 5k.D'M;S˭:,G53rYKLA`' $sIňm[6ѡ'YJkkc9"g8{]1{χhu?d/`}mGB Wf)u׻RR4Z(RHԠJɇeWju*5l{׵N6ܸHmMk*+/nM&c=&'<_&zx[z"S燹R9?d˻>}O{=s{ 0Q׾tzַ38o1rR‚(ԷzgmU#cȟ;VQ[֭MEO9EgPCTnhjt7)?9i<~X @7SOʬ֥$ԥX{[ǣJ:=fc^qT|Hz`kmeP-W ~z?ѸȢRJiqzr9"*֦Cɸ *;Lfga>`R+#\&η))g_D29nXʨ^"S1_\3t>wb9IALb]y;~_ON:}'=A׏ew8 yݽq8/x\3hӓq|~G3ūԳm~78qa~Z^Ooק_kSsͅ([~}>}m>dm߭~>}Z[sT^F>Ycyic{?Ua?X|]ק>Ͽcxgԫ&̻O`ק;|s(xkn7Ӽ,Ok 1:hno7m>}?h-hlIQǩh֭֨Og۳Zy51F]~{޵QgԱS9OrK ooX\䖻 [N{A{L۱6w⣺0ߋ1ߐiGhfJa8N?Yn&>i aN0~A! 3!_]iw ' TӍE_OQDL.Z_)Zs*$sI#H]CRIgh=s*+<ך; &Z:Us%Զ>~s/ַyhS5MuOrYmݶOZW%zbF9OF[s ^~.;^.ѿ6!#Z \X4G֝8^OO9'7qް|b7M#:{gqӼQoc`ޖ-0g5,FckfTɨm6m/#"n4Q-Q׵7c?%i8B k"#kYx[~n}˚k> stream x][q~ %d1#$;4Ҍ֒FZ~oW,6YfjWX,SX"7uEW&n^7W=<|%=s&=/!C4?R)BMNs*lJu5NFEk!/Dن[ʩa]iiԖ)OE 6笜lmJse"5,MGBm] PGǏT [= ,m\^RSR>ph.?zQ:1UM.S0}/](ڇsd]+[XGohI'}z~seU:G!Jn =ZL<& (S+ar !kE; mav9SvD\J٘"ud=''ٻ/bo.VwʣV_|^x&Ub$FHD\]qE0D9RaI|ۧOY A-$vXB2ޓ̂53nN)ư'*Flqw6(4P0&V}(4:)kC6IԩW&Exe9 59t3)g.ʎ@OS^Gv 4woP[E腶<U|5(DVUGU['2A* $vNˆ)̬PJ f톛 62u&e*P_,d/DozO@ЂI)!owE[ Ęӈ{ɢ?xPet}r']`A2T|{kCJa v4HjaAkkP~DZǰTZay]{zڞފ\뀊 CCIIP8~ٝ9MUTbP]\=:#mFYaQZY|X*b**a?^1CzΎUi(+[X0hL`b rc̤aQn/~jo-,1# GƲ1ǹgXWmBߘN1րu냆WW%&6~O d4ї/11ji ^Gn4]cn r!^+>3"3@޸Y9i7/#ai( jRE_ WȲ1cB4s `>yȀL.ӛtnO/}{iOOӋj{F1n"o'o |B,O_t_kM{:Ov4E/y'h/דLg`& fK'?ȼW/NLr5#OB>tjOvB{)ɩʂW j,viO ]J2Kk@翯+W7u>7m{'=ӕ޳g( ^OdS5 5QO5yZwn.: _(k|,&f {(g"+,$r~W-D& STҾ?1Zs ufb454 v֍Zг ˆǴЀi%WZ%q/U)ihXwZ HW5pPwׯ0woKqAv<90q{C쩏PǴ֒/z);[^My+Px":4u+$E̲\Nh2^BF∀Yejn' D$!dӠ/xt@xCWS1~j5R(_Ez^)K1#"+.&SV '*l|fP LbN7@nxl{Xq@/]4 wC1xjV5K~J-}Kc\=W@9fe ڠWw.IP\Xַh.LFoDYz%x)wvoE%PWto+rv) .k*;&;K,^.?.Fh^𗽉@&uS+}3>6b;>{ǣr YbtzWTh|_d)7aY^&[fͺn!GeּʹIV\{u5ކ?Z ^9C{wh)=$M]݂7aY K-5(b> QŴ~8nvl/\Da\͛GA5/u@ r;.NwZ6mnbR 䲾'#{r@D}+`a2&b_,v!^Ww2D C]Ά>c^(a`M1.,dO:AR/2#c2`|ADlH& 4#WMsTk/y edJX2ں[Bk6qĨڮ&*F+%p(VV|pt"{ɬG\TǝlL $U|3#S:޲; kXVeo7 p[  K]]!OUp.^2&a!Q*5lau䶻I(,`eJ4;77{M>h.}gWPu 쯍;{^qA}F=E'z}(p+r 5a󽕱pP9oe>U`euCLQdʌSpיNsh a"d m+n {(\ÅLJ'yM$Z9;7_Mnھy 돟lO6~큫.fyRE`Mf"'o?.HO -RE.Rw{Z8|yz pznjQo`9 Q}xyȍ۸^4P,t`~~c~0NkM $S}p(2I7W9MX1k7A,)!l;]Z .NF%7^Jpimk;k tXZ]:$=Nga0 JCmƱapE0x wiѢkbTp:lHZ ̀cYe4x%h1Z6j=ؚE đfX2ɗlCde46\zh9J,! 1-̼2)Cǡ9NLY'G9("[ $fn"cήQk҆i7 (~}8PdD._3f’2mĒڌ@ C B h;;=&N]RZQ %;ڰCt~sIpR*j@S>6-3ZԔahkOa;\w03(KY1FVCiuO&ۗb0/&3jk:Ҥ޾ښQMr#9`3iиIv{n;>61s2ѢBe*ZLIEߢA^桵(J!27F%B@y6#?@* ib˲`ݤFP/J?7ė1H |'Zl'h=b?agjasL@h yyu>~4\ʼxݠ?V/_A9pHhq&: C٘JڣxS.ѽFLII6jBqLz;xX@p'@)Z% SagCh.ד*ߡ)Qr8}=rŁNvTnL(.ÞP)Ȕ:%3D!APIÔ@odZjڡ$ZZ(*[yD"E'(p(tB(P#^Z!f 2\;h`v(pg(]"_A:FGqLL %Av I9sJfN(&Q҃ՊVt4D[Q`9QG" m|Bt=Q\q{.˖iyPٹB ꬨw^(C"D l4$J.J&6O)d$ڮF(`cޣ͡Q,S7Awx%ʆ+ҩPrזb0u ,/ʒsBkP.[`NLysxy+-rgGKWO6{Uzu[ݹǐ"?qwG{s|֚L- vmpIt5߀:L&ABr/l;_otݞ)vD-y'\(g-2/bH 'SJKI˴AWϓo/|m9@1.ˈ.HǾ2]E.:߶x=5~ݨA?K+:dU".ΐ$N hJ0*(l8e]뜆r遒oԝ':~+Ojio:d-̤A{Ygq qd~u&$>z(9n.?êTy0rн,X>^LNdZ]S0/!A[t2Օ}tMK3MgxC⎹[C*Vn)7Yi; t/NPhh6Xjbv;&nY8n؜_.ޤ"h̦ 5]Fʴqk01OZj˵bZoo1*vJM7е>*wh,붷5DImӋ֊pfZ%a nZv3pǹn/a+uC^<4 }$ێ6%VC$[ߙrk2iVM+4C7ܦ{޶ |\O j񫸳Pp;:/O-xSB%SG]efVG~p/u!fxIM(Rv }WYI٭V{Q :n`sn&P@Q龜v> Ί~O<ұ@B§\Zޫ"Í2i6X1n)ߣ<_iIDv\豈%6OQFYדV?) 0endstream endobj 96 0 obj << /Filter /FlateDecode /Length 5092 >> stream x\Y~_ 'y _1%Hu hw5Z{wGޑ, ",u6?ab_?m(7=Llg?IuwqfctmΟ7&WznoϾw[1(v~q+v' j2*7𒋣ע v8d1zxEk(>Ht_i_\2A͉h&D&W¹dywfqQYb*pMS08[Q 0HKKS%d99J&N[9 5U],ѾPFW "NdxU.GǭpUu~UnX O1ߵƑOca]i528 l6PO/h AE"2D/dPLp:x~w vq$8l/gI, uS:f8>K\y")Gifd$֑fOI]Jhu> aRA TÞg&?"\?~EÛi=9<h[W)}0^/He@?vۥ(,B j@4WhdA#S'%X1 (>1`>>-"IkBwD&hN4kOx`'Qb *G6?d2;WfI%샲jO~!Ol! p"8` 0tMVFB2$YAeK3\k^;ѸZJN/Jlkc9h#,fD2!ysc?Hp&Z~ho3Q™v$r`tzHo]YE#Pv HЂǞY.sQ1f&Gj^"z$я[s[W W4u*glku3=/sR0布fd'GLlRVR Lkŝ%̀]EYAZWg?6uƏA~dniú dz',| I6ob<+B|H&,PXt-SEd %\Yue 0.*E%N k@=T2!7쨵ٞ_kH g4nz# @crR'jy-F*L홏)v1Z`vC\6p!.0d7H(l9Jy 1@` O]W\{dȅ~5sYvE]ŶӶ^OZ7I[D]ĉ3\9!35hK?$z=&ϯL!MH3OWuz=<,j'T ]nXP=̛22diM$V um91eEoE5sƔ;$R1vt;B8KJ*ˋy>:$\x\2;\Ձ!v5 #*:gOmIeBPK[%e!pUf҆λ':l12S D޾ ?m\Mߒʁ)B}PZN4Rr8D>hmgS(T$boxE [G PV謼>IP6Hi:hThj lRrf>KRs1[t#z;XFe'`TcSMJωi&LF3X- U8*~XOAte򄇕[SVB؆ AߙC42,,ġk7! ޷clK.\ },ş5fW/L$@DUbYgX*iX Y_X!`V0eB1J hu\0 AίBh*k4ґK$Yjh<ꤋ&g$hnk4<NO!c*CaA + }ކf#DdW }MM9`uzv@֫5UVßxTP5t}*?aSh}=ZWJR>m.2=v"_O˜ϠTs9t1??р\QUtVwU2.7Ȏh\Dp( ;& [Zβ1]I D`ـ~ٜltFmJ`}^֧"/ZK$HUleDc``$TN'"ɦC'PՂ!5^ rX`e>H۟.Ȗ>>A1VGf &'J<ڶyUn_5{ٯ#VMf:ȼ܃>C:TlGz,d|%6.-,bB~-N¤]HT+t-  ~o9$[+ łY2˄ʙw<~92m[ef/hmP[Mq pi3uXSGskwlM1ouN2֢>O_%t2= atrU u%OWIUqm{x u0+@& I5ֺ|i<ֿQb9 %CL,VZ|wbbzS]:7vo x\ghdFME~黓Y%+1)QL,.蕚4=GFc';R1yzU^wKIѕ~3 C_ֈ8Ua`LEnT^3؋QчD?`56`ѱJVZe]YllZh'^@e ;>cd}z3U],ѾPFBQFo v@qӮ58R}+\^֦rdfM)N2ti/`9T*b 3Kx<&|J$U杂NCl௷q5F]3_Oo׾N\_hC:yU@\3 &3yX@>#Oe26.9H)R3'T kq} 慞 oyxT󳿟QN2} "і(H_a}_.^у2taT/}?<2ְnuc=raz/޸XxDetb֫卶ժYCIfLΑULIR3>-ٯc=J ɮoLlac_/f9E=:6kҕiꂌzwϗfCYt襢L>y}˜.|`XsCBΕƇicORUf*Mj T5GP'Ml7I?DaAa9w@WU=ށU>.Zcc8' {mЌRj͐ #+5F9n3<gLR: b`TDV- N@1Ϙ2Y/GܙYK *hRnGlXPyы2zPF.^s4eg-H/~.#QF~a<TNx* Xh(d6TX=~?RjJendstream endobj 97 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 1978 >> stream xPSW#T۷[}/NŶXUDuM)  Hw!AA#*َVX;[cOvܙ39|#$Iidtܢ_oappp@P`Ա$dԯ IeDju uJ/#[6_…w4 B&UJ\/nRe Ro^uBCCmFrĜl^%Sf*3*dQ4l\2#]^!&)3ԭdU:% b "Il$MĻJ"XM!khb($_䭀j21pb*p`[:Y:@M %|M>$DX.2q+S)?&wmp+4cөF[u -g^Q̥]pӡ5Yl.GX& A0Ր1ɐYUM~=$97I]܋Ԯ|bu -E 6XK&dvN8KʺY(lMxzb\L4_l+z>j'*AsQ>[v;_bg!0=`uܖR^AGHE- GF`Mn-ԁ;$h@XcKK)Elg{[+FP͂dZ)tI' l &M<ʗYelY;~'1VrV]^_ .>WRl?Ո=Pxw?b=4O PAjZ NDt!a#)OS}9n뮻qMv_F?i^J>%8@/^QKyUCEsS}b/ꯜl0n7ҴQʰt,_oE/kݬ]0Qu&c"a772KwoM<}=sF sM>! " zhAm0U[|Es`34QKCOfVjBH|YܷXF9\fO#$ol?<< >tٍ>:cD0k?ӿ2{ӥ b;:-yFn4mz; t VDb 5`/0EfxmZV*Cѕ%j&A;,E6ݔ}'`fz8nDz%(Txx >˓4x,Ax=4A#z7X;8AJ 9/1)RN"mplਸxg}SmdQN\*H;5@]ϭ48qP]k; ߡG,ks»H[rKqgAcΠ U/?ifendstream endobj 98 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 1525 >> stream xT}PTUǾzEEoFPTt-> 7X`}.,;|UV>aY}@%9}Q61MMSec~};H4:4ϝ{g=w~;$1 I֤87R&K#ReD_q ނ2 $rTb[3sR'͙^dЙZA Z(P4fu'-S6-Qk(L4J-u:s.GQ3z[1LVάN7A,ͅeٺ|AGSҫhY8~aDg~F1<ހ\j5 ? ײ]9= r!75YWďDrX*pW6WC1?FBEކ=h1zBtt jUXJ_4B܅NPh!sg |Eͦ*0BGYK дZ?O]\ŻE㻯c;ݰ ,v5py~r*иCZ^t^D-_U^c_&gͿ Fvyͣ5~=5 KT8)Z-k؋><1^c-n-nٞ#җX=` PaF -( R Aŋ8Yi#yqop/-}dڜpQI7SiwKBW2`d( fl#Wr071N t'Azb é5 yߕGB*_i/C}nS`xxEf26ԵXȈGoG(o +-Hiendstream endobj 99 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 647 >> stream xOLpMltpR^L !0MbcH4 LlݺߨC`l16ahEr{KA{y}qL_8^{躪]µ5A)0W. ݾp 0u䵦uǀMvXrYa";dm!Fe,._ZIց#G1ÔGyc[n]?Rðy0/;|c/҆ʃ9:վ}nԬ"3\>qC!d$`NEYA\oʺD+:)yɞC$GeVM=IeTH((x86o kđ?6-XNmح59>7B 2J>]D\ EبlIٙmib 8qGe@|L+> aI>V˒l_Byn5>}7U4N aE# qpHͤJ c2M0#p)08ӅɏFn1E(U;ʲ1}ttd09 Fendstream endobj 100 0 obj << /Filter /FlateDecode /Length 180 >> stream x3136V0P0U52T0T07PH1230!U`llT42L,ɥPRTʥTɥTƥ\r;;66 @ܼb;;.O͌u~~{ISj;?!tCB UMendstream endobj 101 0 obj << /Filter /FlateDecode /Length 229 >> stream x3136V0P0U52P0T07PH1230!U`llT42L,ɥPRTʥTɥTƥ`ȥ 45KM V8qy(-lfpWsb.Es\ke?O$4Y׃ПO [$Y\ep`hrT[4endstream endobj 102 0 obj << /Filter /FlateDecode /Length 166 >> stream x]1 EwNVɀX%C!zt`KO]M@ѫ&0鈋_BqUJW v O@ h.gOƚb;%HQ *`4^-Shqƈ.%I` >d "_5SHendstream endobj 103 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 4616 >> stream xX tT彿pK̨7Q(.]PlIٗ!$,}ϾO&LILVB6P"bgE}-Z~ޜ7I|睞3's~mSYyƧ-HJ?%}ɹlt4ņYS;Oeߍ.܅wwl`zMyXP\XTP´eO=bQc>T*~87`|~N5,mGynq~8UWWZ܏RFb6QlvdyB 7;zE^*eGGx8 =r=zut%bF~McR1K>ggo/⦼xt4xz-=tpk!}ipR(4~Ȳ$Ov aSh7Եk 2T@.^~]hG>ES||Ϗ=9 eZv*´Gk6ϺF9 >!Hg8X0`5} PbG=1! 'L?bg??{}r0:U.g^ k֌阒86.{γMp:TS6Qk#ڊ/l詖׻C{Z>h"_.ZTW+Z~;jkY >S@ҙM.|CttqvQq7gp-3j dxw P3ea}/W9^{v 9\89dKu艁 $cӔh'ThQ~84I.rNfp`3&ey;۸T55UVS>yEȕO)Ow.N!Af7?^>h`i|55r$fLN&{/jʱ5Ub1Sۙ#rnH# |>Ucl;o՟@Sm_:9 y F՗AC,4̵-X JLԩd @iR 验|V }gRvuY4'?s:hZm#o ā<O2.z28iDz&'V~I֏' [D]V3CY{x ۹7]=^Yz1k/(_L,~M5"~B \؉Ϲک=LZO 3|^81x0dj֛l7#o`f3s0xj - &ŚZǮnI3-X|K`fyyYq=tt:YLd һfJMDS-+cYmx:=1|I;5R hx{>6pVC']5t5z&=WntG䄒fXAUՂdaYc]XXp;XM=6:;kyI>S$K,{l.),.ط  NsR֎=4,lWͯ=Nf-1Hn#3Qlj$+ ]vF4`޿̨*7t7d%]~KVePb,V6>>fqҙ&-3ulw*'Ѥ -B|Y_8Oy48=0cmf'\H0S$,6{9A(ZDl$m8 ^y^9?a>bf#3_NP[A=8.((Z-n!lSU,- Hh/, R؉?pb8q#ޣ=XtZ $-T@GBps;9=9*-UYTBfz/G_#σIUF\P縨+$ك#hv4)*I{.b*ƙ j2!b]{H_sYЋJye"9fjA{5Ph/Uz!n;^;EhoƇn L19# <vҸ3C`'=olAANYW'|usn<? 5UU5/JǪߺq}`m쾕iu@?1*H.ZKsjF]^-a| e^F٣sJ*fJCen/9+iw' _^ ޢ'=8m! O=~hF@a'{&֡w6j[ΣcEw!O2.v<|85/ an~Y5f`'[#SrI@<g:y,.!n͆JmYCFiro6ڨZV+޼ $XSoeKAIz͋6{1;#(cQr*JUiˀH?>l'x<);Ie,2KMcGIx=0޺1  uRv}=Z`!2 Ѐ|~hoksG#r,_{@ʥ>xhCKkN/K^S˫v|ks߻{.R׆u͞K ?tB?e򙔹 듘#ӟ%; cir:ry3-?Nac]jxVm:݌CC[ek09zC{gKk+ߘ(FOdyIJ3[Di^;Ūtyǵbm ;¢Lo) #sqd&.p^ ҭsh)=w<ٙn~jP~y*SZONg>Ȭ:~}.ݿ}V OBAzof2XE2S> @ vV<{bq:OmՉ99IM\ ?ܨA/+/%юxB/̉H#Q[w3>&=V!phe+2fll9tN NfƕaI{LFt6|! yN.g d< :V_9%@J6'P%ar|3ͤfL]4붨s,o_nendstream endobj 104 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 2632 >> stream x PSg%!BZm|T +HTEѢT#D@(D!9 DP1y$>VnmjuZw[=7~~[LgL&?;H]e9:?#Xq8J9}!iHAhyS RCt3cRNPLVN T'jת8m:~IPFkS2_KIozzu)W&LVǧ)_n&icbuVpSBtSSp]69aI)aj#X8 `H f)aB<&τ1ӘtO &Y< b33rf$2:ֻu)t-QH*is`U3s|[*z!^ v¢Y\D<j]d$hT 1 PWgh|u=C1C̛g pmF@؈:9}HI1dzEǀ kr2)xڪm?Qeu]M,DA4?O䂧\jp5vzFđ.TavH0 SYG48L@="~ <2ȣa!L|?uy@T~r{N d) *SS\/G?"/L[Jq ۶gBd64XttF~9>T*U nA}fөfK ,0z^Yj(*C^PX=gnXD CF杊Ɲ]Оמ j?H[.PPc0fE) q[ k'ށ*~7Yҫ{/)_%%M1{3u3hQ9;Ϊa``#Go;H0>z"~-yNv9u>s9O-=b,f^4ἀq$dܸUnK2 .qsЦT&]v0 r .Տ5qkPE*jnIO; ,i>*<+?$;G27[2KY=TCXˑd"C>؎(ց{Sf <ئx'XN~L󃷞HvROa9mq,_>Pss}pԋȨ[6hoEˏ>[e 28l5y"!zeNo="ZV|tq&[ B |'^O\4PZzQ`0 ,H- ֽnd) G[##qߌ|eNe>o)7%BVn^&kdV#-`u{ Ǿ97щ_Ύ94;>q0YAr G!BK%k2=+o/< >HN hh:6CŽ}vgo1g;W$`>?8\uXj t# (x0YP۩7;$1x9!$⯠14T/?6\6K{,_-NŮVf8 O8EiK0'Oe!AB4*I$yL9m(ࠣwy]0$ cWaŠ[f8w$5iIIj,~MoopK#} Vm=td]nRqJB Wљ)~^1 E|f I*.z~='!*3B(55{*ddU)gwG]PRl'C>endstream endobj 105 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 7963 >> stream xyXT*A3Xb]1{"HGz0Y3CeڀbݨQFM4f{<0圽Zz#,zP@pɓL wz ]gy{%B}`/-)@0 0"xW(vgϞ9nʤI܃:ۭvrs%o|6q5+44pĉaaaB&{~0z]؞P/ !{ڭqs3onua_4=nu{?EQk, ܱ(hq𒐥ˤs^*uu<{mس{f-~[g5{{Fg\Q&M2u3zSPj-5ZG SSQFj$EmFS[1Vj,Z@S j5I-&RKIRj2B-R+iJj:AfRkY ՃQ)Q{T/HQ})ʊ Q(kJI(z  z zQH( J-$(#JW)b9ٖFv'R瀞A;>{jU[?~'/b[{xeؓo;onm|r0zĻ=U)n]]8;ۡO^P^a՞F/ jUlr2# @!ODlsެb|2AMMY:glЪ4N!o#rt*쇃pDբ4]A Y|6,mK,Ym`-[zk r2P|@Y\J;`Q*:^&r6op̿VU 6 1E޺vfķ^xҗCbվd5>:|b=X4/z^?c3P$}^r"`N:znidrZS) !ǏpM,̕wX<@̨ e²E[gX TG5f[#x,0X;$pv`wSiC 4@,?TyҊa='l:Ic!57Z~F߰4;$AL6d@0Xm:.} IxĀ"BЖJP<]K{4l;6lZ<OŻImx-7WPC{M!wvxuuMSp\Y{̥质͟zbxB"~>¤(>~80?-q3]úRP1 !6#|!$aA,kYdɢ$$FA);2X%j`,U{*Fo9ݍnlC:F| ~ovNн+˚ z ܰ~)(_ޕ10t]',^sȟ,ϫb].?3C#C*p-e|"!1>,XѨ7h\7猨n0A޹vyCԂrHC"ۮ=̐Pqhw 7%:PK(I-;uw?:\~`z}Ţ4pdh߈Iݪ 9 4434p UX1bCnmonN|kx.MZǎjDG:d@de;ݥkol'`^Лyz@xtp#[L(3"  ?Bnh O m^fz*SRぉ #!)'M.)4r>*%إ~5qZLLsT_H Y&J$?:Y q"%>!E^ѤzV6zTJ%GAUbH~ Rc2W@q4'=LdH)5g=T~ 3SK2[K?<$+iq+℀xG=:Ng{ݹL#-n>9 l<OMS8:|Qc+62CF4K' DPjg0#VTF0үp5=kVu"w&xMD2xRuFhA#!οd49rKaOH>/sT]McqWQ 2BM7' Ԇ Wjezi i_'k8?;Fs,Č=_/\`fJk6(HzLB8qi8TU}Bw 6Wal. vEVAvEL{CvwDU\.+%|YeE/#WBDMU9 ʔ{8[Zyƶ Tj? *E1I$AffTdKg(hFh!:Fo"_ g=ܚ]tO^^z3G$cuts>\ +:)U Sxzz ؤnjy$,)&3>29vβjSrUHlY_M~U#*c9~q8K%K3)Ey1U kMZ6єMzZ%nL>mgn2}+O~zDorkS4u"Nέ~Wr:x#>X.N9!Zɳѭi{N`f/qX*U&RK*s->xbbb߇{3y,r(ie,v$=n.NGI+B~8?Eː}fwնF:HC ` Uz($@T||blеBC.CTr\ q~nD:9jKӛao!6. W \jEODE Ref,QQlMJn Y:( "_u{\Nl} Q]Т,RmR>i)ˋ"KH4iȆ&UMwjL.ȣ[EחEWtP:h:3 -h~cpX=f"X+d %)l:}*CCP{vr^_w!DiKŮ:L"{1D0/"| "O$rK7EbIV9닿䥄SIV\8._(4Ujīq# >%[JJE>"{1oytS ֊z(d* Cä~-.49SY{h0)Oc &h潖YTBLPqXUM1sGE}AAT'FozMXkM:aK=1m͠|Srmf=ı/߰bCGcLȾjTji,ot !g8lԜ>\j_wEK1'31NfgW Qt6!W' }[-*@UP (JijU&+N&2J$QZ_zv(vh:A %NzkL.Agt4K>`^enE"Jt3q8 !z 1 V$;Q'*9!kMhGpHҊ^ Sc9]xv!nh,9}Q.h"3'JY3٢i_fӇB_"i K`&0@WQe-C8LoDF@Lj}%Da PD}ݨw2ZEe&M!;4TYv)C~Y̺-&Zp@O2>dJumA[Vu024P,I p%@bXH"]S@gWjj .4kH+&]Z,%YqLd^\avIFYQ\[řssJdNzw^Ilt7x1v |܍ak#}v+M ۪-Ua ݐIk&vĒ'o<|,z,`EGTb@| bvW/Bv[\ɠφY*1^%ov /"yeAw[3im;^CzzfFB_}[1P3 EoXKCٚjY$/b?̷X%z~v tDXg'2X͞5.W92HH"[ ; x̳/l".TBlF棾ooY|yZ̯a)KYr4ժOj wiyJZDC* . ꃌUZ2JۤIU֧+.O/n! ^6,~˸$z}=Ω hx&TqIj)x gN2ĂہqW#ʤ*ҠlB̢ gO;[RqQՠNEkw0 &'V[w¸#2z~!_ԑ%Ҥk>ĜקmW\6Ôq2/;1aP RuPTD"‚8s'DO) /./&ڃd}v)o4P#iOhv Q@,M/Cc2[Y2e&@PWԬ} G+h6c• Lc`,854xӎNUZo. (ut(kWSlȔp*ǚR"nU՝)bFIN'1ڹ [4&쯈bVkb:'^*[GleÇc'% TFҌb1s hS7їC-qZd]i{v*xn]@DxY`_uBccKۇ)۾S.՟t5{TAD%*J9^ٱo5|>KHh;aw/Ĭ;&#Gw}4p?v&CHn2?qXٝtrE"IBzL:eӎݜc3|_FO,F.(c )rI]Y{L̉Fo&oبGXz? NG hUngi$dⓓbXm^f➸gsn^?YC6%c 97U669!Y,;!;[ l<4)qںp_1 \"zEߚ3d{M8 8>^ؾ}N1oE1V&ZWQt7&so05ђRed7a1r9RT*`Zم\Shd٬rǃŕ2+kKި|VI,R"<YZ-@Ѐhb:nྦྷ9l`SnȽ[2w\M<%EeIQgT{E?#6TSSҳsQ\$/M&mV):| xB~<4*ZT'ʇ0pcs;Q tPo/ ^w?="e~"B['DLW)3B8_\b+bK k>b?ކ-%-*\ )~zJ&VtRC]" s39RVŬ X ɮR;wk(E'3I}΋I Sn)*u'߅5f(l&O@F{<ȍJHR!"2g9XZ,.^O"bO)(wHi3uu։?}}^teuHƮog:ZX2gILќ`OI')9IvQU!$HT% wdPk\:iE{I꓍z4C|b&=[ɓY=3hw&ioEҎfLҞkm;.uq$$=*Aazu!Z N"{ZvjߡUz4wQ#ތvڹ;˓C[i.~W+ҒT%a ;–+p(M*IIt$gh\Naɻ]7Έ&}msG.(7XK1uEHwWҮW 'ļCIb7uTbI칐û CNFVVK:D9?GL3s9sвO4r{hd4hWp-d5sh~ ,"~WrxʷXȉ;Ƕ o bvDžG`+mX푞~kw!ln)3V%2 \hn;0qOB)q"\wq닇M'TrnʄinTq2/:?MO\1졐dzbMѣZf׾S9ƍiVLǛcO2߰Ȓ~~ѪpPs*:Rf2rupe `E?']/.ו\/>=Y}\KQl#endstream endobj 106 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 1808 >> stream xumPTﲀ7 0MƘ8Tc! "..ea]};ʾ eyPQȐjHq&Ʊ/uy^33m?~ysq85El^9O~!#"W1?2Ԑ&Ȕ> V+=Xx5<8 d(.֜*R[]:j zqs)OǮ_͠  ^@GQy{³`xk T.I{S^׾63FrwC?>0SYXǼdy OzvfPAcwu /4=OljMt.܍ќ==.} w0FM nFStKJT;^*_W+E^OCN>\Rزᓆbt5dž#MVZPvnifKD릅WpW8V')4.4OSc62r%f-ZllN[G]oUYʣ̾|{k͞o9_Cm1`fUGL_G׮>99%۫j+T਷d/h8^>3%5TU-I&l+=i9O2nc׹O2v>K[v* *1q/u %supkj~ܙE_83LN e{ @b6=JyGTtQzdtKI⼷f=7=Ba2w|?Wh+ʁ+S%dn.DbHFg3ȚԳfnK<3aHGendstream endobj 107 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 396 >> stream x~CMMI7'+   ]ZWnsCopyright (c) 1997, 2009 American Mathematical Society (), with Reserved Font Name CMMI7.CMMI7Computer ModerniJ(Ҫopnqnzv`~z\e~}t;_bdw揗cT(]z~ᷯpt|rMwCp`  7 [җ8endstream endobj 108 0 obj << /Filter /FlateDecode /Length 161 >> stream x]O10 b C 8QC_Ct;,ڳK X&었8L;+'n:?`5]O$J]Jm!树DSUmcm+͟;OԵ>h.q\b$Nii 83 [Sendstream endobj 109 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 301 >> stream xcd`ab`ddds 4H3a!O/nnW }=I19(3=DA#YS\GR17(391O7$#57QOL-Tа())///K-/JQ(,PJ-N-*KMQp+QKMU;OL:)槤$N-/````c`b`bddK{O=?0))(݋tWUg)..Z=G?تK%g/it=\{b^k$endstream endobj 110 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 5235 >> stream xX XS׶>!prTG@{jT:+8TPQ"3CL632&LgECPommbUk:潾@}>|k׿uD %$fL7/ o'pf\Mkm%d!eroO/=̘?)63Ooc!`wSfoEE^ EwU*KޙbVxlzY% PجsnZ2QC@Q;Y!J7{#z{{_hw&O23fΊ=g.ER8j5L9Q-VjL}@Q˩vj5AVQS3Ք=5rfSk9#GYQ֔EFqj eN PK0j8eAI+R#)Kj;eJP&&/N3[3wtd$Rrqf X7~؁ Zb>]1!,b7]=y^sxIӱuA Cg.~޼yMJ"YE֋ PbYȗuC`l`̞5%Af3xF<yrO/:ar'-Ee^(ƒ qڄl:n aMO5x]4T4BL N`7m?֡V.׮Yv\Y.:CmA[i'EEeܳ#9l C!GN˵I':*#JS ꑥ,a`0\DL6Լքu⥟> н>- VP@T<oeqWz?\VLgd3Uu?(KH8ռAR*)/T|uS5/}EQL߹9K,I B1B$I$6sMS f}yBĬ7Xm1z3z1T4o2~PShl}V,X L_S|ZDVtUwjƣ=^Ol -!Hٝ|Y+2&aA rfa^xv7gwI%IcLOij%H 4+].k'cpYVǦP b.Wռ ]iy w:RA;rɆ6Nv(!r2K i[=_ ;bTRub*t5mc ^5 7,?c1c P6CeN flgl@BYBԈjoh3>"_^J2r=2ATS5d_fR;ZR&vGI M5d괩騘98wIzTIm$k2T C,E̵$o.~]`=ןބǽhh,ɟL:T]À fyKVC[Mzr }d "JQk~#j<`Ҙx>-2 - z-hQ+""Nvo`8ĐelCpH#cT%זUX".5:+-jEikN!uR'Ϟ>+Nu?%la6[wx8W?nX\ 36޵+԰x3ڹu3?ËMO9hBӶ5ռ."`jV`yה]㽋*݅+]SK1? ysm](z[n!.*ۭlbVq( ťP.)hQH+8 |ܺ:-_Yfhz iV*9(W;fBtB٦ n-Ay$L'x~zfÎ.ipePG'o^GZjy aJ>"0jQ, 7K}#"f?"*5|\ʾ:w&ʉ-k:u^/t}ϠEv 1h[~x:߇1bZR&de!ee\W ťPt&8V'|DɶgùJ:)kJ|{4 eYu }-";ny>Ȼ^\H_-(qG߁SQg-D#8-.Dԉ-Dfh+ ޖCq,BZ0 LJadTE @?҃Pt*cfš?0C0I ?etf `FuYMv}t{;F>`8[}G/@=8ߺ[?a\nAƗq$ ؔZ% Go78tCH?/ ]a٨Ifpx}:nc7n~u73).=3[?N e_()3"Q,eӼ$pbx Ur?}Au*u?}F~٬\faX DysP)SUsMCa(*'@<|= b5D旗Oy|͌vnmoĂ#d}Dz:yx hM)#r|ݯdD%¢|<]`<<(/;贜DmPލp.tnF6DVejs!pE0h [ۖ5#FSg&0 Ҏ&<=]?.,ee & 5rT0ί'~xc|T兼9<D^Ft4'Ga^ x΂dl[ƧoqgdtDdTu?]{5#Y٩i;k}Fܡ{/%_]S+_xFg'.&!V$J~ie]AlB겋c3nhU˟QE6Њ SĂ˯CTrU2$^@(VGj/Жe 8NrXX7, 6Ga'l &`Fa[/.v0^kk}OݢI&56ҰDcsLXJ&4yIbaɬcg%}J%94$"]/݇kll\B"R3Ǟ<z0cs WS+/O<k<b?5kN|+0>=ӱ {(aUtg1`;VT $s1ޟ\tWyAϔMI*V˝_\\q,k 33ɐTi Y~atguZ# `pl)Z>eTE1 ,(RMP\nT~A"Y"B ALdadQ^VfV6W[]UTw0`6(:ʋ5eGQzaVT f1Hfcd|rs)~rru_zзZ #9ޜF(%v2,'3+_9Dul5_P+X^5=>MQFTu%rCu'K^[Y;+ֿ'[D4'DFQ;𥉉` _<1'׫%?ܝOpz> e ߵ?FGQQLf"K ! .QVUjk:MJ}J&+%AH_j.BjSkqӇWαߴ',υy4ϖqMe?!endstream endobj 111 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 329 >> stream xcd`ab`dddw 641H3a!O/nn߷}O=J19(3=DA#YS\GR17(391O7$#57QOL-Tа())///K-/JQ(,PJ-N-*KMQp+QKMU8OB9)槤1000103012)ٽgf|;?̿ܥ;~3>,}} |g|Waq6;7<_s/wt\7Xp9|zaendstream endobj 112 0 obj << /Filter /FlateDecode /Length 160 >> stream x]O1 y@NQtЪjbLPH:t8K结r/#=>)ul"-~H0Xô2񭃐U'lCR54R<蚦dw(9K7SiZL!`jGSendstream endobj 113 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 3609 >> stream xW{\SW>1xP|#u|[VVQ# $ @JB ! />^;*qXiUii{Bpzs$'go}{=6Gx%k7ٴix~o9X>jD!*"0r_!k(2K YJRcv ҳBtz~GZ[=?XLzP_om ^nސc3Jp JXMksZRQ(-I0K "AOVi\voyK_>:.spq.ΦyipB'@\$^[Zf]Sf _`dpTѠU^נ4Z˭.SnmD,=vWב>xKeuyZ\w\$!Jh2RB1OkkS`;^:4j܍7? {DĪiVeL.@[%wHl.TVVR sGwH֫)#Yz!U˵5J*6,v3Z{1YDZk*;R2l,M`pR}:piȫ \hq{3'}cTȾf_!tg>CowfED\QYb%ف^_Gxnq_ImK<>_Eʕ( sZ;LU]y&P?j0SLс}|u\^GK|$EPEfJ|U5f Ѵ_?^T2_(ZݶAP"dR@y}$OYU8A[Fz1dQ^r>EC8w|#xjc1=!~i8P²5c0g2[/O( Q $]|v,{KRY/;,ē4lov%nn٭ A-lY/43]"-ؗ+P6 4gV)iQ4$b o2cwFPj_'Gj#H=8AZ<9Hk+@mrIZc) )xʛU:ox(>nܝ GS+e t1+4A{m N$#U6H,f;7 Uԋ 0oP `xʄH*#6yr+"Cqw\MTѠZ,pVrծZoayN DtKX 568xP d^2$'9D{roBo0Ir)DutMey%[(H4"ߡ#PyjYT^ ^5:U!(v"t9drpp3 ">N.f +2{9(g'+Whu楙¦KM@5j+^Gd6%*tN-t~ Km)ކ%7:TT5'p:`붫:1W92SII 3, ;Ϧqz)-bS}g;yh-g?*SY=5:j"jv!xQKk5Z!ntzVMyiycrJX$jkk9Ӯr0Cl&+)֝,|Yܢ%|cĔƦ n[˻f &Q 5)Fї g'vшwK+݂O6j.X'U}u So;{ P|p,r֋הqE^C`7;lϵ櫲`j܁vyzڹq}H?:!nc3ʘ2 uT ǝNyw(~|~ k8Oܼtkrkqe]}MLCm&7PHEfoؐbxW2rfEbg[誂EaX+WNCʋy5ʚ{e,y>JU,eBW婃J7%[=-TXc lGeV`Wdp%* D@*0!XէH6U\`Y[[ nZsn5?}Z>Rj.9WO|cg.[[lݼiyNG(P^Ud;l)G4 z;w鳶 Ö_FsǷ}GB/wѭ֕p/nE?Pucx 'Vcpg?=u{cLn_S$|P2'zzP_-;z`M%ĎTj<$V>P8 B!$R endstream endobj 114 0 obj << /Filter /FlateDecode /Length 5647 >> stream x\[q~_Gl3ň؀pXZ R,.$%ſ=_utW"!{z^_7;蝢ڟO_sw7ξ9!%]P3݋3l\#c$'8U?wwgjoDk<}ř4}wwbgg9 .$cw/l{~WI!{Yv1ΘU{c+ J2D!]Z2/ (&-:)5h5f{?ԋ§9dz4뵎g4F<ǜ:.԰c|ebO|NRZ* vV uP&iRmʉtuKT#3}gXN?B^1ALBI֜IF YB,̇AWVlW Y2D-sAeWlWO>-ҋI*]rt5BJ'{M~DXfZ.?E"G.AՐ1<&ɋI(!bȯMdV^) d>–=F֋'7 U6 1lAt>8:IZOxMIkyF(;WL@9 E2bCؔ-RD[ba>RF"I`gdɱ\mU$=vVO%F R &Y dP[fS2&!Yc/,Ц#lqT*Y}rI}͚x܏Yjws,灂@|)8r #j.%Ɲş2Ѣ;a6% zc6Lje`7YmDB)j#b6Y>#>YQN"Oi#bV $ %eHH 4MF6t ;R htjtLlX3Ҧ[:6OGXB,L;$g˛N-> 0L.s_=zsyjW"Y rs.>ҥԿ? y_0X]mT"{7A=˲m Al:3@Ey"V~PjikUntİejvd E9?DaHњ㦚-S+H?9/9MVCݬk!L}l%0l8@k9_Trzٟ^o}? ӓt۟jnՎ?]GZ18fFޟtݟMCvCYC6޲ l)nc㯇>/o>]'txlAwO} ?ck6΋o6vô>4<|CI̙95d(HeI!6ӅjΔFl1MAiy d3S*&kTM59o.9Ҩyr~T8foƇ,2Sb.'O"רwe'hjOWt Y7hq9(ܕxT%x{Vgܔ<2&ܱ/8_w._7Y%=Ếw""gU#*IKKTixbQe*h("ϙǿZic^Q6VGM>aQ»WKEʻ^>2"|WlJwS ofO)β\v &76Y4ɔ|NGTz"ܿ(&krcumʛa-MQ%=LU΄P",ATyOwĪNWh\>t]F+c{r_!0Z儋_hHX|L:DEf );(yP^D$b'*sxZݻ>RdJK* zmg#RŠ\[Bp ]]~n8UPʦXQ^%UFe60=ߵ6J,wʥՏN8|ߢ#wp2bnfSas]\G=1jT;y^u%_?lTݯ6^o?鍥u[=>Of u"ӷ&RG22烧FBL4CAwhJ ~z$X0E{_G32T}}嚤5LL(Q&"2I,JN Neyae:-򣚖kf `jLD}A]@W,n]+ZJۨX+Qb9ZX.[N[W} q{8,?=raҁ ~>7Qm|ߟ^2[~9^oa-W[̾\*F|xt@,Dt?EuӕS8ӨF7T9UNFѦV9ӕSZ9GcU@V"\>>VБBg{|L9[Ab*ߩWpDc&W 1%"3:.}+6 =OlTDx*5Qedu I;M^.P&mFomX N =o!XE[G${Ӗ~/gT{Gb%ٷ?}O=k>=9&A{O%YۈA9 ȳ-ʴZwznї2u2#@ ӑ<1'N5ÌS$3uK,x@pτD˰ -#yg>$? րEGGL,OX"fZd:Aa $ D úO/Yݛ 6VQJd2$QaGEM@q2i߉,{&|Uף (FvˌOQhWJ׺ .B'(R;SlUE`$P+7J^;\\6|TG~򑾅 jL~xi=S(H]\cJ^-crΡJ}#;-.G:'EZΑ?fuD/N}bG ~=8@[fo($]a[GA˯Nݸ=h<=?9w\~?C\[h8?ltaCVE#c3_1f!Yg$3endstream endobj 115 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 4387 >> stream xX TSw1KQSťV[ڱUk*E((ne"@|IkX% ֢TmѶ֎j7G;鴶r{mN;o= pr3bk8a7_0c0fxP8$ Kp9LTqn0!1#`f̬4;LKDGe$ƥDe_BScq3_I/7/;;{nTʞ Κ-H '.=+.6TQF;mUj83#.=`}jl\ )+EW\ܘC7 C7oINAS`bBl$!ffb xNF!vD 1x"kBb"b@ bᄛʹ7l 8]`yh'77FFh՘cX{O>3;t\l+A2 xsv .ڌ|#ՉZN:R/rPh41LPPBO U|&]⓽G)A F;`?iZ'PY6AKGtnQ *9ru6˜9nJC(+u}t#hi ] AєpN+e+@Y|5gm2K*7XN4zO7w,S@)O#!3$)91!% `*&r  K49j ѪtŠȭ KpF<~̭/3|[Fnڃ ˣIB.1pV4Bj)N; Fhכ˨1!a/c}y˘uȥٱ,Θ~~ 4񅟥X3[͏|pq[N}Ǜy)"$2szR0-ڼ=|VL{ܯ|EB#0 b ݈)-Ъ<`l7[J64ÒW AL4뿃OLhYo37LFe*}6om}[@v7%EѢ7hYzdv 7޲FPg E+>+^ mDH2Ѵ%߱|\`oɵpvb ^,cꨥ@NdK0;yоVvr$ FI 4XqEFJ\.}Ks^E"V"ZhHz Sd9K\C:>M 8"SV=XW佊J%T^^!XE:Pi}C0 ~ë?(> Pg\!<ҬҌIXh1IS3%E dM_8BBP"NQ)jhyDwgYQ#$LR uᜤ,fg,:q9x<,]FE%AKq$9i<]͛xdQU _y {*JvLlsN^dIv1[&r\?fW~%s#hDZWFSac#W )|VO}PzI𨞎E +-)wk]Cu1OT--)qHj'")g][IPuBr < w4pnxrVOM?4w½?a<5,f2A\;B^[ {@ K:qp@!5ZC~hwh \i_7&>.CI7gEЉa9*e)u)zIJ bv,d; Kr17* qu%.%B)JMv&;eѱ ?ÝN'yu pBl^uoF#kt%?*֙Jϝeg~⺪mU5#UjA,MC;Moln9|b'\眒ƓqnE֯цK`G TyRݲNe-bK9|H^[~GލETޡn*HJwCK:GEk.(4T^hJR2)Ɩc6֚@ I<w֡  >C{+Ӊ AI$~Jr^<*[qs_ζ΃+#)s蔗 v!Ʃغs%L>*gW+ʪs630v~e|} %Ag-,ETxh{d9k6^1mָU. |"!udB9ٳ/XvhtP`0EiO*uPLjEo[)^ھB~7=*;Zt8)ǔl+6]y-I~6L)ՙNaW`Ea9v.sAc[ PZzs Ch8 PFKT".ԠYM1g%%`4R^oo84 >ZP+"\ZXTSlhp>=S 5$9Qt>O K G&7L&z8(T dSze&%)msm䦿ef 8%њXhcKI v͠gH"2C~ĉ\ m;Ke&B 52=/0'*@/o65{OQ؞/VE:W/nnB).m `ر[M%ӍF>*|΃ֶp3 \a8`j쒬ܭ_|=bgʎ5QCoUm]m5?+O4V0mۇ# \a]<=qNʨ}h؝(M?^p$W v/N*O0}$҆bC괫e̓xr9h1\AoeLo/8v Ez8.>%t3hc#> /W [ 1 3 1 ] /Info 3 0 R /Root 2 0 R /Size 117 /ID [<85339f49b8adb5209b33cc68a0c44dbb><304b1a1b2c72c4c305cbd837aa1daa8a>] >> stream xcb&F~0 $8J(UˁlnP Qj R~" D2?|"A$b2l ^@QXX%K_""1I endstream endobj startxref 80673 %%EOF lmtest/inst/doc/lmtest-intro.R0000644000175400001440000000715412270260476016300 0ustar zeileisusers### R code from vignette source 'lmtest-intro.Rnw' ################################################### ### code chunk number 1: preliminaries ################################################### library(lmtest) options(SweaveHooks=list(twofig=function() {par(mfrow=c(1,2))}, twofig2=function() {par(mfrow=c(2,1))}, onefig=function() {par(mfrow=c(1,1))})) ################################################### ### code chunk number 2: macro-jocci ################################################### getOption("SweaveHooks")[["twofig"]]() data(jocci) plot(jocci[,"dy"], ylab = "jocci (log first differences)") ar6.model <- dy ~ dy1 + dy2 + dy3 + dy4 + dy5 +dy6 jocci.fm <- lm(ar6.model, data = jocci) plot(time(jocci), residuals(jocci.fm), xlab = "Time", ylab = "AR(6) residuals") ################################################### ### code chunk number 3: macro-corr1 ################################################### data(jocci) dwtest(dy ~ 1, data = jocci) ################################################### ### code chunk number 4: macro-model ################################################### ar6.model <- dy ~ dy1 + dy2 + dy3 + dy4 + dy5 +dy6 ################################################### ### code chunk number 5: macro-corr2 ################################################### bgtest(ar6.model, data = jocci) ################################################### ### code chunk number 6: macro-hetsked1 ################################################### var.model <- ~ I(dy1^2) + I(dy2^2) + I(dy3^2) + I(dy4^2) + I(dy5^2) + I(dy6^2) bptest(ar6.model, var.model, data = jocci) ################################################### ### code chunk number 7: mandible-data ################################################### getOption("SweaveHooks")[["onefig"]]() data(Mandible) mandible <- log(Mandible) attach(mandible) plot(mandible) fm <- lm(length ~ age) fm2 <- lm(length ~ age + I(age^2)) lines(age, fitted(fm), col = 2) lines(age, fitted(fm2), col = 4) ################################################### ### code chunk number 8: mandible-res ################################################### getOption("SweaveHooks")[["twofig"]]() plot(age, residuals(fm), ylab = "residuals (linear model)") plot(age, residuals(fm2), ylab = "residuals (quadratic model)") detach(mandible) ################################################### ### code chunk number 9: mandible-tests1 (eval = FALSE) ################################################### ## data(Mandible) ## mandible <- log(Mandible) ## harvtest(length ~ age, order.by = ~ age, data = mandible) ## raintest(length ~ age, order.by = ~ age, data = mandible) ################################################### ### code chunk number 10: mandible-tests2 ################################################### resettest(length ~ age, data = mandible) ################################################### ### code chunk number 11: mandible-tests3 ################################################### resettest(length ~ age, power = 2, type = "regressor", data = mandible) ################################################### ### code chunk number 12: mandible-tests4 ################################################### raintest(length ~ age + I(age^2), order.by = ~ age, data = mandible) ################################################### ### code chunk number 13: mandible-supF ################################################### if(require(strucchange)) { supF.pval <- round(sctest(length ~ age + I(age^2), data = mandible, to = 0.9, type = "supF")$p.value, digits = 3) } else { # warning("`strucchange' not available: p value set to NA") supF.pval <- NA } lmtest/tests/0000755000175400001440000000000012220001273013104 5ustar zeileisuserslmtest/tests/Examples/0000755000175400001440000000000012220001273014662 5ustar zeileisuserslmtest/tests/Examples/lmtest-Ex.Rout.save0000644000175400001440000014342312270260465020402 0ustar zeileisusers R version 3.0.2 (2013-09-25) -- "Frisbee Sailing" 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 <- "lmtest" > source(file.path(R.home("share"), "R", "examples-header.R")) > options(warn = 1) > library('lmtest') Loading required package: zoo Attaching package: 'zoo' The following objects are masked from 'package:base': as.Date, as.Date.numeric > > base::assign(".oldSearch", base::search(), pos = 'CheckExEnv') > cleanEx() > nameEx("ChickEgg") > ### * ChickEgg > > flush(stderr()); flush(stdout()) > > ### Name: ChickEgg > ### Title: Chickens, Eggs, and Causality > ### Aliases: ChickEgg > ### Keywords: datasets > > ### ** Examples > > ## Which came first: the chicken or the egg? > data(ChickEgg) > ## chickens granger-cause eggs? > grangertest(egg ~ chicken, order = 3, data = ChickEgg) Granger causality test Model 1: egg ~ Lags(egg, 1:3) + Lags(chicken, 1:3) Model 2: egg ~ Lags(egg, 1:3) Res.Df Df F Pr(>F) 1 44 2 47 -3 0.5916 0.6238 > ## eggs granger-cause chickens? > grangertest(chicken ~ egg, order = 3, data = ChickEgg) Granger causality test Model 1: chicken ~ Lags(chicken, 1:3) + Lags(egg, 1:3) Model 2: chicken ~ Lags(chicken, 1:3) Res.Df Df F Pr(>F) 1 44 2 47 -3 5.405 0.002966 ** --- Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 > > ## To perform the same tests `by hand', you can use dynlm() and waldtest(): > if(require(dynlm)) { + ## chickens granger-cause eggs? + em <- dynlm(egg ~ L(egg, 1) + L(egg, 2) + L(egg, 3), data = ChickEgg) + em2 <- update(em, . ~ . + L(chicken, 1) + L(chicken, 2) + L(chicken, 3)) + waldtest(em, em2) + + ## eggs granger-cause chickens? + cm <- dynlm(chicken ~ L(chicken, 1) + L(chicken, 2) + L(chicken, 3), data = ChickEgg) + cm2 <- update(cm, . ~ . + L(egg, 1) + L(egg, 2) + L(egg, 3)) + waldtest(cm, cm2) + } Loading required package: dynlm Loading required package: car Wald test Model 1: chicken ~ L(chicken, 1) + L(chicken, 2) + L(chicken, 3) Model 2: chicken ~ L(chicken, 1) + L(chicken, 2) + L(chicken, 3) + L(egg, 1) + L(egg, 2) + L(egg, 3) Res.Df Df F Pr(>F) 1 47 2 44 3 5.405 0.002966 ** --- Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 > > > > cleanEx() detaching 'package:dynlm', 'package:car' > nameEx("Mandible") > ### * Mandible > > flush(stderr()); flush(stdout()) > > ### Name: Mandible > ### Title: Mandible Data > ### Aliases: Mandible > ### Keywords: datasets > > ### ** Examples > > data(Mandible) > lm(length ~ age, data=Mandible, subset=(age <= 28)) Call: lm(formula = length ~ age, data = Mandible, subset = (age <= 28)) Coefficients: (Intercept) age -11.953 1.773 > > > > > cleanEx() > nameEx("USDistLag") > ### * USDistLag > > flush(stderr()); flush(stdout()) > > ### Name: USDistLag > ### Title: US Macroeconomic Data > ### Aliases: USDistLag > ### Keywords: datasets > > ### ** Examples > > ## Willam H. Greene, Econometric Analysis, 2nd Ed. > ## Chapter 7 > ## load data set, p. 221, Table 7.7 > data(USDistLag) > > ## fit distributed lag model, p.221, Example 7.8 > usdl <- na.contiguous(cbind(USDistLag, lag(USDistLag, k = -1))) > colnames(usdl) <- c("con", "gnp", "con1", "gnp1") > > ## C(t) = b0 + b1*Y(t) + b2*C(t-1) + u > fm <- lm(con ~ gnp + con1, data = usdl) > summary(fm) Call: lm(formula = con ~ gnp + con1, data = usdl) Residuals: Min 1Q Median 3Q Max -11.6127 -3.8405 -0.8536 4.3857 12.6428 Coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept) -7.69575 11.44429 -0.672 0.510891 gnp 0.40015 0.06272 6.380 9.12e-06 *** con1 0.38073 0.09479 4.017 0.000996 *** --- Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 Residual standard error: 6.837 on 16 degrees of freedom Multiple R-squared: 0.9976, Adjusted R-squared: 0.9973 F-statistic: 3302 on 2 and 16 DF, p-value: < 2.2e-16 > vcov(fm) (Intercept) gnp con1 (Intercept) 130.9718602 -0.438682677 0.549587054 gnp -0.4386827 0.003933498 -0.005896092 con1 0.5495871 -0.005896092 0.008984392 > > > > cleanEx() > nameEx("bgtest") > ### * bgtest > > flush(stderr()); flush(stdout()) > > ### Name: bgtest > ### Title: Breusch-Godfrey Test > ### Aliases: bgtest vcov.bgtest df.residual.bgtest > ### Keywords: htest > > ### ** Examples > > > ## Generate a stationary and an AR(1) series > x <- rep(c(1, -1), 50) > > y1 <- 1 + x + rnorm(100) > > ## Perform Breusch-Godfrey test for first-order serial correlation: > bgtest(y1 ~ x) Breusch-Godfrey test for serial correlation of order up to 1 data: y1 ~ x LM test = 0.0037, df = 1, p-value = 0.9516 > ## or for fourth-order serial correlation > bgtest(y1 ~ x, order = 4) Breusch-Godfrey test for serial correlation of order up to 4 data: y1 ~ x LM test = 3.0822, df = 4, p-value = 0.5442 > ## Compare with Durbin-Watson test results: > dwtest(y1 ~ x) Durbin-Watson test data: y1 ~ x DW = 1.9762, p-value = 0.4924 alternative hypothesis: true autocorrelation is greater than 0 > > y2 <- filter(y1, 0.5, method = "recursive") > bgtest(y2 ~ x) Breusch-Godfrey test for serial correlation of order up to 1 data: y2 ~ x LM test = 19.9075, df = 1, p-value = 8.128e-06 > bg4 <- bgtest(y2 ~ x, order = 4) > bg4 Breusch-Godfrey test for serial correlation of order up to 4 data: y2 ~ x LM test = 23.687, df = 4, p-value = 9.228e-05 > coeftest(bg4) z test of coefficients: Estimate Std. Error z value Pr(>|z|) (Intercept) 0.0049353 0.0905891 0.0545 0.9566 x -0.0057380 0.0904290 -0.0635 0.9494 lag(resid)_1 0.4619715 0.1027742 4.4950 6.957e-06 *** lag(resid)_2 -0.0401917 0.1136254 -0.3537 0.7235 lag(resid)_3 -0.1030000 0.1136071 -0.9066 0.3646 lag(resid)_4 -0.1184116 0.1049020 -1.1288 0.2590 --- Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 > > > > cleanEx() > nameEx("bondyield") > ### * bondyield > > flush(stderr()); flush(stdout()) > > ### Name: bondyield > ### Title: Bond Yield > ### Aliases: bondyield > ### Keywords: datasets > > ### ** Examples > > data(bondyield) > > ## page 134, fit Cook-Hendershott OLS model and Yawitz-Marshall OLS model > ## third and last line in Table 6.5 > > modelCH <- RAARUS ~ MOOD + EPI + EXP + RUS > lm(modelCH, data=bondyield) Call: lm(formula = modelCH, data = bondyield) Coefficients: (Intercept) MOOD EPI EXP RUS 0.525913 -0.001402 -0.005623 -0.157801 0.137761 > dwtest(modelCH, data=bondyield) Durbin-Watson test data: modelCH DW = 0.8448, p-value = 2.888e-08 alternative hypothesis: true autocorrelation is greater than 0 > ## wrong sign of RUS coefficient > > modelYM <- RAARUS ~ MOOD + Y + K > lm(modelYM, data=bondyield) Call: lm(formula = modelYM, data = bondyield) Coefficients: (Intercept) MOOD Y K -5.06477 -0.01313 0.04899 1.70792 > dwtest(modelYM, data=bondyield) Durbin-Watson test data: modelYM DW = 1.4387, p-value = 0.004938 alternative hypothesis: true autocorrelation is greater than 0 > ## coefficient of Y and K differ by factor 100 > > > ## page 135, fit test statistics in Table 6.6 b) > ################################################ > > ## Chow 1971(1) > if(require(strucchange, quietly = TRUE)) { + sctest(modelCH, point=c(1971,1), data=bondyield, type="Chow") } Chow test data: modelCH F = 13.7752, p-value = 1.838e-08 > > ## Breusch-Pagan > bptest(modelCH, data=bondyield, studentize=FALSE) Breusch-Pagan test data: modelCH BP = 2.0667, df = 4, p-value = 0.7235 > bptest(modelCH, data=bondyield) studentized Breusch-Pagan test data: modelCH BP = 2.9784, df = 4, p-value = 0.5614 > > ## Fluctuation test > if(require(strucchange, quietly = TRUE)) { + sctest(modelCH, type="fluctuation", data=bondyield, rescale=FALSE)} RE test (recursive estimates test) data: modelCH RE = 17.7584, p-value < 2.2e-16 > > ## RESET > reset(modelCH, data=bondyield) RESET test data: modelCH RESET = 5.349, df1 = 2, df2 = 53, p-value = 0.007655 > reset(modelCH, power=2, type="regressor", data=bondyield) RESET test data: modelCH RESET = 4.7726, df1 = 4, df2 = 51, p-value = 0.002393 > reset(modelCH, type="princomp", data=bondyield) RESET test data: modelCH RESET = 9.3371, df1 = 2, df2 = 53, p-value = 0.0003359 > > ## Harvey-Collier > harvtest(modelCH, order.by= ~ MOOD, data=bondyield) Harvey-Collier test data: modelCH HC = 2.3951, df = 54, p-value = 0.02012 > harvtest(modelCH, order.by= ~ EPI, data=bondyield) Harvey-Collier test data: modelCH HC = 0.1707, df = 54, p-value = 0.8651 > harvtest(modelCH, order.by= ~ EXP, data=bondyield) Harvey-Collier test data: modelCH HC = 0.8713, df = 54, p-value = 0.3875 > harvtest(modelCH, order.by= ~ RUS, data=bondyield) Harvey-Collier test data: modelCH HC = 1.5877, df = 54, p-value = 0.1182 > > ## Rainbow > raintest(modelCH, order.by = "mahalanobis", data=bondyield) Rainbow test data: modelCH Rain = 1.702, df1 = 30, df2 = 25, p-value = 0.08919 > > > ## page 136, fit test statistics in Table 6.6 d) > ################################################ > > ## Chow 1966(1) > if(require(strucchange, quietly = TRUE)) { + sctest(modelYM, point=c(1965,4), data=bondyield, type="Chow") } Chow test data: modelYM F = 2.8266, p-value = 0.03388 > > ## Fluctuation test > if(require(strucchange, quietly = TRUE)) { + sctest(modelYM, type="fluctuation", data=bondyield, rescale=FALSE) } RE test (recursive estimates test) data: modelYM RE = 19.733, p-value < 2.2e-16 > > ## RESET > reset(modelYM, data=bondyield) RESET test data: modelYM RESET = 2.1436, df1 = 2, df2 = 54, p-value = 0.1271 > reset(modelYM, power=2, type="regressor", data=bondyield) RESET test data: modelYM RESET = 4.1716, df1 = 3, df2 = 53, p-value = 0.01003 > reset(modelYM, type="princomp", data=bondyield) RESET test data: modelYM RESET = 1.9931, df1 = 2, df2 = 54, p-value = 0.1462 > > ## Harvey-Collier > harvtest(modelYM, order.by= ~ MOOD, data=bondyield) Harvey-Collier test data: modelYM HC = 0.2487, df = 55, p-value = 0.8045 > harvtest(modelYM, order.by= ~ Y, data=bondyield) Harvey-Collier test data: modelYM HC = 2.1227, df = 55, p-value = 0.0383 > harvtest(modelYM, order.by= ~ K, data=bondyield) Harvey-Collier test data: modelYM HC = 0.0261, df = 55, p-value = 0.9793 > > ## Rainbow > raintest(modelYM, order.by = "mahalanobis", data=bondyield) Rainbow test data: modelYM Rain = 1.2978, df1 = 30, df2 = 26, p-value = 0.2515 > > > > cleanEx() detaching 'package:strucchange', 'package:sandwich' > nameEx("bptest") > ### * bptest > > flush(stderr()); flush(stdout()) > > ### Name: bptest > ### Title: Breusch-Pagan Test > ### Aliases: bptest > ### Keywords: htest > > ### ** Examples > > ## generate a regressor > x <- rep(c(-1,1), 50) > ## generate heteroskedastic and homoskedastic disturbances > err1 <- rnorm(100, sd=rep(c(1,2), 50)) > err2 <- rnorm(100) > ## generate a linear relationship > y1 <- 1 + x + err1 > y2 <- 1 + x + err2 > ## perform Breusch-Pagan test > bptest(y1 ~ x) studentized Breusch-Pagan test data: y1 ~ x BP = 11.0995, df = 1, p-value = 0.0008635 > bptest(y2 ~ x) studentized Breusch-Pagan test data: y2 ~ x BP = 0.1181, df = 1, p-value = 0.7311 > > > > cleanEx() > nameEx("coeftest") > ### * coeftest > > flush(stderr()); flush(stdout()) > > ### Name: coeftest > ### Title: Testing Estimated Coefficients > ### Aliases: coeftest coeftest.default coeftest.survreg coeftest.glm > ### coeftest.mlm coeftest.breakpointsfull print.coeftest > ### Keywords: htest > > ### ** Examples > > ## load data and fit model > data(Mandible) > fm <- lm(length ~ age, data=Mandible, subset=(age <= 28)) > > ## the following commands lead to the same tests: > summary(fm) Call: lm(formula = length ~ age, data = Mandible, subset = (age <= 28)) Residuals: Min 1Q Median 3Q Max -9.2013 -1.6592 -0.1217 1.3420 6.4351 Coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept) -11.9534 0.9762 -12.24 <2e-16 *** age 1.7727 0.0477 37.16 <2e-16 *** --- Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 Residual standard error: 2.373 on 156 degrees of freedom Multiple R-squared: 0.8985, Adjusted R-squared: 0.8978 F-statistic: 1381 on 1 and 156 DF, p-value: < 2.2e-16 > coeftest(fm) t test of coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept) -11.953366 0.976227 -12.245 < 2.2e-16 *** age 1.772730 0.047704 37.161 < 2.2e-16 *** --- Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 > > ## a z test (instead of a t test) can be performed by > coeftest(fm, df = Inf) z test of coefficients: Estimate Std. Error z value Pr(>|z|) (Intercept) -11.953366 0.976227 -12.245 < 2.2e-16 *** age 1.772730 0.047704 37.161 < 2.2e-16 *** --- Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 > > if(require(sandwich)) { + ## a different covariance matrix can be also used: + ## either supplied as a function + coeftest(fm, df = Inf, vcov = vcovHC) + ## or as a matrix + coeftest(fm, df = Inf, vcov = vcovHC(fm, type = "HC0")) + } Loading required package: sandwich z test of coefficients: Estimate Std. Error z value Pr(>|z|) (Intercept) -11.953366 1.009817 -11.837 < 2.2e-16 *** age 1.772730 0.054343 32.621 < 2.2e-16 *** --- Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 > > > > cleanEx() detaching 'package:sandwich' > nameEx("coxtest") > ### * coxtest > > flush(stderr()); flush(stdout()) > > ### Name: coxtest > ### Title: Cox Test for Comparing Non-Nested Models > ### Aliases: coxtest > ### Keywords: htest > > ### ** Examples > > ## Fit two competing, non-nested models for aggregate > ## consumption, as in Greene (1993), Examples 7.11 and 7.12 > > ## load data and compute lags > data(USDistLag) > usdl <- na.contiguous(cbind(USDistLag, lag(USDistLag, k = -1))) > colnames(usdl) <- c("con", "gnp", "con1", "gnp1") > > ## C(t) = a0 + a1*Y(t) + a2*C(t-1) + u > fm1 <- lm(con ~ gnp + con1, data = usdl) > > ## C(t) = b0 + b1*Y(t) + b2*Y(t-1) + v > fm2 <- lm(con ~ gnp + gnp1, data = usdl) > > ## Cox test in both directions: > coxtest(fm1, fm2) Cox test Model 1: con ~ gnp + con1 Model 2: con ~ gnp + gnp1 Estimate Std. Error z value Pr(>|z|) fitted(M1) ~ M2 2.8543 1.29978 2.1960 0.02809 * fitted(M2) ~ M1 -4.4003 0.78961 -5.5727 2.508e-08 *** --- Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 > > ## ...and do the same for jtest() and encomptest(). > ## Notice that in this particular case they are coincident. > jtest(fm1, fm2) J test Model 1: con ~ gnp + con1 Model 2: con ~ gnp + gnp1 Estimate Std. Error t value Pr(>|t|) M1 + fitted(M2) -2.7041 0.76273 -3.5454 0.0029371 ** M2 + fitted(M1) 2.7436 0.52710 5.2051 0.0001067 *** --- Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 > encomptest(fm1, fm2) Encompassing test Model 1: con ~ gnp + con1 Model 2: con ~ gnp + gnp1 Model E: con ~ gnp + con1 + gnp1 Res.Df Df F Pr(>F) M1 vs. ME 15 -1 12.569 0.0029371 ** M2 vs. ME 15 -1 27.093 0.0001067 *** --- Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 > > > > cleanEx() > nameEx("currencysubstitution") > ### * currencysubstitution > > flush(stderr()); flush(stdout()) > > ### Name: currencysubstitution > ### Title: Currency Substitution > ### Aliases: currencysubstitution > ### Keywords: datasets > > ### ** Examples > > data(currencysubstitution) > > ## page 130, fit Miles OLS model and Bordo-Choudri OLS model > ## third and last line in Table 6.3 > > modelMiles <- logCUS ~ log((1+Iu)/(1+Ic)) > lm(modelMiles, data=currencysubstitution) Call: lm(formula = modelMiles, data = currencysubstitution) Coefficients: (Intercept) log((1 + Iu)/(1 + Ic)) 2.562 5.871 > dwtest(modelMiles, data=currencysubstitution) Durbin-Watson test data: modelMiles DW = 0.2702, p-value < 2.2e-16 alternative hypothesis: true autocorrelation is greater than 0 > > modelBordoChoudri <- logCUS ~ I(Iu-Ic) + Ic + logY > lm(modelBordoChoudri, data=currencysubstitution) Call: lm(formula = modelBordoChoudri, data = currencysubstitution) Coefficients: (Intercept) I(Iu - Ic) Ic logY -5.9782 -9.2158 -18.4563 0.8366 > dwtest(modelBordoChoudri, data=currencysubstitution) Durbin-Watson test data: modelBordoChoudri DW = 0.5351, p-value = 2.261e-13 alternative hypothesis: true autocorrelation is greater than 0 > > > ## page 131, fit test statistics in Table 6.4 b) > ################################################ > > if(require(strucchange, quietly = TRUE)) { + ## Fluctuation test + sctest(modelMiles, type="fluctuation", data=currencysubstitution, + rescale=FALSE) } RE test (recursive estimates test) data: modelMiles RE = 3.1591, p-value = 8.583e-09 > > ## RESET > reset(modelMiles, data=currencysubstitution) RESET test data: modelMiles RESET = 1.1308, df1 = 2, df2 = 57, p-value = 0.3299 > reset(modelMiles, power=2, type="regressor", data=currencysubstitution) RESET test data: modelMiles RESET = 2.1078, df1 = 1, df2 = 58, p-value = 0.1519 > reset(modelMiles, type="princomp", data=currencysubstitution) RESET test data: modelMiles RESET = 1.1308, df1 = 2, df2 = 57, p-value = 0.3299 > > ## Harvey-Collier > harvtest(modelMiles, order.by = ~log((1+Iu)/(1+Ic)), data=currencysubstitution) Harvey-Collier test data: modelMiles HC = 0.8691, df = 58, p-value = 0.3884 > > ## Rainbow > raintest(modelMiles, order.by = "mahalanobis", data=currencysubstitution) Rainbow test data: modelMiles Rain = 1.766, df1 = 31, df2 = 28, p-value = 0.06603 > > > ## page 132, fit test statistics in Table 6.4 d) > ################################################ > > if(require(strucchange, quietly = TRUE)) { + ## Chow 1970(2) + sctest(modelBordoChoudri, point=c(1970,2), data=currencysubstitution, + type="Chow") } Chow test data: modelBordoChoudri F = 14.5716, p-value = 4.317e-08 > > ## Breusch-Pagan > bptest(modelBordoChoudri, data=currencysubstitution, studentize=FALSE) Breusch-Pagan test data: modelBordoChoudri BP = 14.5139, df = 3, p-value = 0.002283 > bptest(modelBordoChoudri, data=currencysubstitution) studentized Breusch-Pagan test data: modelBordoChoudri BP = 10.7358, df = 3, p-value = 0.01324 > > ## RESET > reset(modelBordoChoudri, data=currencysubstitution) RESET test data: modelBordoChoudri RESET = 0.6931, df1 = 2, df2 = 55, p-value = 0.5043 > reset(modelBordoChoudri, power=2, type="regressor", data=currencysubstitution) RESET test data: modelBordoChoudri RESET = 6.6775, df1 = 3, df2 = 54, p-value = 0.0006458 > reset(modelBordoChoudri, type="princomp", data=currencysubstitution) RESET test data: modelBordoChoudri RESET = 8.2945, df1 = 2, df2 = 55, p-value = 0.0007107 > > ## Harvey-Collier > harvtest(modelBordoChoudri, order.by = ~ I(Iu-Ic), data=currencysubstitution) Harvey-Collier test data: modelBordoChoudri HC = 0.7554, df = 56, p-value = 0.4532 > harvtest(modelBordoChoudri, order.by = ~ Ic, data=currencysubstitution) Harvey-Collier test data: modelBordoChoudri HC = 0.4026, df = 56, p-value = 0.6888 > harvtest(modelBordoChoudri, order.by = ~ logY, data=currencysubstitution) Harvey-Collier test data: modelBordoChoudri HC = 2.5016, df = 56, p-value = 0.01531 > > ## Rainbow > raintest(modelBordoChoudri, order.by = "mahalanobis", data=currencysubstitution) Rainbow test data: modelBordoChoudri Rain = 3.7711, df1 = 31, df2 = 26, p-value = 0.0004604 > > > > cleanEx() detaching 'package:strucchange', 'package:sandwich' > nameEx("dwtest") > ### * dwtest > > flush(stderr()); flush(stdout()) > > ### Name: dwtest > ### Title: Durbin-Watson Test > ### Aliases: dwtest > ### Keywords: htest > > ### ** Examples > > > ## generate two AR(1) error terms with parameter > ## rho = 0 (white noise) and rho = 0.9 respectively > err1 <- rnorm(100) > > ## generate regressor and dependent variable > x <- rep(c(-1,1), 50) > y1 <- 1 + x + err1 > > ## perform Durbin-Watson test > dwtest(y1 ~ x) Durbin-Watson test data: y1 ~ x DW = 1.9762, p-value = 0.4924 alternative hypothesis: true autocorrelation is greater than 0 > > err2 <- filter(err1, 0.9, method="recursive") > y2 <- 1 + x + err2 > dwtest(y2 ~ x) Durbin-Watson test data: y2 ~ x DW = 0.4596, p-value = 7.862e-15 alternative hypothesis: true autocorrelation is greater than 0 > > > > > cleanEx() > nameEx("encomptest") > ### * encomptest > > flush(stderr()); flush(stdout()) > > ### Name: encomptest > ### Title: Encompassing Test for Comparing Non-Nested Models > ### Aliases: encomptest > ### Keywords: htest > > ### ** Examples > > ## Fit two competing, non-nested models for aggregate > ## consumption, as in Greene (1993), Examples 7.11 and 7.12 > > ## load data and compute lags > data(USDistLag) > usdl <- na.contiguous(cbind(USDistLag, lag(USDistLag, k = -1))) > colnames(usdl) <- c("con", "gnp", "con1", "gnp1") > > ## C(t) = a0 + a1*Y(t) + a2*C(t-1) + u > fm1 <- lm(con ~ gnp + con1, data = usdl) > > ## C(t) = b0 + b1*Y(t) + b2*Y(t-1) + v > fm2 <- lm(con ~ gnp + gnp1, data = usdl) > > ## Encompassing model > fm3 <- lm(con ~ gnp + con1 + gnp1, data = usdl) > > ## Cox test in both directions: > coxtest(fm1, fm2) Cox test Model 1: con ~ gnp + con1 Model 2: con ~ gnp + gnp1 Estimate Std. Error z value Pr(>|z|) fitted(M1) ~ M2 2.8543 1.29978 2.1960 0.02809 * fitted(M2) ~ M1 -4.4003 0.78961 -5.5727 2.508e-08 *** --- Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 > > ## ...and do the same for jtest() and encomptest(). > ## Notice that in this particular case they are coincident. > jtest(fm1, fm2) J test Model 1: con ~ gnp + con1 Model 2: con ~ gnp + gnp1 Estimate Std. Error t value Pr(>|t|) M1 + fitted(M2) -2.7041 0.76273 -3.5454 0.0029371 ** M2 + fitted(M1) 2.7436 0.52710 5.2051 0.0001067 *** --- Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 > encomptest(fm1, fm2) Encompassing test Model 1: con ~ gnp + con1 Model 2: con ~ gnp + gnp1 Model E: con ~ gnp + con1 + gnp1 Res.Df Df F Pr(>F) M1 vs. ME 15 -1 12.569 0.0029371 ** M2 vs. ME 15 -1 27.093 0.0001067 *** --- Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 > > ## the encompassing test is essentially > waldtest(fm1, fm3, fm2) Wald test Model 1: con ~ gnp + con1 Model 2: con ~ gnp + con1 + gnp1 Model 3: con ~ gnp + gnp1 Res.Df Df F Pr(>F) 1 16 2 15 1 12.569 0.0029371 ** 3 16 -1 27.093 0.0001067 *** --- Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 > > > > cleanEx() > nameEx("ftemp") > ### * ftemp > > flush(stderr()); flush(stdout()) > > ### Name: ftemp > ### Title: Femal Temperature Data > ### Aliases: ftemp > ### Keywords: datasets > > ### ** Examples > > data(ftemp) > plot(ftemp) > y <- window(ftemp, start = 8, end = 60) > if(require(strucchange)) { + bp <- breakpoints(y ~ 1) + plot(bp) + fm.seg <- lm(y ~ 0 + breakfactor(bp)) + plot(y) + lines(8:60, fitted(fm.seg), col = 4) + lines(confint(bp)) + } Loading required package: strucchange Loading required package: sandwich > > > > > cleanEx() detaching 'package:strucchange', 'package:sandwich' > nameEx("gqtest") > ### * gqtest > > flush(stderr()); flush(stdout()) > > ### Name: gqtest > ### Title: Goldfeld-Quandt Test > ### Aliases: gqtest > ### Keywords: htest > > ### ** Examples > > ## generate a regressor > x <- rep(c(-1,1), 50) > ## generate heteroskedastic and homoskedastic disturbances > err1 <- c(rnorm(50, sd=1), rnorm(50, sd=2)) > err2 <- rnorm(100) > ## generate a linear relationship > y1 <- 1 + x + err1 > y2 <- 1 + x + err2 > ## perform Goldfeld-Quandt test > gqtest(y1 ~ x) Goldfeld-Quandt test data: y1 ~ x GQ = 5.4699, df1 = 48, df2 = 48, p-value = 1.404e-08 > gqtest(y2 ~ x) Goldfeld-Quandt test data: y2 ~ x GQ = 1.2638, df1 = 48, df2 = 48, p-value = 0.2102 > > > > cleanEx() > nameEx("grangertest") > ### * grangertest > > flush(stderr()); flush(stdout()) > > ### Name: grangertest > ### Title: Test for Granger Causality > ### Aliases: grangertest grangertest.default grangertest.formula > ### Keywords: htest > > ### ** Examples > > ## Which came first: the chicken or the egg? > data(ChickEgg) > grangertest(egg ~ chicken, order = 3, data = ChickEgg) Granger causality test Model 1: egg ~ Lags(egg, 1:3) + Lags(chicken, 1:3) Model 2: egg ~ Lags(egg, 1:3) Res.Df Df F Pr(>F) 1 44 2 47 -3 0.5916 0.6238 > grangertest(chicken ~ egg, order = 3, data = ChickEgg) Granger causality test Model 1: chicken ~ Lags(chicken, 1:3) + Lags(egg, 1:3) Model 2: chicken ~ Lags(chicken, 1:3) Res.Df Df F Pr(>F) 1 44 2 47 -3 5.405 0.002966 ** --- Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 > > ## alternative ways of specifying the same test > grangertest(ChickEgg, order = 3) Granger causality test Model 1: egg ~ Lags(egg, 1:3) + Lags(chicken, 1:3) Model 2: egg ~ Lags(egg, 1:3) Res.Df Df F Pr(>F) 1 44 2 47 -3 0.5916 0.6238 > grangertest(ChickEgg[, 1], ChickEgg[, 2], order = 3) Granger causality test Model 1: ChickEgg[, 2] ~ Lags(ChickEgg[, 2], 1:3) + Lags(ChickEgg[, 1], 1:3) Model 2: ChickEgg[, 2] ~ Lags(ChickEgg[, 2], 1:3) Res.Df Df F Pr(>F) 1 44 2 47 -3 0.5916 0.6238 > > > > cleanEx() > nameEx("growthofmoney") > ### * growthofmoney > > flush(stderr()); flush(stdout()) > > ### Name: growthofmoney > ### Title: Growth of Money Supply > ### Aliases: growthofmoney > ### Keywords: datasets > > ### ** Examples > > data(growthofmoney) > > ## page 137, fit Hetzel OLS model > ## first/second line in Table 6.7 > > modelHetzel <- TG1.TG0 ~ AG0.TG0 > lm(modelHetzel, data=growthofmoney) Call: lm(formula = modelHetzel, data = growthofmoney) Coefficients: (Intercept) AG0.TG0 0.007322 0.324858 > dwtest(modelHetzel, data=growthofmoney) Durbin-Watson test data: modelHetzel DW = 2.9046, p-value = 0.9839 alternative hypothesis: true autocorrelation is greater than 0 > > > ## page 135, fit test statistics in Table 6.8 > ############################################# > > if(require(strucchange, quietly = TRUE)) { + ## Chow 1974(1) + sctest(modelHetzel, point=c(1973,4), data=growthofmoney, type="Chow") } Chow test data: modelHetzel F = 0.3788, p-value = 0.6911 > > ## RESET > reset(modelHetzel, data=growthofmoney) RESET test data: modelHetzel RESET = 7.9337, df1 = 2, df2 = 15, p-value = 0.004461 > reset(modelHetzel, power=2, type="regressor", data=growthofmoney) RESET test data: modelHetzel RESET = 1.5265, df1 = 1, df2 = 16, p-value = 0.2345 > reset(modelHetzel, type="princomp", data=growthofmoney) RESET test data: modelHetzel RESET = 7.9337, df1 = 2, df2 = 15, p-value = 0.004461 > > ## Harvey-Collier > harvtest(modelHetzel, order.by= ~ AG0.TG0, data=growthofmoney) Harvey-Collier test data: modelHetzel HC = 3.7768, df = 16, p-value = 0.001651 > > ## Rainbow > raintest(modelHetzel, order.by = "mahalanobis", data=growthofmoney) Rainbow test data: modelHetzel Rain = 7.1731, df1 = 10, df2 = 7, p-value = 0.007924 > > > ## Identification of outliers > ############################# > > ## Figure 6.1 > plot(modelHetzel, data=growthofmoney) > abline(v=0) > abline(h=0) > abline(coef(lm(modelHetzel, data=growthofmoney)), col=2) > > ## Table 6.7, last line > growthofmoney2 <- as.data.frame(growthofmoney[-c(5:6),]) > lm(modelHetzel, data=growthofmoney2) Call: lm(formula = modelHetzel, data = growthofmoney2) Coefficients: (Intercept) AG0.TG0 0.05673 0.17752 > dwtest(modelHetzel, data=growthofmoney2) Durbin-Watson test data: modelHetzel DW = 1.5019, p-value = 0.1351 alternative hypothesis: true autocorrelation is greater than 0 > > > > cleanEx() detaching 'package:strucchange', 'package:sandwich' > nameEx("harvtest") > ### * harvtest > > flush(stderr()); flush(stdout()) > > ### Name: harvtest > ### Title: Harvey-Collier Test > ### Aliases: harvtest > ### Keywords: htest > > ### ** Examples > > # generate a regressor and dependent variable > x <- 1:50 > y1 <- 1 + x + rnorm(50) > y2 <- y1 + 0.3*x^2 > > ## perform Harvey-Collier test > harv <- harvtest(y1 ~ x) > harv Harvey-Collier test data: y1 ~ x HC = 0.5401, df = 47, p-value = 0.5917 > ## calculate critical value vor 0.05 level > qt(0.95, harv$parameter) [1] 1.677927 > harvtest(y2 ~ x) Harvey-Collier test data: y2 ~ x HC = 7.9751, df = 47, p-value = 2.775e-10 > > > > cleanEx() > nameEx("hmctest") > ### * hmctest > > flush(stderr()); flush(stdout()) > > ### Name: hmctest > ### Title: Harrison-McCabe test > ### Aliases: hmctest > ### Keywords: htest > > ### ** Examples > > ## generate a regressor > x <- rep(c(-1,1), 50) > ## generate heteroskedastic and homoskedastic disturbances > err1 <- c(rnorm(50, sd=1), rnorm(50, sd=2)) > err2 <- rnorm(100) > ## generate a linear relationship > y1 <- 1 + x + err1 > y2 <- 1 + x + err2 > ## perform Harrison-McCabe test > hmctest(y1 ~ x) Harrison-McCabe test data: y1 ~ x HMC = 0.1554, p-value < 2.2e-16 > hmctest(y2 ~ x) Harrison-McCabe test data: y2 ~ x HMC = 0.4429, p-value = 0.225 > > > > cleanEx() > nameEx("jocci") > ### * jocci > > flush(stderr()); flush(stdout()) > > ### Name: jocci > ### Title: U.S. Macroeconomic Time Series > ### Aliases: fyff gmdc ip jocci lhur pw561 > ### Keywords: datasets > > ### ** Examples > > data(jocci) > > dwtest(dy ~ 1, data = jocci) Durbin-Watson test data: dy ~ 1 DW = 1.0581, p-value < 2.2e-16 alternative hypothesis: true autocorrelation is greater than 0 > bgtest(dy ~ 1, data = jocci) Breusch-Godfrey test for serial correlation of order up to 1 data: dy ~ 1 LM test = 91.0373, df = 1, p-value < 2.2e-16 > ar6.model <- dy ~ dy1 + dy2 + dy3 + dy4 + dy5 +dy6 > bgtest(ar6.model, data = jocci) Breusch-Godfrey test for serial correlation of order up to 1 data: ar6.model LM test = 0.2, df = 1, p-value = 0.6547 > > var.model <- ~ I(dy1^2) + I(dy2^2) + I(dy3^2) + I(dy4^2) + I(dy5^2) + I(dy6^2) > bptest(ar6.model, var.model, data = jocci) studentized Breusch-Pagan test data: ar6.model BP = 22.3771, df = 6, p-value = 0.001034 > > > > cleanEx() > nameEx("jtest") > ### * jtest > > flush(stderr()); flush(stdout()) > > ### Name: jtest > ### Title: J Test for Comparing Non-Nested Models > ### Aliases: jtest > ### Keywords: htest > > ### ** Examples > > ## Fit two competing, non-nested models for aggregate > ## consumption, as in Greene (1993), Examples 7.11 and 7.12 > > ## load data and compute lags > data(USDistLag) > usdl <- na.contiguous(cbind(USDistLag, lag(USDistLag, k = -1))) > colnames(usdl) <- c("con", "gnp", "con1", "gnp1") > > ## C(t) = a0 + a1*Y(t) + a2*C(t-1) + u > fm1 <- lm(con ~ gnp + con1, data = usdl) > > ## C(t) = b0 + b1*Y(t) + b2*Y(t-1) + v > fm2 <- lm(con ~ gnp + gnp1, data = usdl) > > ## Cox test in both directions: > coxtest(fm1, fm2) Cox test Model 1: con ~ gnp + con1 Model 2: con ~ gnp + gnp1 Estimate Std. Error z value Pr(>|z|) fitted(M1) ~ M2 2.8543 1.29978 2.1960 0.02809 * fitted(M2) ~ M1 -4.4003 0.78961 -5.5727 2.508e-08 *** --- Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 > > ## ...and do the same for jtest() and encomptest(). > ## Notice that in this particular case they are coincident. > jtest(fm1, fm2) J test Model 1: con ~ gnp + con1 Model 2: con ~ gnp + gnp1 Estimate Std. Error t value Pr(>|t|) M1 + fitted(M2) -2.7041 0.76273 -3.5454 0.0029371 ** M2 + fitted(M1) 2.7436 0.52710 5.2051 0.0001067 *** --- Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 > encomptest(fm1, fm2) Encompassing test Model 1: con ~ gnp + con1 Model 2: con ~ gnp + gnp1 Model E: con ~ gnp + con1 + gnp1 Res.Df Df F Pr(>F) M1 vs. ME 15 -1 12.569 0.0029371 ** M2 vs. ME 15 -1 27.093 0.0001067 *** --- Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 > > > > cleanEx() > nameEx("lrtest") > ### * lrtest > > flush(stderr()); flush(stdout()) > > ### Name: lrtest > ### Title: Likelihood Ratio Test of Nested Models > ### Aliases: lrtest lrtest.formula lrtest.default > ### Keywords: htest > > ### ** Examples > > ## with data from Greene (1993): > ## load data and compute lags > data("USDistLag") > usdl <- na.contiguous(cbind(USDistLag, lag(USDistLag, k = -1))) > colnames(usdl) <- c("con", "gnp", "con1", "gnp1") > > fm1 <- lm(con ~ gnp + gnp1, data = usdl) > fm2 <- lm(con ~ gnp + con1 + gnp1, data = usdl) > > ## various equivalent specifications of the LR test > lrtest(fm2, fm1) Likelihood ratio test Model 1: con ~ gnp + con1 + gnp1 Model 2: con ~ gnp + gnp1 #Df LogLik Df Chisq Pr(>Chisq) 1 5 -56.069 2 4 -65.871 -1 19.605 9.524e-06 *** --- Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 > lrtest(fm2, 2) Likelihood ratio test Model 1: con ~ gnp + con1 + gnp1 Model 2: con ~ gnp + gnp1 #Df LogLik Df Chisq Pr(>Chisq) 1 5 -56.069 2 4 -65.871 -1 19.605 9.524e-06 *** --- Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 > lrtest(fm2, "con1") Likelihood ratio test Model 1: con ~ gnp + con1 + gnp1 Model 2: con ~ gnp + gnp1 #Df LogLik Df Chisq Pr(>Chisq) 1 5 -56.069 2 4 -65.871 -1 19.605 9.524e-06 *** --- Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 > lrtest(fm2, . ~ . - con1) Likelihood ratio test Model 1: con ~ gnp + con1 + gnp1 Model 2: con ~ gnp + gnp1 #Df LogLik Df Chisq Pr(>Chisq) 1 5 -56.069 2 4 -65.871 -1 19.605 9.524e-06 *** --- Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 > > > > cleanEx() > nameEx("moneydemand") > ### * moneydemand > > flush(stderr()); flush(stdout()) > > ### Name: moneydemand > ### Title: Money Demand > ### Aliases: moneydemand > ### Keywords: datasets > > ### ** Examples > > data(moneydemand) > moneydemand <- window(moneydemand, start=1880, end=1972) > > ## page 125, fit Allen OLS model (and Durbin-Watson test), > ## last line in Table 6.1 > > modelAllen <- logM ~ logYp + Rs + Rl + logSpp > lm(modelAllen, data = moneydemand) Call: lm(formula = modelAllen, data = moneydemand) Coefficients: (Intercept) logYp Rs Rl logSpp -15.48806 1.61700 -0.01885 -0.08354 0.08421 > dwtest(modelAllen, data = moneydemand) Durbin-Watson test data: modelAllen DW = 0.1814, p-value < 2.2e-16 alternative hypothesis: true autocorrelation is greater than 0 > > ## page 127, fit test statistics in Table 6.1 c) > ################################################ > > ## Breusch-Pagan > bptest(modelAllen, studentize = FALSE, data = moneydemand) Breusch-Pagan test data: modelAllen BP = 13.3422, df = 4, p-value = 0.009719 > bptest(modelAllen, studentize = TRUE, data = moneydemand) studentized Breusch-Pagan test data: modelAllen BP = 17.0695, df = 4, p-value = 0.001874 > > ## RESET > reset(modelAllen, data = moneydemand) RESET test data: modelAllen RESET = 92.7489, df1 = 2, df2 = 86, p-value < 2.2e-16 > reset(modelAllen, power = 2, type = "regressor", data = moneydemand) RESET test data: modelAllen RESET = 68.1973, df1 = 4, df2 = 84, p-value < 2.2e-16 > reset(modelAllen, type = "princomp", data = moneydemand) RESET test data: modelAllen RESET = 1.7024, df1 = 2, df2 = 86, p-value = 0.1883 > > ## Harvey-Collier tests (up to sign of the test statistic) > harvtest(modelAllen, order.by = ~logYp, data = moneydemand) Harvey-Collier test data: modelAllen HC = 5.5579, df = 87, p-value = 2.943e-07 > harvtest(modelAllen, order.by = ~Rs, data = moneydemand) Harvey-Collier test data: modelAllen HC = 1.4391, df = 87, p-value = 0.1537 > harvtest(modelAllen, order.by = ~Rl, data = moneydemand) Harvey-Collier test data: modelAllen HC = 0.6218, df = 87, p-value = 0.5357 > harvtest(modelAllen, order.by = ~logSpp, data = moneydemand) Harvey-Collier test data: modelAllen HC = 0.7943, df = 87, p-value = 0.4292 > > ## Rainbow test > raintest(modelAllen, order.by = "mahalanobis", data = moneydemand) Rainbow test data: modelAllen Rain = 1.1387, df1 = 47, df2 = 41, p-value = 0.3374 > > > if(require(strucchange, quietly = TRUE)) { + ## Chow (1913) + sctest(modelAllen, point=c(1913,1), data = moneydemand, type = "Chow") } Chow test data: modelAllen F = 58.3138, p-value < 2.2e-16 > > if(require(strucchange, quietly = TRUE)) { + ## Fluctuation + sctest(modelAllen, type = "fluctuation", rescale = FALSE, data = moneydemand)} RE test (recursive estimates test) data: modelAllen RE = 9.5229, p-value < 2.2e-16 > > > > cleanEx() detaching 'package:strucchange', 'package:sandwich' > nameEx("petest") > ### * petest > > flush(stderr()); flush(stdout()) > > ### Name: petest > ### Title: PE Test for Linear vs. Log-Linear Specifications > ### Aliases: petest > ### Keywords: htest > > ### ** Examples > > if(require("AER")) { + ## Verbeek (2004), Section 3 + data("HousePrices", package = "AER") + + ### Verbeek (2004), Table 3.3 + hp_lin <- lm(price ~ . , data = HousePrices) + summary(hp_lin) + + ### Verbeek (2004), Table 3.2 + hp_log <- update(hp_lin, log(price) ~ . - lotsize + log(lotsize)) + summary(hp_log) + + ## PE test + petest(hp_lin, hp_log) + + + ## Greene (2003), Example 9.8 + data("USMacroG", package = "AER") + + ## Greene (2003), Table 9.2 + usm_lin <- lm(m1 ~ tbill + gdp, data = USMacroG) + usm_log <- lm(log(m1) ~ log(tbill) + log(gdp), data = USMacroG) + petest(usm_lin, usm_log) + ## matches results from Greene's errata + } Loading required package: AER Loading required package: car Loading required package: sandwich Loading required package: survival Loading required package: splines PE test Model 1: m1 ~ tbill + gdp Model 2: log(m1) ~ log(tbill) + log(gdp) Estimate Std. Error t value Pr(>|t|) M1 + log(fit(M1))-fit(M2) -209.35 26.7580 -7.8240 2.9e-13 *** M2 + fit(M1)-exp(fit(M2)) 0.00 0.0003 -0.1603 0.8728 --- Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 > > > > cleanEx() detaching 'package:AER', 'package:survival', 'package:splines', 'package:sandwich', 'package:car' > nameEx("raintest") > ### * raintest > > flush(stderr()); flush(stdout()) > > ### Name: raintest > ### Title: Rainbow Test > ### Aliases: raintest > ### Keywords: htest > > ### ** Examples > > x <- c(1:30) > y <- x^2 + rnorm(30,0,2) > rain <- raintest(y ~ x) > rain Rainbow test data: y ~ x Rain = 25.7596, df1 = 15, df2 = 13, p-value = 3.169e-07 > ## critical value > qf(0.95, rain$parameter[1], rain$parameter[2]) [1] 2.53311 > > > > cleanEx() > nameEx("resettest") > ### * resettest > > flush(stderr()); flush(stdout()) > > ### Name: resettest > ### Title: RESET Test > ### Aliases: resettest reset > ### Keywords: htest > > ### ** Examples > > x <- c(1:30) > y1 <- 1 + x + x^2 + rnorm(30) > y2 <- 1 + x + rnorm(30) > resettest(y1 ~ x , power=2, type="regressor") RESET test data: y1 ~ x RESET = 153880.6, df1 = 1, df2 = 27, p-value < 2.2e-16 > resettest(y2 ~ x , power=2, type="regressor") RESET test data: y2 ~ x RESET = 0.0077, df1 = 1, df2 = 27, p-value = 0.9306 > > > > cleanEx() > nameEx("unemployment") > ### * unemployment > > flush(stderr()); flush(stdout()) > > ### Name: unemployment > ### Title: Unemployment Data > ### Aliases: unemployment > ### Keywords: datasets > > ### ** Examples > > data(unemployment) > > ## data transformation > myunemployment <- window(unemployment, start=1895, end=1956) > time <- 6:67 > > ## page 144, fit Rea OLS model > ## last line in Table 6.12 > > modelRea <- UN ~ log(m/p) + log(G) + log(x) + time > lm(modelRea, data = myunemployment) Call: lm(formula = modelRea, data = myunemployment) Coefficients: (Intercept) log(m/p) log(G) log(x) time 86.9466 -13.8332 -5.7374 -9.5063 0.9158 > ## coefficients of logged variables differ by factor 100 > > ## page 143, fit test statistics in table 6.11 > ############################################## > > if(require(strucchange, quietly = TRUE)) { + ## Chow 1941 + sctest(modelRea, point=c(1940,1), data=myunemployment, type="Chow") } Chow test data: modelRea F = 2.7896, p-value = 0.02634 > > ## Breusch-Pagan > bptest(modelRea, data=myunemployment, studentize=FALSE) Breusch-Pagan test data: modelRea BP = 6.191, df = 4, p-value = 0.1853 > bptest(modelRea, data=myunemployment) studentized Breusch-Pagan test data: modelRea BP = 5.6325, df = 4, p-value = 0.2283 > > ## RESET (a)-(b) > reset(modelRea, data=myunemployment) RESET test data: modelRea RESET = 13.594, df1 = 2, df2 = 55, p-value = 1.595e-05 > reset(modelRea, power=2, type="regressor", data=myunemployment) RESET test data: modelRea RESET = 5.2705, df1 = 4, df2 = 53, p-value = 0.001195 > > ## Harvey-Collier > harvtest(modelRea, order.by = ~ log(m/p), data=myunemployment) Harvey-Collier test data: modelRea HC = 0.2315, df = 56, p-value = 0.8178 > harvtest(modelRea, order.by = ~ log(G), data=myunemployment) Harvey-Collier test data: modelRea HC = 1.8008, df = 56, p-value = 0.07711 > harvtest(modelRea, order.by = ~ log(x), data=myunemployment) Harvey-Collier test data: modelRea HC = 0.7068, df = 56, p-value = 0.4826 > harvtest(modelRea, data=myunemployment) Harvey-Collier test data: modelRea HC = 1.6957, df = 56, p-value = 0.0955 > > ## Rainbow > raintest(modelRea, order.by = "mahalanobis", data=myunemployment) Rainbow test data: modelRea Rain = 1.9521, df1 = 31, df2 = 26, p-value = 0.04274 > > > > cleanEx() detaching 'package:strucchange', 'package:sandwich' > nameEx("valueofstocks") > ### * valueofstocks > > flush(stderr()); flush(stdout()) > > ### Name: valueofstocks > ### Title: Value of Stocks > ### Aliases: valueofstocks > ### Keywords: datasets > > ### ** Examples > > data(valueofstocks) > lm(log(VST) ~., data=valueofstocks) Call: lm(formula = log(VST) ~ ., data = valueofstocks) Coefficients: (Intercept) MB RTPD RTPS XBC 4.724163 0.017505 -0.010756 -0.046852 0.001713 > > > > cleanEx() > nameEx("wages") > ### * wages > > flush(stderr()); flush(stdout()) > > ### Name: wages > ### Title: Wages > ### Aliases: wages > ### Keywords: datasets > > ### ** Examples > > data(wages) > > ## data transformation to include lagged series > mywages <- cbind(wages, lag(wages[,2], k = -1), lag(wages[,2], k = -2)) > colnames(mywages) <- c(colnames(wages), "CPI2", "CPI3") > mywages <- window(mywages, start=1962, end=1979) > > ## page 142, fit Nichols OLS model > ## equation (6.10) > > modelNichols <- w ~ CPI + CPI2 + CPI3 + u + mw > lm(modelNichols, data = mywages) Call: lm(formula = modelNichols, data = mywages) Coefficients: (Intercept) CPI CPI2 CPI3 u mw 4.27536 0.51882 0.12133 0.21404 -0.48786 0.03164 > > ## page 143, fit test statistics in table 6.11 > ############################################## > > if(require(strucchange, quietly = TRUE)) { + ## Chow 1972 + sctest(modelNichols, point=c(1971,1), data=mywages, type="Chow") } Chow test data: modelNichols F = 1.5372, p-value = 0.3074 > > ## Breusch-Pagan > bptest(modelNichols, data=mywages, studentize=FALSE) Breusch-Pagan test data: modelNichols BP = 3.6043, df = 5, p-value = 0.6077 > bptest(modelNichols, data=mywages) studentized Breusch-Pagan test data: modelNichols BP = 2.5505, df = 5, p-value = 0.7689 > > ## RESET (a)-(b) > reset(modelNichols, data=mywages) RESET test data: modelNichols RESET = 0.8642, df1 = 2, df2 = 10, p-value = 0.4506 > reset(modelNichols, power=2, type="regressor", data=mywages) RESET test data: modelNichols RESET = 8.3265, df1 = 5, df2 = 7, p-value = 0.00735 > > ## Harvey-Collier > harvtest(modelNichols, order.by = ~ CPI, data=mywages) Harvey-Collier test data: modelNichols HC = 2.0179, df = 11, p-value = 0.06866 > harvtest(modelNichols, order.by = ~ CPI2, data=mywages) Harvey-Collier test data: modelNichols HC = 4.1448, df = 11, p-value = 0.001631 > harvtest(modelNichols, order.by = ~ CPI3, data=mywages) Harvey-Collier test data: modelNichols HC = 2.2039, df = 11, p-value = 0.04975 > harvtest(modelNichols, order.by = ~ u, data=mywages) Harvey-Collier test data: modelNichols HC = 0.2084, df = 11, p-value = 0.8387 > > ## Rainbow > raintest(modelNichols, order.by = "mahalanobis", data=mywages) Rainbow test data: modelNichols Rain = 0.6107, df1 = 9, df2 = 3, p-value = 0.7512 > > > > cleanEx() detaching 'package:strucchange', 'package:sandwich' > nameEx("waldtest") > ### * waldtest > > flush(stderr()); flush(stdout()) > > ### Name: waldtest > ### Title: Wald Test of Nested Models > ### Aliases: waldtest waldtest.formula waldtest.default waldtest.lm > ### Keywords: htest > > ### ** Examples > > ## fit two competing, non-nested models and their encompassing > ## model for aggregate consumption, as in Greene (1993), > ## Examples 7.11 and 7.12 > > ## load data and compute lags > data(USDistLag) > usdl <- na.contiguous(cbind(USDistLag, lag(USDistLag, k = -1))) > colnames(usdl) <- c("con", "gnp", "con1", "gnp1") > > ## C(t) = a0 + a1*Y(t) + a2*C(t-1) + u > fm1 <- lm(con ~ gnp + con1, data = usdl) > > ## C(t) = b0 + b1*Y(t) + b2*Y(t-1) + v > fm2 <- lm(con ~ gnp + gnp1, data = usdl) > > ## Encompassing model > fm3 <- lm(con ~ gnp + con1 + gnp1, data = usdl) > > ## a simple ANOVA for fm3 vs. fm2 > waldtest(fm3, fm2) Wald test Model 1: con ~ gnp + con1 + gnp1 Model 2: con ~ gnp + gnp1 Res.Df Df F Pr(>F) 1 15 2 16 -1 27.093 0.0001067 *** --- Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 > anova(fm3, fm2) Analysis of Variance Table Model 1: con ~ gnp + con1 + gnp1 Model 2: con ~ gnp + gnp1 Res.Df RSS Df Sum of Sq F Pr(>F) 1 15 406.9 2 16 1141.8 -1 -734.93 27.093 0.0001067 *** --- Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 > ## as df = 1, the test is equivalent to the corresponding t test in > coeftest(fm3) t test of coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept) 6.334762 9.574496 0.6616 0.5182445 gnp 0.367170 0.048676 7.5432 1.763e-06 *** con1 1.044563 0.200682 5.2051 0.0001067 *** gnp1 -0.391718 0.110488 -3.5454 0.0029371 ** --- Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 > > ## various equivalent specifications of the two models > waldtest(fm3, fm2) Wald test Model 1: con ~ gnp + con1 + gnp1 Model 2: con ~ gnp + gnp1 Res.Df Df F Pr(>F) 1 15 2 16 -1 27.093 0.0001067 *** --- Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 > waldtest(fm3, 2) Wald test Model 1: con ~ gnp + con1 + gnp1 Model 2: con ~ gnp + gnp1 Res.Df Df F Pr(>F) 1 15 2 16 -1 27.093 0.0001067 *** --- Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 > waldtest(fm3, "con1") Wald test Model 1: con ~ gnp + con1 + gnp1 Model 2: con ~ gnp + gnp1 Res.Df Df F Pr(>F) 1 15 2 16 -1 27.093 0.0001067 *** --- Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 > waldtest(fm3, . ~ . - con1) Wald test Model 1: con ~ gnp + con1 + gnp1 Model 2: con ~ gnp + gnp1 Res.Df Df F Pr(>F) 1 15 2 16 -1 27.093 0.0001067 *** --- Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 > > ## comparing more than one model > ## (euqivalent to the encompassing test) > waldtest(fm1, fm3, fm2) Wald test Model 1: con ~ gnp + con1 Model 2: con ~ gnp + con1 + gnp1 Model 3: con ~ gnp + gnp1 Res.Df Df F Pr(>F) 1 16 2 15 1 12.569 0.0029371 ** 3 16 -1 27.093 0.0001067 *** --- Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 > encomptest(fm1, fm2) Encompassing test Model 1: con ~ gnp + con1 Model 2: con ~ gnp + gnp1 Model E: con ~ gnp + con1 + gnp1 Res.Df Df F Pr(>F) M1 vs. ME 15 -1 12.569 0.0029371 ** M2 vs. ME 15 -1 27.093 0.0001067 *** --- Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 > > ## using the asymptotic Chisq statistic > waldtest(fm3, fm2, test = "Chisq") Wald test Model 1: con ~ gnp + con1 + gnp1 Model 2: con ~ gnp + gnp1 Res.Df Df Chisq Pr(>Chisq) 1 15 2 16 -1 27.093 1.939e-07 *** --- Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 > ## plugging in a HC estimator > if(require(sandwich)) waldtest(fm3, fm2, vcov = vcovHC) Loading required package: sandwich Wald test Model 1: con ~ gnp + con1 + gnp1 Model 2: con ~ gnp + gnp1 Res.Df Df F Pr(>F) 1 15 2 16 -1 9.7456 0.006998 ** --- Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 > > > > ### *