lmtest/0000755000175400001440000000000013462005102011746 5ustar zeileisuserslmtest/inst/0000755000175400001440000000000013462003317012731 5ustar zeileisuserslmtest/inst/CITATION0000644000175400001440000000126513047554551014104 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 = "https://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 https://CRAN.R-project.org/doc/Rnews/") ) lmtest/inst/doc/0000755000175400001440000000000013462003317013476 5ustar zeileisuserslmtest/inst/doc/lmtest-intro.Rnw0000644000175400001440000002767212623340541016646 0ustar zeileisusers\documentclass[a4paper]{article} \usepackage{a4,graphicx,color} \usepackage[authoryear,round,longnamesfirst]{natbib} \usepackage{hyperref} \definecolor{Red}{rgb}{0.7,0,0} \definecolor{Blue}{rgb}{0,0,0.8} \oddsidemargin 0.15 in \evensidemargin 0.35 in \marginparwidth 1 in \oddsidemargin 0.25 in \evensidemargin 0.25 in \marginparwidth 0.75 in \textwidth 5.875 in \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 does not assume a particular timing of the change of variance, the Goldfeld-Quandt and the Harrison-McCabe tests suffer from the same problem as the Chow test for a change of the regression coefficients (available in package \texttt{strucchange}): 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.pdf0000644000175400001440000024724213462003320016637 0ustar zeileisusers%PDF-1.5 % 1 0 obj << /Type /ObjStm /Length 3297 /Filter /FlateDecode /N 63 /First 503 >> stream xZks۶~L /w:G؉"?N>0mWJI %qݑivgH&b6dI1Ôe:,dF*1X,,, % B*X`GP!?dA!3bRZQ^J&/%S$*&I͔(V!ޣ]`$ cfFajTABJQĔa6F;eFU˜*X$BE2Lt"q>h D#4er6F@`H j.Bh.rdJD( T"t  . ɁB1VA0^ qB'D-$@@?Md C#2~YLYAr]>y2 ' {҉] riRdl?)RQM,Bȟ.Gߜ$o?<ǏrBb1gwwdg/;ϊIJ嬀j+q:LyÀsC J̬Hgp;MYC$}nb]t-L_QFv.|y$8:+PCSYQ<$!ee~4DdEv"N0POŪO,;UcfɄ*kp}z\!{<+x"҅'|Nxm>QסR; z ۃyblM=68z3xB&ҶKC!M,q kڀμIR(-[cIw$xUmǃO{7{!V}˾r |Sz5eekFI_^x}0j-J%MX+鞣ATDžQh9-E6Њ9s]1 f'bџl`6-겙\Fƫ%r"3e cЖ-0o#<)ξܽ;%?m؎yˤVoѷnpYcl64=]`< Ud; ":R`A\%ҚTid-BLY*MK\uZ3U ߩo1T*lj o绗/^o)f9=Zv]-{EX*6`{]-rc9\,ͿRn\PVi:'hO)#%HWI?‘&՚L!۾tS>frW|'~m{d`vFj ul_gMtabv:)އ/Ihr mgpw ?zsK+Sg'h3D6i._yt?ҧ\a=hAb(%7iX J[JrQ##=Ye,Ya"a:500bӐuFfSZ䉞iE s &kW"w,y`״ A] |h(Cw .'-StW®UuHҊ?ؒe +[ 6LhΣ{V}csmw۾g:$\Bv7[Kszl5yC)(*]_x2q:_O`}vUI?-t5rz @=g 3.\ًg6UgGK}B\_pM(9fH6XO u3&endstream endobj 65 0 obj << /Subtype /XML /Type /Metadata /Length 1549 >> stream GPL Ghostscript 9.27 2019-04-30T10:26:55+02:00 2019-04-30T10:26:55+02:00 LaTeX with hyperref endstream endobj 66 0 obj << /Filter /FlateDecode /Length 8471 >> stream x]Y$q~_ m==6UygJ%K!r 2М8;%qdeFdU!P,dGfy7n_={L>ݥ͇\5pħDl4f*x4=l3X-d\]pD-|B^fC3. p N4fX:2k,mkk+搝K<41}&`H'4`c5PjҸ6:1'cm2P6^'7FnJs8&K%K5|¦~ă]Ö{qk-1<@xp&HP?6#XT1٥2 R5 G/Ԇ]O#I˴J% ۟27Rx`, Ը)'vW)Lb IPR#=po}e:`crvM'lH DxkO+hXv[5AͫbN`)7 \_h-fmx=4bj2lكnva~8{Jee`7Oήi"JZ)މG$?r_lV92#VU2(Pk P̭ }y|DW[~ioPZ%76_^ +VD0= @g}J؃H?Fs񕸾Q w>̀NZu{b~%=ٝhMO'cBcuՀ; ==Sb;(#up/ÿyM+@ihEgbu]j@BXP@]\[r΁ YH4xj{la1i!YS"xWƸvJP' @==\\zr1CG $B/2r傣crz%d)r[$bR} |%"*RxAэ̧6Y ီ _>=,h0n.!b}_0 ?ڰͺT ɅocbTW:)BKG{@db O$ [)^>cj3S%t5L k"cpc oV.bQ ֔$`&ڨ),- fYQ J h.H =YIHʄLnpڔO:ҞT4'& ,kC6!PlOg;XBS`udFm0jV{[%Z BF-]V4??cnp,O> aHLi\_:l>iCkVv`OSW, t,GNط ?\vqF4 N 6@1׹[N* )>$`~2eG0OM0XMM, ZϷ,B)u $FE%<|c!"r]PUД7CHOY;-$}@c ~[JHAƦήn+%}S v8'b^$FYeI/EbEu,(Mi-jt,Eu6Tj֕VB)=[sѱ t9J9] ڸdf<ɨ X0fnyV8aF5vR=xòuiU.jec#9vl*<_rB2K33a0J,=!܈|J{cS~{ eQIES}Qư2zoŪ+-\sjou_(P_v5v6D |<Rwfkov`dʉ_5|uKƺ TID,ՌXePPSAta=~}T+U#yvޜGJMEHޱ*|Zdͪе8'tQ^$}C | 2l/đkiN3σpt"?lQh? ]"#t4u$JFBgitsu0}IN#}Y+"a2 X))DC6QaZXчz6J#Z6Qt-YqBQGAX8Sf EM}KHOigX1eo`c,pww0E'9&甬Ϧ1SͫH! ;f!pWP@9w;ytTHtb@k G`>|r))'g9y_0>K[UtXΤ?CD5^nr"TrZWhت6:xqRZ< akzC0p8L<*DF̰%(zGcD/*b9N"_5oLtee܀4D.;zϠTC+Tr逇$lq>hRPFY$꺴|<`I|HK=:o#Pɢ~U30o*_{ jo6+;7 D}2dVbN萴I0Aolru~ZZF M%sfD11oP a `@Ɣ>7&U52/O+Ng8P"9;؎'gҍ|@AtѳYiJY {azG׃mj k۪ Bתn؈8nT6m2q]3#ZV u꫕+TA&_U{Zyzڞ Pf]`+)*R͢Ҕy[LCW`gUb4u0c#3DUp`)_d5r-fdZq+ffE]%b)u%. ,S.[cv:౸ȟ9Su 7#LBWx.{d\vpG&E'}%X#tI.#?p=΂{/X蠹0z( ;Lkc7kW3맧I|ԣͫzL])%L+Aـa5#ALyu#2W; H,HQfIa)y}->J|`KOG=9x>Ӿ4\U.TRʼn@}ʫY!D1i!keu1ɐ^XRdD<-*>N*8ng 6>1ƉӛnB[]4.dv RI㺆TFWArYK#ehU.{b; ŏpWͥoXN~K<7[x@"+ti3JVaj^Lg!!/[*aR̽fh!nj$)L/9sKBv"mex]oYw w0f|-攆{& /_7^=S0v10/Tڨ(qseL%0֜ᣡ㷪Pg׳(e]ߓەA@y2 php.֕3:xz̐uDEpqWgtk-ؐСR]oLKd2+B MccŖLUcTq"AY״}\o;+W5=CeFZ( :/rq"O19ٴ(?`=ܲ9n[.=C_pdݽc]|۳\&\uNZtm%9ټ\iސw0n2]\5,vaV#sad PLe?ZlYNi*Z 9=aR+ m<~ѷ>Ȳy2Zb6QCu@R!M^PW%W}'#ZT:OU^{Jx]$.%ʱ<CcbJˠc4LMNRݳgWsH>I„ `q@AT;wV` C1a,akZxuu<. kߊ)\j _@O18EV1pe:ּV^ B4 vMAI2bX, }J8L Lʛ.HYi6CsU@m \1ܶa8ly䠗mS}q4#.ѝFhr_!I}SL&/p7Tʒf}Ϲ)(oF QxT 5߾MU/Vo[\{iBbr%<*w qO]oU1^dOp./}v]kM]nZҦ,O .)--jIuuqCИ\}#2yьeiC60ӱgr)h HuX=Nkƭs=Ձ7|')`JS} x-4}<{%䡈 `M1RMm8މzAKSĉ.F% 7.BƮ/ UW g')g[š[eW9\;JAI Pm8*N`_--m0iyWRNOC}!2k {j<ԧ[l A>y҃Dx^ ܨ/RXAp vxiz$F?wBY µ*<:T.DH|矫eXro74wPqM{ uYYKQ4͵ʺfQʢkyV|iΘb "븚O\|7JЯ[> stream x}[sGr;w~v3uL؎Ĭ'vv%nAe RZoeVwWha1a:*+/o|?7o/=BS /_OEw5ģ+!^^cz8^c1rxyk?-K=ˇws1#|ck=xy?Ro%i5 MGLpCe@*Sk΅_^/9Wx+i pt!WW8køK>u.0ԣ.`oo,]?\[m__xõ{O {Kk8X @ЭXl0k9y\ouB>@joBOw0@eB9ͅgu|J9HݗC:|O(tַ;r vysƜNJ_-tol2G]dٱiB+~Ϯ6CN3aALo&JsiuLO!Py)F<28 ݝL.JA=!Hih*~!]@{^;ljbFEYO!/x-Orgs=Uݔ2k oWA Nl;mLgS/:Dڼ?Jk/ /M44L2Fkq)'\+q7io,p(4X}ΥxH`io&x);ljS8+>Bnbցo'*"p"{IojN䕫;f DZg.APQ ׍j DCh J3x&?/)EA)A8>ae:ryT8,SB(>險?;næ X?H={Nlz: a.Y {+"bW]̬xaϨ&MUJ-TgdO?5 -FITaaq$d.!|Ǵϛ8Ǹ>Fauw;' $K Kbm_N\gxaQj@dNZKQVYӦMeǮq=KfNו =t6>,TA i+8aǐ}IoӲ`'ƇM1,D(3*rqϒco߭&/XڱtjL7YK#>dKVVpEl~I_%2 R6bGL$50F9?\^UpgY&ta:ǪZ;%/s&$¤'7R1 Y,E9?zY츉?L@ ,qMue]?o s)tad y|mp&BaZ;˚)lﵦ{@lˤdS6n+4=^Z2_?~)9fEbÔeMxvT ߰>I6ISgӏ*js,KyD]§X/}4 OusI v1Fktq6^aݥZN=<}ou >Gdw=86r'jn[u ǀHYzFʈVw봬Mыgu~|=SwB P?O6n@ 鄕^SٕL٥<@2u1beZaE ئ߉"u8蝊tV¨O6$L878Ϻ3܏|dHj֚>7DS.ec^tQB?fn[ n}C f`0G:҅:;&ֵww__<(/ӟ_ȱy`oْ5c]ܳaC.r $i`+\d#cmX I[`%}@YŬ}c(>DҖ~5Ғѳ[Jk1g!-+@!9a1VQ23ђc`3lc% 8!sdQS!\zv N2TYQ U.N-w;@tѸcC\RFѹ[4#u>Ӿ#:[p2]PΐmAHd8oߒq܄GWăN=n 6o u3H&`;< J띤Hrn 6 -0$O4ڈ^\hd0 KjLY;Se  Rpr:)Bu;2YXv7mBBJę ȬOYuÆp3< D7 nG+#_땖$\ͣ2Tjȏ*uDC T' 1 ڕv*S}!fKԯ@!da5dbb(ePn4 ͝TJ#Qad^*C D X]@VPZGKfPW6Y@gZx(zSQHK :AE.Z܂.P))>?'vi!PoDLKQ6c,PHeANUqhIbipABJ T:.i6r{S -ZH_R*x֖ %IF"kKWo`W TJbR'$T$oHXRGH4RGWs#Ŭa>sEi Ax:!4y6eDcEyZ FD?0>KQ`!x6JvRopCF/$ ɕꁋU{)H3 <HJ3,V֘Y!ʲڽgF4@mQ I2$A6WMCRqNKH*-z0.@( /Jv]RGkfICWҸ#WRUAOv ºP~G5hԌ Y `b&g/?xOňATI.̉4*aqBSVFѢzL9DUb4dEbu[Uj\Gꡍ n8J@* Ad`zXЂWps̼Uy(ӯanb;Ӡ IvTWmhXh(uA+H65|R@A(Ц+ af00`18Ɉ dܠ-°غ8s!z(?K/A?\%]EJD3).m(EgL퓼zeQZ%Ead4Y $N_JD3Avw n~Rhi7HF= VrWц"C0FY-}+>znb^Ix!5maQaxA)e e-FYݘ}h,TlQZS@YZ¡z`vƭḏ'!џSN Q0cuU}Y$8P$E?. D h #DcO585:uʙA# sUSGIyJ[ G\y.YPDiJb 0L :gkWjpQ2jPW)9zvEbNSWco*LMV69)SDCR# % sCW9jQ,AђVH-bIt U3մHkH:U7 ej٪ S鷸)~Aeh:J4: (T- y@~Ǚ/,]hodY*(RLNR$Md f_y{dzY}S/$ȳ1ŷ޼{zqի@t{wpsz{n0nϝr̊H6_Z{m-iÔڲZ"ӈkkP^kkNSe5,2bs굶LN3ki&"!M\^1@꿠hxF |mvm_: - s(NKˮװ?^E2"CMFˮטk' vc0r_0n9%gfjexAr.cd]qfrд㣖ȵ_M 2L}¿"- c8bJٻ5Y7&$ `/A6Հ7iv* xM߲Hσ&zϞҺ/ ,7IΟnU+KS>IlKsࡣv*PQVLua6Z? bz<g^'HnJF$1t4QʉD-`c#k`A SHvBLoo`JX- Qe& ]0^bbT&c#V y߰2Qȹt$BH`Q6 CIN -uI3eX}LkT 0_$-GGo3+SXyHc5AS^42$Λ&>t!k xY#^f3b2H̕wOM5Z`șMC^ ALeFE4X80u&&K5_ c^u2'&fֵ<+ 1LU7lGϞ[5ސn -<^Y"-l>^f"*&YP3s҂&€:ad_BBT,˴XKf~Y+Iz_>s%4#^,x [2Z܂ryAR#dmWxXXG`"X(ű'܈ FV|\#ܥ²⭼[xE &\y@@!, I&F=4n_G:,.EMkAHQX xMV3>,e ˏ7!LAnS- $V-Wj²bipz1ʋQs,*UU҄X!ɧ8Uj(T׼h!\5(sTP- uTxQ߃1WĔdzQ5 c񂢉ނ(^j&Pz2.lI9*) tfE*(/al/b>,V/WgULe90*6ANQZfQpx 9h,X}4Ă¯\oeWcy M|U;DX+OlQ,RW#6RzYKr,]ʝrxJj@&&v=ˇ6 :' !Y,;jYYXvNk€6V^ʺR>ܯZ[/Hg mLCR^]^3hq|a7 h1= MhF|^zībA"%yj !B3ץt# s Y9-pV6k`J>2 [ y&1rE7,کxxiľZ\",ۭiDRJ FG~y-"VժbÂ~~dYI$%:f`5@}8dc^.rX-c#i| KHx L «AcޥdE|>F21}S3‹Q+ 6#˴$y!?5=}Ci[^R~'@3!(ٯRZH+^{ * Sl8 BGd!/IR uނkd' jW85EYqrt 6? Yl|b ̈́)c>rcXtnє`pڑx hئfpJxEڜ5u֑ѦxY%"U,"LHޤ6ɥY-|)'lPS/;W$fBeD<7ȕYȢ5?`U!X1f!^bjlu.-(,b$|7=`QRxz#m''۬l!]vnfϱ$)A7NLHr0yXz-V)=+Vx-NfFs-Lja%df,eM:tO^C{ OJH5N xQ*AF[zgpדgP#IY٠JA@S b7 H8h^ڀg>e jH,i'> :C&4\t0 Hp9fP"> tQ$ O^hAaHV C2Ө^4 l'Ed)(O// K]ELb>_ix؃KZR+g{-S2mLĹڲJ,ٯ-S ym-S/VL֖ vf|m8]P;&L,|/*]}忿CC40R17ZrzU[+{>˒^KˮWp5ZvYhszMWDp=ٟcһ/"_+Az~y,/KKn.|~[G-3ifc+iVie:|cC;H^Ԋuz/=o/1ӛO{isv|Y3]ƕ}9% TW|E~xwI@d7 4yʫt"5S6d:\2k؇v_پ{Pd☽C\ #Zdz#?[W[%3k?Sw&;$_0zר͙M~ڗ׆3?33m Gѽ[}pv>sx ~u}3im~_xFp&J8|ܐ8;j94AֺC$ըᏢ`??c1+DmYPzfYͶ^b[lT1ȎWC,Bיo5VFk5'3Q{ 3Ovimy+kyz4܄S7fB67mS,1FVJ?')K>v1fAG0ꄕ.⦞Y[bNGHm3O4vkaI=8w|t(i9YnɴMڗ3)MLzkSg̤JzVa߷{O>g{.:s"U-{$^C$Ńt]Ȥo@Sd c&(,S t|Atӻ dt~1DX` IPI I|><1~k{֕~zfe-, xHﶀ$#}|q)ڷyHSꐦXʧ]hjZMچI?j׎<|QI@aaS\;ʙ ]^.޿Fs~ >#z>ןN6;RU5/.9]o8bTٿ?]W!g|Szo^o˽Uokpy[Hco6ϿWώs^;:լ~:mq}1m5nݞ]x[?cž@Y_8&S(d,s:3_l?[㧳t:q߷J"\~sY*3U2N Qpendstream endobj 68 0 obj << /Filter /FlateDecode /Length 8264 >> stream x][q~ %dݼF c#vN#4]iάnk=Z={V cjd._ly}y{1n.~gw_>'߅)XiwO^\7.;'4[{+br{9O*(%Rj'fN[^ grA AX^ WԚ ;|^=A)̚6}s2`Kˑ +#C6 >ȁFLVDzv .1-?gz;`ÑpzpEcsa|ߞ=l4$aQ$a6 O>'P JOI{^NсLkOe5]_{Bx6zf-вfY@HU+l FQe>C1gA.ʭ ɦsX˜$)XujΒ|n6ɜaL`AB6ŬXN-^laq,Ba1H7O俋C*&k?h#Ib~O cDoȢ4 7vUDV1>zM5_cu]=^jϕxՈm?[ Ϗ1/Y鲰j?ןN]=*wܓ.E1: SIxO_V4_,(h:M5`mh&`k~~ೕ_/ӳ@"+)LJ-dI»[ye7\d/+)BmuU}"ϛ]9U"YͲ3Cb i)m_:}REoj&uY_+M˭bY3vY2C\޳ Zy(_b\^K=e$n/ʈ+{H/GҞ,c*]-|i| ?襈z`vkib-8 !d]@͖~XWaC꤭ VjH c,o-0pBP`([RqՒ[7,x5^;+ɛ\p!5y+,m"Zy6^ Y$lTL{05ebAqULq,$~7lUK?;! '%k(oIZvpaf/t<&VqS՟:RRC^S1W+,aBO?vkD~m$-5^MنU6i,-Χ2츽o%ėW;M dhϊ̃/Ә7,˂tYRFfqu~=%,SdKUY0:Fyw]5ڹ o8Bn[n2.kܔn#Ԗ,2N&$h,-7o+FuhM@qG߰  jcamcyڅ[I\yfk)hT^|z: YQ4Q2Fx"VUݪp37|# &1:}b`>) E{3,U98ҙSPear] ;|?-5Ե>7/KC;,52E@o5|@i&'mj3gab#Jяi8ۭ3Y ]JDcLnNAZ V6pew9{9n_v={Wm[qR%؎pumKU*a⸉ Ř8M_{ HIW|P=cX2@qɕ`U %]d KP6VAѪޔ! hm2!/`P%}FǗ s2Yž8IP'O3v߷(7jw-b{5Q)Pξ\Gc!BH>&~pb}JUEj'=90ͼ2Xetלf-lDWHF7/\er1)< /> KM^auH] K=fEln1`gWP(=OQJlYPf @-y9K:aȆlJ)e%@?1dOt&SbFߴn5c.Óܧ JED'uN3TK𚜔GF/E|(!^`.|3qߗI+W68G0rL$$&ONlq=4aRfÔf4C|XnfJhbPRJov8膌:6z3qjM:aG@ë G9 䀈're8ʒ+Qjkɰ05˅8i?"F03wk#0 9 c0dzԊ<0: gզ1ÿ]07WXu0f(P~vo qtS C\>dF00q#-7n1ua8cf;vR4!Oi;Ғ a2, Yruke8jRHv*i#Wq ,J*(AK:9&yC\coԸ9.qe8JJspԔ~F9#1&C"F3SӉ(L܆Ggvizd~vZ8fR.7">)CKD=(SI'B!eu|Ô:3$P8hj>97?buAc܎Q#Cc0vZÜ*a`N ]013} H@9N[P4]a,)F!Teqh"ࣦHoqtܛ$?$E8$l "|,,(!q]H! 1(\)WbigKEeMEPBD x DKS !/MvoU("G BB| 8ܷGHlPL2~pQf4CGMl"OFIj%4 ƈtCn!%P)]`]D=(G %ts1rVoP '(ٔ)ŘP9I, r\i):=OkR *mtjq:yO I7Dy ~Fu%p!E!d.迦4ڞI(\Wt2Oܸ3}*tƙRP9l7([R+(} r̝ݠMa>P9oP2"pDؠdl LPJFm*I|1!G݊ѥI7qqrfP.B}\稊(r)(F8 M JA7AO(կp3 Zo&ҞMIZJ* آdYDyf*""-2Q*)}*x&$G%0HAtp~Qȵݦn\N*D7E*[ 9CJd+6keJl \+_}T{Y^ aQۆə|wz˭/dJحK߷y%\ڒ)e||-KNvZ˫+,gPnqs`5hِ5CL~~u=7*a9&BHzqE-hcY W+>,4G9evg- _ ҍ+`v'^{6Z lo&ntDm@aA@WCy(`+˫rw-hS_+?_@e½ΫI=]QA>y'Xj=o~l&+ꇓDb<ڣ)cEv\-iKWF.I1Ti&ZiҶ4A{xxhC*JN(0qû5szXujPb`QuLʮW5/5]S4>`Ok˴% W۩ Jgٚ3E9"Ě1p!~:i5!$&#xhE[\V+ lcj+n<<\S/4unw'1Շ%JSٙ,|u(ܰ6ʽ0{%E)u%k[Te l\Wk%l]l]+0"kᲧۅrE}\n oPF"L=(=gW3YmMaXT\ZU9"SwKXuHS;ԅVaG<~@]ey%endstream endobj 69 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(>Ԃ#K ++bT&4=H0 3B8 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` +?L6IXM:B}\fY.a[pE2{(Gj);(-uS\Hв%7~PN͍J =/h>__&G gWv-E3EQ@$:UrzpS3MN9j=A"9J:)jځ??Mg &w;`΍>Ir&+ c4ϓ=I@P h/ɒ|jI!g}HOkXJV+-nE+k&K%S"5PqpT5茮VpOz§Dz 7p=_kCRsdDVI 58sn#ͨSw0 *|o-H2> G \:Q˧u~A[S"qEHK66htaI&vlWEo\c+ ]Ud;usRUnrt reSy X c3V3",A qK? uw OgodTB5]r˿?$ A {golADP>qvDyD?Bl m_:32TwCl\ 5Nto~ $3IFÔ&CGfBv1" V*NKYIA7 0Aw.4vݟfei]MDr<ې6z ?}d] ~H-&ceP]2$k3ۼ4C: a@bE+L;hӅN%sЗpe%8-fS˄ܴ֮f{2|݃2"Q&YȻ&g&o ʙK@ŶdYЪT3g>rOMh$ q?fYmdbuNz=ijUz!'Sov'r̄pk֣f.X2<2i@@7!<]92IǪ1`P)w`Ys@=0oZ ˤʐ]5[(ѷp M4`bS%m Nwf$C.enUI:MLU+y*`+8I0⻗r17}K* !BGk9DK%nRȧn-[ՀFԧ,q&y|wA>c5DøјCegyS-7\6޲T22 ({ X,Pk3b^UoR ̪)RU$_?M*QVCr~73 -eĘ7H!8iG͒ E,5K!P%P=@t)f=[S VU8.L+Gr7Ҁ@1vA+kZ3媜刟t 1$ ,.+3꘏3&@'hcU_QsWc$|Zؐ|QMu5SV!fL;л~_8`0{V,/,YF5==͊RS 0(7Lb0R H nxLXiL! i&f@Î7oOzzqgw.D8I%$SK.W~@[6Mt@WrDž"'>[Zފ8V`H!8E)Gf^{ 6otCt,,L/tch)Xhtk"↭#^tV^B$(͏4Y z4dV5|l{StrQ93%)z9PtLD,siqt*1&aGXfr[^q&AD,TQB*VAM?gܧ :2yʭ)+C!l_!MTSYK [{|P5X[ױg`%VK.t>KINW+Ah }*{R1,EƳ,zV\4pcI,/0+M{K4:t. zW!u45d}[ȥSJSiaKBD5\vKuLkc3`n5X{K Ӌh'A| Fާ1I!j ]oCˑrk֫MWIOV{0޺ s; a՚A+ R+ % `hz;'JeNgPya {K:sh@.s*:+[*QdGĎ M "8FLh-N^g.^"G\lKlN6IM:6J>ueK/b|SEbu%l$XQ*a@OPTP 0 0]P*d!TjMuv[9,ѲqtρGdKdTH bãjlAE]S'oR>HnsXO>[CM)t(!FC چt 3+;ņdm{ÒK&` ~ʒ`(1ZV/XZ,pKG:☤, Fe.Fh_Fwet(J!v(طO; ˆ8i֊C) 龏y.m/k`L2{d'~ش*}1%BOv<}D(N_'؍u>VwhK/F/A}0qkXlʱ~`}qa o\,{pJ2:w}Fj^׬!äI3Gf ItȪl$V]~{Wѱ%CdWڏ7&Y`0KFuLޢV5u`4uAF=ۻK!\,nRvjeNA` hmxXyoZr0Y[FPJaC41'oO*pSV&G5pwnn ^`E ?Hq]#wۦl6}؛"0Կ0ڜV;+*O*^1ߓb=M}ŒhF)lfH䕚uDI_7@ZXC|L3&[)1Rlv* ĎT'}gLEGPT?X~v,|DȣfL,ݥ~4_xj)7#6hE=(OF92ZݳYT@?(#0zaE~^H <,S2*G[,GӞ?*jwendstream endobj 70 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 1991 >> stream x{PS%1ѮZ ZtkAMY H" H$+G ]+FTV;*nVg2vzٝnwꜙ3sw~>$~IȘ_›0O.765f:1a1߿  Kۧ;ULB H1djF~VgLOJTss! o-Z*GJOR*R ZQM|Vszݲ@&#P6w<+IǨ2TU m^QQG Z.SJGjTALJՆVgJU:&)9 ML"El&b-*b5A%ĻD$1YTh__d$G:IqɦTo W>e}"4{p 3K/xԝjJoTu (N8 l|/y!N2LqB3{Cv DuT8' <D 7|Xy΄峗bY8DUhOј{s1Ws(bOex-u 3  3*Nբx_44yɓQ;)m FWmP@wu?am\P@)ĮwxDSI. `ҨGa'"4tBKM(C8<_SnIe ψ1踌- DYQ̥-ɊzCXC}]W n4mf5Z=2"f&\_l+%xWHU}Y!X xk\ Qד mf?uu8b"j5H;@u;s$Akڃ't}}[5?lbqZJ,f> t#YY{.Y6iYͱDg(ȷcN$:s5C9U+a;x+!gw4<`+bSJ7IpC~Y Ã,1,__kM58f{H[gs_ci;GP},쿱DlxUp#'Oaz YI},TfX2r@k`-$O:k=t~M)B3W>53bZUK)> stream xT}PTUǾzeolICIT\aaط˲B {vuW@Xu &: fQ6:MScfSyΥ'Z9M3MsޙsID HSҗH}.=NJ# 8",b̂&, J Q̹ *I )FSY'gǫg$%͙N>=I=ߠ55:]ci W/3f뵖gu)y4͖1&yOUzPk._2 uƠUL>Sբ5Ӎ9Z@ĘqJV_o '%ī7I!K@GK= JA({^C\C^S[aci[5+T*TNo\Bߑ-.^`n~z72x\omldw v]:q1SXSF]:BVpCj 8ذaɮՐUƕ J$rJr5u-l}Cit.T-H>fԿRX<^ZA7FqEp*9;8s"!;wkWT&Vh)kvkf ӊ7nDx}x { vb٘m謁GAiv݋Jz)4(sT[+e4-/]NanA&~?C?БJ`bǎ'BJwHLπؑ,sB.ȝ,ӧJKgJ :ŰdJendstream endobj 73 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 534 >> stream xmMoQEiKYGqiRVj҅-B1hb\Nk 2WI2v`aintabaԿΆ4yόIn{7KP}pq|Γ:b#>=aCm{fd#aZ06aI|Hx14 ,,coO e@ߥ>A)0QS@F iǂ|]x̌pQzG2J$eyRKk,sz1GCWb" % Io1EQzZkkdѰSK[rJicE2 I"QKZvjga(aǥ^c~2rńʫfMx> stream xX tT彿p . f(XR.(P$leH2d2KfdI2ɐJ"";(V}mQZѾm]7M>_y'I?,bbql޹o'J7%q?[7U>?;S`fM/5.<`X+5k%¢B~Uù Ӗ=Ei?i¢ܜis*Giڎܢ*I?WU?tX,^#\R&,Ei*~|au~^Ui[ri]2LP.m.$b +7T6Vnm/(YTA}b+1 xA$&v#nb5 K:b)@G33b}'Sv̮#δ;vW3|85w\E”2j8ʌ'5t7keܬ- #uNr@ ġtϚA8r]gmHV'a) 1ص}}/6@nvQ69eӀTb)[E;Ѝ6ƴ;h(ɹe6J=5ւ $t6R){jwc'[[꺺^򰷸d~f4VPM:\6qzPbS²gvUX[f:bjn5{K*((X/#MNzc_ zZ_a1)/JC6Z6WR ^YO9hmӈxnol{!)MtA6XKGVo״={\).>p:BPW*Z9{Jb1l:%"bf'(xO2w30Cͣ?[oKẻA { 7kNz$c_IxW&=Mg52ws%:c%M nAt;㽗?;H~HA3Bv__PZBמ}_z:"-͑x]isݥ )Φ~EDjجL}\uuF Y F&#eYU?o+=MK MB }%m֙`"pF'u c[ (1P5?? @'f*ͪ+x  b4Iy]Ղ~2-Fpa$0$04sXx_+!47qq֪"Gq`ztks71jC%(Iq9>e¢JJ5_ LВeP)ђ+`-}s/̤UiXܖdʫ:zD Ƀ2c2pSګ\*}';Nx-G)#1u8BUU9wp[7;z|2##E<@:k[`'JS?^^xng&1EL Sș%17.IS^`u9w^tCk%Net(4~Ȳ$SLv˩ǫahjG\"JЎV}7>${j~QzZ:T i;7`mu‰pCjra|kPe*H1M{rB@0N_p2`1H@ˊg4Z+jTٺ]{TIm^{3cJؤV,=N4%?Ik}mLex{'Z-mq|+kQ@ 3dugB@WCg2 \`_@7U+낣9i&%%Zn1)Fb kt/HC|{q=OlAثsh<1ȱ&[bDO '>mNx"5HLVu!Aӑ"פNm6G?t._GOZyPV]^-T  W4`)X[ g^\6dJ9dv egN[C_S) mbD_d YSE/3Y<+_4w \Mы?¶N݉40v@bRYT0Bϣkl#\{Ȋ<_*OF )[p ,f|}I2ފ?~ܺ:-eKS9|xv6zm[@{JRQJ(.Jɉ_mcuIV*Ք̐@Vd8/v eWc*f޹ʡ<=ti=$ HŪ^CS~߶PB=&,Kv31qfN}3L _*=|eC'N   |,ۍxȱ9\̂Z|xa*E|^/\Y+@~AYaJ9SZod fΘO>}gTZZKw@UτO@fh08GhseSĪ^8}.obfb _f~ͨ4ng2#/i \~ Iy]{mnFu* Prb(<,o KK\Q1nNz86iuq1 R٦-˞X mF+`]Tp=( DPKTO˲@2gG q~5B~Aqb$z)ɊB;O0obp2'!3NíiR(6(6⥏YL۝I4{q-NO1LXۿ9 w*}䒃.&@N$V`6o!qx{NzzCb BlXX2/ѹ_W+:E2Ĵ LA#n/臫a oѓne_[z O=V5&Ha'{fimvj[7`Ew"Os".q>B85/(aӶk,&StOG2*xc%$}mZݶC'= LLl{akS1l6y!5HSA/< , v;eǓ8mBBcw&P%ǢTTˀȒ?>'j:ϤrVʮB=GIx=8޹1  wz!Bd4 `FpYT}xЎSͻ=цK\'^Ɨ|&Z`PTBHnݿw>*#]R[CC<x=!_~a* ˘J0)>dcθ3Lty//n)|5fz߇EcwB1[G v3ab֩w n]?1䴳{鑦F/ _V-~c>G'%+A{ϴ>#/Ҿ? vK9隓?ksGOں@vřS>"pd%.p>^ңw(Ԙv2h"Pjd +LHh- ؛V?0w> Z]\kwĮWiޞa^6 Ԗ&KUzLJ D!@`ت+ҝca5򣮄3md_|1Q9za3umf>(޺ڍX8{- W%STβřWg:2+^Sw^U_%(jh8  }p37 /1Jѥ#=z8V١ :=Pwe,H).F~1V5ŵ6\ lwX0<)齙`LqnhYH)3s/7Wr>y_+T$M7q,_}F% BAiY0,vczqnD)/*+)5ۺc1 xC(#Y}_^oX ,ީwFw43(< ,(Kۛ=.W2sPΣ&p#`sZ%dpx0֚uj)EQsbUY9Lz|ƵԌ+fu͚E _endstream endobj 75 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 2643 >> stream x PSgB"ZmV o+HTEѢThD"@y"!9 DP+>VnmjuZw[VKύ;_Vӝ$|{~cg'eY>(tRI>V$ H{0Ŝs<=?{eu $c~||e:)FN_ձڤ4Wcֿ흚:Qq.1I1Eڍm2X\*{sb[.~}r6Q&&0 3$A1)9DY](6q&O0 0Ƌ gd3KqL&f9L3LaLeBLf#g2CB3c.!~YNyN8W98R)#U}aPg7Mn)6",Dw)(4fFhD' /A-XטAB`呹qѪER{KxBUz6;;'աNC_7ey 2H 9yIxªn9^nu>]e4D@0 @䢇l #*q^jlELm=>E^⌠Ss`L$#d,0y@}ljT D `ry1Mpӓ/]u Q"9P B +z0Yn)*n٪O4AcIkm8jlz i:UnͦPZ$!2nI} (5@NU=_wMa4dc튺ВӒj5HY[i4I @_Vd⁊1B9 >ϗS, Mcl]K)o ىfєӑzChQyNda4R^6jqL1ڛtڱij>$>!n!|\CBsڟZ_YO_ `F^9ISɲ'ܴWdXbCЬrSiM:l,AMm j!L%VswqVVs'kı-ׂ:bai͡3{3/pO}8P}USj2Qs'+,͊U }W^4:CuhciU4]V zasyM!__qRn gHҟ(xk_Yn6g*6 I+FqyE\e8|?C1q7-<{cntyse>k)1 bFvN:knC8-đk4;d:zkV#eϺYp6'r:&bS%7?+gO<8ZpVC sihc2Vc=dn23Rt0o' =F [n~ao?+uu+.akj;gX"e{,dɊzp0?Fx>/ݹ;&e$C/$ ?Ar6(7W,ɒ I=x LFHɈQo7/'JӺl|A 4n_ "NCo_)[ߐ׳WhSC>xfٿu8Z>gfqWsxMUy惣m>^X%[Ѕv^^oub|Q T#pe]M*m5ֳ %nc` 8ɌjY~>,#{>2(eM_ntS^!˸2jU'v-'ޱAK4*'9`4ǑY-(b#6+:a(zro #"W'aRB #8$&k jtwĻNSERQgW5o>PDMv"2 筠3iC֐eL5rAyBz!T=rRnJ󨞟;@7}qRָ#1Y"^£DFX_o~@Gqt:H:9Bw8r6zqj&i4LxdJaŸrW(mn>'9U6#[0dfendstream endobj 76 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 7974 >> stream xzta X`z3!1wބ-ْ$^da6Sz{@h_BB ;:yl'y{y޿XK I3s9g}څ+M0ώ v?b;ykTy|ȷS=8/j썜PB?$a~@`DNOP#mf̘6v 3ltu]J:t1+44paaaB{~F. ՟@(IuS=DʏEST՛+.A&RjAA.Q^BO]v=k1(,\))ַ[P/H9^zjۺwE>E}^^X=wk_)6?Csv890t/h>xHJm 6(~; Y5PNa²5h_Դ[Wyʌ(<9}k5zwh-ўC`CVH~DXuF)6~ګaUtKm1ZlYX*[[4IV~^.%Auc ('ki_{ I k'/^Y1ڍ j91E޺50wdķx—Ebٺd5:b~b]Xk5#zQ7u-ӰP4}Qr"`ںnid2ZS) ͓hM,̕wXW̨riܒg X T>@f{^(,}1h {$pvdwSipN8\iK۝7c!55Z|D߲Mvh= &2be Wqx ,f޴D-hsHx41OA,%s=7 6O` `DcMST^PS-eȝ${m^EݣnєCS,:-i?}X$* NaRF XBW;Ru &a kᴹRP5 !u C` Ƶɰ @tͦ '@6iP΢"%bIX<]dٚ VQu[Fw]Dh#b˚mKy"=)00sKX5HA2<@E>X?%'X_Tƺ\hf/!T*?bȗŃh:3ocDWܸ4y,›FTG>F[ hAk8oPIQ0:BRdAET|Gqv(IN6VBźB,a $h;0K~@ta?-E]h,1h߅Qݬ} *s%h!/34p UX1bCnMoN|kx.AcKl6a3!2wZgm#~igiEuۄ)ԛ@^ew<-{47wSFs$`K%VOQ!~ m`)`>u4S_svf pړkɭ.Hw8ͽf7s$L_Mχ dE'aX/"ac1%خ o^ LG\l*AGWmRwF4y_Fl=sR;hC lP{qr> lM4A#~Rel@۞LiD>'v뭚nm}]NqK6յ¹s$'5rwʡ49 n 3cR?]dye<7vZRQw$#&J//pdpx_I31wnRwhF:b X<~H)|6YrIm KgCTQ^䫠V5Y뱸5Ɨ.PMʲv &Aj}pLY^_BBtWOj64;ЄV1fq!GM6.ظ^,̂@ՙ͌HhA:(lAZ!\h(uNa2hׂ x(u^,7-cAUsZ!6X$0w>@\Q䩘@FԿ4_,2*g}WWB~mcBM"Q#mQUIFx29nVYc!ҧd+S k/PSk&NJ,Z@dؘB<04L뷽Nqjj5LNoi@Y4~ *:E!X&8\WTƏq}8#\נ *Wry#7L:H,ߍm%_vO#l: :#Z#r(4WHz5tIM#xmfjRV]uA9i7h#Nf٢ URh;kM2=ɀΓj?drL%B>8W% 1="i %$drİ7r cژAᣣ>Ki4yǾg Y,~2!"caPiWL(e~[Kw\7h1 UJ{kOh6nω$`&]*B:MUBV @*PVUδE%d*UΏi{aVe%]ͯ BT[ [4^~ 9t;J<L.AhW=$8ajDz-a3~(+!f,!aIv&9A)OTr^C 6kuhߧpIi^ [3p /cdBl8<-Bh4 mv4 Gh! p.L/Db&=|17~zP[I\\JD,3aU naz|fHdǠi{_ Q¢"Q^~?!_*b!MA[yFkOnʖhͺ?P0 /wWk ݕyCU>ĸW$ƍT]k د(+wKԧVV%KIAW](-I9:k[c'a$6:q+y0HaD:v.ئJnCXEr$}Rwd([t 3+LY`H⟊W 2X|I]4|~Sf!^^ɠ& Q:\z4&!欸>ky첩1V|,O ULy. ",hɀS7_|J A븮U!e!!e!UUeeUW{(EseZgmHn>GS jh(&V B3s׾koƄ+=:X~qjt !x)ӎvWo/ FZ"UP T5}[ &<2%\W>)%JU~H8*Mr:1fg^8֤)5fE,`&㕨e a1qd<-dRALvj49(G݀r|߿&zxb0y-Y50U1u[>PQ) JWFԾZ4D\)vYc^#7U`ڡb m+%uGm3yP|o 1l{4prX.DnI`ٍaO"8,LT:o"$pT5ǪRd> .6cƥSP X6Oe*-hyMHM@mm|d|5ٖM)xP'@7= 4Ȥ3Rδ8#yD>xH|h;ENID4"> E ELVk6=zG7iAb߾FwA"[?(hrG{%*Av_:pfhu+%x{ O*}őCJ۳yg[$h;4rLBc/q8$=*Aa:gv " R,̡.ߣzQcbhzx;<9kjH}i^"-IE$,aKpmZ%4Q| 6=)l8qZ-3C;L!!nA]<%`%PViJ6(U"1Cb[%PˠVTO+?dφTXN'VV@LO+%qqd &)-%-;6͜9~O>Q |/D4Q8'޼:mjwmI]ۘ;GM̉Fo :oٺGXz? NGk hU:ՑMh!IȒ''%ɹ͋΃Ұ%hW9 n3o^?u͇]-KGK8fLOUb ɠe'dgkRs29? [f.?6w06(ۆ$YD~Ztlq'[ [磻lA t#iNaa%P o%m#n&߬A%LgE<)yb GVxJRQB~jMKrM2ɩɲspw+MB͒w:+,}Zh,y{<xHVoWsp8,$bv8{?\ Lz6CQyvҲp[zCKSR PDHq Ox^`vMg?pP\$L'Kѡ}N[cQD& Պ$, c8\k#N:_~)xK!rΖHzieC߯‚BBtAՕz}%F~\oexfNPpF^*!JeJ;pP碔@][{wauMsâ8%-P7wRI^ T s39BV,X(ɮR %D1Jzh_b_[鹿Jw!#3 H('1$5Ͽ<|#*x"9Q  QgO5&fp|O1Y)mv:纯o B~^7}7a^8Eɳ#$n3҃\IM\Y7XmNvy.g(A=nf.Gv9LMeˣǬnjw3's!_g͖6X0ǟ6Sz=S9@``f#"<#|z" KG*AͩHei+Ȁq ǏgH 1;[Rak+?eǤ\hn30cq7B8 v3eu2!@UXJ"䟓a\J{iY={^EQ%$endstream endobj 77 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 1819 >> stream xu{PTϲ' 0lk.F4& AP0QVvawaeaمeo^+ZjR5jR 63$8v23η̴i?{yߏagUAaMR?^LK1G2`9w)lBVȋf^@ը1I9EVPԒZ1_W֭[olܸK&RKr~dTTKDm1E)V i6(Ե_k%_"҈ԍ"!'OI7<(dJ*"`\Ф- ÊbU+ʱ 7؏bұ3Mڻiqפff\ˌl٩tj=Aڳ)Iu. >DIg·|.P#-`~")G#+`;L`kڽ҃7`&/FipTR̈́J&I+n +t>"y౐Ah3)`FQ x%o3BS'!N8L㬵B&h-@45DF G8Z^A/YQAPJ.V ԬдtC&!lFk3`u 'z&G]QO 2t"Ri }.pd(:;Lp%'wz2nqXw 'H y.{drXVהM7f.3 y(7ĥ)ڔv6BN_]a !!Sk1 б,:}|$w yͬvmapIҝdm_.~ i %w<a|<}(o8 ׹x%XpEt9s m 6q;!d6g_jjCYL[AΈ.r:-D2FSd|割CnU.zp:>&!NE _ɠj#Z6<O {3Cm&o\}zr"Hme*H^ p|\w8FX/F%W?x-HFC?l6ebRR6u7G#ĎYpezk47ZMd(L*#s{9U{W?:_wF!蘓>)j eL5xAr:;]"4WFzC_=49_?CxI͠\僚drp0fk)@F^$-6v$m,Ȼuh~[Bi\?7Q2h nM͞;3_Rڡ+a g1xѮa}:L^Wp@ĂQ1 +ZN)Pw48G3zgXS!-|A G6,Ȼ2Y_Df7ЩP(dt&#}v9-g|YcOendstream endobj 78 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 407 >> stream xsCMMI72+B@Rh   hebnsCopyright (c) 1997, 2009 American Mathematical Society (), with Reserved Font Name CMMI7.CMMI7Computer ModerniJ(Ҫopnqnzv`~z\e~}t;_bdw揗cT(]z~ᷯpt|rMwCp`  7 /endstream endobj 79 0 obj << /Filter /FlateDecode /Length 162 >> stream x]O10 @+b UqP(/ СY:ߝ|mwFEehvK@Fˢ@[;'l{Ol&%o-NRP> stream x;KPmbmDkf 8uh'^`nNN.$>Ώ@cEkwOjnp+f$!h!R{$*$T%x[ IVXcΈH'zV rN-͞ntaHgR\pyErZL0H>9d6cݢd8wYPNڬO=!n!|&ϑKi̔LA\dw+.\*S0;vwn_'U"nendstream endobj 81 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 5248 >> stream xX XS׶>!prTG@sZ:չjbP"a @@fA1a8+TztkmUZ}c7ok߽/g_>"܌D%..Ӧ>NFw̄w8B8]jwɚAR,l% s% KA on͝$SεRsPʼJ:/EN@j/@t[" Uz);E} ZL21L*bsN]ke|N>#z5wߟ8i۔R'hj CR)j'jr gf7FP 0Shba(}=6k'ΡVX0ZP1CCK_ NKŕ-񎸀Rm53yrD|e]4BQ,x?ObO ~zVX{;O~kNS8/7-_v.A {/9̜i٣k~x\=b@'?m[/}^ZLw_;3&h F(5v,;4t;m1BI`ǖrj=!xȏSzmJ|DU@CHs;=~fɅ\ޡpLq+I l@oOɫ%]X'v@(XKҧDokԭ*`Ę2OD!E]^qZc}>Pmzy+_e-3 p :djb++n7o݈yq0_6\UbO̎ΘÒb}ԜnG=<;Umacu:>PJϗ_u"ӍbP4 szɃܧ{;KLp =K[o/Ez6,:ۭDBt]LղpMӣRܢ:> ·شy1~сz*$GO4G=5LO9B8nQ}p~@uh0g|<Ěsp ĂH]"|EfDtg ~ZCzd[*PSz7 *b6$!(B֯@e|3 ѧbF\Mɗ݄) ;0b+hK+͕(zT_ d{ef3itk#_Y P#(,g5`q{;8zbjI ؝σƆ{ }TeQM^crti{Qbq)/mRMG, ' kD9MXRJtCqU |7)(֧q`<Pszrr%gXo97!/m:-m,>&vv~#ExOC2:Et5JD1ZJG酙{?QW_㫊-ĴxjdEp5&꿐DͿ9!?tCd_FayL%x~rb͖nkKhpcXf@G^+ZUErJ]b0P< "Jj"jՇXb*||H9:u*ʍbjzM~uエI|OUvQ}h[>|:˧Qj^Z.555\g\չP|if$~B3k7gyK>-ՖhK= 4مyܑC5bگy{ YPH_+(j@MgO߀ED[SgeD"9φ nԉϟ!Ĉfj+ SCq;SZ0ItJaxdE"`Y?(&]N105ʒ0ehd࢟QX^O_2;]mFyl[^=>G^b}]tz8qql>j5 | 0MGB0MSuC>q; u" yD~hEa5r$SΩK}#4!&@N+ |A+$o>D\rm %#Pv[oMr&ei. v}|ӆjPFe*# n.#Dg!0HKQTre5tA_Q! rM˚xyv O҆"9(M**;}1o3{ڍ/@Q%6.>1 iSt٪.p};Ǐ\m9u }À;x?]5%q9\ѩ#Wf,ۼх:j_1=8I;wx.!YEt`e[Vit dp09/xeA_";u]@F)kW_5u`>++x2\P?_ 'O9stce:S:tn~~/8 `QI \<8JC0ϋ.ޫ $RFԁ(**j "{cF}DWT[Jő2t6PA MKA^;Z >AIh9w0,9bt&; 0eF#hI u-+C IoӾ q~<.D e}if֞\n_K4~飥|(_d47dVY9e`C_<1'竅?Ӆrc+%5h];_ Bۏ86+I CJUUf 7qx7;߁%3ڱ'\k'v(v6 l!m&"mQtnxl 2Dc *ȷ9<>lo\Ă3d ]D_К]H&; xx'/t/HY`Mk{B< ,*JȌ(CCÈs2&7Icְ;pg=9Vgr,pE0`cٙ FW'd0,b<9U;> lUU-l'RuO `!YPF;T0.h 1 FA&Cƣ$1䣬Qx4d dri)à[Ʈf* V5*&ywJD:uQdI/̰eW@vNZzilBm.7tMMzon#^19(=qIx:>>E2 {*3r Z[]m̘ZoigV so:%aXp{3)NC()UBщD{yBxۈH]yN*:c@1`Ͱ8mNx/%Rd8]a<5}}<wb%y(9Cyܲh9(%Gendstream endobj 82 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 340 >> stream xcd`ab`dddw 641~H3a!O/VY~'٠=zxyyX~/=[{TfFʢdMCKKs#KԢ<Ē 'G!8?93RA&J_\/1X/(NSG<$C!(8,5E-?D/17UR=土[PZZZ`d{N|q00~Ksp跲ֿ^_n=E'l~];\| pBIOpb1y4^ m}endstream endobj 83 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 2684 >> stream x{TWg )0$ ">xEA*H PuQ|rQ[[ZT|U`QRHEevsvwsrf$I}oJSSE8IwPAO3 O`x@HmeU3fΜ8yCFJ|l\V!̐~G$$&oP$ū"7WD$gW ISR6EDEǬ[>0Qekg;O8r96aF,# ""Vn;$<O‹XBRb.KKL$8b!!Hb2aBL! }b]bq5r,N2cƅQ96rlcFpPg au;oSHI̵d{ S >į)-$vo ZT/o+4h]`ዸnB4]ur׻B8`UG Ӵ,-Y "8ɗq ce9g"ϒp/]$}_䈫iJBXq鞔,iEHYw-RV0ny-y Dy5s^1I=%;g5\6EJS7P_tS8ӎGe،;֌ 6&!OfVӲߚjo6H :vGGfxr(9;3%->1xǜ++/=?vs Cօgb>glr0m01O@msX6hE)m?#u*Pq+JBͩvNXكI0{P}JnxHL>2e,c/q_#fPhI>sc=N53b~3f>r[e p [Hf v[4`4lp.E[ >{aKL1kBU+ea)7=TUz@cy*su󨯬~@!-wW.6"i6r}ծ*`7 "^Pu H쭅ҒIOǮiKCp6ԭuuޠ>([Y7 jMT\ɮSs`K:/_Pn[t)~A5@r=8t6xh-Xm)$ոQX .9uQ[J&V4aE4Az癫vCYRw:o9y. Ӎ!BѬ2N?udẇ]LG딅dsf 8|P =nH؋f?|baxx,zFH&Gx"QЍk|Ȯ'|>ЉXy+, A/rCco}S?u3t;>2bq/d}Sb <_R|ӵ>'Vf-v&|"5>1/藰-z#T9pM`U2y1ʕ-q5-^qاM/TN ڰ)6 'r:yDk%uiYFbt,uG^fD])+15څ3y%TLT 䌔1[ lx jt-Ll_`Vqe,<_Ewըo 6Ne3m-Y0߷y0=)dže$)xx\1/J V*Bfqyw? ;țFê2xB,(k DF;M;_c\ۍŞ!ᮋVWi47d;|Kve = BdE?T|=F+~.C A`)ZS+ ,&a꒺*YZai|K4 L7qw=-U[y/ M tdd ,"lw{X@^ }`&x5$ \%K^? 8 H7[v> H@Bۇ`g{,@}/9s~(A.[օ-MN;AEht]/8뽼n?Ña3g }a2ôb(,Oz?QA> stream x]O10 Ԫb C 8QC_@g|wYu`A>E0uŭ F,m1,O)x@I>/u%NRP`1Sendstream endobj 85 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 3621 >> stream xWkXSg1dQvw{3zzl^ZVKUEAB$!$+ $$ Ej*T:N[^<?P%!gEE-d:cXb5ߢ1(Fݡ+ٲbɳ XBG.W9#(Eߣ%WfnJ.foJMFt*ke-/U>Ƕ-ĬsوC4/D gH[hnD=ihun}~>S NمfZZܕ#M+4.CBn 7ހ"*K!vH 5oH@Rb*(T.gl`{NIv869z7̙EfT6te?\\.X)gOU0rBh .т9 `sTgHELC܋*0& .{y%zQ/Ya(j=bΩqHD[`Y`Gy|_-¢a=Dª>)w8* ïD5x]*ȁf֚mr (NӹI\.y;2zϧz3-@wz=x/&jA. f]4?WHH-ɡN؟ackH?}>̶z]p۷aSfvyHzѿ<s殐] LL 571xz!)Е="#wҰ= zC D_ܞY.NM[*jpm9JUfqʪpFq&&TSH o5TB+$-OwpS⪥XޗV `'w'l/z(L AK8Oݺb{ZGYMcS} >cY{yIb)/KbL7nPxm$8 e_upѵʒrC)P@)JtҌ\E()uۭ&>r^+jj!_=êqy8 eVĄr5FH" fCV6",#^oQ/% V [;4&}Z0Z"k:̻ځغee3wxOYgߙ(Qrwq4؝u&g6d"Σ!OQ}OFz{pueeK X{gǁij^[&]|S [s$b+|ԑVvC*Rv8j} WeJ_j,+fp?N.Жief@xoS+*؅^nO'r3] '0 :.O''ԦOOF+v[i$PԂ B**g^_W2.W\Wڪ×[K.kO_+@#aw @QnUMx1>lsnӚr.f{C5;5mNɀKz R;/ 5Ujv!Zi\؇5nr[D)+,FZD M2gS$##SEx +x\,HIcʭڜ0_B.g5DPp_ 蚐DF~1nk'hrv{` %u6 WgV 4BtݮhIKO%ÝGXm ܁h$VV ͌Rb endstream endobj 86 0 obj << /Filter /FlateDecode /Length 6190 >> stream x][o%7r~#(kux,ր"< pfHci^oO}E6>3SZ`pkU7j>y_iz8D7Ach&k;DmDMΩ`/x7?_n8'p6nQ7)9IߟloNrɟ?.Ҁl&'SpZ/L)B^%[iltD3Y2Y?E>]<h\/)Ҷ;/LI :$1D0?$1>'? YMY}&<zdMrYOY͙Iy4͠R'{3^&@5; Ց㤓aދA@udcIУJD+1 G(Eƒx)հBTixd E+1>M;8Ck/^$' 2c5Fb*4G;h]) A jm(`7'+;<X=RCxdQu>%  f2"E/Mɂ 2ǻ3\rF Т!826=^KI XѢIԓScɢ%Sᑟi*{mdJXO2df}<vg%E1b%4oK" N*gAy'f8%Tf}pa*&p8J%"G9X_a}*pFBx9ȋv!"I %AMp,aҲ9d BKFJd4RK#Ƣ].  )rSFF%kś~Ӆ̱QhY 4"+T-NTĒ|xF,Yrb'V#ϒk5ɮ͵O~%jjiLj@-!f1WjIX;R32oqnxtC°$RI(@Ѱ!%p?@(r1H9 a09Mq(-: j1^`sj('P`hs  p gn, .ȡkxG( /jK2rwVU" "n"b7͠2'Tx_/ hoI%Ix3"%!nvc@ME(Wމ_dVt-eMS©qHiƃ*u$[N6[ߕF/vRIE. q+tG$"ِۦ9a?Kj ȝ550(cBCZ)Ny^K40HʧC@?)ΈT?pHzI\/HR6ɢ8myl,ˌQP諂|g<\xt8acҰ|ձSmY"LWmYz #rGqYQ.Ճ&+]Ja ?4#ܯ#{q:Ҫ[[-yuNxGU8ʨT|#4O9mw¶,~z҇mCZ/gghc۫7gEټfIE,qj~Z)-u@}llsv٠Zo/:SBЙȸo_7Qk<4:Ro_w9j}fS-Hriu~q!QWVMu#Ev54s9/0}Ќx%$9Ӻha". b陇xOi{땶oW~mO==kO7CvP0'c|) hzcyמ>vu{z֞ne{ߛw+_oO?ʯֈp2w}w{,q^P4޷Ww;ӿ_y=};+9}qWTES}_s1gYDEdO HeIx H)8IJiBІFv@2 El>AR8Lʚl9ociT֣rT8fn^+\V(Hiht|ui$ kaEP&(Uy:MH^e)up/xHrL,û`Gv墼s(^e%EXSTWm@D]lG7 -EAFy`y >r\vG[{:3hcl yZg̈́W+O?iK3ɛ3G6/+m}-Ekl*_s!kOk1-[9+-⛏Uٗ+h=M)'۞b{͋\=UОx֞~Xaΐo\tynU{J+\]qH%r4t0:h7^.:.<ץ~H38F}Q!,H^*;P,XqTsd.>}3{jjKD1tј0UB >J"/wyXuHoT1>2FoZ|䧂SZUڛW53NϢU9W鯭k",uM Pxvgw$#L<3mkd 4 @c !/;AÕn|֛/1u8@($.[5ʹJq*jInW䅥1q? eȉ /q_Xa?+`DȩYsrKj{b4t=c> stream xX XwڟQ`vZm=kV][}E @rOg8%b-JVmkjrnkĶݧoyx3{;b [nӚys?c&r0p>OXƄ_ŅQC΍A'Qhd*Vsӄ ӣg[/Ν0`yrl0:R.2#!692- jBFxќ9ٳ#gſ6cf@0#!`clzlZVlL)ɱ7:{ʔdqfFlZ4AVWgd͎cnq! 6'%O#D01!6ӈPbB@l#V*b6H!^'yjb 1XKDX@#È4b(r Y3C7 }'m^ ɍF;R9j騦' it&ahؽl{ώ%b6uf2jAxwH}~vX":2r^2fr%v4g'Ӧ[wF||(Vc<o@ܖSt{߱@v7DdNM E_A3\ ~;/Ocd1fTb1Z՞,rtfKnC,yQ'A8h$fOpwx. s(AHd\{ .H1;R] EAo}Ux8opѲr!_=CP(L4ew,f/eFWmHIY+[J驆+O)K1> Uؐޒҥ+ 7_܏fC#H(( .Ր89/*skbԛ@ntU~E 1yOָq-1 ߱=koET -u('EUӺz{h8F]8 K"}л_0|kzۃRGcyY.{g LƭtNihlaF isj Ws=BWHok0ˑi | `~4pQ8@~!;S!6X ;T9??^EZ./ʴ#١^QVnAG>@vutH>oWRB2. Z?L۟|/?ڰGG TL'n 4$y Ffk6bB#g 1 f*ZovӲ4"7 3 (q)_). :SCh1+*"9=ñk-p,䑸oLfLc[㹺V{6+@ ' a7ΰLSvE3Oy]+bt];z05RIr4ʢ}jf *ƋQ6~b`xẢ(e@.,EcMeuPMs풴섰CY:Q\{\G: /=t~3ye鍉m037X1]?-.H}#;Fl8='WE?,E`u3n=7n^.ܮJ wE,$; KRs17* qFNツ(̐T{⦈Pv;hNNNaZy%8!6k:55GSpzt%N>jp]d 2Z8KNhk+[[ W'$$'9'g{複"NWh٪< RfoL'g-bKvs;b+~3M '%+bi(-ۥB/@[RBLV74 tjtmnH{[gM4J" %TP>U ފ%dgu wd]IFLȡ_)]4VFE=o,a2Vi8;%Z^VT3M" ѿ3`$ZkQV++Bc[^$_öiڭtN[#ɹK{qٲ{FN)(e[XB Ҥ2[tzr8Z{⢧Egj )4l1%JBW^ t~孻MAS U&xqtF̠p0l;_e9VU@ޫ=(@ PiQΈW'@Pv^6fen4ǀeN0`0PzNgo8&5 >ZP)b\ZP\4Slpp>=pNOxIfsB|jH1 G&7L{8(T2$SML2Yܺbr2[B (u DC!%qDȄ";f]3 i|v~Aݳ_ D.Ɇ|cՍTžxjD %jJ_޷TЖ|Q zg͞z/y"M1-ˣs:?wwnO䗶VA0-|˒F%B#}wh>AkZ x_.y05yvIVj^rSR /3yGH!޷6Ϛ'UPj+qv탛I.氮W݇8em'eP{DG> /W [ 1 3 1 ] /Info 3 0 R /Root 2 0 R /Size 89 /ID [<5ac32f44da67ca54a8dec0083f344d8d><0ef37d91c24419d2ff2b8fa5a7aab31f>] >> stream xcb&F~0 $8JҕvfR1 A.Pl d k-X}d/~$-X%50% R!! endstream endobj startxref 85279 %%EOF lmtest/inst/doc/lmtest-intro.R0000644000175400001440000000715413462003317016271 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.save0000644000175400001440000014740313461775572020421 0ustar zeileisusers R version 3.6.0 (2019-04-26) -- "Planting of a Tree" Copyright (C) 2019 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. Natural language support but running in an English locale 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') > base::assign(".old_wd", base::getwd(), 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 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’ > 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.0036887, 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.907, 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.84484, 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.775, 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.758, 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.17075, df = 54, p-value = 0.8651 > harvtest(modelCH, order.by= ~ EXP, data=bondyield) Harvey-Collier test data: modelCH HC = 0.87128, 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.24869, 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.026056, 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.099, df = 1, p-value = 0.0008635 > bptest(y2 ~ x) studentized Breusch-Pagan test data: y2 ~ x BP = 0.11809, df = 1, p-value = 0.7311 > > > > cleanEx() > nameEx("coeftest") > ### * coeftest > > flush(stderr()); flush(stdout()) > > ### Name: coeftest > ### Title: Inference for Estimated Coefficients > ### Aliases: coeftest coefci coeftest.default coeftest.survreg coeftest.glm > ### coeftest.mlm coeftest.breakpointsfull print.coeftest confint.coeftest > ### df.residual.coeftest coefci.default coefci.survreg coefci.glm > ### coefci.mlm > ### Keywords: htest > > ### ** Examples > > ## load data and fit model > data("Mandible", package = "lmtest") > 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 > (ct <- 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 > > ## corresponding confidence intervals > confint(ct) 2.5 % 97.5 % (Intercept) -13.88169 -10.02504 age 1.67850 1.86696 > coefci(fm) 2.5 % 97.5 % (Intercept) -13.88169 -10.02504 age 1.67850 1.86696 > ## which in this simple case is equivalent to > confint(fm) 2.5 % 97.5 % (Intercept) -13.88169 -10.02504 age 1.67850 1.86696 > > if(require("sandwich")) { + ## a different covariance matrix can be also used: + (ct <- coeftest(fm, df = Inf, vcov = vcovHC)) + + ## the corresponding confidence interval can be computed either as + confint(ct) + ## or based on the original model + coefci(fm, df = Inf, vcov = vcovHC) + + ## note that the degrees of freedom _actually used_ can be extracted + df.residual(ct) + ## which differ here from + df.residual(fm) + + ## vcov can also be supplied as a function with additional arguments + coeftest(fm, df = Inf, vcov = vcovHC, type = "HC0") + ## 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.27024, 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.53514, 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.86911, 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.572, p-value = 4.317e-08 > > ## Breusch-Pagan > bptest(modelBordoChoudri, data=currencysubstitution, studentize=FALSE) Breusch-Pagan test data: modelBordoChoudri BP = 14.514, df = 3, p-value = 0.002283 > bptest(modelBordoChoudri, data=currencysubstitution) studentized Breusch-Pagan test data: modelBordoChoudri BP = 10.736, df = 3, p-value = 0.01324 > > ## RESET > reset(modelBordoChoudri, data=currencysubstitution) RESET test data: modelBordoChoudri RESET = 0.69314, 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.75539, df = 56, p-value = 0.4532 > harvtest(modelBordoChoudri, order.by = ~ Ic, data=currencysubstitution) Harvey-Collier test data: modelBordoChoudri HC = 0.40259, 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.45961, 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 alternative hypothesis: variance increases from segment 1 to 2 > gqtest(y2 ~ x) Goldfeld-Quandt test data: y2 ~ x GQ = 1.2638, df1 = 48, df2 = 48, p-value = 0.2102 alternative hypothesis: variance increases from segment 1 to 2 > > > > 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.37876, 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.15542, p-value < 2.2e-16 > hmctest(y2 ~ x) Harrison-McCabe test data: y2 ~ x HMC = 0.44287, 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.037, 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.19999, 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.377, 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.18142, 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.342, df = 4, p-value = 0.009719 > bptest(modelAllen, studentize = TRUE, data = moneydemand) studentized Breusch-Pagan test data: modelAllen BP = 17.069, df = 4, p-value = 0.001874 > > ## RESET > reset(modelAllen, data = moneydemand) RESET test data: modelAllen RESET = 92.749, df1 = 2, df2 = 86, p-value < 2.2e-16 > reset(modelAllen, power = 2, type = "regressor", data = moneydemand) RESET test data: modelAllen RESET = 68.197, 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.62177, df = 87, p-value = 0.5357 > harvtest(modelAllen, order.by = ~logSpp, data = moneydemand) Harvey-Collier test data: modelAllen HC = 0.79431, 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.314, 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: carData Loading required package: sandwich Loading required package: survival 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:sandwich’, ‘package:car’, ‘package:carData’ > 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.76, 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 = 153881, df1 = 1, df2 = 27, p-value < 2.2e-16 > resettest(y2 ~ x, power=2, type="regressor") RESET test data: y2 ~ x RESET = 0.0077266, 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.23146, 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.70681, 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.86419, 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.20839, df = 11, p-value = 0.8387 > > ## Rainbow > raintest(modelNichols, order.by = "mahalanobis", data=mywages) Rainbow test data: modelNichols Rain = 0.61074, 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 > ## (equivalent 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 > > > > ### *