mvtnorm/0000755000176200001440000000000013232462556011764 5ustar liggesusersmvtnorm/inst/0000755000176200001440000000000013232372217012733 5ustar liggesusersmvtnorm/inst/CITATION0000644000176200001440000000344113055561234014074 0ustar liggesuserscitHeader("To cite package mvtnorm in publications use") ## R >= 2.8.0 passes package metadata to citation(). if(!exists("meta") || is.null(meta)) meta <- packageDescription("mvtnorm") year <- sub("-.*", "", meta$Date) note <- sprintf("R package version %s", meta$Version) citEntry(entry = "Manual", title = "{mvtnorm}: Multivariate Normal and t Distributions", author = personList(as.person("Alan Genz"), as.person("Frank Bretz"), as.person("Tetsuhisa Miwa"), as.person("Xuefei Mi"), as.person("Friedrich Leisch"), as.person("Fabian Scheipl"), as.person("Torsten Hothorn")), year = year, note = note, url = "https://CRAN.R-project.org/package=mvtnorm", textVersion = paste("Alan Genz, Frank Bretz, Tetsuhisa Miwa, Xuefei Mi, Friedrich Leisch, Fabian Scheipl, Torsten Hothorn", sprintf("(%s).", year), "mvtnorm: Multivariate Normal and t Distributions.", paste(note, ".", sep = ""), "URL http://CRAN.R-project.org/package=mvtnorm") ) citEntry(entry="Book", title = "Computation of Multivariate Normal and t Probabilities", author = personList(as.person("Alan Genz"), as.person("Frank Bretz")), series = "Lecture Notes in Statistics", year = "2009", publisher = "Springer-Verlag", address = "Heidelberg", ISBN = "978-3-642-01688-2", textVersion = "Alan Genz, Frank Bretz (2009), Computation of Multivariate Normal and t Probabilities. Lecture Notes in Statistics, Vol. 195., Springer-Verlag, Heidelberg. ISBN 978-3-642-01688-2" ) mvtnorm/inst/NEWS0000644000176200001440000002720413232372176013443 0ustar liggesusers Changes in version 1.0-7 (2018-01-25) o pmvt(..., df = ) is scalar only Changes in version 1.0-6 (2017-03-01) o use registered C routines Changes in version 1.0-5 (2016-02-02) o improvements in quantile estimation Changes in version 1.0-4 (2016-01-19) o a new algorithm for quantile estimation, again. Quantiles are now computed by a stochastic root finding algorithm. Note that f.quantile in the output of qmv{t,norm} is now (again) the squared difference between the cdf evaluated at the quantile and the level. The \code{interval} argument to the quantile functions is used as a starting value for the root finder when available. o clean-ups in C and R code and documentation Changes in version 1.0-3 (2015-07-21) o new algorithm for quantile estimation. Quantiles are now computed by minimising the squared distance between the distribution function and the probability whereas previous versions used uniroot(). The procedure is now performed multiple times with difference random seeds in order to stabilise the results. The \code{interval} argument to the quantile functions is IGNORED now. Changes in version 1.0-2 (2014-12-16) o start providing C interfaces to the underlying algorithms. mvtnorm_C_mvtdst() directly calls Alan's FORTRAN code and can be used in other packages via LinkingTo. See mvtnorm/inst/C_API_Example for an example very much inspired by the example provided in package xts. o provide .C interfaces to the FORTRAN routines and allow switching on/off of R' RNG. Changes in version 1.0-1 (2014-11-11) o replace internal MVCHNV FORTRAN FUNCTION with R's sqrt(qchisq(p, n, FALSE, FALSE). This fixes a problem where NaN was returned as reported by David Charles Airey Changes in version 1.0-0 (2014-07-08) o After 14 years, we now feel safe enough to publish mvtnorm 1.0-0. Many packages depend, import, or suggest mvtnorm, so this version change also indicates that the package is now stable and, to a very large extent, the API is frozen. We will of course continue to fix bugs or other problems but new features are unlikely to go into this package. o use Authors@R in DESCRIPTION o switch to standard NEWS format Changes in version 0.9-99992 (2014-05-03) o cleanups by MM Changes in version 0.9-99991 (2014-04-25) o version 0.9-9999 introduced new bug in dmvnorm Changes in version 0.9-9999 (2014-04-17) o dmvnorm (again) returns NaN in case sigma is not decomposable Changes in version 0.9-9998 (2014-03-21) o faster code for dmvnorm by Matteo Fasiolo Changes in version 0.9-9997 (2014-01-17) o T. Miwa fixed a runtime error in miwa.c reported by UB sanitizer Changes in version 0.9-9996 (2013-09-16) o documentation updates/corrections/examples by Marius Hofert o df = Inf o rmvt(): argument 'mean' not allowed anymore (prone to misuse) o pmvnorm(lower=c(-Inf, 0, 0), upper=c(0, Inf, Inf), mean=c(0, 0, 0), sigma=S, algorithm = Miwa()) returned NaN, fixed by Xuefei Mi Changes in version 0.9-9995 (2013-05-29) o update to version 2013-06-29 of mvtdst.f from Alan's website (fixed a bug for 2-dim pmvt) Changes in version 0.9-9994 (2012-12-06) o set.seed(29) rmvnorm(10, ...) produces the same first ten rows as set.seed(29) rmvnorm(100, ...) o as suggested by Paul Johnson . There is a new argument pre0.9_9993 for changing back to the `old' output. This _DOES NOT_ apply to rmvt. Changes in version 0.9-9993 (2012-10-22) o sigma is called `scale' matrix of {dpq}mvt, thanks to Richard Boys for the hint Changes in version 0.9-9992 (2012-01-19) o qmvt(..., df = 0, ...) gave NaN o R CMD check works on x64 with GCC 4.6.2 (Debian 4.6.2-11) Changes in version 0.9-9991 (2011-06-10) o tvpack wasn't working on 64bit machines. The reason was that the wrapper SUBROUTINEs around the original FUNCTIONs didn't return the appropriate double precision for unknown reasons. Redefining TVTL and BVTL as FUNCTIONs fixed the problem. Changes in version 0.9-999 (2011-04-26) o still problems in fix approx_interval (when !is.null(sigma)); disable for the time being Changes in version 0.9-99 (2011-04-21) o fix bug in approx_interval spotted by Ravi Varadhan Changes in version 0.9-98 (2011-04-19) o allow ... to pass arguments to rmvnorm in rmvt Changes in version 0.9-97 (2011-01-31) o use check.attributes = FALSE in isSymmetric calls (requested by Nick Sabbe ) Changes in version 0.9-96 (2011-01-28) o use fixed interval when sigma is specified in qmvt Changes in version 0.9-95 (2010-11-18) o q{mvt,mvnorm} shall always return a list, not a vector checks for correlation matrices are less picky now Changes in version 0.9-94 (2010-11-16) o allow for two different noncentral t distributions (via type argument) o add support for one-dimensional quantiles (requested by Jerry Lewis ) o documentation fixes for problems spotted by Jerry Lewis o interface to Alan's TVPACK algorithms for 2- and 3-d probabilities by Bjoern Bornkamp added. Changes in version 0.9-92 (2010-07-06) o update to new mvtdstpack.f (7/10) by Alan. Fixes potential bias problem in higher dimension. Changes in version 0.9-91 (2010-04-13) o better search interval for uniroot in qmv{t,norm} speeds up quantile estimation; suggestion by Björn Bornkamp Changes in version 0.9-9 (2010-01-27) o document ... in pmvt.Rd Changes in version 0.9-8 (2009-10-27) o add citation entry Changes in version 0.9-7 (2009-05-22) o make sure `error' is not NA Changes in version 0.9-6 (2009-03-25) o update Alan's FORTRAN code Changes in version 0.9-5 (2009-03-17) o fix FORTRAN bug spotted by Alex Lenkoski Changes in version 0.9-3 (2008-12-22) o update meta data Changes in version 0.9-2 (2008-07-08) o be a little more liberal (tol = sqrt(.Machine$double.eps)) when testing for symmetry of covariance matrices (and make R CMD CHECK monomvn happy again) Changes in version 0.9-1 (2008-07-02) o better check for covariance matrices, suggested by James Rogers Changes in version 0.9-0 (2008-04-01) o add support for the multivariate normal distributions in small dimensions by Miwa's method thanks to Tetsuhisa Miwa and Xuefei Mi; both have been added as `authors'. o new argument `algorithm' defaulting to `GenzBretz()' with `Miwa()' being the alternative. Those two functions are now used to specify hyper parameters such as `abseps'. o internal function `mvt' is no longer exported. Changes in version 0.8-3 (2008-02-19) o make sure rmvnorm(1, sigma = matrix(0.5, 1, 1)) works (reported by Kurt Hornik) Changes in version 0.8-2 (2008-02-10) o rmvnorm() now issues a warning for non-symmetric sigma and uses the eigenvalue decomposition as default. o make gfortran 4.3 happy Changes in version 0.8-1 (2007-07-24) o Orion Poplawski spotted a meaningless check in the regression tests Changes in version 0.8-0 (2007-07-23) o upgrade to 7/7 version of MVTDST (includes better support for dimensions > 100). Thanks to Karen Conneely for motivating the update and for checking the new version. o rmvnorm() now can also use a Cholesky decomposition to compute the root of sigma (thanks to Fabian Scheipl) Changes in version 0.7-5 (2006-09-15) o fix problem reported by valgrind Changes in version 0.7-4 (2006-09-08) o add long requested `dmvt' o call RNG functions only one time o make sure unifrnd is double precision Changes in version 0.7-3 (2006-08-23) o make sure pmvnorm(lo=c(-Inf,-Inf), up=c(Inf,Inf), mean=c(0,0) == 0 Changes in version 0.7-2 (2005-08-29) o make gfortran happy (a warning about unused variable NF remains) Changes in version 0.7-1 (2004-11-18) o use #!/bin/sh Changes in version 0.7-0 (2004-10-14) o a coding session with Frank produced `qmv{t,norm}'. try to check if the support specified by `lower' and `upper' is empty (problem spotted by Peter Thomson ) Alan's fix prevents negative values to be returned. o some cosmetics Changes in version 0.6-8 (2004-06-03) o EXIT statements are not supported by `f2c', Alan added GOTO statements to `MVCHNC' Changes in version 0.6-7 (2004-05-27) o Alan's fix to MVCHNC solves problems with large degree of freedom Changes in version 0.6-6 (2004-01-22) o `La.eigen' is deprecated and `eigen' replaces it in R-1.9.0 Changes in version 0.6-5 (2003-11-14) o check if covariance matrix is pd in rmvnorm (by Fritz Leisch) Changes in version 0.6-4 (2003-10-06) o use new base function `cov2cor' Changes in version 0.6-3 (2003-07-21) o Alans changes were restricted to N <= 100, now N <= 1000 are possible again Changes in version 0.6-2 (2003-06-25) o Alan's recent changes to `mvt.f' make `g77 -pedantic -Wall' happy Changes in version 0.6-1 (2003-06-18) o pmvt(..., df = 0, ...) will return normal probabilities for both the univariate and multvariate problem Changes in version 0.6-0 (2003-06-17) o Fortran code in `mvt.f' updated to recent version by Alan and Frank. This fixes problems with `pmvt' and large degrees of freedom. Changes in version 0.5-15 (2003-06-16) o a note on one-sided probabilities in `pmvt' correlation matrices in cats example a little bit nicer Changes in version 0.5-14 (2003-05-06) o the package owns a vignette based on the paper in RNews 1(2) Changes in version 0.5-12 (2003-05-08) o allow df=0 for pmvt Changes in version 0.5-11 (2003-04-29) o package npmc trys to use 'mvt' which is internal: export it anyway Changes in version 0.5-10 (2003-04-23) o mvtnorm is now in a NAMESPACE Changes in version 0.5-9 (2003-02-13) o log argument added to dmvnorm, thanks to Jerome Asselin Changes in version 0.5-8 (2003-01-21) o fixed bugreport PR#2478: sigma for univariate probabilities Changes in version 0.5-7 (2002-11-27) o use R's random number generator in the FORTRAN code: set.seed has now has the desired impact. Changes in version 0.5-6 (2002-10-07) o rmvt added Changes in version 0.5-5 (2002-07-03) o use .Fortran(..., PACKAGE="mvtnorm") Changes in version 0.5-4 (2002-04-09) o correlation matrices for sigma with unequal variances incorrectly computed, added `sig2corr' for that propose, tol argument removed, fix by Alan to mvt.f Changes in version 0.5-2 (2002-03-22) o Frank added `tol' argument to MVTDST, now in mvtnorm Changes in version 0.5-1 (2002-01-24) o pmvt(0,1) works now Changes in version 0.5-0 (2001-12-10) o release for R-1.4.0 Changes in version 0.4-4 (2001-12-06) o bugfix Changes in version 0.4-3 (2001-12-05) o the length of lower, upper and mean (delta) is now recycled to the length of the largest, i.e. it is possible to say pmvnorm(lower=-Inf, upper=1, mean=rep(1,10), corr=diag(10)) Changes in version 0.4-2 (2001-12-04) o several typos, man-pages improved Changes in version 0.4-1 (2001-12-04) o interface changed: sigma (covariance matrix) can be specified as well o {rd}mvnorm added from package e1071 (thanks to Fritz!) mvtnorm/inst/C_API_Example/0000755000176200001440000000000012444022544015260 5ustar liggesusersmvtnorm/inst/C_API_Example/tests/0000755000176200001440000000000013232372217016423 5ustar liggesusersmvtnorm/inst/C_API_Example/tests/test.R0000644000176200001440000000060512444051457017532 0ustar liggesusers library("mvtnormAPI") set.seed(29) (v1 <- unlist(testAPI(list(maxpts = 2000, abseps = 1/1000, releps = 1/1000), 2L, 0L, 1:1, c(-1,-1), 0:0, .2, .2, 0))) library("mvtnorm") set.seed(29) (v2 <- unlist(mvtnorm:::probval.GenzBretz(list(maxpts = 2000, abseps = 1/1000, releps = 1/1000), 2L, 0L, 1:1, c(-1,-1), 0:0, .2, .2, 0) )) v2 <- v2[names(v1)] stopifnot(all.equal(v1, v2)) mvtnorm/inst/C_API_Example/src/0000755000176200001440000000000013232372217016050 5ustar liggesusersmvtnorm/inst/C_API_Example/src/test.c0000644000176200001440000000112412444051476017176 0ustar liggesusers #include #include #include #include /* required by R */ #include void C_test(int *n, int *nu, double *lower, double *upper, int *infin, double *corr, double *delta, int *maxpts, double *abseps, double *releps, double *error, double *value, int *inform) { int rnd = 1; /* mvtnorm_C_mvtdst is defined in mvtnorm/inst/include/mvtnormAPI.h */ mvtnorm_C_mvtdst(n, nu, lower, upper, infin, corr, delta, maxpts, abseps, releps, error, value, inform, &rnd); } mvtnorm/inst/C_API_Example/NAMESPACE0000644000176200001440000000005212444021273016472 0ustar liggesusers useDynLib(mvtnormAPI) export("testAPI") mvtnorm/inst/C_API_Example/R/0000755000176200001440000000000013232372217015462 5ustar liggesusersmvtnorm/inst/C_API_Example/R/test.R0000644000176200001440000000155612444022757016600 0ustar liggesusers testAPI <- function(x, n, df, lower, upper, infin, corr, corrF, delta) { error <- 0; value <- 0; inform <- 0 ret <- .C("C_test", N = as.integer(n), NU = as.integer(df), LOWER = as.double(lower), UPPER = as.double(upper), INFIN = as.integer(infin), CORREL = as.double(corrF), DELTA = as.double(delta), MAXPTS = as.integer(x$maxpts), ABSEPS = as.double(x$abseps), RELEPS = as.double(x$releps), error = as.double(error), value = as.double(value), inform = as.integer(inform), PACKAGE="mvtnormAPI") ret } mvtnorm/inst/C_API_Example/DESCRIPTION0000644000176200001440000000046212444021253016764 0ustar liggesusersPackage: mvtnormAPI Title: Test package for mvtnorm C API Version: 1.0-0 Date: 2014-12-16 Authors@R: person("Torsten", "Hothorn", role = c("aut", "cre"), email = "Torsten.Hothorn@R-project.org") Description: Tests the C API of mvtnorm Depends: mvtnorm LinkingTo: mvtnorm License: GPL-2 mvtnorm/inst/doc/0000755000176200001440000000000013232372217013500 5ustar liggesusersmvtnorm/inst/doc/MVT_Rnews.R0000644000176200001440000000204213232372217015445 0ustar liggesusers### R code from vignette source 'MVT_Rnews.Rnw' ################################################### ### code chunk number 1: prelim ################################################### set.seed(290875) ### options(width=60, prompt="R> ") ################################################### ### code chunk number 2: smallex ################################################### library(mvtnorm) m <- 3 sigma <- diag(3) sigma[2,1] <- 3/5 sigma[3,1] <- 1/3 sigma[3,2] <- 11/15 pmvnorm(mean=rep(0, m), sigma, lower=rep(-Inf, m), upper=c(1,4,2)) ################################################### ### code chunk number 3: cats ################################################### n <- c(26, 24, 20, 33, 32) V <- diag(1/n) df <- 130 C <- c(1,1,1,0,0,-1,0,0,1,0,0,-1,0,0,1,0,0,0,-1,-1,0,0,-1,0,0) C <- matrix(C, ncol=5) ### covariance matrix cv <- C %*% V %*% t(C) ### correlation matrix dv <- t(1/sqrt(diag(cv))) cr <- cv * (t(dv) %*% dv) delta <- rep(0,5) qmvt(0.95, df = df, delta = delta, corr = cr, abseps = 0.0001, maxpts = 100000, tail = "both") mvtnorm/inst/doc/MVT_Rnews.pdf0000644000176200001440000023566013232373207016033 0ustar liggesusers%PDF-1.5 % 1 0 obj << /Type /ObjStm /Length 4104 /Filter /FlateDecode /N 76 /First 628 >> stream x[[S8~_Y[S]i4eNH23CϯvbNP5BlK:sq"&dbJf20 jRIbnP;,NXD~%KR R Q)AKHFL]Z@RIObA(Qrɴ)3m%:Lf(b/:@=1#-:1H9f% ؘ 8Lh*+ UTjQIҔ#nd %惋`bNG_,DbL &I K\lU]8I0Pʉ5DQ('Ƣ2('|VX`L-]`<4(lմB"(KhP)&H b<(+ՠ$ahxŢPV)b,.@Yh : @&xk+GY1#f,xpt-Bwsm1>@xz^pMlTި؏{º`qn臟z9,ۣC-2C[vp;]y>+Xt9) 0ZCXhrXNݏ.3*'"7)I`\=HGh`վR9j9ഠB*\>h|O/O4po |9zHGOw1G,FCV̗Y]{[d\σOrzOn܎Bj\ZU};jˋuJ]>W--ī -TQ45B+4]CE(Vzj#ׁ"UpP_Y\htjIf涾 ?K~_w|ȇ9?43Z5 nHjݪإ8(Pg_|A Gkj^C˝8CM~/[mLEݝC&HˏZZVtѣIvKiջJ)I2nM\$}$ }TR`Ț)MXSx잳Pd q9rk-&ZEQi**#čƳ[䗀8[,[ɒϲy>Ⳝ/!%gq0 mm VϏ'I@-5ٙ,5~zt + LUh#5@qɠN JSՠgnՓ$0>u ?ՒUmrTU)% ڪFuI"Jdz .ZӛМ!t'iNҙgӕt<4{o1:S>3(O 90\)_?UP4/Z4zIB ǰS( yjog} N֕F1T`Ųb + iQB~&QUWlK'Jok_X'?T+r^vz|Q *(D)2ve֣ +CgtMZ׮JE :`aP8pgl/D\,79kQvDov`ʒ7-++7G@]o/ߗ"lNWj:򒬽IT ⋋jK my78K=K{tEӻÓcUW R) ' ݛ}РqΤ H_tQ"NV cc6Ѯ&m@4ڔVt}8prwŗ kBV8]FVJx]pIh@>tc:jdaC5pk"^]t}n$ٌ*4}=׉6=_WVkЧtB?տ6|IH#f.]~)fSnu-wP/|4Z=^kx2bPM-ZתIGWhԗ.l{B:0b¶Z{!B|ݗ=tpz@I7 ; ƵTI6A\c6}8d:,~78?r]eq{&X۩+C[3YEk19Ldi\>먾T{',kbQ_f}mй-4Imlv:KO= FGϏ8[ABk}%. thUlW5ln|ߧou>ɋo|<*2+3wPnrr1f2*`EW)ȑd? Jgߟ8SGaB(L#sUOVwo_df4ͧ%.XY>~lmGWe7hH;lBq){ϩOx)TzxÏ*|o/ЦGG0z1ߧF@({j P #6XHu[D&˻lo&Q썑<Y $QY{'PґGJ]DuFJÉ8J^Yo[Մ‡I!n3pMt#1!y/_}~COQyhqvkZd#X li2k9|s{v?6'ܖ]`1n} sK+ظ~Ϡ|~!ᙺܰF2fRX3Qy Q˛b~~-E3 yNż'ʧ*|O\!,KlubJM Yk oơ?E}^LGzC+859;Et/){M> stream 2018-01-25T16:23:51+01:00 2018-01-25T16:23:51+01:00 TeX Untitled endstream endobj 79 0 obj << /Filter /FlateDecode /Length 3918 >> stream x[[F~a77t*8`HzmxwۯԣMA!Zi/_w3ןݓ{r͉wWw@jwgOE]a&ήN>6PXK4|?5c6&}+ gVܭÇ5:mo] =5 h]vz'jc-- ϯjR5& mA5&"Owjgk!XRexx p7הތ%NIv_k׬ MLڬ.Rb],kldGc\n6k@G#ͧZ7?lve)i)cN]KUvF/yc !&1LkĦ`]M6 s$(t;;`70l "0|,,J@/.x.ӱ%Tv+iD7Խw+gqMG"COޗm9E,\VRzw|( (:kċ޴'ZVGnu& r"j,[jXgu ʆ~9iE.egl)>Z[H }xb*[0̈rwA,@狶/c%7#+5^k {vU%lD[EሜwS[& VPEFIdp EHZ=1*ϴjͣ޻\T@@:'[hTbH$PbF 1RS%~KϢwY8>_ܨvᝫk& BQ6{2輚}!@,@On4:zŞO'01F?J~-zq~ն̀hm ok9Il~+5ybD86Fu)c-dn&ZGʻ*mI۶1Q&#'ˤ_.u) PMb~Yԕ_y8]޴9)CT>(hZJ2^ȹ^Z`ƛ% , #9Ąe].U[7-%ݾ 9栯偌;ncgJN\H%t3bYeA,* ?Nza*,Şc! |4rA.9U+?Q}Zt2VXD>^z$f.sZB{" hiI(i 0g>h hk,FA_EZjURbC# BY UH]Wv~]h• iɿ =(nKzBxQdF%.EY8JBfJEW'*z.l](5ڍP+v)ry\NjjE5a h/g10rUj&'ʜ+Zr)Kyr])ǔ&U/ (&1"hk:.$ÑܖșarMԲTݠIuPU}kG@HmהRtrfkʘHW<)XzC:3{ ٍytH/].70w.kzы=Ivĥ<LhoΙ}d)v}j`s/1PjmL4ԫrO 3.CA6$Oci('ts=k!*LD& W f059AK[Bhy##R=R.w_^se{>cJAõy6"5%դe|$OkY{ cCI`lñMg3˨Hs6sn X3n@٧=K=YR7'4Ad>:@uJzhSGUnT{Œ4S.>h[ԙ$]nU|,z-u% WJW]<l0)O{Ji{o*^)TP :eZ+-c $e#v^si$8$'NiHx&?p2)RR׶ oVNi;Ys 'f)(JĊn=Qs^MJ>"j]Ha":[m`i]@+8SYI* C)JsMHOgXJ _fY*~igļXҷheԹ9>iiK_,{Ϥtntu7$ _W[Xbxlmm[Cf"\8k̤&O3Ʈ:ϞLKu\:A_&?Q R63VWa!fr#]EB׺],90ޠkM|ᡫ$,y*J]E^[7-i-BX1]հIcЭbWN_s S]q431A:sۧK֝'<1kZ /E5SWr+VG3/loz[ \<~N}QS o)>( mhO#^cgvyٴ#f)=C4H˜=֮{SB- Ϸk-`KI}X"V *^Ln>"r!HePŠLɦ~U7UuDRG l[T%{%Iu$^YgZ܇GE]X7#\ffo('hOc7Zv7/H&pv_],yE҅4eMIng'>;1'f ]F.c~v.֣nX9{P Qhb6~3㰜RpXt+ #HMO7hPZEFQzp1淗KԲaكIF ތ$bCQi{{*bDn.``-tܩwNw,|ྐྵׇÙgoyjD)yX6oۙj@/$U[eA!e󬎎LKoۆJ)7n^U굗mZwnk6$ j% < /&vW&́D}TΓS :7|) ;ސX) Ԏs 㙲)iZ11O.1Nb.1}?.>RϵpI(o:F˷H+36;R+B¼K-gP^v3endstream endobj 80 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 2508 >> stream xViPTW~M=;J dѸ%Fhu}'DOFA#%)cFTc$%YL4SsNswG12 Y܀Lr^Iu`G옎a4F!fVCR3%dibs,﫝@$9>#16:E::+!>9:١ݐz-!++mnn9yjs33rRSk͙&egghWgKHܐ-9aaI+bV^v 7ɳ dƋa-Laf. 1aL2`^p0L!2f=rO% W;- Ԥ& Lv JD>ab R4m?(+4,>GǞ0_i7 99c 4fNU`;L<48''p䮔$ K, *Ѻ{q舞Ѝp餒"Mp?(| [$Hm[C6ʪF'ű; LiYMD8u46y2K|Qe䄞rI!nA|cAil: QAE  y~9"fRdW^ZA#bٱ0H[aAfu<x=hDv8ςm:s tEci\[y5f0k 8iTyxRNiupI/Eky . x#% 7Rq=P nuAߠw:`ؒגVs{?rxTq}Bܹ3S;dYG? Ed `+x@ ]O>vY)NKp@JN})2ƲY6R #u%>c]>&<#Mʔ*yI4saߐT[~ouvKdy4[=Ѹ chHҹlЃ>W>Jgx$L*VN*ne6pP#}AUuxzhL&\ 7&mtܿllzpqAxXԒFwV%aw|}:| WߥO:>p5W/Z1/zYdph1S;L_߇M b?R:켾" 5&KOgr< ED}`qRXDfkև -h \}퐓mŧZp2A[Jhpvݗd6ҽt?O-j'{`, a]Kq7߁SN\ kzyqwUS;6ZQ(SOGëvR}*yHnmp .9փDzP] 6AA >n%&S^3+olG#ڲ5aJQɫC =goaG:Df.&]6@M6P!+<(niW9s%>p#xQ} (_Eq%͋~KJFAl)Sl*Y߰$~:\#sn>?΄W K&$Y5[z,YO(GeaDFBtA-Rq􉈢Qr"X\sjYYQiPn͓ 5 ?k0 i 'RXwi8 iqx䩬> d!u㿊TiLYtYM€0uY9PD8-z 4 P]qڍz2J?∓m@܄b £Y@U+p+5QfRjkjkj+j $(NZ;yuB"065xBzIuYyY9;j`BG3h͵Jni]F5fID'NFvzVI'rjvP2tendstream endobj 81 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 3511 >> stream xWytSgv1v:sXYs@N)IB`dKd,Ke}wyexbc`pY3%!ir20:3i=I?4=CG{{cf`[lZl3ls# 3;M=3t;)`aeF D3drB/V/]|ժ~ٲUKE I(}@)IJ0},W"R+KT%i"*RCT"RoɊ LeȤRHE&)rA\,)ErI$_*`X=%J<'W(&)ORs?bbbfa`m`z6k3]?cc"l;bYOff`ϸ),bV)o>Gs7复Ihn0df^S֔k9djz)o%z극o}qwt@=ր́V(`K4!2Օ(t1F/3r_cvE8>N^ C,s( mPW[|Xi3a B֮C lqWk]|ah @mt\G7eʱߍ֞O"@#` )k!ȕ?U} N6AƠ'Rh6>r-9g#(Z4ʡx2J@U<:xl [U&vʕLrZQh#+eҲ;FsD8 h¤ȓ`hO\r(%S8D1KC{!ҁZEKkV]'̊YpU:(!Ff0} PE~3^ `ۭZ3yp~f2]HsS)W0T7Ѷ:y>|LƫQTFjbvRԠì̔ xnwyQ*F!F [, :u@g:!Vf$~>\? GÛ:ctx.4$k+)` Cږbx$EgȒw:Q*nr:C}E`0O0/1/rvӧc_Spz7rDPVRm%+VoBn=;A*t 4_8=R+6`ޕS)boف](y~(WL&nNE8y7$FfV) ƻlg*5`w0VC6&Y=yc71ShE\(ny}E?E=*3YtCT@->-LUfRN{0$cmgă]SCE8T)UE+[[V׽c'&h>Qm+s?u yE> .g8~‰ g6XJRA|?cZ&Rj/sYLJ0꨾6H3lڰ¤-Φ?_B]5,fdԌ?ТkKOb{{vЇNIt곻t1XgV`ig|n7(5?,LGw8z&yuΊy,=kd.i>cC#--_ru9&mߖҍ #C@t\&jR}|>M4a(  vS=c벶V]btÈj懍8} Sv'V"ل~G?ƣq䉳9kdWyﺸzXLr:fiv?rƭy7&|34xDe7䷜;2znFf5Ƭ`Wug&@L'v)xPT98tPvW~ut=%eB;X':w=F2ƿVd)܊1 Ng#%MQN,UF]m%0b|GR[ѳZtRd 73*f13X xz0 a#v_j55ļ4Ep?> !DSn) ;K,,ޏ}rNK}b@r1v3 UxF pFNS "j̡kqAﯦr.KV1sW+hZR' )F/FG_zSǯEo~TZ%C .-4NgB$sAhvgҍd̕9-d?^֪endstream endobj 82 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 4056 >> stream xW XS׶>1sUz*'yTQ@mC⌂LCE0'Y c  "PU_mwkUVkku};z^_$AD"ZD|e)%`?1}gIDK;&,$T讘9sbb~DPLX`@bE:4("@MP*|TaA݊oQO?) "v*&dE|:T:(6(fgv"UZ2 "HamKQPmdfMo-YX$ng|m ]FX 2(ƛqeV101üʬa2kwf,`&0^D-f!3Yx0iR5f:Yɼ< a1Nc3IPʠR/`kveY#rC|0tЏ= S;t=1"0Y\\%i-=t{Hx=9zNnhfv! P`5 Ųd|NA .>-(p !>Z%+@Sȑ've0vD| tƕX?N^Xi8ǡDj z3kX TmƠ0 .JTqz'Y2Fcd?,H$'UAokNAwvGxG#Do5#ozYhLN?E8 VQ,au9Z)sA-×>&b9@>7[Xr_9{hXiǙ$MT܅a86Yg &EsB㈧װH6~ɷwO{/-VTFnp8=8[2dƸmArY2֊󕼌ÙV͒+f,Y^[4%4$ήQNG/$z Y~KZ2 ew>T JVUv*YvM #sez0[$f ->^(p>± W9N!oidW@UvVp~CCwʼ`,lQk_s9MrތZ%Rby* Y@ch/2 >Mrdӓ$L P%z@reۏM;Y#E*=IX.:%; `Z8e,1a_&]-řJS1㱁6XS{&ξ@wAY9g $6C>N!É`)'-1wIaRP$AKMT((j;l/*Thk L c8,h y%Bn9yMe {?;9X%d$yU؁-g~Gf $C&r\Rp2*_KR.d .Wiۤ%oO]ntE8ZW,;lf|[Ͷj_+;D'1Qa,D5>|f-ם.1xm" +p?qkj.!CP/2ϓԺ=n/9I^EoB]ОݠݻSeW l.9hSkZOA'T~;&G;op])ZXvO~ ME`3RXiZ(lSv6 |P1z`T?=0 r/9rU?MVW 3%:[(u869j?pP |MFy2W)zg楦hӳ1Su{5[wC'g pF8 :kLiԲV2goLfd*WNE|M>݈]?}] ZRD80$A+)u E;^owWa.PHɢcM ]԰`Ё5ozzU Oɟ~gkrad9̲%{XťYB>tqhLZ3.ncѷ+c销), *s -P -t>9yE uvʞCE};fZ^vZra/E?|v]'&Aj^\JHI0;Be"mfḧOO>.WdKtnc(иYNeغ:&26\W,:ř-%)ݸf𳫢/QK#r[ːYlȪ帖}z}rd'&҆{nǘ7{|s33q݁05Vq7Cx 2Kr|8_(ٟtOSzv:ٝGc[--@ 3Bum{K)zV58MP۟eH, JY{6 ݆vvZG!7T`?GTEOlE"鴶AT{nz;3ҩ׶f#s3/-v җ qGκ-Tτٰi-M7~N1@ÑAFa6*EFD47יM&Ȉgr%Z]%"sxdqtIѥi3t{qyA ė!/YYiiwpAv#kqM\L=_tQt]QQQQm203NF!O%}O0Rq..KJ['#u19H+?]p8M]5;kZg uW.qۄEc]/'& umPN2ѫ#jdd[1krm0d*Ly1endstream endobj 83 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 5284 >> stream xXiXS1Vv+lj:qyV,< IV32H"Z8֡UTZco/~Iv?ΟywڅD_1^ tG@7pKKpo m|D1*dixhsac&O8sdϙ!́QKea!2OoYЩa2Y̔ѣGFƍN631\2$.D97:J402ijz:DGBKCQE5+:fܸy 'o^4dаVED}Q^cƾ5nzZF S+ש!/65ZE VSoRkY:ʇIfS j45GS 8j15ZB-&QPET6JQT/2Qx2Օ҉z]witI7e{t#bfgw=n<2¥u^#{}.gCg}{~]?}ԣNAqhUk#P,t,HRcmݳdclSۧᴦB{eY+1> Uѧȼ Ѐ#b%L*pH_c$Y,VsXM#7t!"BL=]/F U$`z0)X[oF}$Rrz ZZ8G?2E%QUП '%&AI4I!)e<>ʸu.QUE~,Ga&{mQCCy[ OEoHN]JylDn}a @?i;g7c/sO=sTOK荚<%{ c wh^C0D~GB^.&]Nuh9\:elM8 8_AG({ڧ_ kAwZo34jxWx4Q0n_YrF}``XDu\k60Oh6z %Ńis epuO)g\^<Ðdm֭#=+$BcPGq3=;6=b-[P9T2 )hgA4֖AvM7)-(֌b-}5K)h(/P^Lh4'Zy ^v`opnC_ p\SKg=`@Qq |!yWDe򾴃^qΔErmVXU@"d*˕3h 8m$8CNN8]-Ntch6Zʌfi2J";Q=bd$2vAP{:PKfѱc(XxYqPj$*UfZ2d_I^ yZo4|p2H3!/.6W͍] oVi uj`3@1]d;$yyE;r es7o:~TSB^XRΔ }G.\^b`K!w*ފҭVQS⎍\sr`{dʹgހ Ix"t^f4~frV! c)s+A  dD3 Gv/8jB-#w=GuR`PM B|dJ^!mӱw7 ]*Sm9.AJ>: Yi9xb)oA笨hbpe-⛒+ !5ׯa~5ĤU 7*q4Mq vv%0P?i$QE K<%BQڕx_}Aؗs6]XJAg 819(PnԠoϢʹٷ 4ѡB(NwHmjjBV^F3KeCYW\A٠P%Gi}ZS@Ix,?A7ZqP([VJ': ^)&NޮȞ:}J r=vP. (P# ^<:*dku$^#Q//Tmwc݄T3q+z {~,_:zA⫗~݉<^85q+ތ>u?Sh9nÎ7q_ؑN&(ZJ NY=a ڤWAJ@JpPEq;~j^com9UaoݤfMv H/Ȅ-jB%׷Ͱ3pO<3煐!eW l":htk}xB,u8G-q1 Oiq:m7[ cL&.ߧ*M@ I8v JH BJL lL n~7#f' FC?u*"+-$Ph^$PCr!/2$IlQMEh|ζQInH3I"tKq8Jϔx !&f]1u6f>C,zI^x0y6s8&}l,K6GaLN Lؖn݃|ޣ ;pZ]w]!K-L$6y~*؞G&ѫy 9 Ӯl^fg)E򶙌&YPpC*,b!M(l+Oi?&`׸ erEsږ\e$'f=qdL;B +"EE/g$X=_cvN-Vi2# h%zqg򄙒kumE=EN]{*f+YہぼMe9X#%;M?pWʕoL n,>#\Rq/8𑎵2GB,::*Ш28_gfaEt*| \4 ZB%y#>52+xቀ З|oE;0}cm[7.9~@2K; G\Ե5P}ڡaNmZS epg_@:eRlczH&7gVIbcqKUDKI$KVFUh37*N$ Ö.3Qay*c񝛨#a11-;+ZvFTv;w`ȡLj⢢jjj$4wE" ٛ5e]r5Bs·DH[ Fvb}._*z#>8_a9ᛌ>'zxf\9l5iٰ&m_.=2X=wL".F7:^j@/_0m&N:V΄CpI]p_| &;pwVKf>Td-ɐ+3ZUw˭(?RY~ٓ{^c|66L$!~K~ub[+yOq$N$UyhT# 6O޷>u܂'^ pt#K^8wc&d|dT8'Y|Z2:zd ~lK)*n[Q.B4?%8+V!h-9͊̾C}0+:w(Ӭ|o115SȔöP nln#EZlFi+z%CviN_\(i;u@}Ly DkYT``R%G-֤HyQ^?dB[j$AQf.o,l=t|~؝ #"+1!(} Kvn6DWއ6O6͒-ւ/lݜ4uY(.Cbh)uɥ^JQXlendstream endobj 84 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 7275 >> stream xyXT*㹀3XkTlDt63f00,X5D1nbF{f$n?9g(.@ ^i鷏~@'&oOBa{j[~BT !1|"ywtkz|s]Fi6g{[,X׷K=^";I:@5;_?hj|5NrqcA¦= h_ԵڗʬX<5{vh3n +4`6ehFzcJUk$51:M#4ҍ+aUtK d ,7Td÷nmQꂞvuڻ-k/! ZBrykWq8v=jVp%0 \,e7x:IbӾd5"]t٬vb]X5Y--z0iMX(y>+|aut |%R!G`u,̗,ŷXG̪*~e$z9]حVz8 F +Vn)ဴjkVX knRWشHmO v'я,DZ# br!+A*.v,vVgԆ>t&\v%%KKdnL GG)^'x+ 3Qzޡ9`2*k'~f=K4b,D]_gQw4UP ʆ0Ρ3b~ s"J"~6 ݢ(m=R ̵59yn$Ԡ#Hc(@}^R> ;kY."4qhZV OpdEXRt.K[X3F/jG$|GtbgY>B @_hQ "HufֲFݯvuS Qnm2Ad;FԌExt,<GI* MPB V>5XD!Hjq6|N}Ϣ.4mпWݢ}lg*%h4o4p UT"1!qRC~]]`VN|c.J*Hl1Ö0`>8;=;K+j$Ѽ?= $Hu)3`#(]=DhVcls2=?̶91D~n'~:Vv'f3<9>Sw)1lO h@SZv>ǂv%K뼲ݳIZtQ @ N 0Q<%$&pIi #ճ^گ8Z*? Oct(h5؉G><`r Hf{3.rFGF0 |$Cu#G`+,N Y75V6֟B@/Ó8<_ h':/Q?ҙ 6hIH59qx#Ҹƫ5W/pD,%eĝ3F3 vۨɻUE~5z 3G8OWk =p?3?4D^Lbh4$HM:BN^O@ٜԌT"!hvMϤTy Iʴ4ه8[:yơj/pV+#!wU5Bf^]յ+$ln_A/dE7aJMzC%`pD[jTcrP&9P]ZJ{AGVmPF@wF܄ y^PVDj? R;! ֩}-w|E~ſgkMydf_t#ZrwQӓz x:˦{VS~;p?P\hhM^{7of}(ݵgϑ*cSÔA0uK˕ DLH/f?\L(*љP-TvpQZuԪ/0k1y vp4FuB2Qڔ(}mٯj-+%eLJ 5]={U̢^ 1ZLSz)[lɢ+tO Z]XˆD5o8H[]bc8)f e+{Dv%ưJ**`k|+#^BYGKR¿{B~. #/#[֚1h8f0d8PǠr+N(e;6JpV'lQCM3ʍ{C4]v}0j'5!k&dkEES*jD3eR:#UJ:$UYBV?BWCkP?&?&ԯ%T1`.Ôt) :+f y{IpvՉZ(qQ̘!`ߛD!B²dMjR8N">KH.V;W \r{-lFOX$i?1X4-B#xHTG_}9$3M 2J?{غ@ihX>Xc(#Mjl[c{*:koƥE^ÕgoOLN-y;? KJ ?u3T֚xe#~Z+Ƨ<,t(f3VW\P5rA\n/K@3ń.5x4?x>i{蒩>2FIj8ҮIFBAW+j*Fdȩ.<&s}UmDeppDDppeDmmee-F>$&Ae?DalEc)RhbQ= 4A$C0 qWp ͘Ant$+,M#."B<-5 ^(w.اڧQ^NؼbwEj_hʉUZ)xb4^I$(͚rD V$@RMepreQ)x #II1vnP,t f@8ϟž4LGO 1]LWY `yf&Bt%!۾}_Uп'2F*$}]a k2%!PiV+5aTaD.%+J9^ܱ5B%=Hhak/47>+:CQ%($c?5#[]3<~[X[$5i e8Xܙ/U:bidxJWf4T8ߌ=}sc&TZt!=5tk; '+M3єLˇOMOZ_!8i߲9&oY4eAZ.Y7dH; N?Np=|r4О>^Qx9"5S`|4 :ytvoaJ %ًW]X?{~>H\b;5v蔙c4.\^bS4+'oowmncsc״ X0sg{-y'OUCV-zq U6 ܱV;;][b(%y-8=qa6LjܚM1[9Hw>? GV׳4{<G{ H߫V0l13- y+V6k5oVփi*b)lfh%vȹ΂԰-d{Q08㮸S_;YB6E-3*pJJ .N Mդes~4MA^,(?:s^/w /H糈^`&|SwmbtB5~x@i b^!Rk">4zd6[T:]4K:~GCTTI:M87DocmouNaI(}mZ c@YS`¿Jw:% I7{gprLfhK݌,ܔkrkŝ PH;<mB"F F+$kE]1^p a-ybG]~{8+C+s{4MU R*!?E/;qgPC J((Ś晣q XaѿY?^ݠ m`}U7)75{!b_LhXXIhcq~fv.Xժ!\$r9U yTjr4.]I|OC٬#MJ9c!̱$o'6d*nfC|Ν R"I+L՚^/{e[5nfOa9 0/u| 3ҝO?0ZߖrM`_|dg |R2zK1erWtXB4|Q\MyMƃIQK{_4p5֑GU1E':q&X} yM&'7Л7?mAn-V|}Eܙncl=s̸GA[Ґ*/Y *Wqxi`2ӍS,5_f:npiQ e.J Jq)KJH<uj+ĘBN+$CwƟѵF q# Bꔨ\& ڼMJVE(S YC&˂Nx`3J4i GĻ} ǯ84Yrsp%w'nA2&LVe&$Kۈicd;#q(>36Iaz tl#,Vjmp]%zdwF4X֢-,>%6ozZ'O#ו$*iS-Y.Z%4ɱ|,63+n:aKvL 62߈\Uv|%Ce_ʖG +WSBby zdc+iz7V6˷8Op {Op_8 BC̜H}q?a!'>63;.3 ͺR#W w-B\Qu[-[MJ+7rZCbn[|Cs!.6Ȉ~rKv^杖7ffcJ"\g;DS;Q&!WW' wJ<ԛǀo$h?/Ŧd؜ GQ0~g\ Ǹ+ 9 av,$4'x` !՜2)@[Ha|rwGW}Nu=zRSmendstream endobj 85 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 4073 >> stream xW TaUDaqI^7q߃%qȰðP }%`.KDeЛ8WhkI@!/99_}U_/LM(H$Y6:?)$°ܴ]c+SX$R$.VF(}}d*I'[ϴ7z[kJ-R 뵊ުI d*U %P,<:W%vVz^إ^%nFb<0D孴vQV(j. e*)4k*>2W߀ycMig̜59s)j5 5ZCRk)7jBm6R}j1rfSΔ 5ZEFQbj4eF S (sj(Q%ޢXmj5]2hpPp\Ddw. f07hAO|yȤ!C~3j?4s#,YZf:l0çr>ņ* CK禳zG7 oxm#yGHg guШ(#O8UX͑Fp7<N kbh9 1%3&K"}8 M/h/2up৿ 63\xa8!_'B;ņpMjɻHQi+7CXaę@FC\ vofo8'b>+23fT#JË}x xXƞ;{L]t1L0=u( =zR6{zDGiBC?ZORnk|eos3?H🧠ţ-o R?KjMM7YvvΗ~I#T*sP.#,ҽݸ"b/_ҘǗ#&n+,K'b5VWt Ѝ>Ϫò9?.L]SAY\Fdfdcz4S B|y?>hO6f;l-S Ah?EʆҌ"TV fVwx3OjsJ1Yz1* 4t/a^ %=JOsڭC堑Fr.U,|nFx_Z8@90WZhlho=|9?kZWz>*' ?h6 : 7H V  #*P֭(#a)'NTcD2h-MD:u3,PjQBVFU@53A=uRCnuV 0Z*ZٿWAAWJ`TCQV+oȭxW҉NFT@ +ɐ0bl8Zc |u Q?0ls/IRc^ Z پRsk1 -_CRT!D}n*~F& :Уpt'wZ՟ 7kѸ]v'ۖ26+UW#&=UW7ۜG*܁~2p^Jh+ b~H;anϽIy M'>t': 'ˎdȸlvݽqVVmT)-= !9; uFdm5t۝.Vt{rmŅi(ֳ_򀍰cˊ8fFD-V>'0۞]L856@m)*A?%hW6=/ uj'ŜE\aq~THHgn7JQ 5endstream endobj 86 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 3055 >> stream xVyTTWm{/JPp=AAQqИ\X@,hAElVQ+1JQeTH$Ez9]cf|;uN/[_U*B0i}?FR/_R y58Ew]RMȘOMv;}To >>Ɔ'FmXt:299y-Txy'G#ݗo OL Pv}}l{q}U[KUyq5-Xq/{c}|'L4y Ì`F23f3d173njg|_f"3La23Ό 3#0d3/QR^1@85`܀=i auv-Ɖm~'nàA=qGχZ'`E~ͤgZ2m6HmVNb6hx=IǑ.Ԑ`F(3_@h1ym,Ҵ\*@ufSjQPakeF,9Ĺ\BE1tyA$䊀\knA{|!D+hЄsg_!9Y_|*BU*T$;4I;3YۏYȁ"+l8İYD: ndM&`iCR5R(gӂ;]( m%7 ;Eet0Ŏi6҅۸9[IZ.ܱ+iHr]%fRxbI/u\13/p6s%.? =v[Y4˿I˝g 7 }r&}Z,mz6rgr( oSqqSEyWj~yQwɟ ?B? rʿ[,lvL>:VJ,z Y&QEgnֳq`( 4P;tQ f`|ٝQne__VA`4 r~efAN%>rg­V%zC2E73VA!t ZRx:7N^`-jmWIq:s] AHɿ ͏s^IXfwcL&ґ $/N, \8 '`H~$=ꗿݾ&wnk|^!5.*A[Z @ Tц)2.睰V\T*pY*zikZ-uQ3Mt<|zmք5F$AfX{_)U~ʸQ3jVqiMtTGulەr:n޶p'jrIIO2p>OKVZm&ҕ*m7W"i´hʹZ,L t+Yا3ċoox[1xa]8Nw@$-~f}Ȣ8(q? G,< _8x LgLXnvyusӫA#6^R_u̚:rD &:MF\D|՚Y~Bkă?oPt}oSuڍo ίE|t&R:P_kiQnWmRܾz=jns>M ͦƶ[ ⑳7U7\zeARlZ}"# 92xoJYI0AaR^) ѸeJ_QU-[?Z^^)=Ņf?YPGrPP摾qEEI1Gw5heTĔf@|:dJKMe10_,8x]Rl _ MKFn0ojn+KNݜ{9t!E~duۣ%;FكC c1k%x[[\h:yE*ݮ(ckU5 =_"+!utw[={> ak" oB DcV} ޿v8ٔW M *.f2`q&+gCendstream endobj 87 0 obj << /Filter /FlateDecode /Length 230 >> stream x]1n0 EwB7e \%Cd 4DgKI3)|wDZvm6ݖ{C3]r1n105T>C=V@ip^.n5 P.d}PF'XyUH@ISz@auhuAa%QuFVϙ~ULN(< ?ӝy}yTl5*}IMЫT9e|endstream endobj 88 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 1367 >> stream x}T}LgdLlo˂8ED&leƜ&J8(D@p"C E3],:43&[ [{WB@qwysm'm my\ƪ"Ph0G՝48J.VgoF3idJ`bc2W}OFEZLh1z;L__r ".._-tK"e .|3.H~LIr%,[vZ:Ōno@9%['/|$9] 6A̱taBCt!&C%Y'qI+&" 9 < O`FО# ahl'3j`f֚իK[- a E~TQ:QjFQ : -ǜD$(Y`]M]sY]ۦVTD\QnlЀuHFECVs;ןbv?`UOV\Əu.Y5fD `6bd~"DǍtzUuFf HO5J`#e= os_d쐹s^>o_ ~nvni EȊh,Ak!BJ~>yfL1w`3ѥѬ}Vq&I>\jJ z l0`"cR fb-y}5cd.5- Qų{q c~miCrk !bH4PJ`mk|"a7օ99=T88ҥi"Ä \B8gNGҵ2ɿꞆFLM1zaU0+T; Wqb1ސAnMW=oP >!c*+0mt%sH(AbH]2<2]ĆI9kg!{׍Gh^_{7emRXvr,HJɱ[ڏy _S6po߻(ýߜ:n ؙj..(Cģs0'qlN8G p>aٸ1d*+J!E >px=T׊X߼qok Ca4}1 -jPyl12~ j%tw8tODx8E 0endstream endobj 89 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 328 >> stream xcd`ab`ddds H3a!Skc7s7 ~.ȘW_PYQ`hii`d``ZXX('gT*hdX뗗%i(gd(((%*]&s JKR|SRYt^}י1y#no~\~r]O9V=׋翛}}5۟'Wgq>7<_s.wt3\Xpso/yypendstream endobj 90 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 331 >> stream xMKA@gͯF+S%)]nء$\ݕuj$H1"@C,(b;D?1#v<޻=d:m(VbMbL\O2$1$8KKhgzӬUUNө(J$xW#f8Ph S|hk6qxG[SF0H[5iTS|hb3f ~FsF:&r^t٢m ~I|z]fs[ő}?izq{c{K|nie{g>S#y#=E~~tendstream endobj 91 0 obj << /Filter /FlateDecode /Length 2743 >> stream xZKoY\ ԓxzd;d$ H,V#"GH*p(DžBbsytq1;>]|}H@-Bҋ×y^h{8<=xrtԽpRU+&`n$?ҰR:Zz1xW`-Wƙ>fh4!B/oRq>]LVnLUDiz9weg {Zi^Ix¿m=Tu otrAHgDQb&jOI`,=8n}*'t1{BۡR|bО&d4Ktt:޽Ηӎl%H$Y /|cTyH0Q{ԦKGRXԲu4L31:hQ<6<ϕ\o=oopJh =淓$}b%˕dI?HcUڭlEl\ F_Vl l$Efc ؎70O2FhM26by>FFu^TPؽ*擙:DziNh[Gɺ Gb8M![Awh2cr7}mJ#;IB#]+A㮶'sz Qz _g܋*3ztu^8RsZ+5I ;|)Cs U>~,MB}f {H%'!lM7Y_tGbLQr`1Ze0RiҊ@exP/GKp&bm#:>&FGsC ]PB] =2 t BB&Ni!m!鐤-E!O Ifґu*leS u7ul]7 m\^\NBB!R;P2e!aܛ]dmsoMxVmӟŲ)ϏmP|XdR@ke}2źÛ&}h2q M!_^# $=p&"SEq!i]F+-VU7]BOU|F憛;ʒqUTW: ]cqRiz#|c ;GnaDRku$?\M<u}=mendstream endobj 92 0 obj << /Filter /FlateDecode /Length 182 >> stream x]A EPFaS7.4FaQ .@1.gat.SvKA?0SI5i#N8?zVٝw}ͤ%*I IuV$6h:+$鹐 (eTJ %}LS^SBY-vM<~/!V-7]endstream endobj 93 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 599 >> stream x=_HSQqz۲hPiP?.jeFT/zuݹ{֘Dm Lm"EKFAFQ,)sgAW%~?~ BZVu(FIqFgsGrSƯthZ hC#cSMj0RzuZ qFR:jWKj|]TdEe'OTWG"\jS^" +&n]Eh۞k;7`!ԬvɡV dM{Ò'aKKj jx#; ςf%Dqa.ш6F)NI )2):6 .\fm :l2<}z}e"3G=b<+XakhъxnlxW~$vlP4Pxwe+j纝 BbxWQ[x+*SN(6u﫫g&ZvGi#xt Q'Fn@i6Þć$v㉸a7{ĞH&F[(xM`-O\.D|uq,qR}_CH8&R<=ͱD^ X~ endstream endobj 94 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 1057 >> stream xR{L[U Ͷ޻l#a'$qK"(!qWKjFl =.h'c 73{Gb61&t~'Q^B{'4LJ6qH&@h~%Nt4NK~orcζ1[%2)WJMXLYܙ=NfPaQLڱ}[z 'P )Ig,QoA{"Vu6hT ޠ3P8xy\ +oh?0>\}>EaZWg2w3 3=Tesq^G М|Z\ +/ #K>ٛ\X~\/g,es/,g )H)T9*^>k4^o2,?EXR(IC%cdP%A9B KيN3;< kʒWhy?rc_J݉M~ۧܿu]՗`~t@&ȆaY]qz@G!?봹<.enn+-Bxxa Ñ+`18@θn>0$}V^\9f/ !BzpL8( Һ B9ɱPDG"!؜;T0Á:Bqp /Xg]Ys9{pJD&evK<=QP 1'endstream endobj 95 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 4484 >> stream xX TS׺>1xP+b=sX穎u#TEA@1̄@BHDQĹZ%X[uǵzo]bA?|lҵkǍuqzp᧡ Ї8 9X#<^rF\qR$.&VvqSN8~ة%q"Ѣ)F-|{zT4m̘ŒFIcWGFG.'JG_7?sŢi$p8*ZHDܤdNiʢԴQ;bb֋>cÆo12l1cǍIXIXE&kuzb8H!6sy|b%edb9'$| ,K"zӉ>kL/G#& pF+B=v,IC~=M=PbLU ջ>'^}A߫~v~OO?7BYK/|܀iғ8G_\Ǎ|\62;':H[=ݔ dln-9/k[v/ܰ-UC 0R2; | nlufi|wKpBq#.@.MOTrtjvk.N|2̼< >bma0(ylQ3ǹ(\\=/җe͵e)TLZQ(4 F\C$6sնDe:$Io=#a)VOc//v1D$q14nȇsIs@` CWƮKNOf%ꟓ5Y#NVɂ0Պl4Qmqp\D?zwn҅6ET]1;^+ۦb䶸CsqP_ʿ6'ZX#X*>Ļ;' IJO\{r_Wޞ Uؤ%+׆ʃNvѓٰV@fۯfoo>& Pj T&c `B=| 9.>MA6erČSog==: )-xm*`4vUD@\͑/**,*,S:DZQ g7.#O3|ea }EBʤJ٪o5<8#i89@ZnLaYAuH]db@ iggE7Ss #=O` +G -__1#Y1[j^YRz8|r;wy{[7b +U}N/> id$ mmEcO_ im{EGHP,MnMH7+@9: s>ֺv խK KB¨;h1NCl/$A.H3[^-]]4̆<4%$^Vtq[@)~/ZѦ4T pj5>n7;0UI{O7"S긂yS/[:Bڜ/<ؐj_}]6& z)Or@]D~uнƐ!pW.(xNi7 Si 085V70r?Fs .^-~w ve׃79H剖QAӫw:*:!ЄOVʶ/ݡKPFY5qM;~yuO.BO|.h"IѨ4:' F>W9~u@I Mjz_C?ݼR0U/ʦ_؁Apw"l>5.+4e @X @C|-gWlZ6[Nuv_rթ^O(ؗ,ME5{۾-P]}ӷEl|V5 f~X59X(g0g9}"ԜC9 @)R>{E)veԃ[?ޫS;UlQX7Jyf@ ҈|6W!cK0ht<`U:1L>P/oӮ / caOzh?[jr6J_Ѷvm%@ݹ/9}!:n^7}׊.|Q3x|rgt8A*$SMM @,f()CAm`F~fCw~n;yvُ3<Ӭˊ8Y4W$mAT!"uA>^>pG%hBZ۫S|tђ/EQ)fRgC-{eb,x+WJb`p^=Rd%@r^ Yw+z[>a1V( 2*sDICke-Hj/ي(yẆS;`+>ϭ: 6tKY *(F2By8NϿ4 =<5R}ZzA!;)|tXt9Koѻv C:aP 8N{cjYI!O_$mDX]Nkh -L% 6v/0d ~Ԫj'Lʩ/2mpѫ.!nNAw`S__>]j%xVgS*υy2a5V^n.a0v0s9ݷ:OY48qOIm+\b@IiyRY>Yzy]1ڄ@F2*ϘlŨݺmެV9m.*TT,Ъ 꽸5beVZ2r%L7򋜲|)ibU}^%Wg*@PiL5 V>̊\kymIKN1UTٔJ#;])?}cBɝ G?`h vft™5[Z>p xTQ~b4cpaZa%þd2tY;yp =zZ|,S֥A%/O><>*nLm.5}!n@Z_7B"ޟ4 %` 7%ȼa]f(z!6.N-r$kiٵSi #}[XRTL]_bM%֯.5oW]\sMK oVp~C\ 1Ȋ~E . xu84|4ZQ\_cg#ݯi<ٰ(*ZdKޛ֥jRg:[۪& FvӅ޻ʤ磽oC3 6R7?|Oݟuˠg&`7#S{CL *>[;d%uSq+(z"K[ Qdh[]aVR'=7sh'b-LlsG :\9OJI gM!z4Z/' V)f~@Gi1H,Kmv(ڀ_ Efp@P;oGپrnnU(L/ q__jOendstream endobj 96 0 obj << /Filter /FlateDecode /Length 5529 >> stream x\KGr^`O pa khek}hrPEdVVdVUIـ!ӬGdD_Df5郢G/~xxJ\}{Ch`!N9*}xtcà[!(eS>~uu_-pM3$nStSڤh8'VB H*c5n w_Jna&87}|5hKUM  W%J)}~V]c&MֶOVZBcϗ~(NƜlVW%2~_Ip. )z4eYq';(NNY+Sh&,j7'i4q~YEnyI[,)g䜰g>&K?߬&^áxhbUe29&Pڐh\=TN)֭~B~&w/ v{[`PYvKiEǗd_*y; .-2 {Zb9e;7s̭l/ɍ gZB?{]vW$& 7sYX<]ZJaoعmJG iFm9hqǷ/ Ag Yk;?{Pi7pyr{bԪgv'+)#=:näO{0.6&->l;E.9WGva)RǺ.׼suiUNß5ӵ $qۇdYwmᓃa>dcTS7!&uX72\/EJ(,{&&փ .=x^xO\<=8gWe2Ë+ОB}A@f:_E>POt w!b-E0XR!hŠyQF]C 7/,s_C5 mKSUb-2=Y*'εftܐ3O> %%5|z8 Dĝ~)te5<{ BLJ P 0z|4zY)*KLUF3sWc>; ﰹ=/j轤ϫB(E/A ,Nڅ mQO]ae9FL7'n!k={8uC;\B̈́*>A[;=%=LDvfJV7zbr 6l!n!P g 4{TBT\)U2i?53aVcnE^aaG˃x X`zރnõJ{$ISh:un V= 5SLV􊫒ɧ_2Qmh hgs(,[G.t}~̨,`ɷ]Ϣ9T#j&%N mݺ@CϜ@+\I/p:$Z*!&sg⠱ Ud6F)%WP/P :1[ +utYbI1s7xcKbw]B~]Z{hY&Dws=C~g&'s< 8RZBJW)5`O~Xt3]t;#teЮ Ab4qX, v}c>/y ςeƈ4;Dgk>#ץeHL4iY^,Zj7V˖:im!-(%GUQKֻIԵU@S`}m=PLHpr…HOЮqI-IzAr\  {͵dv)+qO沋]{'P%d?y.Bm@'v{AAe7YDhYGԓʨWd ksW79c#jzz؊ڵGS#oi'6NthN;19Lu77 W)沷#*'ﶬ 2\i PLˆK{qNDЍ]DZaQqfݭ <jzSgAbiXjH.t)4\Tt>cDB~g0)j.+(Eyҽ>p]/TJs@+4*TǠc?#ONйDgaޛyWV菒@i-tZ^*g(Eiȼ:<"Ɯϯ׳oMIbikQ /i! >1_H4Fb8brsav\_ {DB7exOc|h%܇}K m0@欚+WIy_!r z'Q} ̔Ne  v { ʅN? zHXvn[x5ԁ(1hԂnKi1W{\V/FKɛ/]c9+yEcI;BxcƌĝSUm5@%h[n O^}k9<6w|A{B /(x7ҹ^ }cEz>>Jhe:0k}PR_DЍN5B:宨1~*@rh 02(T׶ՊD]Cnf/=乧yf&6IIB^A8~sArp\ؿ$BϢ1UDKax%utM1 &Ƴa"ՀՐ젡f)"ȫW!Bq )Ɨ)@iڹH!2[GeeQ͡{l,0_obBŖl`"t`sKR/ݡ@CKMV+?[O)C}AxFo\%4oV|v멥 Lɥ7٪ R+K{U/Ժ~Nv]&mar(JkǙ\iLyI6=\c8Ƈ.<ӁiRgm6/un< O|̃SHxriIYc*>#veIϽ6UH,#hs+ 8;}1Y]'ev婢*b]=ɛ'gpJ ' -trU2Iq_ʂlܽ]DIJu<]}8jUWCQyA*_|J*eshݬHp<l(۽h~[o@>>:]$ WU1jyͼbHSi _!k#MP1MY˲rG?<6uTI/AܻqTuטҏE<:^d~~V"h}@SjeXkPFpW+-p(-Y6  ٴxj=^RSehOS0^ L9x6y͙~%P 3]ۻj_GaBbk(uۂi xe+x1нHS 貂 oy]˄ )[[T/ v?|άr/>50RnNݺSS)Q^XC!Sy:ҳ{,fWopO2 'A" 7pۥ#lءd>bNU :q6I,\* b Ҏd[dE7/C=Dٴ"鼎Nlk KUz˖.?x3@uaZkSr(!3?ŕJB_-twYM/[~+Yz2\!ky2--ch鼮FS JܧsDOa=\,vuM> So/5R,3@%M gtbwb.ҽe04[i M[T,HC|fٹ^*]$L܀a݁DOL ipx;LsGUendstream endobj 97 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 1437 >> stream xe{lSUom` %031([ۻ_ve6co|EcĨ;&?Ɯ>~ $Iv~AuW J"Y,EȂ)d,^l‡&$M&FUY+VЏ_v%5Mj%Ph[T+ޫP)&zU,{jU u*-SqJQV{uJAyުհtB୺3kպzV#JFU)4A VqXU |b(J~$I% $Of^Td^2>kR;7wK>Hk%ى$:@K|1'6Fe=o9 ]EتW4:E8aksr&x-,dtM*)9yC*,ۺ4''?tOwǩ֫|NAx{P Z,q}#X["~<0@bݟ;&fcqA[^txПũS.'6[8fj.ZdB<|C2u7=RiF\q,筭Дgpڜ 'K>!jW yK/߅K_v^ްR_Ov)L~<dhH&Jʎ]TJ߳@$^K]Ly[S3 IEerYK+:aaV7n8|ƣTx(<14Un{_dيW^xD!Ͷ za/ΰKkm5[m˓wpL?a#X'aJԩkd09Hʿ KvL>3 A;o6htLE1sF-o-^ݽ_7$GMO1WAn=;kӦ-Xxm6d`*t`m):SQP {4D7:.wηӗJMhtB?@YkУ='oWٺu  $oO,(#_A(4ww Y U4TuѬ `oro7GGr9H6qVɯOBK ڝ>[s+$ˊqa-bضt#H\ڦ?2T\q@臘 [xM*t'9,CU˷\T\6+~?}z_0z$Zf؝NRzI 6k'NF o > stream xOuh{f霆8w=l &:ɶtvscbZۣGK[Jp+ d%K#lDcG{=v_w^gw8mp'SGtr@ҶNz 赫?=1-Bn/utm_>|~˰nGmڸf(}#HjZ鈛sLaÌ~6/C?rk{]~o`cXw07a6yaXv/`AaO(ym٪pt.꾣Q}O0DƧcK'3׿V_zB8tFaKzYjB =zn.gXds|iri6QBO(HbqDנEe3 yVf!jz#4 emY''C9va(ry!r2r#nHCTlX~ da Lv iB8RU,WcReƆp}k +}ߔqn8o=t4QT|DyUTMS>GMpټs*r4Igg ?A. R!O*%_^^ti;7f<!?Cidơ_hEl. q"//BP"pE$(BiG +0,Qqqf(P_}V2#yPNgWɩ)uǨڣ~Wc?Hendstream endobj 99 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 443 >> stream xcd`ab`dddu 21T~H3a!cO]nn?G ~(Ș[_PYQ`hii`d``ZXX('gT*hdX뗗%i(gd(((%*\"s JKR|SR Ab?M?o>҇]ޝ+ڝ͑¾lzٳTR> 7Qޔ=c<ȨߟgxwS?0X_4ѳժ?wk=9jʕ[u_.oߢfZ-Y1wºrxa[+'Woߍss$-<{ ~'Ncu[|>I<<20Fhendstream endobj 100 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 397 >> stream xcd`ab`dddsuH3a!nnM }=\19(3=DA#YS\GR17(391O7$#57QOL-Tа())///K-/JQ(,PJ-N-*KMQp+QKMUNL:)槤1000V00D2012S{p|.]|%vuw7uvgQg:KXluQݕP%ٿv-[ŷ[*mUOv^6;wV,Xsَ= ƕv揀iN;n2~|r\,y8Nη怗endstream endobj 101 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 272 >> stream xcd`ab`ddds 4H3a!=<<<, }=\19(3=DA#YS\GR17(391O7$#57QOL-Tа())///K-/JQ(,PJ-N-*KMQp+QKMUNL:)槤10002&FF|¾g.3%t/]Z]-pIly?헰Vξk?<<@ \endstream endobj 102 0 obj << /Filter /FlateDecode /Length 4118 >> stream x[]~XXWPETMRjX@*f #w>>nB"^_{<3yb#_1/{t~WvuzuVxq9:_9-q"_qaFc8?:VjQpab\ lJrWkl:uf{h caL:?|H-Gw^Dz4N0z{1j7"a. v3o?qv9dG!F"K> kz^ç8KnM#F6 愯?@܀G|ЮL?;8|(iNY=l}1 x93 L9A4L/\PChZP j;8c |=NHm`H\(COְqab_^,ly֊aYv0\! 1hmS3\X0hWq$p3: ?Nz>CҊ+Oځ{ggQTn̰ ZrqR~-wuXicS"2,\0v9Zr Z k'k:ku1a@#5KH$@z,N Wd~5%]&Z*, eˀ^ޏm EXG88f(&1KTm l`.;|hBhDo}G`x זyW@yLǭ8']dTѧ"ȹud5DhBay[(-4~˜Ѻ]Ƥ9%GO> ]Þ/:X#u 73ƭFD1TqRDxjls#Gak/iнHi .xp\o^s8/"ԛBjyAEX&[Q%=!} ǝ8)H5ېa!d^}× 3=n6*IrcW&LɖZl~L $SbXROC/a|8J>*\g)ޜ835 dLD0{lCb [^p `@I\a;-()DILS9޴JJZ܄F`$MlVBT#W 2OC`3XVox_wh_>A& 3,rΑݸT y2uY.g8FGK`#ZXF3 %ݷZGY $} cKg LjbE!!XSe@*+ېS!/SuIF)\a+^}nr w?]wnGcMܐ*Q锝dJl!iLP`,sgSꠄWIp^,ݩOHX oh|`Hx!ae&t"`qNV5מϖ MflU4R )GY;bjrCUEz&-o6a="^$\]~FSyĨ#]9X$p\+NW Ա5Eq˦oDe='.+hia %]yRWr.F\raK䔾)FFD Bā;*LUo($E:t!^afb/v&8spl}T~ -954tSMvI)7!#˭K~xl\eKc(}+hb|-Akw,-}@ ϿǥZX=k¡,*hN\3I^ws%yk5 Wj*ΉrbBeY(k{$ȶTnd, ƒvN,_nnp4.JMEe1 {Ӥ R b:'qqE},ųb'ҡ6 ^U'y=":m o皫 (2IH`Pn{K['Cȝr?Vn0u )jl:rb6,5 Tgp e$0wKqRU$iO&,nl,fP4z% jx4Mpտy`gf TDJ.旎A92ZZUbCML-^n XYYb݆ DZ0>ńp_1o9 +@t!SeNKY=?`O` }+ AI{:>jz^|IԸmzJJ3_-xI2Bjl!Ȃ!հ#& ۰[Sm6#ͼW2\Bo 9sԚAq3cy/"YHa~ǵ2@ⳋH?:_?]!F98'd <+f^njIw7`L̦xeQB hc5eҡ"5 hw-2-σVN~*$&AN䯱po!<dz=ƲbeZyyCBw&a[ aVT9,!qnǜwں"F }}$J9{STcRͱPR?OI^ߢ1*H 5fY7s8|NLѼ/ C&f,iۋ͜!11NJFE:){fo%ʁ{kL^8 =Xq\XEka*Ґ>+GQYQ Fj?KTKE.tzξs*^UÊj.({u=g[!ϞǑV/lP|d'ck:C[  )J|Lfݾ 6|&vo92AJ8|?+V)+'_?gtu$$~0)~CdEhJP'QÀi Sdr_ Z|75:qT~P> 6  8q@},ޱqU]!G&³2$T/ ;6N%wR鍝 ע{j&>jX2~^16 JƔ g0tF\hS`?ܔޣ^q(MS7};>.Js[}s1,wkd YGk*Sm^7=|sb:v^I, K n4%~ͺ=6H!{u'/f6dw^eiO|rd@'elKIi>.#W_ubKc {e|AoU-͓> stream x-OMhQ|q[*5yh-$HIA+RJ=tI&7M6b66$&ɡ"<(zSo Ou{ffYLaz/s7yvюcfHkGZ3gYP~:NoCfӼMH@nxz)ۃυ)EGBGvm<"CI3AB.W<w1(x5!&HS#E^ G' a8!HP@7Ȃ9eldC6a;u^E4v'sbu:/#k X{ձy'MܴMAoXaFK룯}gP/(a55Km P)JUtO7Oj'-@}1]L0 i$*XC0m~-(<:T+CRHw c 1 @ OvQjrɱ,+r.I2sP-YѮݧVc,emko$D) 7endstream endobj 104 0 obj << /Filter /FlateDecode /Length 3628 >> stream xZ[\~J7lQrxuPI1 b@x&;;6`|s:C Z׭yvF}H=;X`qsTu 83!(eS:Ճ |&~Ji1z f& ps9hH*6'g \ rF0Ft Ǡr@U)IU<0k2R:;wV _Ԥj0L+R !fZ勺gpD4sZ"IN~wgF!'7WEn6Ye2Z{ ʛ㵱cʰZRa8eXUk]u?C:]Wu>jEh|VOpSNX:8F{<:qt]Noi׆ԡf[&ixNPvË:ϻ=Vk/~V7Inp\o-C<[쏤F:#b ":h|=V+N{HäM,Om>  тMC]fjm3%:iK߹> ,kzkwѽF_ޫqJd~L@AOKˮ5/&|mzn PDiL掾߬`ԝuuh Z^{tC$ߪh.Ĺ8{o~nvw C" }DH |]JQ_ dNlCBs*pO"a l"Ǖޠ6QhC?hH2KXuFSrkvjDg7yV*4w!a|9]@P&\T t17]<+!+&+$E:y@=Vnͦ颵uz\rŗB=Z.'{ zK|U4VD֐zBs t8CVFG!gXO$z,?]L')i F粙RrsՍzkPGfoä 9u:o6D9rAr> f\Q"\vw=͵%L[OJIjZ;@Wfs/nA+mE+z! Y-+8Ӗ K`55%[CgR/H:j 7y8.W={q%χ﷉P3Z9\#vQ>YāQ5Ul0.LwΆ\熩W0 ,BqaVVaNDErqnᰶT\DQc*ܦD)0$S@DyLDs ! #7 g'= =8[lU6X-F&cTJeu *h9!Q\^~^VcƄ,Id2dF˭K$f47y1u>mQym:l=f m1@C7D'A6ם0F"є|gU f=)ᒚ6A֚9gptC?-Px8i5` nlf@3?w*P CΊ{ſe0!HS" 방AG-૙BZm$H e1@CF? ZLD8r {zYNv6jC΀|Iu}ơpϤ9g3JvhԀ"1{C$l)v *T@HZ@+f/@k-y*H*UXyŒ*HS#U)|ZY[¡oY#/Pzy:-ⳟ+xUxQu5"̢0mPn.P(ZeYz:ojT<(9ks]mTdim!@ PZ/;])En5tƦt*w#hOqb4o99oXP0]4%Kj>rD7>_c".+zڗ<Su1VdrGkvrn_ w|!X,5%c`FvD+7qK>%r9IlZ!SiY>/c+rbiz؍y4P`4mǼgWQeBUHvzi}sSJpDd 3 @yNEӵendstream endobj 105 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 3424 >> stream xWyTSwھ1Ki M5s/UֵZjK(bvȒB !{$d!  A"("biE3Ojik3[mԞ73ߜ<"O#X,֌M1 [W]`[ĤnRC`L|PafŪMaS8rڵkD>bȍY"~FZAdLZQNV~ZS**eNQb/r"_:%*ʌ|UPP#-?+reS/,Qd 3KT@DƂWEJ32ew&/%D,#N""vgWįīD4Bl%bJ8 =V4 MtjcRIARlnW~.GD87y_9áy[E]`Xs#ck22{<$/|Z1s  fwnlTC35.'6aҗQw|0P.#eߊ|ܯ.ba|fbnGce}nC쮳tc@wĥ/̍ $24R ,ӟ#\c դ`W5 ^ۘz)Pt&)f*Q(ЁSh*P=z/sh^:FO|U yfU&ttX_M1}hx?h݄["}-8 rKus%qO([XoR#xLdcHPc,7>:*;5>Dk^E* ֲ6PgKejb?'-(km19NvB]k!Hdsj3eN7܆f2Ђ^)(~V/f&Tfd7֊=b+#LyJy C隃l'd5;Pt wχ65ażFnB-NK :N/XxeHQM(y.d5~_lbZ)xIG2eeUTIu =dC,#w8Z9;\h3T։UJ= 3)}UO"(O2đ#NfK-4R0Q)j)1 N]APIn.䪱ݝTîu#Bâ,`(VS@B{R=Ş|߰m6 uYIc )A:SXzO ZC?O 9^e`T}no]f\G_x\D ν%G&sU| ʍ`,f h=p0yٸxen̋ ۧ/l{t`PŬݘ>hif2S3֝/2ZMރ UFl\zCkuP܃ N [l!n'NiK{o8wYu~g(JPR>-rhpl۶StG1ۃttBdM -SNa0(eAn OS&BTi}DqS_gmZ ٱ.hC!ut^}p.!M) O5^낋`#>Yټ9.9Vw!)f-Cy&x/anw11ߙ.{=f[1Yܠ86HoI_,b竨fZ`c0w9ܝYHWlP,ԶB)uHE"qN@I~'y^ę c>@h97q#(8 f8M *ǃLյ4ǩO8G g9IX 0S1L=Pћ‰ߢ/F%k*%>/c_ jz]XX'-4RV]z*Z*2aGj3D1O>wȋlSX`T'|=1;5kt~\N 3Qw?5 UkN3U]ׅuLkt%''?ꛪ0عo}<7܏nS |G)3{ ea|F[YKbSsI$t *'bEgnAOWSkE\.+&emSGaf蹢ޘ@)Oz~ec_xaD1!myuaټ3v]}S,lr_|z`C\*Wh5]}RR)d/,(bϱ>AV6zr1fj`OI*ЃBHb4p4 ߬Ԭk̙Croendstream endobj 106 0 obj << /Filter /FlateDecode /Length 2974 >> stream xZɒj}ɢEdYG+|hr6ff8)~.dT&m] &+Hd+3ڕ?WG&#?\^\Uk6vu|v$ڕuiL٭Rceu|u֛l3c]LC_kefMl1X1ْSt2Ɨ:|\\],Θz \oc)MZs }ï 2{5֔yBCB%j-I3E|k`پYTosK)8\pc5OZV_KZZⰽ^o։5:p78\s7;i>ЫnR|L-qօl`dlR(R")tswsE֮ւxu-^5Ӱ)ƣn}%V-U|uvTbdS1" m81R,Fɴd&Q_^\K̾RAyϹ4]_!Džò~rp3Ӟ;uhcP*ꊆTW^.>/.zqnRqp.[<%zx8A iY>jrOUڥx?-RE(I^jFU\ŵPri'|6Q?DnT*8@eBZ|}ӖqccA)ue-"\$X"ʷpE2zǀo1$1bC aIWrGi~Wc!YXQz0~l}[)ڔt^!8+ a0K㗴7q+j u3Aŝ h^BMߝoHk@*%޵ Pv-wBPTvRskf*")9QĔ) 1?beu)IFƹp] ́@; yC3 8k)veO 8O8תϑ P=pd2Vm;e/Nm *rLZk#%i*nY yr#lѺG *X ǒn:lw%`W']H{pN8MwⰙyݱ2EnLZO"GEYq(([O0;qM ʁ虊 {X s=-*ASMMumSY;ިp@;*NrLWALkP@fcAM%7.BJ: BkxPSX^(WnBx"ir ,(D3LfײAQ r׉TLs<HIOOpN'xMb2^m۰ӕ{c rVN7 }j~:i6 e u!AQJNE&vob7`% E#Ӑy}К QxDsVe) I:=M @[Je{tRy]T7Roysmv|+iWV. "y4aڅT>nhzA`{$@ Zcv#~1x ZzĶ/Xpv>lIYƠb=c"BDr(`#=^ ߰%QpRP_fY*39 g8u]'V9}TqhQ :$Zd;E,(IjqNS7Dq \|DSR/iR^~b 5UC'5 ~i`ӏwVmLqY j0dčs {m) MHo=ك\},'`Zu)S3A F"R(Krp jBOf?bL7>6SyZ[m><>_] +_4pۇ/r1g..:;h%A4 o88qSxR;ӨM@dVEGZ%ʯDi+wC !up\J.eRFkeYi}i4Xyn4&zVO5ΐIF@<54-jQk4ne:c̶%*J.)-ɧDGrlSJ'j3,ULaHoJzߨ H6{} 3D czR5)(. C2^ ;ia=(4nl0&J߯ gq!?c`ZC$^-񁌣r[PQOf^u+VfHKؗ_wKr6Q&0 Q4d6*],셔qʥK懀>=ؗZRrH/pm{t! qp#{9-lfnby'}Ou-/ok] \*Iy׆!OȳUCr: ΂qteF 5.n 7]J3lVN> stream xkLSgO)tGdut&yt3 *ހV(^h)--)S Z urN#&>>l9|Al˖,ه}9yO>?/ KLh4#' 7{a{[[CM$HCJbj $[PFrU qY)_Y_nvvf{[fs>eEJNW Rꥂ/,*IҪ홙r<+dť;7lˤ|1'9{R!y-3G(Ĝ%H }.4 xUW!3&v5Q>r7X&rge<Ir[cJP\NJ9s=1-+%;H(5$H9-WsW-nlUx[z~+u|XNb, xPVB.:AAM$_'MSGoCl(܀`۰4 j1G;@+;7/P}(3-Yz#XZzPEIYMF4WgեZ+84 :)_ Dʢß kTT7!lo˗xѽ-d.x?ً?j0yuNb^}.S#xvFX7ж_|a?-jޜ8$XipG::ϼy V*NhP7~olk/S[:}o \B=5:> stream xU{PSW"mmUEVUA+" $$" <R/_hv[SJ;uǹ;K3w3}~DxĦMA3_Q6o<x[?y2Lډ0ZWdtlt~PТ9AtyJF$Jyz"+lҤjd*9#e 麹䥳H *V)(3Iҕ5+].:utgJ#4IL5aS՚LZeHܑ$W$+UCbX$}m¢YX °p,[Va5ػX`iB-01bf£(Rxs]"DI$l2˫חŇpaz+h[|nA/#vj@jJf. vGT@[0˭U(R%;-cnBNi x ٗwjizH5q">NUTv=hyV Hn ĜU2'l{-dZ^f1{5TJL@V]uv ?NkU3O2T'tm/UK&pqqZ{Pph=4(KKZ:ܣD h(NO*@uZr}L郎Du !#xV`˧&PF!ν>[:IHs#tJqT4ٹԧ -ݥZ [ihz~ϸ}졖N`z=_ s׊DXHd1*FĽ91VM3= E0iuPq?m ۜDģ&-ϊ+@2(27+e-1'jj6 zpDn44mWR_REҼsBp4|BUSԝ;H?-9㭇OJkA ^LYϠ%h60\68c*;hH2FS8̈́PY2CrGQ;v?;}KFAg7KnAtk \Cd 1$4qp6ĺ:kNb@y%B?*Q_>|콴9vCw[">n-4$(37h⏄/*\#4l/EՒTk6YXv-'c pk6U9cxPv z]T!FAe*A%8*5Z ZwmFRQ}pJZk5ZhjUJ@-TT ͚ū&r?"8:B iwv^ܙ˔ bيuv|y}c ݿ@h _llFòMk54h(ͺmx &$p' >'EcpەЯ\= v8iH;rwXb{Eؑq@1{!=8 OoS vǁ-;OI)Tg5@ S\ppAvR?A(.A\IzB_OWsxa/~ hD*dڅH ݺS' Ј7D4D+:>xJKK:؝dtlr oJo~sg{B7xY7.RQ!ۣw LJo/@ӠbP?/ ypNa"wSiM mZUFGaH9Kq8qۋvxOBkendstream endobj 109 0 obj << /Type /XRef /Length 141 /Filter /FlateDecode /DecodeParms << /Columns 5 /Predictor 12 >> /W [ 1 3 1 ] /Info 3 0 R /Root 2 0 R /Size 110 /ID [] >> stream xcb&F~0 $8Ja?@V A$F R= q< QDmH% ,żDTH{ RXw>.0+ H2 $V]R&w}Dr`* endstream endobj startxref 80401 %%EOF mvtnorm/inst/doc/MVT_Rnews.Rnw0000644000176200001440000002267112211573614016024 0ustar liggesusers\documentclass[11pt]{amsart} \usepackage[round]{natbib} \usepackage{bibentry} \renewcommand{\baselinestretch}{1.5} %%\VignetteIndexEntry{Using mvtnorm} \newcommand{\ba}{{\bf a}} \newcommand{\bb}{{\bf b}} \newcommand{\ta}{{\tilde a}} \newcommand{\tb}{{\tilde b}} \newcommand{\bab}{\bar{{\bf a}}} \newcommand{\bbb}{\bar{{\bf b}}} \newcommand{\byb}{\bar{{\bf y}}} \newcommand{\be}{{\bf e}} \newcommand{\bu}{{\bf u}} \newcommand{\bk}{{\bf k}} \newcommand{\bp}{{\bf p}} \newcommand{\bq}{{\bf q}} \newcommand{\bt}{{\bf t}} \newcommand{\bx}{{\bf x}} \newcommand{\by}{{\bf y}} \newcommand{\bz}{{\bf z}} \newcommand{\bv}{{\bf v}} \newcommand{\bw}{{\bf w}} \newcommand{\bg}{{\bg b}} \newcommand{\bs}{{\bf s}} \newcommand{\bI}{{\bf I}} \newcommand{\bR}{{\bf R}} \newcommand{\bT}{{\bf T}} \newcommand{\binf}{\mbox{\boldmath $\infty$}} \newcommand{\thh}{\mbox{\boldmath $\theta$}} \newcommand{\la}{\mbox{\boldmath $\lambda$}} \newcommand{\bbt}{\mbox{\boldmath $\beta$}} \newcommand{\muu}{\mbox{\boldmath $\mu$}} \newcommand{\brho}{\mbox{\boldmath $\rho$}} \newcommand{\bdel}{\mbox{\boldmath $\delta$}} \newcommand{\Sig}{\mbox{\boldmath $\Sigma$}} \newcommand{\Ph}{\mbox{\boldmath $\Phi$}} \newcommand{\beps}{\mbox{\boldmath $\epsilon$}} \newcommand{\bbet}{\mbox{\boldmath $\beta$}} \newcommand{\C}{\mbox{\boldmath $C$}} \newcommand{\V}{\mbox{\boldmath $V$}} \begin{document} \title{On Multivariate $t$ and Gau{\ss} Probabilities in R} \author{Torsten Hothorn} \thanks{This document is an updated version of the paper published in \textsf{R} News $\mathbf{1}(2)$.} \address{Friedrich-Alexander-Universit\"at Erlangen-N\"urnberg \\ Institut f\"ur Medizininformatik, Biometrie und Epidemiologie \\ Waldstra{\ss}e 6, D-91054 Erlangen} \email{Torsten.Hothorn@rzmail.uni-erlangen.de} \author{Frank Bretz} \address{Universit\"at Hannover \\ LG Bioinformatik, FB Gartenbau \\ Herrenh\"auser Str. 2 \\ D-30419 Hannover} \email{bretz@ifgb.uni-hannover.de} \author{Alan Genz} \address{Department of Mathematics \\ Washington State University \\ Pullman, WA 99164-3113 USA} \email{alangenz@wsu.edu} \maketitle <>= set.seed(290875) ### options(width=60, prompt="R> ") @ \section*{Introduction} The numerical computation of a multivariate normal or $t$ probability is often a difficult problem. Recent developments resulted in algorithms for the fast computation of those probabilities for arbitrary correlation structures. We refer to the work described in \cite{numerical-:1992}, \cite{comparison:1993} and \cite{numerical-:1999}. The procedures proposed in those papers are implemented in package {\ttfamily mvtnorm}, available at CRAN. Basically, the package implements two functions: {\ttfamily pmvnorm} for the computation of multivariate normal probabilities and {\ttfamily pmvt} for the computation of multivariate $t$ probabilities, both for arbitrary means (resp. noncentrality parameters), correlation matrices and hyperrectangular integration regions. We first illustrate the use of the package using a simple example of the multivariate normal distribution in Section \ref{simple}. A little more details are given in Section \ref{details}. The application of {\ttfamily pmvt} in a multiple testing problem is discussed in Section \ref{appl}. \section{A Simple Example \label{simple}} Assume that $ X = (X_1, X_2, X_3) $ is multivariate normal with correlation matrix \begin{eqnarray*} \Sig = \left( \begin{array}{ccc} 1 & \frac{3}{5} & \frac{1}{3} \\ \frac{3}{5} & 1 & \frac{11}{15} \\ \frac{1}{3} & \frac{11}{15} & 1 \end{array} \right) \end{eqnarray*} and expectation $ \mu = (0,0,0)^{\top} $. We are interested in the probability \begin{eqnarray*} P(-\infty < X_1 \le 1, -\infty < X_2 \le 4, -\infty < X_3 \le 2). \end{eqnarray*} This is computed as follows: <>= library(mvtnorm) m <- 3 sigma <- diag(3) sigma[2,1] <- 3/5 sigma[3,1] <- 1/3 sigma[3,2] <- 11/15 pmvnorm(mean=rep(0, m), sigma, lower=rep(-Inf, m), upper=c(1,4,2)) @ First, the lower triangular of the correlation matrix {\ttfamily sigma} is needed. The mean vector is passed to {\ttfamily pmvnorm} by the argument {\ttfamily mean}. The region of integration is given by the vectors {\ttfamily lower} and {\ttfamily upper}, both can have elements {\ttfamily -Inf} or {\ttfamily +Inf}. The value of {\ttfamily pmvnorm} is the estimated integral value with two attributes \begin{itemize} \item {\ttfamily error}: the estimated absolute error and \item {\ttfamily msg}: a status message, indicating wheater or not the algorithm terminated correctly. \end{itemize} From the results above it follows that \begin{eqnarray*} P(-\infty < X_1 \le 1, -\infty < X_2 \le 4, -\infty < X_3 \le 2) \approx 0.82798 \end{eqnarray*} with an absolute error estimate of $2.0e-06$. \section{Details \label{details}} This section outlines the basic ideas of the algorithms used. The multivariate $t$ distribution (MVT) is given by $$ \bT(\ba, \bb, \Sig, \nu) = \frac{2^{1-\frac{\nu}{2}}}{\Gamma(\frac{\nu}{2})} \int\limits_0^{\infty}s^{\nu-1}e^{-\frac{s^2}{2}} \Ph(\frac{s\ba}{\sqrt{\nu}},\frac{s\bb}{\sqrt{\nu}},\Sig) ds, $$ where the multivariate normal distribution function (MVN) $$ \Ph(\ba,\bb, \Sig) = \frac{1}{\sqrt{|\Sig| (2\pi)^m}} \int\limits_{a_1}^{b_1} \int\limits_{a_2}^{b_2} ... \int\limits_{a_m}^{b_m} e^{- \frac{1}{2} \bx^t \Sig^{-1} \bx} d\bx, $$ $\bx = (x_1, x_2, ..., x_m)^t$, $-\infty \leq a_i < b_i \leq \infty$ for all $i$, and $\Sig$ is a positive semi-definite symmetric $m \times m$ matrix. The original integral over an arbitrary $m$-dimensional, possibly unbounded hyper-rectangle is transformed to an integral over the unit hypercube. These transformations are described in \cite{numerical-:1992} for the MVN case and in \cite{numerical-:1999} for the MVT case. Several suitable standard integration routines can be applied to this transformed integral. For the present implementation randomized lattice rules were used. Such lattice rules seek to fill the integration region evenly in a deterministic process. In principle, they construct regular patterns, such that the projections of the integration points onto each axis produce an equidistant subdivision of the axis. Robust integration error bounds are obtained by introducing additional shifts of the entire set of integration nodes in random directions. Since this additional randomization step is only performed to introduce a robust Monte Carlo error bound, 10 simulation runs are usually sufficient. For a more detailed description \cite{numerical-:1999} might be referred to. \section{Applications \label{appl}} The multivariate $t$ distribution is applicable in a wide field of multiple testing problems. We will illustrate this using a example studied earlier by \cite{the-effici:1987}. For short, the effects of $5$ different perfusates in capillary permeability in cats was investigated by \cite{blood-and-:1987}. The data met the assumptions of a standard one-factor ANOVA. For experimental reasons, the investigators were interested in a simultaneous confidence intervals for the following pairwise comparisons: $ \beta_1 - \beta_2, \beta_1 - \beta_3, \beta_1 - \beta_5, \beta_4 - \beta_2 $ and $ \beta_4 - \beta_3 $. Therefore, the matrix of contrast is given by \begin{eqnarray*} \C = \left( \begin{array}{rrrrr} 1 & -1 & 0 & 0 & 0 \\ 1 & 0 & -1 & 0 & 0 \\ 1 & 0 & 0 & 0 & -1 \\ 0 & 1 & 0 & -1 & 0 \\ 0 & 0 & 1 & -1 & 0 \end{array} \right) . \end{eqnarray*} \cite{the-effici:1987} assumed that $ \beta = (\beta_1, \dots, \beta_5) $ is multivariate normal with mean $ \beta $ and covariance matrix $ \sigma^2 \V $, where $ \V $ is known. Under the null hypothesis $ \beta = 0 $, we need knowledge about the distribution of the statistic \begin{eqnarray*} W = \max_{1 \le j \le 5} \left\{ \frac{| c_j(\hat{\beta} - \beta) |}{\hat{\sigma}\sqrt{c_j \V c_j^{\top}}} \right\} \end{eqnarray*} where $ c_j $ is the $j$th row of $ \C $. By assumption, $\hat{\sigma}$ is $ \chi_\nu $ distributed, so under hypothesis $ W $ the argument to $ \max $ follows a multivariate $ t $ distribution. Confidence intervals can be obtained by $ c_j \hat{\beta} \pm w_\alpha \hat{\sigma} \sqrt{c_j \V c_i^\top} $, where $ w_\alpha $ is the $ 1 - \alpha $ quantile of the null distribution of $ W $. Using {\ttfamily pmvt}, one can easily compute the quantile for the example cited above. <>= n <- c(26, 24, 20, 33, 32) V <- diag(1/n) df <- 130 C <- c(1,1,1,0,0,-1,0,0,1,0,0,-1,0,0,1,0,0,0,-1,-1,0,0,-1,0,0) C <- matrix(C, ncol=5) ### covariance matrix cv <- C %*% V %*% t(C) ### correlation matrix dv <- t(1/sqrt(diag(cv))) cr <- cv * (t(dv) %*% dv) delta <- rep(0,5) qmvt(0.95, df = df, delta = delta, corr = cr, abseps = 0.0001, maxpts = 100000, tail = "both") @ {\ttfamily n} is the sample size vector of each level of the factor, {\ttfamily V} is the covariance matrix of $ \beta $. With the contrasts $ \C $ we can compute the correlation matrix {\ttfamily cr} of $ \C\beta $. Finally, we are interested in the $ 95\%$ quantile of $ W $. The {\ttfamily alpha} quantile can now be computed easily using {\ttfamily pmvt}. The $95\%$ quantile of $ W $ in this example is $ 2.56 $ , \cite{the-effici:1987} obtained the same result using $ 80.000 $ simulation runs. The computation needs $ 8.06 $ seconds total time on a Pentium III $450$ MHz with $256$ MB memory. Using package {\ttfamily mvtnorm}, the efficient computation of multivariate normal or $ t $ probabilities is now available in {\ttfamily R}. We hope that this is helpful to users / programmers who deal with multiple testing problems. \bibliographystyle{plainnat} \bibliography{litdb} \end{document} mvtnorm/inst/include/0000755000176200001440000000000012444024027014353 5ustar liggesusersmvtnorm/inst/include/mvtnormAPI.h0000644000176200001440000000204412444042420016555 0ustar liggesusers #include #include // external API void mvtnorm_C_mvtdst(int *n, int *nu, double *lower, double *upper, int *infin, double *corr, double *delta, int *maxpts, double *abseps, double *releps, double *error, double *value, int *inform, int *rnd) { static void(*fun)(int*, int*, double*, double*, int*, double*, double*, int*, double*, double*, double*, double*, int*, int*) = NULL; if (fun == NULL) fun = (void(*)(int*, int*, double*, double*, int*, double*, double*, int*, double*, double*, double*, double*, int*, int*)) R_GetCCallable("mvtnorm", "C_mvtdst"); fun(n, nu, lower, upper, infin, corr, delta, maxpts, abseps, releps, error, value, inform, rnd); } mvtnorm/inst/include/mvtnorm.h0000644000176200001440000000172612635723615016247 0ustar liggesusers #include #include #include void F77_NAME(mvtdst)(int *n, int *nu, double *lower, double *upper, int *infin, double *corr, double *delta, int *maxpts, double *abseps, double *releps, double *error, double *value, int *inform); void F77_NAME(tvtlrcall)(int *NU, double *H, double *R, double *EPSI, double *TVTL); void C_tvtlr (int *NU, double *H, double *R, double *EPSI, double *TVTL); void F77_NAME(bvtlrcall)(int *NU, double *DH, double *DK, double *R, double *BVTL); void C_bvtlr (int *NU, double *DH, double *DK, double *R, double *BVTL); void C_mvtdst(int *n, int *nu, double *lower, double *upper, int *infin, double *corr, double *delta, int *maxpts, double *abseps, double *releps, double *error, double *value, int *inform, int *rnd); SEXP C_miwa(SEXP steps, SEXP corr, SEXP upper, SEXP lower, SEXP infin); mvtnorm/tests/0000755000176200001440000000000013232372127013120 5ustar liggesusersmvtnorm/tests/test-getInt.R0000644000176200001440000000401212651430706015451 0ustar liggesuserslibrary("mvtnorm") p <- 0.8 mean <- c(6.75044368, 0.04996326) sigmas <- rbind( c(0.10260550, 0.02096418), c(0.02096418, 0.16049956) ) ## qmvnorm qmvnorm(p = p, tail = "lower.tail", mean = mean, sigma = sigmas, interval=c(5,8))$quantile qmvnorm(p = p, tail = "upper.tail", mean = mean, sigma = sigmas, interval=c(-0.5,0))$quantile qmvnorm(p = p, tail = "both.tails", mean = mean, sigma = sigmas, interval=c(5,8))$quantile mvtnorm:::getInt(p,delta=mean, sigma=sigmas,tail="lower.tail",df=Inf) mvtnorm:::getInt(p,delta=mean, sigma=sigmas,tail="upper.tail",df=Inf) mvtnorm:::getInt(p,delta=mean, sigma=sigmas,tail="both.tails",df=Inf) ## qmvt, shifted qmvt(p = p, tail = "lower.tail", delta = mean, sigma = sigmas, interval=c(5,8), df=1, type="shifted")$quantile qmvt(p = p, tail = "upper.tail", delta = mean, sigma = sigmas, interval=c(-0.5,0), df=1, type="shifted")$quantile qmvt(p = p, tail = "both.tails", delta = mean, sigma = sigmas, interval=c(5,8), df=1, type="shifted")$quantile mvtnorm:::getInt(p,delta=mean, sigma=sigmas,tail="lower.tail", type="shifted",df=1) mvtnorm:::getInt(p,delta=mean, sigma=sigmas,tail="upper.tail", type="shifted",df=1) mvtnorm:::getInt(p,delta=mean, sigma=sigmas,tail="both.tails", type="shifted",df=1) ## qmvt, Kshirsagar sigmas <- cov2cor(sigmas) ## use unit variances qmvt(p = p, tail = "lower.tail", delta = mean, sigma = sigmas, interval=c(5,8), df=1, type="Kshirsagar")$quantile qmvt(p = p, tail = "upper.tail", delta = mean, sigma = sigmas, interval=c(-4,0), df=1, type="Kshirsagar")$quantile qmvt(p = p, tail = "both.tails", delta = mean, sigma = sigmas, interval=c(5,8), df=1, type="Kshirsagar")$quantile mvtnorm:::getInt(p,delta=mean, sigma=sigmas,tail="lower.tail", type="Kshirsagar",df=1) ##mvtnorm:::getInt(p,delta=mean, sigma=sigmas,tail="upper.tail", ## type="Kshirsagar",df=1) # will produce warnings mvtnorm:::getInt(p,delta=mean, sigma=sigmas,tail="both.tails", type="Kshirsagar",df=1) mvtnorm/tests/test-noisy-root.Rout.save0000644000176200001440000000511412654130110020017 0ustar liggesusers R version 3.2.3 (2015-12-10) -- "Wooden Christmas-Tree" Copyright (C) 2015 The R Foundation for Statistical Computing Platform: x86_64-pc-linux-gnu (64-bit) R is free software and comes with ABSOLUTELY NO WARRANTY. You are welcome to redistribute it under certain conditions. Type 'license()' or 'licence()' for distribution details. R is a collaborative project with many contributors. Type 'contributors()' for more information and 'citation()' on how to cite R or R packages in publications. Type 'demo()' for some demos, 'help()' for on-line help, or 'help.start()' for an HTML browser interface to help. Type 'q()' to quit R. > > library("mvtnorm") > > set.seed(1) > dim <- 10 > df <- 5 > > D <- diag(dim)+crossprod(matrix(runif(25,-1,1),dim,dim)) > corr <- cov2cor(D) > > ## one-sided, lower tail > qu <- qmvt(0.95, df=df, corr=corr)$quantile > pmvt(lower=rep(-Inf, dim), upper=rep(qu,dim), corr=corr, df=df) [1] 0.9499886 attr(,"error") [1] 8.394993e-05 attr(,"msg") [1] "Normal Completion" > > qu <- qmvnorm(0.95, corr=corr)$quantile > pmvnorm(lower=rep(-Inf, dim), upper=rep(qu,dim), corr=corr) [1] 0.9499785 attr(,"error") [1] 6.265055e-05 attr(,"msg") [1] "Normal Completion" > > ## two-sided > qu <- qmvt(0.95, df=df, corr=corr, tail="both.tails")$quantile > pmvt(lower=rep(-qu, dim), upper=rep(qu,dim), corr=corr, df=df) [1] 0.949925 attr(,"error") [1] 9.635837e-05 attr(,"msg") [1] "Normal Completion" > > qu <- qmvnorm(0.95, corr=corr, tail="both.tails")$quantile > pmvnorm(lower=rep(-qu, dim), upper=rep(qu,dim), corr=corr) [1] 0.949927 attr(,"error") [1] 0.0001545113 attr(,"msg") [1] "Normal Completion" > > ## one-sided, upper tail > qu <- qmvt(0.95, df=df, corr=corr, tail="upper.tail")$quantile > pmvt(lower=rep(qu, dim), upper=rep(Inf,dim), corr=corr, df=df) [1] 0.9499528 attr(,"error") [1] 9.714629e-05 attr(,"msg") [1] "Normal Completion" > > qu <- qmvnorm(0.95, corr=corr, tail="upper.tail")$quantile > pmvnorm(lower=rep(qu, dim), upper=rep(Inf,dim), corr=corr) [1] 0.9500897 attr(,"error") [1] 7.617415e-05 attr(,"msg") [1] "Normal Completion" > > ## cross-check interval works > ## one-sided, lower tail > qu <- qmvt(0.95, df=df , corr=corr, interval=c(0,10))$quantile > pmvt(lower=rep(-Inf, dim), upper=rep(qu,dim), corr=corr, df=df) [1] 0.9500624 attr(,"error") [1] 0.0001741215 attr(,"msg") [1] "Normal Completion" > > qu <- qmvnorm(0.95, corr=corr, interval=c(0,10))$quantile > pmvnorm(lower=rep(-Inf, dim), upper=rep(qu,dim), corr=corr) [1] 0.9500022 attr(,"error") [1] 9.231686e-05 attr(,"msg") [1] "Normal Completion" > > proc.time() user system elapsed 8.040 0.012 8.039 mvtnorm/tests/Examples/0000755000176200001440000000000012430427076014701 5ustar liggesusersmvtnorm/tests/Examples/mvtnorma-Ex.Rout.save0000644000176200001440000002656412647374756020763 0ustar liggesusers R version 3.2.3 (2015-12-10) -- "Wooden Christmas-Tree" Copyright (C) 2015 The R Foundation for Statistical Computing Platform: x86_64-pc-linux-gnu (64-bit) R is free software and comes with ABSOLUTELY NO WARRANTY. You are welcome to redistribute it under certain conditions. Type 'license()' or 'licence()' for distribution details. 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 <- "mvtnorm" > source(file.path(R.home("share"), "R", "examples-header.R")) > options(warn = 1) > base::assign(".ExTimings", "mvtnorm-Ex.timings", pos = 'CheckExEnv') > base::cat("name\tuser\tsystem\telapsed\n", file=base::get(".ExTimings", pos = 'CheckExEnv')) > base::assign(".format_ptime", + function(x) { + if(!is.na(x[4L])) x[1L] <- x[1L] + x[4L] + if(!is.na(x[5L])) x[2L] <- x[2L] + x[5L] + options(OutDec = '.') + format(x[1L:3L], digits = 7L) + }, + pos = 'CheckExEnv') > > ### * > library('mvtnorm') > > base::assign(".oldSearch", base::search(), pos = 'CheckExEnv') > cleanEx() > nameEx("Mvnorm") > ### * Mvnorm > > flush(stderr()); flush(stdout()) > > base::assign(".ptime", proc.time(), pos = "CheckExEnv") > ### Name: Mvnorm > ### Title: Multivariate Normal Density and Random Deviates > ### Aliases: dmvnorm rmvnorm > ### Keywords: distribution multivariate > > ### ** Examples > > dmvnorm(x=c(0,0)) [1] 0.1591549 > dmvnorm(x=c(0,0), mean=c(1,1)) [1] 0.05854983 > > sigma <- matrix(c(4,2,2,3), ncol=2) > x <- rmvnorm(n=500, mean=c(1,2), sigma=sigma) > colMeans(x) [1] 0.9492868 1.9916602 > var(x) [,1] [,2] [1,] 4.276371 2.105874 [2,] 2.105874 3.186058 > > x <- rmvnorm(n=500, mean=c(1,2), sigma=sigma, method="chol") > colMeans(x) [1] 0.8724731 1.9804160 > var(x) [,1] [,2] [1,] 4.804847 2.430442 [2,] 2.430442 3.148344 > > plot(x) > > > > base::assign(".dptime", (proc.time() - get(".ptime", pos = "CheckExEnv")), pos = "CheckExEnv") > base::cat("Mvnorm", base::get(".format_ptime", pos = 'CheckExEnv')(get(".dptime", pos = "CheckExEnv")), "\n", file=base::get(".ExTimings", pos = 'CheckExEnv'), append=TRUE, sep="\t") > cleanEx() > nameEx("Mvt") > ### * Mvt > > flush(stderr()); flush(stdout()) > > base::assign(".ptime", proc.time(), pos = "CheckExEnv") > ### Name: Mvt > ### Title: The Multivariate t Distribution > ### Aliases: dmvt rmvt > ### Keywords: distribution multivariate > > ### ** Examples > > ## basic evaluation > dmvt(x = c(0,0), sigma = diag(2)) [1] -1.837877 > > ## check behavior for df=0 and df=Inf > x <- c(1.23, 4.56) > mu <- 1:2 > Sigma <- diag(2) > x0 <- dmvt(x, delta = mu, sigma = Sigma, df = 0) # default log = TRUE! > x8 <- dmvt(x, delta = mu, sigma = Sigma, df = Inf) # default log = TRUE! > xn <- dmvnorm(x, mean = mu, sigma = Sigma, log = TRUE) > stopifnot(identical(x0, x8), identical(x0, xn)) > > ## X ~ t_3(0, diag(2)) > x <- rmvt(100, sigma = diag(2), df = 3) # t_3(0, diag(2)) sample > plot(x) > > ## X ~ t_3(mu, Sigma) > n <- 1000 > mu <- 1:2 > Sigma <- matrix(c(4, 2, 2, 3), ncol=2) > set.seed(271) > x <- rep(mu, each=n) + rmvt(n, sigma=Sigma, df=3) > plot(x) > > ## Note that the call rmvt(n, mean=mu, sigma=Sigma, df=3) does *not* > ## give a valid sample from t_3(mu, Sigma)! [and thus throws an error] > try(rmvt(n, mean=mu, sigma=Sigma, df=3)) Error in rmvt(n, mean = mu, sigma = Sigma, df = 3) : Providing 'mean' does *not* sample from a multivariate t distribution! > > ## df=Inf correctly samples from a multivariate normal distribution > set.seed(271) > x <- rep(mu, each=n) + rmvt(n, sigma=Sigma, df=Inf) > set.seed(271) > x. <- rmvnorm(n, mean=mu, sigma=Sigma) > stopifnot(identical(x, x.)) > > > > base::assign(".dptime", (proc.time() - get(".ptime", pos = "CheckExEnv")), pos = "CheckExEnv") > base::cat("Mvt", base::get(".format_ptime", pos = 'CheckExEnv')(get(".dptime", pos = "CheckExEnv")), "\n", file=base::get(".ExTimings", pos = 'CheckExEnv'), append=TRUE, sep="\t") > cleanEx() > nameEx("pmvnorm") > ### * pmvnorm > > flush(stderr()); flush(stdout()) > > base::assign(".ptime", proc.time(), pos = "CheckExEnv") > ### Name: pmvnorm > ### Title: Multivariate Normal Distribution > ### Aliases: pmvnorm > ### Keywords: distribution > > ### ** Examples > > > n <- 5 > mean <- rep(0, 5) > lower <- rep(-1, 5) > upper <- rep(3, 5) > corr <- diag(5) > corr[lower.tri(corr)] <- 0.5 > corr[upper.tri(corr)] <- 0.5 > prob <- pmvnorm(lower, upper, mean, corr) > print(prob) [1] 0.5800051 attr(,"error") [1] 0.0002696831 attr(,"msg") [1] "Normal Completion" > > stopifnot(pmvnorm(lower=-Inf, upper=3, mean=0, sigma=1) == pnorm(3)) > > a <- pmvnorm(lower=-Inf,upper=c(.3,.5),mean=c(2,4),diag(2)) > > stopifnot(round(a,16) == round(prod(pnorm(c(.3,.5),c(2,4))),16)) > > a <- pmvnorm(lower=-Inf,upper=c(.3,.5,1),mean=c(2,4,1),diag(3)) > > stopifnot(round(a,16) == round(prod(pnorm(c(.3,.5,1),c(2,4,1))),16)) > > # Example from R News paper (original by Genz, 1992): > > m <- 3 > sigma <- diag(3) > sigma[2,1] <- 3/5 > sigma[3,1] <- 1/3 > sigma[3,2] <- 11/15 > pmvnorm(lower=rep(-Inf, m), upper=c(1,4,2), mean=rep(0, m), corr=sigma) [1] 0.8279847 attr(,"error") [1] 2.658133e-07 attr(,"msg") [1] "Normal Completion" > > # Correlation and Covariance > > a <- pmvnorm(lower=-Inf, upper=c(2,2), sigma = diag(2)*2) > b <- pmvnorm(lower=-Inf, upper=c(2,2)/sqrt(2), corr=diag(2)) > stopifnot(all.equal(round(a,5) , round(b, 5))) > > > > > base::assign(".dptime", (proc.time() - get(".ptime", pos = "CheckExEnv")), pos = "CheckExEnv") > base::cat("pmvnorm", base::get(".format_ptime", pos = 'CheckExEnv')(get(".dptime", pos = "CheckExEnv")), "\n", file=base::get(".ExTimings", pos = 'CheckExEnv'), append=TRUE, sep="\t") > cleanEx() > nameEx("pmvt") > ### * pmvt > > flush(stderr()); flush(stdout()) > > base::assign(".ptime", proc.time(), pos = "CheckExEnv") > ### Name: pmvt > ### Title: Multivariate t Distribution > ### Aliases: pmvt > ### Keywords: distribution > > ### ** Examples > > > n <- 5 > lower <- -1 > upper <- 3 > df <- 4 > corr <- diag(5) > corr[lower.tri(corr)] <- 0.5 > delta <- rep(0, 5) > prob <- pmvt(lower=lower, upper=upper, delta=delta, df=df, corr=corr) > print(prob) [1] 0.5063832 attr(,"error") [1] 0.0002426557 attr(,"msg") [1] "Normal Completion" > > pmvt(lower=-Inf, upper=3, df = 3, sigma = 1) == pt(3, 3) upper TRUE > > # Example from R News paper (original by Edwards and Berry, 1987) > > n <- c(26, 24, 20, 33, 32) > V <- diag(1/n) > df <- 130 > C <- c(1,1,1,0,0,-1,0,0,1,0,0,-1,0,0,1,0,0,0,-1,-1,0,0,-1,0,0) > C <- matrix(C, ncol=5) > ### scale matrix > cv <- C %*% V %*% t(C) > ### correlation matrix > dv <- t(1/sqrt(diag(cv))) > cr <- cv * (t(dv) %*% dv) > delta <- rep(0,5) > > myfct <- function(q, alpha) { + lower <- rep(-q, ncol(cv)) + upper <- rep(q, ncol(cv)) + pmvt(lower=lower, upper=upper, delta=delta, df=df, + corr=cr, abseps=0.0001) - alpha + } > > ### uniroot for this simple problem > round(uniroot(myfct, lower=1, upper=5, alpha=0.95)$root, 3) [1] 2.561 > > # compare pmvt and pmvnorm for large df: > > a <- pmvnorm(lower=-Inf, upper=1, mean=rep(0, 5), corr=diag(5)) > b <- pmvt(lower=-Inf, upper=1, delta=rep(0, 5), df=rep(300,5), + corr=diag(5)) Warning in if (df < 0) stop("cannot compute multivariate t distribution with ", : the condition has length > 1 and only the first element will be used Warning in if (isInf(df)) df <- 0 : the condition has length > 1 and only the first element will be used > a [1] 0.4215702 attr(,"error") [1] 0 attr(,"msg") [1] "Normal Completion" > b [1] 0.4211423 attr(,"error") [1] 2.31377e-06 attr(,"msg") [1] "Normal Completion" > > stopifnot(round(a, 2) == round(b, 2)) > > # correlation and scale matrix > > a <- pmvt(lower=-Inf, upper=2, delta=rep(0,5), df=3, + sigma = diag(5)*2) > b <- pmvt(lower=-Inf, upper=2/sqrt(2), delta=rep(0,5), + df=3, corr=diag(5)) > attributes(a) <- NULL > attributes(b) <- NULL > a [1] 0.5653944 > b [1] 0.5654 > stopifnot(all.equal(round(a,3) , round(b, 3))) > > a <- pmvt(0, 1,df=10) > attributes(a) <- NULL > b <- pt(1, df=10) - pt(0, df=10) > stopifnot(all.equal(round(a,10) , round(b, 10))) > > > > > base::assign(".dptime", (proc.time() - get(".ptime", pos = "CheckExEnv")), pos = "CheckExEnv") > base::cat("pmvt", base::get(".format_ptime", pos = 'CheckExEnv')(get(".dptime", pos = "CheckExEnv")), "\n", file=base::get(".ExTimings", pos = 'CheckExEnv'), append=TRUE, sep="\t") > cleanEx() > nameEx("qmvnorm") > ### * qmvnorm > > flush(stderr()); flush(stdout()) > > base::assign(".ptime", proc.time(), pos = "CheckExEnv") > ### Name: qmvnorm > ### Title: Quantiles of the Multivariate Normal Distribution > ### Aliases: qmvnorm > ### Keywords: distribution > > ### ** Examples > > qmvnorm(0.95, sigma = diag(2), tail = "both") $quantile [1] 2.236358 $f.quantile [1] -1.681424e-06 attr(,"message") [1] "Normal Completion" > > > > base::assign(".dptime", (proc.time() - get(".ptime", pos = "CheckExEnv")), pos = "CheckExEnv") > base::cat("qmvnorm", base::get(".format_ptime", pos = 'CheckExEnv')(get(".dptime", pos = "CheckExEnv")), "\n", file=base::get(".ExTimings", pos = 'CheckExEnv'), append=TRUE, sep="\t") > cleanEx() > nameEx("qmvt") > ### * qmvt > > flush(stderr()); flush(stdout()) > > base::assign(".ptime", proc.time(), pos = "CheckExEnv") > ### Name: qmvt > ### Title: Quantiles of the Multivariate t Distribution > ### Aliases: qmvt > ### Keywords: distribution > > ### ** Examples > > ## basic evaluation > qmvt(0.95, df = 16, tail = "both") $quantile [1] 2.119905 $f.quantile [1] 0.975 > > ## check behavior for df=0 and df=Inf > Sigma <- diag(2) > set.seed(29) > q0 <- qmvt(0.95, sigma = Sigma, df = 0, tail = "both")$quantile > set.seed(29) > q8 <- qmvt(0.95, sigma = Sigma, df = Inf, tail = "both")$quantile > set.seed(29) > qn <- qmvnorm(0.95, sigma = Sigma, tail = "both")$quantile > stopifnot(identical(q0, q8), + isTRUE(all.equal(q0, qn, tol = (.Machine$double.eps)^(1/3)))) > > ## if neither sigma nor corr are provided, corr = 1 is used internally > df <- 0 > set.seed(29) > qt95 <- qmvt(0.95, df = df, tail = "both")$quantile > set.seed(29) > qt95.c <- qmvt(0.95, df = df, corr = 1, tail = "both")$quantile > set.seed(29) > qt95.s <- qmvt(0.95, df = df, sigma = 1, tail = "both")$quantile > stopifnot(identical(qt95, qt95.c), + identical(qt95, qt95.s)) > > df <- 4 > set.seed(29) > qt95 <- qmvt(0.95, df = df, tail = "both")$quantile > set.seed(29) > qt95.c <- qmvt(0.95, df = df, corr = 1, tail = "both")$quantile > set.seed(29) > qt95.s <- qmvt(0.95, df = df, sigma = 1, tail = "both")$quantile > stopifnot(identical(qt95, qt95.c), + identical(qt95, qt95.s)) > > > > base::assign(".dptime", (proc.time() - get(".ptime", pos = "CheckExEnv")), pos = "CheckExEnv") > base::cat("qmvt", base::get(".format_ptime", pos = 'CheckExEnv')(get(".dptime", pos = "CheckExEnv")), "\n", file=base::get(".ExTimings", pos = 'CheckExEnv'), append=TRUE, sep="\t") > ### *