maxstat/0000755000175100001440000000000013056034164011753 5ustar hornikusersmaxstat/inst/0000755000175100001440000000000013056027621012730 5ustar hornikusersmaxstat/inst/NEWS0000644000175100001440000000714213055551643013440 0ustar hornikusers# $Id: NEWS 419 2017-03-01 13:57:28Z hothorn $ 0.7-25 (01.03.2017) register C routines 0.7-24 (06.04.2016) maxstatpermdist.c must not overwrite R objects 0.7-23 (01.07.2015) correct digits in print.htest documentation updates 0.7-22 (20.02.2015) register maxstat.test.data.frame and default 0.7-21 (19.01.2015) avoid two meaningless cases; fix by Marvin Wright 0.7-20 (07.02.2014) fix memory problem in maxstatpermdist.c 0.7-19 (02.09.2013) mv sphase data to TH.data; fix NAMESPACE issues 0.7-18 (18.04.2013) ??? 0.7-16 (22.03.2013) convert data/*txt to data/*rda 0.7-15 (11.10.2012) use R function exactRankTests:::cpermdist2 0.7-14 (23.08.2011) GPL (>= 2) only 0.7-13 (09.09.2009) documentation fixes 0.7-12 (29.08.2008) fix old style random seed assignments 0.7-11 (08.10.2007) documentation fix 0.7-9 (16.03.2005) `delay' is deprecated in R-2.1.0 0.7-8 (24.01.2005) documentation fixes 0.7-7 (18.11.2004) use #!/bin/sh 0.7-6 (16.12.2003) R-1.9.0 fixes: plot.new redefinition in preamble for tests 0.7-5 (28.10.2003) `treepipit' data added 0.7-3 (30.08.2003) use canonical header files 0.7-2 (18.07.2003) optional weights argument addded 0.7-1 (15.06.2003) maxstat.test(..., pmethod = "condMC", B = 999) can be used to compute the p-values via conditional Monte-Carlo. 0.6-8 (23.04.2003) updates for exactRankTests-0.8-0 the package is now in a NAMESPACE 0.6-7 (18.12.2002) R CMD build problems 0.6-6 (23.11.2002) depends mvtnorm >= 0.5-7 and test output adapted 0.6-5 (22.11.2002) PACKAGE argument to Call in corrmsrs 0.6-4 (21.11.2002) new `corrmsrs' is faster than `cmatrix' in some cases and has a cleaner implementation and handling of minprop/maxprop objects of class mmax now also return the correlation matrix `cm' and the univariate p.values `univp.values' new interface to pexactgauss the package has a vignette now 0.6-3 (09.10.2002) url updated 0.6-1 (01.10.2002) make -pedantic happy 0.6-0 (30.09.2002) `data' is now required (we dispatch on `data') added functionality for more than one covariable some internal reorganizations 0.5-9 (03.07.2002) use .C(..., PACKAGE="maxstat") 0.5-7 (22.05.2002) the cutpoints are in indices (which(!ties) - 1) -> Fixed 0.5-6 (24.11.2002) iscores argument added (use integer valued scores or not) 0.5-5 (11.04.2002) replace optim by optimize, passes R-1.5.0pre checks 0.5-4 (06.03.2002) link preprint 0.5-3 (14.12.2001) fixed bug in pLausen94: take tied predictors into account 0.5-1 (11.12.2001) check the return value of require in zzz.R 0.5-0 (10.12.2001) release for R-1.4.0 0.4-6 (08.12.2001) cosmetrics, \dontrun{ postscript() } in DLBCL.Rd 0.4-5 (04.12.2001) interface changes in mvtnorm, Depends: exactRankTests(>= 0.5-8),mvtnorm(>= 0.4-1) 0.4-4 (03.12.2001) survival interface now as in package survival pmaxstat returns a double, not a list man-pages updated 0.4-3 (01.12.2001) clean interface (for survival problems too) no longer depends on survival 0.4-2 (01.12.2001) maxstat.test generic passed R CMD check plot.maxtest and print.maxtest implemented 0.4-1 (29.11.2001) maxstat.test is now generic. To-Do: the interface is not clean for survival problems (formula for cens???, `Surv' isn't nice for that). take off `plot' and use `retT' to get the empirical process plotted (including p-values as in strucchange :-) for the examples: check, if `survival' is there and don't Depend on it maxstat/inst/results/0000755000175100001440000000000012457237010014430 5ustar hornikusersmaxstat/inst/results/LausenTab2.rda0000644000175100001440000000041012357775720017071 0ustar hornikusers r0b```b`b@& `d`\>ũy!IF i ,Sd:,2B ρ[M:&Nlq`zNځ ̵t4T{Yq\+ @;ͽ;@E{lt|/}\ 5h>`KM-2 :B9̎&fp%BݨbQJI,IK+ڂ(\f;/()@pZ(maxstat/inst/doc/0000755000175100001440000000000013056027621013475 5ustar hornikusersmaxstat/inst/doc/maxstat.Rnw0000644000175100001440000002530713056027621015655 0ustar hornikusers\documentclass{article} \usepackage[round]{natbib} \usepackage{bibentry} \usepackage{amsfonts} \newcommand{\Rz}{\mathbb{R} } \hyphenation{Streit-berg} \renewcommand{\baselinestretch}{1.5} %%\VignetteIndexEntry{Some more or less useful examples for illustration.} %%\VignetteDepends{maxstat,survival} \begin{document} \title{Maximally Selected Rank Statistics in \textsf{R}} \author{by Torsten Hothorn and Berthold Lausen} \date{} \maketitle This document gives some examples on how to use the \texttt{maxstat} package and is basically an extention to \cite{on-maximal:2002}. <>= options(prompt=">", width=60) @ \section{Introduction} The determination of two groups of observations with respect to a simple cutpoint of a predictor is a common problem in medical statistics. For example, the distinction of a low and high risk group of patients is of special interest. The selection of a cutpoint in the predictor %%which separates the responses best leads to a multiple testing problem, cf. Figure \ref{stat}. This has to be taken into account when the effect of the selected cutpoint is evaluated. Maximally selected rank statistics can be used for estimation as well as evaluation of a simple cutpoint model. We show how this problems can be treated with the \texttt{maxstat} package and illustrate the usage of the package by gene expression profiling data. \section{Maximally Selected Rank Statistics} The functional relationship between a quantitative or ordered predictor $X$ and a quantitative, ordered or censored response $Y$ is unknown. As a simple model one can assume that an unknown cutpoint $\mu$ in $X$ determines two groups of observations regarding the response $Y$: the first group with $X$-values less or equal $\mu$ and the second group with $X$-values greater $\mu$. A measure of the difference between two groups with respect to $\mu$ is the absolute value of an appropriate standardized two-sample linear rank statistic of the responses. We give a short overview and follow the notation in \cite{maximally-:1992}. The hypothesis of independence of $X$ and $Y$ can be formulated as \begin{eqnarray*} H_0: P(Y \le y | X \le \mu) = P(Y \le y | X > \mu) \quad \end{eqnarray*} for all $ y $ and $ \mu \in \Rz $. This hypothesis can be tested as follows. For every reasonable cutpoint $\mu$ in $X$ (e.g. cutpoints that provide a reasonable sample size in both groups), the absolute value of the standardized two-sample linear rank statistic $|S_\mu|$ is computed. The maximum of the standardized statistics \begin{eqnarray*} M = \max_\mu |S_\mu| \end{eqnarray*} of all possible cutpoints is used as a test statistic for the hypothesis of independence above. The cutpoint in $X$ that provides the best separation of the responses into two groups, i.e. where the standardized statistics take their maximum, is used as an estimate of the unknown cutpoint. Several approximations for the distribution of the maximum of the standardized statistics $S_\mu$ have been suggested. \cite{maximally-:1992} show that the limiting distribution is the distribution of the supremum of the absolute value of a standardized Brownian bridge and consequently the approximation of \cite{maximally-:1982} can be used. An approximation based on an improved Bonferroni inequality is given by \cite{classifica:1994}. For small sample sizes, \cite{on-the-exa:2001} derive an lower bound of the distribution function based on the exact distribution of simple linear rank statistics. The algorithm by \cite{axact-dist:1986} is used for the computations. The exact distribution of a maximally selected Gau{\ss} statistic can be computed using the algorithms by \cite{numerical-:1992}. Because simple linear rank statistics are asymptotically normal, the results can be applied to approximate the distribution of maximally selected rank statistics \citep[see][]{on-the-exa:2001}. \section{The maxstat Package} The package \texttt{maxstat} implements both cutpoint estimation and the test procedure above with several $P$-value approximations as well as plotting of the empirical process of the standardized statistics. It depends on the packages \texttt{exactRankTests} for the computation of the distribution of linear rank statistics \citep{on-exact-r:2001} and \texttt{mvtnorm} for the computation of the multivariate normal distribution \citep{on-multiva:2001}. The package is available at CRAN. The generic method \texttt{maxstat.test} provides a formula interface for the specification of predictor and response. An object of class \texttt{maxtest} is returned. The methods \texttt{print.maxtest} and \texttt{plot.maxtest} are available for inspectation of the results. \section{Gene Expression Profiling} The distinction of two types of diffuse large B-cell lymphoma by gene expression profiling is studied by \cite{distinct-t:2000}. \cite{on-the-exa:2001} suggest the mean gene expression (MGE) as quantitative factor for the discrimination between two groups of patients with respect to overall survival time. The dataset \texttt{DLBCL} is included in the package. The maximally selected log-rank statistic for cutpoints between the $10\%$ and $90\%$ quantile of MGE using the upper bound of the $P$-value by \cite{on-the-exa:2001} can be computed by \renewcommand{\baselinestretch}{1} <>= library("maxstat") library("survival") data("DLBCL", package="maxstat") mtHL <- maxstat.test(Surv(time, cens) ~ MGE, data=DLBCL, smethod="LogRank", pmethod="HL") mtHL @ \renewcommand{\baselinestretch}{1.5} \begin{figure}[t] \begin{center} <>= mod <- maxstat.test(Surv(time, cens) ~ MGE, data=DLBCL, smethod="LogRank", pmethod="Lau94", alpha=0.05) plot(mod, xlab="Mean gene expression", cex.axis=1.3, cex.lab=1.3) @ \caption{Absolute standardized log-rank statistics and significance bound based on the improved Bonferroni inequality. \label{stat}} \end{center} \end{figure} \normalsize \renewcommand{\baselinestretch}{1.5} For censored responses, the formula interface is similar to the one used in package \texttt{survival}: \texttt{time} specifies the time until an event and \texttt{cens} is the status indicator (\texttt{dead=1}). For quantitative responses $y$, the formula is of the form \texttt{y} $ \sim$ \texttt{x}. Currently it is not possible to specify more than one predictor \texttt{x}. \texttt{smethod} allows the selection of the statistics to be used: \texttt{Gauss, Wilcoxon, Median, NormalQuantil} and \texttt{LogRank} are available. \texttt{pmethod} defines which kind of $P$-value approximation is computed: \texttt{Lau92} means the limiting distribution, \texttt{Lau94} the approximation based on the improved Bonferroni inequality, \texttt{exactGauss} the distribution of a maximally selected Gau{\ss} statistic and \texttt{HL} is the upper bound of the $P$-value by \cite{on-the-exa:2001}. All implemented approximations are known to be conservative and therefore their minimum $P$-value is available by choosing \texttt{pmethod="min"}. \begin{figure}[t] \begin{center} <>= splitMGE <- rep(1, nrow(DLBCL)) DLBCL <- cbind(DLBCL, splitMGE) DLBCL$splitMGE[DLBCL$MGE <= mod$estimate] <- 0 par(mai=c(1.0196235, 1.0196235, 0.8196973, 0.4198450)) plot(survfit(Surv(time, cens) ~ splitMGE, data=DLBCL), xlab = "Survival time in month", ylab="Probability", cex.lab=1.3, cex.axis=1.3, lwd=2) text(80, 0.9, expression("Mean gene expression" > 0.186), cex=1.3) text(80, 0.5, expression("Mean gene expression" <= 0.186 ), cex=1.3) @ \caption{Kaplan-Meier curves of two groups of DLBCL patients separated by the cutpoint \Sexpr{round(mtHL$estimate,3)} mean gene expression. \label{surv}} \end{center} \end{figure} For the overall survival time, the estimated cutpoint is \Sexpr{round(mtHL$estimate,3)} mean gene expression, the maximum of the log-rank statistics is $M =$ \Sexpr{round(mtHL$statistic,3)}. The probability that, under the null hypothesis, the maximally selected log-rank statistic is greater $M =$ \Sexpr{round(mtHL$statistic,3)} is less then than \Sexpr{round(mtHL$p.value,3)}. The empirical process of the standardized statistics together with the $\alpha$-quantile of the null distribution can be plotted using \texttt{plot.maxtest}. If the significance level \texttt{alpha} is specified, the corresponding quantile is computed and drawn as a horizonal red line. The estimated cutpoint is plotted as vertical dashed line, see Figure \ref{stat}. The difference in overall survival time between the two groups determined by a cutpoint of \Sexpr{round(mtHL$estimate,3)} mean gene expression is plotted in Figure \ref{surv}. No event was observed for patients with mean gene expression greater \Sexpr{round(mtHL$estimate,3)}. The exact conditional $p$-value can be simulated via conditional Monte-Carlo. This may be time consuming but is an easy way to check the goodness of the $p$-value approximations. The argument \texttt{B} specifies the number of Monte-Carlo replications to be performed (and defaults to $10000$). <>= maxstat.test(Surv(time, cens) ~ MGE, data=DLBCL, smethod="LogRank", pmethod="condMC", B = 9999) @ \section{More than One Predictor} If the cutpoints in more than one predictor are evalutated, the problem is to test the null hypothesis of independence of the response and any of the predictors under consideration. Furthermore, the ``best'' split in the ``most significant'' predictor needs to be selected. For example, we evaluate both mean gene expression and the International Prognostic Index (IPI) simultaneously: \renewcommand{\baselinestretch}{1} <>= mmax <- maxstat.test(Surv(time, cens) ~ MGE + IPI, data=DLBCL, smethod="LogRank", pmethod="exactGauss", abseps=0.01) mmax @ \renewcommand{\baselinestretch}{1.5} The p-value of the global test for the null hypothesis ``survival is independent from both IPI and MGE'' is \Sexpr{round(mmax$p.value,3)} and IPI provides a better distinction into two groups than MGE does. We can display the standardized statistics using \texttt{plot} (Figure \ref{plotmmax}). The methodology used here is described in \cite{lausenetal:2002}. \begin{figure}[ht] \begin{center} <>= plot(mmax, cex.axis=1.3, cex.lab=1.3) @ \caption{The standardized logrank statistics for the two predictors MGE and IPI. \label{plotmmax}} \end{center} \end{figure} \section{Summary} The package \texttt{maxstat} provides a user-friendly interface and implements standard methods as well as recent suggestions for the approximation of the null distribution of maximally selected rank statistics. \bibliographystyle{plainnat} \bibliography{maxstatlit} \end{document} maxstat/inst/doc/maxstat.R0000644000175100001440000000423713056027621015307 0ustar hornikusers### R code from vignette source 'maxstat.Rnw' ################################################### ### code chunk number 1: preliminaries ################################################### options(prompt=">", width=60) ################################################### ### code chunk number 2: DLBCL ################################################### library("maxstat") library("survival") data("DLBCL", package="maxstat") mtHL <- maxstat.test(Surv(time, cens) ~ MGE, data=DLBCL, smethod="LogRank", pmethod="HL") mtHL ################################################### ### code chunk number 3: DLBCL-fig ################################################### mod <- maxstat.test(Surv(time, cens) ~ MGE, data=DLBCL, smethod="LogRank", pmethod="Lau94", alpha=0.05) plot(mod, xlab="Mean gene expression", cex.axis=1.3, cex.lab=1.3) ################################################### ### code chunk number 4: DLBCL-fig2 ################################################### splitMGE <- rep(1, nrow(DLBCL)) DLBCL <- cbind(DLBCL, splitMGE) DLBCL$splitMGE[DLBCL$MGE <= mod$estimate] <- 0 par(mai=c(1.0196235, 1.0196235, 0.8196973, 0.4198450)) plot(survfit(Surv(time, cens) ~ splitMGE, data=DLBCL), xlab = "Survival time in month", ylab="Probability", cex.lab=1.3, cex.axis=1.3, lwd=2) text(80, 0.9, expression("Mean gene expression" > 0.186), cex=1.3) text(80, 0.5, expression("Mean gene expression" <= 0.186 ), cex=1.3) ################################################### ### code chunk number 5: DLBCL-condMC ################################################### maxstat.test(Surv(time, cens) ~ MGE, data=DLBCL, smethod="LogRank", pmethod="condMC", B = 9999) ################################################### ### code chunk number 6: mmax ################################################### mmax <- maxstat.test(Surv(time, cens) ~ MGE + IPI, data=DLBCL, smethod="LogRank", pmethod="exactGauss", abseps=0.01) mmax ################################################### ### code chunk number 7: mmax-fig ################################################### plot(mmax, cex.axis=1.3, cex.lab=1.3) maxstat/inst/doc/maxstat.pdf0000644000175100001440000022127013056027626015662 0ustar hornikusers%PDF-1.5 % 1 0 obj << /Type /ObjStm /Length 3062 /Filter /FlateDecode /N 71 /First 567 >> stream xZYs8~_Tj$qrk*U>c'XNƞy-(g5(H$3vdu7XS!,S,ddaXf,- P(ˆZȰ0,2 h !oAX]̤!CfQ"y(1%%S5St182-AgL fC7\L[#f-0 %C5dB3cn-1k+,x2+ !%T,&zJ,`Y Xk 2hIE,Vǘ4XsЂ ЄV1M`EH LG0$q%%0 tjMKiaH"b!D@3Mx.LH Q(x/'d }C\cG{`&l:9L){u(M (TR:~\ث ttt⓷3aY8gϡq9Eφ9N bX}zɢN9,{Y|dN9SdAt#ҳ"ͧO[P"2G_os6$0a`lz;HHuoޔ䇴c|:'#?{,Dl>{J}Uo$O]p̏&a6Gy6ٛ٪8dT=LERbgɢ n{DDz6h iQ*IE=I1wQV$鐖JzhE{-cǓ4YL > COx+!%v"tWibQTgj%8/)MG)^XG 3$4]C>~:;(EM`V0 &R/4|"御-\g[. UE>974R."Pr71ʃiT\!ˌs{c4 {?G"N;s_;h:8rY:K,\< >%#~K{~ oF9@! ki'$w"5s]<3|SPt }hKx/#ϾY_S` ,.Φ$>uYC®WaWCp;п|% x v%>diUv(-ciTzZ/^Тl"+~\`W5oli px@-At{\GO>ӽU5v sױWF|P)|}6\˽UL0- *mϦo[K 4 aav {zaԨ%f@yW7R( ^!,Bi lnG)2~ְm@C;E< YyTD&v.jq1Oϯ[c&3 rJ v% q6m tl}ˢo6F6Hw.ߓGKe#QdR{CZ6z|H=E?A*5 W@$s*$&%Py_(|LOK b^-4.rv_ъALwVާӣg%UmN`Gm9z:n-֕Jòo P5mHUD]*(blS:;uUy~_7M]]=fUH?&i{>BVGn76Ma \%C[H[_զ-meŐ/s17QS 艆V؊k+ :k JR/xGשTxmlLFf2bz[vw(tZC#O`LaVY^,1tڴCУE]&X\+Г 0`2M(u[ |ѥl(>[F.8|saZd2\U|[BPG57^~\Mټ465iE9v|*] hfg2 čkF5&t D; )o-e5ݑf+is5! b]9РwG` şOk/"KĄ"Q褠tY?*wkĔ-.v48 /cH|Xߠp7Ѕ+CbKgv*R[Vb9endstream endobj 73 0 obj << /Subtype /XML /Type /Metadata /Length 1329 >> stream 2017-03-02T15:43:34+01:00 2017-03-02T15:43:34+01:00 TeX Untitled endstream endobj 74 0 obj << /Filter /FlateDecode /Length 3644 >> stream xZKs>"e ~fWŕClV%);H@%|3۳إ8.f{z1nzOZ^WXV:nnu梼W:q:kWo/~ݭf>7jrN>u8MkB]Y[mɅ*u *w7kZml+O}0=ou Zw߱R$zk(b]^tj72=DՏEE-V569B/JguW82!nC05|(6+{C7ƺm aCz맵[t. >PXIa(嵇pVJ&rƓ$ t>3)d*b]wǖQdii'=F+ͫ^_8/)4QnMBB 9#?7R7,x R=E$}uu[m&O<Wg R|rY.@t6fKp~rQ6K`!٬@WA㧁vMja.wĘS&6556H%,+vMLNc:@ꦢ9 Ơ](8tVPC=|sa_~bj#'L[+ ;0D7DkB 4580:g=gbֺzOV+:7@_RP }žMG71$7&vdkR߂Z 8%ŰQE,۱aVX]G֋D% >VAaOxt \92i58a_6 iϵ1&*h8WT-BB`Yr]#Y}{e$e V([ŸnTn~\y$kv ~$d&ph_ VD>7r,ZAhP-r%~l=N"Ͻ2 #@1 :l9y95*pə eq49eW >ׂ >cEkM 9y۲sfIp(K{`l0y )~5s΢x/|_RverNӄz QGLP{Wbs9 0f:OZ8,A<\]G+`”iCg,WBp8fVEU rôHYARC36aqT\߰*N#{*z̭SlHJ{=Q R+sć bN'%CtТ)"-*=t^Cby$*ɄV*un^EYHL;NL_KAMf/Y$ekrC^,p} cZ2>b=@ l /*DԪ$XJT)A{J )@j8(}yO'3M,$r ۻqCAI1ye1&&U8tZ㉉ D94ڦH-,]*dp]С )T}u=+)3)y?9P08ԤbꛀX:x?I""} D"QH6pA<܏=Eΐք6w&F&qI^jqvףLXz i/Z*Ab<^M FLB0)OW`mذc6c B$EroQ˽o:RWQ,};E s+jf@.TGp^nx{]}tzOi,VҞ#/k-l'hA^#Sd~CF}~-زk̬C ܴȪjZc/ 4 ZQNs.؈uS1cʺEVS.hD?Mg(4 G|͛ GhϊGS":%ApIzK?,GHr*_\@aNV;Z=7A|ayFF(yq=<[T3hJxZO|r鴿ew!N*NkyAT,r֦668er.:Dh-l)PwqNN ozM{)L/_Iz~gXlt{ru4rREAw"ײ3ZҘYuo\Gl-L@У49W$itE E'5njQĔY`}@ Cx7';Ny2m442td? O/.Nn9nu'٘ ۢrN\I<&Q݉(rjOohtq2ۙ|z(eId׌5n `LoiD et$lJցDEf}9%p>KZ0yO5d|kqPF[*ҷ*A!]̽դ F@^{e/~!¯E-@7nGXa <꘤'O]T%9D@e=~&qҘ~ZޢogSc[?;v>w4m.˜vz9>T܃0*7!f:\0ty{r'q[W,U8T`WlI p{_~˸RWQex`qFyiY673w\k[ok?;^KUNNe帶|7^Q ;^?O b Jj6;iחEendstream endobj 75 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 2038 >> stream xU{PSW@U(ݦ ]Sm>EU zcHqyFr*;QOI4'd 葟\bm[vaԷδNB|ȡMi>F/> r_Gdž;p& dS:د&:*{$RG.j}%C8nrDH:w{Ϝ;IqIehPC:hY[d+KXuBukk!YD!'!{.2؍JD+CYS*QV\w̨fLcvAx59pjwC?m|( "}?}ڠ=r٬N=|ƒۯ#IBZ:F ~ siWUSyy-|(aXO3x~Af>(M%jakH65f3^jzޅܷnsSHMKt*HUg+{nms|uha'"ꪘʲ2)4J37G&wZV8U떆QXL.140a>߬xLc[kaje-A1_JX lZjQP=q|1D e8+1h ,)O M13wCU'RuЀzQH6|:>¿an'3@q2(I%%)u@f؀bۈ{.eh49xN'>Z$UU%k?⥛^ >iTƘTش [aHsĊ}u~ 2ķ5 4D hN?|qCɣwp}^F,;߁9|b )v #?ivF XK(-ߓ`fh65܆!|P/Q#ŨYV_>2_Kj^&:- f$n6[Gk]iW  ]b.>eAWʉ yߚV 2+H)w+탰[Ҿ=;9ZxV!wmb<ʳtPJ`OW0$?ydDw%Oۏ*MshvUgItGnru~QU)\c}*~U_ 8Pa- \~zm|)saBU Ԭ*VdnU<|з~7=ϓ~7y1-0(U1cP\'ɏK!شߩ} N=TzuxM1b`+$O&?|nG*)kς jA ~ 7xendstream endobj 76 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 332 >> stream xcd`ab`dddw 641H3a!O/nn߷ }O=J19(3=DA#YS\GR17(391O7$#57QOL-Tа())///K-/JQ(,PJ-N-*KMQp+QKMU8OB9)槤1000103012{='8÷}%`wyV]پz>3l[Bz߳f/;a* r\,<'\zendstream endobj 77 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 1857 >> stream x}PX*R&t3ȵ*TH`rqwn;#8QyS7D|QcI$6IcDM~Nөog3}> BCBAĎfHO)W$գaNBxhWF$< ?GB!RNoUP)cVΟ\aZ A&U1*י3 ZC9sj^:on15[tUvU\Zvh3+͂U1iͦ͝lUkQ&3 DŽx%׺ڦٶƑէ %i:"H%Tz"PsDH""嶉PE[Q\ BzdОTD}Kkh䊐@ D aR#*esZ;+ 0 KL G voq V@ pßB?{ )Å(kg"F@D踨@3 ufcA:TsvA /'7}߅O+W+,҇'9IYL3?٭<K/M^#gPRڊU #㷟Et+8͂za m8NGn8 m[` dr67m!M/K}DQ{ﳿTy+.}ud3BsQ} P֞L_$Õ!O7 4Og{FpE>~'5yy]9c`]BJ{|k]oպZ603M 6޶q>yJ<PRilU`}s̽3>:sW5ȮH8`LGOby+a/0aO.s"ZPFQM$Z&`QU6G|c;1CWl)ZdQ ʰȠD]Cg]ޚ\@rq + g1ZeL:|/UsG>t~*Jv<8 %ųf^J^?ˡ8z|#,@׾%X%L 0^U\9#'7/'m#M wm&nMj/hnihh9|Ӿ>`N3hbX,N4^?o[G-.ك\ߞq[i4-?w9/ }27"=bnn6UwA׷ )-Me-='`NM3 m5B94nB MGլr> vCmEhš8ix27)tq g)M.endstream endobj 78 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 7755 >> stream xy TSW[ZTkXU'TEI)2CIvy TέZUZ\z'l_zZY{{?sߏ"M5o?Bǿ#t]If0H9o3U6E $Н>'ZOl=}T[;]Wx?wzGYO<"""M xd눝>=ZDMS%Tj)5ZF-fP+JjZMPkٔ%eE FP"r* ST&5Pަ"aJR!? |z yWIiBԦjGFir x94%4aUO?hoR(pjWSJ/ [Vx3I{m\-S8"wmͻ '_~a'',vGih I Y2'd< YAϨms :q&BȒAB2uWӖ dz B݁7doxu&~>h<ֈYrgn٣TC +\s:#uWX$/?RFXF׵k ^lݳ%XWj('I-?6vg>D᩟E֢xK߭Y=@}&:͙ #E_7|>b=TLxk,^#OIiϩf⧵n?ѓxq!y-tux ~QAҰ8`G`D4x;37Kz5hh-/Vg* SOVmS4Cf'qPAYzj6c !Y4GK DoXԏcM&>Sija?~rw yM44mWYPi8*"BX]>޿΅\\HEImt' z4F/owe&׭ҨE/= %H!/`DY(7A"4 Ř#LXfѠE?&DhKvy6ާD`!%J-hHP84e]*ßy,`wBķ#5Le7V<@2k8uR!2$?.U "-1)MYz|jqg}H8ԐTB &ӧq8<[ LdIBz_zEB:^ 2S>oLʼ$+iqIA+FNxakÙ_M--o<>!]+gq5S3+2=_ hvh8A~,*T Hu4~IBګShG>3=::|m "BԞ mz;P<7WA ?l 7ф0c`P.!tV E$?6;Fc #=킗3/]hoz<SdNy֝c6SyjcdsI\07j72l.bm}pw!\iU ~AP SYrQG+U;4=YLK-qT// XUR2]`hyHYfiR ss *rӨ? hABtM`?IN{sʃ;\|~ʍ<:,-pT9:ag³u}^_Y0>tƹ \ҿ.*00,,0*S/u YФGٝ([/ev#Q$)Uf52WY2g&vBh_Ԣ}ɿb„;= #XaiztYCqBZ. _n]u+h7G:@UdtZ$Vh:U]u^ cXZ4Dw_=}USaԞx"*{&gpreq De|?u]KBkgXB1d5\Vt"kKe kPyU3UEQ, RWvF^h2u@o:\B$vpxs(.H\bO?5uS4N\^Bs׋u& |Kd_d<[Ȋܕ,zs^md[ZfYvMgIXVX Lf6KǣQ yv+ҲpKo@fY,8|/-H<=-3/3GBoJߥgϞ<"gت 4(H']^]šoJuA!aa!kuZ;@QtΊw?&y!-bTZ穀J 3Oݔ^ι)AVǗUVlC)x,\_/n҄ Ɗ]cTTgjBXOTpHHIpSq~fv.јժAk%r9U6 <@yT={#Sc>MȧlVם&MC<'Re컇 yt;w|aa%#$}ZsE_θ썯V <\>^g})lḂU ,>NAl8H`|]ںU Vrj i=$fr?ӽ!7X!B yGJݳ8v4ٍh>vom )DNyQA"#EE?U-bÎ,NJdd >BGAraF7:@#;K[oaa^!;f[,3-QL!5諪q>);f]KĿ"Hl/1+4Hn0L!+/$KV@\_ݪՒ2v`޽#+on3e]y~>AW}ҍ,lM[MU:.buŻsqt6G` ~rxXȉז o ( @)swŇa+-n;A#c~2t KO {#_4qX왖6;d331%BDxH`F?zHm$90z':&$H`0MKu] ԉ[>mpy 7M7t9].4/)Uendstream endobj 79 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 5482 >> stream xYTT־b IE"yxryHWt- 3aeA> ]nJO<:lQF:L^(S*C~[V !W.~kO)sPvX%V:q݌A!J|"˂CVT {O:Esm.|zAi䷦N>qٱsΣ j=&5HMܩ&-j35򠜩tj AަVQ{Lj55rfSj 5ZKQeO1XSC(+j5AYS6EyQ,5PT$(X:?xB[-OЋiA!y1_ 6!C' VG yxGyzu`56IGƺI֣F7~fkm;6gsc* Eu}6UQ4JútvD)i)) ( EeK54/_%̣&XQ`P5*_e(@\6b l}-ݽ(t 6όn~N( h'p̦ɼ {JZz筟+anI:Ӹb[IX<""U4|oVsS,XV p¿A&9{YY95((u]Z*ls4X^gzݩw, 8g-?ÓS At5F d?c l1c2 Ï`ao<]vׯߺ}qe) BAt7[j"SS(-V߮Βy`WO wD% Nr ۉǹxoW.lw*3G7 鴦ŰoForR ˗]+]W.=:G%6!D~)_zFgi>k k5AFޑ%|e&4> slcI)V(vlwJ*P *H l%;Qt!TY=}öi~wGҘrLǘb0JOֱ# 25ԖipMZw^š :FA&;.1bx,]-ziqbXzѯ8z]3g%5d0'6 g4J_*ԙ 'LmS_frQ{e8WyPaozOے`fl.wtG% jb+O"F_IQ$%6}&rEW[28_Q׳+x)r1䤪ԑ{'Z򎄔hH(O>i䇔w?1 4LA|BSj]Y /}&觲^L0BAtjpLd|St:l(LIV b6W.$@{}d Ik=+6OY䓝T\Pq^^qfηSx _IIګI O@a}0g.8Bkg-mYc,Mx)uz,VH6z_[?޼~ZF=mdp;$$O Ϡam׾"Yiz-o(l兜IK< F&ھ6 hMr-=q-sMD " ;*K,UvSc.`meNF ]ܙOCtu'.7>@wQsb{6:Vo>kwk!TQ)gۛY[U.~w9Ih=5>Hm'H3yw`<~tc,́ui\т7c6oޱj*)#+6"LKoJXn>ugݶy?Sf*Ά(=+* J>M[툙be%SщAcX♹(ۖ3qޕ3NB(i JAqZe/:P|&-_S ,\;&uy^wsy U?䓊"%//oοs}N2&HQ(rbMڿ7/#4 ֳL'O@Q; ' \?$ڄZ]bIz1&EfL할u; Nmu`ktEHwGن)QK%I͸M?9-4Ra@GmF%q;7zb.a+J,aN`,_F`ttE!PYO 1H(nL3^YRG/ 7?kkF7]{M4OJ%o΁}C2`K#Cdj7<FIJ̲03+4Y«]N[fW7ֶܧ=W4 >WgNRfD}y{Mw"M6A"CQ_Uo2>ه Dyԑ(Wk$}{Tb݀3v9$/G~ ҄1 t ', %KH#rmlIIRD(!|_6-Ս#^|Cp0wy {\.m"|E!60AgyǑiZKWZZ ƋDexAxAee\6tp6\֖ߏӲN)45~(= M5lߙনUp n-<5{Lv Oc[8L@06$9+f;#@[1ߗf&/Uw`;wFfk&+";KHQ'$ga>๤Mڃy<1&!)0I9zA7݄dBM",PxCf:x@f 8<đfӉ t5\wQA'fmdcܶEMLLITY0Ȱ]ʠz܌@W ba&nı/a>cO&MŃŤu/- 0DɈ^ C`2L4oIx+ / <k)qq0f] xi_JAn8%֬s !&Lh&q%ퟜ I$R6geꚎ_"']];5yѼ\hT{7+~ bN"'-h엠WH-#tgaXF[{~ I1DQ=pD?}V@Db幓|uEԆ,D2:c5!=7x+gzes]6,aI#s%!ơH`jE*nFendstream endobj 80 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 3790 >> stream xW PT׶mC+͍{!*EIb"(n253Y3Bf YLc0ә1f9 e1/3< 3CKX1]Y{DFkduB(e(7+xfAAl&؉vv7D򹻒2|Uێ2EvDžRW!ԙj^5 V.բǑ)dQ28g{Cb +y ;'e&}fLJ5@8 4 &cG6 ;VD_5:0;2s]tΒ՛KK%GIF1-U*+O=Z0cKNp4@yXūZ2n,28-}f-XRITM<]&kQbu'= {iKC?~074(JH1qGMmw]Er-AiW%zYeyY.I2ȉMAR)ٚ\7pHTCXfL G{떕tir}ഐ))9() <4T'ÌDFu+ $w;@yp U@Vh7YjG'i*$Ys XaD1,hAURqX9@[xT 7O @;U=yߐg9 "U%̙urQ\p dCGơҭf1, !DSf]."̮EGhR)...܇_N[\:Tk!+R\Ocgo^>kNzidLd^ }Z}2 o+pnH#dEKYh@p̊XP5eE -tuIJ9Ո>8(kw󱐀'/b6Cu0,eߎW e]nw}Y2LBE_rq+(PYePUߜx{d~#K=#{r3ӁBA ز҉ǹuY[ <ʢ+YEydld @ǠnɄ̜\QNFZj%:,C$2[@v!hhvE1iB@:CB!8cDEHpVUuΩ<tӚ(c.DHܩǧ )۷-Ly pLs:uiz^32b!S5h{a0Yq,Ni@.G@cOH-0Hht8Ԕ.) JKEcT* 7sd- ݭτJN:bM= ىP { g.'z }wB$iayՈk϶Kwϼe3UΝf4HF=| N(3ײH,UQf#C}FIl8ә]cK&*\Za|U6ԧtBTx]iaƐ+N ǞBN}F\d֛F3b9HJ3<_+]jHH8N[}ꘃ*6F+T季MV 8ߧE-Z3"#Vq2|S7]Y^(xW/i[ -SD.7`/pqro3ěy$8tS(_x+ ^9ox?Ģ?)hC>۫Fd׏&t>,VoH 8u zk㾆!xRajEt+~QirVv}J^L[RHڑr0FH<&r\N"ŋ3Q=r?`Y t;d@-MsyHh}v_92ޥ2 (ڌ]]6BezOL+Om)Dȴhؾ@B]vo\qJj9Ydzdf y{kj>t'b3]?{_v޴X7*Iu"ewq4p_~K&( (~a }{3_h%zQo(ǻhq/yW,^ٯJT0l-)?RZ^eK VC;:"'K]6|FC۠Zt'DCB殬"RW[cCz>jaWGYx{lܥX9o\SywaRk=}ʨYaZo|Y5quKt2&h ĸF4T53Qjb'8N>>lM>P$7$ˋ(Z.]h-LJ=,_ aR"mW)AGѽ\o%lW8Aד]"6x̲3耞\2`}dhSINLpq!ʹ 87rIvEOafp"vqVh+nz9Gۭܽ? L=wnq7JDb#;*;^ظ1Ghi }!!雂|0u_֧R3 ҹ`ST%_ZxN㥹 wʔl!FxܦnB*,Kg.2Qcqᓤ1 U5}^jn(k?F( -QشsC}xl,M1d2"iPo Lwiw(2x벢bޣڭ!l~kI]y.x md'&y< li;rj):?}qK[{Df"Ec"&5!㯓AK-_e,O2mppG{Cxg 3J/> stream xUyp_a#o`+BJai8pe[$KBV~a]Ʋeـ|sPHC&IC-NhB:}kt}t:;{= > H$W?.'LUOFwM4L?9UF%MÝjեe:ҢeUyyk+V)^RժՊLUԉ/"JgP,}LӮ[>GYu$GS[~rEZWء:=*V)QVL5U:VQ)VV++eJ 2ju va&a.lVa?H,*aY|9-6;}~-w2^QIJh+7ĆX a8D+ Zx?sqDouARLݽZnflzk8 =\  ??u6Ih9>FX`R,n9b00x$ sI87(E`'7nxM(WwdW` .pBf J(W:ѽ>:A& 4Pf OX|tO]<<Ԋ79vi-CW1B/>jո`4~c3xD";/C98HkšyCVp{(@ 8 1\oECNR:9EA(rMAqK N ~EBh$mHȒn{[(}&t=Kw" Ey6pV'ˮp4-A?x JIC%p6Am 4n 'IJ ?4~cv\F% :l=ޗ ?Ym[aPKl~Y)ܹ/I㡉 i?z?)š+V[ N> .#]k?DKBvpr>5 xcdЭMIFY "TXT@^5UdDYiwlu0q-\~,~.4Aűlk*ۤO9H` v,PVɻtt]閻L =S dfA8ev'|#7seqGֆzd#N{qhM.ӡC]yVC7 q|bpy}ۤ3<->ԣ{18d"؏]љX2Iߵ-]VU8ϴ@#`(*:Zu^,ɟ$dzR׀w'b$li 0`яI>~MwB^́E\me@M0o̟m-2Vq1t }{ CXF ٬0Iqp3x.&d?xkϥ__{2^^B7(υp[Wa@-^d>wH\վY\Jq)Yxp]#"i?ZMJOi8mT>slNiv\z["L!C+&&ȓ[m!-t:Y?zY20xh{\ 'avbRH)iq]xᑞk]d )i5sK5U9_ baQ΍ otjꃖ@#iM+7b##4mp-o7DfzUCw.DXgv˪KpU%2126 f&endstream endobj 82 0 obj << /Filter /FlateDecode /Length 4239 >> stream x\o\\mE_RE HzXK$:ľ_ G𑫵![ _؈In }u!6?\MK MUvs"-X&^L:y;1pq%^f{xq?q Kz޾ɳ h&+$eP۟vN+=q >8Fe/q {<0H9.I$a+ϳI?v^k-96n,q˿\haiPkP2xOtBF)YY )Hsln Z!?'(o_ՊlcBH2lnN Bo;nGJgI fUzfLpD"3P^D8YHPv hr ;"*u2p/]%\< 0J4X9N\I Xz[#|CkZuew(~9O\f/⿌^A0t\ͬUjT8n-[j#J#O~R eXzBV:}i`gN 6)MqFO^4y4e eݿ 9ii2^p_³仼wUC[p&DCI@VEa@Rn;um& C`\"_5ܐ=C'`v +wU ;h#mooכ:C) v+ΌĨ#e"_&"D 9ξfRa}u,ѻ!קNY|h'Sf$:Z|i^*<ϗ O0x`Os^IUASҳ[VY܇>@d{ =6I3n!d0=_i==d=BڙtZcu * QiA\EK @hQy (cٽfpNh "*W5ba 1xAǿ56)ee#Fo +|(8@0ݦVD?%b{f:FG$ʹ@Ǥ!{Vu_ڦ@IhtfNB4 /):\2uEq_2ʝ cjT$ pe^X9jfVK'2]-4eN ȱLk ƽwҹB sQ mlY$} gEz%PO~mUis,em⫙т }OR 6AǩYbe!wx?ޱdޤ'ОnayN,%$!'yKH~ A\J41 eG8'}?ep88ơD'|S*yV|'5Rir\=t1y]X.p*qe $&R}9 p<.1`KVE UFb  ]18wgBJ*rr- &g$6EuqU4Zh:rE ,mHPN#'5,ZcQ{C6sՈ2ؒwJI>ilKmYrn+TYxTTP5DgEܩL6ĠIJUUm9-i2Jx`JB"ZAr-6q+p^qeR$錫"f0{;ĚӹƚMXS@O-GvmQjKBn%x e%y t!pDsLK=oYXCr eLպ=89ʱHyyy|"#A"Tq IUcYg^>[+Ar}S%QI!9xo]jczEkQ&=A$cT=%a;0demA,?T`ੇ0b:YOgETI'I >K7`U %7~o-T~Q3]sG~_W*ucR).n\l&\ *a\y r/ט>c7 :=R*PƔlM %㔮Y;zb8U. S*l6=Q8V%~k@dyg6H` e5$SRB4t<)^A^<X%=GZ526SEx -VUTC9 ƗsP$4wj:l>}YJd9m'_ߥ}PTZf t%C6Qy(5lT +{$vڍͶq.4ΘC$:!j4Qۈ,Sqi;, V*l:'榱`@GzSU 64yeOۑ`QX 6Y{V&К^,1#ӌ/c1$CZYals"f@o]nS-YAٶ ̧U\% =T,mSq4Ga;Ң=fAg4ਸ਼D~csϓs,$0y݈IB|L~Dd ' Z,GQ5ƕ1jCGY]WA} h3Ƭ$$CW!X/zV$Fm"ߥX:y.Pw f&%*%a+DrN6V` V% -˙BF~XT]'޴v dYsiR+ZIbNO J҈xl8oA> [z.Q;;geJE[&Bd]m@6^amT quɾ- [+PfgcQƘ,~RN&F4sDzՁ[t *o7!Z"me?XSJ޶{S>3(7ᛰ W*.룰j{.S9û67–Ya/kQ'-L/sxhcIKN);w NamyeNSXWejԀoh CGE)yB|E37<;M Z$|wi(#&Y 6qT,b֊EQHrbͺ xwRFUxyw_> ycendstream endobj 83 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 359 >> stream xKQS+2p*Ċ@jI_Aá<;=Ĉk)j)jhWwrK||F.wH[ƬAl 9a'p t% $׍>'cmP{02 h$@(iPJ#KVJ0 8AE+u#=? \eB إ)I(%`勌$C0B>إ[G^Z~jۦӪ/?A}3]J6EI@_v~oA7_? ՗> stream xMOKSQ?gwKA%s bHRdDJ?1̣[3M5\'_aaIYBD/C/Έ&BχaBggW> stream xcd`ab`ddd v541H3a!3#kc7s7ˊB``fd/r/,L(QHT04Q020TpM-LNSM,HM,rr3SK*4l2JJ s4u3K2RSRSJsS ӃP9E A L@00ֽucź>c9lߵ~L^2FrR}_nrlsguϝ:W>mr-S#z|gx2%[euweռG&Ddlk j讪=W2Is'} }wn=eKӻnn ߡkEt9`koߢ9~>':yn)?zٻv/k񝍭Dɕ3{VY3vgW>> stream xRCMMI7(jM   !^[XnsCopyright (c) 1997, 2009 American Mathematical Society (), with Reserved Font Name CMMI7.CMMI7Computer ModernJjK'5|uۣvэFЈċ~}p[xPaq{zxxkwv8lr~l__dR9ҝ}wghwCp`  7 endstream endobj 87 0 obj << /Filter /FlateDecode /Length 3676 >> stream x[Ko3 f#`ق@ 7;I-iES5]=Yl9A~ԻY^.>9sObsD_g7ǧ@46N-N_NZޅW.NoN~r%R6zLwy\io{-LwX5 EBHӽ_Db4Zv{۴Zhշt~% pDBٝtN* UV]6-?@v")*`'Jh|w ghQx7wq6xRk%^{+U ͞3.rx9Q%t Xk ,Q_Zu;0-t0|/H42z5>8/ ʌr[_㼏tN3m`%!6ąӟƏ >4h:(DdqDCY'D%fzr菷|ɞ6$')jQ\AH_xMkj+4'q=:qIRo v/Z,4dR^X"M0LΞ(qd$ EEvSJvɮ;q2WA8LYnR1qL%ĭuFb/"Bs%8hKY$8s{)\AېX}qzdꖈkǰj&dUb_gk12Ant ҍ$1F>6`ڔ+Z*ѲhvK>ˣH-nMBRx^ jXx 疳%glWe &Kc` Kw$⠒QAB E%Mok`mm_=Œ;Dcț5C8=$;[lϧ7=A1P`Ȋ-DˊwlM N +'~<8x7d SAY(`Slrއ LJtwƱ l*(TY|K\F7 i!O,}pNIӍGVU{OyX$C_=7ң4[_a4&C8|I6/WP .6SzA:j&n06C8sSZB9Z~y,Gڈm?3b_E c;!řH@B13_x}VUHEru pK1n܇“R!Es+=Gg̦ي[x8;" oRhs ]U-ʣ3rC.Eډu:=Mb^aa\PmWh;rBh{S6^WGژl2 n)3E0!i:8{q fxťw 7vr<I8)'9)N7)*iil$Q7-9=Hkz֓;eBURsyaZ`;5*\yO #=;s+v\cu#5gn̞fWi Mk0q=ó!yǓbH+W)"uo73_ϺJ\gB^Oc0Պ7%Ae`-s|:Щ&?s%$;NW%k-0 Ge^K Y俳wI*KSӓᆸ[]1׼LiH)kj [fi~[jI'kZde|1[hfg\Ok' ʱb]k"'N>w3ÿbooH,"׉P9 o2 S>`A9T}Ky8f@kn"^Cv0"i=IU޸8ɢrRϵM*hvDƸ@QWF;./kOw4ָ'B`u%d*غ Zy{d:jP9b @8WwTv JR'j &:|QBPm7T|TϡpE0O V)HNHk _ ֈymt~!fm.BC[FPE9 I2Lwp3<Qr7R7^GUx=*-USr-rjJUUu!'Cf4st W ^JC[p׍FFvݘ#8Ȏoa=Nr,/V]cs iBaz&c{-WVeO2pGn/,7!k\cL۟q3+];|򮵥Sq3YmDy᳼̾kl)!Dc-iń> stream xX TS׺>1xP=VZ{jgNm@ڪUd@!@BB dBB"IAĩVm꭭lvvkw{׵X, 8NpT̶}K|%}Ė}##GCbCy9zh혨1gCBC]1V?qύ0.cܱ'3Qx%/2A^2gL8h8k۲NFp]sR~ LJVPkpd[A ݃Dx`hfmoizI/ NT"Eql:\àn ^搠_z6gPLPؼ]{S( <,yy|imḛA+A(A4">[ Gp h/>{[_sVN 2^Η,|7b,&ؑWPV*4mi=@hڌv :ГvM@- -BYX=6 wVsm ^885onq 0I0hy[f˲fH~ZYn ŏNYd*9Urwi h&/; vD!l%\1 6>.?z?Q!Dp c_$ Qf8Wh1GGza3` 2]>(#.mMi*u,"BNσ:\[ DTsB{u̮KAp,Y24~M5>`#|rqZC΁.-K|f Z|s൞&֎v ڴU8]+rh69,K l GE^.YB_rV7KW\mҏAA.}-DH(% ʆP#u*pXÛGZt[h]aU$-cH'@0m-o3QU h:ʯs Oz9_Rb,w] w_\ q8w\Y.+e4%,ШK(Af﯋g8 MD(M>_9ۻhp`0 @%p[+M~ ~#fI< Z;>P s<t@a/| Oz}K5b-XV[hpLGüI-Ph$ pڈg8Jy't( r#}/~J#Dq%J7c|YHyP'y# 6],jiگL`oCF?@Yu:@y}&q$P}F!&9_ FQtvC'J^OOOy/Ϣ;4'8A# ZKϒ9imղE:,h̶o{R Ceg'Bk.3R+L.WM?`~ L{x pm~19fh1/.$<78I! {VDb^?BQÜZ]!K6g.mퟺ8V}cIQ#qsVUtn*[%ۖal3~u/;-.toal)(5w: ePGҐĽu rURmd7X` ^^pbDZ4@߼Cm]YA1o,1+kΓM}}gG| :$A= ;0k;na4 <<g)"lJ]9py{sgB9.{PJL*v8MfN.?n}IV7Эns*vrշ+;J{lWze& .Z07.ˤeE-h@Nd^K >jރ,^J{]'/=}`ޘWb7#9+pCmf..zjR$=8J%2`.Ο۲ 3|?c'g&w;/wۮ"6o.w Z՞|MPBbNv-R|:N unm4Ӗ&k !Ɂ[sx!:ɵW/;w&u̇M99sLg> dnaD(vI=mmDC8;j?/L*E-2˔f5\cʲ4nGgCqH;˫j8M XApޱ3(2`qf1N)~mHSpx'Zi. =;6Vq!qG4MS_O& Tz]遨\Wg&UCDz <z&ę/ V;[S.E07[g%E8Z8eBEV7}4UrtaO6hJ3hPViU=aZB ;@S/-(S" רZxL-fU@4;K4M sp]])> @ZZO)}{pU:$K1;v9˫4Ui2A^b+()%2V :.(A~XnCQ}EZt9,[n\* %6e28mp6Ke9p$TVօRIb[lkgCaBHpB+߈zbB@5y% ]M[DZ!څ)V] D5RŊhE\ȹl&N>0|]D N6ZYw7+2A<4WvNsdy}X#nm21]p p22ͻAy:u ݸ'.!;53#0.l2YlV.Up\x.iIKOݢÝGv{2%. a> stream x[K/v A$/wI%}ز}RL =5+Wwg3%TgtӝAv2 7Xoݙ7v3}u1*"vwXqjpXq6 wgb͛AxUŦ`L$dgE؋FY 1TF >КBb4vСP9lԙ[1$"o!UҙH Kýtrqn]*B@x1"j0$KZF93hW%^Xs*JJ23a8KD!c"h- % 餉K5('@'U0+d&yKwUK񩒡#RzJr5dQ[FS cB)iIg 4jY Z*2hN24. HL`h *nQ Cdk%Y3h(o(AFKDM55 >@zZӃK3І` , |YjCvN63Dv f<C$ƀt?O ΩDI0D:d*g`h)!Fӓ0D_[ 01LT|{IS0D XDN!!%H)B٣\z^ʨF@Bv=$m!dCNC-Z*BaaN$C_KB+֜(mnĀYlϫZ_W|ߟ $yDM%R{2&)3qC7 N/ eqHOWtȈNsg̈tG"G}SYaD q ퟓh0C}IM ^[H+~G;q@_4)h38 8o1g.Av뮷m]i07]:FSZ]MQ~mW'vWzs~yxnvS4MK>zt}X:E $!H摞SiPTb4}afP =YQO 4]h"Kyb.G_?4qǺ• vuNޢs|1/-SpTu4֨v0 @D!"(aQAi,gl9"JtIw&oi#jT=1wsF ߯C0uv#W.j/Um04؂Vc *!`QM7pywU[G'࠷۶ H瀙tۊQCM. @I5Nq|R\vŢ|<GOQ3-C@ɋ YzSm/ @^(jxt1mHbԅ7Iƛtj;R jVm9d'*Sd~˪`F96^_MNTD\V4$ߵ'FHll)1TkV/wѻ*TK"{h;(;BS<4U&oվ^mRtRts{fd/06c5R)4-Y㶍1U_8YX[djb*>R\fq58plQ=yJ?0篪~b ~pmZp k%,xfa" I?4s[^-4nWڎO|-$˓ E/UtN/z]^?[LkV(orۤo7ya}9ン0CY2(лSgt`b:۬G8 s`k}]exLSZ}Amr9Fz2]253O93>34+Ptۯ5wa݇˴/I%domO[‘0(I lπ+ |tEiZͥZl>}ɚeڢ('u1E/ιOŕ{M|b35F1f3o=Y֋g6XØeT$imLCB+))$z`#Z4?nT_(R@`C3ַ$eX ,O J=4~2$?6lLY5Gӡ|u͛XbM/Exu*yEwZW x V 屆|2y*ofjr"`) `J(];* Bj>\}xLzF[ARE$C.|Ons5{vIG^Sѩ2vzս^.4Q?F@I> stream x]O10 Ԫ ]2D! }Il[6|/`,@[ 4ZebY8)/d+x@fw5|^/ySntfD]MmL#;dT'qp 8梹H*`~xS V/6Sendstream endobj 91 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 3010 >> stream xUV PaٙQq@Dw7Q |E0(?|D@ FLI46DcEP0QP?IYqA h4yw^^xyTmMuV߾}=4MQ4MOHMI5̬E+Zb$N 1k(OL$ĸjS3a$񔄦"JIJQ؄+W̘9'.yINIPXAnBں􄌜aي 2!iCZl?).7+/gC@nk7'&%ͳwp2UAQKPjeMQ)*l7I-쩕@|lʟ )* B(Kj2UF&PfOMʜhʖ`D_POiSڟ>g4(h)VIH2hm|tLYT0l-㌹OףG*btC8&N H%*;Uf]ǂ?. ^f7?n Vd-=Pdz7ǒ9]]]q}ot6O8x Ϛ<9s xu AԢ$hHւoiB/`jSwFX.}25>{v _Nnu?Bإ| x$oioAIU7c >W%IX7l]iv l GkSWyp|`V"W~?ⱈæΫr?Dȕ{N8x,Wg>䜙xl2J9:r~dCumSPf:t4G;4Pk%C k k#gcK/kddha48[i 0? -QFFa)΁"SW>YVb+m&hmG=Go}~+cG ُv|sⒶU?nHf-=gak.zUĞ%Y7 Bueuw9oTC*3 D oҟ1pb=mX!z!鋥犎]tHO؎>G\ƇNWϐ I̭_z}ϞT#u Τ-~ћn Y8֥646iDGW8l ~ZmSVNJW".0TՊrAwNJͰRj"\J:%D2\XIW o;|]ȹ+@ /z/34^'YB s H47`34CU8ÓE;Tļdd>*-drx1TN?͉}S COSR~O&&4戍7)`Lx skb}7ky'FEFO'!Vұ7p8)&@;DZ\j୕72Uo"](zv`5 ű{B WՉ nIn+%Nq4vǾ1 ~/kc&1V]{x2wY!Lo<|*Bo.Z,-檔WfXn؀IO0QI(.]WOy+l 6EܣaRAkdPApS<=\uыSweMz?#Z~`4rwXd(?h =3]ц@oFXa:/WEg5[d"~td̗]!.t Ǒp,z/l\Dv?e5y8}{\Ķ*Yi^QJFܦ/;^sD^7R~%{Pi A+G#T"/q.6$aϳ?|"RZܸ [C;8\Gg j49W7$H~R]:Bхڔ%uKSQwWZV,E~V? }aav/b!@`pΒ_m#I7?:esꍶgea0Q`SgWf憮5Ŗ!wEQc{rAڬRcV(􌡵]nMp2P|p6_u A y^9J8`eU5w.tW޸zkr9K47=~Pf}VgKU8BP{e횻*- eI:x+l5 Fk8(/hnr^> stream xZr$}~j9PQ#18 (FҠfvYOVUwe쬬̪) qїa;n(0i0IkܠM"N57V`ߨSFheq&&aR:Ly|(_PL|3Sf&#C`g{m7c4&1͔ii)}f8;nOA*Z?\})QVZHkpzZK+5U^(=ZsgK=*I?L"Qa>jE Rv",ǸΔ+*8Wp.0q9rYA 8Wpɢm|Qt.)LZTFC!$<?tije~bJJeVQ(^'8NL]Rx-Ih?XR՛'DJ2o^h7npWٞg*:G@Iϧo_@Z&e$'HJ! "$𙢐(*eJFQ-LFUnZk'H@+)%»0Q\짔T)8u^QB ӪU*2kU"W)&U(ESWFN 5EQy)1 W)B)H_W91Q`Ve Oku] NGSiy"lBV!n54hC/ 2] \wpB(Oψї(.=UFH݌ Xn[ڠۥB}^hghP%ס^wSƈo rAbiϏ&$3޽@xRq]\AQ0)L'Lj$b hH֚ |k:tK~a7$:&oUQ5ށ҉*AF?M3,Jw(o!T/IE0ͻ FIOd ]OJZl@cAؓVj3^mz| UDH~4 gXiإXn[z[}x=Cf4:Wm~uU*W,(a %-!(},!K2zB;j#2pRۚDCNc/[,G]Iz@좬g;b )bzh\رg4~%aؾ%hɣV.Gó^p".Ey'p̺#]]E#LK #Hjei7?='Tq~ /z٪m[)%o3ca1էTo>/!A2~Lij$eC@*)d"`Cjm7HKr! &ŊI/.F>d%_j晜kyrPߟEr[d޴a ;\0%,狨82e +TهѾ@h*]I}Qߧ%,zU5Lm<QJASvÛ8Ū%ܪLDBn O#yl5 7$ rld^h4c (Z4p.h#&wtN-PX& O4 '<3AB H'kx b;^eKK0RN@pݜ~6sfnsj(q e`n)8*5:IBJ# Kq (~1ݴ- pD-[De0)KN?4²UC\0s̙Vͣ5gqwGmF1P H( #dnK'7 D.N WGglON]фWB4!^6,sf[f*A@paϘ]dR8uፚ)i17i_㖝>2'/լ"30K㘿e9rvBs* %L61)eBD*: Q0~%Ե0ͦ(&݃7m>!-~ezp[}NtJW|s2`f7L:@Y2GG,`5^REV|jzcl6֏QZϷEUjsәvVOawqf!u;?[YZNMKw#H9eM`0I$47%٘x04z:6q1 Ta^\ 8`+ 5$Z$9Hw6V5jeOyVm|6D QoKl؁]GR11L)C*/rAj-;oU;(ldGbmgڃdv(wM=`|c..hKJOnYEoNiRM96ck2F_*'l=Y4y\'$U`'U,[%?5/Tg=\"ɇuӝ 1.O l 4%EV?> stream xZIs[7#X9=Nk<;Kyʮx(R4HE2}<R\r|p Kw}z>a/8l:b&p57LOB>RָѶRO/~X/vgS8stw$S\t:R{]e)ƌq|3DoVK87Q@^;)nq9]y])wSJn Æ[ey0n8*b,. gU-L1P\̸%((4Hxu,8 2~ ӍެˎK7I*:i &ϋP(ŷ#M/v`%AKSVɕ9q0ydTk !x r{Q{4T! <;N^3].bs1pD%5Ny8F6H47|}R>>ӺY+p dd3`*j4װUc(xelVZlv9\0k4OX-aMZ)ZP1c(o0)|"8\o[>Ghj\1-D8b&Vبd&$&/(;Qf6lb{pq6 n$S0nNe@goM< BXa^k+fsۓ'qUri㝂 xȷ#J KJ4@u/LgY`OpP$*y| L*H &S3_7++Vz~Tq ]> ƊucmWM_E!}k٠ճ>}ޠ>%qڮ,4,.0Zq[i,>kjEO(/uΦU )ZM2q`4ZѻOF|[E!ef)۠Dm.଑XAg(,3UxcLQl冋^fQA.7bVǔed0jku`ZaKFk;.SqY:S"SfnU/Vi\@Os xXA9%rVԲ> X)/tVP:=qtF{k&_t 5Pۃc]|U٧ѥBFN<^[a$ݶU)(GQ/e 71۸tA[AtDs*mwkGIF=v8w8m @1cѦ$C5,@ agd129tD2hds6G!!$9"&Afz3rV@xp+Tl%m̆*g ` ]՝Ng>Z#f:0ݦY4hx.@'XkwdʺLf" !WXqb/2Zdw.pi؏=OY8<@wz#:j |oλhR&cc6W15xaR=)",@Nʈ+{9H!iOg 0uGf @BC K.gbٙcf"ŽБxck\j k*C pH (~T+*ňW`7Dftقl<j 8 D2zLz` y0)r~H,K e6q/Q8dH'VY gJd(`G xHۆGb6 BC{T|^s[hnC8puXQ :f5͸Mճm$`~i8qT(30<5 ܈>Ӫ8EԱ; @ ^o;ٻvE"~R@ZwQ 0DB<rPzGq;at)5=(wT7Ҧ6>gEC ~ո?>&DxeIC-e^+qWeqqsrH k$|9 U*/Ǡ(7wc^7BuO!sאAʍ5"Iy$_[5=rrB$ׅ?</NXendstream endobj 94 0 obj << /Filter /FlateDecode /Length 3242 >> stream xZr}Wli7ENpVDbڕִ]Kʢ>g#ƕ! ݘm!:=+bwۙLH]t-ޝBNN+=iz%;!˷etӘ۔}鶌Xم픒"..aqaߗe2TFetXw=.RPJ/љ^ݗQ}62y(]*u}8oݘ. v9RvZe yE\21MKM{#EvH%j)ma@l8r}m@$tÄ!RD?׶ YJDUsi] qʻ*bC XFl8N/hd!.:Vѐ}u[_fEE27qAHl#''a$+J`T Va-M 6ka9 fQ(8 Nx- 6-p츱aXV=0̰Xbk|a q\ć=aQʰ3<`_`}Ve[8oBͤd/v9 _508/mb''%8rjq՟#`I 扴@bS` }xyHYN-r}S,'zk _>"u*72aR{Eh+#=)()S\(,Z[\ V=JBV$=fGe@  T^^oV)Ef(g \hĞ="}ZOY>2 Uخ'0Y&3Ĕύ)q3 5NX7tLG-$ 5[|MA+כ1FdaL!$P2,h^&TX.t1M!\w*8bDBwr_MiSvB}Qa`֑HrEe1r1LqDjgF7y-3G{l9شHCڎiۓݎyiwɐa. |ZVNO7&Y3!c =џqEmt6zFI03ire+}96R5zf鶏1:׉֤'K>ϼ+O]9m5=g3)IVsИgjM.NLI#G.#!P~~ծ\7Gª(Gn,Iq* G9աxn|thDb꯺Y2ʒ+ut#_R_Bͨ2-B`2QAf_!z]Ō6AA_["JuFf'EX*4#1JneW|1=ETNztO儉`,s6b'^Gj$q7Yið ucWö1#7L@*PBNؿ4ʙࠜHfg=I[VyLngDgjyyZ7#,Z[IhtfIewx'%uS&.;,k߾^ƩVd숗,|6i_~JOY2k wyyLJVtLcb9]'~DBH˳GkYa5I#dTߟD7f„.х;}fbF,ﳵ3XrHg촯vz]ib,RXϠ9Gd9ȷOed.A@F'@ݔc)F-*9r됢q\0=M֋.8%wJ,,z&ks?Y0>8Y3D?4Td]H5Y"Z,tq mrCnPdm90›M]"NFy>n_.mYAWTCP8f6]7zJL6>yv3&vۤ%QyS4WXɷY:luE,s*=okL ep5J:hN?0―WIc"uZ!%IsF+ 2z>puH}%O^"+ xws^O3S)}M9x>OQCn,]/"U+DpAb-{?L<$}H&/|'ZԢ>Kߐ+(>ԟ$Ls'^h_eyU7WgĿ^m> stream x[Ks<)sC7;.IdVrsX2XܕEʑCz403]R.UI+,_7?Q+S=>ӣx|ys/~:q3qs0#c88Ϯ?:ǠpqrF~:|1*m^7QZOp4:g4l lw s=|Ls|&s_`>) |XҘpsJ5H]h?<A))3.cPvNڜD*QUiXN7.rƂe, FNN[ҊOnDv;N:|ȇ ά欵N^[P^?I٘ξDj24hgoH@ըrRd_$`J`A.] M4G֪6NNro0ZQJU[4-?fB3=فB@;|N􄡫BH2<S~Ͱ3x7/+!YmCwP3&8\]tzw5Ê!LD @!ەPLc?x=BDWPq|U1DwȁdI1ei opOq8<&=*{g.ͯ[qf71pXYe a=5Stј`N8TԐkϋM?p;xgT s.eɼvp;ko=+AtA5 $q#;:'2^=9<_\U:Ǒ`+rp~E~kzCk4P!gFZV<,"|{A?V~]/-h0t<K}{;;IF<e|ez/d2:>Ay_}E nB'Vy%"3FT** ;ȏ!&dxq3zdé$=YuHƭ< g +yXu<Gbf4Yߠzg2?n0ڴ \IqfA0@ ݻD[Dh n{' tyA>+1!s_8W՗2i@YޠF:N(C+ (d ^׬2vWe96%ҦL;oUo~&8я["P`~E&ʄa7MXCibZƤPL 6nZ,MʪZ~~i 8ga;lT$@A{۔6̀weT!q:63:]\)\] oyKHY.WWYzѱ3kk0{-ͪ"[N}݁ld\uqsGD3 |P<9:uVBvՆ]6xRMRL>*JmuH,9)6I\L^wf 0#EKGJ L:|{wI q_?Bȷ$QnSoZN'"EblmU/y^n`QD>!Ʀ$+ VPwh]Ę?=&h5JV@oE C3PF XE:5 ɼnKl]輔];Q4Dtq¬M#snEFTns5ff+73k*I͊*=tp6m5 0D_XA0|-5޾966Y-GQO<ƌBĉc#5н *\“flm^|$yW6/mk H:dQ6_kIfHnK>d-,be-ק<Jm02Υkv⨜]K|`䧺v.'K@wߏ5: Ck1zKXl25^E B_+ $U]d9ɩ3-1SiIÞI9EC$_]k41ϫ9LDVa"4Ƀ+6bڞH Ufj2H_5oZ!7MPqn,^A5TLJ@,t;V w7\L%BSIhQ_N[ʤdp8En1GEs/.zGDaZ3@w%@An LWGgn*FTƗ; $Oa22Q j&AL7iweHagq ÙAks 9:HtE I%x}Y'TczV*0@BSxK._`Ԕ/d͍$(7YS% [oǕWoRpM3_mN]n9S=n{awq +7+WG~wftOsɾEEu y|/Oo $nr*k uDٟ79-@u'-# $ģxdќjXz?c.w[.![g wsSeX;͘XZԙf'&-^QEDIwqvYIoCh (R<#Ra^&ta!Q%eS`H>;;;Lendstream endobj 96 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 3789 >> stream xyTSwoRTS;RV[XU[[EEEԲoB$$IBBX/PT{-)qoڎԷK{#=wNg9pss~}8afs'r+ew!0 c?>9 Oɑir$RaFf^Ĵs##_9KEiRaJ8bMR^f()#;"&'EW1̼<ɫgYIrO!eFlHۙ&OKX#΋X$JzYCrDY^4bMNjTaoDIޔ\'{KT6-=s0&[4u&M¢:l {6bӰMf%l ۊ-fc+jl6[F`Vќas{Åÿ M x:̨ё1Ĺ'g?IgPmWsNࢍ(F!ӤBpM4.k GLyέԙ3,+l5 Hs3w$K@QR V [a/tWBGXD&xMY PAS \ axj?栌f QFlkvU5~9,kѪXh,|<-=hͥm1 F"|[jq6'zpǯoFnV#DyRH)^&6LۈڋuG|X4* Jr s¤`E5:a;o}w|~EvFnVf/xyG2x(B[/}O֝c8sTsB `2Hf!jtޮjIhqƪ `𙱼l:VN^D{Bos_\4F*:"ۑ Lh,_ؙz~j-q8ܾ#m eSI-[ $|>zKnX`1\nC9n&=ˈw&^X_&bdL oSb8*N #Y̌{{!;&mFsa},0AYVsM9C3k)&[cL2@M [Y|۠} d,쎖jMu6'>44oG&fdI|WP6ɜ`\yb̂G޵+ub&z o&-|c(# /[7ȍzfk/6hzUژzBRw-q2%>Zv.h*5x `&F/vо/&W?3ijU&  j{aSMK}/ϫt,U2R?tJ-C{P4l%HxkbM1nNj(`tR49MjQNbƒ4gD мkX@Ф۟u"+vnpnuۻg=E-^ "^V^  m|Ry! x?ru %qS#,@ClKYp 4W;ba@s~"b75^H+֘eLLeEXx|١n$ *Ï%dбTN_ܝU*ϯq~a]peKTjHca5!pVW,&:pQPaOP,ٰ|#$CfBYX)nzOsܓo\2i{kW_- j~ ,POYY.3L]з32r'j?zM֚W7`tQY{l;Î$7X $}J-PD.M|f6fgljA.(I߿j& 2,xB¿kSMOe=|MOTӨJM?ӱPp[DwIz n _}uVk֐@h 1 2n>ZgE9Xʫ:aǕQ*c*To7@/fN^\LKDa(+pdm!C2leЦS{?p?&X[%"ϡ7\X52?[;MS-*H%%PXzԦwwˉ<~ܩʗs],(ٵ`NmD ozbP|LGol>p؟~ i7:j"r ,hk -,r2Е'eLZȆO`w-.'lpy6+:_aAa=WbѦeW-Boa/unʥ #(Ucbpu<;w׷6{U TGJ +r@𓟆?_aу-ETFx~Gn߾<.!ADh.C4l!|C;d4}>s".0 ]BRMSD D[E`9{]uM΢BU0:zcWlr%@h`==qj޾n !, ߟF @;*0/76*"\ ҢL&eZ?Dw |Fv4x> 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 98 0 obj << /Filter /FlateDecode /Length 2083 >> stream xYMo7 ﯘaUQDi@AFi㸱]ȯ|{Ro)"IM//v?..L4;er1N%WLW?w;qߎ_Y&ј\$ߠMKt%Nowv!$NMI/.R Ude>4T t)Ztⴘ,v]v>eCCq*/Ѐ5CӾ#LU'j Qrkťbw\]PHJrE;*)'놱/ G'(!l?+HʠH')ya.,P+(y;|/ U |(.W3Up:o0gq 'M]aŌp#X@D!:] %LuٴY 4M$!';01ynT(f<̔`5- mj&d7̬"kߧnw'>lބ\w VH;%ȣ)F(7T(xj#l0*(ᒀUS$Z5b0WYJcwTX*^,5[+jVIćPcH=d1-uxJx  w]f|7LEqnk퓭ѭ5nqK!B1ԡ}FҐ~ d6.R.@% GP 1%#d gK :MQ1N!|sh?L^&c,R̓# 6$,[򙲽۫ x <%Qg7N||_Mo/W{h>}t}szˣ~>(g- s biKb.o2bθ{tUiV  r}j.iJ}jޤ S3 QJ؃g~PPRXUwу%k #Ӓ`Zju?>6F]Z%pJGzHFT6NHq(wv\%#*;;u܃'wI_m Zu+`2Vh\ JW@u8; <"8tyՙE2]ZAKFtd%/"?d lYqh@!`z9<"O k='sY*1'ЌK׆RDx—C(m$ -d=UU]2OR<" !G} >@^ l;A/JMa ~Xka\,}|`/^rCG=7"LJQ`<A2=sP endstream endobj 99 0 obj << /Type /XRef /Length 122 /Filter /FlateDecode /DecodeParms << /Columns 5 /Predictor 12 >> /W [ 1 3 1 ] /Info 3 0 R /Root 2 0 R /Size 100 /ID [<9b5afb1b53a615416b5639b6f2a4086e>] >> stream xcb&F~0 $8Jj?O. _ #D2-gH90[X7*HM`?\ V"_H{Drٟ$#)JuE`[r endstream endobj startxref 74029 %%EOF maxstat/tests/0000755000175100001440000000000012457237010013114 5ustar hornikusersmaxstat/tests/Examples/0000755000175100001440000000000012457237010014672 5ustar hornikusersmaxstat/tests/Examples/maxstat-Ex.Rout.save0000644000175100001440000003774712473104370020557 0ustar hornikusers R version 3.1.2 (2014-10-31) -- "Pumpkin Helmet" Copyright (C) 2014 The R Foundation for Statistical Computing Platform: x86_64-unknown-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 <- "maxstat" > source(file.path(R.home("share"), "R", "examples-header.R")) > options(warn = 1) > library('maxstat') > > base::assign(".oldSearch", base::search(), pos = 'CheckExEnv') > cleanEx() > nameEx("DLBCL") > ### * DLBCL > > flush(stderr()); flush(stdout()) > > ### Name: DLBCL > ### Title: Diffuse large B-cell lymphoma > ### Aliases: DLBCL > ### Keywords: datasets > > ### ** Examples > > > library("survival") > > set.seed(29) > > # compute the cutpoint and plot the empirical process > > mod <- maxstat.test(Surv(time, cens) ~ MGE, data=DLBCL, smethod="LogRank") > > print(mod) Maximally selected LogRank statistics using none data: Surv(time, cens) by MGE M = 3.1772, p-value = NA sample estimates: estimated cutpoint 0.1860526 > > ## Not run: > ##D # postscript("statDLBCL.ps", horizontal=F, width=8, height=8) > ##D pdf("statDLBCL.pdf", width=8, height=8) > ## End(Not run) > par(mai=c(1.0196235, 1.0196235, 0.8196973, 0.4198450)) > plot(mod, cex.lab=1.6, cex.axis=1.6, xlab="Mean gene expression",lwd=2) > ## Not run: > ##D dev.off() > ## End(Not run) > > # significance of the cutpoint > # limiting distribution > > maxstat.test(Surv(time, cens) ~ MGE, data=DLBCL, + smethod="LogRank", pmethod="Lau92", iscores=TRUE) Maximally selected LogRank statistics using Lau92 data: Surv(time, cens) by MGE M = 3.171, p-value = 0.03611 sample estimates: estimated cutpoint 0.1860526 > > # improved Bonferroni inequality, plot with significance bound > > maxstat.test(Surv(time, cens) ~ MGE, data=DLBCL, + smethod="LogRank", pmethod="Lau94", iscores=TRUE) Maximally selected LogRank statistics using Lau94 data: Surv(time, cens) by MGE M = 3.171, p-value = 0.02435 sample estimates: estimated cutpoint 0.1860526 > > mod <- maxstat.test(Surv(time, cens) ~ MGE, data=DLBCL, smethod="LogRank", + pmethod="Lau94", alpha=0.05) > plot(mod, xlab="Mean gene expression") > > ## Not run: > ##D # postscript(file="RNewsStat.ps",horizontal=F, width=8, height=8) > ##D pdf("RNewsStat.pdf", width=8, height=8) > ##D > ## End(Not run) > par(mai=c(1.0196235, 1.0196235, 0.8196973, 0.4198450)) > plot(mod, xlab="Mean gene expression", cex.lab=1.6, cex.axis=1.6) > ## Not run: > ##D dev.off() > ## End(Not run) > > # small sample solution Hothorn & Lausen > > maxstat.test(Surv(time, cens) ~ MGE, data=DLBCL, + smethod="LogRank", pmethod="HL") Maximally selected LogRank statistics using HL data: Surv(time, cens) by MGE M = 3.171, p-value = 0.02218 sample estimates: estimated cutpoint 0.1860526 > > # normal approximation > > maxstat.test(Surv(time, cens) ~ MGE, data=DLBCL, + smethod="LogRank", pmethod="exactGauss", iscores=TRUE, + abseps=0.01) Maximally selected LogRank statistics using exactGauss data: Surv(time, cens) by MGE M = 3.171, p-value = 0.01898 sample estimates: estimated cutpoint 0.1860526 > > # conditional Monte-Carlo > maxstat.test(Surv(time, cens) ~ MGE, data=DLBCL, + smethod="LogRank", pmethod="condMC", B = 9999) Maximally selected LogRank statistics using condMC data: Surv(time, cens) by MGE M = 3.1772, p-value = 0.0102 sample estimates: estimated cutpoint 0.1860526 > > # survival analysis and plotting like in Alizadeh et al. (2000) > > splitGEG <- rep(1, nrow(DLBCL)) > DLBCL <- cbind(DLBCL, splitGEG) > DLBCL$splitGEG[DLBCL$GEG == "Activated B-like"] <- 0 > > plot(survfit(Surv(time, cens) ~ splitGEG, data=DLBCL), + xlab="Survival time in month", ylab="Probability") > > text(90, 0.7, "GC B-like") > text(60, 0.3, "Activated B-like") > > splitIPI <- rep(1, nrow(DLBCL)) > DLBCL <- cbind(DLBCL, splitIPI) > DLBCL$splitIPI[DLBCL$IPI <= 2] <- 0 > > plot(survfit(Surv(time, cens) ~ splitIPI, data=DLBCL), + xlab="Survival time in month", ylab="Probability") > > text(90, 0.7, "Low clinical risk") > text(60, 0.25, "High clinical risk") > > # survival analysis using the cutpoint > > splitMGE <- rep(1, nrow(DLBCL)) > DLBCL <- cbind(DLBCL, splitMGE) > DLBCL$splitMGE[DLBCL$MGE <= mod$estimate] <- 0 > > ## Not run: > ##D # postscript("survDLBCL.ps",horizontal=F, width=8, height=8) > ##D pdf("survDLBCL.pdf", width=8, height=8) > ##D > ##D > ## End(Not run) > par(mai=c(1.0196235, 1.0196235, 0.8196973, 0.4198450)) > > plot(survfit(Surv(time, cens) ~ splitMGE, data=DLBCL), + xlab = "Survival time in month", + ylab="Probability", cex.lab=1.6, cex.axis=1.6, lwd=2) > > text(90, 0.9, expression("Mean gene expression" > 0.186), cex=1.6) > text(90, 0.45, expression("Mean gene expression" <= 0.186 ), cex=1.6) > > ## Not run: > ##D dev.off() > ##D > ## End(Not run) > > > > graphics::par(get("par.postscript", pos = 'CheckExEnv')) > cleanEx() detaching ‘package:survival’ > nameEx("corrmsrs") > ### * corrmsrs > > flush(stderr()); flush(stdout()) > > ### Name: corrmsrs > ### Title: Correlation Matrix > ### Aliases: corrmsrs > ### Keywords: misc > > ### ** Examples > > > set.seed(29) > > # matrix of hypothetical prognostic factors > > X <- matrix(rnorm(30), ncol=3) > > # this function > > a <- corrmsrs(X, minprop=0, maxprop=0.999) > > # coded by just typing the definition of the correlation > > testcorr <- function(X) { + wh <- function(cut, x) + which(x <= cut) + index <- function(x) { + ux <- unique(x) + ux <- ux[ux < max(ux)] + lapply(ux, wh, x = x) + } + a <- unlist(test <- apply(X, 2, index), recursive=FALSE) + cnull <- rep(0, nrow(X)) + mycorr <- diag(length(a)) + for (i in 1:(length(a)-1)) { + for (j in (i+1):length(a)) { + cone <- cnull + cone[a[[i]]] <- 1 + ctwo <- cnull + ctwo[a[[j]]] <- 1 + sone <- sqrt(sum((cone - mean(cone))^2)) + stwo <- sqrt(sum((ctwo - mean(ctwo))^2)) + tcorr <- sum((cone - mean(cone))*(ctwo - mean(ctwo))) + tcorr <- tcorr/(sone * stwo) + mycorr[i,j] <- tcorr + } + } + mycorr + } > > tc <- testcorr(X) > tc <- tc + t(tc) > diag(tc) <- 1 > stopifnot(all.equal(tc, a)) > > > > > cleanEx() > nameEx("hohnloser") > ### * hohnloser > > flush(stderr()); flush(stdout()) > > ### Name: hohnloser > ### Title: Left ventricular ejection fraction of patients with malignant > ### ventricular tachyarrhythmias. > ### Aliases: hohnloser > ### Keywords: datasets > > ### ** Examples > > > set.seed(29) > > library("survival") > > # limiting distribution > > maxstat.test(Surv(month, cens) ~ EF, data=hohnloser, + smethod="LogRank", pmethod="Lau92") Maximally selected LogRank statistics using Lau92 data: Surv(month, cens) by EF M = 3.5691, p-value = 0.01065 sample estimates: estimated cutpoint 39 > > # with integer valued scores for comparison > > maxstat.test(Surv(month, cens) ~ EF, data=hohnloser, + smethod="LogRank", pmethod="Lau92", iscores=TRUE) Maximally selected LogRank statistics using Lau92 data: Surv(month, cens) by EF M = 3.5639, p-value = 0.01083 sample estimates: estimated cutpoint 39 > > # improved Bonferroni inequality > > maxstat.test(Surv(month, cens) ~ EF, data=hohnloser, + smethod="LogRank", pmethod="Lau94") Maximally selected LogRank statistics using Lau94 data: Surv(month, cens) by EF M = 3.5691, p-value = 0.005453 sample estimates: estimated cutpoint 39 > > maxstat.test(Surv(month, cens) ~ EF, data=hohnloser, + smethod="LogRank", pmethod="Lau94", iscores=TRUE) Maximally selected LogRank statistics using Lau94 data: Surv(month, cens) by EF M = 3.5639, p-value = 0.005556 sample estimates: estimated cutpoint 39 > > > # small sample solution by Hothorn & Lausen > > maxstat.test(Surv(month, cens) ~ EF, data=hohnloser, + smethod="LogRank", pmethod="HL") Maximally selected LogRank statistics using HL data: Surv(month, cens) by EF M = 3.5639, p-value = 0.00667 sample estimates: estimated cutpoint 39 > > # normal approximation > > maxstat.test(Surv(month, cens) ~ EF, data=hohnloser, + smethod="LogRank", pmethod="exactGauss") Maximally selected LogRank statistics using exactGauss data: Surv(month, cens) by EF M = 3.5691, p-value = 0.004435 sample estimates: estimated cutpoint 39 > > maxstat.test(Surv(month, cens) ~ EF, data=hohnloser, + smethod="LogRank", pmethod="exactGauss", iscores=TRUE) Maximally selected LogRank statistics using exactGauss data: Surv(month, cens) by EF M = 3.5639, p-value = 0.004338 sample estimates: estimated cutpoint 39 > > # conditional Monte-Carlo > maxstat.test(Surv(month, cens) ~ EF, data=hohnloser, + smethod="LogRank", pmethod="condMC", B = 9999) Maximally selected LogRank statistics using condMC data: Surv(month, cens) by EF M = 3.5691, p-value = 0.0045 sample estimates: estimated cutpoint 39 > > > > > cleanEx() detaching ‘package:survival’ > nameEx("maxstat.test") > ### * maxstat.test > > flush(stderr()); flush(stdout()) > > ### Name: maxstat.test > ### Title: Maximally Selected Rank and Statistics > ### Aliases: maxstat.test maxstat.test.data.frame maxstat.test.default > ### maxstat > ### Keywords: htest > > ### ** Examples > > > set.seed(29) > > x <- sort(runif(20)) > y <- c(rnorm(10), rnorm(10, 2)) > mydata <- data.frame(cbind(x,y)) > > mod <- maxstat.test(y ~ x, data=mydata, smethod="Wilcoxon", pmethod="HL", + minprop=0.25, maxprop=0.75, alpha=0.05) > print(mod) Maximally selected Wilcoxon statistics using HL data: y by x M = 3.4017, p-value = 0.0009476 sample estimates: estimated cutpoint 0.3621201 > plot(mod) > > # adjusted for more than one prognostic factor. > library("survival") > mstat <- maxstat.test(Surv(time, cens) ~ IPI + MGE, data=DLBCL, + smethod="LogRank", pmethod="exactGauss", + abseps=0.01) > plot(mstat) > > ### sphase > set.seed(29) > data("sphase", package = "TH.data") > > maxstat.test(Surv(RFS, event) ~ SPF, data=sphase, smethod="LogRank", + pmethod="Lau94") Maximally selected LogRank statistics using Lau94 data: Surv(RFS, event) by SPF M = 2.4033, p-value = 0.2727 sample estimates: estimated cutpoint 107 > > maxstat.test(Surv(RFS, event) ~ SPF, data=sphase, smethod="LogRank", + pmethod="Lau94", iscores=TRUE) Maximally selected LogRank statistics using Lau94 data: Surv(RFS, event) by SPF M = 2.4017, p-value = 0.2738 sample estimates: estimated cutpoint 107 > > maxstat.test(Surv(RFS, event) ~ SPF, data=sphase, smethod="LogRank", + pmethod="HL") Maximally selected LogRank statistics using HL data: Surv(RFS, event) by SPF M = 2.4017, p-value = 0.5494 sample estimates: estimated cutpoint 107 > > maxstat.test(Surv(RFS, event) ~ SPF, data=sphase, smethod="LogRank", + pmethod="condMC", B = 9999) Maximally selected LogRank statistics using condMC data: Surv(RFS, event) by SPF M = 2.4033, p-value = 0.1581 sample estimates: estimated cutpoint 107 > > plot(maxstat.test(Surv(RFS, event) ~ SPF, data=sphase, smethod="LogRank")) > > > > > > cleanEx() detaching ‘package:survival’ > nameEx("pLausen92") > ### * pLausen92 > > flush(stderr()); flush(stdout()) > > ### Name: pLausen92 > ### Title: Approximating Maximally Selected Statistics > ### Aliases: pLausen92 qLausen92 > ### Keywords: distribution > > ### ** Examples > > > # Compute quantiles. Should be equal to Table 2 in Lausen and Schumacher > > load(file.path(system.file(package = "maxstat"), "results", "LausenTab2.rda")) > > a <- rev(c(0.01, 0.025, 0.05, 0.1)) > prop <- rbind(c(0.25, 0.75), c(0.4, 0.6), c(0.1, 0.9), c(0.4, 0.9)) > Quant <- matrix(rep(0, length(a)*nrow(prop)), nrow=length(a)) > > for (i in 1:length(a)) { + for (j in 1:nrow(prop)) { + Quant[i,j] <- qLausen92(a[i], minprop=prop[j,1], maxprop=prop[j,2]) + } + } > > Quant <- round(Quant, 3) > rownames(Quant) <- a > colnames(Quant) <- c("A2575", "A46", "A19", "A49") > Quant <- as.data.frame(Quant) > rownames(LausenTab2) <- a > > Quant A2575 A46 A19 A49 0.1 2.539 2.263 2.784 2.597 0.05 2.829 2.560 3.054 2.883 0.025 3.088 2.828 3.297 3.138 0.01 3.395 3.149 3.588 3.442 > > LausenTab2 A2575 A46 A19 A49 0.1 2.539 2.263 2.784 2.597 0.05 2.829 2.560 3.054 2.883 0.025 3.088 2.828 3.297 3.138 0.01 3.395 3.149 3.588 3.442 > > if(!all.equal(LausenTab2, Quant)) stop("error checking pLausen92") > > > > > cleanEx() > nameEx("pLausen94") > ### * pLausen94 > > flush(stderr()); flush(stdout()) > > ### Name: pLausen94 > ### Title: Approximating Maximally Selected Statistics > ### Aliases: pLausen94 qLausen94 > ### Keywords: distribution > > ### ** Examples > > > p <- pLausen94(2.5, 20, 0.25, 0.75) > > # Lausen 94, page 489 > > if (round(p, 3) != 0.073) stop("error checking pLausen94") > > # the same > > p2 <- pLausen94(2.5, 200, 0.25, 0.75, m=seq(from=50, to=150, by=10)) > > stopifnot(all.equal(round(p,3), round(p2,3))) > > > > > cleanEx() > nameEx("pexactgauss") > ### * pexactgauss > > flush(stderr()); flush(stdout()) > > ### Name: pexactgauss > ### Title: Computing Maximally Selected Gauss Statistics > ### Aliases: pexactgauss qexactgauss > ### Keywords: distribution > > ### ** Examples > > > set.seed(29) > > x <- rnorm(20) > > pexact <- pexactgauss(2.5, x, abseps=0.01) > > > > > cleanEx() > nameEx("plot.maxtest") > ### * plot.maxtest > > flush(stderr()); flush(stdout()) > > ### Name: plot.maxtest > ### Title: Print and Plot Standardized Statistics > ### Aliases: plot.maxtest print.maxtest plot.mmaxtest print.mmaxtest > ### Keywords: htest > > ### ** Examples > > > set.seed(29) > > x <- sort(runif(20)) > y <- rbinom(20, 1, 0.5) > mydata <- data.frame(c(x,y)) > > mod <- maxstat.test(y ~ x, data=mydata, smethod="Median", + pmethod="HL", alpha=0.05) > print(mod) Maximally selected Median statistics using HL data: y by x M = 2.7822, p-value = 0.02024 sample estimates: estimated cutpoint 0.1761709 > plot(mod) > > > > > cleanEx() > nameEx("pmaxstat") > ### * pmaxstat > > flush(stderr()); flush(stdout()) > > ### Name: pmaxstat > ### Title: Approximating Maximally Selected Statistics > ### Aliases: pmaxstat qmaxstat > ### Keywords: distribution > > ### ** Examples > > > pmaxstat(2.5, 1:20, 5:15) [1] 0.09403538 > > > > > cleanEx() > nameEx("treepipit") > ### * treepipit > > flush(stderr()); flush(stdout()) > > ### Name: treepipit > ### Title: Tree Pipit Data > ### Aliases: treepipit > ### Keywords: datasets > > ### ** Examples > > > mod <- maxstat.test(counts ~ coverstorey, data = treepipit, + smethod = "Data", pmethod = "HL", minprop = 0.2, + maxprop = 0.8) > print(mod) Maximally selected Data statistics using HL data: counts by coverstorey M = 4.3139, p-value = 0.0001141 sample estimates: estimated cutpoint 40 > plot(mod) > > > > ### *