survey/0000755000176200001440000000000014424413332011607 5ustar liggesuserssurvey/NAMESPACE0000644000176200001440000003262514423614312013036 0ustar liggesusersimport(stats,graphics,splines,grid, survival,lattice,methods,Matrix) importFrom("grDevices", "col2rgb", "grey", "rgb") importFrom("utils", "getS3method") importFrom("mitools","withPV") export(svydesign, svrepdesign, as.svrepdesign,twophase, postStratify, rake, calibrate, estWeights, as.svydesign2, svyplot, svyhist, svyboxplot, svyby, cv, SE, deff, svycoxph, svyglm, svyquantile, svymean, svytotal, svyvar, svyratio, svytable, svychisq, svymle, svysmooth, withReplicates, hadamard, paley, is.hadamard, bootweights, mrbweights, jk1weights,jknweights, brrweights, regTermTest, degf, nonresponse, sparseCells, neighbours, joinCells, compressWeights, make.formula, svycontrast, svyCprod, svyrecvar, grake, svrVar, pchisqsum, pFsum, make.calfun, cal.linear, cal.raking, cal.logit, cal.sinh,svycdf, svykappa, svykm, svyolr, svycoplot, svyloglin, make.panel.svysmooth, dotchart, subbootweights, svyciprop, svyttest, marginpred, twophasevar, twophase2var, ppsmat, HR, unwtd.count, svyfactanal, svypredmeans, svyprcomp, trimWeights,stratsample,svylogrank, svyranktest,svystandardize, psrsq, svysurvreg, cal_names, svycralpha, svyivreg, svynls, svyscoretest, oldsvyquantile,svyqqplot, svyqqmath, svybys, svygofchisq, poisson_sampling,ppscov, xdesign) S3method(svyloglin,survey.design) S3method(svyloglin,svyrep.design) S3method(svyloglin,DBIsvydesign) S3method(anova,svyloglin) S3method(print,svyloglin) S3method(print,anova.svyloglin) S3method(coef,svyloglin) S3method(vcov,svyloglin) S3method(deviance,svyloglin) S3method(print,summary.svyloglin) S3method(summary,svyloglin) S3method(update,svyloglin) S3method(model.matrix,svyloglin) S3method(terms,svyloglin) S3method(degf,svyloglin) S3method(svyttest,default) S3method(biplot,svyprcomp) S3method(marginpred,svycoxph) S3method(marginpred, svykmlist) S3method(marginpred, svyglm) S3method(print,svyciprop) S3method(vcov,svyciprop) S3method(confint,svyciprop) S3method(coef,svyciprop) S3method(svydesign, default) S3method(svydesign, imputationList) S3method(svydesign, character) S3method(svydesign, DBimputationList) S3method(as.svrepdesign, default) S3method(as.svrepdesign, svyimputationList) S3method(close, DBIsvydesign) S3method(open, DBIsvydesign) S3method(summary, DBIsvydesign) S3method(print, summary.DBIsvydesign) S3method(print, DBIsvydesign) S3method(print, pps) S3method(summary, pps) S3method(print, summary.pps) S3method(print,ppsmat) S3method(print,ppsdelta) S3method(print,ppsdcheck) S3method(svrepdesign, default) S3method(svrepdesign, imputationList) S3method(svrepdesign, character) S3method(print, DBIrepdesign) S3method(summary, DBIrepdesign) S3method(svymean, survey.design) S3method(svymean, svyrep.design) S3method(svymean, survey.design2) S3method(svymean, twophase) S3method(svymean, twophase2) S3method(svymean, pps) S3method(svymean, DBIsvydesign) S3method(svytotal, survey.design) S3method(svytotal, svyrep.design) S3method(svytotal, survey.design2) S3method(svytotal, twophase) S3method(svytotal, twophase2) S3method(svytotal, pps) S3method(svytotal, DBIsvydesign) S3method(svyratio, survey.design) S3method(svyratio, svyrep.design) S3method(svyratio, survey.design2) S3method(svyratio, pps) S3method(svyratio, twophase) S3method(svyratio, twophase2) S3method(svyratio, DBIsvydesign) S3method(svyvar, survey.design) S3method(svyvar, svyrep.design) S3method(svyvar, DBIsvydesign) S3method(svyquantile, survey.design) S3method(svyquantile, svyrep.design) S3method(oldsvyquantile, survey.design) S3method(oldsvyquantile, svyrep.design) S3method(svyquantile, DBIsvydesign) S3method(oldsvyquantile, DBIsvydesign) S3method(svytable, survey.design) S3method(svytable, svyrep.design) S3method(svytable, DBIsvydesign) S3method(svychisq, survey.design) S3method(svychisq, svyrep.design) S3method(svychisq, DBIsvydesign) S3method(svychisq, twophase) S3method(svykappa, default) S3method(svykappa, DBIsvydesign) S3method(svyglm,survey.design) S3method(svyglm,svyrep.design) S3method(svyglm, DBIsvydesign) S3method(svyplot,default) S3method(svyplot, DBIsvydesign) S3method(svycoplot,default) S3method(svycoplot, DBIsvydesign) S3method(svysmooth, default) S3method(svysmooth, DBIsvydesign) S3method(svyboxplot, DBIsvydesign) S3method(svyboxplot, default) S3method(svycdf, default) S3method(svycdf, DBIsvydesign) S3method(plot, svystat) S3method(plot, svrepstat) S3method(barplot, svystat) S3method(barplot, svrepstat) S3method(plot, svyby) S3method(barplot, svyby) S3method(dotchart, svystat) S3method(dotchart, svrepstat) S3method(dotchart, svyby) S3method(dotchart, default) S3method(predict, svyglm) S3method(predict, svrepglm) S3method(predict, svyolr) S3method(predict, svyratio) S3method(predict, svyratio_separate) S3method(coef,svyratio) S3method(svycoxph,survey.design) S3method(svycoxph,svyrep.design) S3method(svycoxph, DBIsvydesign) S3method(svysurvreg,survey.design) S3method(residuals, svrepglm) S3method(residuals, svyglm) S3method(residuals, svysurvreg) S3method(coef,svrepstat) S3method(coef,svystat) S3method(coef,svyby) S3method(coef,svymle) S3method(coef, svyolr) S3method(coef, svyglm) S3method(coef, newsvyquantile) S3method(coef, oldsvyquantile) S3method(confint,svyglm) S3method(confint, svyciprop) S3method(confint, newsvyquantile) S3method(confint, oldsvyquantile) S3method(SE,default) S3method(SE,svrepstat) S3method(SE,svystat) S3method(SE,svyby) S3method(SE,newsvyquantile) S3method(SE,oldsvyquantile) S3method(SE,svyratio) S3method(vcov,svyrep.design) S3method(vcov, newsvyquantile) S3method(vcov, oldsvyquantile) S3method(vcov, svrepstat) S3method(vcov, svyglm) S3method(vcov, svymle) S3method(vcov, svystat) S3method(vcov, svyby) S3method(vcov, svyratio) S3method(logLik,svyglm) S3method(logLik,svrepglm) S3method(extractAIC,svyglm) S3method(extractAIC,svrepglm) S3method(extractAIC,svyglm) S3method(anova,svyglm) S3method(AIC,svyglm) S3method(BIC,svyglm) S3method(anova,svycoxph) S3method(predict,svycoxph) S3method(extractAIC,svycoxph) S3method(extractAIC,svrepcoxph) S3method(AIC,svycoxph) S3method(svycontrast,svrepstat) S3method(svycontrast,svystat) S3method(svycontrast,svyby) S3method(svycontrast,svyglm) S3method(svycontrast, svrepglm) S3method(svycontrast,svycoxph) S3method(svycontrast, svrepcoxph) S3method(svycontrast,default) S3method(image,svyrep.design) S3method(image,pps) S3method(plot,svysmooth) S3method(print,svysmooth) S3method(lines,svysmooth) S3method(svykm, survey.design) S3method(svykm, svyrep.design) S3method(svykm, DBIsvydesign) S3method(plot,svykm) S3method(print,svykm) S3method(print,svykmlist) S3method(lines, svykm) S3method(plot,svykmlist) S3method(quantile, svykm) S3method(confint,svykm) S3method(svyolr,survey.design2) S3method(svyolr,svyrep.design) S3method(svyolr,DBIsvydesign) S3method(vcov,svyolr) S3method(summary, svyolr) S3method(print, svyolr) S3method(print, summary.svyolr) S3method(ftable,svrepstat) S3method(ftable,svystat) S3method(ftable,svyby) S3method(weights, nonresponse) S3method(weights, survey.design) S3method(weights, survey_fpc) S3method(weights, svyrep.design) S3method(summary,survey.design) S3method(summary,survey.design2) S3method(summary,twophase) S3method(summary, twophase2) S3method(summary,svyrep.design) S3method(summary,svrepglm) S3method(summary,svreptable) S3method(summary,svycoxph) S3method(summary,svyglm) S3method(summary,svymle) S3method(summary,svytable) S3method(deviance, coxph) S3method(deviance, svycoxph) S3method(print,summary.survey.design) S3method(print,summary.survey.design2) S3method(print,summary.twophase) S3method(print,summary.twophase2) S3method(print,summary.svyrep.design) S3method(print,summary.svyglm) S3method(print,summary.svytable) S3method(print,svycdf) S3method(plot,svycdf) S3method(print, nonresponse) S3method(print, nonresponseSubset) S3method(print, regTermTest) S3method(print, regTermTestLRT) S3method(print, regTermTestWW) S3method(print, svrepstat) S3method(print, svystat) S3method(print, survey.design) S3method(print, survey.design2) S3method(print, svyrep.design) S3method(print, svyglm) S3method(print, svymle) S3method(print, oldsvyquantile) S3method(print, svyratio) S3method(print, svyratio_separate) S3method(print, twophase) S3method(print, twophase2) S3method(print, calfun) S3method(print, svyvar) S3method(print, seqanova.svycoxph) S3method(print, seqanova.svyglm) S3method(as.matrix, svyvar) S3method(print, svrepvar) S3method(as.matrix, svrepvar) S3method(withReplicates, svyrep.design) S3method(withReplicates, svrepvar) S3method(withReplicates, svrepstat) S3method(withReplicates, svyimputationList) S3method(dim,repweights_compressed) S3method(dim,survey.design) S3method(dim,twophase) S3method(dim,twophase2) S3method(dim, DBIsvydesign) S3method(dim, DBIrepdesign) S3method(dim, svyrep.design) S3method(dim, svyimputationList) S3method(dimnames,survey.design) S3method(dimnames,svyrep.design) S3method(dimnames,twophase) S3method(dimnames, DBIsvydesign) S3method(dimnames, DBIrepdesign) S3method(dimnames, svyimputationList) S3method(dimnames, repweights_compressed) S3method(degf, survey.design2) S3method(degf, svyrep.design) S3method(degf, pps) S3method(degf, twophase) S3method(degf, twophase2) S3method(cv,default) S3method(cv,svyratio) S3method(deff,default) S3method(deff,svyby) S3method(postStratify,survey.design) S3method(postStratify,svyrep.design) S3method(postStratify,twophase) S3method(postStratify,twophase2) S3method(postStratify,DBIsvydesign) S3method(calibrate,survey.design2) S3method(calibrate,svyrep.design) S3method(calibrate,twophase) S3method(calibrate,twophase2) S3method(calibrate, DBIsvydesign) S3method(calibrate, pps) S3method(estWeights,data.frame) S3method(estWeights,twophase) S3method(compressWeights, default) S3method(compressWeights, repweights_compressed) S3method(compressWeights, svyrep.design) S3method(trimWeights, svyrep.design) S3method(trimWeights, survey.design2) S3method(subset,survey.design) S3method(subset,svyrep.design) S3method(subset,twophase) S3method(subset,twophase2) S3method(subset, DBIsvydesign) S3method(update,survey.design) S3method(update,svyrep.design) S3method(update,twophase) S3method(update,twophase2) S3method(update,DBIsvydesign) S3method(update,svyimputationList) S3method(transform,survey.design) S3method(transform,svyrep.design) S3method(transform,twophase) S3method(transform,twophase2) S3method(transform,DBIsvydesign) S3method(transform,svyimputationList) S3method(svyby, default) S3method(svyby, DBIsvydesign) S3method(svyby, survey.design2) S3method(regcalibrate, survey.design2) S3method(regcalibrate, svyrep.design) S3method(na.exclude,survey.design) S3method(na.exclude,twophase) S3method(na.fail,survey.design) S3method(na.fail,twophase) S3method(na.omit,survey.design) S3method(na.omit,twophase) S3method(model.frame,survey.design) S3method(model.frame,svycoxph) S3method(model.frame,svyrep.design) S3method(model.frame, twophase) S3method(model.frame, twophase2) S3method(model.frame, svyolr) S3method(as.matrix,repweights) S3method(as.matrix, repweights_compressed) S3method(as.vector, repweights_compressed) S3method(as.data.frame,svrepstat) S3method(as.data.frame,svystat) S3method(with,svyimputationList) S3method(print, svyimputationList) S3method(subset, svyimputationList) S3method(print, svyDBimputationList) S3method(with, svyDBimputationList) S3method(update, svyDBimputationList) S3method(close, svyDBimputationList) S3method(open, svyDBimputationList) S3method(subset, svyDBimputationList) S3method(withPV, survey.design) S3method(withPV, svyrep.design) S3method(confint,svystat) S3method(confint,svrepstat) S3method(confint, svyratio) S3method(confint, svyby) S3method(confint,svyttest) S3method(`[`, survey.design) S3method(`[`, survey.design2) S3method(`[`, svyrep.design) S3method(`[`, twophase) S3method(`[`, twophase2) S3method(`[`, repweights_compressed) S3method(`[`, nonresponse) S3method(`[`, DBIsvydesign) S3method(`[`, DBIrepdesign) S3method(`[<-`, survey.design) S3method(`names<-`, svrepstat) S3method(svylogrank,survey.design2) S3method(svylogrank,svyrep.design) S3method(svylogrank,twophase) S3method(svylogrank,DBIsvydesign) S3method(svyranktest,survey.design) S3method(svyranktest,svyrep.design) S3method(svyranktest,DBIsvydesign) S3method(svyivreg,survey.design) S3method(svyivreg, svyrep.design) S3method(summary, svyivreg) S3method(vcov, svyivreg) S3method(psrsq,glm) S3method(psrsq,svyglm) S3method(cal_names, survey.design) S3method(cal_names, DBIsvydesign) S3method(svynls, DBIsvydesign) S3method(svynls, survey.design2) S3method(svynls, svyrep.design) S3method(print, svynls) S3method(summary, svynls) S3method(coef,svynls) S3method(vcov,svynls) S3method(svyscoretest,svyglm) S3method(unwrap,default) S3method(unwrap2, default) S3method(unwrap2, newsvyquantile) S3method(svyxvar,xdesign) S3method(svymean, xdesign) S3method(svyglm, xdesign) S3method(print,xdesign) S3method(degf, xdesign) S3method(update,xdesign) S3method(transform, xdesign) S3method(subset, xdesign) S3method("[", xdesign) S3method(svyby, xdesign) S3method(dim, xdesign) S3method(dimnames, xdesign) S3method(estfuns, coxph) S3method(estfuns, glm) S3method(estfuns, lm) S3method(sigma, svyglm) S3method(sigma, svrepglm) S3method(pps_design, ppsdcheck) S3method(pps_design, ppsdelta) S3method(pps_design, HR) S3method(pps_design, ppsmat) S3method(pps_design, character) S3method(survfit,svycoxph) S3method(influence,svystat) S3method(estWeights,twophase2) S3method(postStratify,pps) S3method(svycontrast,svyolr) S3method(svylogrank,twophase2) S3method(svytotal,xdesign) survey/THANKS0000644000176200001440000000526414236303610012527 0ustar liggesusersThe survey package has benefited from code, bug reports, and feature requests from users, including: Justin Allen Daniel Almirall Guiseppe Antonaci Vincent Arel-Bundock Pedro Luis Baldoni Robert Baskin Asia Bento Maciej Beręsewicz Brad Biggerstaff Milan Bouchet-Valat Adrienne Bradford Norman Breslow Arthur Burke Ron Burns Trent Buskirk Stefano Calza Shelby Chartkoff Henry Chiem David Collins Anthony Damico Wade Davis Qiaolan Deng Neil Diamond Michael Donohue Rex Dwyer Melanie Edwards Adam Elder Hannah Evans Francisco Fabuel Boris Fazio Bob Fay Daniel Fernandes Greg Freedman Ben French Jacques Ferrez Natalie Gallagher Daniella Gollinelli Barry Graubard Alistair Gray James Greiner Zachary Grinspan Brian Guay Alois Haslinger Kieran Healy Lucia Hindorff Jeffery Hughes Beat Hulliger Steven Johnston David Eduardo Jorquera Petersen Lauren Kennedy Ehsan Kharim Ward Kinkade Stas Kolenikov Franziska Kößler Scott Kostyshak Alex Kowarik Michael Laviolette Thomas Leeper Thomas Loughlin Chandler McClellan Klaus Ignacio Lehmann Melendez Benmei Liu Sebastien Lucie Jean Paul Lucas Lisa McShane Ana Patricia Martins Tapan Mehta Daryl Morris Joey Morris Kirill Mueller Daniel Oehm Jean Opsomer Raymond Pan Gonzalo Perez Djalma Pessoa Molly Petersen Elizabeth Purdom Ana Quiterio Gillian Raab Christian Raschke Brian Ripley Fred Rohde Steve Roberts Andrew Robinson Ángel Rodríguez Laso Mark Rosenstein Benjamin Schneider Dirk Schumacher Dan Simpson Pam Shaw Bryan Shepherd Keiran Shao Lee Sieswerda Phil Smith Matthew Soldner Corey Sparks Elena Stern Ingmar Sturm Terry Therneau Takahiro Tsuchiya Richard Valliant Tobias Verbeke Renzo Vettori Chris Webb Steve White Zhiwen Yao Thomas Yokota Diego Zardetto Alan Zaslavsky Stephanie Zimmer Jing Zhang Tomasz Żółtak and from dicussions with Chris Wild and Alastair Scott. Some work on the package while I was on sabbatical was funded by Fondation Leducq through a grant to the LINAT collaboration and by the Marsden Fund through a grant to the University of Auckland. Much of the new methodology from 2009 to 2016 was supported by the Marsden Fund, in particular the developments of the Rao-Scott likelihood Patrick Aboyoun did the S-PLUS port of version 3.6-8 John Preston provided an example of the multistage rescaled bootstrap for testing. The svyolr() code and the likelihood-based confidence intervals are largely ripped from the MASS package of Venables & Ripley, and parts of the code for svycoxph() are modified from Therneau's survival package. survey/data/0000755000176200001440000000000014166647050012531 5ustar liggesuserssurvey/data/scd.rda0000644000176200001440000000033714424312436013767 0ustar liggesusers r0b```b`abd`b2Y# 'f.NN q b643A13#3a@q ` tB7L`>K> (m=B6%`@er&&$%BRKas2R ,/C6 *hc0 a c59'f$L+%$Q/hJsurvey/data/api.rda0000644000176200001440000070061414424312436013774 0ustar liggesusers7zXZi"6!X"M])TW"nRʟ$8:`&!@7C:DX\1>PҘAebCx,|eʙT,#y:YoU5 V }y&,e_ѷ3[Zc-@j ZHHt^|:d?_*HUe]@k{bag+ރR\?v'Bh̴7;6Lor, ·n| uK^BI02.;y`ӱIιENj1ջw2s>oE\PnoXٞyGRHrk9/<ס wIK#Z).![WMX_MeIAy9NDƅ+@X +6 o\:2{i z9b|=i,UzބuypZAzᦓH]U xU 3T*Q=Ҙ9᩠|oKD*ce`{)V=l<:Prwncrjji}cށI"mS,G?9c 5+bNp?^pV 1FAf~18EVYm(MgnL6#VCˣ4u[=92F9 s]"B7|YzZR֐g9]P0fS ܤnع{Df5ܣw+$FaJ"r. ,u\T0-ݼ4+$9h}N&3Q>^g rZL Sд|9j%ȉslnt,|*/؈cS|(|O+mP dAUn4:t>_ny<Ng񔖅I.㹥΍ ܵ,ӭsmsiy7!v̾Xm8^HޖDRAJ>rԪ[|[xy_~;l'{d@ʗ{|gH%}\@,[Ēb(#J6ád4Z&nؑ'Pܡu`3H}:/ǓKie# ~C\W⨢Ge<ꄧPw}tYݎ3gbDA*̰"d*F{!RڼXMjӛnA/жY-<~g ?wт?/[3k>uώJNεmDlI¶xRçncCҢ`/>x( wBBﲟ>VQsW?eӀG@0+\˸JQdnGqׅ1`D˕Z-9\IfOMkϸ%O]DvCr؁bjurv(Ö5p2^҂LezsaǾA9l ;;kB.j-m=)=Ў] $Mш f_XWmF{gV^'LQDɵ3uhG} [ޭ8n3 ?RMt`av)7 P&.ofGdj3SAƐ 8>M$cv4&URmwAG-E/ߩ U2e/w遟 tvIGAtD` !P_F۷MXi7w!ڱc@)'>fU-OղUFzK >.j"s/xHEcU8FkSbQkDVkC18M+YKO\J :„crP f6@˃iEf+sEl<' T 4x MveT{|$Ot)ʚy=k t Gkz!vZpYrWn 24xEsn$WpcR|&uTI=;ȯH%*PKYӎ0w@ ._طK馕K}ԛg?zr@]2?hŖ~) ~Nlxixze?3٨P/γc{0LL2da5J&'WЁ6(5zus 1cA:HEi9 o"Rۚvr+ 3}n jbǩa儰/ftX/eCaR!c$Vv*\8tي!N:)Yv>eDsN`-M P,>y{+0Iؚ1B8)GAþ?ύzVmh_ʮ^~6 ]*#hftY.JSP tg^yiuÆ`066FŠ;bBD;CV @g*S)KF_΃uZ UrzRsNeҪ!`2O&v9;"*1wT|+gk;,XwYl:2zSPAacfږk;MF+_+n[ #:UO&P0+5^SH9|[ML|@"cBS,EOɬ;6j}Ui=CHS+h&[ᒽY.90073"i>) ᢥč6*cg2'u)EW2~vq/ _ ٶCir-- +jC,ŋ$8vI^;Agw,̜cW])yu3R~>Z,ҐR*%in)eFAFXjm':o I#gH7N>`$蠫h[8#JCek0> ݠ#]xAÒ ^EcJ7[BEY,au@!d8ݿj'W w戯,kڋ9xLyKjN]P42c^Z@U:C*J*E5B 6! zJ#ѡ\HJR+i䷃0dXX[jYr癊ٲoՇyjG De16N^ G*DJ\ =ϽMf7031S`k\EXO쎱zh&]9x,Z8&o)o@Xw7@-ȃqF~Smw/"n\}a~__6mGzGbe81 XUjڕй(Wݢ\eMO2W,Nr:".XbħJtUn7H(Pֳ?%)zVCdE8?a.J|D"Re+!q -/2V̻CD+%l"pm'>3Vիaڻ*fpm&^of$s|L۶6z+RmwݸOON #]ITHԙZG)'44='f >`C?~Ok;?@\i%s;FD@C޼nE<pSUGa9dܬ# P@)W%τ)EGgx.SRBPc߭Xm2'̼any6 #J3w*Hwvςa`X1UKH' V52g@\3BE}pzر"hz.M&k&'cKPwd֛'ov?vGۧxtP O^ >CF4M#[V8Fβ "Bf։ȿnP ">ۊu]`S*I6ؓo+, DGّn4hM'F\m.D+lyQ]I KԴjA)wXCdkJ=ؙ6!1lQGfMo<4?ӳN"+ck|oa=FUm~=}wސ$TG ځuwQY dGfFRMK=l$ C& 7^2PDV>z4`pH|}A.,0R8xR&SxiZ\Ԡ] 2"'E.S½KpaK5LW0|O`?ۃT%~1tWW?ϚcC |״ŧ5)a(2utqlEB"#ąߪQLYD; ;*&;rvY"${tkiԷ˴m5Pr# =m˘=gt@tK~J\-X~ʁhijgD)*s)`c;rHW_ PFgIiyzVaoF*ME {AYMKU |h.!蒍&`AKZx N}Ѝڧ<-\l>E,IF@nҫGĩK|?#\NL`6%hX:vaF A*pAW [(9\ Ksjòf務 99Szdsˊ}aUsb5{P_ x2A-FZޥ5: /4}xF4y[NhsTC$PƊ5^% e'"?n &I.e?d|:1cۜ Nh[uy*]ĪebUg1Ba}SdaU-e+IlӘ(n~.# l.`"iƫb|`RIi=JCAh%}}^*(.k4El,\H~⾟;r5$7iTq; z .Yr&,l%R;kc y hACzVSIk2}Av\5CJqQJnvάX mܛ@:sÁlEFxzvNB̺S3V)_SF7һ`6tʄ_==-J^Cw-$A_p[Baaن-y(Gʻa)b}Aj}hJ!M+ Rig$*AУኺsά S87l&>EKߦt5 l|SvSWV AjԞ+m~雼 yhJ0Ϧ׵7v5 *&ʡO "| \hׇ+.ݱFǏExB)\&Y mìEL0kYm; ܡrz~֛QaH Ǯg@x !2aY!i)LnQ'V"x*G+dV<*3)1NGB;}VwZ΄Ϣ Q^D<ڛHA/;S ]}|lBv(DDW:װ D1Ё$Fy*/ͯ@&E BzGt3ݩ2#ϗ~eM;q8x/K],pr&S8 # p.pBм4< ͹f1O{*O_x9v ?CWڰkU rab -{~rX}5GS(K&bX$Gat,b < j ¿,R/I=C~c:r]~.kH SJ`'@?j ll5L0h[z`?Ñ`$a\]LG#x|6uyH-tԣn8MҰf(WTBgbJ }^%,A@[U@c[ZF<,9ޓMt' ;+cq0\"_AQ<#L?fxV'kl۟~j 1X(SNgCl01&F=mLԱ9a72?Ps{ܶ1Z-qq =|% C\O-<l}ROE  `; Lw0D01hnȽiXdj[Ui?[ul>Ӱ~h fvlblJf nC>67DʶLVL<_H$m.! &fpB2+!eQ6n72A)0%Bùd{y(cebv. 173P)=Qr$ldcfvCX0Eၶ%{ _̒K4Fl5[ob/SS]Gp!"[+*s^G,yDпAa+>#cr*?NEnw#kިm dyLj%{6l%>@oXV 򜥐՚[["Ph* CC>H1`QK]2-a6I)X",1bp\pzBj4Ý6ܒp!*OGz&0q]sVE;}u øv)pFSbJ)c`֋6je@e>X@JNkWcؘY:J^[ux55a&íIQ`͸ILN3gȾ';Cʶ9fXociXhb6ԕ0`yY܉OV o2FֲLGͫ ~N:h.Ӫ 3Y#` v>AjW^^ĭY`Δl#}$8ƃFº"y[T{2Q4&LcdCTk9.r<^#y b]rv1U*輲tĎI?7-{)0mO,PR64&eO~`Sߤ/dәޥTfoai^KWhsz/#~{XIz{kl2, &UiW#~Nʦ.*J6ocó֘.τ1WF`C@e3G2As7`uMGfV}裑t"O5^y1,LGH+U9/O C7UXp\KXHTת7NL~$xzv =0.X[YWDU CeԆH0 o;l%ܜPuf.z~x8bkY!;,9k]ݏ<km)NCп(Z0Pe{EbmQvBsfoPJ9I]w 3ω9\2'TKf&? U YyS=gp+R@2yv1?2.t]to:xa&״MD5@{AvB_Eas2]VaK`!@\Օ ,CDr>K=DUZ4 'ro1!w`:=\{Zb/FV3Cʫi4]#]E>uaᕤrOA|@Ș@@ 9]QA#bԗup՝j/ʑ_/s#~(^xU24'uH;HjXq-)JDVWv%˧Jn#1Yi5$nRov(ᓰC(!.ی8> F̊߅e)0 m}oz=S)/-ҏ'P5 nd[ _#:H~ZK-"z# }'Pq44-ÓZb{!"f%Bm~Q#dY* ,]ğ筜n}R["Ae*v71$Qv?mI夹i ן'}|V1^u74UpLnSyE`-HX8RO ^.,f w=>} =M~c{v7>gv1W s\*f ԔOy{X)2{L G Ԙ@k)n(XcuEHiNa"c/UdǠh1@lrjb^CF[&-]˲XXsɸR?|R*җ?)3_q JG њe՘q'KjBgVظ tj Իmy;W{KZ(tg+ԗ[\iTЃ[6_4c²N'reI` 7Z;m)N}B_tmu-£ R  . oBx煚Txv*:.'!l_`.|^|wo"(i盰vO{+cgG%ڔIUlI\ W'O9P~ %瀼NTYڧEflJnG}JU@k9h5Xh4y1! %POa5ju~IlYVKeK/A2k_pn]mMjuK~7J# &U tei~Hex̷|NrYU]8hnzF 3áx6|9̙^ p#p~{jGt2__~DD?wwa] tc-UeDqYQh h$<</gM[5;=LCc΀ѝr:1)T)D{YUd=Q`s Ikgc&EvnHzM5;S`%VU)?/wSUoӔȂ}YtI$癏FYh1pEW̫nrJUw䮟-(D @s˧bZMX0bJf4ty! SoLƜտ)#0)0)-,ӗA@µ{h iΦq7*f$>L1e6{[T_ػr~MV~ 6)igJg ??'^S.jPD26'$Y˵za4G1b]6Z@o] (7| GSv#EjxLd]3cM'NpS XMGΣ\#s΍IV} ANlYJz |`(XCv`KWE9?KUkSH^dUUa߳dVXr":k3]`QBpZ`{X_91c7E콎8ԪVUXEԵhP8!-므7&KlhEY5(!qRV|<(K5-ٮpa]Pp%?Swd"*Y~9YcGw ٿ_:WJɜTˑh~\@ :șTUӌEuSyWQ>>QOV:o>\YlBjkɖ/#S[ac{1H{4.G"gyeH-mq /փԏef(r8N؍G++lh;hC OQU)Yʅmґ@g\C)Gqf9p5ę7s[y9sKܻ5exNql?2)D&zjT"|-IXF;( fKi@@*t!t]):>ޮVuOm-<@!x%fyTu.XzEOb#p$/vZ-̇Irw=N %(ޡ2DGfn`ܘu|$+.j?fif>ޔ:jWTB ҥV"2]Pm*ĤtjӠpR肱{Bį4hE-U3M5F A m]I'%{48GyGǽ/vh4fnY4?{aGi1y! Aq ˚X0daj;=Z1Q(9O#,l+9)FKt)74X(&b(Q8Ad Ҧ*qdjyѸ E42Dza,bz+ Eo2A]zv_qB2W,c!\ҿH#z3Luyd;n~; ѼY_G•4jtXc~]b??j`wLnЅ~ PTE\ =Q>*J`L#퉕2:C Ta ~1Z_~fع9I6։9;^ ^dq|{~)FopP2 l'c7~O6eX]6s\c6nQtҎP<{ЀC ˞wRp]H7pØֵ< PZж"Zٙ:o+hJ:H;P4*}{V5cIK6ntGtT<95 uF"IJrʼnN<YxER.!S ^,`QP48 +XM_* D)lHJg{Fj@439?XGe3֫--i7QҞ-!$l A\E.[>wAj"=[ޒAPK.4U6,+=:<|T.~3kԺZ"a~?n8>* Ї$ϕG$>&~,/+>ޡ⍬ \A ?ǽ'œ7D9X07 ~2 wujD<|qhYa : DByÉŏӭP!!TERU˂QU+so=Q5vf{tᲄY݁m" J_i a~{{̯ڎ7e" 23 {v{c ]v pcaT罧\X"bp>G"|^Cƍ{~o|m* N'+"Y * z^тM*լYŸq2HwHv˪JZ;bNM4؆:Fb;yzwF=:"IyzA6CL% ;5Y&[8풔#(b8ˁƲZd>a06έGNkʎ--F6t#a/; `JSC{\/u((hO!Xr"aͨ&oG*5Csd7ΡCM3P޵u✪mCdAz"DȧkzԿ~ee*(=*M5Y2^<`8.ҫNգ~d[iHjM&| ?qq\mmPm=7C.(br{&m wk 85݌75Ů:KL9c.ф7J6#8`wa8eW:`F?~W;c޳zHyT|]VV264 9' lic6ſx zJ˖~lfTŽJmCnT F3uY<">^9Ŭ߅ ",@>Cn&f>h4 Iy@TRr07Cⶲ&K{+svDD)s :vFä<)_5bRN40h~j޶ ab3\v*D>֫f0x8NxyU]{z~(Kl1;ˋTR([}.n;QfYէNjJ5ۢ#dػ}HejuޑLa5F3]Hw\{Vs,Xa*Zx2°ܐ/CT^B鬴) Tz`u*56_BuXVU\{l%!)0sr+\guE`3j<*bs']k%qةpt~|s:߲c&Kr(4yqB~74߽Tɒ=)&z . =D!v*{!UyB}1.䈦.XC;.rlnCԊ f^mxtSj0αay!0yϓ,s".G e!% j88>o0hțp!"CХar8{v󶭹$?WJWy-tP%> ԨV;{Є~*ުS_|+'Z<J3B3d߅>~5ׄY5}˳6`ۣ)L̻6M OؽLYXɌIRF`q z !Bwis੏Thm!؎jA(*c Xyv%j%<ww-nytn((b.I Q4\^eɪ-ӱtvUzU6(yn֖Ҵ<08sz@%8蟿_28ox~pNRZÿ?yve oAw9Ճr ["@ԟmQ&W7Rټ݉@ZQs( v.Ϡ SbĦncbG?$xAPY1 t!ky[JGʬ9{-JBH or⺟62;Z!î! Rv4Y9YA;F B (iWqQԊ KA1֊TuOv.M(6rز^Cspv{(__c\YG2.;3%ms oŽh=\b_R35lԫj Hdq$޴ 5߻Xd*u(xsnKTEߥ!'BzOdx!* VDu9Z=Yb 7)t1W h]#\%㎲DvC?I[ULn.*&w48 ^ffwkg KN=[Ƨ`0HUI~*K"H!/$%x b!GpIҷ(z c!LD`%f( =]G~dj. 9=@ JL/sKa9*a~S,8!9GLn+v)9goy0vY3Σ){`w$Q x)$6fМkAOܒ ɾfliC/˱PۅIUn񊯪1^؟T`^`,cgY+h{yy,qDănY9gsm/z' ٳ@i'r2},lY&ί-Ͱ|ͣ0lhk=bilW<%~ļ\ 0_3|70#O0X*Eω+ݒ.zLbHnqeXmg5B5怱kQFRU_*0 6t)46ttu|${@3xԲ_\ơ୫d²;d%idU.<8Kd.9b8_sMA:M3v9+H,,\Hg]/q#*N9u!odu-TDW񀅤6Ԇ&=!4rM&+/%95!_Ǐu2)\DŞKIli'(dRfdg/y&cCɗniYoL=թ8Taw;ygh!멐蔟% MO/,i4M+[q؁SL⥇Y+8)v7cQj1X>8`r1fV<%R=3#璮|DY?RCyFs 8:M-ksǰrKǀ`E qüdۼ{kYv+ӐasլǛ36eͽ}k5cD8;>^ˏUZ4ލe@mYm{(v^dL4 I .u>'=*q0koB=VOmx-TQ1jfUs\S g]^^*NZ3`8̓$S%0v5F&3|'x"4CkJRoưҜ]ʟ8N$a =Ր[\?ݙ;F֨:1Җ`~@GU9z_rfj~UB-h~|d W'E82@] lW^\"fz!nߑlJ ~sòoYBi޶fJ&G<w+ߦlAI/HoWkUIpJH%hhq;ο]/wa1`K\Tx}WMzX j/ݞ7X(k>3 A]Kw/)VޖjQ8=.DnBQ 0f0;kٓQ]HQ[8.mEG tU{[y3>|f?hG3=yQɬRPfnP`LDDVI?x>T5^7K4m汘~ΐ%܁P^KTYQJ =ܽA/,feAox3LIygkwUbZ(X.'GkcNݏOw9s~Dcs&JCau-)nҟ*#E;ꨜ\#j^MsO#GgM䞫d@aᯊcs@#tvB⮄Zͥbj9ʩEVE_ 9d=7ӶeB`s_\D=!ۊ9UjP6ʜodH4J'g/׾Ip#.Qo̶n qaᣣ|uuNUmfo씔"UWĈJn r97 rN$0_':[ꉷlwӗiL W0R%{#Ba ne5r`3=n3]'Mrn%h!/k=tH8˨mNCm|u'ew65b}FA)Ѫ6v1YCIq.`՞q0@+YճnX$#K `3Y=+ڒq'WQ Be&{ ܠU'~ œ9ʇC0А {x{R_Z, WוC$!elDCFGc1A,Dbo>+iTY!fJȥH6Ij TYhdKTԪQEC->~Һڳ >qC0$)fBEcFROP]RY&R Mlm|"7HrW!=v091,O{xWmok\[1LrzTq%,+lwp(C11xXA8Hdž [1-7MJgʼc I-NWz)IBYPL ?%"xWhkElu? TpAKpz|Z{mlWPs0$e;IH6Zت@mQW m 4|f]CGdMZt”P8SΊ"P}F+ާdOԜ S6uL! ?MUw,{yv''9ct|%06 wenV.{R&Tm#tG 1~c,vНDilqV }=#.͢1u!:rbm`x$Yx>f=~Kkɖ¯b66֣ƠohB_6;(:˸b$k󚧿^2(Ej/Ewꝥ0 G.4wCp1Q?uAU1zȉT2@ ;6%4f"$xN}7 敶ל)*=cs}=a=NCɊj=ͮ!0LwyRfq36.͟䪟|@YQDv^"k3hc7 =:H+rJ nhcٱGcK:JKWvFεRDೞ8q $h&if Ne~CDEeGV ,y,Ԧ= Ԅh;9{}dr,h":߻C"T4 E|݉T  A,:\mKU]7 \8=(ns(8 7ݯ\qD+>'M@PI6o)y ˦\TǁO.B3|ip<^+?=>5.$-UZEnBACS~ېLWLAgY( eCBK[<<>kCƪ#/lTypOO,PI,Yj١x#x`Q?=UnC E^l^n();o;Jqhi '%y]-?7 !4XiWNW|IevC l^~eww5yXiY [Hn+ yf H Ơ͘@;CJcCԵdEZD|5z1(TӥZ)ahK(' \8C772JRY\ΣmF2V`Tݛ8}d 3S#뿧1aټoB~2Q k |I}&|(hmln΄t"K$ћկ$P) NmB^;+A.qUY7:7 1aC ]G|v/F1y6;5E=w y=$K#5հ$aXX3^61OJf>eGǃ1Qr\0p>|`_'vѻIǷV&KtUat ;6{L$YqIV͌STeZ6p5wvaPIȡ-wn s?0KpIg?!q}S>1GbʌA!D7gܬ݆tgKeҐf.՘7*QonRH]h}@='&z hAarG?m%XA)Kkڌ q%r0X les@ g7~HىqB3n"i =,bQ곯G?Ύm :p̛""#~%Ag vș>gg} :P 5U[1*vv!Z.'\*jȫQkȤ`-hj)М ~q=tf*gn:gqث^G.^v@3zzXîqur0+w'x(% X0xbB/#zwu9L9adyu-OGo;sc߇ ϋ,S!T I-k2ܾBa>.$UP^íGøºtwIXxsd?.^vހ) |~<^pçҽ{ޮ)y55+Ɖ׎ +HG"t= yĨnhld zP(s5sN pKamST-J)rӫ5ݔ|Q܁ELD숀hw~Mz)MѿDR@ÅE CMɸ=l*N]Imq,"V6-)Y)% yXd撌%zX#!Xש{icFb2at3͐eWKtg,p.0fD$H'2J}CTҋ/hWH k47T"oC1i_ӹkUy :gl!m;٤+,;MS+]#RFQKgdݠU~sԃR|G|\ύ s-5YlBa'|[z1y"+4\ 0xG$*Unj|*,]p8zewcrEǑۂ2tC@<O˪*leÕ;EK̋%|OUuƞH5ndJmʈ-b&]1H L2:O+7 +,@ы:SԻِ}:{lIq$W&5 yV$SJ6u ]^Ễ7ӑ 6)K~1}uaګ&rTP ST"o_|j%t<56;bj[L/n}*Ly-=TUiΖd!@Kzr"鮩wl~5E:}[&7y@k^hA~Xܭum_ݹ&1Ư.lПO,I\ _ BRl<7VA(:%K&Ț8VBi< 4Y KEF*CD?}hU RK49X92dQ눜ϣnž!VMuh ēaki>EAm*.UӁLrщ@'ɜq}'A,P'5 }o,xS27;%YMÎXr"Q%‰b6l{##$yANhYe[8ZJuY}|v?N~8DHLHۘ˃>bU jS,ʨui/-[akgn4&Cj~V,HAY@\ P5G#ŹO4cF\V/SppuFO9@Eo6*$방዇$#OFfԥ벗}LO)HE0yFz=Zcg:x F!}nN5xXP 0p^N׸Krz` }r4Lvw3yBM%-D$ge2u1 Y[S7*TW^&_M"#;pi󄁵"3_RH]R c!S<S ,.]"L(`?r$i{Z޸dsYն+o<^z~VR(9l'E7m@o L=r;/J#sF`L8'Y4 ι3,O; oEW78n 햚.UҵXl64Z(Ia>6 R4}+"_Wΰqj>ewBcvWRċq80͠xӀ7ٓ7+'<%D$F9ڞPHYQKl_ ly/퉙Öлiir4 .LuRòmئX= mui֌A&*yHXK{Bn4(64*vP32侖㢸ڽ='BqӘPDGJTtSQ)zxpFjs^&dU[!H9uDd!by)xٯ ]'0 ̉wJ Y\/FߠYēWlo5pZqbdqܻC?)s1s!ε#/Tǎs:敩`%*= (*kQkhڛ뙏 qA!6oziǮf WttE +FNv6QkY7"LjH)xY}ݦffN̦fxrXa/̒13MdžY=,1oo%퓌rfKXΩf9?iy=O.&snZL삏8󱡯JVtYMd~HQ+#Iw E ,laVWM~DK+(y-\wQ=͜WrXj5rT΋q# Ȓ 9Y.h$wM/#BKJH%*P%h՝F^-1!V~z8j]꟟Ϸɭ?A"(Ω=aA9lݍ iE}; &Lƙ5k}/./ޞa8!J{v&폮'nyk*?o^8T!} Lj_ bs QO^e#3&2ytP߲ު!;z*-~tXsXph -qUEjtI eJ^W*ܥRt:aIq.]^ q畬dY< 90R2ڽK}Qd"b $ɤgQ;6/1p-Fa[ȯ`X z]xB/1}B~tp0^N&G^a"׽f Vds;@x*G guп'DX(;psj!I2bMU [ſSS%]z]prV3Ŀ}z` !&aS;DHM(Ol0% ^w$*Ǻ裧ՐZS"7ph~:CS>)AvMHv1t*0.5GJ).f *pZ^,ª Rw| qAm6rw]ReC; TN^Gr'δbsa{Gpծrs') h$Dl%>sOhCDc@ƛ)fsI^ U!DtꭟƏSw_,v\(CqR(S~{8dS,*4m'z{vFla_T_e Q ~(h, !n:{,xlKXJ|bD*ޠ ?IL ހy]gef֨e8_-9_ O삇ȥB:xOV1-JCr< rxJI3l}p+d*08FM}n΄2<ґŽϾP([UT|/1⡊n$GG[<Ե |ٜ,x|Vk6Iӫs$7넉}żOU{b_E\eN>a2TsFF_DXɁD2-w B0.N'&d#H L܄k֘3"n>郦jP.ғ] e O,g3"M+7xX-'lBTrW`} ) GƎ7_Jyd:e8`YCo||du˿Ļ Cw=NӼsݴ_EwWZ3:xUZ{Bh4/)t(n\$ °\5 &찞r):2‹IB{4#)OPF+ VۈFOdVy  `=7`p*Mw<zhYv{H8ًdP"= RtM6$f%5V} aZ;Sc e6rF+aa)_>ZN@jBZ¥ɂ;4p te@ZDIQQ^:tw | qB >kC.r5R2^IHJ,CQ>}]jZ8t67Ru*t}Qf~tMLj_H5]vˤ7fxak<!*6L\#{* 3 |jy! ?XPɛAm L{J-l[MBj,#&Ve#[OM928p͊Dpp34et D\)>P_Ƿɋ:^P9mj bH$̚3D绌` ^Z{t:?.Gvs5@5dX+zExvy%]ۗCAXfNl]'+gsv˪ҿGzdSXy_|[mr.~}zZZZ>);OxQbu7's{Rh.;M}فH;^P[ɀuFn|Oog>(q0tsִŝDGo_Ո.ಹֵr$NI钆;$*JT/rR=B# U,m_TeL0[PlWegTwѧ:4$@1tz?k }0\f5@KsUq>=p&vWei%34BSoH(q'[U(g4ZM+Z˄*ܥɗ,Q5''e$OeeA%g`l rvk;jNА;SynEg;0m6_0LO 0I$Oڨ98DY>R/hF/?vQpPq)]/= ORJV?Am1ouɛƄB YXBqYQzs㚆f7G^%?uF̜f_OiupjEI<;qn:/DZ?Vqz;膽t:ڠ{Nh"$ =(4!ײ{GԐ,AVjE?fCTcT~ =JqDc:{_׬EX0RKpa Nz'3tAi[?026wEiHMD!`BJ}`Q.#YhR.>S KL}#ΑϴL](yECH~}mgCgv$%^Ps5|r" dN*-'~-zka^QI6Mc*.K'iX- s ivj{6{ )~"hgsVإLⰕb7foĀZ-7.\"_R>E«iaHfKKp$pNק*m CZ6/jbVjcFFe-.)KX\n;Ν@`2 }@ ul}=yij!5δ~^^ [8Zj b֍ȗҶ3C$"n~ n:-|i}wFjð`]06#z?ƅ%QT +HU1$w@N˫Xq<20ģ]m"Ԇ=E&U~VrwN;bKx2鷹?aDIj:l\A޿(0i`7gD)GKxP>$eݞ:.EdIPX QVKz$pI"F3_%0HӬjqrK%Ӧױn`' "bG&*l,ӢIFJ ݤe\W5 Mbl&ԅVkᝋP f CX_?Zeb~Egد;EXF#k/p\c;&&IWR+.<l1'Zưfz t+xgE߯|f ŎO7۞=",}=f=+9MBjG ܊V%{Lzf͙ɠ Yn?IC RQ7`E{K(LO!n6W^/#)W.GY2dFVٝDR9JH:6 $VD M&sk #SCoAi.%ѫak׾Gx{fzPzկf@R]2@u-'fp]&BH]?)`7!7BsŽLU,\!^$]x[ Axhq4xEGOXN Dm9+GIj 3q$yI8i2! XmO& %>",g]1 cwR8&xЀ3[cߐ\Bm>''~`Yn>p 9HCHڂXNwxii&$T y:>r( Q?&&QVv+HϬwʼnN+5d@)/%llLYaq"l3%nyNb9蓑n\S-J(2/rqqJV߅^BW!q' syzW"rf5'2dG{udƶx: ]. ik%sJ8o!(^ΑPg@Au22n ^Hs(Qb(yFa>;r4y[BJx i}~jco?q/gj:LBBf$5fvjّ fqW wYhԒTy/1{ oe[VTr;kxWh sTQYkXiŭM ^cluZ<-Q3XQ`ݾWNh|J̢{KWopW"5$e |wj]PCIXo[5I qmD;gCri5#wlvOfpWrJ( p>B(w)W{?Ld؁Ag*ǭ$y#tVqwx%YqLU}~)VofO&Uc7 eLpA4FXoP`z8GGlm"VAۧqwYkɴ Y |D2؛Qڳq@~P72CU.bk0KAmgG SW4pM:I)dO_DŽC_:]$\kI?W~{wX HnFc & mf#31t>YYa0D0&9wzUJ! ߈̻"7o6ٗo5*MN咴57q@lYuʇh#J!EXz~D  _+i,0!5QtƪZ2G#y $Ze&hfvTrq,}(pԀ6y!rI_Ydשw1A*qgwn-TY.E/A8 {棃_zі%1eA ~4ɽɫ bNBAdBJD/`GlDw{m3Ea [z ޝcf@ kh6|jL F?CAE>6Fi.0X ̋£،Bdf)X(.u,Z ܂S('듴v.CXWցV'/Dr~d6`|5:tћ1-U4.20QKFj.-Q1sNjv-fBpu7>a v/\@ANaQ D](OAf*XЎ˧|hiDŽR(wtN༰.A򼡫4}">т8Nu/ZTh?.l,;FW7ڣEv% SMëcM7XA'^rZgl X48ȀL8RSsBba5|Rّc}H΢HHsC {oR{4>c@ 'n c5':9G \zy]vyjC_'R,=NW]jÊB(J*cR 'xٰ% 8/l&EYwB[\ ZxY'~GP@%$<Ab_PHm@Hq}{#3_&5aL> xbo*H4"Β{etjP[*i{0fet]H68DfQe?iG fF?kg1 M+dvD5dtiQTN(+)abcX7P&kмOJ_x79 fn*ndD.2cI~r~P5wb)=)a|'M4@^2ih `k&+QAr$[Ya9tͥp[5Q|("$H]75Od\LQd_AX0_MCclr&3$Mws5]==0Nɂ"^[BT 4b5%lXZJrS{Y,UO7.'a^6 ٌ qizܵXTʡ\{9g:^U?w'z*$ty - Br.U inTd[ӈf91(#Z0um2ZdupTȽJJO1&:B}._h! OnZ 'W풙_+tvjϓSdN^}LdD}O?ۙ ong3uu`Y,Ԉ~Us6ghDG3mY ZUdnuݍ-iܤ1¡Ӂ*.*LY^F0HቭA LvC1BN埬ӝKBFm FI"7bYcIFiW|J T2˼9}d Hɿ]|'@v-l{oQ+[Tz@ /$ʊخ n| ֚7tcA6]ix13`ư(+k-;'_>ԭ?l%p}3Iu7.)ԩFbSMdx d08/,qs(* Ubf]zK+˽ooSnJ3!>R]l!AHE-Y{&/)!Mb>_I=fwYtw19AU6CG$.}'T3ޔG 0@f-nV>?E WF7+q7\+ܓ-{niV"?Fi[R)W;X*Pw!4ߨ Bގȼգ>DJV PR' pF 6Flx@+ yX҄6([W%LL *6KHm>-|Rb?m{@Ӟ 0S$ĩ)=V_0my sL>w*du I9S!&ڪTWz-sȽwU ]SFQwtaQLTAh^[?ܞt[u}de18`qgӸ|2٫flnyNJ0HGd1:Χ8M}wmnc(5fI=#K0C!N鿩6r'>`*/bq䲸j/:b? ɶM,G'xAZMIӒ/|!Ǖ&!~8\+K@W_ūkxsx~uǦ˂zϓ_ZD }qԐVMvAgnKEwBft+۱KZN:KsdXNy3_v6b#[P?g\]ω[.8 T"?0Z#b e[> u=5IJ"镆އc|)钀a$CRZO%hl MD3GE*O?خQ e86ӽ#k<WdRn4r3`CJ]4xP.oPܱ{ITMY!'D7"-Tu{暄 ;̰UikĎƙ2Gz |` tF=R 9n7՚T Ĕ@X.HTDz$ E;55L+_Otׇ_nĉp񠍽R,/<.~uH|\B W  u9mU~&rW< :12??*_]AVce 2' b8{k,p6E?V8c66Mnh&Oج^1_XB HU)_ٱ@Vy+`9',5;ߔ}j:Bf[|gĺc2< # >d@g]JY=ǖʊx: +4+G:÷0d@ M7T_ykdك짖Il8J"NܰlM^r'$@ʅnk(k+goljO?V*k䥄T%$}E'\#zS5i0K |@LҞέ4Mf' c^+䶆R\N͡t᜚'((C{Ҧ"%Խc\ӈ Y~bi c&vZW V{'Wn /W9ܑ7˩- [ю)Xr ZI<Ӂ3CH[Pttsw*1QC() O;%o 3e24iuGꕥLOւ6u w Ks k䝺vaڣc#z℅UC#7s,BzE`gY<~0 {]Pÿ|]_ L{8Ks_EZxpsy7y#c*^xb!̽ @r}5_øP#I 3A2zoC6a}?"\7pj}Jc$Q@\eNT×ܿw 4&8xhʔ̲^5zڧ)# J:yW^*A&􁎠^BX--ŏů}#Qm%}FGⰘ޹̡0o\FZ/~fdcC/u9dkĊ <\^F4qTEⷼԛII9^,yJ:&aPWk=õz|>Nb“~{D$QVLcNqcEx#&ёsUV ?& 65>RiG{WR .FENɾ 眻_Lđf|HpPYlD.tdI,:t*4#ctp L!!L` +,: xg z@bsv-<#Ϣ(e@K`n+z ٯRQpP!O$`)^ l%)>uU$Q yVC PZ4J6@Ed `uZeB^6Y#ӝ=e}Bi Vrw\IVLrHxKKBF  :tB7{xX)[;ea{o%jۊ0w!pR@jS'P=y$S&J{\}<m|<.~]?o>.1͑dz&Xxi~B82[qqА'& ;!Re N| ]q$!ۆ׮VRsay j`+ȍpudrU* 2{y-IGMqQT^˱":'}0Yeҝl~k]17K0~7TAhD~RP\a.Bezɡ[ޯ&wOpݐ\ÿã]*UǛт rݔ oqW8\yG?9&phTg0<#cjg͍£|.q~J#h'y"^Hp{ξD?7l(r`P5g EJĴX(-M+ݔh*H֨)]{Wދ@pOj |ϹK˼ɚy7gZ0F.EjK$ED7 uYYpw hJ*/.ݭx SVE6Ty&Ӂ+cԑ5 :4SrXĎs +H!n ȫvÀGINlY!F"n|3tբqsPp@T%:W{fjf!b<9ƐeT(_+Y_K49sFg=B vs#t"|<2]ņ8hc^>DE+ib&ZvJeU]kQG(\[XX{Si)rKSpt8 IK3hg*1M< A^DYdu>cj{mEIf(`MKL3n{s3ikGq n{i,dp,bڎ9*AP .Ao[XcP]:!L jEnی ]Hde{O35)ힲZ`׃a?opTK$6NԞ܍mb=vծ$oNXYwVc晸-(RDy$*D3ceZgպS?%φ_k@>>O(.d\6˜դQ01x,QΒe^՟TvcȔX'zyOsI4c; X㐌,^XȑQ5PKj5+ 8q7F"©#YjYHEE<{Vw-D0UJϓ(6@z]lŀ "v'xHϤiz#$w҂l,)]k[g4!ΫߚYnQI\ҷvUT+v+1ye=lkn"'S3MDy{ 6{6Cv|K=&  k6 [ `+Ɉ&H ޴Pt8 ].]BKJ^{4x _b KFCf ~hL{IWr;-)ٮw<]B[2OwqLrm 94_Q/ORջ:<[|.}_t=+g&Nh똎`HA,t7㼡f ^Ue\qt#p=09h7Un68Vg.vAZ_ Åi)9)d8^>#H-h.R;{foeAq>.5f6~񲴊e{].:Y&0rCQƯP ,%urDRsLNVB*vDã17aDA [OŭM 1Y)B18idFR4E.z-nDBƑzG_VaIuR=/kF}4n+ǭS+m-D8 +#igp7FjD:W(+ۗF$ÈowA·qF L'G0cS6`SEQ[*vY1-0e{=PQ`8*<;CEόVreN%xª!8c1Vy?/НC o~O| .|jdD PĂ deaIH;(- RdFwďā -f:{6ؚ$"uc>#Pa|Gّ"aOH #e,vk|$7>3%_&.ۓF"ٜ $44܅*@{|||xj Mڵ/gmݏQC[qz"0YzkNК:"1QTݔ*۪A`$ ң"|̮U˶=b}F]8X3c[WEo6SMTi.-@Qo8p:6K@Wy͍+$6O,N$G)2xid|gz0)H; '*{WLDw$[?p%R)AB9^wƭ ʜヒ21SK@cx%3<C*ih"ɵP6xmIv$_zuŠ*T[7! d'G)#~XRD9M/۴eODk0)`zTjd0 e4ܗ]`5[r0[۞=wH{# 9>S8*z)I ̳޽4"ڬ5/r|W\'mCH_GVֿLF.ˡBgFzs5YE+ :,WBxOayxS6&&"ر|g[)L1஥RzZt}{l%%@3 ZM!U 'H!urwd-#BpZ-Idp%g1>GaUvZtwz%DǿU@v_zvn9NrEzpm0K@ s!jx--ԃƲ5AoW5ڱ;T{L0?b" NAA)GHw% ^ٰbxa]7^繬&Cj] d'.?[p.~J&qU!›AUwI[+Nc+9WK+CLqg[nbw X u&'r=^,g:|ef . 4X8fʉ*!|+H9&\gaX$˓ULa;RAEw QfоQ6cP:0MΉ*2Χ,s70v|.fjړc7 ͥ/W`۾@1dz>Vr\c.W=z=s-Ec )6d|; oR| Ԋ> Y _h6kij]pe!Wf@f؅ FԘkְE2Db8l0d-Yt>46fC t[ qs:Ɏ|Y6gF !zխ_|^;<=ͱF,&hjjDV1 E,4e<)ʛx$K ow2Y; ZMI1yfCy%:ҳ5n y8TB`*|^&蛃h9r{À-j 7lo݈Ɣyu{ ^[FK!+^VT 8t{SZ0oڜ ٽg;2dMwUC6#bͳ}/nA)m"$dga%PQtx*r#gO| gy)B:`G3Q0jG w8ۖ-g(|8<.s#Ӽ =1,ʣ};f~3'8XEUޮg4b"3fUnlQ{oiQ&=st@yL Iʺ HFs`ќ>jLԑⳍ&07m ir?2 oRJ> mf^"̖dGpv ͳ3yJbĴ0і ).{M\10U=PqpXjSppv(l]#1年xG9= XW*?ƀV1G K[) ^uFZ5vkblΓXpqGZ]0Q+z 0o%M ^,sVkip؞$#)iv72e&Jx`e%`~]{Z OLcM!y1% ExD:H4Sdo٤-v1L_3dy^zY%:»+ ilމZ*T}6 vr PuT]^1"%+poȨXO=`$HD)y7z!nNXk-N_1r<붆'&b}Bu,^LD rhc/h?ەM@9:V\,Yu6n@W%]S=1`Mڲl (zRE3x()}BV$it(3tn1Tzo~[,[9%jnRke_ՑnYHAW/԰.K' j5 [NsDFPNP2fG肵Ә20ѧ3k#tȌ"<3̶u$Ӧfd9~M⇞Lllouҙ HCVX͔ZbrSd*$},L33O`mۙnp/q橏J`%{9!MṀY}D"zE0ZFԩ:zch MH.n}_TΐƢ:P8I[D$їyGup8Gb*glU GQS"E9euĝȓْP؄ 顅(DկY(o ïݪ~vWOo҉8d~C1Я52S`J4I8 q?+h`׳]1",۵+ 93)ds8Ja /e̢A0tk1.8H˨kXzI4ֻ;:EfwZIm7ꦌ@=l.MTDCϞщZ>J#>mai#z@qp5`A?ibtT$;LO=y7<NؓhMcJuxdQD5$o Cjhn>el[P|>_S\v C^FnW'@Vwu*/{P&W'_`cLj~NتȐct*w@d_$_/ghWXm^G$K{aݨH @T s.@k&ɬV^(MGn8SyuQW "]Yx 4#>w,bqPS`)9Jx8Nm2ȣW^ \V $>T,D;Ɂ~<+m镨3_>Mj^ړт<1vd4&9A@_)چFD`kZ0ҧAFo# S H n375o9KS+=(}RwRbd,Y!X!ւ~l.ލg: 9׊f*_]'Bqenuu ̘顽zRUpԢbH=( 7kcxƛ4M TfM^cY ωy!|cdo.O\Uz "@j\"`:[j4v'JxnZn[VUZkoU`ֆ_QA6kd4B,2p7?a p7&KrͿ"aiK٢P;0h7WLqK(5b/;4_)\rGqcŽh,J!d@;8BzE0ߐO")2DUp9Jp(f1p7+ÿ8r3E&D<&àx='bG 3d~IؕJ.PsF.>w$"YYSjKJN- ԧ?{Qр3'S=`8QxJele? 4`19a^ue?{qAIׅ@꜑@D ioM$ (B~-?hF?wH1]5&R 6-E&EXх[>-тٯ>F ^cN͘"0i'Ҍ0{Ni oJBF%h8H~_!fihY YaUX)u~_1$Ǹ`yug),yWf>pa'/++6v8s@ߦw=ONeO+Pe%[!$"x[#D ͏$w]>yU2叒W J.NjvR4p鎆ya$)*wW5M |Ezd7#jފZs PZyëM~\枒4\%׶Lp~Jc|fPMaaFl5 JS,xE{wq K _LPG47iM.X6TⱌL`l#@9 \pTiY7BD,ҫo50B>8#?s1MS84eI2|!Uv D](5vR`Ol:ڸ]ۋ Pt&sPƮ+QN9 گEr#q't 7ŀ߬|(RNW6r>O žuԜ; b]'v)qH&d>/an7QuDJM{$$BE=JT+&TI1aDDWlhrN9-ZSV&npu m]`\zsO,‰MXPw3g@/bɻv6xhQP#&u& ??brNxbQBO'ǃ.@1-3Ԭ/o?亂8ПaNVe>-;?%h]P2{#pDq[sH6Y8Wl?xl,.텣ҖyI'@MuJl]H)QШiy"} br{=q\% s`=Wei֡J FLR=[gstA3>s6,yNp] %0t+ gdꬱStjf%-PMRI3>cn ~UM6EMT86`ye_k{q୴9Rxw4uG^g16?FN6{W xQ5cit??J݂T15Dw`j12NɷږRko?iĤkdF5 7}t{st?z$7h3-x BPj':Ec.uLv ԵBB4tv6[xu a|i~)؁EJʍyoCR_Zum Q`lWJ"@YˈI-FOm).P*u]vA- "h/F:eoTo&%C5Nawq{iiu_()d="7o'^MAѪLL|?QuLLchLÒ ;U@(AX!Z|;\nz?_c|C |.O[MH[1"B6yu ɾ>o4#W>>zN0by5v]sdu[)u0nTeUM7gH;0z,ʹkXߖCΥRk\]b/z1)=m"[)H욯W|%qcrb}l}Y\?P\LpwtB'eٕq JZq!iYzNű0>ِ[yt]_X>$jVSPΰ;\bܣ7 SĠD\7禯4\MZ1}3nc/M~GUT}!I dt7bT=M%/\=ͥ:P_D$"' վ}M:`EHU7Jjnv"(#~oZ(Q&/{ N˅ `^(h ~!JjPGⲎ ]Ĕnn7i=p=^4f;nLkbqfE>zk!([ .xQl?4C8~&dC0:A=`aj *mm5)j䁩wmsޱG5 !nka"i\̗XpMV"Td%QrEӟ`8 OWZy=fh؂+`n34EGj]8M+jN)mԙӿD#/lWJ$(Ag+TiˠڲٙbVN_T Ht~H]/E`SP('xdX:ɏZ,$ҿ۸'.td1,c\?dvysOxn_Y$d4FF%~ v>tP[l!?3ZE_!33IocU0Ҳxqdn (5MV^;@?+΂ U{9x˞%'֝81H.e$+y܊o/(:zq #V Y3Ա+v5虒.Bi rpK-'f'[!sh+[%t򍧤Bs|ݱ raW9i?C 4t>qKgLP -ܱ@{uߚ?"Y, $ٞ+޿?%=h'Xz }.(qh-Q`D *iԁfWn,w`̤71QRG.i?X$uLID];hs@:M_a+`L\R*档L:}b$YgyGۀ,B7}~7x)!*؂6 "o"V0mo"( DD`\5Z"{`Y1BT '<MSTڗ:|+ wg qA(z1Dkܕh+* Nv7}31}3mfGU)O:[BO]=j} gWRguK ! |k hg餼zڕu;Z&CA]ZNW%rY5&P6;%p%5H'ʴBE)7K8Rk<* Tr* 9Cm/;݇K8(¹BbLOX_Yhsa[\fC9p f\Z苯4=xkrW/-+y.=wc$YxraX9(Lv~EfþG0 Tz!S犃gY7ma?ۦ^nȆ FKbKqg(Z?z3E1G_C#զAV] +\M%9?˂w~^@`+UjߝTa6O΢zZw7pjeJpXFosC.ƼtjG7qfb(~iȀ #}ә <ᏩY }m&B*r- Qi8#[Ϋ^ ?T%eNWV$nQ 6 gQuho]MbڬMLh2Zn 1C4{뾌/&wLr!Xw7C}ٟȯgB9XqB$!Mؚ묤\/viM hGݹSR^4b #>5M 'vDc%7u'Կd½$XiR9/[,GIf}ڢA []+?Gʏu2YھWn~{%χ"`UЛvץܧ)6%BX5XD`LR>huf(E)ӥP\0C/,;`e5keO syAEJ$?HROTthSt8s( o!*Cn1:6 vyH{u mן |z]nIX'׸h-&=bDb ib Aڄ6X> HUeA:E$Tm2pn9K7eݢ#rlq٬ZxX{#*o/(}ǔWKz}Ϩޟh@bnϗ7qhydכvWQ KLXm1?0n^oHXv¦`Aدbe4fhojk/>:٨iaj|cfHHda0c-V̉]g[-bVb'=7"Y&vj[+ zQ} ,i|`9>B'HIUМ {O0SnykJ~=2!'8Da]3-Yy6ˉfse'S" tosw`@![l嗹K fP xʸ/99қhjf _ VUzk "ojBUԾS nt-0Y>ixC_kIA5U08Vm,g8\UX^⌨sa0r݃|F캬 ˭ + |3%X6=d 3t3ōB<۫8jP.Pࠊ3gο9VS+䈜D(G$"&rK˔2ffcL^o,$*՛dF Ҳɋlaq^خ۞kcǣw0ZZ/"?H+#H|EQO# >aPEڧǜ]tԦ$u:M=q~>]|LbjMߕkW\,Nٸ4ʱ$JPܣVdO+HwEQoNflZ$N)_]u7K#;lLUm&`% ب/AR =-Y'H9obgUct3˄G@_d2 XÚJ.* RfR / $٘H8(Lqn [ݟxYڃqPkC:lOKme_&+/0 ( X K2 C#=\=JyQ\m`ew8БOj'fd P2\DN{5a/d44UL6g'<ӱqoVb]Q`rs^m8tQ5 1ݭ 9QWE-<ֆS"VuZW0J>U <̶e@>٥q$v7aN/LrWN=~8T{ګ"&6{U5)s)-lƝd2Hf_ޱ`lv[5kgX,N"Cז&**̞@7S]uJl(TsaIk3T&}=1׾[C6,d H{Ns݊ʮD!md Ugdؼ-CotZH͏aU|' Q6qd ,JPߎ9/]L@=ZTMPQΠMclyGWǞm!ڤ?zn技{_9of;@ũq3Vݨ zÛzaE(i?Pa:~X-,g6E>+e+Ҳ>5d8d|&zB4bYJj^zˉ\2y.t+ l}(!' YsꪵBOF@ep+(L[)D Z&qEp:nԓ57/.3Zt4XhWt ޟ%U,fazd\sLj;:Y?VLB(dOS;I-K%f]/٦iH7U!mv,[kIL%P>S|LO.,;,7n=nE#}]̂(M"DDqbzAIF# @i3j9}EI7Cl]DV8wSq}1"QRE}_#hpnxJq2SfvyJ|yרD$n{(TZxC|);_ u :,D|XvvhYk-e#>EzOc>ceFi\)!Sa<Y+lޡ&~o L+}Qq]#7j&)M[d|mJ<˝nmB ɿ@o`+Vj ;BaЬ,f7C˚ l2cpW9/yF0'k44{j*>j}w1F̰Izܒ}_-;}f83Gjb*/1/%N.RϸNV,+>i{MY gO,V[AO.s3]olg;I-I:~S@zzŸu KQ0 ߮4/cvB3㣨z(1U3ɉ-ڔ}$\xrTHfB@! x1b@W$/tGN LaIw(8"#*W [Ȏu)ϵc! SwdK3S|QS`r ~mE`y*(j?iew蝓`&ksilz;(9{+0e\|OSEW-;.^ ,FD,ԟ2c\WP6t>F龳&0wGlMdh`+n&oO6}y|%-7D|1A"L+kf\ue[kl0ևA ʸI"\uP?;$6g`/+h[cJ-,3(IWZêƿK϶A_: v}OJ[&qSZY_K# opIZ ]SR%3Ht5|qM=$#ôdI%gOj# *6ScAdD vF'< 4;LۜyX"+0&u {DX4rRnk_@i뼀@W 1!qK.զ uKOVeK x\AΈ62T1 I_k?Ggthe~8TM_+79q;'N:,ξ$<*P;5o0+a_4 Hr}\Y|MG&Z^_x wl/[k#\1TLyƽMPՕLgݫ^4ˤ J| bYb!|b|994p(tKx7M[vtU=s-.gQ.f)S+#r?!!HHWf_zr}Pd;p,kJCϓSL(ݤ[|tpk~$Z@)4lҨSߝqt+ ’j 4?`[b5gSCIrKpїC׮GtSznN1* ]=2u8 QoM ?_&DX{փ0N,' ]h y]Fme"НQީsMeve J3z z2*<a&K^-Ak-TI=pe>DɹeÙ6;7KгS^V&j_Ő޺%~:8X^<':'7$CL=ҎKKuv W4z"8. 4`τ(ѰԷgl<효QR_THZnQzo]tRێ8*+cy!ve`"+pЏb*+C RUIpx]--7Qf,`V҆e މX`p DeP# ~x*'8Vw1GMgHUֿ,ݣڍ:AEi~6ݐBeKkD Q/0If!Zd&5Yʘ){gfp{:6i:o#e^_#]rGrG0Eom+1sqyoQqѥ¶2Ķ0Akn!A%Z9zu~!V/[UꓠFޕ0(I4̡RTVi_Ȥ#ʛ4g!@=Y޸~SE4XjԠLNl /6P>ʷP/d[@"?Ŵvw$>Oo~JK)86,|)ø`뙖8}|YDbJ^ K]yJO2ez ;1qF,L"54&XLӘ]CRKX/htmZUIܽ_IDLr᦬B\l4c"Gw2l.2FKԈ'{V Rj~ Zt_Ѡa=P(@R+G]>YǠRʨ *@JF~珡O$GE xn>*@W´B}`tW؍JF46UMӴ&֊OoIp-D7 pnTד(g[/h{jN7vɮt%KoB,zc&'k5=j;WYMnFWQ[JG J~梯 0Na1W(Kuo_1=w4e#[!n*) pX @u!*K~xGhqc*;SMzat6ى 7xĵa~<`)営BtsGUv-~:t,:aRm'î Sra?cǻ\N&A(e=@l|-T}P=iDLH~: >p|,1Zs~#ppeyqZJ2RЕV ^)Ad?fNtfyog͒gRTJS@ʳQۚ!1V}&~O% ʒ*ȄL"6}[L!gj(+֡OY%5\ت0'l!6$\5(nN5v4<'+: _Ֆ"$n,b8A e,T ADA NsۨڄR\ 8B:? :3t;!X;Ig~ =Ueu1}7VpJj=ztĔ;ED&2ٛͫv8 s1c;\r3)}K7b(S}:OYT%7>^2j.\NH Ld cyCJQ/Ŝv26Hpu:ݰoN/*עj:ΥbNJa/r2j 378GX)nz~NKkJx#֢t ;DW-;_T`wZ zزד27k $^ɌzgfA)bz߻GC p`D:?.=!x e<=G!<$wmoTL)%x!q+h*i:MNY JKS+I^ՠ9ϲNH2V$Uo܁U!@[Uŕ[gC_CV  !W*T'73)*z$^~Էq(OPoc8Ԛͨ9 D"NYӤ K>g@>:j;}Wq|$xAg48^L@ʐ XO^"qd~XaE`CzqI( #Ng{ܒF)F˔p[〽AM͂r4?7SϞK)egRh_]էlT8l2 lP@i0g~d%]€ehOɣz%n:aak`v=SRvقǦ"ewPGs2&.3Wv.:N ɷOL7IZ̙ _3 $`z?(0ۗĻ~Q/+G1n7q P[ kP DEX ulp\iWxòjP8= + Keg8:rn.ZXz 2~2Apwlb'% ښn$ק_ C4Cb9w;Ay#V'R?#N#y3-ooA!:I uI34ּ(w\]tPZV#SbɄF[0$M${߼~r >~29wPe> u}[VQiWj'NyR]:IF7d2ô3~: ŚO')@4rw#AIXf9`J(P- s( MoM*qKB( ڸrD-M]tgms 67a44wD+8 0a)߲ Dr""Ӄ^|/ڇ+5ّm˛Cǝ<w:SKXSk4N*P Ug e S 0!Oto?kw;mYgeܘ  O!ǒp orbzVV %8f: #^7袐E'S׶ʄr]Rr3V%p6QLژGm t(xheRwI>I#<r92>-`&J J4|cn=`6]wt@ 1d''KbA/)|QNA jm/OS[_&v$aPyzՒORQ9тH9{A#tYq8~^GT ASF!%$)+]%òllzȼJXFϹN7dxu&B4҆I'35\{<`Zm~x2^o& ,pUp,uXO UsG6WEkaEzNeZT5MLfB˾f𱫾*AZ~rz >@:%]9immGUhumaPۺk= ڊY2"V,GG$vw:&>v?(:aPFt7i҇+^=:z~:Ѭ7-uZ*)sXhwbxڲ';k$RMbHW粿 p9] ACCV\76)Hylu-:pԃkL7 ,'@v-=z,1C|JH-T)T;@\\bh_: uXF@O-!![sUzr,1uc&X'Tqx9xJ"Zz ZU4R4sE^oJBe@}~&FB bd @y.M +a-A ςDZ\G\ua`O^N-6ehqTo(WRGH=3 An mPY++> $msGang-ɋ]WK@pXmZjѺ[oJs&fT\MNu!36_voH /N1M@t?KTVqtrf&,op+a8cyTѴǭ7Q=3hEg+wmxMqG4xRƓ #:q~Y1c;YZ­"h8)?[}ȍ&ٌB4P!;AGIݨ@vyT=P? q)kOH{H] U&Y^ZVaaJʘW[9u^ک\sWM/{^$19JƦ*I&do=Gq*Xk2n1l|QUɬ5y`aQA X2M2-M⋴TR#SL2@(CI=MCZ`&mwO&pڤCF rÊ^UlT!,䳀x7)}N< <fٮ'ON(Q@9!Qm$`!@B5HvvDkKp><҈} JQ@1l)J̀IlkuF9g=,=`L-\l齈lلv2QqGp,[ց"@gP]ԯ]irY[qRx׫T鯮eL*䋠l* %LD.x==+; Wƻ7\c);ҍQXI]h6x.LvRqO{l\=@[81B I#{_nwψODPc'g w:̱ѫa3X:Dxfz,7(DeNQr펴R9+ %T4xu6\#WB[(';g]lZlg%bQULBG>Zz uv|ƝpwM :cݡt"=y<i$!FX3O{gd2ɿFhSnf, ?V J[h̵m MpzUxNaԿ K|c-x+"g 9,֫Y2& 76ު2^gOmnHabKۣIMi&,>}ȯ0!v"J -Qv&{lcY(DxM~̓`C_؟b qpyC]jB'نѲ4aTM4Ji=:Pր?phgnM KL;'zMAxS}cA 77NziX/ɱLf~W&oj/*v)0EOLJxߪŰx܄*3)9K/Od+WQ r['D(;kH +u5ZFD reD7nWdKp-8xs(.hzUd4pX5HI3$I5`Σ} VVoCpBW884};&1¯EBO+62(f$QQ1IP肋иdb?iÌnYAmRhhP=Sh R ( nE? /7鯍EsShFl̰=) ŀ$/z\3f ^QA\9?$OL\ALjM%B%ONN=0.ٱ<^UපC.*ĪgEo.TWwF9,ZD,hQUwdžT&-8³,{κmHhcc.;:2}މż`WqK[e2Ɨ},߀Y`>VJ55=bd%vCقJ%@P< xdfqun߇~^PiCMYdS^[9wIpZQL!6U4) ^SIΌܞd vQz#px~t98/ >&%$Z/]XLN09 =̫b B:3/"εPF2-F"nnrvQEZcGN܈&\~SuѧMK{@]!`VQ/r2iaVtM/vJ . g <)c2fVd}o/T]ֻ$8|2δ}uÝ۞T{^ŕn]̕^VX Ԁh'z.A -Y>Q0jݶ@bdXr0MG3cP>]~s4<eXvUJB=E9ř*ʋGk|#(;{m=~ "UpT2{S5<_LOf@Q[SX{G rJѓaU+ `m 0Hv`?hj_$]i)+±ZOD!'Y:\~Mb9p侑wbV9ңh3&qoğ&U5sB%9>E~~t;AxyK+lB`Y FŮVߢp"ps,_Vw`TƵNUq|I&*(;!ˆAIxi {THlB36 ;]U!uJYT[pu+Ņ6ӆUa|>iX1yO(xjIΌb7(^^2/YZNdP >IwX3,@\X:e0w@3cc/'Dx;b!H 'y;M+enzu[eq"F>1@ Yu_DxsA3EyOS{z0?TnXo#v}Dym`^]q:L{5S5-eHKlQNN Ѓ'< \$Ko68 fz鶅E(FN >a=pU'^ b 0 =X2e 3*aS=@tM4tF6x'iNuNݤil:.ia6e޶s1ѵ:>"sO߫;N%ZȊݶ!Ow=h['jkF鷪>{o/$L)d^0Ofy=$.ɼ`>eepX.DoЗP9 u#NqKbJS5ŕ`\B/΅AfI Gd"VExJB]uҮ8i=B mh( PRC|N4CZ݆L޲D">jKԀJ{ʭE:!qOAU_-uՏ>fjh%3M!V|UXзݡQHWmn[ho>wfK0忡:jpc-_[l0^IۑB \Ͽީ6Ľ5Ӻ `#'pY"X{6(d:U+5(\J(yO|;(g}jJ*HxʍT㦭^tp+t;n1:1gL3lv$Xi~8Q.n^6]3j})Ӕ!oaK6P\C|eDy Rw]TTS }|Kڊy[(+T3GjdXpF>NCCs#wG.!eH!ؔSĊ) 5;4rx@DZ2ۣM,Stk}Ot^y#ܜ[./Qb&;Bˈy%m4ڑ #( NI]r*j?F#7v?.K]o`⣿BDe̬.zXXS`97h%ĩ@ сB 6F$RG_KQaxy`F2mlwn>n~Jׄ2{tXrDnRB1~^.rXR`a?B!Jgp(op2\jn* FIB[r"7HoC FLHYz&HVJI?3 w+5B/v̋M B4,g?s5i4HsbQ)-\ɕY~CtE^j/w^s갍*̜-s,Җ+]d8jm԰bI DTR#q_u~BB5Րw;6 )Xdv^O?Iv̼s4(( v$lqj:4A7KFE# ꤂JIm߸Uii#屚li$<'わCFyd5CH=(4dJKVDAMx"F\Fѭ?|G<"-1{՛f; \lJ5`*hQdY((:T@;X(f_l6Nkˇ)D6"m$-_MjO",-ӅblZkGJ٭.869ID!Z{&/hT޸8l|T Ɲs 䄌+Q^]ș(A'zGN oy>jN&AG ƛy,kiHeAP!%3E FUUsikH"XT|d&N+٠B[kQ:Hvp7OL|5iv|Hj$^søĎnPԫ]&3Lb21LC1qrVTA?"s]FCM[ Ҩ嗝Ӥ8&ٷTR C7A9a bwТz&f|Fnv%-538xT^u ,9b̈IƒT )AMƲ: 6r29#Z$ H8r$Q.fӫ*6;W"SĀΝ?=9/֑4]jE0_E=žq,.JilW|wP{9H~p\=stwa;룉C2[-p G_1g'6\J!hEНE4)RIa @ Ր>FQcs@ڜt]{Ssvs(OI.a"0HVwZ& C$~]f[rsx#l-,5HjSQ`köv%C.i~ x{<~}]iG)et JvONcTzk"떣-rږ}zoV)KM}@xԅtp8yf6C^6镓Ȗ8K(*4:?}tK^|X-ȗO?@$'y}xYۤt7HRUɒ?({X{uUJ]Fєr-nVZY1n )' v@Cq"Py~PMmhKx<*FO{Gh^KgC,8s_`%ozA-f[:P;p.{-sᏺqi9_߰9dgfkEVbN}\2,uIS;?Ԉ2qx<fM˿5ľ;ڨp:V(]jA5IpU&̀M,zIdExͦbgZhMM!+9iuc`rӀYkmvOS~#d \,9NW_ x $;"[%OJf"e 3C"$CRL ,s^/>89~J92!e-K][،?hI?q¸CH[B)]4i;EX]IRyD;ia-mץ'L9d~kCؖNn^mSaM;\ߠ.8ycq5LEï6)T㘫.!Q>zWJCr-SA(KwNkX/Mʷ(< cdz㎠jNxxp>LsA_SoeqȡXi<0Ъ|oT2#H$BOv'5kW. }9,"i=x ]oH$%>Wk,Da 5p ] Oȧbz#m%>VqϪLH=$˪IPX)e{KtfԖ ,)"1تFm pD >HixcJW4 MPbPEI}hKYϭ9U5;"^7Vbŋ(Gh6 ^<Z{z|W;"- ]TynYgg@9P|zn lkU9". ${R"com&fI2gfa. TY ]rT@{GY|z' r1Y,,抜4̡ 'f5(x=`+Kx(aO4ov|t6oo]jeKוv]&h.׋ \L.O^FZ+po?xtMa (;E#-!FHL̃|U"x?-yAq7< 0ت|ա"43tLA0}FΦ<Zߍ,٭GkAU @`8?`58ie윙A}V6þ͗q*,9`sӃ4~t݃ q45pQ; YtC/cyŔ/^"Mfe?t$ {s'Mw`SpfQum?lMJk } hvpb$t5dG-.⩛,\Br/^)|s8X;Քrߺl]S%/aݗشaAi*H9a.?> 3u2et"[UgXAug9=pōM.v+N} )m;}! >(EGp Dd#9k:/H4sJ!S68ho}MٟksxЖcgU0v17wUInsY-J6CkLE`'9}NiJy_OP 9G|b m4PA)61@;W<Ù{AZ]:!lB<gȤPLi]mB~'.6b2w%cgWE\VD潿()I ) 5gs,.jߎ?<\i`?`|z|e)stMlO&䆤\fbNQ ĖI)]uDr xRv锛$܍Y鿆F[ދc:L>܅|m5{1fi)LΚ‰`%BW m9Γ؉)E2 ǂbɆk$NKKն]dhBI>p3-O vaazFkLR_,J%uC ]x%ad~_A|5>7IfO#G})懷PD`vw!i|6xl=O*xBa!0%x:.)߾=}oHHO*UF5i Sc-!(gO=1w7oNEr/n1?I%Uͯ% (FA#KKR<#r\4 3Oy2W/p5Ymd"v`SraXiDlH ]K:^4L=ZA/3+1\ȃ?F uayiNEK@Vk뽄g?~Jx<[}9sXۥ3@S fݟ붆*;s!`j(D+6ȟ)ƼB>*үTo+#QDS=X2^\,d|)4``֭)] $_20VD$:t=Q1kXMw[dq͵ǒN (MdI3'M:lobH=c dՍta*z70 bZ W5/{B 2Q'}h-yB0T̎ 1cN +nN#n> cӦlOt3;)B:2VC7cXu9m6Θϐ N3sy6-a~J0fAٍ46A *|8f.R>,O6k{C---t%8uW`s;%q1gȌL'yBCyd;"Q|?*Oދ@Hr诉w*s_Z5FkhR@Oxs#еdfiYL}vAEnH"KפvwfHOjzOhn,e%8:y}|/ {55v?xpT.`XKm͔)(Ҟ!PLoWhFG }Bb'+l 4;'LECl ]M2". 0[$E EDN W)m/?imǘVRyȆ<۷[4:},do=6?8F"$o# >_ȋ6̑OZǿW~.g`&E;4Fƾܵ.]eGR:+e==S4nG~zǹIoF(Xv>v]jf} ,RܼQa-*>nY<f ?-Ef;6ԅ{VXݲ@7~+$=p\GP^u;'EA8m% \,Rt,S9n'1Gl'ew;[(InE?ad o53mߢ`}MT_jK[*6u_&ܓv}w\0̉5fJ Cӣ|E9"qNq,V1WQqK >geڪ놥Wz<[KRi'd'4LV7=rx!v .ߙVyLOm5GA |JVz_Tpg@Q^ugBe2L.= c$%v_+CZ6|tݔE(uQ꓍nm/yĸ[skzK_;>(R;MST,7Q}>}9I( im,LD{t1 eΪUV*r7Cs(h{Z+~h͍g19 >C# S[2i9@VrV@e5`jtDZRb&1t~t-aW@@n:~C ,^}0gݣ3 )=)^D3DzUDkrmG:s' 1Q|cz8Qs'VP$p%No,]j.6SbM¬jNdl+uiW{m\[lnҽEyq@2JnL|O:/P? 2۵-q9?( }SÉO],fbps O{M)FI<)Ɋ6fzQ7DzuEaTێtIOS#8Mҍs'߀œ| nÝ5ٺ7Gݼ/}*٥iזI_ZVg'r fƹKK*f}aTá»# cff7DAh3#O#j2w5 d % j@1D.Ѳv Pg f1;>:[a>E:șUB7ܕd]\]2 G9($ sd oj0L77O6F];3t3ǿ-DƱbr}|U"N%,C1D9 =ѣ 9kTXjdtn}ɿ  n_6g㥵>+{#\lpJh nY3U , ^Q~OjF>D<~0lN{xy#:lG(6+oLt9`Fx |h2C2fѸ=vjk3iesGөb-z{<}}]$Q4\Oia/K5(sz.e^Ƀ-ܽ*0QCu,b܅H!eFPL=bGPh8yBΖ{`>;ep&^:J;|{eX#Zg. PI y]axd4:{ T1JEL&j -jrS1[9%LPC*}kxvz&FQxq swND7{U tOᗠcQ?zЗZ VU!MNgY,:|k ɛo_:TK\rԟY吵thOcv|>Zk-_=m.nhc`수mMޕH)syc0aCZS*J!圞 2L=,ݠWHh/N;+t8X$"ۻpwip輎n6LqC"z^XmD`. O=%MAr (* cj-Ji[UszNP䍳O_4bꎃ% \JJKC[FiH!R1V. !z"+0rjrTB~w0_ylZz? |`5LJn3  @Uvs#(GE _ YN0a%,8K5Z;vzֵЋuفg(yW؍DW{DXZ,!qrzm[F[Yy̸,*Wc^/_(ЋBU*&{T3f7~V- >Z#`k?fls1^ZUSWĬ0) 55"yHn !Y'TVe_4B]D,Dz'ZoSPo@㕹U7[P|ȵZ^߅KcyT4N)ȵ(Rl7eeGѺ)iULD9 ;)KWU}؝^dҡ}t`aP[)nt«ݢ06h7` {Jm|2q̅ c=&fq1d.!@X)s8i@o̓牪ҚCP }*8&GC  !?OxG,ZqEsg- ]%.JnOD{i1mܴPS3T14krs!]F0h.c (vҩEaY9hg0yaO <8MvKcu~d;?~wWRT? qS^oVfu X tIB&:__m'Z^n2NE|mYA%1'SEswaUXีarIl0JB m%opnelWO<1X:_L-[FD[l_phdsv,HRSQ8-2 /悝v.ӓV%|_19eQS즩*i]$w &;a- ø*E!$vIGȠMNCʑ^^jVUt㭨ϲx,15dc}E$:S CleEe=R"g^ž̽[(&1}5W ]\^ כRBe G*oVC{K t@ȡEMͽbsIw~ҥd됧o49ޤή*ބ|(+qKu,S/ ĭWڔJSX&7HC ^uGCb/y<ْ?@$? 4TkB<@ecbOMX{bKҚ\;O^l"0),1Q;Еi>߭Έ쒒>nl_.0ߜbe l6W6m%#7Ih~c:vR΁hAs#fM4;_.)lfJ;Şqem7 w ԉF̳Ji(3ye#W_lEF!!Q#(}2P޴g%bjn S Y3TM($NOgKLeCvׂ+w<Q!8)PreSdη\VBrloєKZ5[We+^QfNq\e)5u=>m9z#Qc Z&paHWZ5Z ;yIJo])c=img*&Z kҾ!tߟ'=i NE o.޵̮S`:a)CA-qe~\]ÈK BȞjcνiTKcC]w}Fդ 16j ,ңjxCSyOZIOD2Z y5uGCy: R.U>_ӳvaN|).MEy@E[R6'z7Ԯ1<;q~_VdwY*63[7도 DbV(A"IzW?M$'D';^^-d] x5h'A*xY D&bbج\Vw4@ڌ|qB6BeXR #RަPINmW m&)[{|x۔HM]3k×y3pO[Q= hʰ)eC>݉˰)]ܷvYR1{ϰop`n,dßJmPlg"EZ J |$) kCRC) >Ո ~ln.ɼ$~JZebA b:a'&F'D#)BofwFH38YNpŀ&sE F^6K0a^oBB`?2 _Nǝ9bJY2g;I&V=K&}}38{"0]WE_0fy^b]eBQ8jDKiy$cc{8!a k]b͍?] \JCV,0És6H])a%P? H)fT9쉘t%ӐW=pcTPbA5Fjbމ =x&jC%tk{nloo?y/9j1##}{h 8LmJް%cƸmtqmӡH=sU||?6O:68{Lf뽻3!S#9)~'_e^]YK5ә|zY&ԏ%2pܚi 64H~Prv/:)_nn0@on4‡X;Tܢ_̥qfΜ9.qAy 2*b[/TPd@'_a`2ڳP+ɥo"֙.頒K6Z'`=1XO$Ze;+q5z&|=JMG9-rLvL/UEX歘K` 5I2Q*x-u ZjHIKr 2fte@Q#C6FZBRiUՑwҵM#R9eB֑u5S1N$" `}/kRNI0viUZi|TN}[@_6gTU\r'^SC5g&$. !J;UM0wHҺ|Fw쌇 DQuf .fzp6l9GQ7K'IG))j1 bqiw9BfNk(0P;M˒綇K$o6ʢlj$JJ:5fӈ} jP܈sNbyjadz=&3Pq~:tǀ?!ODxQgqS+ (υp!]^'r@*?UzYiO/w2DaY*),xA&ҧ۪\8.wF`C?&ETMk q! 5=J^b@sA/3\X~ڃ J>H20Z8ZWuie] ;% I{i9E&X+/ `AbG29ī!/) tr1s0?&>D jPh#l#q y_i-DI3a 1C36| 9juNkNtBb 6:G{o:]7A |5X;'==!#0sPV*a.*6Ko"m^=\_tqc޲1HtIL6`AHś@ruwkb&Bh{G ~-bL=bͪꄍ?Cᬃ~.{hǼaJ~&{%q;De\Iwu-Zh?bzIJ u&֚R/#"{ZB w]\qT5<6NrJK~RrOl!;P5DJ-ܬ,V"SFjϑelk673yB Բ jx 65\rTC(G iYzx +NIt~!@ q! k.]`,6l-qT/xc>=(4<׶ɺ^%iscs[lAm6M|aC{ #ZtrBv}H>Ƙ2<#`Yg 9\M$3'"RY&EeΩg"D''4Һ2T b `-)h^UD:.>) d呃XpZ.Ej" w|Pry9D; ^)w*A4DkF=KeL2,;\d׳q:Zpad EE!:3]|kdU)炧6 E<B=2+F4+J ߪ@o旀Y&F* \hXKa7Qֿ;sk\{ ]eTŸA}ƀ|8qbΰGbб$/dTKTs_ͨXTd7q![B夭1̼'꓌jN LS'H]ĢP+lЅߩ(+8I /V5hy(t^: !E _O b,r,2r(a29kem99ՀV .Zl*A'qo1#Dz{ .E_-v ˇI맟ΣzMTSu?݀1O k Drw;Wy 8ƛxN%~NY7MZʔ3V/rPGy6Zm/oECv^a 35.g"Jh ks5(5=o!ڢܫjce"NPp> ecI "P-O"ll\9Xʆ¬9Jh჊ϕX+V,h5 T=#FjDP?O&BA҉cyׁg%q UZͭﰣU"݊Mdk$7SKbDk½$P#)żzg趉FmaY^ Ȝm@* ^vB‹#'Iํnۖel[c=@tQi"KLVO( i@tH {]]z[ڙGc}'qXB㹼~!hc:H}! aFuƈ:/4.[mGy>zpZ4z>uarZcBϣ8"@:>c[tI(1ƝF_Ɉ{t#g6([xVJ 4l 89! %෽sm&Qd*ȗ D`}6ܚ9L1@j N3l[s $@E Ms F5,x9r}/; ;8ўckyJ[TQwEђ[szayrVs* %hZjF1.T,$,+!uz|zb%c=sЪPA%[ӻn |5gN!n炙 5ԈC[Ƕa8YYLqf0;|_I^JF Zc{'3ز 2#o[NH=:иH a1u eGs4bdJCV4=FHd-%m0zG)8@]?rwkz N ΢~@ҷ:3v@Z 1K.LAV@'0LQ3I4x7hÊUCoחIL{P-֭qv O7bޕI3'/;'pҁ>=k8; fs':0ctPA'HB~q{/0{}2xuDjNaY^^->~wu.=?{yHX))prԈFաH1Pe9ė*Z, Zfic-rg+At %M?(9{КHbWR&Bz=فhAcjjq"TUWg"%-t4TJ ]H0vlnRyF3Z^H*@kg1%fGN$^$W ą?CM@l^W%BhM,&"dBs] xSg"+T@6Hz(=/0ƵgFz&Z um߹I5xK;|ulo9ֺc ruH%Z2/ r9†2i-"vD&y< Hz^\lnv>ų1 ic2fty52:}u$? vT|XkFLRn^ ɤZ*o>*m*CK@1Nt,QM4R<89Q]uU~V&׌0A1R5Į.k8țCsԆSsgbU:DXXԅre6o]!fw.D`Ը7NE}y.LcWmو2烓К$%mys 0En@-f"}(&Xrw(S'LWCxZϡ󄀢 Dx!]²˜Ox$v}`t;j]Ȟ'}kiڢ)c{(dq|}"ˈX_C_ʰGH`]xBijgG;Il94-m+;Q@bD3coiQC/]$'h.%ekh  "iMNEE(9\V!QcZ+W&m6g,4 )vչ٣T >E״ybwIEׂx`u8SkKQP.dGtMneȷ䂼5_K/E0.i[N1}Oq݈[k/6KմOH*˯~pXPGmU ]m`5V7P8'm=S)Ag6CϺia"׸Okk_yNlί=M^Y 0LZC%]`ذ-T< _ ό/ˣ-mÝƦl/9$"fjGµ.᣺JYi*$Lj RNB"6HuW88T؜:J,?ous#7Ty5OYmXK`YX0֕շ 8@f?>6& +(㠈|_ŨAC+O%8m6=XBЙvbuݡ.*$ l7(g?;@]PQ`0TrrߡqYAqzl>:V3hgڳ<1o񭪾i 03V7%j EbC Y2m [/|ՑF"e﵋dmEM5gXx+_D_<G0K{] (&p=+mfp~O<+UJ1s/?NieuuB!чSO:~S>lhLΘT+eplk.*oJ|(wo'uKؒKP Hl ,_?LSy/¼yyHۊܬ-_H*w2Yhq+Zr9{gBoQb,# p+Q4plvrP4Kt176 -#SV'sy1(#j)u1 ₵Aw?ۙuCFl顔2<7RL׽bXe$xh ij^V_$+}Uz8Tx_QÔ`'1i_X@䄅K+?Ubja3N_6@qp .Z#kg}#~a (3%v m~`>=7 `7ocS\; uYޯU#,p`؃5^x6n{;9Z9T Ի˾  $V?l<:KA0YlS|cp{*uy`HuԅH=_;߸,| vZ .pA;)vE7 i WV-'icg1HFŴu%AF )WV5b V٧ߓ 0 :x7{[R&ˍ= <&fDeH<[o/}ghfu>kf.Z[v,΂duOllpj^ cu/-obYǞk{\`doPmIܛVkm5|nMz>)k9j\[^0zF{gBQ_;jPyE'djܰD|os sC H6}B~*n[8ɞz@#9%{jq(hAoЉ)JO9p] 瘨cl-g._=46BqlUY!t؝Cށu>Y/+YU.R<]d=_{x9v7SMLytpxɫ_NKiAg R~zd R 'h_ ׯ"晷JO09.A`Cz,U]#eYq_2֗@vKdוI!LPD!D7-a֚t:P'J=FÐs8Պ@̜="}Z}f?ZZM'e$nGR_mV²d= kutW'ztg2_vG1p,gȩ8he=CF?8cr¬bZܭP/w$Q.Ex hy>{h9є aqa|w™wAQ|e \KY6)@\nNrY@6$ain5YQ\U.ڲ\vFr9 lX̌D\.xM_o=AZE\i 7lU/I*2Wb~NiJ\*``X)Xir1=FWZ๚##Dyo Zke? {D ځNb{|-cxe"yB~wvnH)xX`b8*\xMьmyo:ZuY%1~QmM(a++xa򦖁A ̅jMVb>WBcswCucYIK#D}冶Ew/j:mmNh==*?3+wNƶ@BFoQ*zsz-x{Z89U܌s.`M}]b²+}taqҬp]Ը{|Kr~z9E0z+Ki8wP5g1`E}VҽWw*p [vc6VuÃJƧE`{W$hiE5؇5w.1 Cm3j13"SoEVA|xn)г1FB}}~{Bǫ>%s{=zfdĔ5`Boae>}#~͘؈g+~0`xU )D|ZB#i݅@#EBb/8<կۡw?#`Zr E;ߋg_C0( VIbE!73@حAc` TZ(c68]Z]S:h]7D\*癨*pE# /z+Z-f'7KdRg]S#װvU:GM w"n~p.V2j{UF&4.OL)I"n{āe$Sy('͠/WG/R@|Q6MWO2nj/n֏YỀz8]{O{ UyA/4Eѫb3aBRf2$X~4j_叱7B6e=gP'9VhDS``є.mwQɐ! _WMNHO!ݱ,oif,k+/r] ye x"A)ޞ -Qʕ'"ύr6k}Нt78HQsYƮeHm(pzZ2 .]OSZoM3,!~B=~yH9 JPomm K$S^ĂP 1ժXd\D1s]?sN2F7fvog3IH;F0WNHYN#:֡.B[]~Rs"C{UE@Ȫ< 8fK+ :5)O%4]z,uN\_!^U. SrNr'VſԞ@5Fأh̏ڙ!yHJ3, zmDZ?&]@gC]]"õ{yؾ;u^[DW$v.8joKٞ=?]VA/cݔlAUQ]lnڦ"x"M@8@W}9b0վ&ῗY_rH F1:R;M7%ϝH}HZ"+??U~cM5)o{QJ§_c (PU+aF@`r r,mGRYJr x&\t$c?r^h] F ?X{KI\`9|uר5ͪϻ( Gl>܅"aL\ {kPΉ|&F$Vu S\XE?]vz*f"ЀAĝ|ORC0\ 7{Zҡ9x6E 3ȫݯx kn?Y$ #iUw/RY`!-puT7O|? [eDqQ%~ӌw޽ G`6 3m"g"ib* Cr yg-Dk]#['fᚌ3PO/(dЏUu /TMblPJH m ڔ~G̪ /κ¨?(vbnDŗdn׌{l<D8[ (_s1j-\OF\$C NA@SAg8z#03;+" XUg #lj`*,Nj9ɻS\JASa`gdQ_VAKtlZxTU\2L`U4voĻ`$:ӳ Q 20Mȟ[$l7 뀬) D, "=L[QٞbCc:t\|n>\i݌cKEh(<@a/RxUd%Rn{ے0!x1Nlw'Y`M­cVSyʌSo MRg"ޜ@bk2%a(M&fbwQ-SNJ\gf٥y97*\QNs$QnL`bDz"_"*moGc橣0.roE!:W f$4w4NpO wG1N7J+@5dSԘƦx8Vf+ޛP f4o$+麵vC|Y{ V6G:-s'#x|?u};QnOh7N9%ByJ b BC*<çܻXX<үu9' o$;xgTjv$I bԱpHEʧ|jy!e6o}Ѽ8W5e)D\Iҋ>ր#KvRST,<(u mhUŊa?"Cz w)=K0)SPֲ R YBL&)oB(~` BMa49f(tZŨڱ(dQkS`Nauе=S2K8a/eYz{x.*-GoaUfv9<~tI&8Ĝ>؀KEbOld~|u\R:e1YXj~9Toib}"d%]!?&LӘ\&=#=w0ovA~Ti;LeF rX2 [VLpρG;Upퟤ+M"^|gGqF5}t[Z&lҀTT 4ȯ9:U\1XImL^!VEbځ4T5_FllD%ٟI%qxis p}̙V0v_N Rz-5V❻ f.11Yߠ|jƄj9*Qs4]$K`pAߘ<;"ʹ; K̬ߣQG| 3kt x{x|4ﺟROfTD z@Mpn i1jiQ rrn ˌڴ$_nz/zTHnyDybg E 6I.ywDz p9(O. fD]l\5vVxs#~ԳǷ\6$H8 %7?&r4uի{8V=Mpp ?  )ztK_ͤ ,_ a edVZʐK쁩R絵]zΒ7Ó(O<.^^Kk;d-So-1qqUUuO!W,6lX[{'x:SR]աX9B,#ax9==h"Si;R{*8Z`EZr/bLj6[עۼr˿ӟ&#ٴL bȆ;:qD2ؔ2o׸E q97%UgR\JO^3=QUrNbAR)Eh~A |W дNyhyO]cޥ& BPF7~| >g0 e)<zmاިR$7$N[\E[*dO!#/@ğşO} R^\es̔o5Q}M ^C% `%ŎqX\P]cgܚyROxA/dIљNƘqŇ^G60[E~aA;3 G;ZzMsv =J/O"N/I\ ~,_|2q63 5y؜ ŧlE,JF9a*IӰ3`&3S<W "^x@|=nô(( ٌpQ_8>Jƥ'>^9zW!'%c:4JkBQR f7qvPjfNQBW($7PG UQ~ ˷%kHBYF.3W$m% X\ 9oU^R~Kz$6ςxtSC*d3XbG↠݂qzgpHGmpi#8`L](Hkz $&0CSZk)svWn`WR!Pf>*JƂV_6$ 濋3H(%z`3Eɧ|b-6rj.<+οF-h1 KOhı/fH&,/|Ƹ05f|/Gn#RE9F28"/Q0$/fň[c7/YuGo<)tÕg i|)QTdͩ1LG \&-lH~XV_۪cl }/1Ϲl7.{jWywu"+E= +JKA>/ Ֆ8.ũbHylDGfzDYx_dsb`f. 5KP+ ^Bm><  h2u 2Rߺa#6|:!4_``s0I#c9oaEʚ7{VK4˖Io>DC0E93{sV膲 2Mڞ鱒]PKŇLN^N7{ls.Qu/#_;LL>L0ՒRa,7E`;uB3-ý%1"?Ē78CLvH&'ETu%9ӄ`{n⟴=0(6ZZ_3D)^q MSB /8%.Oj'Vz9܂ Q2%%Sx=,阠 0'#^z&z(F 4`IruWscqlJz>?&Wt!<.c&Lajm)8|_4a<&UʉSKTm[HjPu[O\b6,QG#:(*w|/-*r0EkF@1%U,o+!~svYr-YXAp<aWzQ#iw u?$#L%NɜEi,F~\V^77^[5#V_13)? {e@.qg99wU?[" D \U%T-{["Ƌb:1 3Zm‘"Ȏ~fƺ-ɝ̔rX~l)zt@ t]\)W]>C{5R#kflMǖ~zICt 'C6 >E:\83N"10a-A06+QUi;XjH 37Jh[G)@ j4"bw\8e4I8c9ؑJpW&A-~괻UJބlSĥO,-~SȪmCYǤǶ,4#e{Ms/G lVd|o*KɅ͑pqcBBjNۚBW m@t9#GZq#*nyu60\/ HBPs K3,ǾѹĻ>zg^ꠋ+&\d--t+TH)Lnks()~#Ɨݹt^T,py .[FaqJ|F-Eu GxҒ RQ$8H;r{@‰:-J!~^Lom DUEudչ 𶚏K_VF: /.J,U9\.w|O1"P'~ebcxF@q&(zi%wiu{ / wE:tkr[>-9G*oIVe>R 4uUjg}D5[DA0߭{o6:aj u7L^cɨE-9l 85ޒ,_'Sb'oΕ;\BCb͠\%$VKm8iقquaRP 'ٙ%~呞oiG7b km^x5uPL{ny">@{(Tb0bw&BdmT|w愝GHu90آcҎ!Q/*/Q`WIK(GJ@SLtͳӥ^PqiUf9 C!rt洚6u6z5\(=/cvV k#俽.e(Ԓ 5PI嫍e09,TTfm8A*&7,hj?:[x)V|=X;YP5ddC?E6`g}B97 @ i}6~*fG>QRDxK  ZV{NU{xlB)3ţj.s_*vO:` SZ[5vou 0\YbxHȃ0߆Wͼa|e#uӇW{'8X8C~u]),K~ 9fq@)J)H+~QP(oHxL%f5PNu0}h#p5lA=t׿Sede-IQaNa& I Bh&_/y9zD->tȂe}sbgGyȧ"DBZGgEM/o[%`,'yBlU4B"Yv'!6gJ] o-Et3UίP=H;4I_+*[<்;ΧvtiE j:/pwLԓ|'wq[PkZ w'G"HV!.ݡš{㻝MDa?h6Ҥڷ(B[D/md$33܍j&$0. zw$ ]Re0Y(LRx'3F8;|oosJԟ?Eú?8'؃^G9ܿi$) CzS>/IHOZɊV0?.WU{=F'Tr^a*Z&Yk1I~+ a%N=||00u^R-E~;Fֺs_Gnh-@C+Va9,ȭґO}MB,A?30(xc_JXG@z忢v nSL< UġwL?.\,s:v׍t,\ii ElrH!'쁕H /ȯ4ęÉAz #|@42e3+?' ߮YV:L\4+&wF ~T :Sf1F}KZpkb;דS=2FZ*yo`s۔fđqP; Q+˄:ݹpIDkz%L3N)΢FPjyi״4@om16%t#W4e!^N4[[n&I>6 0`Ծ6Gj=m *r[; 8Nu]T}bjO….Ð Ⱥ9EiVdq$XW&'fRkw \?[^r׈ZI*w,KT=@OItx(f-‰ݹ*X6-[@(D-U*cyY/ڣg>2*]憑7/Ldsfyni} ~ˎ0*!Xw&RjPƱn^bmq{B@RY7GT|tJ/o#]yv"lgQR rr1bGhgSY`<meGM;snkmFUu ki劉KX k"OѝqzoIE>I~  Q8 w%y m4QHNyeM.=$O#޻y\K η]{.1\>ׇ 녜&uȶ'PXy}SѵDBK]dT C8z/p<8$87hV:^. p$PPC:+c.܅fJ] m 0.RQMd}MŵX&i)"^GQ8 / 9\i',ZF [/H ɻ^f$-5˰B777t %Jk|NuĴ6AwmjC]v-LKV][ Qj 1m77l0s 8!ŲWw #>Yzge.{Z.ij#yLd8 ՒOyW f$jTOeh;e\ÔƤx6yz|fK.IGA9pcǜ"pWNRSԺ,SsXHCha$?q_،7ǨUQ`0ʏ,|I.!roCj+iԜ [r7pÊȥ!4^'4fKN2D 7~r10J:ms2ɺ]X}v)aGjCS~F1n)Ů4_N+u .Fnـ>㝔[w7G@6A](ubE]h4gN<;HUԹL\͍>m1lx-/Zخt=GzOe#w!in$Q. NG}{>U%;R En#Ht !miCӧז|i+LO5J%w;?Wf\ +PuPj" }bT;~ni h~v7۽9^\H1S aK?>Aґ/}G:R @s<:(0[ui&Bh3<9Tcl6WB9ZfHE s(y'YBmX3j@uf`2!oUcѾJO6Xxq^ijMՈd9sHu`\TWL,clDH#o%z/GC# R-[YX@ A]\sjf L"仙<zI__ ډ> kzkd2DD4tG ( n4[^% F467=rI8PD(j+X[ e(d$m U1EY^7'KagPK%$v!iPȯ 4N27PLZz[kRC/Nr[> !iK򳄰aBZց&wI>LUU`#^t[q A:Ot;MJ{8!}Xuvyq }M^FOcIHnb;p6 u1ؗ c O`$8ͥG6j+bii/3{jj ~ؙfqxlQS w b6e黲"p7uBa+!3;H?tAS8hVbuNzPz*mOwT&%';;W1 }vFPgU#%^@VsxJQݴZĹvGr7xpiԹR#\};c>O N֨~Hjp7!ޗƽ!>5Z9Pa hAn(u?C>'I4f0"v|}bSaZs>oCjbzܥjwxHvts8(:4Bt0?5%jTJW; [-?ʦ8IO|3/ ¥sX+^M&WSo\b{;|A  qntzJ$ej#!xF~i 63χ\Lt" }Y%Vy |c%W+E n$m7> Wr*Wj4-( ޹.z |!/Иn#KBnm*m!*oY0ƌ96>jnS3,%y˫˗BݼosԈѿG%JC#]pe&;%eدnFXbиˢ{'MIaifWejwMWj*qV#[oMM6|Wau|V֯oDl-7 ꪙ5#@rHoM)ɀ\Qzbw bnS5tcJ&OGCo3/}~!F oZUAEy@Ob!3jDToz7[ B+v 8EnHa>Oi5ٚ7!g\K£&[0v$\̍01*ϵ.nuQuaR# ,bRRR13DK{#E㋚\D,~3.7t/yeRrhk:m{w:+[b׫aq]T#yLs/޿}.\En 7g3<P/4}[3qJ߀A}f%#XGƺuY0KVk䞟|>^=0Y8Sl|J/7bTiVm-]|_DH/}^¹Óedv,o$.)_U %b^`tۂna> "`JtRsb*}8-T ׽$ޱQ,FIɀ8=HPEV}9s4C@{iV[H^BPvqꬳ1󈐾2ǜEq?(bR>߸f͇wܠ  jHYN*T;3(Dbi'zU&r`{/N8aI﷢nRhd V]Y&1 i0Uh_afJ~ ?i2$cXPPmZ(M/m jf9ԉ]xʰ#A:#p5屰"|m)55lF~%.T,3T(N-I sAx;Z 2ҕ 9vPuy06M"Jؕ%/}w쇩7xF=7[.]%2ã;gchS o+4nD#<Re` ,e*m.ZJ'6ANsxb Ȳ~7F|7x*hϭR/F0-ʲCkӟ|FeIP-Z0ȑeyҳݳKuE;}F0sX:ttg>^휪Htajdmg(nEx(ةCҪKK\gم]xv2(DJhsU^~-oB~ mIK0h:Hy ]/(1Œu?-GE8\dZGy*vS zLˤ(@\}}sr ~w2 \{ `"Xѧ<}}& P&=;IAǛ[r_:P.P_FT;T8}nmIJW^ZʬRބXZy8f v &#^-=kOYu F- K6l9LHӷ΁O8:QљaHژj%,auJr8 \r4`e,k(g sn!l7 sן$#{,yxb1 }SID< cw$oE}2T2s7@.]ɢ <8?&۸n`>IGbc L t@֊t3,xG8CQw'dODՠc7x)GcDc-"2bFl ?:2hhe4Q u!Yx)͌G 0bVg  ;rsBLUZ%RTs[~SA/GkGN@^'\a4aoxQOWjnUryO$[<9.Rt5d/O=NX^vd{lwUf;Q|5m /y",j$\=fur_)E`ۘOÛڸׂ;!;QClgͶ#h=f.hy5cW;LwBLp̍Q$Ŵq84ٗTB.P#+p f],[x3SyY6n#Щp[!s;F)m7*-մRqOlsDkaMZE]ޥ&x5ϭ₍Vth)3_"ܓs 0fHߩž[i~.U҅*d9Ҭ|tK#ϭ: M%F)|upduHV6ypD?,&M0v ]$TBv 9x!M"mo;$wH޷`M;lF/\wԈخ(R6+ 7 HK8_%Rf8 >Ƶ:XZ$5VOK1|6Y~Klw x9cls! PKUJqLmxOneyωTR8R:a鎙Ȅ,{”ǧ/X!U^`֌[ AqL)zֶ;ԸSd 1#j ![ʓ=ܳ1*U).lp;<)i XHjCl\li?.eqٵore&qu'ɺGnBg9'5"ɗpU2ʘ3g<9rT%9: %.k#:>kZ!bxi'<]԰=/ m_ǜҳbV: D 9?8۳I<(}A ]ž#-a)T_*$3ky9Bڢ̈HvY,JD{ſS jh~@vHNP (_ U-OAc)jږ,%ȺS,?3ٛV9B0$( ka" uT(?s-:*Gtx-.u"Ԅ[89m>"+Wb| |Q+$~l3L+󥲵{w} 1PG,WwxD xHRO֤".k1z7Uo骼hOHS H;gq<'Bu">~qQ,Z=}yEo.\, kU_yw\7SP0{F0;~ZT&o:3ߜ)2~/p}.l,D;,A/C4ݡri(cUN-.,%yHJ0Cd~J)Ee({fCCbIjz,lIhǼoGt)㋘ƪ9vC:3TJLOUc@-amIE0B (|a.|(=c ]Pj襦WhdV:LsZ u>1&3Nx 1r R("H\Txa*ztR!dh@PΈ's'A.k^4WbgT1nQi0>Mp[33 rYl: E9NƭG пwp(?=Lߋ}gT1\~+0~9%I2Cv iڮ2cxyAB4!I9FodsGrL`tdUTx7#qKv;fB3|2xS5 @ tŴ{-z,qƆqhCZMI2'&SƽVzP 2|d Buo+^~EiUi-0lKH/ @R5[hLeszUߟ'bFn9 M˶i!' ̔Ƅw_g]n=SE ۥ(r'P| HB4^}*vbᥬ"m]c(pM k/Obt H:,'4 5Ha\I)kJ \Hߐ>J)ڬimDTb/aV&g@dT3<NN \Yվ/Ãq'Aא6"l;zn~s Q]9,vI3cIQ@SX+ȝjzʾߐ96^/z m7Nh"zu[>Hkr?6ZH&ren,|CC{~H`t[Ye~C!]84yL˒\eů( *G\j;ƛrǠ|c4i==ӂʉz~7F67s Lں+]'Cl 4<1=,܇3l_fi1^w(PuZ 0N˴QXܥN1 ye pU@IRPbCJK|eچj8F8g> tr=)1ypppjBFMQKz]B/yëTeC3;սV[>a_@bԠ®B?LA6A߮<26[1$LUi!&Tk%ɥtez:n^ujP4j_Aok5~|yğI#R:1Ax&K LHf,ݹ 宰.cti:V zg8³ >v8tw_k '"![RzM͈Y^+"V#0ϗB%,%V8&ZK&^Zą21T9=_w9:}a_IB+iN1ar Ӄ%X{6W%f ^E);>wD3;=VX<ϩsY•ui~߻#G`diLH{qTq&If}V$!f*{\Pz.v:QmPwq톍6mFr]PD)Rn!Uob%fX\JI gA#E88TI\bBn~{-"nx0aLQfhX1)n\IN"u3vEHBH(0cq‹>}3ηq@S{C57%p+&&HM~|MY;uAIu%{kzR m2]ߓ܁ŠBITSwD_4_ic+ ;m3~uxN%&wM][a?SԞȌ_2|[RzAřij /98ǖ09iq}5aH@=J[WcJTר8ܜydvľ>7Xn¼}vkiZH?ŭi_1٨K9זoNhHs78{ݖT8 &N>a4_$ 0B{#GZXBHۮ0z MN]!^KQ'4M#hx0ƱDdc :$9g&tdPYWCCכ.o3q>WN%b- ^%.\Ĉ7?g|ګRa.n@aPf>aF Y$7]eH# &W`NP"]4Ws-6ٗ3n䰐 6ԼP> n9{1`#P$(;ìzNpIcSS|䊇kI@FAlI8o@-ю&0\2 K %l6rV6s&/ItZQn̓9^leUN!'&^ >&Z&bE3eS1+zUHm%%av,zkNJ IKNU(aѷ(- NWsBLͱt0qBS;(Xi6qx/j/|3~.]EP!w`1p%Jf,uj"\Fd"D߱56_o[%QTpLr-gZg +Z }4֮P펥>=´bݦ}Weoʳn>({F5s/AmD2n"Sioύ=PҟRI&uIT{*hد4G e`FjქrZ8_+(BG 5B07-\jQ׺*ah\ЏBbH8pZYG aTe]9$I~_%#)ͣLRJaQ&w^loa-m7:u _U?y]dgpL9)X>仍m5c-΢0O<&zXup|ҳڏXWvE!ޕaY%0SMTp 5\-8ǧmO"N&0[hǠ1w᷏V!u" U5D5kp<-IxV؝䃤X%{ΈW|R![.jSLSymҖ(^`K9?Óip!3уCWo%1!x(V}^i5bcMҧ't9H}œk,.oǜ/F6.%&5[N7mv\IUtM]?)i_Cl{V!s89=T\'1%洬[13 /I?)S'YsxyKH[ecv^@=6z.!(b[ .]PKdM@MoփOqKޫa ښNC*)SqwpJ̊S-յ[sϜzuqSPzA'`o(Ul\r&}m}ėZ[Ld4WEJbI}'H`mMC;dO&UɫNwTR6墒1!O,|H^%yU*қWA7bJ_TC)4~= gzV Q!nY|t.+ hgIH5m;*!E,Ɋ=(|ꏒgG_/Btt^T# NȰԕZW*Ip F4T\(ycA-dz`5O;r(r"8Ig\ݍ~m|FBhTh,O x cR>şmb[5 .͌6׌}F$׌j^,G഼f7dJ}yG_Oo( yْ[xhm 4)ް-> :xsZgAAGVl]5D╝Np)z)ʫ9$arrS>U)-ĢO_qLO\PB1|)xP6Ŝ͒acc8S_z~{˚|e 4̼8_!zPݰ:߳OxS)(հH =w̄^@ywH:Qnw;\FU5G5_ת|j€fq)'N /Ӷ{M;c_Vp=ͤ`/q8LE%?>©\ Ԣ(#n/G ےW{YL熄YSah[ 73k&( H`7.5WE?%8jE׭/ ftN8alH/X2\&drubQr=S-$jЧhcu[S_/!*U~} Jj HK߯_[hPRЈ7#-ji_]۔tkȊYPO/$kXM8no\$bʬ!Zn'+I8f/ݪ&J.ue&ap u`,u'`7"adf8im k_{*kvȺjZQ6-ȹ;"F:d}WtnΒ}xʖTyB5G $q"*v&,2QF,.j4.XQHb% '[މ=o,4s,2E*gA7REzB 6Ax oib44qRK2WG(8G5`m0`M׈5ׇKր|-n THa)Cf,N#גwO͎&rgQŽգٻ=]Jx*4SȦUzR  l (.8}7ju(@u N(ny+("zyi!-!4W:9,vaEȳuSϏ 9t Ozqm3D>f~C7̬[>ʡA8^ģeb}@~g֎ %$2T--OȦ|]#d[wka) 6%VT/AG~~t+5蟺j0~ )'3R7il0rcn}Uv$lFX0 Ċ}pI2UC| aH QI^!7 emr nI;! ]|]:sR.! 9>1g*G=8FhQcӃtj2^n=82PM鳚ٶJ)F57!3h.Uǿ+;/ٵJ#I^-kuA=lROXp!9n<2 _[(>ERiM)~|feF?ZVH|#qp{ߩ0 -.8ܶ-mkU ,a@iHrs7*xzCjCՃbj[ot9T;[@F1D A uMd.YSD {} 3!ر 9zWmr>Rr.m}y UVJ>- ́ä,T ,[r۹8~f=._/$$æuF(FA5@OcAc7.dI nJe[2]?5tG(6>DlpM?U>︋pp^AvbC7FD#S)hg\+ EU픕.g749t*oš~VDy|AT&jfÞjFOF솯in[3O%.73č~Ϩ &96ӥ9Ԕl]*Hds\YөpR s68U.dqQ١j_$9uPB@W¸C4O๸̃'>ڙ yvgG"d>0",<`B%fa 1Cd0jtw̞1fysL?%3^EvyeTاdQqBk AR-KgZ-GVIlP.l<舓>-Ojʙ0e;n#UUj&r'g"5PgQ3iL.n /9@m\:kJwzh8c+O}zSXf&"!fE5U)lg+ن+>)f@+.ˁ샳ek"[6R L.w=0ҬCI|סEQ?k}#H$"#"tQەW9wE>1~) u=?|kɷtc`v궎s+KIt>I`U=F/0oM [Sk !]z Ѧ%J@< {iGh&k%/#mZ;n7'a?92ֵ_o Vk1T=:d9VГDK%i%J vo.ikV̇`Yp F+s>Lcv(0[GD]õ&>Ed$_WӜ-Aפ hH `A2t>)G\T˵ }2KP= ]%eCQ)LR^GĸpG՛* HdOa]E//muL"z׀|=j:Ai{ B#$$9< ^i2-<ʠo@ ii3AjN}Ѳ6xzՖc.*_o4PvC!0bԯ9$Xn9ަi+iUfq.El9}<)LsN^ {U2.}C?VQUΣeQٵArYJAic!>Y}*d=S/,CM՛yܐaNrElWPk1F[(seM; ̆w-x/VT9 &{ ,e HxB;oz+>c3$ҥ"^Zh/>בRbD1rV kyKDb,i>! 6^bAQۅ+dZ <T8q$f`<ФAi412 Lv {%N4=ŧA+4:s?r}g6_6γorHQGl+HUϛ^` 'ǡT{.W]㼗F+?f娸vZܯ>1+>F؞pTu wB<С ##R~-Z 2` 4t!olON'owGe(am],@pF5`6CPWmK g̸Ӌ|Ǿbi>IBއHzJ݈q23FSh9OMoSJg_Myٴ1.nrɓG5Gl˗5 EXN cj?Wr1 ]g:_IXAiAؓ;1W,3՝T@ C\kzA"W]TTDQhOO@Y& ;eqU-j[ϡӊ ˕v"WjHFi8i|cm Y~hSř=\>`Kwb_k(MSM'1蔬\K ?iRce-NQ4+J>;]H; Ӏ=NXgGƤ* F/ CmpB@䓈SGdlD߀1u45dMj]}npڄuqjEM]yVH%R (W:K#U_H 9R=7~ ? (1o E֒ϒb(X;TAr #iWfiOt?er[SAG1;Ґ؈>TF C׳MQPУ/pRfO<*+9^HSGEaqv{:Pbh ~pmƁ["?Mn-Um`N?ρϡgbjIrT@gȯImIDf"sWe>{@q? 2#r12mCW5)<< ^{kA:VDGN N8NxAYzWª֒%R Mq^<6ȳ/'-fOڡ~LłVYqEGv ~TG|K؅4ܙg ^*ZKr犉,ӟ `V(W#7olhVL-j^y$܇dTz2wlï!m՞7{4N,V#|[3?~ǹ{<Ԣ'Vlթz1c'/H{ҟ~ä瑄 WavFƚxONGE BH47ƍz9o<&^:n(? Ś&a1"eN>1n}VV:Vb./<6GSCQ( w4H٠i\i߶3REy&:XDfζ%'Ough77l,1ws&hiz).KZjWC]L= @1Pole@M_v%G*ſ\giy7+GfѼoԺGC!TMv,UB\KM2}n ;"lM&h6{C”8bt};&q 9:y& P `GmLLHEHMs#;Oz.ЅM2] f9Y>Ďi_\qt $ˣnH-;\A &RXJ[a#YN;A r,'*Lw5lVg!)ļi$m#T=T[S(}B,Q{ 1H;02aw904#%ÃRWYIm+(.sܖpszݙQ6/4CI:]_H[VZx:ęh#A \iR^fpʔ,i*)LzNs yY"X%a "v&b2u_s 2-(I!U ntePȼdg*fx晙;$;_/{gORNát ZsqЬ{M_Dޞ;Un9pOdd?Fu)g~e>kL+W'^sb-N{u:PBQ;W8TBjKу<ʛ?ps=#ò 3eP(,C[q@bF8.VUL}yj Iiw 1ܓ Kyd "m38y+>`Ц] M|'S@ncfN@F&#`BIk4MV Pi m22Yq o2oDRX/ý*Z`a&Iy% B+o}S)M [Y +~-%&Mf)9(72uH'¿/`–P`G"e^@;d^`ȃKqpoc}'vΠVDzK1s3D̬9pؿbYuYs<{ۀvYP,Y!9ple*y`L2,.Щ\<NlLTS;uxSlqz \aSH'/삢=1Lzu8d5C$P)Iv< TO"ݨ$$Zc5UEBpJJtRVl^6[3*I)\HĻo QsL)yCIZVý{v;"lT trBLu( \@]& T{$gK&|f3ۉlIz(FH( oA9n!hP eا+F^LݤiwG .á UV-}OWRX `6,SO'e\J9VaqE+S/cz&TQ<+?dzF ۮ*= WTKH"=S~ꆕ4.ZܮP[`ĴTe8N[uNB;+ #>Vv-Qp 6?? q 8KBk_ٶC+MVץ *uq3¦q\HoYLs[IGLϕw/z/.AUv'Rޣs|`g3**4Vm0_:qjM*6 qd$Si*%" GçθVZK7.%E.4[|G @zyDVr<()ҚOh$^sR^#B0UJ=\8ޗlmoPm7)b̆8 ?Wp15ww"{bV'`V}gH/ҶNF!s.`Z|ôEs2VW|r{=} }6 <96zlܭtp+B%Od6gO^Dž5Ꞧ`Xgt<(={ iH[ T_U-k Bj i+==W@)^b}dgd9o{X\z)LۖZ@A[zHV+ RwX%vz5Z?] F,P&OQhPzNY4a"ˊsw1:ZFk>6.dg^ 8RsԂ,}! f!M>Ԡ j@$}OQbІQvB^\QwgS'7E*FWMo>͂xZr)W auΉp#֎B+ QE`wVg>vs=|n*V$yKBj9pTdr{ _o/kfs>7QTϩMА R4QuPzE1: +LE"au+=&m,)iʷs AJ$~s6ۂmP]@3@N-_%KKJk(lu;syb#'& >0+/T^|QD" PdJ.]xXY ;[GYvmiJֆ_nFE둯P*,e^9B W5B#F lJ7`O7.`zMEy/[amЩzTI3iMȗ:Ј[a N\,='n@e.Twd D|4+ު~e5{b?y1?զzz4ӼpLjHB- To$Ll$3O1t?G%Xۥ,=dx@feɽL}~GjC1ɄJۘ=ըf}YBԂ?;k52"V(뇤s[OrNIni.YNzRV]v1SD؟yn"h s<@;FK reuf I |nGv"HSQEҸbB}yh !+H?- ΛF8.?YR tGa*ŏ V0=ǸYbR +MkٚH&^"zu}߸Q+"W`1*Jhqm_@(goVw:[C(.nN|:j$O ՘It{K:_sF4@pOgd9>D: lUgB=EqR y_+ͬK %4* e =j 9-'K"@& el- ?"%`%z\~6wG%'t ;5w__4Y`K`KV?qx?qpҺc><irfO}Ԋ_ճ] JhxIzޝl/S#eu^sE0LʳjW~VVEAM4D2~,`Nz&ߨsh9z6 n 5 .Jo=1{\'BpfZJ=DX K?^ Od}/?ʩe}G"}ĚbSߥO2JEm*;\`L g79X_e6FP2:[Ux$:6N Ħbt X/HܖvN |n$#QVG:֘z$'m RWKd1ݧX̧Q.Xc$䏙bTU wn?Y:f7/6|*{y +chtƯݣ}p˽Q {CtY|7'š0yzXh]]awn#}b R'ݯE:xc96iDK*IM#-Zտ I,Np֨[%9(uJXL x{MN^-gQ{(ڎYc܎z ̓Ԡa z9*OK8\uZdOH%= &?Q-Xpn9~+Qz {EhsH )T~:#֢,'gkݱY)lG}G nN({;i ?%T+W ~Y;rjBzT(M 27BB .e=X#i]a'6%8\\;|152J;^- s=R{ﴟ[ca8Sw7=:xHBr9&R^ a=jr k6b`pM#1X [z8G]$[T+S\j!~-B ^el_yJmh[^N|!i>>ؠlW>X1AjAM΁["xo5[@p3(]{dC1 ,JPHGӋ)ĢIȓ;SwYu]td1rB ^#K8|jɭ"yo %(_|.Y{mEXʃ=i;iL#Lo=:s5I¦kQu8w?1={yW-.IOVZ Qt {ʥ3#"#mZҟv >ܐ/p&N[(#,8QwA_ }9Ye s^j&"s2 jB6v;w}XʴUi ݤ Ytz5b9BT%Q~̡b>Ľ9/\V7Q Q)Nu 7>%ls -~hp^$%j=%v;_T[^ uӹZo{—wk?6EE+|:;B~;}hLHQ3C|{,>sfATշ&0PW> 3},ٷn)! i_?kfS&S.7Ha>Pf(Zji$|bԧEO_6ԡ ,Ma,u rǭK܋ -ȑUS*+Jgz$Bg/3ڔf7o.< ܜaDaA^%!"W9= P !h?d)\3%g_7G; {~q 9yףzrzP;3ǂ+-oZUs"jWE>V{m%.b90@w I*5 WE1MtN9dM„]T$Jhg߀SMyT84IDS#y,d:&87xn@&о*֎ءOs^!VnOAuh@o+>UgF.JH?-Cn&ۼ̼Ď0(6ퟚ敹^ =SـjM∧R[;z rQ`vy}="bme14>R&"?P !+hPPjorkG[\zy8^x)&|DAJ-uRxVyE}T?`K7 VVBu6fwXՄX"AVo〘 В=fD,i;1d N &;Lr9Tc~,>Qo?QX!> ^0q@TmF̌QNɑAK#`$~C w;ya!4Sꗔ\~S^#%8%-q)}c J:p]%+^f,"$E+X #kO;YK"u??(WAzbKJ"MJ';®˙|CX=C2S$izzl?S+Ƣ߃]r1Qz%:'4ܯG bs5Z!(gjںb[dvh$Р(VQx`tǢa.ty'Z%N\J5U!L> 2En(pmn~ 'J;zh~i[TcUgaK"QCuJ':dbg,7?b#včP!UA k OWiXaMZBtZ.TF/pI:iPG/(aR`]FCgZ#4[B]R pXSJBB$V3ɗh! |ڳߍϋb<0UIwtK`6׽n$ɣ24.sԿy%gޯ4R3k$2~ 7(:!Ikn@,@߃5|0-ׅ<.$3`kG%`ˤ5d'`<[E&]Ah BŜyZa%KkM"eF/Qsnݘhqkϓ1׵HP$Y+l]Q`Ӱ6TQ<_ սnto{K`flvbcAU3n7F#(Fbc֖mۊ3UI\L&ZXa%Y()1!3UF)L]!k e`ʪBS4:.z~:0)CK0Vw~оvZ'ͫ*$9xRg溗E q;/R-9l G'C'!fe70noYY# x+:dUYl Vl: mzN#1v0Ϗ bW=8׿Dz6c=Ĥ eHu@։S{q 5eֵ{ك_%B ~3J.f(ފCTٌWio7&mbnJP`R _}6(=6\c pX =FI}>-dIȮ >\0 B1iG%$ewYKw a[.״ǗR@;v ۆ%a>ٖf66$ԀIFz {XO #VYJ" 7߯ySGc6VlZ^pE֛MWQ=9 C0Fea/̊x5b\^DD0cnu3H[§DMU(X8ԣ& Do$JЈ0uW!ƒTUPs[Nw`sAaA$y Ne P'Ut u7Td1 P?(q$~Tmh{{^5l+/?7ߍ1癓v\Et tWpQ8:=Sߪmsš'}k^92q+\"ud4fބ0Ӵ m P>5g?s]G ƇxFf!*fZ-nmbsg _mG7Y`\aaJ &dj3p1ڸ]aQa/h m YFzVt1EWɴtkd`(X{-5!S<(G3_LǷҦh?MAZdxԧZUv1F./, BռJ뗧4 yFr`=PKr({UOM}2cY8襜 T*-@Kݧ]f\1 #†XkDAY+p]3/Q p|o]]`E93Ay/$2ZL (hWa uNPyҰ8<+ۙL .=c4*qWzf:ZQprG3H2UtE#5a?TFY6I{)Zpr쯫KwXL^s/_m U'VDGh\)˩z)`Sǎ?M I+BrVa57k lpTwE]nd,K>`M#SٳQqGҪ+#' %U܎!T^H0bL~|jݫ-Ȗ[i{6A_O+H*)XK_9l @LM)0`[Yvy 9/37ńFye,c+mC|Z)J!>hsV' `Qd!S!FVfe&-' #lI6B=flJZNݭ`8Ÿ0 E}NlÖt&@>U*ݍt[Z'誅/v,' 5Z2(Z 8UΘ=.*΋^0bku _ @˲ka͉d ю?;}1E~=pk^Ii:ZT2#.F}Q Go$Iz삌b! JTaʸ}I khFJczt^"7U_RAGy6jW  ߶6 k$ Ō9 ՏIR_գC&qR 969f!YjO*KV`3撝fxFr$rW㼎s-5N95@kU[2kRp DI9/dӽP'm~=0c e7l#Kސ̞ɤ{Ne';b~bkO %;e-89BSW$v` hlAxN 14mcG2$;:㺌2-&}zf7&g `P:Z-wd4gZ"-Ϣ˷s?ac`[mH*)k~^olgDn>HЄI5̈ QBhnqg)wuTk-j;nԾAEn6x#HnO5.f 52ˇvkJ $z'$'\'ǿ/ݚT8lm:4 GO;i7Bun|;!'xfb)=7 g{"ѯ;V>- .g1zWwO˥DTAeiӹኩ1`,sw4],LcSUE VOT{ƹ!piipRsy1&%>>b')/THlٵyrDd}'~Wq%ăbcz w]P_Oh8䏂^ fs_LUd\Z*U-pFNIr c4.|_"bq)[S6wOD7jӰ0~WlIbΡf(yv3>8BY0~쭑ZmZ kKU,ޯl\\8v8}eŏfV>OooӔwi%(0,sa M >w8g(.ϛq -ki@q,Ĝlop~1 nEdFp=ݳ`(^!+_G QWZVg[GR.Lc%eK/A>S&b!cl8Oh#V.<*`ͷ>{\uwIF NC9'LF6BNW1&_׫,?n4iN_}IERԋ H< ZQբG0z2kپaZ|IлK@xa88"KuD2Μ$$H*8t7M̺RA+dR@yz(-]xkC^8Xl_Si&ՙsYHmunJl'-!+ڈH'gPͱczhmV5 |CFn-KqfO:uPt߾RV=Y­qAQ[7`73:Ṧg0cݞ ڛ%+zAH]es"ᙐawCnҀfV=KCS_HlTzcN%t_7:@.qUZBRu,үwN^܉HxkdQnnL1p0P&B[akv2"yjhe$Jx~|3/` ')MOL h{9} XaN-{@pohX $#\eڽ_zm_-an[d G^G/aPђ;]W8ΧPfq~.^=5gN`ۂ Ɔ[Xf5Ϝl ~0U&CQC|c $@ZFE^8Ad; ~dJb]Ҟh[Q{a;Vʄ*]-!t[ɇK- `NV1])[~Cч:<2n++`zJORZ02vސΓ4"AhEޥgq0֩͘~1*ηT4|]n8Lb;37 )E%| Q`8Nrg`;S`ʛ=7/LEOGB#S$[72T} hܔ:^+N0a`Ҿ ])zݷ4 /~ .<01*kyv^~TPVpYBCaGiO ~>}G݂#S :sq0V ܨSФ;=rSV FNJJm~&s4R{ mֵ5|i}ߥ&بzWH_־R˜j:v -Hf6zxs<&`2ɝUeh1_}#Z4<+p:}IO˟G)@#M@rYt17K5(ѬK9Us:`&m#?vXJ/+mg~!竈1]KV EۇWw!Nnk>ʭ,܍BsDl)i%{ V4n'zOTB]!M#M#IL&BܵAIfhi' ܊G-鳟gvKșs6Ng-LZ轓P4sYկp2f5`g4~VoBZq&|Of`X 3g?\g,LgãE)o_drӈyvVOu9"G`ZWƽ!o~q)@P ]woRZ47r@ֽUyE:>q>(]Ylz9 ; }8+Kb]S>/=Ag$GhӝXkxWI|3ô%L]**c@d8n災)yKL9]9$tA}s \:s vOeAhF1<6%Ȍ世(#k:|Mw^,sd.'[, ioǮꅫ/[U["N-~NAXC>o2hj'EV,+Qj/DՃU2ҁJ^POIn6dbf'2S:u|otFEDnUCRFR3 d"`-f@.f Wܮ%1uav&D^eWCVȹl*9l_.-!H"aߑƕrs|'R>ja>"ooElgQٍ䓯xSYkYy2Q,-iVG~MZъ QOoɥu4K- lg4s1ؚ1/y/~Gh]tzO3Eq:acE<`ȫקW/` -m3.TjV Ň:32ǮeWwA(9^;0ɍ[Ήlxpթaԓ`5um" [G*@.͈ v_ Eϔ__@iCWpঽfC+[իpݳ?y u' րŘJm7Sc_@龓C AD?(NrX)'܈{1tLJco疬PMƎ@M:[mA1#J:"U6/´>8[ޠB$OD *W70lSF~ *>C?JdLG'p^RbhxR.)MЦ+VyE;0*|FkD絸8k h^@E]<:B#g _3|ɯ b8aaئ=a2HǾ*PipHr⩅ޱM,St#gTGTVfz@0]H)4n{#rlᒀ6(/FjYL/@^/)-2 {Em\_1L9h+b"{e?UNee +u'=_5E3+".3A{RtVNo$3xE6O|F&(_ƶ]`Ç娅6ndPdcφ pCm@_EL׼̵4qH/يLܪlhwh&T,4P9^s; ٴZfIg=Nw+W4ݨH\Y 8S]~9Q_ijM-l1ՒwIq/b:ؑ/ O aG:uҿDA7lO,iS.znr] 0],ϓH2`^ |BJO15"DLSHwlwK+Z"aL2$ӣ1:Ktu7cZ+ hhyY64:Mxsҳ ޚ}e)e/s[[ #7AGs>zCb'dn.J~8/u@Â!U ]堸ZʽvN2MԹ0WŷF<Du|ZtZ:1aEB%s#c+=D^o'J{W,x93l?8H֤穑MrBEHP?Fw/~kY]`^ $'7;~\C/F< 6>m զ+j[}8*PC܌_!7>!5/0z p>9F?*Wuz+OZ}a@ mnDLY_5D? gqs3vCAvI؜Feen,7{E+Xo7HmRݴ}nj=\K/Ҹ PhiNtϐ)O tZ t^br7UtWo 9 -{SXI!U'Ol0[%ȸ9bBt É Cj<.w^s9KuB|>/㝡BؒW=QۡA0˝ׅ#M']WԊWiԂ zlݮ-\PĤw(qhQX R/aƦ8cmp~jm5l%MR Z BtL:ѿWX#w $dXtvƵ&l[tbv2k=|ՏlAcN8&`zUWߑO .a.{B{u!վrgg=(ۊ4ؗR!GI[+I\|H_8+%ԉhB7emZŰ'PhK\ it2q!J ebNڽ wTU r.o=6ґphi$cy]u(д6V pF|`(厖W:I2YRx&S֏DE1˟jJ 'fi*ӷf)U/(͹ajLkfO됂56PJ%u&lP@^R=OjͯF$|aaڼhbcyڇVZ굊խaKp| A<󘢺iȗ .FheF@ UꫴQsεɭҪA?&p' 'V7m6@NDw; NRR_H7Qcp}RZ/ʓ!BVL&Y/%ڴ7,nDݫ5 ׷Τ_B#0|j0IFܰ埾60Pl-sxۺoi$ŕPTQ1F`nZדyRK|zyC~!vA+51;4!^ ) XZ7WɩY  xkh]wrU(q/1<2"ûG7! @`-Z񊐃vN*Z*->@D,|yYiC7 P)18DHUIGSE˻@uօsH7 WDOi_n 2vXdW!+pΞwq6 h-irؓ'(z{je*(CsqIN/7b3?~Dw.tzЏR^yu.7suc=3ߤBYJn\^< Ds045T^`QR1Aj6k/9AgW>k |ViAy2`yӊq̎$eM$鎇&(-QUVe t<j:W%CdD rK.d'pݵ$Åh nxk]FtdD.j";}@k]A?nh 2<6bF5$ehRN=2.{6.8}=, ²x)K5%8u{6" Lk[d`TtweGHӀ/1dWN˃LM;C6J\e xt~FܼohjZ)؁ATie)OWfFbYiܻ\ }&|rw5n W=!@ r>$P1߳mLDJ"N`ϔZDnMˉ!>]6s$Z.!=~|w5DH0pv7M.9AQ<Â"tTfMg8+MbT[!CzYZ[F®1vl#:&F#`YђW `]DtW%iP09g 1 p;eȫ@'ގE1Gip^zkC8rjuiѳ(7 SNspGS;b]wH=1+{5q6ul0I,f&G1Q:^r]f6%[d4jfح@|9*حY:1 8.5xt2p/,dEۚ'c{s8v|X#;Wv`%%\rTV:bav^-DfVf[%ߒi$to34ͽ ewf9WM=< T@(}U|1xq7(@szl+Z;r ј7MSщ,Ԣsڟ|̛AYiy Ǩ>D}c o 5"vlÛ5d. a2 YEV@h|0sO\%^)#x.7~<6@Z pEU^}ɸ3lki!.-xExݾ  e-ZN|>\ ]vԊYDp؎'2cq,~mm`( {+I,2$ W^S뮥5%fr"YͮԈ;{0=1, ;#d&J ;'oZQ̛Nn)e Jζ u4I[Mj#F̟8i#DZW_*xGsA/h- 󿜉IUzG{$N[vN Ie 99>`6Vz Zɨ٘_˧@r``(u1pt+A(dmʧ4б] :mfTeMDƍ^o{f!c` g%-uOM.#4L uS u˞HgC67 7 za?@&ֽ>t@{=|ʼ9.FCڐ %=Ʃ?Q3QQg28tz^KM(ȖƄE؃raA}ɔALv*{;,ѧMq C7XWh+~eZ5'2Kδ\L\8âM (ܦO88 g+aFl0c7B g]e‡eD#t7թ/_foxy_lΰß$!B6[~D+;pl ǍkJ9D7,MuM>RAq-/BExStDf&+ :\j&Ч Q¾5Vp0|P-{$'72,#NCTx 8_?3@.QsG p8^p81=7nO`mzV+rrˤAo+_.>¡zfFȃ@6G$N6W:ی{+RgkQo1w8Rvfns >Jd~>\ K餣x#;}#Ph?>-O>]/ՓT,^~yn.UYċc7dLe#FlYNVuqu{|.h}/!DJ F)J":/|lIX@[GF>*Nq H-bVb 3:nuÔSJ+@_Pan-x *iI@:I HrE@:~ݲ4#{9t5f":din.;0ǟ,q(+=`Nwk&3oTR97D?c|cUދ}j,kTk ؠD))tg?<< CV)2]{;39LR1.:YPq-( OB~!tUf3Ig.v2f>m!02u~O1a4xN0lz{ٽa× řDc!z}oKx5|J~KfzOٕ ];]n/8(z-[j? AMC2ߗ7%mEOWK!)ʹ} ߒq<,c.No0}7U-KF>Io`c3̘@q_.Ƨe oiW'eLH75_xz:B] r~b&%n;e'z>r>Y(Q*k4mdl?.g\k $ #pK|N[!72jݠ֭cT8p" d.Pbl;2' !E<\e3t#7ʣph`wG9lDZŌ*,Ѫ@,)D_ u&8@)] y)f^Ƣ*6^.Aޏbpn, #țKrJxFF^2g\x'« 'vcS=%Gp *&*s /NԳ>~Hg}ݞkͭG<ǁ9;5L䍙rBʠ\s\KիɑA*(HE|Nr8.zE̱rX+84U>m,]6ZCΐ;7mxf>tE YTy^, fas}xMO鴟6xRDIOEzf| 9k\\\4 e)W7tWa(<ڎ}0P߶!YK@!3FBd^'B~1 z{\<>I,3)怔 S*ܵr;:Sd5K5,5(C.ЎmYR_iAӏ(9|L}3OЛ vx+cӐs*l,S;z7vFqzd(8>dWZiES=+hc㪎;%r!GxR@FnlyV 70N0PȖgT,sF ̍X3"pFb4ZyG1*`G Oo=^I1ֶ]y A֬Bf]֓~2![yk{ں;;o<="en|Rf(P%|]uDd_aќR#- )e krz@8f1|? |~JaB:P>"`WeO-r܌0tt{Lk .A-@=6.SИ5Z~K?O{Ljpuob҃ *R8s(G˰]ndm.InDo!#;DspN K`W%~ Q֭<)V;+|O },}V 9*Ǥ9**Z@ FyȧCw(f !7}1xGQÓv X:)e&D4P ]D_͋=|"~!3E[ɛv]jpx~ ubr8[f"!BVEVLBC;3y6:[:x8{DؚpC a~< @5#x7}ZeYf= &,#?'4+J[g_>IܢWG1Qde!LeruK5~;=~%⤞N^roӳvyTޠQS)йz * 1:ѐ0Szm!-it5S}f~388) nvpjj&RGi)xw?i,˵3~yS`uϭUɶsbbvn-_ND@= OndmAތ4⟻~EK"YR&*jpMLfgb}+\J_u{i@S`q yыn[<Fu\d7Ɔ.¿;v-`=!F: Z Z)867',h/R֯OV(}]n9|tizݓg _3ZdؖRA҃8wcf#wU5EJgqf [m2b-v6KplܿͶ?w2xN»7 ~g#(m8\ܒw}xy0"!.kL}$uD?XS"9 JE6ojD&$EOV)G%67Eu=~ΛS]ؕ-8C^2"bH(;%&?(tN?r@i Ɍ @#2_G|w5:?4cE"Y5Nn.u*˽C8٫'zaC?Bo(J_*AAzOKXbhn͏F-3}%,TG04=;'r~G~Nhʝ @[px֕LxSI_0}BQĬK<ẗf69hX,Q'P.*!DRƉL}%X*fy8+س<%="$]xr=G3bK&( 9Jd%Oy>'Rxz [ R 4yƱ;u-P(x2 k,6-cgee$0wN2$7m=ӥBnJiՈڼ@`j™.dC{IƅJ- O΢697ZWn[9߹$1WIJ ߂hϡI.hhEȬͪvLfDjs걈4R3rđZ%&єF9yWT'A<-_B .\|U' u2.S[,n_<t$4Aq?\&3>+a\SUU4kE^NAIZŧ>_^g\,`Δh)RdZsBTbFt9,"h jK Ej˒:g/u ]_o%%/yE{Kw#Fp1HU׃4#c] ^eAR͓i$t1CFogs:O5O8y9M.BuIdUxړ`IOf_rcgAJBCiIŷk]W_)WlRֺ@}b}XM'&6B*NFbًcfyH[_+Z\VS&t\r} aB{WIp(Xr.81TkChFhcˇ Dq~c!w3 oI2fO=qN[Ry^9f-)q]#(ZʜsX2 \ QeU%eM7 k6z%L*D"O΋Tf`Ox&¢b7{I<Ny衩$ǧcߡV# B}9F Qt:vݽyn_?+~ M/gܥ?@Tw=w娆(=߳sG pC%((EETE60/M`|MsPͼk&km2WإHhcHZcي7> t 5Ո6z&FT*ڹwzӀ̞+{f * I:y&yD]ф/(i aNT#}wu 5S ?Fs>  mQv~!p)[3j!)܎`xeߡ'Gyme3CypZxFR!؝?#J3#ݕ&ԺXeg5G/AIóשApp" =^lsF8ۂ˜Xtyma ׿9VPǥsחG80;3,5T2RNT_Aˊ HuKm8E0uaym2ny`6e p A b[!)]5SL Z tsXõ%!\o}_|7 H)j31ȚE;= ,lp'`!g 6_C"2z״]4igOa t2M7'-kE, 'fZ='U_bL(sl'QBxtzvG$*ClXhţ&U;MEN] ζiI|p@Αܼ ҍ}Kmk;>*pq5\\qŅ:^s㕜_ֿ%j2kïDIM~r[:#̌~8`08εʹ#ubrқ| pb6o4jI1>RM5 uDD$_\8tdT#(N#8/_ r'GZC F^I%q?1w;3 2\zgnӥ.vd&wċ5R;ӔPg#p/BM2Eqܺs#KwmBo*L9puԈN '5wǠ[S"z<˞6N1ճN;([eUgkDw˂2HG\?ʝ&eY#pZ3lզdX횉[N[op myvWWvOhW~ZjE1Xxqs%̬s|RɎ;L$nLAzAue¯6qZvu.חZS@9ya!DNndTЅ̣9,k-jͿ&{ !M MJEҒB:6VͺB!%UY6QY=|2?;FCg_-0?E/L`v3L'U׊ ,<}ϣz[ Q)F&LLeT8367lO먜I=avKe/$GQ_idEi[A*>Ɖ(0xv 7,-7 NU2:HjF̯Uj =jS@$,vb#c?9||xIG_@G0,jm)"y]kmƪC#"H*0eOVW;o<{tp+}MfPT\fU +ŭDK%dBBsZvrçuyC%#q0kצ8Q29o^;;w@rlٕ:.X%ӻPu?#1IKi8IiFk}2>s0p|ciXxI֭4ijtҭfyF=CFmEProc@ -ab f`ƽOagtb63ﱄlfU8̾92E@AV: GhdLff^(\kBpR_+pTf|>e}2Bi3o!+|0^@*+8f ḉyM- 멄`sEq@y=H+bвv` ܱʱbq_fӻjAg.*R}DE8n s=}=3J=3#S7$$h^%JF?tv/{QJK~3uxBC̅J 6]*b1XXUfFicH=B=N᾽;YY`I ^b Pc ?jqpM.k&ړ96B?zf(%=SKoК;t6ΙIU{ZH!zAd0fzPUw'ߘ_CĂiwKX R2o7.0Mݨ$ݷɋ뮄B%t#]Ls-{s5&)#/+wiMr:XnM^ܸnbĸ(Z}E}5!ȳ9Qy51xK⢹@ 9M̜0|Uzך*a,= }\z A~x}Iuˇ>)qSc5ԪНb!.r'x`Aɖ^<5α'K?ۣ+}+ELtU$@5 :` !Md㽤S·&z"tJ]M2FR ZVEbhxa OA|f/ĵz159&a?K @|9=TqSCQcNfQEL~ȕx n=GqDC^0I(Rˀԣkij'#¤$^W( ռ/vhBDj{;{)?AsGo=1u41f+(Bh;.)-;C |a䦓sDO{lpIIBb[WFV<-kV4ܰ5w`op+hVX.S$|@6=l1BHzW+jm!ilkTDR3OɰRN g36JFo8*neN/Q|޽M~bQ)eZ& ]iil,p ZiƯ3&MBךtfXBhãFK8wjAȟMSދJ8bi l~=$52,YYi&< eFEh8D۶tpS.Y.ɷఢ ":mKr3"C ymTڊeſ9ڞ/N!yRP)iҾ)sWl2gWӶMpiZ,lƖQGqdd5>氿*B~J{=G\GʗX3XuNfn_N *"B ?~)O{aυU(ѿrSEIZ /8DKWWJC"tQ'G,D LwgoLlGdzMes3|zE?)j3'3򤰌Yj p*x=]8Z 3u)v};`;v2ޅ`fq F%(2qjP@WrbJ4֑>ΰb 5B--T%Wr[?e2LL(0jUh^"ɬ}LKA1YAO 4rH=E{KmGeKB\y横:W-@zK~)RlÑy$eډmt[sq[f3U1/" }Y8 􀾇$0sQn}Um7@XժZcs!Q*WnСzg\ꝛ@/Ucc_kvI-U r R0 e; ⦡ܴ4gcoQiK >i~|q{8OFźH<> UI=eXdn{炄"^Di8\N$ o.~ܝB-*YOILKu{xdjU  Έ諸&]R7U-l[jL,)I{٪]x"yA(@r&hwxsBxh~XSt=>w-40.,e vāi+6K' zGD^ZM"8q҃lEWi>Yc3SQ mj4aq']]}\$e .tnsEvEE+(1No v'e݁2RkB*B}E /sq6գ"Z6ں4kPtłBQ-=`=@R/Ms"hBlg]-lgaBaPKn%Ku4[GA*mV[ jc%-L5"%ZS'r<} ,m]c 8}`>x&tLymIE;vCA 嶒ߙ;53~TƦHhc]5ѱlg6L&J°H|w(=t=ɺؐe9NEhX:СNe!Z '6(3jm?!l ku7OO=nY `'q@ivY†grSNz' 5ŵsvKs]i. *\͝q@ uV!q7i#@CA0P,>f,LZdusTuv& n9eASWm&S(Sq۔tpF\7xMŒb?i{jLpɬhۿ^ƐS"}9J0>Ba,T 'zo]'}eהʡE+2VZľXm75%N/]`|W8H/7 2\P/ I0GAt_TG 6ٕ#*7yD >ӆ"ŞӦE ^T2 j*b^ `Hax!i)bр2!/+xoa2Q@ffMw_x0wRdS?FfrfJ%O/0w9zv dV6zQaum׉&,f>_;+âk|b3m-&u|PPlKz#7 Vg ݸxL^ɮ]1p=[q7Ϟ]-y-][o%u 8t{S)s^RkOǵ[6B'9˸,0@+Dyl`0cUdlytgYHLxqva&ⲠD,efJr>!B-B钺 -?:Lj 7m\|T@8zj ٙ)qUlBl@k|6*rb":b[BC>_-أ&2_b5iHeU&CqV ߤŪ`lK?o熍- 4(CqlҘ$yچh%g)k+@Iµ>O`A(W}X"Ngs iBcif?<ҳ[G!bcn(eDFo2rn o"!|؛ȥ /bG|fHfc"c(SfΦ ^bCZ"&Imvd`c=oEsjx-$}ѝ!nL,;^`\<;Li 4P;N;d's;ѱ&zY Qw,^D4ZU'AyNUѲk"+ډ厓ᦫZ!^hdNt< k~Xdߑ=ϋ3Њa9SRx0Q1t&sìm(kҁ@n~;wY v)PEffVd?r`nx^3#%XA?1rChZ:;v~*v tH9R3N), tK;cSF&R>#<nMjLW~ZM2&ЫNwV.oYb0T!Uj/zw\\Zvr_5L1W/QU\e8*9uË!1p-mP7LpY%"3ng)J& ٗ,i&+\x# ]_%ۡu7k MP$C RQxvp]﷪0:Dt_y3񓾒\l};[;tr>ҽ;AvLjY1S R$>:# , #d(p"~;C{%Tdbmnڌ'VBso$6n("Cn) rzH8٥cDoZƺ˚P{g)cRDGUhRVeX8Q;-dAdm ]m? :Hƒp!5.ABJ Y`[;8KPJEPOuVaݯb[*բ`6lп^gW܎": ͢v4/S~BJ|p&6ٮM%Hvlas2Ky?>Iպ^;Tt,RًmR=AqF 5* &"hN ";~s}zpn7Ϋf.oPٻrZr-ϴ@ IYh21mUrvk/{-V0QrddVtV-`0jӼ+0a5W$iܦBۺh1Owz|ٍE uKJ@ܑKD5Q"w3e72%&HbA)S d׊X!ƼIe6/ƙIGu_-ϒoƝKDp1nﯩpI$`t?ir)Of3zOH/(g6F,mwFZ4@>mӣwqa;XA"c~ݲՈ*V[2a+R8uK;y|+DUf?z|\΅ބ)Iq#;lMweJ?H+$)D |pp 0ÔG "M-*t|SWY*kht_QbS!:Fq1=MV *~h5̳To*5w 1ٟuEє(Ҡe+lX~M $z1קBŨlnB=N9[}LԍԻ?b9o vt%Z"фENX5k#lLk1q3t ȃ` Q,j+9p ZLA9*.s+a1:p+3RSbw(\I:1( C(\E3 cU NsKG@".|ˠUL\3=wH5H'[Q@/Ɂ@Q}KzF$C'Hwzʵ>%Hm?,Xyׂe8eV׫89bWDFhyx*%}N wixRvlفV KXxLU+|Dԫ *a]$SDכr:^=j8f$[pIqB`/g5˰k߼%ߤ^[3& M猝 ӇȼaPFДqY9-&zut^3(G\*B櫎VφE2A!v$h L9D-2Kd?GcI+[U¥G(."^\ps"Q]p*"ֵrU_ɋ/($vğk b.Y0ЇFctX6YD]9}a1ҀZvRGַ2`RTi=nUy3͒?/2( #yV(:Q]/=J w‹,&nKCf::P;(lo _-O ֖^֍h©fy-`S= 0WC],9!nA.1hI cLYЙɴg{جgB4PyYܝ)wXfx{u,h[E0ojNG8MvoVƥp5\_wj#!=V(Y:[1%YN) c.Zƀ6Ȑ `RTz\41LmA0arpwxb&58<5e~+!X<Hp+::nkoRBe,5glDNR}C>VRvGs*+-sFVV*ud*q"\ZrJkGZGddM"}Ճ] \}r 5Du׏+t?KvM o`h)8-ZaKݓ2 \S=n9<5 P_ "hu.7W eؕE¥f N&؀ SFav*,ya hjPG|Z+"lck;"vZJQEVu.{6 :wy*sI&fs4*pڔV"hۓ)<4%^w)el1aa }{P(q5CSVV+s*'TcʹCH@EGdٙ8pXQ$O9 E^[eR=N )P׌vl;:Y<[*((;II9"uÿp'vVh.Ks\lTqk˳?a)r"ᡸqvt蝱^%¤ @EsSИ*l5`hP.Y"ե$X4KQM)z2wȢAa Hy5;Nno'gpt(R)8i<~ڋK\E>N*ct'nFjo]RZ|`ߊqPpsw\mf"ADꕰs1PxV_p\oS%d|_K@@d/_2 ɖpLR-hf/&#te OlzRD>)-m%dA6KוbIԅ"=TaGfwljk_H%zS_5Ǚo-X)K+r&<2ۧ,%c2[/P.l֯AܾFwPbd"CrRoPJYX{3 .+5T)=p,{86bz|oJ`?{&ܕPB11p/w`{D11~܈q'_ϼ-5ѠjҾa8&BQ pQZXG ,Z q`A%T=A&?v,;/cǡV\YبeAɏXi0]:>=4N,a ?ʼ=*Ӏ٨A˫YOxdҀxܫ;BҸ󔬂'T9T:&P]Z "k4+ZiC9\{莭k*G|p`,SBBs[D1Ҧa]W )u)+lg|)BT`hpw b+shffE=\6FƔ:#Z9Q3H.SԵ9l5-ğ0lfCC&5Y9 |$X)SbW¡y!kֺJstNyJ"OW[-8oW !F)"*%IH}PJ<(]k0]>էVШ؅7(O[QWYDb>,ǚ"473H0TZυ,BU0|Y

ДB!=#`tq$9G:SvF{IJ1I7euI9(յ+pd86A/~cʻ-ֹD`iRbj4Bg\&|&:Umj&0t\#;$`UTWq5p-49,.b8`XnI+]抔~bZLFbH~1PI~=kOnQ׮QuO7t߽FEH{a`vP:7z~nft|dCvW3&]'_ Z?!Q(l0>I}0t,Y†OZh|^D$em\ TЮZy)3r\|/D9f}I(g4}3Ts P6sDM}v-}hp"rvfʬ+'.^ae\6 BabVaHj#qdFol 7S$]=%q܉łElx  pWN GنKZxxd1Fg܅s =Nʭ|TiJ Zlf;P =rril) w&X1mc^\L46jaXz´\Sh1"(AzW^j@:\mr!3G~8| خTmQp7iHV`?F"=?f unѝ (Ig}ײvH[m i]F}N62]Y*b/ѪxJn=WZ]&'ṐB\Z$_GˌW0adYl/qgZ=^M[hkk34'hǞ4Enú3S?p+Us̿eC0"(T2d{oE_ 㒮QبTU7 BOz-oYz yV,ڱFG2!L4wrUqy<姫 2>K w,/%:dy@X2uB" Sl;,ȿw!/c˕Ta!3&9k"ŧ7 g2֍K\+8pFLa# +㊭b$ů6DWvߦRxfv|m "X@&ۘ?H%/]Bj2M%/Cُᨮ G|E+21?`ٕZ%sPqq<ϒ#2z;Vl[U}GZ-[mz#Ry0)fq6\)+s3Fpvr@&9glN{GJ470CjhoA&.~ 'PS+1j\ϫ.t|έ:m]fi'n97P^ya b ps\EQbb2CPLWlg5:?ܕdF;A fo6m#nfztǧg<:XA_ڲ*"0V;֨CLI]Z;݀NF-W]@ {oN φ܋/u*I;h#i(g"0.X3CLJt{ 쮙 MBrnozDgJTyƝW]@h@^;'F؉@VB0mqm"EFK:U̻Izxf w`dh\(<I<۸Pg &vxˢe~_-Z2,r7Wx DAr$-~@V7h=,n`ᷤ2#uM l-0 bh sؼڔtg3=o|u;~V@,k^};zsfݬ-]xQ~S&kۻ" urRѼ_Ӏ}-Կ\$d XK{FK %< }AZ+]F~)bU3Sx݇`{MmG-OCcf'Oi~+.O2lY=4 5g9r*`&MR,s״K&AR_縎-g[ua1.(զN;r FRIǍLE3F]CLˁ_~GӉ +z"ZAAN߯]&XqP xL%jXz:H$_l 6gbmwhx4&"`#;{9;3BZqcpJ 46Ӯ"\)ZC柈],$ːAnk?[J:ͼ [*BPB)OX\B~e|śo6Mwzz=G/s&N4,Xzl[ni ֯>iŌYU B$066$x^âSze{bM MfCUz餐x'zp&n ǞH+ܷk7Y ${b8<חA-,-ei2}s&J#ڱk>(SԌնӼwye _͖,FjZxDIFM-x)Bww.n.m7Ǚ:AKCFz< cKlzzj5#8EVof!:z1~mwXoTthkXvM!9k&)G ECK)cBTh- FT,O[K+p"jqVYg']Ul\ Ɉ4_ :D.fCv]]vB)!3/N&` C-zktϔՊj/@Fh %$|3\ rg 䡱4+ݦ 1nW_\:f od܎N2Cc}/A2])|AX__ {k x_# +MA ٰɘ;^m'=ӴOqdUSHY|"c|>+>yV*cB=5P!QÌ^V(5|u]5fDvuƶ@۔C)S !<ܿ|]N; 2psWz8`ٌjbͲѬ$kؾ=L%d 3հQmQ~Y-B#q\Ӿ ܜw©PI Smn+IG\i >H6$R9+'A@4)"IY >?E`>ƌV[nĂqk JF+S0;"NcY^Zά̳*~@Qm m#$@l 8pAI/N͂@G;H PaxQ°= TjI/ Si 5S+{2yWL7ʨk[^ Bb/g%^x~cֽĒ[5X7(ei=f$@B̜zxg=t;Eey{=}LP:b%x$!>K&-uH?E^%[hi27!% 2`\M"'/UݜD/#`RpeR+9eNDpODЋHFv< hĶ ć)DyFEk4cOvo6Xl`qM%e0eM(.5DsV أXզ?:ܱfnԵ1q>DXg+)@rry`r|Xr;B-CF}ӆ=lWY@,O%3"B}Ct>Cx=[x;U4lc<!.ICF>XEe|ՖԴ|9E}B&Z \Cj3]CxYC u$^[GmTG™FWtA1xbbG@`.m?pKG.0MjuW1kO*?F@ċ/`sDʢքhoi9:pvh|y8V$DJ@:): 3N2ǿj 2 ut^ep O%)jf2ytY_牡; b9}"ӵ+G$W-4:Jv~k v?W1Z[srlf{(QdIgE,|j2iӹHqNhP#" {w5k<$??*_x<-Ӻ:?ix@R(XӭXm>:@AWS?0*9rz \qEp] :N{33,v_Z=Z?>Q<[Su+%ء15h͜|iejZI7Ny[6ym5l=z96M{МpxT9Iè͜WGL6g|7Dkl[UZ8+K0ꌙH_<1ݕgQbNrtW>݊fTUh9Or'S8&Hzq_Qٞ \LR\?qiίU{<)!lg{uUE!N|b>삷Y#4&$fJ34:8/9Qqì $@ObSX sWb֓47r-U('|$D6gUB0*U[v@A=V$IԄZfH+d _8^Qhl+2DQh0^ FY琌s~x\)&]z D8`}3Q Ҝh@u'׼dhVZڴ -YւiC=TW>ZPs i)V)b, 5zM:{e :…A11Sظm0В0tLއȮ^s#8gG1 'B2 YMX/FGHȹ4J!Xw~k=P{fW?_h ĞB`hđg, #)PaAY56}rbbL2cUxZna8JJ }rGK. u56+XQ耪AM"a ZpB!QPm(F1leE&?mյ9Or9sMKD3O[Nq~$8)5? k 3^_.2T@8 }"Mw/7X5Iq9zߛ:Z9/ /^ 3 ךhіaǦe?nxvH}EnOP%M;YK \aW&KGRD(sxW:<֟l¥egS[\4/(`Vڰ_i.F Ihr zf"p]4EiKÛr2OIh nĊ_C/Y'9N)ڳVM˫n0ͱ5{9>cqTuoώ>cܺvq2,Sf9T\KC'f&:UrREҙ&J|HEnO840vsnfa&.T Ky.) e~,3D=\!BBU#:$1ܹޅcFf jU9v_ p[0 q#P 㾆=:<-͹<]ӷLn%>y>DxxU10MA| `ZʟG]ЬO]SE(ƾu׍K{m RQ B )3?;M<GW!M=L[$ ;}_m[Ūmɑrx/먃 Yݿt2R_pݼ ljl?(XN,un3?!c8 ,| 1wsb8 bŕν{ I .Sxw@je' 3{[YDBtc\mQdLF;\|a|5*h~[$JX<(0)-^a2tA!ЭUfg74?ѨaMnq@בvV/6svj؇I?XMOs0+}б jm\eإ=z}Q],oݸ| m=o֔u?5OT,}ROrj` ̸51ȫy_4do@\w8꩝VkjelAʲAHT̐}Tڵ5?je ldA (Ľ.w-&2ҺSHkse)@ѣ"FQ="5M?L滛 dBL]IO$%`ũR-@5\*Xtq1&kg~j%rx/lVVO wˇdWe/F`9OQT !ixÊ7׽i{D: gBMDBJp*4'낝~3p&V奡`Z 6 衡H7lS6uin'|bk"ojri{:43t[&N =K=;}2#I J#y=` I /aQ{un@#TFa^?bG͆Sg x7#xrxK%cjF3?d?[%_i#3:ǩ+PC "l| dh0eq*:.V~+ [jm<5 Hq:0:r=iI=o'K=6ģ>ocM<X3޸$ * }u MYMFXf.%?LVn$E]xZ+3(V0֏yqfDa Yi)6ǽ$6&0o^Y\Lt>("fٸ~:Kpc{r7O:æj({33ce$xDb#7M*7<=7D1:fڅ;` BTC1Ӻ>>I19MCݏZ0Nc ?c.*ڌHpa?~.0G>r'[R̂tE?()% _ }MZ粏f_ ˣ_.ĩva 8"QD=ZJ֤/wݦ[iJ>}RQ)Zupzww) >J?]I5ڶ֡erMbe 8 kpߤ/íe` i]^cƴf#Z1]4]EӥQ UOq{r,euԜ$|[ߒ2o}:#<3[B {JHOe,tWF\(1L\o[ &2D QRF$]0b3JBL7Uia0lJ ù~ $\Xgi(i!!̶˲5 baO|ɰatݎDl%aL>Bt~=n"TH  ?2!sR΂O摔rn%U ~l?aB9LJD 1݂{rLtUm%5mBz3lW|kJ͵1IK5"-ph-Y'n4 .⒲Tsv]u(PK]I]W&r2/m'tGŚk#@alZ, kIq~BN +3Xط! 򘡐ajBo?!>fY#یz 8MDmȕNbZP -թΰhRg2}$$;͡O#z 6g?._x g퉼yq!&r-:((+[T B[U!i Ѱe -,vF23Y)ҸP̐:@Eɲc.G'P`p,GcP e͙n' `/rtWE=Q~$*ث(ijؾ㓸Wj9B -Dٽuh#Lح1ƱryXь̹(swx6pJZ#x Hӄ)*~;m.89-w*ԁa/ (MbꠂS "R 6gD!> :!"t)_,# IǤ("/j_:'uKt)o5 h#wcu]eZO|/B(tܒIcI6ЕR kȵ4%,cFersXJ" !`qgIJFi~!L~QA xWZ`!d;Ћ^mh &/@@wL߼؜`ژ8!lw1Vbkgâ,Jn6l&+a`h}i:B|s [!/Wa0<^Ycv;I#S0"-:j>;"4r'>EYid> ʳY~O1!lGpaDGAV,չdG1iʅXS+?||0nY9l#q}n,`p0p0u:d~A w sG̝drI/'F u7Džov3)E9^B5T?\B5QEcweNZQy4hr Uj.;jqB}v?ffΝVP3]~XMYշ~Ky|Srð;< 8L7J6ugEcp Lۉza\Cnҡȵ# 4F\,0:ܽ [%"YqQֽјRi²qq%TGŻ 9p&Y씁,N'kwՅ?< o2]Lf\Mwz#ܮ V't?9P2 cAmZO-^S[GSUGɆBaRmO F{tJNC4kCﻈI N>M#&H :TFSyb Fk)ggSM݊pkXD'9ggX`?lx"*M8 <+6-zw3,)0NҶN}K>̂Lh|.A\S~]\ L,9 YP]x+ Vd)ݸkzj,ΰN3`4r1[;3{}?+%*$s9gRQ bI@!WC(wז/" ;}Sz",AhUmx腕ޠ-"qݰswGN_YqiL 审&n*R][x`o]-W I4 vUP @\FMV4qioo Б'G Jx(?e9o{ŭUbLR34k.# 'b }1ؗqȤɊ>\WK{l_ Z3FZ6^]%h-2ZDm\cad@7gpY WQv+|b| 7,%E\*<*QE-jb7pL⭄o^=d%O4~U.a~Dp5Q^5`볂X1S}T#^VCbkfs&5S&=l$Qz1:ml1A֐߻9z UU((MJ恡cAR{S Cwh2ށw_Ȝ_~&hvA! SMT"C$\6mǢ3af\|  S) S$E:˯b ,h3- c/B)Z;"f$O٦h$HKJ.:DWUA Sr) heĮ.>T^>ql[Pˠ !Q7-h^?]8!KV!_`29Amکa֨j py[CM ?l'uW9˓5I,%# ϖ.EAF_.xz 1ʛ3*JЭ z3}B=gsr!dob OX" '86  krxrr*s[u8!A(Zg\}5_%࿫12v vvjYW$5TeycYu3s__8p5ͩmIw Yp겺 BB V vXw5٫Bz`2F3N&b l,fPe >E<`-s:"*|!KE7`݌gش(~B8=j賟Kn$HsqB{usYx3 {aO qtJu4De,GuY_i*{g9d栛o; IYk }j$yYJayaEXk=ńנ-L.16P+w5v@gWuq [k2 }Rɲ7x$BAY#ьy%ˑSJR] $MWW};F{S_].)+"myM?ٕB(5ڐI|sX0~{B|ڇ 1LM|ą;-֨06ʕfړ=oshІ ץFdIFg=CDEq(oG4y3E8=^9[D0+AΰwmN1om5b@kM0szvm§@\l2;7X@7n.BwS򲈳k5⤄'%V"y.QcxaM 8#fOŒyZɴH\:ؼP&#wH\}[wI5?#_ pKx+ULn !0{]\Ƣx`{`j\a Fc?*ZL6.+4b騝btRC 9N 2~ty:]`  JZ1-69 tBԭ(FӮŢV} P=cfpeTVRZvd[R%Px:{@SO2:=xsض}~ jտ$?mB ]!17ԄkUu}hJ"?P6wpM`&q@-"`R9 Z|;G0N~b[s/]@V [Wjuݝo?y 9v+nZ ߂"S|>tGLPhj :e h!`칈/XpGv[ߎg!|vھA>c c7Go}X<7GAuTR^*-rC/1AOqn (F6de 7Rg5+Jz`O雄TQR#>Wa|ULs2_!nnJA⌻ݨ/?C4\;RjMc1l?r #Vz$ Ub6+OgQ_cMG`Ƨ?lK.uNO%@>y6ZMd.!{)H'95ybnu&QĤ z} 0z$\KߒE.{UO}Qhf1!UәPSVzdl5D Nx@f +J2JJrBlS?jRܹe9:QJPR N)x|3+BN-w} xYs!A$*̧&?VwKڟ/Hw Xbj'ȗ:.BZ؃Mbz1coG qK%k e9s `wivN ŤτH7YjI`;fS+RMqwzљ0PB؂gEPpcQۖ%tWxnm4:=R Wh¯cb$&٦V%XA̺ګ?!%7A ks=dE}^m]rG7 і 9H׿T"KVm($?H TEߒ@m>|5}%L20Ox̉P?Ն/8XrgSGn885P"17[&鴼8E%yطEi(Q?@ OomDJjttZ%LS0J8GR̡/($Y s.b f(_ī=u076wYf FZŃRh+F (BBK MCdR82I;`q2@%$#-&l]`odq@ұ!s#2ivLqLTZU2 ǫۢQcSvAIRք9xWљTiOBlz=++!<'™{[ձem/֯͒OVogDon{..tعSk`NV!ē<ۑɵA5$a _i/~"۬Pja i b[iT^ e 0cyrmfNF PBw3A򃖥#0P}"of~ T P^)KH.;;9j&xbG|v |5G op`V[9bk{oc-_3B(0u܂Z_>]'D}-2FGa& WBСע xm[0mvrQ^HcI+xEϧ3@{{ ^ uwQXgEWs. 2$4-#jJG_pP2\"i$޺\1 U\,ltWz@_s5X<'s <^<К$nxmqpLЦ;n%*s^5/J ĝRf_Rp~| yшNhnVeXITDO*Ѣ 4nt;) ̮+wP7v/}ũ&- =?y8/ɀTF$[yHzXUBm[NϣY.:1prŭN]zVzH".B?ĤXޱGK=L#9K uGės0-QTiUܔܰzcd-wWRZ@?r%[LF#A e?C:'a]qZ4h  H]J 6iq tyjYr fbL7ј1Y+ F6ySEѰ ]z^T߰p4$pH"os+@w<3")墹[Jr3G/Zs<.sfG$'pW/aGp/m`Z0@,l+-a!9*F%6]k_$ * 6 3EawxƉ#!)Dp̍R8ApeHo4Qv|f$44ISdn>^]k!}sk lb:Q ǒ&qpaٯ0.D!B >+ kӮiHuFuQP^瞳%,WJ4{[3 lυ4HjR/zS I5 7j$P'Sx0a)e;x9՞.kPㅫ?%]aF獵Q5?PL?r_ mV i߼y:E1v'Hkc3Vԕ$PӃ#KE$B-":{k|Kv6hV#* 8t'cs">R) tVQ s.;Sa8K fbg*r,BaI%nG4{~'p.\ga43yķy SOP.Ҷ[u ,;Hysaa&0xZP6Ȑq*"N(<& Tߒ_(V AB39$X^} p7Χݶ};ч`q"r[*yHm=g9P_u{4 T>~hIw9,$A}&52bzTKfp{)wk| >̬n52Æz t}՞$" pyqJX1l~(kaq*JNJ2[(*"TEƛή?rTnؒ_g!<"qbZѦPBYbh<ɖH74&(תˈ"4ny>iH0EAo3~ڇ:˝`[fa Pob/܏ 8Mwh!M Q߉Չ*sǨWg.7ٜ$);m'TycEHz!DS">@BQH$MzSqk75LA.6۴93˶SN\ iL5jMM(i@FjhfGsHI9bBcྊ}~/fd,I]GHg)?it*6e1<>.K]&%'~2r /Hέ^Dzі8g $ks+Pw?cdʏrk72JFvӯF%fIÿ(#ʀZGui 5K@9O0hXFIbSTR_uoED:ɔ#Jr8{;`i wS KHÄBB?y#jf6>ú9S=vGv|v%cP[Z믜0Xl[_?~F*~ OĹS<@^G8~^l)Y^AU1!夂h) 7e~"1qm˱La9[ϧ<^د] .r"!>)?wr-uƙy=m2oNgS߃A-vԆךG+zTu6ȝT0\vj*żoaM~(Jg$mU5H|W7En^rE-3A.=Nt Z19a'꺂gj#ʫ,}UN?[?tYwN h_+Ę@czsҲ/#Ж6vye~WzKdH.n69QqW%XgrX/E3N`:V I?x *SEd 6`P΄=* &Z섖/hʆFU{ɇ[vJ't*$OCқ0eob3)=|*Z.T&:-<;m`;L)$ q8ւiOqx2Wjb͎yꅱ'#_Ǹ kyK9\'CnyJכ `2, yF9 "^Q[/<V0/|,Js~MtT=TFSU7:3л-Md`N=fƭEL!"C aB Oh/l 5 e@de2``Y&4&^vGҰQpMzD.zJ#/j: MrKJՓK:Tti'ga3<c~ee{/Q.>g jXnTbSrFV7& /1蟨{LHx1%6x~ Pug?`Ku!eN=\XV={9dEB_\ aaK)'j^n[6BmhtrL $ki78%mW/uPWlgiJ١T@MCKŌ 4XF̬z ?r#rW];m`wkARH9տUUӳ~uP܇u֖pAvU0v_*Qkv)pE]2}U+4gQ)*; 5H'M kG؅%(wX'hh* LVM;k @۝e1lGjif95rY_Ny5Qs$:H=~޿mR")~A챔j0aLCكLkyۂaX /sY:wD>uك^V ] ^\53JlGY~gbU=auXlvQ@ ^TSv}G.Gh8VS9lP Zge3էLPfB?=$%;·|Ө"{rjXlC5)1Vk/H34,ex2/AH "{R1IU tJmi=70/Tv~M/N[dD hcjgq^C:B_v)n$LXx5d˼xQ9wG^opl%()l.{+>+'5ILjIb@O?TDh8dM\ 6n=Ge^Џ{`5"=auyFu"[;zƌ a-lC:y#[@&acF;>@IsZ(N\9¨E˟ւ%xp]'Z_Œ`>EoiRSV&-GIfaDũʝ̐;oV1'gTEK!fl{1SB X:mk p=tTE(T/w+(3!M<Z0_J?BKPrl̲].ˉ|ܠHkUN! n/HO_Q%o`iʾ1}VdwEkm>'kJ$O#ASk C{Q'2SwKGT~Θa G5a.eX%kTzkՓ; L8E>F=o jvͬut@XB ,+ϵDQb1Jn@=Lw+i.2AoY̐ӺnrxS^zb;f(AA>Y>q,a U-0;ک0:b,$oO͍E |J8F귖Ax,37S0sPHo*;PC*Ge? \Gy5t-q$}2|2(TKft=Ơa (_Yb׾73l̡k8fnk*W5i/^pɪ~2l,K: %o+tg]ۊ2z%E-UaT K&./$?,z86W<hЪ6 &[5Rc"ٚ%pz"P_i'וJe ]HS9z@‡fy}!>²=sQѶO-jvc;tz3'ܰ-G5v-Ub]z:>bUC"]DORU<W+c!PCܷ4-ݢ[ ϔfpzQUʌzIّ5!ys4D_57y\hw=٬,Y0 %-ʡ.TP&ïUy\%pJJy'~N3.If5z߁Lߪ 鶃YVUb\0^~`1_t6)] =7ނ@Zݿ25짞Q'Y'(9lƆ=S]PCXSv94$@#I/Pi2A@s=(~"S!xK?cKG;ElaXbEDKO")!h#kMƛ)mY-Q.>5e y<+KZ1ƪ$r!\ĵؓiws.vu*%Ԑ|DR:L:"ĉICs]oXcX6oٟ0ێfkk\~2Sص\_M8%P؋n7 vZ|ϊ.K{EDƦB~NP 1炗3g6wE:^ίI89`OFN/8oh|/ĤykN|6L)J[o'!64"'ڨM9s*sG7~M~f G2BE۞EO {)fd$ʛS@&AwR'\t0[lbJE qwc,D5蜸AWEҠW"?P]Sb(e)FG*35$_>ز;EQB9Gg`o&g}\/ YK\jv)!:f,l܌-!E:RA?8Fͥh)Y7RNbWC @*Xw,̕:.U( Ni=beZ\N)Ñ ؕChФ>ӻ 3qSNbs({"[lџ/5WQxڸ[|m.9 *@ۢ;/j:E0j~즙kT{ȶ56Dtc[ýXQŀʓ.{xs[;~Ӷx<6FPp\P0U; YC6[U9]? Ϟ;eLBLڕۑ[4*85L -x}id-z]'n):ʑ2cOͦ3:ߊ[2V{ѱe9HGU`ݣɝ,O" pAe cp0XNy6?=AgRF܃V#s] e{¬AfYl[\rصDo ٯt 9|k 'ȥKWefj+)sk5Aog~ /' "2pWc(diVNP_=6J*ƺC'Tk%SpmiQ~ atLxB:W{&/a/ YUIo3[ ԙ7a7Ie|wg{Lj@+qu2XHoO^ =j~9))HU*~%(TțH!όPgyv3ْ|X^9 w`MkYrqs<.s^)+H-I'6}F$ug5p6*l;EǵSkX!abg mʹ홎d-+A$z<z./"bV+8,ւYhu*'zX!sSJ܅ШA㽁ܳ?L/(ۈF/s, &Q=-/7gnDAWas/bQx,Gb4*f|GYg3 <%s7tFy`]7'`6_wũkq,}fc!/>lZC4Ɛ"5JFK* nʿe6izao1ӽCn#O5\9EMMhXmˋ#5x{)'Z(STX6b^ǵzN69='zQN v9Š[j*Xm '_?%ͤؐn0>/; IIQ .# E&jC|c ,'Є`쭼!5([8ɖ 9&MqN+LH[ aXm*Di,RĤ_ȯ+}ڥԋ)~C0&B![ '…0uW [o1+erD\vwZ*ShtF7׎|Vl$scِUm#o(񤚆ѽ8SA~// 23A'8*,0Bb.!7F& 2 6/hA 51 I9{R#A`K] +&$A;5Bj@sQ0Y0Q9GAbΏ ޽!Y$⿋1KZq0hN4FH&_zPt#,})S*ۗwnEʦ6{6miB0gdjݩn>NHrXh Ea^<=cRH-Nƀ1Yrϸ|tq#1K\yt=BT[H w{ zl>=!zr;?\l:RjFȤqsI/UOnj]d^e׵*ӥ",ҸSoyaȈC?޺EH-WzK\{F~6̣M"l/m! \W'Twڢe^N2+й\1| |w{yMM>NDc=miȁ;u\#)C4웖_`O:U ~uU)3,aVّؠ̵=jr&،X)dR7$}7 45dr|эV >(b1 I"!pW?:F&&-׶A'Q+b픅id ?6ǔq> I9]ӟN 0ص>c"aJ 䐺- P(}wI`JVb\ P_G^ aZ)K U);r֥ J`wdLʥi= tg.]['o{9PagMldwt*ԂRes_W K^u9AS7d罓@ˆc'TRʭ;2]XT;޼'*"UrwI qQ+xP;ڤ׉X0pOדMk9i`BuHzNI[JQt=BPg1eS׊uco ȿ쬶t&U+dߛnϜŴ_cB KlԱ)P٧~M(cZQw ?|A^Qvye:ӳlh7\.M9/V@cJStS鰒,1'^}! (`ə$Lq: MXo^_o=V/{5W07jY prk[hᤔH3H\D"M(fѫxRL&xkc:qf HLD7bo@UXc Q^&F|(3G$^tׄN}&^{oRM .\gC}/D!1\샲 jq"t;. VuGpɘV{js[YxiGcIr)y2 ?VvW5.ބC㋡c:Ӛvz'\P3,-wlCRͨ;Z9P+N(PdDjgyEuS;9&ZJ d`+/㆖g}OmPG~Y K9m8lq4pMĜ Dʭf3_nez hZhXq(K=aKe>tEbhr}&4,CȅR^4~R3}  L7:!$ ҏy0R qU`rF1T& l}'U39*T}{P0_gr"vmh=E]PQכd jܮԯsnp1Qh3\8Q̚Y:/SYOQ끭fQ+v&ulAhֈt"[*N6@]fgr,c( ƀ~YG=Ѻ5CW%U7j{#ic$5a:+uO1/Oe Zfv4 }w)9h4ҽe}|?|,=,-Y6ܡy <}ƻ; 9|VXm.l}t鿜!70&9ב%s9,~廬2Sp{ݐM |Pm~uxs)u!\3+h'fio y.e~0 }r CYDdx jL3 ~Sy \V75MU\}cO~Wh`S$8CxIwP(eJx]rO`upߺKd7#KHfb33gg2=N xtә0p<=p 2G?"??Rj;*-@=d~Z.*)dd& Xĭ<r#f Ln+&}<(49l] Fh ,^)PNXk!`RcwO}``+lӥflI'5GYo=ڰ[ WзsA5O ̄UGOܤE UMh =%$5DW+(.An<Y"?Eb'}PK,hY[2VޤZy X^/ҥ,c'[GήU1qtg87h8ޜ'k{ =|(ouҝ(HPJKZ]{r, ajQX]p>#^W_w40 邊8Pbr^yA--6ܾw0鹊|u£3f]jbB"s#< ׄ˙^FFo~, 䅳 jJ;/fY1~>ͺtK~&$q^k. kA24υG)ϧ/4X@TkGVH5bY`lm;Qc czCsNoz'kt:<: gҠn؉8$sK.`/yQqie Ncn}-KJOWJaDVhZjc>65;W!n.#hje 2pY땗2U M2jv<^2ߴ]c'G$'Cޟ4б sD"%o(a}KK.nސSEZ*% ˨[m*Z#uk%7#T}E=%~)g9Du㳧)̱o9G2؈|CA35@'NE eB> mAnջ@%r2r,'45#ˁdY@k|Dm^g4ޜJXN~G3h$:|?LNй_ ;7V)R.<+@+ yzLñ]wl5Caq'J*X0ĚXS'&Ǹ]sgOqUdi@&рc`$մ+i/ 8MQ0z>2t2L'2wœA- 3d]cuo# Q{_zls1J$쟦"P8j6.{ԌBR2ΝrGXv&ZCC@q%B>;+42>YoyܱH)i>JpvmnD FݨRCa|}PJڋf-+[Zڅ}.f{$Lj8.rj Y}w$6U6hMF~žyCDz^܅b䴞sn4&w@$_*yzό4JJ m'N  o~-yӑ-+3{@'wzK7(vuuToR04nR؟}xvf u W<= BorϹ|K4VEb -=5EH+(Dm90Rx뜋t42wJ%@8ntVf,iцS"QO HjCY̛%qhn:3\}{Pv];>D'~¹|cztNTz uG@P+bET4Zg'~',_Rd4TYCKr$xeЌSSQeMNO&a;FCw*R* ~T2#:T<=)O0^p_ơ"~^v'2XDS3]BrYrs.*15[R"˟$WgGzWh8y]KٸݧPHW鈪. ҩcB2x} ai5-^ );`iyvO@ߍWnkWطܼO$ fmH\U.GʩM۠$YIؖ/uC'@vj|d.?W`D vAd HZwM=9̴XsfwIMq@u /8;b3:413^2,cm,;rΉh$FT"BCB V[ր5w=xPy)MW}R^LV6cIeap!!}vS] RՍ~g-:yn L6q)3˶)ǁa;e0p-"br8lO_ /:,G-IBo]#;szfӄLߛQ#/M7fqs16ȼ[m}c<[1zsJ6:1VZ %4 lJ*NjdR8;zc#؜[dD0h=.}ヮ}X</],i䲌]b^4Rdݮآ3r&t*p&ւ%'/D10 W̭ tp  ǡbѩ7d|ƑOgJ̏27iIPt~5 "Ep-" HɚizBZ'ȜFY L18U_U|d5hog4JBKg.5ƌx;NJĨÍ.y`Dxii]IfT;r?;[4רVU7lƁE}p@.@Z ft@aWQvo=eX.U]x:ӓ`bvnL)ܿÚ/cC0Mcti+?= o]=*GNOԹ}v|DV n0P4dqh B4⫾sH{$7l/3%uϡ_2G#HakE #sOG`WK%v)?e \w L8?: UWn*Z*CAaC3,#XlRd+rtBuٳ礦'NJga[γ3'ewOgBJ#'>P**/$l }7b?4Bwh`or`ف=T7VhK6MXB}5MA>>4Wq+U&yAuTH-22~7Q*4̇X0U_fe2MCD,3eM@7 #3r\U"^A _UD (,Z؁~)Q CAgf2Y~Pl%?Q/ťwPz(w j0u$照#{ 9j$d1 PG^_K(G[RF̡lB^mQrI av\Zv*ad%%.ug!, V9 6^᭨ p`cCN^2Y ̛,EYmeN]8;zI" aDL5+S`ɥUdNqw&fS#,ɑUujAZw4M \v/??hԈ-4t;=]Xg&q+ X'_'28Nj {/L: np 6m/\sOtE[?]jH;XPJ!NջOAcPy} ?6Ymg8sdmn Q ~R4WL.jTE4 biBQD fQ"4'ƓVcjO _IXr_jR[BgK uq:Y T83S5UVr2/y)ui+}%-W -psMs{ㇽ" F$uctvw5W, SNL|3U 6; d?HBl>aolJAʂT߃l'T屛bGFv"U 91)E02t#āC eYQ(#|w(OyBDh~ *T}D4vmG~ݞ*RPsnO~HWmrZՕT sQőg{n7}}7?5Ķn['1t}"_1טkkOCs˖ڱMB$,.Vqv?P8M ǔ~[C1*ĥŕP N`0yg4AgQ/#d2WHNRry;öqasǵX(Y=C73~CU+het%SHt|u`;:/3SE,kIy8|laھ+6q9-~QL{ vl)Amh3)"fG̲K 2;vh`bnֽ)}KiK O273_ѭ*κz1ßz:/%,o8CR<"ģg;ټ3iy ̇@Kas,s$XEC]ftdNZG؀>o釉d:1 .L+z)'(1X.A\kCn0 L[vzJ){N B{ǩ2F |qBXW͜.WPWȡOY/k?l)3JH3UG,\z[=x7W;JR9=#v魉#X -szS;uFяnp4RЄB6QVjA,83O/RWIĕvc5 pģUjs`Xi~^ZSGfQ4H=לU>sP?kԵX^r{n&di2>G\u :K|#U1ԩ_QqLnD9`/!gÌlNe1:)iL#gP戸^ 8SO1{5'd .a-1 KQd[ |&ә*j him3enUb}Jz! lR-X6X.TzsY 軙I4ysup]f3]̦d +i"Eh9y%h^A9Dȇ8XY΍N-"-J;TZUD|pm3EnS?:ط#>0iwdB,bdD9Hw@eò;ϫ{jeQkV!VS;D5N̰:b z^%ċt8,%b^8~L`4ƈ4]A ϫ͏cXF ]$]NZoW Ŵ~h>BQN^hkB IDF`|, [-6aefq*/0-0YjGTXSzb{UO _VUUdڄE6v>9g@ oxQ*];9f&B=R$}EGoS? +8@)vM @ ^TKe03;Ύ?"eTaTFFT\Njɢߡ&@0η`-!7r‚-z8rזyvɃVJGƜ<ױa!Zm٤}&u4'M?չA1F rp \蕋]D/Źmyݲ|He <T iz@`Ѫ&뛼X2|\'Uoa;4+/o:ڈ/fτYb ĭn9>_p^ 7Xɿ\T'ez(+xQLu7Mp`ΡkqzH3C5WƵx){v)%Ap̒k@(5KpqƞE(01ġ2-^ b,4BGdZC Vն.,n)zwTҧ?F~`]1歶=6gZi&XWä"T\4euu=CK0_1HjqΔ.Rw^{9z7zM"u"q&0= w>8e#T@n$wKb6sCEᖘžJf?eq5Sz qKsn1 (zl zZݨ o:r{_bO0GmnةD ZI cMwNގg;S|O=dH%~"\Yp.Y*n)H+yѝ2J:@󨂧Mje@hNROKUuZjRnI^bt}rcf3 Z%U܎lYΐg=K>i~?Ʋo+pjTG4HN]Sk{d#X F]Mq/7d\LU3vc 2 +4Nw@[MѾ`!vHY=0d9Wh'KW @H9 ȎS閞e~|_ÚAxO{T#C}La* V ͂\Ța Q]'9y))&\GF_7i!>qް%Kϋ`8[Yf'ui'>>nG>[`vp);V^Q N1jlAi[09hC~e5c]c[O`FpS!Ή˭XʃVA)prW{|MK JXSܮ>:mf>^=d'|4CuJ3vIc3;M bFq2q@J%B?N2kP8f^"̦Xn1P#s@+¨Uq"4eиG٫`vλ>dz]TtGڋH==7.}gJjjP!u+A%INg U̠ /@/ԛ$Bn_`ۙ64muh W&Ln}JaT:gP~}͒VW_(n}+ty!mʨ%mǐUr@"*ϧ4rXͺIr2zTǠ"Q^,)[ZK~O2 ήz"ZJO7rn|nğ\ d)xA9ek)my-@wױIeC:9|1~V>o=C1պܭA"0jAR;ag\JᲖb%Vgo)8yL6HՂcIV& {pXD@[y-35z`SXɤ6_8HDڔ8T| :JCCG88߅`1t$ɢiNo*[MpK^ R̺1c1ǖpDhZ3v q;a͂xN;}#.KiZW-V4杳K$d7O^-`o_qwab`<⑨v7/f߉!|F{ Vk}]@ Mjp`biށ|cuw';/avpf#L&2ײ|4ብT o]؊tDSi4NCA `X.!c"@s]+)Xj"ҷO1[OPI= t3ekD0=.E2PCaenfdݳj@szVrߩNp9[Lk}RM06YޒN[iarA7wv5g,5U]Brio.;aw; =yq^7χ.oLX'Z&BKG]DJreA?A%,.=ՑwMd62<Ow/[t^ElP `<k}P3/j/A ;UUAС3TbD~T+98" 'gTev-|w _`3 oxp;5n6 EPwRIS*gG%wtSO^0LxFhSCC\} 7hyl5$S nA g*AaЇ9*!*\X+#DeZ OV./p`iώ5D@D>wE42.\4*r6xA󈗯YӶ߽B9}{@Q Xx١B ^&Aw-"ޯkL`FnN`^G0 ;c_Z :x. 5CD4ɌSDlBo1u2j>oyʱ h\5$w%z|:k=byoƇN e3|qt5XC+_Y?M*M[H6Ӳm-xpىgNMJn3]'p .c9)l MW'4*O1J1gUV٭TZ&Ů@(IK8EC6 I/Ib<Ψ\r+&ϝo\g4vTȆU fJ=Zxkfшcn]vC@LM "؄A-@Ŀ ؓCNw0cg%4\Tm?F p?Z*!Q'K~,>wOl3# ww#l~M@]i$ygf܉(iN|fJ9!m)XFX shl+KO֬!;o?AscUB}fhTla*6^\%ù25jx,ގz}Wᙂj^5N Z&i<;0s@ٓ扗^2,udыq=\Rq{e3:$Д6Y$*}e_ԡ^{x~jI3E1J btY]\|-Ǭ6:@ͺ V$o 9au7yzM4ng=;3踥:2?wŤ UULqhϰ:Hf1o9{"@ƸLskqHW 3(.&_h+t'io sh:1eo \t8 0C Yӣ#dLiKb#'e=Wk1UG2 `p׍ZP7ZXv:xxk+A&\(CΧ}g&[mϓ(P/*|xBwlj,; pBA AsE"j(͘WΆ;~l℩q.jKd'\Z\'l֣h* Xv#p ?xZTzc+޺yf':GO Q8@iGRxA-yce9oz'~1#~JfZ~R&ky'2mB#D~I!3df.!C/q߉^Z;2zwMO m]_q!Q;mjl +|oQUms[pb47WDgNR*"A2;n֌ٺj~Z_tH'BQq˶Zx py[}jyCf$UZxttB~\ iך'0lx?ة8P|V M#Ѭ@XX0ȇ7#T>FR4>ͣ~LΣ ض۔6&gqDv ݰ' %25Ӣя$N'jFCyBM̫f΋Aqh_Kw _tofHT(L0`q&wmsbDeT8fpk5c'a*1ާmo=kql%`v?يQB~3 r*3fp,iq|נ]o쉕g]"oQ@/ar7E!( \^t+t)RdNdV'ny1g(\V%%;,ŐRC?I&KP)Zw:R`%q"?lY?z"_I]]|WꔹE&rQ*y'V:^J`ްc}Wse⠀/ {-꘦T@gv#ENPs#+Q4-́ p_ATG"` -'smaKQ՘ōtOGY~;_^X 8kI6ra눪|"ݻ?aMZ-#pE2ȑQ_l37E$ 0X0TI [uM8Iϳ5DK&wk$ ;pS$ Tdz$iSzit&cYo)^keskʟ#h|u#^ąE>+bvhSv"U(?c= \]3}^:KtE uQK ==p:!sm:w@1:aWYqx4FM((4 ,r'Ľgn8`:%NនmO_Z܂e騄fDR U!}gt4zT'@=iV;3k?bz@~BfmX!g!-RvdLЙ[>4Fw+‡w NE5?_?AiAX.^!WNZU*HnƤr3xu`&ql/@l~iryރrhYP@5ttBѴ?R]BD 􆟭`xc\O]k1Pfa!衴=%=ILso~@- Fx\Y.Nh o/5K2\i*%~"rz3V@賷Ac7[A,w5aK%e1?TteEn4YPL?,pJ@ˌS1`֢5)@a8S/~(+qg&S9>0 YZsurvey/data/hospital.rda0000644000176200001440000000067014424312436015041 0ustar liggesusersJ@5YX 7WQ m iJ2࢈K@qтѝOН>8ɜ4R?gN?dj% $HJROLk~"F(9C StuC\2bg+]!錫_nu  FQG1_/@~/xc0Ro(ֆ񨡉({00o E9k;<ƻ1?NHcTLrd&4-kfǴy5F`QHӇHZGl3L$6̚/DS嘪OS:eiPA+ƟH;laQ4vg'sטE2.\,p $(&TIP>TF9u } 6survey/data/nhanes.rda0000644000176200001440000016255014424312436014500 0ustar liggesusers7zXZi"6!X)])TW"nRʟ$8:`&!@7C:DZ")n:!*2J[E_PYo1ao0c4儢 *,9*lcr٬Gjaw7rj۴~Џj3'#ʶ])Az՝꿒klˣAC|*gAv?#~y"p#;j|QE .͙h,^)9.fdն YceJkTWj VtL$xߪ]pl*b84z.:mI5 d/=z9ꡎd*dlr2%Em=S<ӟ."jDgqM[ 4F0tDח1XAlT| ݉"k.fQ kQm ץǷD0j~4"yъw ~704􄶚ik#恫|]!ytE%de?@k4@cccT6<S %Hвs&!;d߀T+&9pD$Vma\{PM2M-1Jra q^~8c+|!*̷&Hӽ]IԴ85!;#dԞoy ^_1T8x^惱l`j=p@[xOO:9vLi\}݈ cR>jRYsz10lK\zX~s\SmBduhnjX0@^^W7Qb啑}Xټqw@_ g孇j= h֪X,z<^S 6@#7k 5[3iAnA2i'l\uAwuAW2bl'1CK1Ai{:Zn}$/</Oamby43K-7*XW7oнueCz֒7 EjtF\8^pO.j;Ec1QV?LTv79ܣ2=>u򦼬q]o&9fYSwE'Z49$uZ&'8r -9<1FNG5azp&ڮ.(z>kO4 /eU ł4kc%ӬOYCN^D=Zª`>8-mu.(#ZSȩ%LT=)%^!NjJ,m`j(|eH #9c6Z(+eV7| FUD?Hxss7^L= ?31Z4VEDYX:~h 2؀5^K<6S)j uGFl-fyЄERa tpIw^H+$qR)697O:s~:Z6P ,̝Vl_sYww/^Pj1?ew0wd~vא*ׂZFQ 8Ae668FA˯  b4QU(J۟FV`BH.KU:ԩ mqAڒo9DOyr ,J`#:FrR} Ư~- =h 6[(oQ,x 諥ct4Sjb-;` Yc5u R0blRAoIR8h9QM.jd>y9ckz*2ypDgl꫕ŸuEIGc&0;2I6i %6@a-x(ձW4]ݐp/J LVx}Zah͕f6g?rVWZG|S@82 |:j0{b oAcUi$ %mAVUioS77 7f= O~Y`pܗ' 3UMc%' w2/$[:gHeL !QBWgx_$C^h|Z6bpd0? Y9^RZL3M\I4؃Y+zCЧmT QȞ͎zx|Q.+#6m]`)۷|Ԫ^(i^NE@0G芌ط3xC&abYrae Z'#;¹)9tAuIGb9泞a鯨L hl 8m:r@Y˰DL54THtx-!e^Y4q5_ʥxGuvPvz$oY p"IJ4C@$ߢlM>@H*4w.ϕն*MJXAro.8I&9CSugUB!{VH_B(:e7& tװfdl͙A3_M;;ܫI8 V1 zl5-:D9rYK.>~'5ERU j1 nmb|nvR@k٘ Z'~CMo׃R߶+Cw\LJG^8OA>fV&kAB5"XpxnTy)8EH%+#L9>c:yo&/&z͡f!A祧Q\E]U$9HG Hᓜ{ɨdL4OX-/aAV7OQm{\ a{(LH8n_]hIAq V7}+UHhI{rv^ j dw}8̃yMm"ɧZ;H˘#n(Gܺ3kK?oIQ.ٽH[׀M`[=tOO*_wJ;~5?ʣP8:F,s&gCjq6ܢ7"sEZɒ3OV-%8#0b5;"Ὺ,Ǖ[kZطDVQb /˧f QchȘ?D.NƐ>`W)H"N/Bqm,(I޻U5MCq |׸l ڈ&cg쌳 (.2gU/ȓe{f*ٝ+oE-8SrfAEFL'$(HCCOħd}`:f^6n''k{@}0j1=$z~+@aWHsk 뵴 cۉ+$=$|;)Rհϰ%f Kc+gzxpЛ 8جy2a|?f?FY[[[beaڟ-ϥm#H~)h 궙o9l `r%#¥"@\fÙ4+bl {*ۅ,x7}8e% -oNYke^%54^Wtae]{cy-h^?x3D?VG ec{_F2`vFjMtmY_k lڨA3 "x]*I(KOP&B{nyM `I<# < ijMT,-:$H&h#D ~Ȓg}a.t5Xa(U>@ Z7@,b}2,!y<8:A<&W梐 nƨ: KoNo 7.+ O|85S v=ἲ -0 էL(KǷcY(HM/u'ިe1+=sXN3&WT*Dg zBNOw {a2#`3h_Y;q4kχ PzS^m(JҀ+ꛗ 8{)0}*cOXmn5S(&![t2gŮ9h.U0mvsufq~SsfLK]\MG|˟c9OZÎ0SXک11F4#f$ e!sf+7LD o+,yI4 E w9_CBe"Ѯ5k5NǵzNh}ԫ _wصӉPi=R6g$_9o~C1@70 u ea~ǀ{Νm$4F ܵrƨ0vh`eA yEd-TdǪYU'lne2^E fg$#!p@ksG8sU) Ԭ)#@N7a=N70m#w'9c~(M;cRm> OCpV$3äH&ip]g4(y8E%#o*ĮwCXb+1?V|o֠E2]sh"0H=RnV{Τs s̛] wSz3E0ИpWIJ:Y2ejvL1fNj9p;vU=+O[Yq2G j'{jL(|5EH5-<.uE# XCV;) :CɂjCͱlcgAt㫮ȯvu+ӿ40Sxww*DNmb'lIGuD`UY\I [%kn=StqZl-=~ P~h/CW+~9vln\bsL4`9fKW_r+nO䴙Vviښx}MHRR6}Sߦq棒<)7my#NYu8X'٫.YEu})[⯇ pf)fʄ],1:>6ƠpdX.EmHby~ 95+Vț, y50xuH5lBuɭpu'"پZL2Rл~Fz@e:kYlQfGaCኑLuS/,Ȅ!m(;ѽ{_]tG 6M=HY##S8V(S Cmge:4m$kesVDY=[w Vlgo˸TT\m\h)@G^닊,cӾdܯ7C7즞% q >Gם=7s8! ωF֊[L|n=g ,HL |ی~cX9UĦpHfK'`:'H8ǁ *ەo׎EHr'AXgȦ3;Л:DaY'|%*vT&o:AJ#8^W3 P}?#eTa7!-/Ј͍8pBOP ]0IMbk,L]bܝhnq.ϮLhZTo p0`+04Sue-M[9g%B'ivҭF |<Βf%ź0J_Fq!Sq qC{Fofcq,X|TI~r˂ upL߯IpAh?֜A&S,?ƅdՆ,xV/ 1>ǟͥz0vS?Dʋ AaeԵ)V 1"$ JssF)/ 'jbkr?ڄ +)D|'` ^b$Nv Wʐ]ruUvRЛ4q hSE:)dq #^J$'M%(mVS>eo IطzG (PMb&9@fUK]"tԔ33Hq+hjrY#X)ֿׅnC!^к0n:芅4X*H%w␙~FAm`gуvcs~Y#} C܄ejC.Y?WŬ@3SJ\z2PvEJcEA˫ov~]&B0%۔]Ld85* 7T&8K٦C-x֖.Qtd``) "AGqL8Zève3%&|--{ѭUn[l{@ty%H=?//Q Vu^WºQ-ٓ?Flp)K`a<,w43ADb+ 8TFr"d-yY)G2Э*`"YSGH~5ҦK$"_Of$ ]*=Q{<;s,80},4E 1mҋDhvç@$Y;0*;$4{m//4c~k9|sқYR6N;#S6tp#͉` i;+OS?WkT|s i;2yVGŶNTв#5 ϙJoڄcٜ+ C #qog`*@޸yҠ:/bULb 0^oPd\ D~#'RXnm//c0qe`D%&vGlWbɺt>3_nX1YQпիe-=+۴9-sylBk-@w,S$ҺI_*\47Dw7`$_ )"3ƀ>z+ - P=?INVG1+|_L.d3 ǓlbTpe#.cKݡ?!gDJ=ߓ/ '͎ԃ*`JԹUX*1p'N!A*2W?)J~@4w8OĵFX` -]@.ŁkbSiLIzqY6DŴҠ1A0-~J$ liD8s'n.BY4{dr˄{)IZOl !m5]FЮf}/*P#±ؐXyExSe.p/8rmB Q<I[nh*TL=Ć!* @2e!ǒЏWRGSQcf1jȼgc`Ϭ=+-%32}6vI9,S%-嘁FRWuQ1#0"z5|M@sS"p>w;*hO(Ns۵ U*$ `N R7 OUL],pRo<ՓYzVBjc \#=4F+5nct3Nx*X>>5ۚIn'MCWe긼y؇1jmCiXLn;)l~9%_c敊|fS)1VeF(1M5]쒓턈InZFZC\Ȍߩŕ!CG&9sXOQjTiՈUC/=4Ue1Ok1COiPA܈ueY? p wʎ:ԋj.v6(s`| * 4dS*_Î/ę8{4Zڑ:-Ml+q=ԉS'Tp\|)48Mz'qJ.|:p~A3`RrpblO <'Ϳ=1s+)F p7g$uX?LͦSF4nMG:LTծp_653DŽ̨h.[s9g60: )ͼ$CnAXgD3}4q1&W:6 4J4ś;LȦ]6pԓ.~70`=e/f(Ob|v&F/u7KPFcr+Eȋ/ j*ӓf('rY Jpbj֧-ʬ30uS0 hv}HY/o]w,dS3hGV>@VrQ,4K+Cx]cå_\ąpH4Cq Iv+\7SQD7 صttȡi֜RWgAIjP:@Nd6nנuångң*RpBL!C@HPaHy T5 WBz]2mW.MT$"hݯ)|)zRhh@]*Tp רPT2RY]@0l])u4o Kjik 0b@Zз[1 U GbKKwv@)cU|O\î5\!ҿ4/Ze1Y.XD[q^bJ@"GKIZNeJj'/ņp氦jg(:b#5J5jhϢ4 r== ߝ>A6ENU,S<<,2_Dan$@\FN*0)!}+ΌW? 3\ٓzd3 :j %ht]"%u :(!S$G>9 KH+ I«aJ>v.?>Fٖa뜽Fl&jڼ INfqM(IAUc/{ăKAyP0{sz ` :(#%\=^CŀW3ίKX2ysYX8`clFrBE {@O[T!U{g&.=9 .HD[,Ă52.#3&N[Ec,gBu彌q>6e,SzH HA w&Q곿؀y&M-%V.agF[dʼn ={թj댓kd*թ8q9giQDOժx:s<(i?`:olQ?};1}e-u#7|NuT-w&3iz6  `7I4k["#sK@G4,qleL6J+ wrz%h;wR!m ;(ZhTCaղkz] `> =*ёO@R.Q{lOpr+q^=?TNi\CfW xZA>r%! u%rѥ.(y/`O3n;Ijib+Q ߖQO*I" [ZNIQh59kڢdy+d%"Y_|4I" Ii:撂L 1.x.8NC+g,*t@aټyEzS {[Z5Dc lywhx_'ZGJ4Q@ʶ關Uyceـ栩g{2XS,{1054(O-(t9BJ8o˔ZZ1YoXMC8`㌂R6$īޙu<&ZQ1,Y'`bISBzS4S<G"O'>eF; n)cu[ "/ư_J-kG<hIO3^#6\ uVMxV-} Q:}?Ek72uZܥ"4}Fʅ j 7gWi4ZHTE֘Pctʨ7x# t 'HA7 ް%vpkLu۵=ÍJ!ɍ!^Mr U0dGt0 Vx$uJ:y3RX LPt\䁢[W[!gjk7 ~{uSz۷BTOOݟKX<xPQ.;W!gV7촼4^łD;Mꚧ;^o$n͑W&9<;t2R 1n@,ɹWc%D市T,p߂o GK-HdmٱmM>@@RH0qxn}%׿Zf ,.w%N5pzg:Ki<)pvG:H^0TD+ fkDW\΁qVWb{f3T$:fݱ9aM4˨d?ȿInPD?:3'n ]F[wkjFQ Jץq@$#ke1zso Pgic2AS4UPnfu. d)C)l׍5grpmMHHYe} pRnx@bo-ʓζ0]Ԙ_0(m/Rk7}V}U3۫1y":nlt;X3u]ں/LJo+PVZu 9[OV42+vtrp@'+LrKc;B=8vEw>FƽDE9M&]BL يkG5:"0Qwkڽuf%$!m#ڛ;eĤMy*sJuO-{}^FrPb1?Ű]+HrIT)d bV&uz1?ۇ>)x[y{@TX!V6$bm"ï o?U-} w׿ۯLk -^{{E?f*g1&X1nn4Fu E|`'@5!p!4I, #L[a- fV5E6dy8z]5UQt@v>R#"u=0wg 1{B7z$`ht v/$o+Ãm1E'V$2##S՞ VG&IΕ`滶E{`mF};X `]$An7XJG(#g)AG}X61իv8͕2/ͣ4{>үMkw&cO.0:ahhv2E:h_-vZG>@b'͸Ċ%N3ZG{^)lLTv˿ʠ]u`BYGaגH=Bܶy W>i׷Zѭ?W/z4"qsU\y.EAPIBR95[Y٠Y쭬d'd)I-W8;' ż >RڢuuA~Oyyz@+M)izIX\ܸtA:z&׎w'yU \>ĉSn(Piu[a8>D%J;űq5G4t%EoxB=ǻ,#09*K94Nam ~ -5=,ȲL !mf\ ^E4v';<";0p'8A^6c x7ALD~Mh l&XBiNÖ,nC`]I6plBcX?ʓz'v!T=uZ2Y/r`tfKj v\=ITOxho@بsB3S1qp!sb|5kSLcmbT,Y( &WhxгfGⰥٱ dz ^/Ș$4b4OA"}:QщQ)ǃ7"*~ЃDW1׃埊w݋BZνˡWicXd†&!eexrvr HuR7R.u DG(Y~^=Ae^41." 4d=:6!\d}"/dڞ5Ot$H!ɢM< [w *>L>.Y")ԏv45fk+7leWKkBe`7.Yb󷙄 rHQ$ҼZivb?A7,d2xIwEeB=ml7 PE)\Z]%\̬dɨ AZ@cU3[?lے^J62/gaw9HNLk;ͬ-ky/xm>ɺ?0 k)%ĴjZU!Ni)gY q)s0IBMk T)CMJ.,M i|!G-pҷBoExʂsDк_?gۮݎP=5롿 ʲvbwULF//ڊb UPe 9rZ4GyrӾQDrETS,mJ ۣ80B+aUqDql؁Zop2]^ \uVP۬f_{ĘVrP Up8; kW:iUuЁLjۓxEkU':ՠp계NSLl%ҡQ#,aueppfd3ܣhFdn;h1O^UK*  jM<$&+'IՊ8d@9S NLSyG D_:l}ͻ)KTpƶaC+5+8S- ;eB#voظj[xAmĭ1nO ww{!U=C զ (L*ƥkhJEmlNkoBH3UJEĀSQ׬xG?.")f; 1r:&K> Mw֝ݲ[Ҳܼɘ0OŎގBР4wPWO6H\HSgFG5+RVd5aMwb;UF_͚K7=ӝ|wä 7![w,>es *Vhg3爦(_ g62VÂ8-C⠒XxThf5]dQ3l.3]`Pa^cUVy 42b0&};<~`P,:Xj0x='@mbaVLD $KpV1gN#d_*qKPnTZ3@(oLn!O_j@B96 unө::W`+IQcVosH)&uop2`IOyeATz]O*GVUҠ T;'1Y9hoGMw~{2+b^ rbg!p3/P&sMy Izy*q09?ݻJ叿.PG (JN릹 %L lghFSΫNOlCp%9{D4h^'XJ(JG=] |^~#;:YaYH2=SiSQ_@ cmg?B86οl)8RAIdRř2|vӕsE:}xYU+6MP%qj >(n Za\>w a0؊.3A^}NtG"Jŧ&5MǯK@b?iTsA0^II\ؼd'i8JX`fiW}GW+%%PtJW)n!+y(iM%Xsg퓿E"2wwGMLv-_v?A zdc"A5P( =lAV PYv )vғkrl}Hf_ X>yHȋ bNQ552lO3h,ľfCk>ek]QK&x4R@#sv+]9ϱ8M, ?Ւ[=E6fxΡ$EE7& >i|۱Ēq<_'9;wAd;(}hj!Qzl3M'CYCƺrb Լ;=$pDƨmo7Jd{:B&"T5_بU1ia٩g U_'v>1 UZ ŀiM*K0*'G-}P>3BȞLh3Tba2ɕg8r,lq Gyspݝ 2EiIGDJ3,^`=Q=:lGX PLtzxГ #VNe9q!,4B_W(z pV9 oxh!r֓~&V'\&qjU_pTTjqY`ówiuޱϣr6p.@EVF$Rx v#a~s"~H{):1qWم/# mo[[P[a! ԡ'䌟q*ɦ+Nq5,3$&9u2\`^2cI.ƈf-UWyjԘG 22)!H69Pf,<]uQ9[Y/O`KWl+IrM MeiF9\#5[@b􌤊rΉ?[(E|Uf-sD: p]\>4>\ks=ky_x8Zϝ8NQn\p:lERL`IL1j6$ e9VȺU`E]5ll"6`Wժ6/qV鞾e5۪qAOkn|I+F*Nn\QQaeȵ<9ʡB%׎]ڹ2E"@WoM+X+ݼ~lņ>qa ~-nj Is ܫPQo*TzztfG D|Z-\r/i.eQqt&x+b`|SxScjUS3>B59 ~S7%f[Q:*L⧅6Fo'qSwaR˧@sdE33km2 *)J~L178%'}MY&>xi9u 1_[Egym)z_ww5ǯPт %?4tcaU6[^Ӫ`S\WqX5E+d˻y98v\ihfWN  tpwO`bțZDۯШ~@, p@MрV G$b.2T(U0%v6DI L [hE/Rxg;K4#aI(Qs[ UjHUC=f`u -;{So,s9ƥb9oT]vУسʉ U ?E{1){;x~*>@ gʖ F1O+;,嗾{݅$\YB淰ҕǩ@-:P1%Z 1KĴ$_ۃ /o TV=Ѱr#o(aP>8&ߡY@GǓu۹W!:}OM" 0^S 7Ng6T މSCuª:1$Ei7j}6 04g] d|Re%W8 05n~2{7i} Hf#zu,.o󭙢2yk~'!咝5^( 57v/=M)vkH rV/)!޲E3Z pܫs4<#si,DMSVP?g¡HvDI 9O]ApU/tw1%upUc@\KL/60 *- Nsr52͛Ґ'p+qDKfn-ΏWC3u_? -xKr%i6wN3 '$=͜8&+sǍG:kaqX#{k*N{a%Kʮiux0xe&C? 2!׿¸gk$&>?PeESљu⚺ݎP5^~ iϣ(svd.J?!btys[d@> w8JEqZaz~b:qɤغPK boDPۯ8k3^r4-9\f*ݺH6`ez*`|;0YI)r٬ LojǢd] g҅vbR0R@|)d{[^}Do vLz`Zlzo/\ϵسacQ%ۜ &9ԟ-xni~HeyX"A183L|Ϲ2Q\I2SWvgUp3).;\ UQ P<,Z" X+@~. mUtlpMטҎe\l8Ka8|پwjUʱf޹tۄ8IKGߓ-D aH)m(nM! `M\i޺:Q? rGX評u4H=`Z ѫbs%kE=BetnbO P>U} EpV@Gxs0铷6ם[ 9}R͆R"CLsHhQ.9۶Rzܭx;/`Āt{*9 5cy`-P&ݳ s%ZdbbՅhV)LD5 ېWù{ @ZjE/0?iHו[m% oyJY 9u4M I2U9 T;5}Jhc\E _iDE q\QֽS҈עt+m./q* ( Fxoyo߅xҎ.DZBd}|ܚ?AJqr8|B"ױA1[/+cF`30}msHnhmg#P!YlX灢GLzB(kkh8?ɰ\F%}vކ2, ikarEbZ<9›$Ux3\o)J+U/+ŗ^pba2pˈЖ t;6Û&|M& i@D BkT?J2xfMq7}IXsX:RYT9mJf}:[fg"D4A6NM.-xGT~5]3%zpA٠br6pˮdԻN,[5^JfdkiJբo֧ ZP `/-T3MfHu,)\n#M¬8.,P=|`&~%cl acEH׾:]9Ǫt:S ]_Zi#:y]]5/qPˊ*k(35$ޢ*/y&-q~{-[&L|SzЬw4U> u0♬ 1jMw͋NF./`·j)OZ r.Isq e`ʮ_oUmGOo_f2xxc )|X:AcZ6kUJ Im8ƕPu%_wi 狏I[r_Yf2!O"P9ɲuc:nZzڭ W-Tbgt1wT/fi zZai< ~I7_ZMCk8f wAś,|X=Waqq: tP>Gcjqhh͗ӐovCH!1.}:1 oK]f^`ly予=w7a+I֨PΟJre:/UDM>4ӧW+ʷ'/)|Hkc$R:!f,nܰf}J v@{@١\ Gh2ёx3jBԟǵ,S5d[ j8pt&5w99WLg$ n%y)\{C_P6qHǡjE;Z^)3V]޹׆*?~ L<}"dQh2E;l65@datTԷOwbgS3I=$s{3 B/w@j^<7G.-ͣF?fʞQa{>ҿg}8LAJ{ePo*gG oN{x|PV@K.+)A/24 ;?xOO=ҔZ\ڜI:AI!uk;ZYnKAlr=31N8T +ٻhO!Z%NM'RlXan.{- T{`hwһ/i;(;8z<8/{90Y3ANh"~ p:y^Cn!7nښ+vM!gŚG7/>Q>F,/MiQ]šқ eX\}#f6l~E i9E*VNއN^>6QMlHBV́JsmMbYTJY:],j^ C..%{&aL4!rHˍ!" ~ Q$tOia:Vy,\LS MHV9r:d"nm84@v^) SI=KUe>|`Us)џ4<:T*Cv0Sj]Jx#fl_ήxY}c*=x =d[HOrნ#}~iKUGЯg 4"8' ԜgdtF#@ XȻ,r$ 7c2pz@CE"*͐Z퀢].ܸz61xiؒ< ,@:0 ;kJLI%>րL‘4:Fɜ;7`5$DoZ!a#O +U`Pzg0DŽ-V͉waeXl&iO#ESsE/ ##MS0'5!/iVGjg㸛Ev`rW]V Bg~*`_P8)ٟ?8ie+ǡM8$΄ݿZF9V|" ܏.peOron;\=6HW-*$lXnlh-KqĢ #GظeĤ}LfP*KzjxVdG%R!OTS:Z};R&KTtԥ&|6/ I"C+}ԑ!dQ VqypW[莔Cє51w"{o.5|T_@(`6ֻȺXCwɅG# UPfҝ@x A} zV\) VsLDn2i@Uxb iz)qy-FG!2hׄY+{Х2BᨘGH^MJ,¥w8zӽV&Ӟ_*mNlYs=Cޤ]&pV=%8CqtrE -%xK4eXCh4Օs\(c)8o,=͕Vזc$I̒T$=߿IM(p.jD>Pz!v u5Y/yt9퀋gZ_2ye:_ -ae nJWk:5 sh]*7}7ήZD0r?:+żI Ȃv 0L&ufaJc%_w[C-ny CUl#_dP$FN\Z k2L!SW`wt2lo'ڇ~ʌw'!J8~meKQd2T$촀c/%LLS ;]yRg+ O,5 Ŋ 5}dJ`kɧ}mƔ{xmߌu)2| *|v' r<|'9˅޽Ed=ns{j3Y67s kcb*H%}"#x낧pln%O VT0ዚmS9g&T:H~l #JB=^:ɥ <|Cm ޷ӯղadp03kR+"|)K2Xj*F}%1irtAK6i>"7 LfBg0{]k@'xaUg@[ WOFHs6T@|!Yվ&"FX Aك؞'U&6K'$W+YIZ"oLܒjٿi\MVN<8NEwtGZ]owʨFjR}y(6Mr35S/[i?S: T' ԁgu@ࣴѤEoQDy bGͦ[ }+^;T$wttݠ6EsIm˥㓥ݜ2S$kӿ q*p\€u!gw%8:A/L&Z `9c`hr:*Ͳgj %+Z6̠6۳ b;2D"( iEo󿥚0_-x!C*%&] DQ1\ d ϊk|Y-"'τmK' Ac`ezK`vA9{)#cqK%7hv>*۞1ۛL˕>˕F,뙯܅siW.JCͥ&kXV ,vBpx.~ˣQ&MݛAⰟ81">'|D~Ph#]˖2UHd5N%*5nM 듛͑/ikG$.2v!7;| @ت-)o,$#)`KoO8%`]봴A]_ZH-?~EBJ$]9 ӓR!զ-YG1|@tKɆe6ybT Kq1 3#ק-,ʙf]{3usH@רPޠOf 3r7q:3*g@n`J?`ǶIn 7x'Oz5M/ H"4T!;VOr`Tmo" LpM{9(#*:v죽z=DگYwmF*R \c=]_s^'?MEx'qzcb/<=#:+k@okPS\y "1{;BP) &,ޓazt̞W󁌚ht#D⺍"ZXQJ؄0rL)L,oZ7{b)aOԏC%-" " QAJ0F[a2(s妞M=L1ԻKyr\D"Z&'g5F@ݜGg&s|hh*tTn?_٢w+,f/",qcs1J2B)$+JL<[<*Үuv'yCJ<-4~Zwj%[Ff5eC7[Ј@͛ua/͋렾a"yNi++sE~<6>B1Fۈ؛fu@M,x8_1-nVX6|f  ӻ/p/V{0 Zh{?eeو=py2%BCB[D.dQbi }_*< C10v?= )&SiTl,LLtu GUt#?1r"$CUUD/*+`^W B4oIT?H^ᅈG1=^LEiPϔÉmMe~t?>LFd;; g&,OȌ=={;'k[~"-h>Ǎy@,1>& {MƣsvZA A/mt~_oK['bϾ^qhd0l,*6(=ב;Cֽ(A /(n/\QGk>a|=M[0,t<0rof8Izu@,̰6ځ Dɶ+Or&6F m㸕GɁ.wr,('p!!]FT&ȕ<;-h Bׄbj.Iu^=(REbq Aiez*ߨ"cJ?":쁄:ζ8ݝn_!_Wy8{"$]n 4s ˌyI?+#xKo16:VxGeV t*CAWT0gCy0Уa+BZߵe)@:7+>T(+*a,e e]0W)ą%/ }وZ@cP%>~X(:tfI2@ L>Zz2&"g:{#5dh_T\Rr?=5̄Z̭z`1pr4̃G 9֞"-5}\Ej!8gm^TsobRd uWmIc*"φj~$q N4Y7ڋNy R &)go&=;k]Ph8$u9a+X(;ND $hH y%~ͩ`QCzyEcZ7 ȉ,ER^" /UNͩ/뫼E[ ю} d{:ngne).sΖyb䑧[}n?NQ`x~# +j6R3VG=m<)g@'᥀pᘳnok ^ǻ@jLw޶iz+G]K6xψh>>?uCg3_3j@Ac%R(a7GE5s* =`97:d~ŃteɜѳDN7ɸn?Ǟ>`2ylPv)(NZqͧmpLTI]^Zi͇GX YO}{f UlkEe^Ipˁ8poV<pͼS+`@*5xeSA|C+BzsU~16nh$3Ack< qO ~ܺ|Dh19iӸ⬶k1F>y dfP8!‘Ș0Nq_(P(m,/I)J뻥.hao(xGIJI ꨶȩ\̯edȢ#@}BDO9x*Ktr:ܵYf@0'OƋFI9?T?qϯ:d C5}ZkJ01| _&,*5JpBW9Th2 ; x8+:m'}v h9Xo&qcdƯMx$⅁9\8Q+yXzhDρ0Xv9D"M>n rUT[.>BxM3~P~g2䝝ܗ10/ـ I~G8PJ;cG V"wb'G yZo' 6lj !I_Y ^ɝڎ\}bԥjFxe ^0,PƭY~GuXfԕxdPv mw}@Q{@DyG940M<c1#QȎ(?d0I難a+/bJʽ[ &|/.ܝ4W'AS j<)clWYcA^e 4 kd'% >:5bMDlZ{~?v" b$'9$k,+~!ch$]&$~ᬍI.\u͔h{4k"v6_itԋωho2rGߩ0\\8jj.$<B;%TJduO xT.S9E__أW1Dk?GF6+KWyVTI`H^%4x1<%o0B:)d%E HVY)1֖W }md>~7ƒyXp̏dTi*xtZ&:X*ɥn{M W-޼N{{4pY^̒]κ ^P&L"L?ӏ|RzMX4 Lɽ_N\"i N2 B[ChTYǗ8bF/zHMgU&S`ɟ(o$D췜«.17oL ^O*e%Z$!v v\ P66Kyqf*j84?@Si(Ϸݝ@xj>M&.+Z/{1G*8z@/ XqCbǵ%4n ;8eJfxqcQjA" DjCeK5#Ϭ&k=r2vK_9l{NyLNC wh+(ĵ}%hzi-uO5F~Xr p{y(TIrY ri q\se-i&}u["KLdA^цzٯ^2>Ԯڦ##]*i)vP):j'Q27 A>8 >fڦVtep|}$9A#OEOa sA9]ɋl㇦#Up6k:ExzOj x衂"h<n ulg Eq${h[flCVӢj1qYoi Cы3*g/5h?wD@*uk9-GM(wZTQ\JY,I {Fhꚙ68dMisBL/6TPäbvGz{V+4QcMG;ʬj@0_p6YoUJnZ]AKȽmC;R+nYF@+7Cx ?HL-̪aB FN۲f1/ MQZ[)ؓHcdϜ9tk&vHl#V9vgX'ItB_W]?JC!pt1EWTŒ-5kic39&_D-Ou΁/opET>]A w{ :fW.}iNXŀM-ø" OZӵQNgq"#MG0'\x yAQ\2B,w4PQ ֖J3"SbTsm7@MM7"貶ƜteQ>ȵ+[<\ԼP>k?3_%!#`mDWƵPݷPxu$̿McNiP)M@|IXh?)#OBv;\B'#d!n)trsSi0 q M>5>v_ˣ/A/n՞}O,)9 d ?'ܴXiIV]wD[<_sp XE1ʽ΋hY ^Y .!]CMeM^wtnYʖ}ER-50R9Yk6/Z='NMm3!ǝwX!%ӴjFa JLZ";$"5ȟj \ TD&vQ6 РA$B7@gFO_}lsA0 [o0;[7M!ذd#=q2q0{m"phRPΡ2:T;*p+fˍا! `9F.H߳l"4$̝G:j5CN@\nǾ [%/d?.h=3HtUd@')}{GnC, 25cn-~Խ'qnbb,ޏn6dT\9/Q}DiyB"$B&;â*-BmQ7Njw i^<%YDv"g, ,@ Hj)(<ݯzZ3җq.iM6Ծۦ,1 ]\8mb-f>MT\YţysTZs. rAdJ;M9~$ 1acoĄ@pǕ}I;%L/_gr ºOw6/l%VD94$6F0ч,ha0ߺB:&&fX͢a/e2!Ifd )S L$kzZ^d) }@D?%海m5]##^rC8;^rlB=d?n[W6Sh!NblD@G/sJ'#C7'7֯q a3F|mS(.P"ȅy<#X;7fo[\[cH㎗#l̟k%P84`@ ӈ nG!iuH|,I=ȟ'm@tW0Mu/;Rflt8?gN0[aƠsJt -z^sO2Se.EܳLhͼ3qqRР9Q k̡hNXrjUSkB(402u2TA$2% u_#}-٢eF/еGԑ}[:b;^䌮q4eOƠ~&>ҶyIhrQ'ͯ+\R1*kz=[)&t$L[A\kMIHkJ $PT2L.#Kwlߤ%+_63u[@C~54W#af5K([U|FȮ?Īo\ϩ&U%ոU?+la}IXJ+ܭ "AigEtdG؛n7\O^=[Kc~DZ _& ‚<0ָN!wm U lfl(q2'IV6WgbIaYZׂ"(v%!;GCQ֫Q7Ph^J 䮰kXu桜XW( iq3Z>@|Ӈ]ȷփL{V`tSLV{3FucʎXgUkX`N/h;uF;!_Έ"ymI5h5ܢ3) d٤K{kTMߪ\rujrp1`*vމNSc]qYp$]g;tmvH[q q6Y3k\CծJf\O5M R. n֓p3L'X,`,m\&j[!̺uE#R9#Es _!!~k o q`Z^Ƀsfr1&J{DS(bi>ڞGĖ?`&FCj(dt*߻InvL2qE^qrET%S_[ @]넱Prc}5ы `yPiDZA^Vd##:-#(<gE [ƕy Lj"6"QY?)x tc hVt\.b/i#n5x 0$S=/b4)]VMYh05u7ƹ阵0k暄cLxW>\hc'GwQͽ)DS= ̗"M揗On+f+ bKA^́,},M.WE}٥h"D4~r]؏,/H4o(I[ʼn-2}?Kiu37Z7w']#u9qv~޷{>FvIHZ|!P "p_1-X4R 'lA;P.Xͱ`! k~xʵF/L_1 ţ;-59,3`[p`U@-rMĚ!@tR5-?k=b֟0 'e`mVYiMN5 &B#+HsJ@U*Qd Y_c mmsׁy ӛӧX ~Gc~2M[z̰Vo`egVKa2;>JIr‘kiJsL59fQZ;w i8@堫 y\ ߋ՛1>S&Qċ.j<qϹ|y KA:`]E-rŀmry= aT_@'RriT 5_θVe4(#}%[ L3dO /63JN:jGZ B_F AT+2HîKˢps]s 6*}qs}s;!&e\ua ~;䄉^:JA-;/Jk"DG)-m3Q%]Hl"mtӻ8eġk]1)oJls3Iܺ)DC;᳎|ر*22U:}U,}#^ -DKw)u'],ǀp&RuYZM/; x8?# bY\?&hCʿ[F^R.w"ƚ;tH;ܴt6cE+R9 xYQ!U9[@A*AZ<hC=̈F~Xڼ }Զ+ uť8 x{LJ޿1ʍ"g,>9ߨ~h0({`J׽Cꊝ<[M~I5 uޣ}51'R5~Fi2zq(Ȣ=ۋ`n#-${Bӷ)VMgKSUA\&,!u_9{k51jS3=$M)(ݹmoXYY]O Yo,⼴g׽y7rJ=NPsE›ECX7v$K;:y[FݨMp[)8.,0N0W:ǁ P#g|N_,#m ,n4<_> _W& u1'L"A9{;=ژE&q'E} [|x9lH95c"eQD07 $wד1@v…9B8n^O5XʆLT*cIWvcR-[jj}k50BPNpuܕz2X9 O,;RlDڃSn 4eķCmݓtErMˉ=ٸkkVD;}4^<.z.5kSEy40mT` &V ec`h= R4 `?IN5i]|(JE@r1R.=}~Y?bM*1N_KqRw9)ERџkP'J/VZHK3{AM1xRfJ>e 2A$&Fz^l9Ӭ_qvR3sOP?|ҏR죯ZeiWnsL3Pwe&T\zJ7Zs͡#?p /PL+gxiFtZQ]5u%!M֫C)) %KA\tC;,YYj ;pu|o Ԩh[?njBiPmG<ʼm$ӷ"N4lW|odh#;D70/iM@meAǣm)23_ iP'yQ27OU%FH WSiPS\X#&wVsq$FA5_h륩:%=+zaf!c1 _lJvA=?]DDab$k% xuÉ^ɏӞTU1v;Իl8Ԑ-{y>% n$;B~8IB,{@@,nA(9>j:i0]XnMO{. _'*.)TSC1l%ˮ{IXnK(Dzbmz =4C<mmm@CDK*q2.ue}P[w6?N*$c"'oj!_#3hsyGB5_X4]4f P==tB&uZ4?* ;M8spMݯ)Ο^[cn  +M*P>awL W ӮJ?8\)j#R;}s~;y(V{$pт#lR=䍓.zMЁ RN Z=-aZM2~hE|IQMAst+¢{aIK/ >D͒gm AMam"vYB-D42ti:1>V ywe3aÁ^$)fe kFty /ܬ>b(ma[--J֎ Ջ ]BwO4nXT2YcO7BЛɈ:bUZoE^4Tc }+CR1b;k;\a P0*l8dGU)Da>ru8^9I$Qe]ΒVM\Ϡn|tf^7ZtrׄX"P/q-s>#ZR=XL \~P !BJQW ,bhZS44DW2j?c}ͳmYg?S)Hn^ Kt E)$e4NI7>r均W Ey[Y(GaCP[7Ɩi$ 7/qYX6#͵ K Ks=ԃVǤM%cIvb\q@aruo-e)IEbFBϹ9Hx5V3RZ_iӨ5awky9 Kk؎DC!di(7EMeS'1j^<81cI2A]BEpfξT@;jU?KCs1rOL@IJSC@ sRNVRA Mh=xr)"&6ns3n!&F>1dEc>7 oZG0K79*U2y>alό 5''/sTp F c}ˋ~~N~L޻> Ahc-<̨Lr~C|0>qGH$j'ZژGE0K&ɐRv*!_ّuhDdzim %KCa}TCֵ6>)\!Z^ veձ fL"8|Q0RW۴*ֺ>Y#}).c)qk;aA8.sglr m?ډQH.XWn )#h;W*iav=4/tkdhڂ <…7Y6+ZV[Tv@9JAƶ,KKQ:$d&:UÂ3v#`CXa<8;]G"|y\f'*!(6"~`ȓ {UY?5[1FH)QKQ$lxWQt:C3ɺ_, sW/kDb$%.f#941[, UHnK@~S4 tiTr9Л:)~ /R,&oH+m:BRTYqԥXXA~4Kb6VϘ4&@4OMIM;] QcYޥX|@ErG5%N 7"_V%vm1x%IXk(VP)dFı9mc205{`s @*wj hVC̻ˢ_|f0!XEA3l ukz7f̩{y_in,ټj1Y|&`U!Oc6Eiy <ܑ?gIj[ _@43Y9?t@փoo6J| >+a,>h @lFXE54a G m{aq3Uymy`u{9#d1D!E%*ɧ\mX+V_C&w!nsM=<R~t6]C~gq0{ot%gG/"gNu!{FJ,131w+CtyX7*klԫt)yKe&!߷' C ZrqbI(uſy h2H..o}Y3$\RGQr#HſOiqǤp-$x_@3$7"{ˊE-X a4hEW7-^P9U7M]AJ EJH]f#8rQ^;$*<ʅBPLhaGO~Ro<f E0;{j'.ɕS B\y7 " QőDtxD{LYq::gQvnH+3f />턒ESl19ۛy[?_xEZ1<ٰsѵO!f)K{L>X}i DIat-Ĭ2tuzR*bC38 ," "P !W\a`Y?-^l+J<6Vg&Щ$*Ĝ`'}Yɛ* +oQδϲ]hB#4JKCd4}P_L__7 ku{2+k'El6F{3 d$5&Fc)d |#;ߖpYhxn~wX|MA+}|v;Oo^C: GH%k;.R'xhȿ^֩Yw!L:|m Qg[r?Q5A']1AǻH &RٲkL8T:C.SERN+֊e@tH'{6}Z=#\[DL%N:tGXrg^BuďNyzY(fvHcSPtb6rzBqH̹³~C5o8o'D]"$nbP>~ǚ^GA"&ܕ@v#-y]3Ka_8e^̖*أ\T2%+ s69͚xި3p?]E"iߏwwUzb+810nG_vÒYY@>_);!w9kgő*[оvȫ6f%#-ˠ-د-?mA\'N֢U^-roY{gA4+܃#І-(˦t :膵V0@UX틋H)X~;zE#BhP{x\Ҝx@=C› f{}%6'M05cX!OK[8Nf V -ZQSqb¨Їr[sy)pю=XH@ +jfØ֝ \'߅yi-ڻj{|>Sa_4x'Ώֻ:9ǴNL 2Q/GnM.^KMc/Q@q6S t.<_ywZy2G/,PX>%ߖ@]t[8K#!S7q c{ K`[gϩ<9hzkU#A',ZcAnى|*AM BuF!hNΖIIZO᝻w0!}^lE}ҠVyA7G]y4sW0ԏvOs dN,qY~Lj|%1,\GڔDR|"֑Gk'u0QaơjjP2mQkЊ?9 |m9g}niʅ"+2'@F {\G 3|lؘ34זs k=:aj:'֗1 ˤfH5seYļnclz~0?ݴ}a/Bрɯ31`DAfo!GTp#1@XuV5aS `12gڞ/g(-X&-1gHw~ߊl&RUS#C3!u_j$\6P*'9i@~1+*bIM0x*H`GcErRm:2#v9vF:C7 ioA'/yMONfҐ 8,N0L໌锟dMNIB%нp ȿp!2pHhP&hL~&,DŽ&qo#jRiO4 HO2a9= :.g!2jfÕGPd^*j{SG}0S_M,y>w5.&?U9ͻjؤRH 2bIm{x%*BRysKq!vpeџh[A$1|)c#ǂ/`4^fʜv,4Pد9'0G;펒QvX , ?qs#D*Lvr ȯQhǜt:_DuLϏ_5MAL3_Mi ɽOOD mv?E –DG_ݩ72vWgC~ @g߭{)= ;LTfqd 2݁](IT~y3NjS<`htO.:a-eըC ObPb6P_laaO?@n/9J"ڇ% C ,@J ")4&(3X{k(Ws6|ˣmUD5}dbbJ*9V'x—S; Y+0 :4}\w)qg/7#"WK!̗L va wtoGshHs &-s7jlo1̵3 +32/]$5F}.PEcg?c+yX(v"YceNQ^pb sfAZNI=@]>*> _lҤ¸-o Y zOC9pO96zOUmo6ps/~~>+r s^$ cf!h@ qZ(=TCR<$}jH<XO%!/~ lhxZ/{d7HK,]Kc*r^Rgs0{rՔD]*N&Z]i7F$7=' t@t1#nݓGj  nSگ)D;J'U.GTv}p>4̓mIfhRYh ГQmHwunT7}Cu7j\@?{>ֶu|$.NJ˂́pr9¾B> ɡ-U P'h|^Li#X L *1Tȫ)YއJ[Ji/(^,;P˕O4nqM(a~\a/Ԙ;U(~Ui h0pѳ2,9X+*.]D[+7x=#,diY<$ia(\;LפG~f Yɭ˧s!k|EH)t>D/?Y;cN(e#'OC;Ƽ_8fVA4%a3.EW֩^MsC|}`kDOhZwR? xZ!'שQݯn  pmX ;A:7 1È:)6a`܁d_2̴#(&2*W:\2$y'>ʐ!J}P+9nG^u*%Y:-BgiA6z&t#ŭJʗzQ'UgC뾏d<" Ql'tpcIV㝹boֹe@R G^.L5aKR~?M@Ӓ5~ө3QRX 樥'lA].خ}r& iœ1΂ýD{y^;sgz4&-@ӽڻSRl6`,Vohws7Tu{uXyrvdmԑ,MšgEfVj9Kf5-_ qVӗ8=X[緫$aD~S]ի.sl"Kk,)UN(Ok-`Sb} 9 ~g< _iG/Kؾ"ϋNd`E ӃP_72&Jz]4xnʉ OE:Z-Ŏ&% ÛSXĆwS!/ZDt[W˩&i[A[O>p:)beE\#;A)dؠ@-`pV\"}@Z1zu β'0nȝA4 :"[6-l!oDPvEoQLh`tuˈ `MǘsetР]|Ze9e&RpN 8i/uXw8@L> c f>o  ; 9yߵ~1n`4y4`Q۞x(DVP.\YR*_6>%m~T3X) 'xThrlEOI-XGs(Vd"e*رP/Q|kV5P::1QsU %Ԗqftҿ XmIS9ʇz#V3 qrtW8NX]6{CۺJ'6@,fwL.qh!4aZm_!]&ϩ_6=]95H}k0u[tC7 YQڂ% L&3gcآ !*oMHlw4l.QĿ4KrTi#p}Q^ '] +Г55Y k+cɿo_l\zjQ΄p*FMZ_K-԰LO`’EԀhƲ_#YNr8ôpWFIsX'<T4k*]$P!)nH*TAO*oSE{O d ;4 ; M>?wgqW-*= gH)m9aZJ0) qyDߥf+e>wɕ'072G$Xq?GnO~YL/Y`i \Z[Γn+OiV\ PCUE$c9$^ H)' 'ŀqtt SmgcoQ-`Ɠ:|;!sPp~M;Nifdx>.54am6u3wAx*L1kA-xi~c^^ q$`}smBT%.:}'>ȆVxe&'Wҽ\oV#g%S"eɿ٤* /WA;|aV\/ACʭLGM'NltIzN٤j2txn3 QUS u5cBX,x}SQիG=>SB2AiؕkE(& AtZ:^IQ.ZM))%膓Ч;-I'Z6Z0y7 Հ,R(xC)G@e&@V(gtJ߰lzб힚WPɢBd.b®KBv* bR 벬x޶M2@T1-3`*ģX3a l4,w]4Ň,+Nǁ7a]6!-r e\|6m^QiE؟{K 5+Y׋J68blk[eBWnB?XSJgf ǐq*$"xle3Q Oݞ7)B-!+xl4bе/=Կ&]+Q л^D,lt~5FAH=Pp!u:LW0.ҁ`Rw (/!s>i 0glYEI|?D"5zԡÖ'U㿺+s\SRdeQ `_Y^T2o&ڷxb $3U p,=y,!1CX5ރL1wboyɳH5?ZzxG?˥Ы_!J͊Σ /aѷP~nڒcQ =k Mb~YeXܖ~~jQ%Cvfh:uԄAʀV?:ޕnij-[DBERJӜQpGEyZ0Bvsj|FҚib<@ȡ^YԥO\:>}-qVLGWV`Ȣ0HV{Y"hRAZ9l` H[UGufuVi.sAһ~ Ţl< }Q4@XS`[O[WTu'6'JBO 4ڍ A-LZZLI7X o/R#du^JX='!{%BOv\I1A$F:}{IĩLJo_}M@焜-\(24߁<& &R$~6YiMkuRn/k mo,:3w6P7!|7 yW$!@hoqe}!]dW H7AYMg`%@z1WBu*N}f!$"拚.an?B `sK)zX6\Y3[2B[Nt<0 YZsurvey/data/election.rda0000644000176200001440000027415414424312436015032 0ustar liggesusers7zXZi"6!Xͣ])TW"nRʟ$8:`&!@7C:DX'#;acJxOk%I}$ʛh52 d.uKzXoa ٽ涪|IEҺ.`3+d1Dlma)=Jt42D[>mT>__r`ĴxOG^-X`*EXqavy_.Ɇ,ݍK+ [v3d RK&Jҙ]2vwPv +OW/ʵ4yFʷkH]Kc_^Ғg/#lCx>'C!B,ˌȏZBhUL͖3֮p\KSdbsqf{ɞ˔0MvjyFWټCh"[FwWΫ&|/]'$L(u;|bvۅ%鑂37{+H)uTu4J/l~0gRQ'֫#c %ޏjߝUv7RfzkGh9MT! 5PK[a?}dh4ėox[Mt3Fzi/O 3ѫŹˏ]2kbfÏ(RkjNAMa^Z' |I)#vEMߦUq\ "ڼL ݚn| E$v4wl?Å3Z %>hu/3{v~B ۔㝯o!6, k@FǀݦҏzIU(5}+1MESg`A %M7{ivhlo#=jҳfl oebC $ck@v/"M_+U:`mäC m+@ᖊ'ۼ]S1$ۄ1^ZsPWOg38rus|sJ]jCSja_z~_JOݨOK=_a8[ׂ˓|e 4Rx ZE[]x֒bPۂ bO^Ԧ"I|8OƋ]`zHnAu<27<:UJҼⰊdu @ LE-0u4f F'`WR/.q?4ĄX&`pm`b ;a &anW)gqD\ayl&8<JiK,ۢo,2G1 ˰^tW0(@^PD}`ڨ~@Xbm'Pb^soen'9w#,Xpw4]+ ^x,%5%RIb" t2Rw}!N+\8*/b36Y(^b| C;x42f[ЭqN +xs`^3|M}Cr@Vkߛ~ V6e0@?ÙLGŊj{JyaY:gv5kUܱnn'z䒐gp{zR\_DBC5nuYBmGBuuAzo9&1t*tl%qfo>cS9HZa)_]4+G̀f {mӐ!/+DhpݩȦ1Niٴ~ErNг:fٱwQs%[V8҃At6t%:TyLeT(6yF$Y5ROKt"!鞘M84COݝ5" |"הSH]kUL*q8SV2Iۦ mUV 03lpEe/U"U`:YS$!J:-pfuz Tp*+?h|ܯx]n@&Ov?iKV.ɐ:Za]e3BL(^19}  }Zm%"v:s|YU[h_Qrr4fv"É`J Y/C R)X&\lAP\$iY*~o?nm4oE7^&0=I(BoAzol'ǃ9w wbBgC9knҘ__7>ӹqE`+én{CnKvE-z2I@J+ "Od|2~V^9ܾFýs۰P3$7BB wz.X=; ~ӷ:LB]+ft7h4DZMGoy!~4ӫѪ!eUj5E=WOVQΜdqM"= _S:4 V]#*J9:MU帇9ʼns: E3s#2&yjͯ(oɢ.?/]mսrV#i Nhofo@9ҶD3 \4-X!M{MP ̵nGIMzȨsw "ke^ WTs1&/?C_P) [r (I1TT\!+`c@_iiyb.LnÑVH4.VV]z$AnG'DH+i03ςu#y8ii$\ׂ,Жt5̍)9a0(0fZB8`Y8(Ydj %YF8|A)p^\SN]`Fغvf$_]m`qsS(@Pn)O'XW@eY#/)ʖN]Lr#Af-9K{r~#lDfh\9(\&3>DR8sT=Vb@P}G_+>QY[B{QG#%ohގt%S9dLH\/83Ҩb; SV_e.~ziťac?NYw 1r4 `[ZҐ̰I"lgֲqdsz Gpai0P5 &s">LP҂A*ZJR_/HF8Л!.~W8baϝ/Yq-C^N )ҿ(PК1q]LLn $TZ | ?^ %+T1]MaJ~RE̒mTh"hs|I?_2}"'$ GuJ,N8vn8n9}o;)t§y4kr",E4'~)-$ӑʋ7l()CՇ<6/+S$0Ký!kD  EZMaz)q9>?ܔ Qi5:ՅI^͋Ϝ _jINeV%Q`afh,sQO^神|Sx&SN#We\YRQ8B )S_ *}7匹01L;@Rr,# wmyuc5H5w**[Q [>'c]Hb3ހ4VKTB=9 o ݤw 0}{Qhۇ˞c3R$H>ȽU ^u;b w@ç 4@xiOP7]w*'EOB|9nb:1 M%.H0%sv׭2j|cPTq`{$!(&z8xVi"ԿK+P"⊄ ;j:c/ AP. nx%v|-ȑmJt{&႖XQk#petz|v¨Y%3깙x}ڥhk/YhoŁ.K0n5%/RnKӜ zS4kQޱEo(w0M|E9h|BbT!wՅoOZԽVy/6@d K zNf고 ڭrR@ y,кLzN*:RL@ 銟ƃ !w3/?mZcfjH+8J;7Y#ͽ%/_5?c˄#do8JTb-ו $Px^"w:ᴗQ t.URw/U\O:?ˬ]4RVĀ*2?t8Mx_ӝ—UM ݤ"09?q3ˠbE^((2)) L2l]"{XpwCaI A>ӤTQ5+r)\<(\(YLh{dqkN-y,DC"Ɛj*4 Y g6Lc:024Gc~jN?L`P6knw vm1U֠H+g4Rޭ[=B^lLC^W@@Wp9TwPPOSY*K4ZMء;SބŮ,*\EZʐerWN6IB@ker3LϯBJT.[.?`pI*B)qs$2,=*piǂ>lx46m7{Z,X@P*bÙ,?g#į)YT= aLϰ%awLTZ!9gy&v{q5G#4;_ذCCStdiYN%Ł]E!R@zŵe;ENwTD "T;JYeTѮ| J} γDtH5 h)0r@RNg(Tc!chCvf5vV9J.x|Jb]b-1lgNHJA%ɂ7ɋmX?v$oB4l@;@+# Z+F\(uK^f" 9jh*MP ZWRW3]g|N ۮw᠝yon7:t(wn[I:-\%Mq6Tc I|#(]o4"'h\Q$LZN!8 1Y/\qa[)>t?"i;K#_\z(C$ 7, LV٠{Y /ֈD ]}q$T58E{g;1jqO. 0Pl/ E`?Ԡ ~;Zyv]~7RG*w՗u3.@Mpu< 1ˋ-Ooy*k<+hOdH&ĕ/'=Ɛo q:%$Jį{i+PM8vDGS7kk.6f&8`YûZ)d"^KlteDg^fWJMg@+rDtDuw?(NN190$CHf=W`rX6\-Le& LIT~^h 4 `,W:p ʑbt9jl"VZ{ʤFD(&}eU3?ʡ/qE0O=œ6;7j=O[K#X7[*\ujUt(=h}F{l8p6Gzg;37WԀrkZ{N]j΢4PCWq!-D)ԌWv *ׁ)6pu( 1#C :)ua^]`=LE|(j);#h^ >%R{ 6wX0T3f44&5?uKUI~ @-)7c׉GھAa92٭Ҧ8:?gz57 yD_s *[Dnɬ9p%]# ,~k/5\Q%RoNGz2,Ur?t}\ xI:'^1:99m}N?.*Ͼ;rJ57CU {h.Ś }?.ٹkN֊-f9>Tj-EAbI4"V @S ǧ^r!k૰`+ƍˎ(ÎR43hQ⺶YD7Rk]uUA.mm9ׂb-w/nd{eb_se.ײgtPf'(tJm0ӄt0/V5v{Ie:e;.DOPGP!plgUw.ryi Z:G#Tڪ.fAzU9k@  dD7 Z1eTϔPnb֟Kp&n34Bwȷ,up@LlCCi*W-S*  @QD~Kj‘+^ЬW`~a/_ʄڕAշ">Sɇb۵TWoS;F=u@(=o tV<O<]),(R}lm@`U[4m[1lZ|rx^nu;bHEUQ*iz\^㏐s.U*2dG0wp V(1ۨz,BwElPQM2|oz>+;@ɡjVO,7<3iܻҊ,@[Pϼe^i]@9Yta~%[vVawh3;xԄ"*-ν\#AvjbP _&k 6|%O@>X变ݏwfPI.Y7&;mA7P7/j(RFR`4tmVϲ{ 7L6gD+-Nd ؾzZf8_Q> }5;XY/0L7,VGk\& ݪoC[rBiZB fw6u?#Vf^.m]CXqM&x^^M2E-(;B1뵬"T9>"5y9%)gDT06KR *ReWFbÖԀ{Q8Vx>Y1|M*H?)5H"E$ \`b.#d§)Vmf9Zm9@OmΜ ؟ _Fy?wΖrxdFJx׵0hr0;*w%ޏxWuCi]'ikd`& W.g4w7})r6tD }:.Qq}έc*Qhe.vi֑PE`6bU3;ve_{ߞYI>4RXOFjg=\emI_:dA68 $bJj*uϟ"[nK}>PnoRzD` 4x[b'b* pCH]v} [~tdvw^<29mC9"MR[V2g,aQ.:Pt $ BO7[PYS`X 8FMU])K& 1Ih;X_ěpj74LBLĢ;{?4[L5w @DzaY2鍔bYϴ*k [Js$B~cZqq%2,&6ֆSG]nV#5=Xomo3ؼQ(5 [$!2l MVk&>8Jtyuğ ig?% 6n Q jHyF ,+MFUg`n9?,>M"OdvJD_PXF0yy7.,7m>5:Z7;= FK],/y!3Zʰ:rhh+8j(䚞; "iYV\W{Pu6g^掎>hF4,>P`wl;wT;q)gOssQˏe;lT5PAX_CQ+T7<ؕ};8E!ၲ.+] dY(d@QizL _W=Qf7ahi]鏴-\y)P'qx7i*yLJa_Sm4 ($tbzt| oFNSfQd]csӵ1 |Q&:i  C @q0t#Vߪ͐ƌq\ymOuM^AuIoD^"e%OѴ mh<#V )zUG, PМR;jIu>@GN`B ^;TrbMCYp#5zeL=PgWvwOQ`2?s&7<u|cXqG$&ݿ&A.y_yL;n3&5.gRDQ[me.maG.l-A~9j/T7ZVj,͈ <1GXA➥cZ~NGȹM}Mm͠nq<׽tDJ6WM+ 0-Xr<1)%Zv͌KIM7tD-LCLm<۱09;xCk;Z̭!-WT8\\~KC rT)(ݞ%ܶzh54`}KI3P(Yͫ"l'ƥ~6v#?QO./D&G@L۲ i+`ZwnD)˶c^&Zt=6d`B#݀h}YrBRz"8 Zz ]н!.Ԃ{"?}OI~t$.oB9%H~ =/ B~f$@l$Dࣄ9RΓg2G Vv}gur[ qB,H1γַ ͩŽD1]Ejoך?Us"~rg\NiSiU*'vÃl.0ƈzl@CNZ>]Xt Ƥ ʀ ~.e1 T]Aut{4?vj Cn>[][:.!Q90$Vn&F׾`B"ΎU1 2F%r57[vK3 8"PAb IE1d[gjTw;ɤf:h_# t0XQMp-G%7soLff#$4eODlmuJ ~ikQL5cS:"ؿ̢:q=>,zZ/yUq01[KJ4%ݐg8ݔ8vR|UO8'xb*_ bhK~HŝeNUjLjfYŗ,z% P@!^.bOGC#7HI1FP2 =h'$o,,O+9_bEa{?aǯt+"xf+߈t",g&VͶ)d8ݒ`Fb'w?Xb\4M3ɪ<ѩyPs(h$q!0Rۼn7t:DXsh E<b<MYQD_"3X 8`בldWcTyJO!_Ǘ>P^t 5cSyo `9d^}i^5pQb)E` 8DH(Jz,FRL(i,& em-U ^V&~)J|iX|#(*".\M~F4ë> *@g|@MV̾Ȱ72ϦE6T=ЉlΛąQ*nr|x<܎xhc). m.qDX+6ІBKH\AwzI $_biG#e*@k Ak)r)r).:!MP]`jH d0hANG=R_ű5[JMd$>knK0赣$Ame 0nxZ Oۊ{0c~_1t=eeօgu-;?N1T@DE l]XS7^kMF7)G7Nw6oF%B}BʏЀ;RcЪIڲg&*tDx]um[;ǚmA?gIXs8U Fu"c DRFWf'5rEu&'rxP}#vai!?y|  Qsz5GwOs>il4`1SN)@kv3WpJZ&f_ݨ8KHsV^"ʦ=u}%A f4k s&JFߓ:A@ϐRw.5ҕH5T JtM 8Yş4SXC>ngUnt\q$> n6WEL\uy |xSaXu =`Q_7?Ɠ3LmjEM3OJtL,%?^4bBZGTe42ɊAmJkX7|?t"xVQx0*s/sSTr_}Qw8&Z .fFfرZ]~#tEXeoa^!E}[EaX>Һ.` #_Pns,ׅuΊfٻF3(4f}qXGl'7A#Zj@:;U4W~{rH0!U_;[ąގʛ~5#Ɲ6|24&8q˜imZ%!*:5M7 F=bs#*h8$ܷhˠ m'eA6IS 5F#_kTR]tmgQVdKU$4q*6POUfղ|0=RR>srCBma%M#R)r:jD}f-^msLly^#S/a&~1WoZs. ӬŽ@w*6.dN:0 L\r@DCfgX#J B7!տ|4=tcT3Anf:Yy@zjJ&oĭwL0IeE*O$,Gu?9J'86DMu:s`"itR^|۩6ڱқw<Ø1+A/4c v~0ƨF4m^t?"tQ3S﷍12{'%2mؿn+HiSi#HabaA}lwa%1Fib gBh}A=)ڍ tm&A&*aZs uV2O0g I11_Ͱi,HQg;5y%#oGvB8-D/ic M'鷲=gZLEeRwE 0c>C]=8Qi=YP#R]H?YG;&Q} -y#gNe-t.PLIjR5$[šH>;hxM,§bb7(@q`Ahj.ScN>eĊqT&-@RTk~g~גּG=fAas(uhUN{ xlY ,XlVGl.L{ǥzoP;%&ho.Qe YP2^$WŻiGP+gUmM nh.>T AUgY,Ħ~;C5u ^9|fhFC]1}Ǘt] qaH]%|EM'Z[^ӟiJꑉFA1Gjk0%EfFEi"[,/]Z' + /&>XCl@Bgh7Ƕi7^xơҘjvv9 l8}܁YSܺ#]/Rf^ʿ-Ї\J4,õE{`yB47Jߙ|1Frɖ'1ʡv)D\{Ox&|HK(x)/Okf0deEn.Vt4UJ9R^y2]|"&d!H%K j%0̍>'p.<:2פ bMsJ!12Ԣ7.N`ir?J=X./Y;DXy 2Ckq8<`vi 2;_@B N6k%L昁*Ȩ_(geYL4J(\ڦ4h̯A!BĪcѬAqc͗8\=݆ 7xd{܊e $V2gs듃 HT h =ld8Wү"E'A(0{O:~5^}FnI_r&8L F&#fRGZTm:@xz|03;=&#~tk2TP/<ɠBs2zCZߓ uX}QɲKN[)>sIVIPIv/g>kz+)ĂJ3Yfۿ7QҌBmsg&\2 5vnV\dCtCK0Μ|1#b̜Mb+BQ{! QP+씢iF8A.y)OZꨗAlbFE!‹;{əkUb(nuЫ]L]~uڇ~n<:pBs; 1F]06<2 șcH3TrN:Z񳉉eJ|j peƀ'X?)`ʼu+2]nU&}y2ԏ^~UWPkO!yaN>#Hߝ$;. :Dnwi'f 7OfoIttg0EC(YOMQ+y,%fHG0-uˈ,)!`!W!ۛ yA֑|omAW\[@wB-HY7=+-X Cȶ^+L8$ʡÚ(Qe–\ SJ,&gsg{)y,s#fq;V.Ud?]ـj o5Z#p[J-&8o>PߙV(vZu2TRu_fTKe ^&x{Md=vE۱& x/BQ]7bD̪%8j5YIzO=C&gxT?/rPo]i"lo"\K!켄0 y 6m}yݫ2_+6ܷQb; E[eمeŧDPHV_ O 4Z^y#;Z|tA({"rAӺfMRFEq؏Q/*1eL;C˲ozإfWYFK;n`T%؁NS6H"ӁEդe)=)D$^u<}B4轇ɪ `JJ<KqSV&U&yL6-V)ŧbL~U,*`nP2Gd3n~)Qb¼Â@$/8g1BUXno#aVL$5i$ЭnErf9*Mydo%W#T Eܓ|LPER E##jGIW%_L8Ldϻ^3B1өs `@%_]e\t50>"(J%ДQzY7Mw&Mqw]UZEtCѐ, VӇCؤ_@:@tn9+RL\]P&+g[շʷZ4rdv>w|Ʊkc \8 3 D3JPR Czs am@R*z棪.9l3:ܜ׎>4t7r97mOR4}Y r W!sѶ=*fa{aժWJser@I.tjV^E#fAF[\ mϘ/Cw$PL+"j/o̝,z@XʊyA^H;iMI}L#rt6mXvs3d!R Ƽ3]Xa4IR} 8^#@e2k#iR-oҤ٦LF➺vJdD:3]OEaDtccA|꓄;KPN XGiMI0aPE v`{n?CTRluKY[ƀ&x{2@1?S넸K;9rފ-ox^Q$jgi }2@xb>?QCn 0v ,޼oD˽Hr,)9cyRLwҎFR-,5jZb+ GYxȅMoy-gx'嵑SJ,LМe~5!t.P$0{K`f59u}&B~Ӹf''(MQD'}ü2Ʌ!C(W,*Ik>IZ=C79. +g!Tr}܇{ ұ85Fm[܂m!> Y't=7}{_5V&J[kx˾`',MsO> ߊQE:qQlv5ֈΨs> 4o&paLΥ]D.&vͮ x# sDO Ȕ|'8 -L[Fio]vY]--)5-w3*I]XcHΡ_3.Hc!-ru\xmW zG&*| < Q6df6-J k}!dfpBłl۠>o.B!8#ZӪļ!} Fs_"1q$,8h~R\YXƔ^3K,8h( ,oJor8f膆5`g s{Bhjw97Ʀ &d$Jean ؿŹ3`9wv J1Z)(ޓVcV(/v(ͥ:0vg꣧h,7`!b&]]RcSFKR z8r!H8ޠ({q70 QpxsTfQ!Q:ZOǿ" 9JTªzu2b+kԞ<~Du/e(6*(f@!}Etv{fHgIVҳ^oiVI$vT3lweXT;_o!VYȾz[B4ԄLDЃsx<Rkh`Do0ZO1xl;Jɹa3cRr<<[ÅSM\ĽtQē% Sck|m5,hΛR Jœ4Eֶ-[FˤN#͍ N.U(VY*RKg3W(&g3I8d⣮B)qf4{T,zTK>bpS: Eh_53[I~G*MC$yր6%„?HWn gѻ7bݟ"< |͞N&dABHFy,G7= G&Dnnj'ƚS1fh>AH偯 \xLՈ(ZGZG06ˉ\mWZLC p]ejDdg+ə/(cقv'' qn 6NX)'i\l`bvT ҟ^Xze\ :2k27|kҿx.'t`V&&?jZlmP@qPI]: 6ש~ďa!'!6x[q |*RĻrI1I$_߂'yw[ދ eUrSsAat$jL64$? :Gͼ4tS38_Y V-\"4$si9M=_sD.- PzXW[]0)%Б CMFL,l3N3 JABV`o8J0[3wmԞd)2oqKS2ݔ$MNKo*/<ԕ#_GTWKzëSt)\o]H*Y0!uJs#+|FG6ey*h4Hy$)Z5558̡,GKܰnbZT4tn쐂>좨rAWLLidJW\%4L$KN9ύs~&FZeԼB2?o&C mj[Rf] Re08=}vy;',+4jffZPgp|Vٯ'J lKgu-ȼ.O"%SӘJ ;e;|? X9:_ :2?a͖oFA&p]vx$l> o%k`c+( `GgдVżS5Aȸׁlc(onE.Hi؏ssq !KCxf6D"$BhAW4*K;a +"_UH<H n@h9\Qˡxyj>8sq]l\y}MezPtm_UwQmmIrTQ-U_ZNu9v9(Ǭ.Pa0o,"+|MGq=>& &ܙUگd7'=@h6qwn³|)R]|0(KZ@@<]Wfȅ/z7uvwﱀ(ss@w.+y8*"5ԉ >5H1<\iZKj}d]_Acfh'^)H oσv875@iH֏LPR ;8vbrֵ|?Z\nPx]&\AhPottWMIuh# [|\srFl$r([=U<*qKy Ҩ{@&D;/~Fe ",KacP  '7.Rr/he4Da`khXYwMHob`0SDB[0թO#QT\0PgoؤKVɎBFaB /]+_<L8mXsyWr+)};hdQ FE`D~q HQZh㫏 *pHߋewpK)k'; 'zFL^\0e`mR,3-ަeuMڝ k*A&VlOk<$es|[ۓrgld<]y Md<|ҧ35əUN/:5VeąXdEmqdR3!'BSʂĩ3@^'>#4=7&hBO oWȘ.QC'Sahn]lkϘ YG9~nEv T/à/-jHz~pO^t@LݕȔQWq\Uϡ4qZDEǖRV]Qk1)t':y50, Vv%N䒥I 6NYs`o?T5⛐{~Fn>aL4~=[3%w(,uPAo-D]g1$Uٿ;> \V3c>{u!Z7lմ( A}ECc+[1h[`ZzI Ur֐!|\ el6)LdY߻W@RC;0Lϫ+giQlK_,R/˴C7{Ͳ$QlG .DgEO-}tKJCq\z/G?,^ihd&b_MS?Yf]h[+baѻ &S5u!ZËv2%B%.뺽rH֑́t@@c{/G1CpѥkxWn>q83U!:؅6n[|ӭy++.&7Y:ᄉ3uC} С su`5¹*W= 藞| Jr0sM1JD5lg&c4m8!Ugxj;v#\\Ѥr7=}}GyDrCzYdil܆c˹7PO?BY[ 'لcvQT*]y1Ȑf4X\DFQg Zudd9~W'@I=/DAV.7Aʟq62rN/iJVQx-y׃衲`n-`&=s}n~X2,|hʉ+iu' $`85hnJأKQn=j^J}wh‹(^ %Sj6֍߀Xtf6ƛktRd E\g.[J4 2 9&mHCc7ڬP*5o%]ɋ6sG&*Mp88~ ecGeȋ Ojp#~7̴5&8oVXޅZ~!H{ t^;07V•f^^;p3Ż}o~( W a#u8{(Daq?l}^ b.ZLJ;!|fqfeKYOt*yEo}{E\>E1 ?ۀYL 9"&dKĘRH2h2I2e'X"SARAjUoa4]lʸQj<|;OUco%_'R1xˮR8gK{(-8^ 7=qDpUM'wZQáf|_la+ LiV%6X}^};]=I~` %aY9+'*L(5M8]y.ͤ^KK}1d?bB9Za}C,3tTK7؏[وn`X*CV즍1GYϴT֝<+ѧLd9AqwN5զ4SFv' -3!iMƈx[0mSo+yE$2SI^05nsqeiHi'LL vH ^wa I%Lax!bZzFsA%kNP @բ8uD Aχmg&F+\Zs_M) VҍbւfyB?0}x{)TSYzc$8b~_xSg&*o7ȡtC:Ǫ)XDpDͱj3&]_}VÂ8s>L*T7w7BFi^WBSd@ihT $o" FEIoe6e4OW*_}\-RʜfmςȒ҈"`t 푈i` ~!]N r •<De/ ̝wg2X5nԷS2k A>!Mb.vu+hz/[}v/払;Q5;9) x듯@dc$d>|Y[&옃>vxsh^.6t)fk8:g8|e%ƢѡL'Eo&9K\=$gw* Ws݂4 wEawhxv%]`ygqq5*Ė0ͣ7s]= -uX@xHs+m3oT`_] /jvp3ESA[(kL9 zkq#l+!ڙ% 20%+޾/J؃Ջm!9C @$ʙ\sPC`#2Y<҄+QHVD0V¤,{p|R#Y!tS`͑.E>Un}8 ȴ壼Oo2$1Z75'P]Mr{bls\r(֨(u!!ꦧғiK/O>ǵ3#0M#@y->LWT/s{Lz}1`p*Gƌ\|0O`?ibapG( MWp_F >Q 0Zզ7H:PPb[M}6G돇 Xnsah-}I&dL^esAh|U@v~a+_pb|4U"֡ Y G6or߷O@M>N(IQXt`8uWG?.3Ukca!^  ,KJ "w"H2 س'&P 1 F[ԗ2"+_ba/TRp&7gv&j .ˤM_=AZywѨӻ@pɝ9FUȾinlDU4ձ ͚eV-.л L3 }{0A½ լfs("/:B7m=O;QiCTInBSu[an;(ͣtEMh@d ʸD`$:~0MN0;fq:.p>S 0&3-z4 z|c5 UH(XѩyW$=}aY@[ L=bjKegv PJOE'|ߓ99U ֲ y ] W2%=E۸03@lo^s 0~dX\ꪞmO2:|zZC8f['Ք4_0|T~,;$&bIVޞ<׵MPmX2;`LzC9Cj}}i9T'cC Y|_U Os[ sK_ *FAi XYȭKfG{2eR`Z'*c ڌ툿50"/B}?%!X"x~=& P2 Y<9xht5ݣl3I/t[{c ;p@=ؐR4>ZWO>YP ""Ca?e湚bY~pÿvt~0632QMմgAYa#kDҝEb@RaS2H nBB%3&Fo'e_j{6! ϊPrh"j\[HvT ZVFWرMo#Oghkֲ1/C3ɕ0#wvvd(?16tn+GS8.6J) `AqxxcMJ ܂xː?t1$[1o̬]-'9"R!=,*C<(m'B5J U2y7éFp}KL)uog$8i`y~{KK,oja-$)$`Iܺ{'CC n܉o \گG s[v2qJCW":Yoo>z#s>YO6,t۪ 7aUPA&,:z1),f BabwSo>|^~h Ȥ xk'cƺ~oÒe' p`}Yƶ +\@\x!}"u+.b W!ܚȋWzN/w);!,[!WdeT cp8Igp+u- nbtPOP9wb9F;sM6K/&h;v:BX2jphp@?;&XMߖfH9_JpRcn!@>.5scG5Ձ I ¨CJ.̕P;]^!pȨhXYPu߭B[k꫽G-lg"rcg="j jU-z9>e0q+j7u4sՅ8wjT[n"E>|!`o^ av]rϏb1VLˌU[:EE&zx/*X{)oky-II[ {gU*~9Xpӄi$&أؙ9m-j>,fQLlw#Pϼ%E*Owd:ʫ:'?V+q5}SSKI@UZDlȀSy@_ݴ%dŏbsV/72cug-nN]oJv}e4>HIB ֩6fu^dk;ש -!7g[EQ s}Z0ox{Wd s%M47#b%/toi!ߚI,;-߲D*KOdw\~~,~mJτ#'l}YBX1E I9x^e [%%[6ߐG@̙kvZ`@!6)s(IS?byc-$-qdLw - } f"jy\2 HR=g&msx<{(ʐ̃ UDWBG:ƭc`%.Q:ƺvc#`/}bzT jct_+7.0Z/,ä6ӕr'ijkbN;#φ]l AV>ʰ4-P5jaOf@&ra`QfD?hD zQ _M%LBCG$,H(%e|:^%]knx6?^/CliDDg&mWſSA g,'opڊ"|Zl }t"fםKuVi\g%c0ĸF1LtN;IsQfnSdvݩ%ZAGZj M=a/ƌɍȋCi=@:%wUՙyTiXNږg*(/mRVf,r)ݕe:-G"g! E ]*~ݦ4UUEp`gd$/wicV >wrPsvUpW-uf RYe"MmM'$ TJ3+ݦ2뮩vAx2jEZqB= t:5+gm<':3CGOG4XH ՐS)`H%ML[zG>'y՗)e?*|~Rt`n}M@;]/J*źI"xH}O[9Wy^R!*g@"?L087e {H5]~DD~R-/>TV"iRt:ò; k_NㆁҔl2Fh'Ӂt@5p37"W60ՃBgSpǎxG ]Mfr =W;TD&\u^F#ylH*mh=芮/2Ry~NLI8u`o#_$7q}cA-q| 9Ը9Փh +D,|VAL5opWnHU:1jL7Y̗5<|3]owIiu\\͉ͮC1*'v]~.ݦzRZZ."^N䞊c{Jn:9Sɍ1~B]r o><:JUl &pCǑr$Gu4%sYLbb\6y֤tF?CF!$k=^pW$ҧ~c(l5% fOX2Wq%fe)эϹ|lnquQ?O FdxZQ6h$;w y\``=ߞ9a0G5YFu oL,}g$i A XHYoF=LCof:tzS?$xkb؏ŨÆ r}v׶=D6ZVM 9K}t[oDD o֎`'ɤ`L(ueI"WMٞGK֯G*[Y}&ޤv@#& '$Z }[US쪥>= iJ/ yZ{`^C9~|u xmq'Wei}Ns.șQt>8!i)Ina,.F2h ڟ?MW*`&ldUkgL goK'.u"1WOFrNvrxކ8Iio Hi9Rk48 NMFmj٨\yǰs9Fl* .O 71iol}\<4a'{"Mh-3+yuEbJ85sI%IR80g#e=y'P3:@mshrU&jE%=BI !.ja$=XҢHhȏ ^!mU4wM с?҉%NGi?~HVicUstGi_fTQ~[OF"-u'#8* z߇:3j~L#Rt[G[yu~8YHEGI-\޸3'"&s,sv<#ҳn=ַ-ٶXAPD2$5ޘ>Wž7 H*" ++/^?mfRaqX`cб4Ҥ9#ۘ4n${W'p^.'(zIرpO# oͱkh0U*T*pŹ=inW7_| 9yPqR ꥒ%uvH5X'5 i°a}O=.ٞ|L6tm}cs_ {UɏX/Dq92BJG:uJqWr/J,:])ނy~fѳ]T kq"Cx6~FY,is65fIUuu݆N~ަ789daAϼ]dDǛ"nsƜDkɈWp6'bNa)(4[5'jGJϪSzb} a€nF2_MAR3'֜)%! ':rtr `/`8;IVMa(' ~=q ?CNh׻˔ )4tD'lkK;6)U ?JI yB""<+)RTKJr7h+튍lxiL7.K+2YDW|\T!%pWCR6nJCR ͣNnjlv=g#-;AX~)`rSX 5Np,T,-Vg0=xJF2½#qf*MY9?Ց'?w CvLr2<|o#`'L*=tdnꝶF\tk xOlH–6IIY6ag:XgY}0h"{-MMoEKR4iivx, 9S8u rw jQ(fp֬);o WV϶>1=hd1}G,` x/{L0EM`M!qO0f RMdWnS-uQBX3|32 w^qP00Zo -)hO+?킐`Yô&< w*)~\<:2J%H\4 #=dKi^>y#Ӟ/AɴAr"0! ӰxhW6? }bC)o1Q{cŌsy{nYRά#^rc$޳,{{ AL:ȦܤVQm,kW]c˧5`^ӥoN\V6qp.S]Urp5:tMZm'oD8뎀jȹSWH0@\h_ڑl&bȑ4-wS-5z"-%< >1tٕq(Gs%Xxtn, Tӵhx dTYcG- %&jS,\F^Ԇ=O1V<=DnWN G}9ԅjjC|pv䤫 jx<׻OV2G`&Zq6^ 3<y/#+ S2xlRI05 zf 8 y5;ڡ7/eٕ:Bյ}Ο1&M=wӘsg %zIYkvXO, o|mTX$lIL'}~l!h:LW@#௞fAǻޢPU.Y]Y G[<;Q//SY5ɇc JaE(=7*_\) Ъ=Oxǝ_hׂ9OE1A8i 9W?lY1ʞkI8SȸL<QYq[X Dn>}o\*+EkxxNYe7v%$]$vN1tyBT']QNw^D\j-h{Od?[$X1"䏧.Xu3_S^ﯠ G~S@$zbOS˧hJ#%W$3^/Pz,Š0)#N6HKs+5N Az8d@dSn V#|B<+J2lU pԋ-ui^5_AB ~ ($7B*/TGpo YVAxT+B^@Mjc}UE]PDŽJ ^16p{׿nX60w&[ m.yP"~4H UM߶1.M΍LĔu(n ÄR -'=*%Є<\8ߣ;H~?@ ZK71J;R,W11)B:lh |:/<+kX34?#C޳45Z/տyO:z}2yf<(KB~.S23s<{2_ y))yHl**j,\WEs/Kʣ?cl<6egZ%pW~eŠkJ& F *:9GǪlIɊ倳@C*;O%[MΧًbY\2t_TW8I*_ne,1G(%fe|awٺ`Y>;.7 Kɾk j#O["%Zjf-hH\V͝˟Oӟ#_@RJsƸp%~ Z+YleYN@p8Q" ܎A0Alo/lZDN'O 谡 k(zWI1'15oAnO}`AabK[w ޱqߦFΩ5G\Bvܱߋ=r/>MCtEڍ=(5qv,ڎ+~uృ;gwhHc 31,NǾis\vi I vP\ |%秡5j<$ `5ySjG46tSП5֔Y"r Vuvkb?u?M tQ +u>(8bdxCD*zlj}K5'Zu&&U|yCӣ&y5Js?Ge`?;ړwc%keA@,N/Z6ҢDo]z]}c0;eHk(cm`(: N=062FŨ*6@Aݢ@L d\xoىV KEtd̠H.)%tFn0:|" Pa_G5}Q&mͱ*f,ckl=ATI V}e_I2]^ tU*Нͨ5:QtΌ|[9t[q)(&| g;{׼*%bpt]{G&l )z̾d⸻WҠ2:{b-nưMѩ>)xA8 (RiB#>^1n7 ̈Jafā]B"%C+k'emzәDQC6Xvuje"D )<BxZK99IB2*ٶoyC/r0C]'U`0 ƴ%%.ȽEIضS2$o@i*; ,o(;H8:ŧr7.7x].%6u`9V(-=v6GM#")`(6N ڌ"(PJ,ׅ]Ϳ"ƁDŌ7DV- ,)zfƾX6@=Շ`$[etZ"o$1jm!i !A]sɷ1 (ؑszZqx.T>]fYU}?+:Jѡsb{iF/ k/q.qǒ*wq#>%Y$o[,>a:<"`$TdF, Gt8һFto~OMQ Qu~\JPݤҹuH,G '< af98QyGA&vǜ(SW@簋%h DǪR"3~;#sgMں^F Aw&mp3N chFÅs2tVQM.Z%C=v"1B}_u6N%S12qTM s]5#nsA>*ZWזMl7G?MW- cH#;1^1M< + DLX 19&c50U"+_yV C4{*w'+v#|ߜ_Iŕg#S-pC؆Q rkë5]YS.\cΫF)CC 'd[s2 =Lo߻C,ʍd˓8̊F d,mA`s&6PiЉ /K(nAذCJglp0+8GkoE7ȧ9^~QxSƿ;C*)Ò! 9$ O Ҧ) TCW]W#Y рT7#WK!L  X$Qx2zZūY }#)[$>4Nu,Oز0(^8n䜰Gy>0#ʗk}&Di05}Aq✋3YU`1`/!n@% sAolT]H8F@c,S.U?wǍߏU&fwDci'W;UOױ?fA t}^yZb ~̥Q ldAQ@T˧ vhԡW2C?I9q6SOfb*{)䙶x>H[J wk&8gW^77HFSl R:9.a ^7B뉘>$)j&^Nߑ-~\YKo^5+ʤͨ>!6趒DERN%k&vL5PjT ]d)cޮxOᑌV#(2OaAօ EȎB`Q-*Ty𽴚M ʂvPl(顟([jAgrd*\_NAt …(d+ֈb -?A|`̥k$4{SD&w:nEBޗ6a .,v`Fp)gqlm#1OYLvTqm*s;d V74- f&3e-EiyБZ;ѝ,iMh>|_]MX}>Iq{z$(Qm_=V}8~ap)1+YyKO? ټy0TgIDũe9WH-[Kؾs~´Y<$5q~0(6Qtкn;¬ f7C]]sG@H 2IvXU* .˫W{ `"fW*k.]LV}u5cb ESҦmkbmؾO:@_)/=)xrCm4cБGS든~:37h7%H>9"1K H[J)Q4%(p|f,N؇r..&=x2X:gE:vBɵ" SI\Js+@^ hYK'N%Z8{2#! YE\~I>談+u#{nՈN⧷>X31Q,0BE鑒*~`; ХV\5[X-d ј.=UU孒&KO1k5Va-Abߏ]`>7wI3XSي?[P(UiWZ.XRggjsDx+F-4[Vr:cY34Xv_]Ne eMd ~1Y,a"ŏeϸ1=B=kɓ&6M)4$cjut.ûHo;1[rW)nYHAwg-&-VPBAXu$w@)D۪gci)K M|i e6 (g,$o7+Jp(a]uӀcۼfO%%R%VaQjG#t 7?D7ֽ ,\Wl=2}o1B :G%2Wi-iSAʖt}bވU@`Riũ2IqD>r5[3\rupT0:.D$I5I0U71 o;SBMTj4dh6u  O #yyL4 F&*(z<39)Yy,ybd /r6wTcxsJ6Rcݮq̌q==63c5,nԯ5YJl/ mYD[ >Z5 1Z!QN,z%/m}$kr-}nF*L5y*^g"7ˍ3y͑H9Ⱥ1&c0|Iy%$=KQAg;+< FS_ǹKU^+|7}InBs7G"wTݷ[i20f%;eYA{I-O:>T"YygfVw}E4Qx d,ַ'2cBhϴHG+[ @Hמ~²ZNpJ]tO@w8'EiePI#VJ9#8S֦Ć!ݯ2F=Ҧu8hS3\SYU7WgB3q0C![n_~NCp=^-(B::A4^0~b,ǟ;ZhծϞ{;(OUDb=.7WvZϢ1 w Tkyf 8 ;|DDPԜ(AL+EKbqNÀ&ͅFե!l\{T% %ng8zre%2wͣff^3@W&FSk`2sdwnwƒ^Fn"ӵ‰1e]kᶺ^0ɓ4cϒKua yBؖ7Q7CIֆ}:M Ywe!7V.x A搯a`ߧ\'ew 'e%CiR^6'믔%Nszˊ 1G";peoa*RmRfb`5f\$hCa LD voוT0u_*aF;\y!8^%L9z gftISj_퇙:'2ח)[v:sD1t^% 1B_|_AutuPspE?rTf!<7WG_0.^qD g6F!kV'[,5Wqz_" %z/񮵕 0;lPB: ,ovpĭhE/Sl e Mt-w`?CU[ۀNl RteHzYfK%Ja;'}iQ=H_45H" ZE1w8#XXG׵pC 3B(d \袶仉dQ{XU!l]Hxc`Q|Pfx OGKGpO"h3KJ&XrD|WQ6+R兕nr)4 5@,-O|>#;7o3cW'_dRuC4,8ejLɿXS>iP 9|sfzL&U7\|΍Jk !`Hh ~˓SW ;OrҞaPfETNx93xWf4gQm@2G$'#&ʁ_%Q6_lSL|PV@-10i =|i'|(ϭ:551* U|.&ߘ.M 92dW9H]zWXc;U\&_GNho1we1!fɬ7ЋC)];Jol̴փJ-8Z΂YnUb`j;L4rD E\>fDm&.: 5Y9Zw !\Hu}>'XWxGmRb~MON3JC-쑼i91I@BYӛg2nݽy|P ;Q)0VֺŇ/TlCMPj֔Dr6. hp JRcq;Ѝ.$R&e0T{ jEH]f2wwloKJg=8:sMJ!53S5^nO|KY;`W׈@c% TJ|"/(vŸ: ]+E\?\!h[^XJ{Ievb͌$t'D=Nw#^е琼1]ƖV;gle|<2$.'a*u% ݎ)1RAa9\W sm9؜汧( aUVl N(̮~& pX\ZJ_kq;x:T»#Q3Q^UHHup^\dG*=8 z:w4iA 0[PVg dfH@[MV-יZǍ&UoJl6{iMlU]m K嶭V_H8"yQ\O&'&ɚ}'I.t6;Yf)'CpԂAfg ҥbCo+p+ձI؅K])Ġy99K2{ҴSitdRiՍL;%BavPt0^W!UF^j&˥&^EWꡚV`-Xpت"s~)+!9ml点 :EN3HG[J q?|؂D{wҕ" B8̯/H/],?\p :6od֬u[UbUmW;ʉe6bwsLԒ;9x1 :eƴ2A@Ai14( ˗爺#"1̽؆+Z"&{± H~o{t~OLL7cBPp*F\vҨ֯K V ?'Z6or|eWЋ_*. CEN̨l^PO)Pw)ik`Y?鯬8SZiٯK'Zb{MwBi ' c'}JUX/(uVyޗR xʹ57lv^VI'/H 7hܝlҿ!({z-ԇiiI9uÍ) fMVN _vLȔ8QQ=@n,tT mO@};ogg~M?r;QzÀg2Y]f(z2+l`qX)݅&;[ē}$ZB nI%+r0 { K5,PCGL#"4D&MV $y>O FhfJS`[%DCQ;/.x@yxӎ`p+T ^OJ5\EX3mWA?a\ADC|يο.Dp7sBa[#!)}@QՇ9% xpGPO3T5G/f0rJW\o,yp 2OK~ eӐbq\̃lw9d;OjJݵm' .;ecNQ'|lc7j9~&2upy-}&aЂN4=ݭ@T.N}o6Gh%O{e¢q&s`%JOj&aJwrzWb im'JC$uExבq d徚uKi7 * jSY:T{Uhtuztl1C &3g1RskR@s &p_nV^:B [0&KقGtQBa<˜'0?a2tVPN=Up;"+w=sbzó 7obm nF~'gn1t~1zxOE5o#%Ϟ\g Y%Oԙ-&[١68l9Nlw&s1\D]Ya|Jr˞㑼ꅡNXkH5v |GO@dm"9謀FKThǢO7k2.G6یBqt VUG }混#u,,Gh)νk){VW(jxیbTvɕ d%(J GUɱ8~1Nxَ^D4zh'{3[MT \@eNy.DL-c G !f H=EM""( JM-$/L.>s- Ag Vh F`(n.-.|tf4AF_Cu],aP|@$8 B{-]I: Z%Ih:PZxԜ%kߎ ف p m j0/ m./K!,Sm>igS:f V>1`BƏu4Vi>5;p xBA0K/=)G%X 3.;AE:?SQ|R;fOT|%Gd%EOqDջgfwNIJA;)2@i {`j;d=rjހz™;ܨ; 9;nS=gӌn9PòYfP/~q\`Ԕpeښlo=ajѮd[E.o=uUk5J(CSEtҟ:@d0X}Ђv۱DI}B.lm LFre8uZl6[V c@PG͋AqQ60/IV@5'IE!!؁B񜉼'Ay%]1E)wO܄9j՗s[ JLUs-[j<^$QUr#FEJ-&#'աMcvx4C9?>qRdu]|Xҩ`cQ}ʿ72-J#dj `2UF4)kD'XkMR 5Q.2_$^^?RT}t_.,\SEJM.hQ&ʇN?džC]FYDmS|p n6U#69vN#^0efc/r/p[2P]tMT<ghI14K`\R7ZX~Cd4 1.B{*8΅R^^$ ٯ\L MsB7(2L&.F 4(t*d hQ,:Aj4{zt2\e0t PlyJ9y0N?G3kJ%QgyN!KH7. FgCvc~=J4|'`Í6DfP ]7yu8mw <w˓ VUvs.rXPD\(SݏmIFjy'5,˟S(0bko}8qMF6V^jí(t냜}pڒ:Vb8WDNHMۀ54w6]Z/sgxuGOqTrꂥDl~\]|ӇE3O+|.hV!*1D!>不/~ͺaP+: ݳOLx*80 Bo)uQ?F-:zb \:LQa\q!4fU+XµY&awBk"ϡ7Rjtt7w)s5u5MQzե>1s0Mb<î0o YgH ݚjV*B =PuGIgM;n~[[[ P\_@rN$2sXq&&pkIuRPSfC^f%9y![f!}T~nO/Xch4iЅ-yt:̲@Prss9{tz$΅0TߘcP% &:"#㚋1dCAɢG/U[. snrIq#-p#S"%؛] ~3z|j!]jro*10CX_`5l")u1^퓙% X୛|ٟU#]N곕9(P?] e^4T*FL#Nl0yͽ5f@uMP9m2c&]7^bCX1@wER贲} +سi.ڡo0KM֠1',=lq6a-[f!(XoH=K4j+˖k%V`!|Z5+r}?G\_d?Dzl/w&+z+=5i"LEQ3oS`:H*4l긻v2")Q ySmW;sx4s1?YO'"|1D ֨\1kDYtpB"H"D&QT~`Ez:^]-ŕxJ'ta2mڴb%\65PVOgk_rrT+6wTt5jʼn. Z}ghh\O hw5V^,sC@JO~D$K'r2a'{PE+`a+`f'8[nҕwc,- |ʡcϧrU>/M yNTvWw(=c%r a.׊YM4vG(1ϒK y]wz *MPmS/|No]*.Ή]/aUw51-]Zς`SfKjQMnN-`C%ܒu@(-*-DvbE;a ;5#_U2Bdžs2VK du [QA𚧾lhKO ;#_\2&N YJnE2 y?>7w&m$RqkPGNleYZ‰qzd\h~fv5WyÑխiz>Ve)8(jM0{^ng+Aw* $,F^Cd /H6"cW]&?lH|% F`*y\!F\1\/NCPD&GkqqP])$Gz}Ƒ!$T&aѨN} [hub@Nxh}2qTR,,@}u /Cm& }\ZGb)jt1{&)>ۙRS!_C4=x$["];jJHWĊW]hڦ j1{[2/c}!Rb뤹[&$+lkĻ@-0eJ*8 5=wh'%- ,Z+@[ڵe~@|1S^VQ”6-#Kź3 ȅE4gӤCU/S,9ͯnߋoV-01R 80$ۄ$XL(wjDK7$ |Z-~X{oU>#SNXwWBC\Z jӵq!.&k)o붣g#|"X K >'Z"x;г,R TQ`?14"va \x@{#{sb''ݑ gx{rS͜Yʖ =F6k7qji?IKJf[An`jOw o!r7^B$˜ 0<̞"";)TWӄp9ZߐeK [Cʤusi8*''d2.Q3v"rjPD_u#LJJ<Of3#.] mJqɥ03a |iBU?3-8]-8XMsE]D],2h#\ctIG3pJkI)e,>CzY⟢tB6,'`eK59LB@yXL$_{}WU_iw>C[vP':1pQׄF.YL_>~4 J6C @$T'Vاq5Tl)`셽m;9)Gha(s+L~cwkKR|!i[L{3~5>r/͝ixNhU4}XIvEG%E>%$S}?$#+/c+8inEt7p:GXҠb\Wj5/w?@OZ/[U~^3 FENR=QX#@V ަEskڹ7Fx%]|NGsGY@%zMz#aИzl[ɽFs&.Z.f&+5 HVO H38CNxRoQoaMb7mS݇*g-n9ˮ9j\_xiϢZ;ՏrY7ɺwG?Il/_0HhZ[iogs.a_N2 , JçcT3?*td>9<Ƒ$Wj?WAC֫geCj:c?3Q?و̰߸,i(I߫Auo>+RNuz;4_ &oKMch4>C/#OF~/<1--5efY]mYl}EAQ+ÊE:G[xY|V cEՐe,~>)@߱dbtъ}X{ RmFҌ~4+]V??k\vD&:#C E3y.Ff7kߨCk..@Q' yMWLޑB¼ HáH84+nӄO!W佚A"Z8?3ۉ"8SqNj(<abvQ\3{q2q2qZ+}U_͔-1Mɭtt,E~ |bi?\ =\C3?ժ'ys?6CkBYM #܄+%F$[Gٜn̐ѻ}B%$I@~` iaD4Y4S@9_6cy[㭊AIH0ymvqeQ w%didkRJ FGnR,~ =n O}ZVghѣBbUU٘2 p;h r/qAX\O]Zx_bz:`ר@%n6tBॷ*ptTguG7sSV %|;ب詻EV#=~jnexl!f=Нz2>Ὕn6) ֆxB@ît`21kx;àG_9^Q[ Ϻ߃_񳃡=o zd?"ߥW6R'ZDqǎ "Ϡ}ܙKcsXwm+#3$ 4%$gcV3uh1\>ҡ w9̓mi],χ ȏ>g7<;0e wY=%6DR\ZD:8\Tu{lI iGߠ}V0H3{ϓ-p=mIt[tHrUy3 $;_7eF2FAFRLVg~)#,0MQ(==yfSeD 2l>7*gGV LMY 5? fQ߬F h -<>3d80GOs5<=(U ' l_(ȁ1.XWHG9Le`Cm`  AG{[;ё&x: *:aL4yfR~7p[0>Fi;AyA>s7!3Q-Ln. ?@{H=IV. dO-+<,`8D8֏h< X >ӕ,J}Jg$V(q.n2Hvۡ\'ښr>d%ΆaEvv> IDL)>M!" /=yxo??wsñNܢo \zTUϓwr 8xft`ǴdI6^yT1fv-jE;:4ytejUcE8iñvGSO-:!%7Bh5C& ŵ`tmX:M8oq$ͽ[m9Ӹ+ϊhzf-WۑbXӧHƷ{ do! vm57`e>D\G7Iھw7:/:=vchTcd8R-L)>%('ia6tyi;peʰ xJg76E Ȫ/ELE[ ULw'5~|L(*<81mcc?wXQwL20#aYF`*f.ԽTՃ=DŽ=e6)ȼ|ag@rpEat, 嬸1i>J{+pdrA :w WΉr9 i Be+vWƪ~ $vƂ8O6m;qZ "rgρDa3cRv HO~|GDxiYTH}*[ !7?*rE@"wEydx ݳ{+ *SoM,)IA^V?@GXKNH6 y21 8|v8{seten 4/?n洐sx0j-`ⱥj43X&ЄX+*\bz&p3# `vUi4ƾ#6z5{o:8 XEtiM^Ad-HS%[MT(| ``!fFA 5ar!%÷4%WISC%BBRC Зf^PU gvwRQƼ/Ad얝t#LV,$z3F @DS@QKQl>h:h/<>jk!2~[ 9πlfPh&_ݎӤi*7 1C&m)nF1QBW.FO,ʨk\w!^"!$~S{J]d>g03@9#y)[Z+3|~q~[k'L76i6,BQvlL[],Bt@WoP:5MX_Xs2rjCQwۻG_}_ f:윖*apB$R7BgK8ƾٱV a~$KMۼx#fS o5]u}x (k,~jh˗$C0ᛝg /Xrt1hVB^IfX幊kƔ !X#S(qTb%٭\,/ }dq{tߝFjU \45;)6H'֭ }^b>!Y]ږJbT̉?&i,B<3Èh++:pk: ZڬpJ,U$I[wJ Qv[ϒci+0Nzs_+a u$fWaIŅwXv[UZ_\Kݫu˦>\}'}Vȣp}OY$k;+ ]g~.=L9.6@@%zJW22öfrԉ7`띌9{狗g\2e'3x+8fT1SzTZkܕ O$DkgVr绰[Fnƭk o{R8 l"B1˱8ihev*Yz"__F$+hN(\*ѹU6IJ1-/5gp*+0G(m}r'8Ԯ4t$۞Bu#_WBg-1$:f)Qv +ڮ7 E({">]txTƈ;[S9G&!u@̋{ɡOz4n؎:*X'ѪXwɕa6#"fxrIߵiUu=dw}徤Z̨uȠ*_pon.9:=+Y&OBkB%_o(qva6ָT=ef0؟Y{F! 69:Zv#y:ͬ/3m8Y/Q/V]e-:\ʘK(k-u\lV 6naSdZpudxzR5By7vrII&euS;q5{u{CZpjx"-m}rvnu@t4Gw9F̻/kbĢGQOIq7&Љ0XJyY٭`#ޙ|5 ] e/ٕ@\Ϧ+B-rG"ϟz['2IEbl"WwA eh&䰚K 6;mV f" Oe1zs 0-1{b9.dOut: m;,ž܎9#h1S% X1Y#GI۳ҋQZo]tF>awY@| w߷Ek,̇5XXk.*cin/(#ԑxbրyb> [ܧ;%??d!7‹ri%JIiMdL)+O8FlEu`ͪw| t~H|+c(`]BFAp SOkN~/1mDdSJ!SV4+<=JZZgò}ܘ@rQي6АGwslZ} $Fg#B0ֹLIIۨWF'_'d޸CyFk]HI(޷84?IWtD #QC G/D+Ocl#gB &XaCjNt 5K]/^4t|fRJa`J?&RT9.cB(UlEerT8ːuK ~2!&DwaSh( ~eL=m2{ DИ=b]mX킛NQx S 84K.GcqӍw&c[ ' <+=++x=sj%,J$iKLa"Ѕax#k"~D OPP.98s\⹋~XEA^6)s B1LO0AG\g{*+MUgmeАSt,'TÁqM!N"A@1讄dTeYp<8TM)8}7qՇ-wcd`(l ̶?G`6ɕdODM2A;=1 69 _rx#?A ؇1BtR <=9)T,Tp+ ׾e=ө}BuCj.ȧ0|BG@E+V#3%pEIP|*lU^sFT &J\*N- Wo`!Nxх_#Cc=s(u| c> I?,sH+gɬtm.ڦ$ϴ%Bqea}Pu߉!@=L u+_}Z3_Yg^o(qYFDKYb$wmRtM_u(:]xv1j OLrGY6g57[0D7QOcBA,rB&,M\Mtni^J, I7 kc=G Z[_Ս QjLyF8\܎1&SUu(m7G|fie6D7"F$yL` ~!`Hrݜ>+]m-ia*JssD"0@E@:ƚuSun6lVC泤X?84fg^KM@|fO2HȖ@"> 3;KDs 3{;A00 ,>$+"HiDb· f{8t/LƟW2حD⹤%@rmRU[äNs{YUrg8lWMk:uzpϓDi _pAD~YNBq ũ9x{ƍaQuHDב#A>^vPY"|'T`vGNE$ k$/ka( K̪CH&P!I@[N})FI~^nRq`O(ctrH@O @CZa\e#+rUJ7 PREhÖ~ "yQ'frk\Wur{F(;jr7iR `^P7:ճ=IwauiR#uobP.F,\?uapAG%`Kt꘾zsrb2ns'HĬxt :=V46I-]t:Υ \$yٰsH7j<ְ="Sf8sI;&jqQWuZ+ۯLkkȇN3 C6[O=xD)7l̑LO@\ $Ɗ3r͉h֧yGzS7Ғݺ4# CCƘ͹r15 WWóM)4@]ӟe5(sli5j"ʻvݶ11d8;ʝՃYEKug{Uk󓟠(ٯzDGWJT?Kǩ N+e$@mBԤjt!>t%8wZ*5Ll)@9rGNH8  ޚ"X^s9^o7- 8 ~Rhm`p9VZyfY\!0Ƽ&k\Bʺve2|PUXI>.,QvN)ܛ+5xE =n̠wZ9 um Ȟ5DĦ*X7avFTNjPM{ ׾ Uj8nqMdBgE<ȭw>Gea,T)^>paܼ%GSo5?t<^'[sfD)m5k7O',V )NLU\R#+ĕ s֭9P˨B-AȞ V )M5%^W`멛t7%p۰f,6`3rK%RwWOM|Dy#WN :qi۽ANrDj.$`VpR_5rJAN߹TtjeA9 G3Zs&`$g`9t#B 0Qj),; ,E1\ʴ2 b{\E& iX]svU)*lrT5 ڊ32x03.zK԰xwK鎞p7vY3xlLFXߍXNX( "3?Q T~OK> 95s23)Zᛱ(*g)yҮߎ3Q+㷷'vR$+<ڷ,S8` /ӂSAaKjsiïz]4$t$/r61ʃ\pxr*gG8)ҩPje\˥X>co$kcG˓_`)#PbޖtjCvlϪTu&>b!<(WYgiiTo|qzgw׵IU]"d2-u,)d_3ռ%@67Տz>e$ӓ6Q46h,9_6nӋ:p>g}V87_~ؚ^y˭9lG:kEw-AI|^$gLmQSTeV+忲D%b9$b}G0{09 6K>Hn:oOTEZI/ߊz~SB ULҳq+͍6SLK nQkcn/rl 0xN+ Ĩ'#>l`?qP(y^D\zAP 8T@;1n i7 W /-rpŜB܂K' %9ť  ADFt{姁,rEJ n<:͐4-"f=f~#WKr6IՐZ0Wo+S@Ӟld`gJL)rM3M>vʼQأ\\ASo]'gE*h)Jj _ #hxl.V's 2NiW!+ځՀ泌DƳp5cҤ$UěP7_0Wpz7zWI|ͭi!&l썆&0M6:^ &PAfo'5j~DmRm 3 5@S&1>c@/+0lfkAP> qzbҔrgMQ[ H^ gdB|"W 5ΩUMV+&ˣF{ :ќBtThUlkԩ`;5+o_"yPݺ @I HX@9Mɡ&`"}o2iRRJo =)Hb)ﻡ XhCtF-wMO' ޮytXCTSsxo+奔șμK2wx=7V*̍IxLOQpA_Z0 悂{6ca 9`FaB>ljs4EY'. "|esA?&\_'oQ \./DVώeDcD@LU-Zi>ޮi3Ħhf+p # un∑%מ9kt73Y3Yq"{AÏ6;|j/]٦Hy׀\lX fD9֣۫"]4.k,8(:4nNq9hQGZ?}CqD j|( Xlg%5z^cc*"]~4)ꁆX&)di!# 8- 8'whOo~%4bl@jgsbmǡGjmAodž lo7&z@(_fyee {l#ľ[tj1p~|+3J_FWf'iVe FSoeeFZ^eH>H咞\iD JZcҳʷ%6+91J:Q epc}&Z`QZu3},["v35"H5P56B:I CF9EZNB|#'9BPf6 Qs{s=wO`YsSMؕcr5$Wwpࣖdg8;`B*C{{SrKB} }ظ9 o6,Ϧ0V0AU+J 4z4Tv+@'yfߺ2Kťix!ojܟ h tDr2yBu hݒ}ˉ6IoXW_e V3_l oLe+\]9 P^E8.;gֹ(LyrT5tC~B ͂Sbڮ? u%y xZ}Ed?^Dz'Ϧ`F1PTo5\ ^Գo+6j6 _rk6d63|HISZv`Q,KaɆp%?낍*~AQZ;wG'?nX7UYqS#Sz[M:4ݩѺ[]p.:.ҟeCm9¼"ehTh۴t,n8jk獽YT3#B]7JOP\ Rkg'-+MʢˋЯŷQ9^M3[sBۯs}"4SZ1zK~Z}scN0|W)F71gW ΊМ>v /5n%m2{/kpaΥ9wjÍ>T˅5h'=B!^5扷n:EV7ښgKgC[HT rxUsUjo +ց)ޡU9=PYž^D 7,NLgA ;NN^azOj2N>*ؑiEqx3fpN@d\.dmCI3A1 Z4ec=y>۬)^:\lV<[S/+-ApC7)\_\qzdWN_i+ ȃ[{'x.w:13.{L~ft.xu #1XAdY6;{sCHEauɀ;z  )B Q̃Uոen?d̎pU a13+ys(>j"2N !vG/)f6,C*2?\!lTK3֫4MGvJf3ޅKKnLE5X::{~pkl I7 s2X^uxiAV>bE`x8>i$*+8k(w}XUHNH_ؽxvEyFGƟL%ޗ̥>I xinn;Ú|&0ڟaM/(~/w G?h'pKϮmE["S_D\d,4DlqjZ sxsx "{G,KVtDb 0[x(%*t"fT)}{3-H{<yjek"[; pGnQĴ^g4縜Lj6/9.v.:ߐ(sШNBٴ C&Ė SOcWNk#b'ُC]D]^,V@*t9)t—N"1? B[`tv@z2|&]Jl:̴4>%eAw^칌ÄHPр:d_У|."w- ?ϐ12Ǻ8 -(Ʃϡ(U>6%ʃAds?Scvrs;K$B%!˖uOEذ,g$5ϤZw[KIKEl;99f TJp#7inS uS8'CiU~ }5&Dܪ ނ3/,$ۈjlζkaxQ}n&,%z촹{ũJ}DdNdHf'Y ٽ}Q[cFjp7{BSJakt78K5yw3ꘐ _mo4`^Y@U.[Tz[iMw$*9jg?KT+V 9@xcda֤P0_!fڝtmasPUT>Oh;/`QAzeMKa0{ I-H.q?=K*̶uC' JW9[ʨ8q՘:*?/0onHg;l 1kמg "=4-7dy;IxW (߯EbA7*sēY8ѿK7ա@>QE3ЭZodQ@CR.`U(T$$ɷX ﰣwpR~(n xtaVܯCV&d9 (g ,LQxtJA(քVoZc9q>#u.saw|܀5YTa;v(b$!lDI"( ވ`W@NtfE$5/ 'hq+TƉKod<Q:rM3n>CkM<kg(x*_-g*j'^V$˳cph>I_E%ϙ.s NNXF U#QAh8Q. -<7xSܑ #*=I!qNeƀC=~ў&d,۾~ U0:|UYo&]c\Xh\M1X|Ƚ͚l$]$ݿ|923h}=@kG\3|EOk\A}plhgc糮Q*{7*xNa9fN )`Hu[v=K-L/lJw٤ULY$kqy<ھ&܏S U XΉC OG:a1J-_o_3BGNgM\) kA}:32{LU1lǯzX&ۿ<3QErvGwl]?:),D紽 %\O#,Xc1jCxW_߄ 8l4QUgHWFE}qSm@G~SGiFzbsEPi`ˣNZGZWҪ掄*x/9-{trm2ob|riiZ cgj"!;avNOO"a6 *`:mH:5ېzOj@\|3J1P=TRt*vڹbCU D%Q&[wq:bcz_mB$"xXaꞓls]=Rqa9 vŞS2,&Aa8wt5\$YO¦mc7f#hx~@"8_%O7\+s&^n?kc>siE3c5f߁CLyFCF)^-w>{b-|yX$( F|PF˼Ұ*L8%zX0ilMOVζsڹOGlзWI'mVli{iM\~V lz49h/Bٙ2?)/A IƖQ5žIQV7;س,^d53ڷ92t?> V _ɼJ^O6wdj-*]zQvltQs0}c7SsєĚl @JvX/IB9q2o`\l򿦸 NSl'2 tX^.c [6q Z-.V 1 R1i ]fen %T/v~a_À -@рK)1<8TRKwȺpm#%DcYq!QpQ[uwgT╛ut{4͚)D6.ziY̐R &)GP^F%+)"90ZbAg|J9Zcg@-{5ϻ}# y Xj)Mp?\MC|nA5ߪ$,Jx.O0xZ@O~o__j oÄ[I(ep]ϼ0K(*|5tb[{6 TU)& 2cońvN:8TI@|$EP ,Ï_p7cvV*^;D hy[fy7.X.U>uDߠ7nNWϋ!*0­n"ԽG3egUy2GP*.%e3OlezWb.uDly>B.v蠢O0Qa9 -q)H[ܼ_Z6ќ_#iXr%f{t^ ^Ѳd(s{{%&ʢ E,Zf &vTdB++ݫ)^dl}(nrldDE{W'h8SFlVHޏێnGۓKTGTgә;eA<$krӞ>NRud,Ƃ3Wcr&=D 7]LxRLbkwg?P)u 8};uHE%ա!P໳Hp,좋T|=y&{TqZYj(jR Vk&E%eOnnӒSz9$*&Zxh_Z`>A"b:&9I]p̗pc [l:3,ig@1>9 ޘ9rk&VM |µY 9Fx|tLl0u\u?y!ѓ#2VmJh9{ s1U?= rGHդϯ/}n.1,3st[O(Th-ŒNOW*3ņOL0??|8ᐔq"@&>HF!zP=aۻUjGb_2p?DdW#hy|t\d>ztY7z'!"%nL4[j(uQ VfZMl7YyWْ6QT2E>fBݘb GMT.4b+BP1&cV6$Ac @QNBK9 KE%D5WA7QS{)Ɛ[ы?aų :'A#ţBDBjy\P*} 8;jPx9WסD KO3 4ؾp4pkz/ohڀ9B/.qjKqh@~E;H]蓊>&fO֛3̓ӹ'-8`y.ΐ$ |ӿ.iF-05rdv] ޾0hc6F+2vZ6OV6Nvq3'z(!Yk&+3pՑ࡜*""IƸ͗{:bu"=1̈́MFDFx֬_{5%?P <ݛ\ʼn3җ.6+ YboIX0w ڴ/T CCutޝҽ4yNbcs{6elH, aσ=w{E^ѪľK!׉}z>ep揻 QvNBi$ւN9u:]n޵dssj&ՀzRGV"F$1qM?!&Dms,|a[I_pכwʐa5.Dw]I^?~,{MOrZ(Mcm#fqH``,e ؝xLا|,xDCO8u#i1*P7Bl}7?q!S6..d橪 7Pa"wsXV1h(f(`xk/%P>)lcL E7z$[l\^-s}iPCǍzU`AF\}O @ATE!tB Ah+4&IUoqN8̺ PF64 /պ76 APIRFtn`Ta7a m?{2~fnFF5)PvL])9nQ΄HPܰQ`vA,ƌ6?S>Ĺ(2F9IML6 9{QYI,_MFFLj|^KVv-7퇶_Ob]}}@H;5^q3$̍vvnr]WE\&o* qOjv +!yO$ ~2l.ҕpVݑ[‡$:rh\y㸋0Q/G8lvUS(R}S-rDđ %\5z{! ?{9J|bᯏ(?Wa*j3 M)L k_),c@oM U&qLF=j"dH0Z~ꢒx-hW?i{FA&g\p`KAxJc ɻA~ɻcW0\0AFYe,u2g ,:W}!}|miJ|=UvߪɈ m$߁MQ| z 2S |J52"kQ=7iTKaمzHج ߶URFmڭ*dbZx|Hro=e7ͮ "-iE1QT67Mv.i PIj"j:\N{΅55\X9BJN{!$MSCflBߩ:t*'ZKfN>{0Zё%^[-Oq"ۗqj)^Wd P,Gs<}CNerǚ1GJten[(8+Uܰl廵ۏ^-f9`C6KQǙ*,#4Q`C1u6`>?9x7szkҐgE̳a g|:M#-oğ"kO02L{/")%/4n;ïv(z.t{(AG%Ɔ_K ڡLbCÉjO PMiim@œBY+wD˔M#HGNFh992 ^S%י ɱv|鿯1 3V룩 #eȊ'GSi3*bߖAhj=T\VbP ZC>Xړ/Ma&b;a)=rn 50gxbiRK {G6 8쿱8K;͖F[y yRAX`576dc"03`ܧy EW'wʠalXs@R) e*(9Ȳ=l^LX4=63%)p6qrŷAbhV*E;K$/i[6=M%ߟ=ZUI¶ߟ&:aω K*畭>E[s0^{<$"NZ6hDuiWuG@% Q`z({U#Ddtp{(ia}^0"TEfrUMOK6;9 g$ѩD.(DSF7ӱ҃s'wERo<t7@;poejeN`pJʋٛUkG:$7] ~XGaf*Dbb9,9uR=8:s0)oq2W%*6& ^xin( / }Mc+εMrr+"G u@S?XW~KHMf HԳT: `FE4" OuCVJcU$kvV>Y spk;B;l"> ۣ#9I٩(Lgv߹D`P2c+VTP>]d:Q7{.}FcbZ3qA|}Hj)F#bϪp/C bDOGkaz}ٿ1XBsjUA a%hob kHA ź\&3䙭8?蠬3FxL_2xp O)_P,RH{ZG" Lj.Zjك,\'y O5$S3狾Z/b$LIBS'.+v}3o:&I+nLE5⪅b`jwD@p:T򧮲=F)$wU[M (`8 ;7Te)8F׉/M9q څ_U2qq6Եf[tanLK?[V{Ss^!HT:5VDDC>1ZqL}i:5!j{8^7M兿<9E%nj;e8-uvow%xjwx4h$[̎m4|gjCZY˴SQ#r ,(}'U^g/, 'PLՃ,4($h^s"F;K2C@"X4x+ԩϏV%}w.uy @j9d]-ͷ-L>>3ZtU:WpL@tκR.g`(xCIk<׻{ Μbο1nHh|:*xpjYIPm'㫋zޤz (VCҫ 8hho{k醐c`V9>dv7$˴\'qKOJ)޶|nkF\yEE# ?oKLD*% "{o>~ˆM'άqy{.,3_Ev5P)([B2w Zx0S`Ǻ VKޢLGǃp +DzϽ,WY%Ff{ja.DcXܜF)7/`)cdĔٴ8TTϭT(/YU OZRRlݼԀ蹆W)Ol=^tE3 i '>X5A(0Q@B`mQŢ_u2mFqtCߺߊ!ɀy9ϑFI6u|yx_﨓]MR&.Ab}j(H4,kao 苼9z }|z p'}Vn&8RJfGjJmκrXpfWJkB?EA9lRA*"7 bHdALXM9~罶ZC|~E:bi.JgԭK@SħvX쿔dMM<>o8)G[#AB<"l&zxW<\ G$^KK3{5]p%"-B\+w Oc@*Y P9oNllmB v՜)L x:O_$8[UY4ЄZE\=ode?* ؘ׵~i)O~@/8,)e/dבGa̝.6(c</\ \kSv3|+P͉`_ptL59K̭ZE<?bb U vDG~V}vZU19XJ>IaG]#ŨF@uwfu D |*B eӪ)W;S&|j(9$Z8^Jn-4W4 4$]=sH]9 &f%~שGHkrǒ4Q#4m)#0yLtO0?#v{_ObM=W+4J۹c8{xb:`f؊uͷޤWtv)t jR<ZOip ʏc{"'DzUNjk.w% ¶sƴLtsK6BxB崚L;.&a^jtwM6s(OH QFo.ݹ?/),H!sn594`*Cc6粇Uiay=5nE^63 sU9$T|p!) NIrsD$ _Cш:-HX$dM }oH"}{I4°L*Z$#,؀8ARϨܚuk G2X1\KdOя'ق%3]m HBQc!ɔf,}8apRNA2i#Zs!Dr*-|^@Cv{DA`+HSXM V95b,m S5Z!_ Őu;?{IZ  {Nk gz-佚WrxlPM^r'm79C: }5t.vDUchjfC6Hg J(r>}g>smceh??*MF{XsLy~P-8Xrw]Q o$̕~|W5 Mî}x\~N$Ik2Vw6ۑe8$`_jR_v=R)Sv&Ҷn%~ |X4RAn +(/75:[f?%M>Dfn|ڷolIvT>y?0y J$m N^{( ̈́BCAE&l @ SNb[](xvܣ<ܲJZ'_3Ǩ6rc1]E=ljF.C`R0PYݿ^{KӤP/Bpcs"O! g'WMBRQT`ƃdLgm(=gē4wϋZ68WKhkNq aֽ_ɌLص Uqi>vY^lO;)!>bl.\RXV ET>Wb϶İOB0ѵl6 a1$LQFT$d + D WcְE[_ZrVwuP>y] qgLLlu,YDWvR70dĽhAD_==;H=Qeu#3_}WnG7Pc_%ˉV1A`aٮggӦhI-o dO>/CIvHt^@{Ǵ& \OXC{ 0] krY~a.4/r05+1D1]ޯ(mȯ޳뭎Dx HrDÓF"dUV"p P2?:jS}_+wvĝZqe#>w49og'/jl bapwgzjVO k_ӔJƧJwb<<_a l@co"h$Zg:tpD}Ǵw=V/hPY,9ٶBvS|B"MQ3Pi5SrVQ0O!W)@;OeCb?e.!{)cwQKC_|)n& ȯk^PRO&ܤ#B<5;O}ҋ>55W # va Z\ʐ4.I7#2K]~ gUEtRTs^.9"}I1lvęꎣ:y1@)Pvbڣ/bE\.I0Ѷx@`u{lm"|̆~@daܰƴO81K;$D(kpgB]68E/d~.R8m,ژ~]v-=d >,w9,1_N3Sp3{\)M@Pl:SuMkha!~-j/Do$ƥGM a ;7Q_:}za)WV Dr&|!e+ĵ+%kvu"O COw\ӍOxq}\~ F'JMSg 4JQW{җY vz=.b \͉PP:fx^R0GUrAY 0ƋVD)fTmyl轤e< ='= !bn}s,ϷYُUf}И@B(ݽˢmOrg (Ia\6<@ 5;_y@"Y&)M47|/"i ?>]\!oBlm)iػ:;f[(+.xCtAF+eYyp OI\gz'$,aelv zih}G{tc̳b!Kh>0 YZsurvey/data/salamander.rda0000644000176200001440000000157214424312436015327 0ustar liggesusersBZh91AY&SY|V /G@@@8(4PhP@M #C!a#$)@d2@diOPFFCi@#&@0`I%SLOS=QS@dJBs͂ N(-4 0 ]PEԵ+  A4QT6AX^u393 aSD cf&HIe جYSO8VBXhkSgΫ4QEZu:UAp,Q,tml N$'Z h;.hefTv VXo6 rcT,#W°#UQn< b¦xxIO' h7-W!i kY ]HPxhjZ &LulHF[1\]?UG, Pr&#y\ӈmR\/!B!B!B!B!B!Bpa<|٪b84vwPm HHH*" @4B¢D"}t]b,e I$kP4QEQpKr˗.P%EQE @EQEP4QEQ@ QEH2I$I $I$gP>0 !  A"6II i hD*FBO0 7}Je|ڵM1)6+,] g>= ]Bw#xk_$h{p#] &U6[)„gsurvey/data/yrbs.rda0000644000176200001440000005360414424312436014202 0ustar liggesusers7zXZi"6!XWG])TW"nRʟ$8:`&!@7C:Tǀ-jtb@ȡ:%e 4Lľ'^uy˳9޼STP|RNeUϤ@kg f(Y±VWߵ&^|l^l[Q}@mF4 sR6&IcȠ_~ 26 {nڎ/r)U|}p X~T v&cC~]o-+.4xM $*CXs~j oCt5uxQS DR~C94WEȶKUrt}\IKπiDs;\F_׭$ڑVy )L f>!BO,%ې#ԞC#VXaG U%1R9YviQC/oN[wJgr_p`̔*)gbyL )7}/2wE*"up B",i0q5>BzWˌTFϫ/n{X򆧝^RIKyR3gߩpX~+&JƎ\bx2֫8Y[YT2B"d6.$STh& Ea,X0,\!P?:TG:?LS2. _V6m[@Z;}KteFlҗYȓNEuhhldI *MTln9oa.=i*R"n_bES+_dmH)?mX#nV*yH"ҍ/ׇ|FtcD+>P u#/qs^b(gz\ *; Uŵ֔];?mP'e_+;.2Sl vuz+KUpA@R :qsz{q\˲o{[{nY&%}e"/g!65](2#޶ ;N3,w5#Տg$έC\4Efj[~ṌQini ܓPyΞc~L̟J Fq]"AKWFۇ[t2Y\Q:c>hto,Cڊ0y׭Kǫ} BucFfGiJ3NRbL}R$9٘Q"pI5_ye {ϓJd_?$ h: xP^}ݰ$F7MWObQ+j迕ȬLDVSϕ="2d\Ve;faX^mWn' 654r{lZO ʿ|^us4x 960~̍[ 2r4擹1L1}7]dII_>s1rӼ~bgh|'cI^>*yc9abrE ev=j|}(RXP|NQN;8% O3vJIr,8,*96ԞlM5Բ|=m&!rRyp¸yrli\rh-;=5>Upn2pk08TbvD aiH8= {A/՟[+WISUZv67#xST3+moMob ,jcwV vIdž\NXȖEA_L 70q ) q!vz#AZ@f4.pJLED&%vgC$#꫃CN<%/oT39AOlZ18pjDBːlO1V`ԭҢ+#-AT-,#0;쪪ҥ 婘wXemj(w6NITY-%OGge l.OHr蔶Ă(lK\NGWճpQDɞ}%PW3Zh{"]Ý:{ ZR-n+ߌh̍xm= NN<*PVcЄɾ]ɀf_%[Ns>#ȞHg`u ]ޞ/󵹺ץoͧs!g$[UOYλT4:%+q90#PCQ!De-1z|/B þuRm )piZo_q*Apz3# 0HhgS :f AzX)J8f_ j[lXq,e~'<1c1r&Su%-%B lfm<G4QJE./8-KpuŝTOmwH&j_|?gBH.{MnbzW]pFWU:K lO7{|ӝ⺠˷elV0A {()hW/h>bqggAaVy5 @,Vr:SzͲ1Zk㡒Y?tVaĥ%%de_GӓFF;p7`[ ,TB9">9J& \J W@%I%63Les:o.]WP#,=|%J1bMm 4* ~͙? ֠&`UNz|ш}0⁍ =<͹T\fTɔ@K=j?Χ@?1ys@)ZN1dwXWۢ9KTbh}*}$|׳6Q^iDn:m$~99zMA4،*ۆ䃈P{FD3|荡&mR'D"IOua9g?RA@Q_nY黺Z$cxG 7i߁mZ6W}?hK>OV&"6B4E^A c>H< L"/)!oY=9l)Ȯ]Y&~ˁZ Gy]WF>J_y'vHW*p~sٌfhf>&Fx[IZªfH (HBniA"2?o=><4ޒd-+# X ὙypޥW_~;R7_BWd1/)n 6tU\i-f 9,bG'-,`'n=Se\g;!v~)n;ݬ l;{Qyr#*6pf9: Ћ)Fx>H6tQo"Aj\)%sDsQq5ە{.i\עBS7"[dg$T Kj+*?K L%EO^NexLpfԍj=ؠW`Y PSCFWsvp,[r nzccf'ͱ*SȵVXɮ$i7FRMdWDZ@*r[fQ^XX+@i4d^t7l\*XggLR}N+}eQ)pucotSӫG@  2BbR*xkQfǹeoPTji }czsA|StAF,;QV6{M]ۗE-0R;b;'^%R[|r[ljGWdn^yi]ewA ZBےhR 6i0_6]l6'#2yΛZ~Eӛp^nLN͌~߳=:Œ}YCa}?Z*zjV@؆)>ug+ (%G;ߤx* ÊXfRz-VPxPo6!oU$pw7^Z 4X)9τ.k~Z?t~֘Wz7-0xFT-5wBT?1]pTpKuhsf&8o0swPU$\8KR/v˞Uܲ.;Olq&d8-w0˄l1'ZcS3?J{- <;8Vot ^ /])`kn*O'? (]4 7<=Z o`"\10-$RvcoX RzU&B xBxkLG`7GO~Sy'xqW㝖L4 8e;J:"c%ANDžs.{p5^敞}jǕ>{o+,xDs#?,j[\)X=S|UX6`^b<CFrF]{W@ZCA̒RHrFkTmF=CR=@6K%Qx$(`}2( Ȳ.˩~$PD4}!% m(Q 1nO'/`Ɠ CJIfΗ$bje;^#K=#%0xSua-* W3i6?I$?WQo!,0 o-=\N6QyB39ގpBcv΅\pz$&!)ámbDuX:m9h MO?uH6mL>PAp&گ2;z6pi?fbAv29΢hyA0*Oe#O_5ѐzs {ۥ/R6 nzUF(~Xqw\%RZ eߢIpVb{_*ct@ ^^P.*DWZ?G'M BIv%Z&Gf!4w)Iz UCnT=Qoݯ)CyyŴI#鷟2?=59D=x!p#xc7[m)^i˂.MCJH27Bޠ&{3y]_yZ:$GU9zqo4ʋb6Z\4~Vk޴i'n8{-?U|qV{#a_BGmy*UM yN [NN< utk\b%ֈL`.`rG*4E5fFP!e' u4|x@4 ̵, Y۶# ^u{ԃ΅WjG¾D'n1%53h2=&zHE _dxj"6ZO_v9TkM`9z~wV`zKV4F|"l2=L_wXq/ uoc3nۑ6-(xVLǞtY[c,)F;d~fBjDt>TBeIuLgol834tNo>cX9Mi`2:x_?aM%wgqZNliIMxChP;TqGۛ "%>q}g\EeQ=s\RQNmu6K[zg*'uF9 v-*! :.xq! L#902rG$M 5Qx27{E8)̗K' nrʫwul-˪fA_༮3['W NmwyCAOAe7bi2lύ'MFMk15gu1['nPĠף{'9DGaDёۉ(!  SQ:?>m )IW1YPR2x*gKF!J%_E@yx8rNmt99bSŽaa>)n*JMi)qcjE|0⧡ B[8|xLq ֲO6E{<_E9{)ڵTgA@Pm`MmF)gHy5Gߦ~hFeB/(ZȬ6gYՄWJNxio wBB 헞},ld%EPL3LٮPui:sX**gOx27㖦sQ$WcׇYlWڍPĎeP CmptwC4N<VjkF$h< nK( GH 8bg=ɣf ӄ~G|'roheKA3uQ"= 7XA'HvNFtgɊkk8GQZ>;;UMwKy_HWic !,<B'xݨ℥m8ջK >Ji2#Ez +ϰS{8f-K 1v'0.2+4j[fղ +ggQb>ԑ ZI*{ލt SmG3\u?yfxKNZ"}y.#FE2N-tsJ\m6+‰^v`!k|ƌ"y nB@sM1.r^,-ły(_b3}rx:%>(6!J**,n_g#e]M_ 99!*0Hl0b.\rٓ0QwMΌnƗ2mw,) M+^̷AKyb,H@"G~6 mP|;3aINx+A;Pi·JOs"OcGVc YXUU1oW56gGG(^L!t+6 kN46'*f}*K\Ƿ-ɑ4QiOM2*7n޺v2 8 WfT vVj(wGA!u2`n"'꣧6s߰^OqiKY%@/$4Mi1n-ͻ͈>n$DRv0P49`eRhCY+{h>|wŶMXݎ?eLյ<,v, /*5x*BNH:zy/f(vZG*mٶvY+;lUPPo^!&8tI0_n/,ސce69`( HO`%jr hdw$'k(6q|Ws~y`0.|  @[f.wsa%mO4+`5Jl)k9=8K8E|(9(ϺS0,t_Ԛ !Ɯ"_H.R٨3I-NUB>#K_oxRKbFA/"]v'}3h'H6 ݽRs)yzf(^ ٔ$8]IJ@b(y&}PBok'SM#@FIQހ7%LXB ;]?6Uszzm cJ^`n}ݷE<:mHܺUЫ!z/ϢP`JŬOz~A`n43  ."~%c J.ڊ{"!5x{ Td$u+=@#%F`vv 4{ k$Y+z$9@ }V}Bt#FWAʤa !|jF7pF`qUx8~^nSgW@] Fȶy_J R~7QD5pLjVϫBL .=!yk6Y#!'+<ò$;ǃUБ.eI֊SBғڨM/SȾW{jŠO_FQF~5/ h|ʗng4Ɏ/C?5ErEA?&);1';;Qgg-46{NMkbwלόcjշJ1'(jcD:'1◳f 4X HSPM-2.i٩4tS1[ Ag5;r-_T%['ߑI! ˸vrs2Ogk>Bӯ4 WQՏBO2gZ:{[^Oi6ykŤ}I_ ϟS(\ =$t3CY:h.iv(ejePUeDW*tH&v6N/ oi{BEsXA-갅uv>6cs;F :7pAR6 (x RE\J͚+H; 7jNĚݱ먪(joSlUB! 2;4W2]B{ Zntƾh#b:pvO\'ٙ(d}dWKX}+?:5ɶW Wv2s;T!KٙP<3[+ܕKqw>6UG;uѵ\Rk$txZ{KK%TPb]$ZpLN` ceԷ2JymOzȸs_|&߉R}>5IK`XkX%Ax+w %8.Hwj`A^MDLNi|cv( RPk-t5Y%f#D/!Fi,}{a?g(Lt? ʊZ0Cw_*mE$?V1{<;C+I=wpxԩi G$Z]D(%7b@ QTqeaΣC #NB SL2]Y8n D ~=N68}C|]mTF[&H|29P'e]nD7 ΅pAJVDw!;hK8$ Fey$0b꣪\5'O,UhAUZjq;F}ߵL;@Pkkm6ˏj@Niw ftu> rMl*_lOUaͧ;ٍKk0˒3M7J %9śȮM7ao"Б32q5%C4V06{}pE4\Me ýloh[y;(PzsA+?dZxa5Ř''5o'$5mN;h8qf|P:3Z,Z^ӧ>&(c j ,4CPp&=>-z־eG۟,ř԰2=P]^̕$D&ԫ,pp /7-ޭ4%9D(*K%!x7i ~i4:=UڌAw W{~ zjL}ܾ5q`k@b#$OZmoP V8Ɲz93ަXtt@PN)L3 ea!|Y){D\z-DU~nk4R ' x+j$O.fR%:@[[ 9Y$oDàӅ1ȾFЇM*R11$bDK'ٖ Z맡IģX B̝!f>ځg>Ũ|&H0g@ 7زWNDŜ25w"=YrY S&YdRW\axeijsmyNR}d:` qɠ!"Ϝu{ewc(e7w n֝- X՗to6%slY|--Ž]1[>Z4rVJ )q%Jwù ܷ]]4q%L?A)Igc7Yh3 @'`ywKd WٽX,if[ȑے:oNxoҋ_dVʆ`B wciu@4%7މzPp&AyeDuۨ Gvr0o-C,Lw&h"t81ʔg-ڌUlM'Ǚ|w㫣AMǥ +HݷR0/&v_0xjՙ )7218)L'okW5&_6-@2_7ߜV>E<9ńQD%AgE'ydsW^BKsηWNvBmY1ʪ[ubR t v27dQyљUXBnsw,sZ+$gq#kiѓb sa(- ڪIy@,mApix*m@Pb#Ʃz`hjИ}& x}n^ 9 X4A2sϑ4E[f #pxtۗsO|y G]GA-"7ԫthkV6I "rVݦ40 Ӑ$oʦhK~v(gw NR6EZDfn*~no战 6y<MʦKڠ EnTM~^C훕}v%5m"h;kHeLfڧDXiں )_Sb6 dAjSj1Y@I ݮF Las1R)diN0)ߺOUS^t^.Wy*@d΄ۙ*ԜM)X!z:m;nF;I7[nH=\,:[\G+!碜IBCEB%?UcigC2ޥ? s AI 5ʣwWj%Jx%NUoy˼00ɼyDC m+8C]kZР%+wÀhG*:qPxJw }r(z9+iqHPe)g9Mȋ1=}W &.JvswtUsބGOf3>DQ׷[~fW櫱6‹*OQg"xjt Gd&R>wFAYr%%Lox5V͚jcӡSi-  g v/׆9uv]ƿtgʒ ,~?"Ȕa vH<"<]jI*zPiG[$>4pzU8f'2lj/ 4o.s Q~&Kq,d+ H){g{]^57n >oD2klfXLGPLB.[>TѸhU^Q㰘_LjoA䅵І{ OhbfW.jNK+ k}EãTAuZS"^yƗZ A$/b]4Mmc\Q \V6n ^X1VR?4m h; ~n"ોoZ}+ P6c웺R ȸNm)cuS>.k8q^wQV3H7-!Pdsg&Ԑo z.SbTBY4*y; Z~IҀ\N:4Ѯmt5M6jP嵨Y-> l& !3ev3o,N)'[(Fe1 ~PD*[|Lt{h^ڻU3 p14oW9K/RU? Sp mJ*uqЕ.d. !fI_G%EqM?%d(I6ʻ0DzUln%Zz c]݀d5 ΅cUb+ɥ-ǕJ -%D݂JGe&G@K, !%{4Npr8 AqJ}ܯ__ÂQZļ Ed"z:ᇏ$m7Ҙ LhZ$q%AeD@ A&'tG"iWuoK/1Mz|i`'^*M3n' Rܐdve&/3Pᖲ~H˴{oĪChʰ6w;O S2d //Imgʥ%okߢL;~F`}& MDYYbV9 ~XOF 9eeE1ID<@F-֐'1A_ q(e,!{ʼ]A;`䀘(;o&D$b'L7,rG!<6|[K w `#c z\6z%ep@Ҳ,}CȦ}L[=},M p"Р6ne "B6)Ne['Cv2ɰy͹68 ߬*\, ZI>њiXO4kDMLF;ӻWX$ex8Guv%}a&7?Z;vu}u`EW_ Q xb/WwA2'6yDO@i;;+Vb8!C*W=2һ.} }FW.F;A( LٗtCh"ωVW)z~qc$؀2>taLP2(|gڳVG/(xAW!oiʔƗkYT)E"jǞ6}YV8g[UņaA`f5K}-AO2h^5 _m5*Z?'2uZ˪Ia zItOhN"P+.`P=.R@`Kk}۷5P <UvQw]o}/c,/L,Nj0\%5jJ_MYUDD?\Vu u/K ׭'je$ *_A|HG΁м4V7[/ NCyMXQ,.!T•i!~.uRߣz$_KP 1|yLqNuu%- A!B]뤳W9wu0ʗ֌JDC"%zy' Y/ +Df%/MyiquȲi3PoiC pfD&-:Lb|p/&_h9 }!qFddL @E>Ό\^:M_UGa\{6sM[lÍ]9־8a>UaH{ItH³0ڹw-,*"e>RoTk]?2؉wàw`!\7qԳB?T F/,Y] *7dٔQ~ζAWYvP*?Pp Ӧ'paq=0xu(`T1cIJ+Y[ѓZtAU}D,7Cv ed8քh9vmvGM Eڋ$/F"ϿgT@0C%H'qVWwDgR3v lBh:"]0:D{ِŰ xlfƷI,2kIPRbÄ9'm8awPŜqr46Wƺ  Ll^OA7GgEVcSHb3T?)?3CR: 뿂Edgkϧ>oƕ~QRJa=&+0`hZgb z×1ijLB)fl!b|@էrgU\s+Rf 7j%ߠh\J^6})]Ɔ WS5n5_-a>Yz,}l;? opx2?tO{w]uT2Z 6 ̠_~QwRChfJz} $ /;gM0XT~cye\C;z}L'yǭ1~!UtyL,xn+Mqṿbq[,^.%M?G ֵ6hm>h54j58nޤ*[YtfhV"IO}j³&b_3:f{;A$gk۱~K=h8@-v7M[*ןڻ# ?*VF\MVD"!iĀA]#>D7{JڅVgiHPp byd8YN!9u^TgHou_nŚ%X@L;=asFNq,)]`0DPx>qf%Z`LJ)-+ؗL#BJ\\:)=L<7OLy.2P2!'ٰAA{Fy] 8[d#ͨM16QQVZ."H"L~:ÇbPq4Pi:q 62W_l }}~VݮۻEuvY=g7h$;^FK*)CPei+YGRyXd )")"7"^@Io-,'8( /M%.WmsˤQ2br^Ek:B&FYOCU;o^3, P[W\QTgt!\DRPƼc'PM`gaV<5ɫ1RXc^0@4iӧ~m4ʵYk1`"M:eA">:o$lĀ<_z*VK({d/&a|%<YYݰ+jZ{K(Hʸ֥M"enUe+3Ug-sˏt߮4NYīx,dz"U@$=;켸R |d4Q~EU(;)rH=❛lXgՃفH[j)xgq\jRvD摂!Q_mͳH%͹uЏ=KCVcbE7_stcƯQJG9 g޿hB~Xq}cQx_j -mӋH Tyl_@h瘖D3CΚ~c`}_,ݩ33.KP~R{‚}#_(l5JخMldvz<[' wv52LYZ{mʎ} " v`!no4jKK/񛨖-JB/"'$8 ^\hT-wg|VU<@C=@N>KB*K5)}ipwz|Oc .+W"z8@QRd/Tjcu9:\V5j 56rH$rJpaF/}e2;{x\g"Ei"u j 75fm 0*A_#sL%%Y8D\ޠoegL~.bOm|_寢P߈OTzATWuM1+ػCw 4e\.ɥw%]H~zLrL}DOpN1ݒFwf$uH%ʧ%N%* h#0'[J fv7 D,ڊwjЯtS.*& ƗeՋ$IYWhջ y2~?[JNKP~TkP#?m,[kx T|hY@0!! 7wz5ϽѾrB]߆Ӵۙ@NY2^>} `ӡDt}v= V);H|^䘇…Y߮IT4[ڬ/=~&2~xp8C7=rhDKokhqw]hPsN[Uq]]O&Զ7 zaaKR`+h-Cq>?\gIh5S8I?LtB]UA#AF FԌO'm@+j~-/|N%ߗ{M]+B5:c V]8lsAqEM/%"}3{cD#٬Psolb K:>Q0D֙avpv'yk1E[bDS͡+e4%raÜyD{m$6eSjXL6h]9olE}dx13S%M<(vdQh8xkAձ8C,&ѳ(c-rlC{5LQ0qjsʈi2JGC[ה~f PIfIK"VPTPbjY<ɱ>M pf6s5F"Cd@0FF}/ 뷕)/3I֕/2hi ߮>0 YZsurvey/data/fpc.rda0000644000176200001440000000055514424312436013770 0ustar liggesusers r0b```b`abd`b2Y# 'fN+H@&10 D;0`́s@i(-<Tsi9"q7G*NNaKKKJK; JPqޙ3h)3gAJּb m6 {qIQbIf LMAq)VQ1eX~0c)%9I9P{`*M+.I-@S)hdU`d```hneh=-(7'zsY} D&QDbapk@1Vs8*/CN 41` c01` s"n/Jrn`!cV ,asurvey/data/myco.rda0000644000176200001440000000273514424312436014171 0ustar liggesusersBZh91AY&SYdǬ$hӯBA`@)`,XzB`eH6LM0CL hE)Ub?f(dY1S%aRF,/?SIL1io:Rv:A20 ||Kwm6mp,˵m؆oX6mffcmݬI6̻m$˻˻˻HlK37s!jZ$ P!B@BQR@% 귽jgZֲl [ LTUL3ƀEP\qR@0m` pmlm뮺sTXreY#֣S3usy71-XkZI$I$)If$(ŤRIgKm)T=֛lj0$m"""""""#TQPb€EUVw.k$1xkʀ&UF4 rUsrbbF1( u]eg\^U-ek8!1k6 4[9&x5ۉBҳ]|W \ "8ݓILZoɚ6r$IuvⰙ]lHI5b$I 5ylc\C$si9@]nםCY+lUc5 &nPUEYQLEe I#]v(HP*.pɛl`Np75 tsurvey/data/mu284.rda0000644000176200001440000000051114424312436014067 0ustar liggesusersRN08FmH|B VED")J (?_8fH/~ww=q6<R BR+ #\w}=]C.>G\ 4}W6Cуm3N+suCq8f=CZ6yZ!9h>Z',QDE|Rڗu\|ż RĭLN_y>(QV3fZʹi 5Lkt-վvT4fMrǹ/VTT|ڲp6$mm =7VUg(K?؏~sU&survey/man/0000755000176200001440000000000014424031636012365 5ustar liggesuserssurvey/man/update.survey.design.Rd0000755000176200001440000000361213542525537016757 0ustar liggesusers\name{update.survey.design} \alias{update.survey.design} \alias{update.twophase} \alias{update.svyrep.design} \alias{update.DBIsvydesign} %- Also NEED an `\alias' for EACH other topic documented here. \title{ Add variables to a survey design} \description{ Update the data variables in a survey design, either with a formula for a new set of variables or with an expression for variables to be added. } \usage{ \method{update}{survey.design}(object, ...) \method{update}{twophase}(object, ...) \method{update}{svyrep.design}(object, ...) \method{update}{DBIsvydesign}(object, ...) } %- maybe also `usage' for other objects documented here. \arguments{ \item{object}{a survey design object} \item{\dots}{Arguments \code{tag=expr} add a new variable \code{tag} computed by evaluating \code{expr} in the survey data.} } \details{ Database-backed objects may not have write access to the database and so \code{update} does not attempt to modify the database. The expressions are stored and are evaluated when the data is loaded. If a set of new variables will be used extensively it may be more efficient to modify the database, either with SQL queries from the R interface or separately. One useful intermediate approach is to create a table with the new variables and a view that joins this table to the table of existing variables. There is now a base-R function \code{\link{transform}} for adding new variables to a data frame, so I have added \code{transform} as a synonym for \code{update} for survey objects. } \value{ A survey design object } \seealso{\code{\link{svydesign}}, \code{\link{svrepdesign}}, \code{\link{twophase}}} \examples{ data(api) dstrat<-svydesign(id=~1,strata=~stype, weights=~pw, data=apistrat, fpc=~fpc) dstrat<-update(dstrat, apidiff=api00-api99) svymean(~api99+api00+apidiff, dstrat) } \keyword{survey}% at least one, from doc/KEYWORDS \keyword{manip}% __ONLY ONE__ keyword per line survey/man/svyscoretest.Rd0000644000176200001440000000664014166647050015445 0ustar liggesusers\name{svyscoretest} \alias{svyscoretest} \alias{svyscoretest.svyglm} \title{ Score tests in survey regression models } \description{ Performs two versions of the efficient score test. These are the same for a single parameter. In the \code{working} score test, different parameters are weighted according to the inverse of the estimated population Fisher information. In the \code{pseudoscore} test, parameters are weighted according to the inverse of their estimated covariance matrix. } \usage{ svyscoretest(model, drop.terms=NULL, add.terms=NULL, method=c("working","pseudoscore","individual"),ddf=NULL, lrt.approximation = "satterthwaite", ...) \S3method{svyscoretest}{svyglm}(model, drop.terms=NULL, add.terms=NULL, method=c("working","pseudoscore","individual"), ddf=NULL, lrt.approximation = "satterthwaite",fullrank=TRUE, ...) } %- maybe also 'usage' for other objects documented here. \arguments{ \item{model}{ A model of a class having a \code{svyscoretest} method (currently just \code{svyglm}) } \item{drop.terms}{ Model formula giving terms to remove from \code{model} } \item{add.terms}{Model formula giving terms to add to \code{model} } \item{method}{ The type of score test to use. For a single parameter they are equivalent. To report tests for each column separately use \code{individual} } \item{ddf}{denominator degrees of freedom for an F or linear combination of F distributions. Use \code{Inf} to get chi-squared distributions. \code{NULL} asks for the model residual degrees of freedom, which is conservative. } \item{lrt.approximation}{ For the working score, the method for computing/approximating the null distribution: see \code{\link{pchisqsum}} } \item{fullrank}{If \code{FALSE} and \code{method="individual"}, keep even linearly dependent columns of the efficient score} \item{\dots}{ for future expansion } } \details{ The \code{working} score test will be asymptotically equivalent to the Rao-Scott likelihood ratio test computed by \code{\link{regTermTest}} and \code{\link{anova.svyglm}}. The paper by Rao, Scott and Skinner calls this a "naive" score test. The null distribution is a linear combination of chi-squared (or F) variables. The \code{pseudoscore} test will be asymptotically equivalent to the Wald test computed by \code{\link{regTermTest}}; it has a chi-squared (or F) null distribution. If \code{ddf} is negative or zero, which can happen with large numbers of predictors and small numbers of PSUs, it will be changed to 1 with a warning. } \value{ For "pseudoscore" and "working" score methods, a named vector with the test statistic, degrees of freedom, and p-value. For "individual" an object of class "svystat" } \references{ JNK Rao, AJ Scott, and C Rao, J., Scott, A., & Skinner, C. (1998). QUASI-SCORE TESTS WITH SURVEY DATA. Statistica Sinica, 8(4), 1059-1070. } %% ~Make other sections like Warning with \section{Warning }{....} ~ \seealso{ \code{\link{regTermTest}}, \code{\link{anova.svyglm}} } \examples{ data(myco) dmyco<-svydesign(id=~1, strata=~interaction(Age,leprosy),weights=~wt,data=myco) m_full<-svyglm(leprosy~I((Age+7.5)^-2)+Scar, family=quasibinomial, design=dmyco) svyscoretest(m_full, ~Scar) svyscoretest(m_full,add.terms= ~I((Age+7.5)^-2):Scar) svyscoretest(m_full,add.terms= ~factor(Age), method="pseudo") svyscoretest(m_full,add.terms= ~factor(Age),method="individual",fullrank=FALSE) svyscoretest(m_full,add.terms= ~factor(Age),method="individual") } survey/man/pchisqsum.Rd0000644000176200001440000001125213707703671014701 0ustar liggesusers\name{pchisqsum} \alias{pchisqsum} \alias{pFsum} %- Also NEED an '\alias' for EACH other topic documented here. \title{Distribution of quadratic forms } \description{ The distribution of a quadratic form in p standard Normal variables is a linear combination of p chi-squared distributions with 1df. When there is uncertainty about the variance, a reasonable model for the distribution is a linear combination of F distributions with the same denominator. } \usage{ pchisqsum(x, df, a, lower.tail = TRUE, method = c("satterthwaite", "integration","saddlepoint")) pFsum(x, df, a, ddf=Inf,lower.tail = TRUE, method = c("saddlepoint","integration","satterthwaite"), ...) } %- maybe also 'usage' for other objects documented here. \arguments{ \item{x}{Observed values} \item{df}{Vector of degrees of freedom} \item{a}{Vector of coefficients } \item{ddf}{Denominator degrees of freedom} \item{lower.tail}{ lower or upper tail? } \item{method}{See Details below} \item{\dots}{arguments to \code{pchisqsum}} } \value{ Vector of cumulative probabilities } \details{ The \code{"satterthwaite"} method uses Satterthwaite's approximation, and this is also used as a fallback for the other methods. The accuracy is usually good, but is more variable depending on \code{a} than the other methods and is anticonservative in the right tail (eg for upper tail probabilities less than \code{10^-5}). The Satterthwaite approximation requires all \code{a>0}. \code{"integration"} requires the \code{CompQuadForm} package. For \code{pchisqsum} it uses Farebrother's algorithm if all \code{a>0}. For \code{pFsum} or when some \code{a<0} it inverts the characteristic function using the algorithm of Davies (1980). These algorithms are highly accurate for the lower tail probability, but they obtain the upper tail probability by subtraction from 1 and so fail completely when the upper tail probability is comparable to machine epsilon or smaller. If the \code{CompQuadForm} package is not present, a warning is given and the saddlepoint approximation is used. \code{"saddlepoint"} uses Kuonen's saddlepoint approximation. This is moderately accurate even very far out in the upper tail or with some \code{a=0} and does not require any additional packages. The relative error in the right tail is uniformly bounded for all \code{x} and decreases as p increases. This method is implemented in pure R and so is slower than the \code{"integration"} method. The distribution in \code{pFsum} is standardised so that a likelihood ratio test can use the same \code{x} value as in \code{pchisqsum}. That is, the linear combination of chi-squareds is multiplied by \code{ddf} and then divided by an independent chi-squared with \code{ddf} degrees of freedom. } \references{ Chen, T., & Lumley T. (2019). Numerical evaluation of methods approximating the distribution of a large quadratic form in normal variables. Computational Statistics and Data Analysis, 139, 75-81. Davies RB (1973). "Numerical inversion of a characteristic function" Biometrika 60:415-7 Davies RB (1980) "Algorithm AS 155: The Distribution of a Linear Combination of chi-squared Random Variables" Applied Statistics,Vol. 29, No. 3 (1980), pp. 323-333 P. Duchesne, P. Lafaye de Micheaux (2010) "Computing the distribution of quadratic forms: Further comparisons between the Liu-Tang-Zhang approximation and exact methods", Computational Statistics and Data Analysis, Volume 54, (2010), 858-862 Farebrother R.W. (1984) "Algorithm AS 204: The distribution of a Positive Linear Combination of chi-squared random variables". Applied Statistics Vol. 33, No. 3 (1984), p. 332-339 Kuonen D (1999) Saddlepoint Approximations for Distributions of Quadratic Forms in Normal Variables. Biometrika, Vol. 86, No. 4 (Dec., 1999), pp. 929-935 } \seealso{\code{\link{pchisq}}} \examples{ x <- 2.7*rnorm(1001)^2+rnorm(1001)^2+0.3*rnorm(1001)^2 x.thin<-sort(x)[1+(0:50)*20] p.invert<-pchisqsum(x.thin,df=c(1,1,1),a=c(2.7,1,.3),method="int" ,lower=FALSE) p.satt<-pchisqsum(x.thin,df=c(1,1,1),a=c(2.7,1,.3),method="satt",lower=FALSE) p.sadd<-pchisqsum(x.thin,df=c(1,1,1),a=c(2.7,1,.3),method="sad",lower=FALSE) plot(p.invert, p.satt,type="l",log="xy") abline(0,1,lty=2,col="purple") plot(p.invert, p.sadd,type="l",log="xy") abline(0,1,lty=2,col="purple") pchisqsum(20, df=c(1,1,1),a=c(2.7,1,.3), lower.tail=FALSE,method="sad") pFsum(20, df=c(1,1,1),a=c(2.7,1,.3), ddf=49,lower.tail=FALSE,method="sad") pFsum(20, df=c(1,1,1),a=c(2.7,1,.3), ddf=1000,lower.tail=FALSE,method="sad") } % Add one or more standard keywords, see file 'KEYWORDS' in the % R documentation directory. \keyword{survey} \keyword{distribution}% __ONLY ONE__ keyword per line survey/man/svyranktest.Rd0000644000176200001440000000537314233634027015262 0ustar liggesusers\name{svyranktest} \alias{svyranktest} %- Also NEED an '\alias' for EACH other topic documented here. \title{ Design-based rank tests } \description{ Design-based versions of k-sample rank tests. The built-in tests are all for location hypotheses, but the user could specify others. } \usage{ svyranktest(formula, design, test = c("wilcoxon", "vanderWaerden", "median","KruskalWallis"), ...) } %- maybe also 'usage' for other objects documented here. \arguments{ \item{formula}{ Model formula \code{y~g} for outcome variable \code{y} and group \code{g} } \item{design}{ A survey design object } \item{test}{ Which rank test to use: Wilcoxon, van der Waerden's normal-scores test, Mood's test for the median, or a function \code{f(r,N)} where \code{r} is the rank and \code{N} the estimated population size. "KruskalWallis" is a synonym for "wilcoxon" for more than two groups. } \item{\dots}{ for future expansion} } \details{These tests are for the null hypothesis that the population or superpopulation distributions of the response variable are different between groups, targeted at population or superpopulation alternatives. The 'ranks' are defined as quantiles of the pooled distribution of the variable, so they do not just go from 1 to N; the null hypothesis does not depend on the weights, but the ranks do. The tests reduce to the usual Normal approximations to the usual rank tests under iid sampling. Unlike the traditional rank tests, they are not exact in small samples. } \value{ Object of class \code{htest} Note that with more than two groups the \code{statistic} element of the return value holds the numerator degrees of freedom and the \code{parameter} element holds the test statistic. } \references{ Lumley, T., & Scott, A. J. (2013). Two-sample rank tests under complex sampling. BIOMETRIKA, 100 (4), 831-842. } \seealso{ \code{\link{svyttest}}, \code{\link{svylogrank}} } \examples{ data(api) dclus1<-svydesign(id=~dnum, weights=~pw, fpc=~fpc, data=apiclus1) svyranktest(ell~comp.imp, dclus1) svyranktest(ell~comp.imp, dclus1, test="median") svyranktest(ell~stype, dclus1) svyranktest(ell~stype, dclus1, test="median") str(svyranktest(ell~stype, dclus1)) ## upper quartile svyranktest(ell~comp.imp, dclus1, test=function(r,N) as.numeric(r>0.75*N)) quantiletest<-function(p){ rval<-function(r,N) as.numeric(r>(N*p)) attr(rval,"name")<-paste(p,"quantile") rval } svyranktest(ell~comp.imp, dclus1, test=quantiletest(0.5)) svyranktest(ell~comp.imp, dclus1, test=quantiletest(0.75)) ## replicate weights rclus1<-as.svrepdesign(dclus1) svyranktest(ell~stype, rclus1) } % Add one or more standard keywords, see file 'KEYWORDS' in the % R documentation directory. \keyword{survey} \keyword{htest}% __ONLY ONE__ keyword per line survey/man/salamander.Rd0000644000176200001440000000364214166647050014776 0ustar liggesusers\name{salamander} \docType{data} \alias{salamander} \concept{generalized linear mixed model} \title{Salamander mating data set from McCullagh and Nelder (1989)} \description{This data set presents the outcome of three experiments conducted at the University of Chicago in 1986 to study interbreeding between populations of mountain dusky salamanders (McCullagh and Nelder, 1989, Section 14.5). The analysis here is from Lumley (1998, section 5.3)} \usage{data(salamander)} \format{ A data frame with the following columns: \describe{ \item{Mate}{Whether the salamanders mated (1) or did not mate (0).} \item{Cross}{Cross between female and male type. A factor with four levels: \code{R/R},\code{R/W},\code{W/R}, and \code{W/W}. The type of the female salamander is listed first and the male is listed second. Rough Butt is represented by R and White Side is represented by W. For example, \code{Cross=W/R} indicates a White Side female was crossed with a Rough Butt male.} \item{Male}{Identification number of the male salamander. A factor.} \item{Female}{Identification number of the female salamander. A factor.} } } \references{McCullagh P. and Nelder, J. A. (1989) \emph{Generalized Linear Models}. Chapman and Hall/CRC. Lumley T (1998) PhD thesis, University of Washington } \examples{ data(salamander) salamander$mixed<-with(salamander, Cross=="W/R" | Cross=="R/W") salamander$RWvsWR<-with(salamander, ifelse(mixed, ((Cross=="R/W")-(Cross=="W/R"))/2, 0)) xsalamander<-xdesign(id=list(~Male, ~Female), data=salamander, overlap="unbiased") ## Adjacency matrix ## Blocks 1 and 2 are actually the same salamanders, but ## it's traditional to pretend they are independent. image(xsalamander$adjacency) ## R doesn't allow family=binomial(identity) success <- svyglm(Mate~mixed+RWvsWR, design=xsalamander, family=quasi(link="identity", variance="mu(1-mu)")) summary(success) } \keyword{datasets} survey/man/with.svyimputationList.Rd0000644000176200001440000000376713733223240017426 0ustar liggesusers\name{with.svyimputationList} \alias{with.svyimputationList} \alias{subset.svyimputationList} %- Also NEED an '\alias' for EACH other topic documented here. \title{Analyse multiple imputations} \description{ Performs a survey analysis on each of the designs in a \code{svyimputationList} objects and returns a list of results suitable for \code{MIcombine}. The analysis may be specified as an expression or as a function. } \usage{ \method{with}{svyimputationList}(data, expr, fun, ...,multicore=getOption("survey.multicore")) \method{subset}{svyimputationList}(x, subset,...) } %- maybe also 'usage' for other objects documented here. \arguments{ \item{data,x}{A \code{svyimputationList} object } \item{expr}{An expression giving a survey analysis} \item{fun}{A function taking a survey design object as its argument } \item{\dots}{for future expansion } \item{multicore}{Use \code{multicore} package to distribute imputed data sets over multiple processors?} \item{subset}{An logical expression specifying the subset} } \value{ A list of the results from applying the analysis to each design object. } \seealso{\code{MIcombine}, in the \code{mitools} package } \examples{ library(mitools) data.dir<-system.file("dta",package="mitools") files.men<-list.files(data.dir,pattern="m.\\\\.dta$",full=TRUE) men<-imputationList(lapply(files.men, foreign::read.dta, warn.missing.labels=FALSE)) files.women<-list.files(data.dir,pattern="f.\\\\.dta$",full=TRUE) women<-imputationList(lapply(files.women, foreign::read.dta, warn.missing.labels=FALSE)) men<-update(men, sex=1) women<-update(women,sex=0) all<-rbind(men,women) designs<-svydesign(id=~id, strata=~sex, data=all) designs results<-with(designs, svymean(~drkfre)) MIcombine(results) summary(MIcombine(results)) repdesigns<-as.svrepdesign(designs, type="boot", replicates=50) MIcombine(with(repdesigns, svymean(~drkfre))) } % Add one or more standard keywords, see file 'KEYWORDS' in the % R documentation directory. \keyword{survey }% __ONLY ONE__ keyword per line survey/man/svysmooth.Rd0000644000176200001440000000623012025753216014730 0ustar liggesusers\name{svysmooth} \alias{svysmooth} \alias{svysmooth.default} \alias{plot.svysmooth} \alias{print.svysmooth} \alias{lines.svysmooth} \alias{make.panel.svysmooth} %- Also NEED an '\alias' for EACH other topic documented here. \title{Scatterplot smoothing and density estimation} \description{ Scatterplot smoothing and density estimation for probability-weighted data. } \usage{ svysmooth(formula, design, ...) \method{svysmooth}{default}(formula, design, method = c("locpoly", "quantreg"), bandwidth = NULL, quantile, df = 4, ...) \method{plot}{svysmooth}(x, which=NULL, type="l", xlabs=NULL, ylab=NULL,...) \method{lines}{svysmooth}(x,which=NULL,...) make.panel.svysmooth(design,bandwidth=NULL) } %- maybe also 'usage' for other objects documented here. \arguments{ \item{formula}{One-sided formula for density estimation, two-sided for smoothing} \item{design}{Survey design object} \item{method}{local polynomial smoothing for the mean or regression splines for quantiles} \item{bandwidth}{Smoothing bandwidth for "locpoly" or \code{NULL} for automatic choice} \item{quantile}{quantile to be estimated for "quantreg"} \item{df}{Degrees of freedom for "quantreg"} \item{which}{Which plots to show (default is all)} \item{type}{as for \code{plot}} \item{xlabs}{Optional vector of x-axis labels} \item{ylab}{Optional y-axis label} \item{\dots}{More arguments} \item{x}{Object of class \code{svysmooth}} } \details{ \code{svysmooth} does one-dimensional smoothing. If \code{formula} has multiple predictor variables a separate one-dimensional smooth is performed for each one. For \code{method="locpoly"} the extra arguments are passed to \code{locpoly} from the KernSmooth package, for \code{method="quantreg"} they are passed to \code{rq} from the quantreg package. The automatic choice of bandwidth for \code{method="locpoly"} uses the default settings for \code{dpik} and \code{dpill} in the KernSmooth package. \code{make.panel.svysmooth()} makes a function that plots points and draws a weighted smooth curve through them, a weighted replacement for \code{\link{panel.smooth}} that can be passed to functions such as \code{\link{termplot}} or \code{\link{plot.lm}}. The resulting function has a \code{span} argument that will set the bandwidth; if this is not specified the automatic choice will be used. } \value{ An object of class \code{svysmooth}, a list of lists, each with \code{x} and \code{y} components. } \seealso{\code{\link{svyhist}} for histograms} \examples{ data(api) dstrat<-svydesign(id=~1,strata=~stype, weights=~pw, data=apistrat, fpc=~fpc) smth<-svysmooth(api00~api99+ell,dstrat) dens<-svysmooth(~api99, dstrat,bandwidth=30) dens1<-svysmooth(~api99, dstrat) qsmth<-svysmooth(api00~ell,dstrat, quantile=0.75, df=3,method="quantreg") plot(smth) plot(smth, which="ell",lty=2,ylim=c(500,900)) lines(qsmth, col="red") svyhist(~api99,design=dstrat) lines(dens,col="purple",lwd=3) lines(dens1, col="forestgreen",lwd=2) m<-svyglm(api00~sin(api99/100)+stype, design=dstrat) termplot(m, data=model.frame(dstrat), partial.resid=TRUE, se=TRUE, smooth=make.panel.svysmooth(dstrat)) } \keyword{hplot}% at least one, from doc/KEYWORDS \keyword{survey} survey/man/svychisq.Rd0000755000176200001440000002030614233634027014532 0ustar liggesusers\name{svytable} \alias{svreptable} \alias{svytable} \alias{svytable.svyrep.design} \alias{svytable.survey.design} \alias{svychisq} \alias{svychisq.survey.design} \alias{svychisq.svyrep.design} \alias{summary.svytable} \alias{print.summary.svytable} \alias{summary.svreptable} \alias{degf} \alias{degf.svyrep.design} \alias{degf.survey.design2} \alias{degf.twophase} %- Also NEED an '\alias' for EACH other topic documented here. \title{Contingency tables for survey data} \description{ Contingency tables and chisquared tests of association for survey data. } \usage{ \method{svytable}{survey.design}(formula, design, Ntotal = NULL, round = FALSE,...) \method{svytable}{svyrep.design}(formula, design, Ntotal = sum(weights(design, "sampling")), round = FALSE,...) \method{svychisq}{survey.design}(formula, design, statistic = c("F", "Chisq","Wald","adjWald","lincom", "saddlepoint","wls-score"),na.rm=TRUE,...) \method{svychisq}{svyrep.design}(formula, design, statistic = c("F", "Chisq","Wald","adjWald","lincom", "saddlepoint","wls-score"),na.rm=TRUE,...) \method{summary}{svytable}(object, statistic = c("F","Chisq","Wald","adjWald","lincom","saddlepoint"),...) degf(design, ...) \method{degf}{survey.design2}(design, ...) \method{degf}{svyrep.design}(design, tol=1e-5,...) } %- maybe also 'usage' for other objects documented here. \arguments{ \item{formula}{Model formula specifying margins for the table (using \code{+} only)} \item{design}{survey object} \item{statistic}{See Details below} \item{Ntotal}{A population total or set of population stratum totals to normalise to.} \item{round}{Should the table entries be rounded to the nearest integer?} \item{na.rm}{Remove missing values} \item{object}{Output from \code{svytable}} \item{...}{For \code{svytable} these are passed to \code{xtabs}. Use \code{exclude=NULL}, \code{na.action=na.pass} to include \code{NA}s in the table} \item{tol}{Tolerance for \code{\link{qr}} in computing the matrix rank} } \details{ The \code{svytable} function computes a weighted crosstabulation. This is especially useful for producing graphics. It is sometimes easier to use \code{\link{svytotal}} or \code{\link{svymean}}, which also produce standard errors, design effects, etc. The frequencies in the table can be normalised to some convenient total such as 100 or 1.0 by specifying the \code{Ntotal} argument. If the formula has a left-hand side the mean or sum of this variable rather than the frequency is tabulated. The \code{Ntotal} argument can be either a single number or a data frame whose first column gives the (first-stage) sampling strata and second column the population size in each stratum. In this second case the \code{svytable} command performs `post-stratification': tabulating and scaling to the population within strata and then adding up the strata. As with other \code{xtabs} objects, the output of \code{svytable} can be processed by \code{ftable} for more attractive display. The \code{summary} method for \code{svytable} objects calls \code{svychisq} for a test of independence. \code{svychisq} computes first and second-order Rao-Scott corrections to the Pearson chisquared test, and two Wald-type tests. The default (\code{statistic="F"}) is the Rao-Scott second-order correction. The p-values are computed with a Satterthwaite approximation to the distribution and with denominator degrees of freedom as recommended by Thomas and Rao (1990). The alternative \code{statistic="Chisq"} adjusts the Pearson chisquared statistic by a design effect estimate and then compares it to the chisquared distribution it would have under simple random sampling. The \code{statistic="Wald"} test is that proposed by Koch et al (1975) and used by the SUDAAN software package. It is a Wald test based on the differences between the observed cells counts and those expected under independence. The adjustment given by \code{statistic="adjWald"} reduces the statistic when the number of PSUs is small compared to the number of degrees of freedom of the test. Thomas and Rao (1987) compare these tests and find the adjustment benefical. \code{statistic="lincom"} replaces the numerator of the Rao-Scott F with the exact asymptotic distribution, which is a linear combination of chi-squared variables (see \code{\link{pchisqsum}}, and \code{statistic="saddlepoint"} uses a saddlepoint approximation to this distribution. The \code{CompQuadForm} package is needed for \code{statistic="lincom"} but not for \code{statistic="saddlepoint"}. The saddlepoint approximation is especially useful when the p-value is very small (as in large-scale multiple testing problems). \code{statistic="wls-score"} is an experimental implementation of the weighted least squares score test of Lipsitz et al (2015). It is not identical to that paper, for example, I think the denominator degrees of freedom need to be reduced by JK for a JxK table, not (J-1)(K-1). And it's very close to the "adjWald" test. For designs using replicate weights the code is essentially the same as for designs with sampling structure, since the necessary variance computations are done by the appropriate methods of \code{\link{svytotal}} and \code{\link{svymean}}. The exception is that the degrees of freedom is computed as one less than the rank of the matrix of replicate weights (by \code{degf}). At the moment, \code{svychisq} works only for 2-dimensional tables. } \value{ The table commands return an \code{xtabs} object, \code{svychisq} returns a \code{htest} object. } \references{ Davies RB (1973). "Numerical inversion of a characteristic function" Biometrika 60:415-7 P. Duchesne, P. Lafaye de Micheaux (2010) "Computing the distribution of quadratic forms: Further comparisons between the Liu-Tang-Zhang approximation and exact methods", Computational Statistics and Data Analysis, Volume 54, 858-862 Koch, GG, Freeman, DH, Freeman, JL (1975) "Strategies in the multivariate analysis of data from complex surveys" International Statistical Review 43: 59-78 Stuart R. Lipsitz, Garrett M. Fitzmaurice, Debajyoti Sinha, Nathanael Hevelone, Edward Giovannucci, and Jim C. Hu (2015) "Testing for independence in JxK contingency tables with complex sample survey data" Biometrics 71(3): 832-840 Rao, JNK, Scott, AJ (1984) "On Chi-squared Tests For Multiway Contigency Tables with Proportions Estimated From Survey Data" Annals of Statistics 12:46-60. Sribney WM (1998) "Two-way contingency tables for survey or clustered data" Stata Technical Bulletin 45:33-49. Thomas, DR, Rao, JNK (1987) "Small-sample comparison of level and power for simple goodness-of-fit statistics under cluster sampling" JASA 82:630-636 } \note{Rao and Scott (1984) leave open one computational issue. In computing `generalised design effects' for these tests, should the variance under simple random sampling be estimated using the observed proportions or the the predicted proportions under the null hypothesis? \code{svychisq} uses the observed proportions, following simulations by Sribney (1998), and the choices made in Stata} \seealso{\code{\link{svytotal}} and \code{\link{svymean}} report totals and proportions by category for factor variables. See \code{\link{svyby}} and \code{\link{ftable.svystat}} to construct more complex tables of summary statistics. See \code{\link{svyloglin}} for loglinear models. See \code{\link{regTermTest}} for Rao-Scott tests in regression models. See \url{https://notstatschat.rbind.io/2019/06/08/design-degrees-of-freedom-brief-note/} for an explanation of the design degrees of freedom with replicate weights. } \examples{ data(api) xtabs(~sch.wide+stype, data=apipop) dclus1<-svydesign(id=~dnum, weights=~pw, data=apiclus1, fpc=~fpc) summary(dclus1) (tbl <- svytable(~sch.wide+stype, dclus1)) plot(tbl) fourfoldplot(svytable(~sch.wide+comp.imp+stype,design=dclus1,round=TRUE), conf.level=0) svychisq(~sch.wide+stype, dclus1) summary(tbl, statistic="Chisq") svychisq(~sch.wide+stype, dclus1, statistic="adjWald") rclus1 <- as.svrepdesign(dclus1) summary(svytable(~sch.wide+stype, rclus1)) svychisq(~sch.wide+stype, rclus1, statistic="adjWald") } \keyword{survey}% at least one, from doc/KEYWORDS \keyword{category}% __ONLY ONE__ keyword per line \keyword{htest}% __ONLY ONE__ keyword per line survey/man/surveyoptions.Rd0000644000176200001440000000777711616342650015650 0ustar liggesusers\name{surveyoptions} \alias{surveyoptions} \alias{survey.lonely.psu} \alias{survey.ultimate.cluster} \alias{survey.adjust.domain.lonely} \alias{survey.want.obsolete} \alias{survey.drop.replicates} \alias{survey.multicore} \alias{survey.replicates.mse} \title{Options for the survey package} \description{ This help page documents the options that control the behaviour of the survey package. } \details{ All the options for the survey package have names beginning with "survey". Four of them control standard error estimation. \code{options("survey.replicates.mse")} controls the default in \code{svrepdesign} and \code{as.svrepdesign} for computing variances. When \code{options("survey.replicates.mse")} is \code{TRUE}, the default is to create replicate weight designs that compute variances centered at the point estimate, rather than at the mean of the replicates. The option can be overridden by specifying the \code{mse} argument explicitly in \code{svrepdesign} and \code{as.svrepdesign}. The default is \code{FALSE}. When \code{options("survey.ultimate.cluster")} is \code{TRUE}, standard error estimation is based on independence of PSUs at the first stage of sampling, without using any information about subsequent stages. When \code{FALSE}, finite population corrections and variances are estimated recursively. See \code{\link{svyrecvar}} for more information. This option makes no difference unless first-stage finite population corrections are specified, in which case setting the option to \code{TRUE} gives the wrong answer for a multistage study. The only reason to use \code{TRUE} is for compatibility with other software that gives the wrong answer. Handling of strata with a single PSU that are not certainty PSUs is controlled by \code{options("survey.lonely.psu")}. The default setting is \code{"fail"}, which gives an error. Use \code{"remove"} to ignore that PSU for variance computation, \code{"adjust"} to center the stratum at the population mean rather than the stratum mean, and \code{"average"} to replace the variance contribution of the stratum by the average variance contribution across strata. As of version 3.4-2 \code{as.svrepdesign} also uses this option. The variance formulas for domain estimation give well-defined, positive results when a stratum contains only one PSU with observations in the domain, but are not unbiased. If \code{options("survey.adjust.domain.lonely")} is \code{TRUE} and \code{options("survey.lonely.psu")} is \code{"average"} or \code{"adjust"} the same adjustment for lonely PSUs will be used within a domain. Note that this adjustment is not available for replicate-weight designs, nor (currently) for raked, post-stratified, or calibrated designs. The fourth option is \code{options("survey.want.obsolete")}. This controls the warnings about using the deprecated pre-2.9.0 survey design objects. The behaviour of replicate-weight designs for self-representing strata is controlled by \code{options("survey.drop.replicates")}. When \code{TRUE}, various optimizations are used that take advantage of the fact that these strata do not contribute to the variance. The only reason ever to use \code{FALSE} is if there is a bug in the code for these optimizations. The fifth option controls the use of multiple processors with the \code{multicore} package. This option should not affect the values computed by any of the survey functions. If \code{TRUE}, all functions that are able to use multiple processors will do so by default. Using multiple processors may speed up calculations, but need not, especially if the computer is short on memory. The best strategy is probably to experiment with explicitly requesting \code{multicore=TRUE} in functions that support it, to see if there is an increase in speed before setting the global option. } \keyword{survey} survey/man/svyolr.Rd0000644000176200001440000000431714412422532014213 0ustar liggesusers\name{svyolr} \alias{svyolr} \alias{svyolr.survey.design2} \alias{svyolr.svyrep.design} \alias{predict.svyolr} %- Also NEED an '\alias' for EACH other topic documented here. \title{Proportional odds and related models } \description{ Fits cumulative link models: proportional odds, probit, complementary log-log, and cauchit. } \usage{ svyolr(formula, design, ...) \method{svyolr}{survey.design2}(formula, design, start, subset=NULL,..., na.action = na.omit,method = c("logistic", "probit", "cloglog", "cauchit")) \method{svyolr}{svyrep.design}(formula,design,subset=NULL,...,return.replicates=FALSE, multicore=getOption("survey.multicore")) \method{predict}{svyolr}(object, newdata, type = c("class", "probs"), ...) } %- maybe also 'usage' for other objects documented here. \arguments{ \item{formula}{Formula: the response must be a factor with at least three levels} \item{design}{survey design object } \item{subset}{subset of the design to use; \code{NULL} for all of it} \item{\dots}{dots} \item{start}{Optional starting values for optimization} \item{na.action}{handling of missing values} \item{multicore}{Use \code{multicore} package to distribute computation of replicates across multiple processors?} \item{method}{Link function} \item{return.replicates}{return the individual replicate-weight estimates} \item{object}{object of class \code{svyolr}} \item{newdata}{new data for predictions} \item{type}{return vector of most likely class or matrix of probabilities} } \value{ An object of class \code{svyolr} } \author{The code is based closely on polr() from the MASS package of Venables and Ripley.} \seealso{\code{\link{svyglm}}, \code{\link{regTermTest}} } \examples{ data(api) dclus1<-svydesign(id=~dnum, weights=~pw, data=apiclus1, fpc=~fpc) dclus1<-update(dclus1, mealcat=cut(meals,c(0,25,50,75,100))) m<-svyolr(mealcat~avg.ed+mobility+stype, design=dclus1) m ## Use regTermTest for testing multiple parameters regTermTest(m, ~avg.ed+stype, method="LRT") ## predictions summary(predict(m, newdata=apiclus2)) summary(predict(m, newdata=apiclus2, type="probs")) } % Add one or more standard keywords, see file 'KEYWORDS' in the % R documentation directory. \keyword{survey} survey/man/oldsvyquantile.Rd0000755000176200001440000001633613707724316015762 0ustar liggesusers\name{oldsvyquantile} \alias{oldsvyquantile} \alias{oldsvyquantile.survey.design} \alias{oldsvyquantile.svyrep.design} \alias{print.svyquantile} %- Also NEED an `\alias' for EACH other topic documented here. \title{Deprecated implementation of quantiles} \description{ Compute quantiles for data from complex surveys. \code{oldsvyquantile} is the version of the function from before version 4.1 of the package, available for backwards compatibility. See \code{\link{svyquantile}} for the current version } \usage{ \method{oldsvyquantile}{survey.design}(x, design, quantiles, alpha=0.05, ci=FALSE, method = "linear", f = 1, interval.type=c("Wald","score","betaWald"), na.rm=FALSE,se=ci, ties=c("discrete","rounded"), df=NULL,...) \method{oldsvyquantile}{svyrep.design}(x, design, quantiles, method ="linear", interval.type=c("probability","quantile"), f = 1, return.replicates=FALSE, ties=c("discrete","rounded"),na.rm=FALSE, alpha=0.05,df=NULL,...) } %- maybe also `usage' for other objects documented here. \arguments{ \item{x}{A formula, vector or matrix} \item{design}{\code{survey.design} or \code{svyrep.design} object} \item{quantiles}{Quantiles to estimate} \item{method}{see \code{\link{approxfun}}} \item{f}{see \code{\link{approxfun}}} \item{ci}{Compute a confidence interval? (relatively slow; needed for \code{\link{svyby}})} \item{se}{Compute standard errors from the confidence interval length?} \item{alpha}{Level for confidence interval} \item{interval.type}{See Details below} \item{ties}{See Details below} \item{df}{Degrees of freedom for a t-distribution. \code{Inf} requests a Normal distribution, \code{NULL} uses \code{\link{degf}}. Not relevant for \code{type="betaWald"}} \item{return.replicates}{Return the replicate means?} \item{na.rm}{Remove \code{NA}s?} \item{...}{arguments for future expansion} } \details{ The definition of the CDF and thus of the quantiles is ambiguous in the presence of ties. With \code{ties="discrete"} the data are treated as genuinely discrete, so the CDF has vertical steps at tied observations. With \code{ties="rounded"} all the weights for tied observations are summed and the CDF interpolates linearly between distinct observed values, and so is a continuous function. Combining \code{interval.type="betaWald"} and \code{ties="discrete"} is (close to) the proposal of Shah and Vaish(2006) used in some versions of SUDAAN. Interval estimation for quantiles is complicated, because the influence function is not continuous. Linearisation cannot be used directly, and computing the variance of replicates is valid only for some designs (eg BRR, but not jackknife). The \code{interval.type} option controls how the intervals are computed. For \code{survey.design} objects the default is \code{interval.type="Wald"}. A 95\% Wald confidence interval is constructed for the proportion below the estimated quantile. The inverse of the estimated CDF is used to map this to a confidence interval for the quantile. This is the method of Woodruff (1952). For \code{"betaWald"} the same procedure is used, but the confidence interval for the proportion is computed using the exact binomial cdf with an effective sample size proposed by Korn & Graubard (1998). If \code{interval.type="score"} we use a method described by Binder (1991) and due originally to Francisco and Fuller (1986), which corresponds to inverting a robust score test. At the upper and lower limits of the confidence interval, a test of the null hypothesis that the cumulative distribution function is equal to the target quantile just rejects. This was the default before version 2.9. It is much slower than \code{"Wald"}, and Dorfman & Valliant (1993) suggest it is not any more accurate. Standard errors are computed from these confidence intervals by dividing the confidence interval length by \code{2*qnorm(alpha/2)}. For replicate-weight designs, ordinary replication-based standard errors are valid for BRR and Fay's method, and for some bootstrap-based designs, but not for jackknife-based designs. \code{interval.type="quantile"} gives these replication-based standard errors. The default, \code{interval.type="probability"} computes confidence on the probability scale and then transforms back to quantiles, the equivalent of \code{interval.type="Wald"} for \code{survey.design} objects (with \code{alpha=0.05}). There is a \code{confint} method for \code{svyquantile} objects; it simply extracts the pre-computed confidence interval. } \value{ returns a list whose first component is the quantiles and second component is the confidence intervals. For replicate weight designs, returns an object of class \code{svyrepstat}. } \author{Thomas Lumley} \seealso{ \code{\link{svykm}} for quantiles of survival curves \code{\link{svyciprop}} for confidence intervals on proportions. } \references{ Binder DA (1991) Use of estimating functions for interval estimation from complex surveys. \emph{Proceedings of the ASA Survey Research Methods Section} 1991: 34-42 Dorfman A, Valliant R (1993) Quantile variance estimators in complex surveys. Proceedings of the ASA Survey Research Methods Section. 1993: 866-871 Korn EL, Graubard BI. (1998) Confidence Intervals For Proportions With Small Expected Number of Positive Counts Estimated From Survey Data. Survey Methodology 23:193-201. Francisco CA, Fuller WA (1986) Estimation of the distribution function with a complex survey. Technical Report, Iowa State University. Shao J, Tu D (1995) \emph{The Jackknife and Bootstrap}. Springer. Shah BV, Vaish AK (2006) Confidence Intervals for Quantile Estimation from Complex Survey Data. Proceedings of the Section on Survey Research Methods. Woodruff RS (1952) Confidence intervals for medians and other position measures. JASA 57, 622-627. } \examples{ data(api) ## population quantile(apipop$api00,c(.25,.5,.75)) ## one-stage cluster sample dclus1<-svydesign(id=~dnum, weights=~pw, data=apiclus1, fpc=~fpc) oldsvyquantile(~api00, dclus1, c(.25,.5,.75),ci=TRUE) oldsvyquantile(~api00, dclus1, c(.25,.5,.75),ci=TRUE,interval.type="betaWald") oldsvyquantile(~api00, dclus1, c(.25,.5,.75),ci=TRUE,df=NULL) dclus1<-svydesign(id=~dnum, weights=~pw, data=apiclus1, fpc=~fpc) (qapi<-oldsvyquantile(~api00, dclus1, c(.25,.5,.75),ci=TRUE, interval.type="score")) SE(qapi) #stratified sample dstrat<-svydesign(id=~1, strata=~stype, weights=~pw, data=apistrat, fpc=~fpc) oldsvyquantile(~api00, dstrat, c(.25,.5,.75),ci=TRUE) #stratified sample, replicate weights # interval="probability" is necessary for jackknife weights rstrat<-as.svrepdesign(dstrat) oldsvyquantile(~api00, rstrat, c(.25,.5,.75), interval.type="probability") # BRR method data(scd) repweights<-2*cbind(c(1,0,1,0,1,0), c(1,0,0,1,0,1), c(0,1,1,0,0,1), c(0,1,0,1,1,0)) scdrep<-svrepdesign(data=scd, type="BRR", repweights=repweights) oldsvyquantile(~arrests+alive, design=scdrep, quantile=0.5, interval.type="quantile") oldsvyquantile(~arrests+alive, design=scdrep, quantile=0.5, interval.type="quantile",df=NULL) } \keyword{univar}% at least one, from doc/KEYWORDS \keyword{survey}% __ONLY ONE__ keyword per line survey/man/as.fpc.Rd0000644000176200001440000000227511757251663014046 0ustar liggesusers\name{as.fpc} \alias{as.fpc} %- Also NEED an '\alias' for EACH other topic documented here. \title{ Package sample and population size data} \description{ This function creates an object to store the number of clusters sampled within each stratum (at each stage of multistage sampling) and the number of clusters available in the population. It is called by \code{svydesign}, not directly by the user. } \usage{ as.fpc(df, strata, ids,pps=FALSE) } %- maybe also 'usage' for other objects documented here. \arguments{ \item{df}{A data frame or matrix with population size information} \item{strata}{A data frame giving strata at each stage} \item{ids}{A data frame giving cluster ids at each stage} \item{pps}{if \code{TRUE}, fpc information may vary within a stratum and must be specified as a proportion rather than a population sizes} } \details{ The population size information may be specified as the number of clusters in the population or as the proportion of clusters sampled. } \value{ An object of class \code{survey_fpc} } \seealso{\code{\link{svydesign}},\code{\link{svyrecvar}}} \keyword{survey}% at least one, from doc/KEYWORDS \keyword{manip}% __ONLY ONE__ keyword per line survey/man/svyratio.Rd0000755000176200001440000001164513676517357014567 0ustar liggesusers\name{svyratio} \alias{svyratio} \alias{print.svyratio} \alias{print.svyratio_separate} \alias{svyratio.svyrep.design} \alias{svyratio.survey.design} \alias{svyratio.survey.design2} \alias{svyratio.twophase} \alias{coef.svyratio} \alias{SE.svyratio} \alias{predict.svyratio} \alias{predict.svyratio_separate} \alias{confint.svyratio} %- Also NEED an `\alias' for EACH other topic documented here. \title{Ratio estimation} \description{ Ratio estimation and estimates of totals based on ratios for complex survey samples. Estimating domain (subpopulation) means can be done more easily with \code{\link{svymean}}. } \usage{ \method{svyratio}{survey.design2}(numerator=formula, denominator, design,separate=FALSE, na.rm=FALSE,formula, covmat=FALSE, deff=FALSE,influence=FALSE,...) \method{svyratio}{svyrep.design}(numerator=formula, denominator, design, na.rm=FALSE,formula, covmat=FALSE,return.replicates=FALSE,deff=FALSE, ...) \method{svyratio}{twophase}(numerator=formula, denominator, design, separate=FALSE, na.rm=FALSE,formula,...) \method{predict}{svyratio}(object, total, se=TRUE,...) \method{predict}{svyratio_separate}(object, total, se=TRUE,...) \method{SE}{svyratio}(object,...,drop=TRUE) \method{coef}{svyratio}(object,...,drop=TRUE) \method{confint}{svyratio}(object, parm, level = 0.95,df =Inf,...) } %- maybe also `usage' for other objects documented here. \arguments{ \item{numerator,formula}{formula, expression, or data frame giving numerator variable(s)} \item{denominator}{formula, expression, or data frame giving denominator variable(s) } \item{design}{survey design object} \item{object}{result of \code{svyratio}} \item{total}{vector of population totals for the denominator variables in \code{object}, or list of vectors of population stratum totals if \code{separate=TRUE}} \item{se}{Return standard errors?} \item{separate}{Estimate ratio separately for strata} \item{na.rm}{Remove missing values?} \item{covmat}{Compute the full variance-covariance matrix of the ratios} \item{deff}{Compute design effects} \item{return.replicates}{Return replicate estimates of ratios} \item{influence}{Return influence functions} \item{drop}{Return a vector rather than a matrix} \item{parm}{a specification of which parameters are to be given confidence intervals, either a vector of numbers or a vector of names. If missing, all parameters are considered.} \item{level}{the confidence level required.} \item{df}{degrees of freedom for t-distribution in confidence interval, use \code{degf(design)} for number of PSUs minus number of strata} \item{...}{Other unused arguments for other methods} } \details{ The separate ratio estimate of a total is the sum of ratio estimates in each stratum. If the stratum totals supplied in the \code{total} argument and the strata in the design object both have names these names will be matched. If they do not have names it is important that the sample totals are supplied in the correct order, the same order as shown in the output of \code{summary(design)}. When \code{design} is a two-phase design, stratification will be on the second phase. } \value{ \code{svyratio} returns an object of class \code{svyratio}. The \code{predict} method returns a matrix of population totals and optionally a matrix of standard errors. } \references{Levy and Lemeshow. "Sampling of Populations" (3rd edition). Wiley} \author{Thomas Lumley} \seealso{\code{\link{svydesign}} \code{\link{svymean}} for estimating proportions and domain means \code{\link{calibrate}} for estimators related to the separate ratio estimator. } \examples{ data(scd) ## survey design objects scddes<-svydesign(data=scd, prob=~1, id=~ambulance, strata=~ESA, nest=TRUE, fpc=rep(5,6)) scdnofpc<-svydesign(data=scd, prob=~1, id=~ambulance, strata=~ESA, nest=TRUE) # convert to BRR replicate weights scd2brr <- as.svrepdesign(scdnofpc, type="BRR") # use BRR replicate weights from Levy and Lemeshow repweights<-2*cbind(c(1,0,1,0,1,0), c(1,0,0,1,0,1), c(0,1,1,0,0,1), c(0,1,0,1,1,0)) scdrep<-svrepdesign(data=scd, type="BRR", repweights=repweights) # ratio estimates svyratio(~alive, ~arrests, design=scddes) svyratio(~alive, ~arrests, design=scdnofpc) svyratio(~alive, ~arrests, design=scd2brr) svyratio(~alive, ~arrests, design=scdrep) data(api) dstrat<-svydesign(id=~1,strata=~stype, weights=~pw, data=apistrat, fpc=~fpc) ## domain means are ratio estimates, but available directly svyratio(~I(api.stu*(comp.imp=="Yes")), ~as.numeric(comp.imp=="Yes"), dstrat) svymean(~api.stu, subset(dstrat, comp.imp=="Yes")) ## separate and combined ratio estimates of total (sep<-svyratio(~api.stu,~enroll, dstrat,separate=TRUE)) (com<-svyratio(~api.stu, ~enroll, dstrat)) stratum.totals<-list(E=1877350, H=1013824, M=920298) predict(sep, total=stratum.totals) predict(com, total=sum(unlist(stratum.totals))) SE(com) coef(com) coef(com, drop=FALSE) confint(com) } \keyword{survey}% at least one, from doc/KEYWORDS survey/man/withPV.survey.design.Rd0000644000176200001440000000407413460416456016714 0ustar liggesusers\name{withPV.survey.design} \alias{withPV.survey.design} %- Also NEED an '\alias' for EACH other topic documented here. \title{ Analyse plausible values in surveys } \description{ Repeats an analysis for each of a set of 'plausible values' in a survey data set, returning a list suitable for \code{mitools::MIcombine}. The default method works for both standard and replicate-weight designs but not for two-phase designs. } \usage{ \S3method{withPV}{survey.design}(mapping, data, action, rewrite=TRUE, ...) } %- maybe also 'usage' for other objects documented here. \arguments{ \item{mapping}{ A formula or list of formulas describing each variable in the analysis that has plausible values. The left-hand side of the formula is the name to use in the analysis; the right-hand side gives the names in the dataset. } \item{data}{ A survey design object, as created by \code{svydesign} or \code{svrepdesign} } \item{action}{ With \code{rewrite=TRUE}, a function taking a survey design object as its only argument, or a quoted expression. With \code{rewrite=TRUE} a function taking a survey design object as its only argument, or a quoted expression with \code{.DESIGN} referring to the survey design object to be used. } \item{rewrite}{ Rewrite \code{action} before evaluating it (versus constructing new data sets) } \item{\dots}{ For methods } } \value{ A list of the results returned by each evaluation of \code{action}, with the call as an attribute. } \seealso{ \code{\link{with.svyimputationList}} } \examples{ if(require(mitools)){ data(pisamaths, package="mitools") des<-svydesign(id=~SCHOOLID+STIDSTD, strata=~STRATUM, nest=TRUE, weights=~W_FSCHWT+condwt, data=pisamaths) oo<-options(survey.lonely.psu="remove") results<-withPV(list(maths~PV1MATH+PV2MATH+PV3MATH+PV4MATH+PV5MATH), data=des, action=quote(svyglm(maths~ST04Q01*(PCGIRLS+SMRATIO)+MATHEFF+OPENPS, design=des)), rewrite=TRUE) summary(MIcombine(results)) options(oo) } } % Add one or more standard keywords, see file 'KEYWORDS' in the % R documentation directory. \keyword{survey}% use one of RShowDoc("KEYWORDS")survey/man/anova.svyglm.Rd0000644000176200001440000001414014233634027015301 0ustar liggesusers\name{anova.svyglm} \alias{anova.svyglm} \alias{AIC.svyglm} \alias{BIC.svyglm} \alias{extractAIC.svyglm} \alias{extractAIC.svrepglm} \alias{anova.svycoxph} %- Also NEED an '\alias' for EACH other topic documented here. \title{ Model comparison for glms. } \description{ A method for the \code{\link{anova}} function, for use on \code{\link{svyglm}} and \code{\link{svycoxph}} objects. With a single model argument it produces a sequential anova table, with two arguments it compares the two models. } \usage{ \method{anova}{svyglm}(object, object2 = NULL, test = c("F", "Chisq"), method = c("LRT", "Wald"), tolerance = 1e-05, ..., force = FALSE) \method{anova}{svycoxph}(object, object2=NULL,test=c("F","Chisq"), method=c("LRT","Wald"),tolerance=1e-5,...,force=FALSE) \method{AIC}{svyglm}(object,...,k=2, null_has_intercept=TRUE) \method{BIC}{svyglm}(object,...,maximal) \method{extractAIC}{svyglm}(fit,scale,k=2,..., null_has_intercept=TRUE) \method{extractAIC}{svrepglm}(fit,scale,k=2,..., null_has_intercept=TRUE) } %- maybe also 'usage' for other objects documented here. \arguments{ \item{object,fit}{ A \code{\link{svyglm}} or\code{\link{svycoxph}} object. } \item{object2}{ Optionally, another \code{\link{svyglm}} or \code{\link{svycoxph}} object. } \item{test}{ Use (linear combination of) F or chi-squared distributions for p-values. F is usually preferable. } \item{method}{ Use weighted deviance difference (LRT) or Wald tests to compare models } \item{tolerance}{ For models that are not symbolically nested, the tolerance for deciding that a term is common to the models. } \item{\dots}{ For \code{AIC} and \code{BIC}, optionally more \code{svyglm} objects } \item{scale}{not used} \item{null_has_intercept}{Does the null model for AIC have an intercept or not? } \item{force}{ Force the tests to be done by explicit projection even if the models are symbolically nested (eg, for debugging) } \item{maximal}{A \code{svyglm} model that \code{object} (and \dots if supplied) are nested in.} \item{k}{Multiplier for effective df in AIC. Usually 2. There is no choice of \code{k} that will give BIC} } \details{ The reference distribution for the LRT depends on the misspecification effects for the parameters being tested (Rao and Scott, 1984). If the models are symbolically nested, so that the relevant parameters can be identified just by manipulating the model formulas, \code{anova} is equivalent to \code{\link{regTermTest}}.If the models are nested but not symbolically nested, more computation using the design matrices is needed to determine the projection matrix on to the parameters being tested. In the examples below, \code{model1} and \code{model2} are symbolically nested in \code{model0} because \code{model0} can be obtained just by deleting terms from the formulas. On the other hand, \code{model2} is nested in \code{model1} but not symbolically nested: knowing that the model is nested requires knowing what design matrix columns are produced by \code{stype} and \code{as.numeric(stype)}. Other typical examples of models that are nested but not symbolically nested are linear and spline models for a continuous covariate, or models with categorical versions of a variable at different resolutions (eg, smoking yes/no or smoking never/former/current). A saddlepoint approximation is used for the LRT with numerator df greater than 1. \code{AIC} is defined using the Rao-Scott approximation to the weighted loglikelihood (Lumley and Scott, 2015). It replaces the usual penalty term p, which is the null expectation of the log likelihood ratio, by the trace of the generalised design effect matrix, which is the expectation under complex sampling. For computational reasons everything is scaled so the weights sum to the sample size. \code{BIC} is a BIC for the (approximate) multivariate Gaussian models on regression coefficients from the maximal model implied by each submodel (ie, the models that say some coefficients in the maximal model are zero) (Lumley and Scott, 2015). It corresponds to comparing the models with a Wald test and replacing the sample size in the penalty by an effective sample size. For computational reasons, the models must not only be nested, the names of the coefficients must match. \code{extractAIC} for a model with a Gaussian link uses the actual AIC based on maximum likelihood estimation of the variance parameter as well as the regression parameters. } \value{ Object of class \code{seqanova.svyglm} if one model is given, otherwise of class \code{regTermTest} or \code{regTermTestLRT} } \note{ At the moment, \code{AIC} works only for models including an intercept. } \references{ Rao, JNK, Scott, AJ (1984) "On Chi-squared Tests For Multiway Contingency Tables with Proportions Estimated From Survey Data" Annals of Statistics 12:46-60. Lumley, T., & Scott, A. (2014). "Tests for Regression Models Fitted to Survey Data". Australian and New Zealand Journal of Statistics, 56 (1), 1-14. Lumley T, Scott AJ (2015) "AIC and BIC for modelling with complex survey data" J Surv Stat Methodol 3 (1): 1-18. } \seealso{ \code{\link{regTermTest}}, \code{\link{pchisqsum}} } \examples{ data(api) dclus2<-svydesign(id=~dnum+snum, weights=~pw, data=apiclus2) model0<-svyglm(I(sch.wide=="Yes")~ell+meals+mobility, design=dclus2, family=quasibinomial()) model1<-svyglm(I(sch.wide=="Yes")~ell+meals+mobility+as.numeric(stype), design=dclus2, family=quasibinomial()) model2<-svyglm(I(sch.wide=="Yes")~ell+meals+mobility+stype, design=dclus2, family=quasibinomial()) anova(model2) anova(model0,model2) anova(model1, model2) anova(model1, model2, method="Wald") AIC(model0,model1, model2) BIC(model0, model2,maximal=model2) ## from ?twophase data(nwtco) dcchs<-twophase(id=list(~seqno,~seqno), strata=list(NULL,~rel), subset=~I(in.subcohort | rel), data=nwtco) a<-svycoxph(Surv(edrel,rel)~factor(stage)+factor(histol)+I(age/12), design=dcchs) b<-update(a, .~.-I(age/12)+poly(age,3)) ## not symbolically nested models anova(a,b) } % Add one or more standard keywords, see file 'KEYWORDS' in the % R documentation directory. \keyword{survey} \keyword{regression}% __ONLY ONE__ keyword per line survey/man/rake.Rd0000755000176200001440000000773611765257225013627 0ustar liggesusers\name{rake} \alias{rake} %- Also NEED an '\alias' for EACH other topic documented here. \title{Raking of replicate weight design} \description{ Raking uses iterative post-stratification to match marginal distributions of a survey sample to known population margins. } \usage{ rake(design, sample.margins, population.margins, control = list(maxit = 10, epsilon = 1, verbose=FALSE), compress=NULL) } %- maybe also 'usage' for other objects documented here. \arguments{ \item{design}{A survey object } \item{sample.margins}{list of formulas or data frames describing sample margins, which must not contain missing values} \item{population.margins}{list of tables or data frames describing corresponding population margins } \item{control}{\code{maxit} controls the number of iterations. Convergence is declared if the maximum change in a table entry is less than \code{epsilon}. If \code{epsilon<1} it is taken to be a fraction of the total sampling weight. } \item{compress}{If \code{design} has replicate weights, attempt to compress the new replicate weight matrix? When \code{NULL}, will attempt to compress if the original weight matrix was compressed} } \details{ The \code{sample.margins} should be in a format suitable for \code{\link{postStratify}}. Raking (aka iterative proportional fitting) is known to converge for any table without zeros, and for any table with zeros for which there is a joint distribution with the given margins and the same pattern of zeros. The `margins' need not be one-dimensional. The algorithm works by repeated calls to \code{\link{postStratify}} (iterative proportional fitting), which is efficient for large multiway tables. For small tables \code{\link{calibrate}} will be faster, and also allows raking to population totals for continuous variables, and raking with bounded weights. } \value{ A raked survey design. } \seealso{ \code{\link{postStratify}}, \code{\link{compressWeights}} \code{\link{calibrate}} for other ways to use auxiliary information. } \examples{ data(api) dclus1 <- svydesign(id=~dnum, weights=~pw, data=apiclus1, fpc=~fpc) rclus1 <- as.svrepdesign(dclus1) svymean(~api00, rclus1) svytotal(~enroll, rclus1) ## population marginal totals for each stratum pop.types <- data.frame(stype=c("E","H","M"), Freq=c(4421,755,1018)) pop.schwide <- data.frame(sch.wide=c("No","Yes"), Freq=c(1072,5122)) rclus1r <- rake(rclus1, list(~stype,~sch.wide), list(pop.types, pop.schwide)) svymean(~api00, rclus1r) svytotal(~enroll, rclus1r) ## marginal totals correspond to population xtabs(~stype, apipop) svytable(~stype, rclus1r, round=TRUE) xtabs(~sch.wide, apipop) svytable(~sch.wide, rclus1r, round=TRUE) ## joint totals don't correspond xtabs(~stype+sch.wide, apipop) svytable(~stype+sch.wide, rclus1r, round=TRUE) ## Do it for a design without replicate weights dclus1r<-rake(dclus1, list(~stype,~sch.wide), list(pop.types, pop.schwide)) svymean(~api00, dclus1r) svytotal(~enroll, dclus1r) ## compare to raking with calibrate() dclus1gr<-calibrate(dclus1, ~stype+sch.wide, pop=c(6194, 755,1018,5122), calfun="raking") svymean(~stype+api00, dclus1r) svymean(~stype+api00, dclus1gr) ## compare to joint post-stratification ## (only possible if joint population table is known) ## pop.table <- xtabs(~stype+sch.wide,apipop) rclus1ps <- postStratify(rclus1, ~stype+sch.wide, pop.table) svytable(~stype+sch.wide, rclus1ps, round=TRUE) svymean(~api00, rclus1ps) svytotal(~enroll, rclus1ps) ## Example of raking with partial joint distributions pop.imp<-data.frame(comp.imp=c("No","Yes"),Freq=c(1712,4482)) dclus1r2<-rake(dclus1, list(~stype+sch.wide, ~comp.imp), list(pop.table, pop.imp)) svymean(~api00, dclus1r2) ## compare to calibrate() syntax with tables dclus1r2<-calibrate(dclus1, formula=list(~stype+sch.wide, ~comp.imp), population=list(pop.table, pop.imp),calfun="raking") svymean(~api00, dclus1r2) } \keyword{survey}% at least one, from doc/KEYWORDS \keyword{manip} survey/man/postStratify.Rd0000755000176200001440000000751512750540521015400 0ustar liggesusers\name{postStratify} \alias{postStratify} \alias{postStratify.twophase} \alias{postStratify.svyrep.design} \alias{postStratify.survey.design} %- Also NEED an '\alias' for EACH other topic documented here. \title{Post-stratify a survey } \description{ Post-stratification adjusts the sampling and replicate weights so that the joint distribution of a set of post-stratifying variables matches the known population joint distribution. Use \code{\link{rake}} when the full joint distribution is not available. } \usage{ postStratify(design, strata, population, partial = FALSE, ...) \method{postStratify}{svyrep.design}(design, strata, population, partial = FALSE, compress=NULL,...) \method{postStratify}{survey.design}(design, strata, population, partial = FALSE, ...) } %- maybe also 'usage' for other objects documented here. \arguments{ \item{design}{A survey design with replicate weights} \item{strata}{A formula or data frame of post-stratifying variables, which must not contain missing values. } \item{population}{A \code{\link{table}}, \code{\link{xtabs}} or \code{data.frame} with population frequencies } \item{partial}{if \code{TRUE}, ignore population strata not present in the sample} \item{compress}{Attempt to compress the replicate weight matrix? When \code{NULL} will attempt to compress if the original weight matrix was compressed} \item{...}{arguments for future expansion} } \details{ The \code{population} totals can be specified as a table with the strata variables in the margins, or as a data frame where one column lists frequencies and the other columns list the unique combinations of strata variables (the format produced by \code{as.data.frame} acting on a \code{table} object). A table must have named dimnames to indicate the variable names. Compressing the replicate weights will take time and may even increase memory use if there is actually little redundancy in the weight matrix (in particular if the post-stratification variables have many values and cut across PSUs). If a \code{svydesign} object is to be converted to a replication design the post-stratification should be performed after conversion. The variance estimate for replication designs follows the same procedure as Valliant (1993) described for estimating totals. Rao et al (2002) describe this procedure for estimating functions (and also the GREG or g-calibration procedure, see \code{\link{calibrate}}) } \note{ If the sampling weights are already post-stratified there will be no change in point estimates after \code{postStratify} but the standard error estimates will decrease to correctly reflect the post-stratification. } \value{ A new survey design object. } \references{ Valliant R (1993) Post-stratification and conditional variance estimation. JASA 88: 89-96 Rao JNK, Yung W, Hidiroglou MA (2002) Estimating equations for the analysis of survey data using poststratification information. Sankhya 64 Series A Part 2, 364-378. } \seealso{ \code{\link{rake}}, \code{\link{calibrate}} for other things to do with auxiliary information \code{\link{compressWeights}} for information on compressing weights} \examples{ data(api) dclus1<-svydesign(id=~dnum, weights=~pw, data=apiclus1, fpc=~fpc) rclus1<-as.svrepdesign(dclus1) svymean(~api00, rclus1) svytotal(~enroll, rclus1) # post-stratify on school type pop.types <- data.frame(stype=c("E","H","M"), Freq=c(4421,755,1018)) #or: pop.types <- xtabs(~stype, data=apipop) #or: pop.types <- table(stype=apipop$stype) rclus1p<-postStratify(rclus1, ~stype, pop.types) summary(rclus1p) svymean(~api00, rclus1p) svytotal(~enroll, rclus1p) ## and for svydesign objects dclus1p<-postStratify(dclus1, ~stype, pop.types) summary(dclus1p) svymean(~api00, dclus1p) svytotal(~enroll, dclus1p) } \keyword{survey}% at least one, from doc/KEYWORDS \keyword{manip} survey/man/svyrecvar.Rd0000755000176200001440000001076611643404705014716 0ustar liggesusers\name{svyrecvar} \alias{svyrecvar} \alias{multistage} %- Also NEED an '\alias' for EACH other topic documented here. \title{Variance estimation for multistage surveys} \description{ Compute the variance of a total under multistage sampling, using a recursive descent algorithm. } \usage{ svyrecvar(x, clusters, stratas,fpcs, postStrata = NULL, lonely.psu = getOption("survey.lonely.psu"), one.stage=getOption("survey.ultimate.cluster")) } %- maybe also 'usage' for other objects documented here. \arguments{ \item{x}{Matrix of data or estimating functions} \item{clusters}{Data frame or matrix with cluster ids for each stage} \item{stratas}{Strata for each stage } \item{fpcs}{Information on population and sample size for each stage, created by \code{\link{as.fpc}}} \item{postStrata}{post-stratification information as created by \code{\link{postStratify}} or \code{\link{calibrate}} } \item{lonely.psu}{How to handle strata with a single PSU} \item{one.stage}{If \code{TRUE}, compute a one-stage (ultimate-cluster) estimator} } \details{ The main use of this function is to compute the variance of the sum of a set of estimating functions under multistage sampling. The sampling is assumed to be simple or stratified random sampling within clusters at each stage except perhaps the last stage. The variance of a statistic is computed from the variance of estimating functions as described by Binder (1983). Use \code{one.stage=FALSE} for compatibility with other software that does not perform multi-stage calculations, and set \code{options(survey.ultimate.cluster=TRUE)} to make this the default. The idea of a recursive algorithm is due to Bellhouse (1985). Texts such as Cochran (1977) and Sarndal et al (1991) describe the decomposition of the variance into a single-stage between-cluster estimator and a within-cluster estimator, and this is applied recursively. If \code{one.stage} is a positive integer it specifies the number of stages of sampling to use in the recursive estimator. If \code{pps="brewer"}, standard errors are estimated using Brewer's approximation for PPS without replacement, option 2 of those described by Berger (2004). The \code{fpc} argument must then be specified in terms of sampling fractions, not population sizes (or omitted, but then the \code{pps} argument would have no effect and the with-replacement standard errors would be correct). } \value{ A covariance matrix } \references{ Bellhouse DR (1985) Computing Methods for Variance Estimation in Complex Surveys. Journal of Official Statistics. Vol.1, No.3, 1985 Berger, Y.G. (2004), A Simple Variance Estimator for Unequal Probability Sampling Without Replacement. Journal of Applied Statistics, 31, 305-315. Binder, David A. (1983). On the variances of asymptotically normal estimators from complex surveys. International Statistical Review, 51, 279-292. Brewer KRW (2002) Combined Survey Sampling Inference (Weighing Basu's Elephants) [Chapter 9] Cochran, W. (1977) Sampling Techniques. 3rd edition. Wiley. Sarndal C-E, Swensson B, Wretman J (1991) Model Assisted Survey Sampling. Springer. } \note{ A simple set of finite population corrections will only be exactly correct when each successive stage uses simple or stratified random sampling without replacement. A correction under general unequal probability sampling (eg PPS) would require joint inclusion probabilities (or, at least, sampling probabilities for units not included in the sample), information not generally available. The quality of Brewer's approximation is excellent in Berger's simulations, but the accuracy may vary depending on the sampling algorithm used. } \seealso{ \code{\link{svrVar}} for replicate weight designs \code{\link{svyCprod}} for a description of how variances are estimated at each stage } \examples{ data(mu284) dmu284<-svydesign(id=~id1+id2,fpc=~n1+n2, data=mu284) svytotal(~y1, dmu284) data(api) # two-stage cluster sample dclus2<-svydesign(id=~dnum+snum, fpc=~fpc1+fpc2, data=apiclus2) summary(dclus2) svymean(~api00, dclus2) svytotal(~enroll, dclus2,na.rm=TRUE) # bootstrap for multistage sample mrbclus2<-as.svrepdesign(dclus2, type="mrb", replicates=100) svytotal(~enroll, mrbclus2, na.rm=TRUE) # two-stage `with replacement' dclus2wr<-svydesign(id=~dnum+snum, weights=~pw, data=apiclus2) summary(dclus2wr) svymean(~api00, dclus2wr) svytotal(~enroll, dclus2wr,na.rm=TRUE) } \keyword{survey}% at least one, from doc/KEYWORDS survey/man/svyfactanal.Rd0000644000176200001440000000502112372226111015157 0ustar liggesusers\name{svyfactanal} \Rdversion{1.1} \alias{svyfactanal} %- Also NEED an '\alias' for EACH other topic documented here. \title{ Factor analysis in complex surveys (experimental). } \description{ This function fits a factor analysis model or SEM, by maximum weighted likelihood. } \usage{ svyfactanal(formula, design, factors, n = c("none", "sample", "degf","effective", "min.effective"), ...) } %- maybe also 'usage' for other objects documented here. \arguments{ \item{formula}{ Model formula specifying the variables to use } \item{design}{ Survey design object } \item{factors}{ Number of factors to estimate } \item{n}{ Sample size to be used for testing: see below} \item{\dots}{ Other arguments to pass to \code{\link{factanal}}. } } \details{ The population covariance matrix is estimated by \code{\link{svyvar}} and passed to \code{\link{factanal}} Although fitting these models requires only the estimated covariance matrix, inference requires a sample size. With \code{n="sample"}, the sample size is taken to be the number of observations; with \code{n="degf"}, the survey degrees of freedom as returned by \code{\link{degf}}. Using \code{"sample"} corresponds to standardizing weights to have mean 1, and is known to result in anti-conservative tests. The other two methods estimate an effective sample size for each variable as the sample size where the standard error of a variance of a Normal distribution would match the design-based standard error estimated by \code{\link{svyvar}}. With \code{n="min.effective"} the minimum sample size across the variables is used; with \code{n="effective"} the harmonic mean is used. For \code{svyfactanal} the test of model adequacy is optional, and the default choice, \code{n="none"}, does not do the test. } \value{ An object of class \code{factanal} } \references{ . } %% ~Make other sections like Warning with \section{Warning }{....} ~ \seealso{ \code{\link{factanal}} The \code{lavaan.survey} package fits structural equation models to complex samples using similar techniques. } \examples{ data(api) dclus1<-svydesign(id=~dnum, weights=~pw, data=apiclus1, fpc=~fpc) svyfactanal(~api99+api00+hsg+meals+ell+emer, design=dclus1, factors=2) svyfactanal(~api99+api00+hsg+meals+ell+emer, design=dclus1, factors=2, n="effective") ##Population dat for comparison factanal(~api99+api00+hsg+meals+ell+emer, data=apipop, factors=2) } % Add one or more standard keywords, see file 'KEYWORDS' in the % R documentation directory. \keyword{survey} \keyword{multivariate}% __ONLY ONE__ keyword per line survey/man/svykappa.Rd0000644000176200001440000000217413676517357014537 0ustar liggesusers\name{svykappa} \alias{svykappa} %- Also NEED an '\alias' for EACH other topic documented here. \title{Cohen's kappa for agreement} \description{ Computes the unweighted kappa measure of agreement between two raters and the standard error. The measurements must both be factor variables in the survey design object. } \usage{ svykappa(formula, design, ...) } %- maybe also 'usage' for other objects documented here. \arguments{ \item{formula}{one-sided formula giving two measurements} \item{design}{survey design object} \item{\dots}{passed to \code{svymean} internally (such as \code{return.replicates} or \code{influence})} } \value{ Object of class \code{svystat} } \seealso{ \code{\link{svycontrast}}} \examples{ data(api) dclus1<-svydesign(id=~dnum, weights=~pw, data=apiclus1, fpc=~fpc) svykappa(~comp.imp+sch.wide, dclus1) dclus1<-update(dclus1, stypecopy=stype) svykappa(~stype+stypecopy,dclus1) (kappas<-svyby(~comp.imp+sch.wide,~stype,design=dclus1, svykappa, covmat=TRUE)) svycontrast(kappas, quote(E/H)) } % Add one or more standard keywords, see file 'KEYWORDS' in the % R documentation directory. \keyword{survey} survey/man/ftable.svystat.Rd0000755000176200001440000000337211457435611015641 0ustar liggesusers\name{ftable.svystat} \alias{ftable.svystat} \alias{ftable.svrepstat} \alias{ftable.svyby} %- Also NEED an '\alias' for EACH other topic documented here. \title{Lay out tables of survey statistics} \description{ Reformat the output of survey computations to a table. } \usage{ \method{ftable}{svystat}(x, rownames,...) \method{ftable}{svrepstat}(x, rownames,...) \method{ftable}{svyby}(x,...) } %- maybe also 'usage' for other objects documented here. \arguments{ \item{x}{Output of functions such as \code{svymean},\code{svrepmean}, \code{svyby}} \item{rownames}{List of vectors of strings giving dimension names for the resulting table (see examples)} \item{...}{Arguments for future expansion} } \value{ An object of class \code{"ftable"} } \seealso{ \code{\link{ftable}}} \examples{ data(api) dclus1<-svydesign(id=~dnum, weights=~pw, data=apiclus1, fpc=~fpc) a<-svymean(~interaction(stype,comp.imp), design=dclus1) b<-ftable(a, rownames=list(stype=c("E","H","M"),comp.imp=c("No","Yes"))) b a<-svymean(~interaction(stype,comp.imp), design=dclus1, deff=TRUE) b<-ftable(a, rownames=list(stype=c("E","H","M"),comp.imp=c("No","Yes"))) round(100*b,1) rclus1<-as.svrepdesign(dclus1) a<-svytotal(~interaction(stype,comp.imp), design=rclus1) b<-ftable(a, rownames=list(stype=c("E","H","M"),comp.imp=c("No","Yes"))) b round(b) a<-svyby(~api99 + api00, ~stype + sch.wide, rclus1, svymean, keep.var=TRUE) ftable(a) print(ftable(a),digits=2) b<-svyby(~api99 + api00, ~stype + sch.wide, rclus1, svymean, keep.var=TRUE, deff=TRUE) print(ftable(b),digits=2) d<-svyby(~api99 + api00, ~stype + sch.wide, rclus1, svymean, keep.var=TRUE, vartype=c("se","cvpct")) round(ftable(d),1) } \keyword{survey}% at least one, from doc/KEYWORDS \keyword{manip}% __ONLY ONE__ keyword per line survey/man/svyttest.Rd0000644000176200001440000000243514066243770014573 0ustar liggesusers\name{svyttest} \alias{svyttest} \alias{confint.svyttest} %- Also NEED an '\alias' for EACH other topic documented here. \title{Design-based t-test} \description{ One-sample or two-sample t-test. This function is a wrapper for \code{\link{svymean}} in the one-sample case and for \code{\link{svyglm}} in the two-sample case. Degrees of freedom are \code{degf(design)-1} for the one-sample test and \code{degf(design)-2} for the two-sample case. } \usage{ svyttest(formula, design, ...) } %- maybe also 'usage' for other objects documented here. \arguments{ \item{formula}{Formula, \code{outcome~group} for two-sample, \code{outcome~0} or \code{outcome~1} for one-sample. The \code{group} variable must be a factor or character with two levels, or be coded 0/1 or 1/2} \item{design}{survey design object} \item{\dots}{for methods } } \value{ Object of class \code{htest} } \seealso{ \code{\link{t.test}}} \examples{ data(api) dclus2<-svydesign(id=~dnum+snum, fpc=~fpc1+fpc2, data=apiclus2) tt<-svyttest(enroll~comp.imp, dclus2) tt confint(tt, level=0.9) svyttest(enroll~I(stype=="E"),dclus2) svyttest(I(api00-api99)~0, dclus2) } % Add one or more standard keywords, see file 'KEYWORDS' in the % R documentation directory. \keyword{survey} \keyword{htest}% __ONLY ONE__ keyword per line survey/man/poisson_sampling.Rd0000644000176200001440000000226414074202150016234 0ustar liggesusers\name{poisson_sampling} \alias{poisson_sampling} %- Also NEED an '\alias' for EACH other topic documented here. \title{ Specify Poisson sampling design } \description{ Specify a design where units are sampled independently from the population, with known probabilities. This design is often used theoretically, but is rarely used in practice because the sample size is variable. This function calls \code{\link{ppscov}} to specify a sparse sampling covariance matrix. } \usage{ poisson_sampling(p) } %- maybe also 'usage' for other objects documented here. \arguments{ \item{p}{ Vector of sampling probabilities } } \value{ Object of class \code{ppsdcheck} } \seealso{ \code{\link{ppscov}}, \code{\link{svydesign}} } \examples{ data(api) apipop$prob<-with(apipop, 200*api00/sum(api00)) insample<-rbinom(nrow(apipop),1,apipop$prob) apipois<-apipop[insample,] despois<-svydesign(id=~1, prob=~prob, pps=poisson_sampling(apipois$prob), data=apipois) svytotal(~api00, despois) ## SE formula sqrt(sum( (apipois$api00*weights(despois))^2*(1-apipois$prob))) } % Add one or more standard keywords, see file 'KEYWORDS' in the % R documentation directory (show via RShowDoc("KEYWORDS")): % \keyword{survey } survey/man/svycralpha.Rd0000644000176200001440000000212113403315617015024 0ustar liggesusers\name{svycralpha} \alias{svycralpha} %- Also NEED an '\alias' for EACH other topic documented here. \title{ Cronbach's alpha } \description{ Compute Cronbach's alpha coefficient of reliability from survey data. The formula is equation (2) of Cronbach (1951) only with design-based estimates of the variances. } \usage{ svycralpha(formula, design, na.rm = FALSE) } %- maybe also 'usage' for other objects documented here. \arguments{ \item{formula}{ One-sided formula giving the variables that make up the total score } \item{design}{ survey design object } \item{na.rm}{ \code{TRUE} to remove missing values } } \value{ A number } \references{ Cronbach LJ (1951). "Coefficient alpha and the internal structure of tests". Psychometrika. 16 (3): 297-334. doi:10.1007/bf02310555. } \examples{ data(api) dstrat<-svydesign(id = ~1, strata = ~stype, weights = ~pw, data = apistrat, fpc = ~fpc) svycralpha(~ell+mobility+avg.ed+emer+meals, dstrat) } % Add one or more standard keywords, see file 'KEYWORDS' in the % R documentation directory. \keyword{survey}% use one of RShowDoc("KEYWORDS") survey/man/svyivreg.Rd0000644000176200001440000000341013542525537014540 0ustar liggesusers\name{svyivreg} \alias{svyivreg} %- Also NEED an '\alias' for EACH other topic documented here. \title{ Two-stage least-squares for instrumental variable regression } \description{ Estimates regressions with endogenous covariates using two-stage least squares. The function uses \code{ivreg} from the \code{AER} package for the main computations, and follows the syntax of that function. } \usage{ svyivreg(formula, design, ...) } %- maybe also 'usage' for other objects documented here. \arguments{ \item{formula}{formula specification(s) of the regression relationship and the instruments. See Details for details} \item{design}{ A survey design object } \item{\dots}{ For future expansion } } \details{ Regressors and instruments for \code{svyivreg} are specified in a formula with two parts on the right-hand side, e.g., \code{y ~ x1 + x2 | z1 + z2 + z3}, where \code{x1} and \code{x2} are the regressors and \code{z1}, \code{z2}, and \code{z3} are the instruments. Note that exogenous regressors have to be included as instruments for themselves. For example, if there is one exogenous regressor \code{ex} and one endogenous regressor \code{en} with instrument \code{in}, the appropriate formula would be \code{y ~ ex + en | ex + in}. Equivalently, this can be specified as \code{y ~ ex + en | . - en + in}, i.e., by providing an update formula with a \code{.} in the second part of the formula. } \value{ An object of class \code{svyivreg} } \references{ \url{https://notstatschat.rbind.io/2019/07/16/adding-new-functions-to-the-survey-package/} } \seealso{ \code{\link[AER]{ivreg}}} % Add one or more standard keywords, see file 'KEYWORDS' in the % R documentation directory. \keyword{survey }% use one of RShowDoc("KEYWORDS") survey/man/paley.Rd0000644000176200001440000000474313606736135014005 0ustar liggesusers\name{paley} \alias{paley} \alias{is.hadamard} %- Also NEED an '\alias' for EACH other topic documented here. \title{Paley-type Hadamard matrices} \description{ Computes a Hadamard matrix of dimension \eqn{(p+1)\times 2^k}{(p+1)*2^k}, where p is a prime, and p+1 is a multiple of 4, using the Paley construction. Used by \code{\link{hadamard}}. } \usage{ paley(n, nmax = 2 * n, prime=NULL, check=!is.null(prime)) is.hadamard(H, style=c("0/1","+-"), full.orthogonal.balance=TRUE) } %- maybe also 'usage' for other objects documented here. \arguments{ \item{n}{Minimum size for matrix} \item{nmax}{Maximum size for matrix. Ignored if \code{prime} is specified.} \item{prime}{Optional. A prime at least as large as \code{n}, such that \code{prime+1} is divisible by 4.} \item{check}{Check that the resulting matrix is of Hadamard type} \item{H}{Matrix} \item{style}{\code{"0/1"} for a matrix of 0s and 1s, \code{"+-"} for a matrix of \eqn{\pm 1}{+/-1}.} \item{full.orthogonal.balance}{Require full orthogonal balance?} } \value{ For \code{paley}, a matrix of zeros and ones, or \code{NULL} if no matrix smaller than \code{nmax} can be found. For \code{is.hadamard}, \code{TRUE} if \code{H} is a Hadamard matrix. } \details{ The Paley construction gives a Hadamard matrix of order p+1 if p is prime and p+1 is a multiple of 4. This is then expanded to order \eqn{(p+1)\times 2^k}{(p+1)*2^k} using the Sylvester construction. \code{paley} knows primes up to 7919. The user can specify a prime with the \code{prime} argument, in which case a matrix of order \eqn{p+1}{p+1} is constructed. If \code{check=TRUE} the code uses \code{is.hadamard} to check that the resulting matrix really is of Hadamard type, in the same way as in the example below. As this test takes \eqn{n^3}{n^3} time it is preferable to just be sure that \code{prime} really is prime. A Hadamard matrix including a row of 1s gives BRR designs where the average of the replicates for a linear statistic is exactly the full sample estimate. This property is called full orthogonal balance. } \references{ Cameron PJ (2005) Hadamard Matrices. In: The Encyclopedia of Design Theory \url{http://www.maths.qmul.ac.uk/~lsoicher/designtheory.org/library/encyc/} } \seealso{ \code{\link{hadamard}}} \examples{ M<-paley(11) is.hadamard(M) ## internals of is.hadamard(M) H<-2*M-1 ## HH^T is diagonal for any Hadamard matrix H\%*\%t(H) } \keyword{survey}% at least one, from doc/KEYWORDS \keyword{algebra} survey/man/regTermTest.Rd0000755000176200001440000000752213231233535015127 0ustar liggesusers\name{regTermTest} \alias{regTermTest} \alias{print.regTermTest} %- Also NEED an '\alias' for EACH other topic documented here. \title{Wald test for a term in a regression model} \description{ Provides Wald test and working Wald and working likelihood ratio (Rao-Scott) test of the hypothesis that all coefficients associated with a particular regression term are zero (or have some other specified values). Particularly useful as a substitute for \code{\link{anova}} when not fitting by maximum likelihood. } \usage{ regTermTest(model, test.terms, null=NULL,df=NULL, method=c("Wald","WorkingWald","LRT"), lrt.approximation="saddlepoint") } %- maybe also 'usage' for other objects documented here. \arguments{ \item{model}{A model object with \code{\link{coef}} and \code{\link{vcov}} methods} \item{test.terms}{Character string or one-sided formula giving name of term or terms to test} \item{null}{Null hypothesis values for parameters. Default is zeros} \item{df}{Denominator degrees of freedom for an F test. If \code{NULL} these are estimated from the model. Use \code{Inf} for a chi-squared test.} \item{method}{If \code{"Wald"}, the Wald-type test; if \code{"LRT"} the Rao-Scott test based on the estimated log likelihood ratio; If \code{"WorkingWald"} the Wald-type test using the variance matrix under simple random sampling} \item{lrt.approximation}{method for approximating the distribution of the LRT and Working Wald statistic; see \code{\link{pchisqsum}}. } } \value{ An object of class \code{regTermTest} or \code{regTermTestLRT}. } \details{ The Wald test uses a chisquared or F distribution. The two working-model tests come from the (misspecified) working model where the observations are independent and the weights are frequency weights. For categorical data, this is just the model fitted to the estimated population crosstabulation. The Rao-Scott LRT statistic is the likelihood ratio statistic in this model. The working Wald test statistic is the Wald statistic in this model. The working-model tests do not have a chi-squared sampling distribution: we use a linear combination of chi-squared or F distributions as in \code{\link{pchisqsum}}. I believe the working Wald test is what SUDAAN refers to as a "Satterthwaite adjusted Wald test". To match other software you will typically need to use \code{lrt.approximation="satterthwaite"} } \references{ Rao, JNK, Scott, AJ (1984) "On Chi-squared Tests For Multiway Contingency Tables with Proportions Estimated From Survey Data" Annals of Statistics 12:46-60. Lumley T, Scott A (2012) "Partial likelihood ratio tests for the Cox model under complex sampling" Statistics in Medicine 17 JUL 2012. DOI: 10.1002/sim.5492 Lumley T, Scott A (2014) "Tests for Regression Models Fitted to Survey Data" Australian and New Zealand Journal of Statistics 56:1-14 DOI: 10.1111/anzs.12065 } \note{ The \code{"LRT"} method will not work if the model had starting values supplied for the regression coefficients. Instead, fit the two models separately and use \code{anova(model1, model2, force=TRUE)} } \seealso{\code{\link{anova}}, \code{\link{vcov}}, \code{\link{contrasts}},\code{\link{pchisqsum}}} \examples{ data(esoph) model1 <- glm(cbind(ncases, ncontrols) ~ agegp + tobgp * alcgp, data = esoph, family = binomial()) anova(model1) regTermTest(model1,"tobgp") regTermTest(model1,"tobgp:alcgp") regTermTest(model1, ~alcgp+tobgp:alcgp) data(api) dclus2<-svydesign(id=~dnum+snum, weights=~pw, data=apiclus2) model2<-svyglm(I(sch.wide=="Yes")~ell+meals+mobility, design=dclus2, family=quasibinomial()) regTermTest(model2, ~ell) regTermTest(model2, ~ell,df=NULL) regTermTest(model2, ~ell, method="LRT", df=Inf) regTermTest(model2, ~ell+meals, method="LRT", df=NULL) regTermTest(model2, ~ell+meals, method="WorkingWald", df=NULL) } \keyword{regression}% at least one, from doc/KEYWORDS survey/man/confint.svyglm.Rd0000644000176200001440000000345514044064724015645 0ustar liggesusers\name{confint.svyglm} \alias{confint.svyglm} %- Also NEED an '\alias' for EACH other topic documented here. \title{Confidence intervals for regression parameters } \description{ Computes confidence intervals for regression parameters in \code{\link{svyglm}} objects. The default is a Wald-type confidence interval, adding and subtracting a multiple of the standard error. The \code{method="likelihood"} is an interval based on inverting the Rao-Scott likelihood ratio test. That is, it is an interval where the working model deviance is lower than the threshold for the Rao-Scott test at the specified level. } \usage{ \method{confint}{svyglm}(object, parm, level = 0.95, method = c("Wald", "likelihood"), ddf = NULL, ...) } %- maybe also 'usage' for other objects documented here. \arguments{ \item{object}{\code{svyglm} object} \item{parm}{numeric or character vector indicating which parameters to construct intervals for.} \item{level}{desired coverage} \item{method}{See description above } \item{ddf}{Denominator degrees of freedom for \code{"likelihood"} method, to use a t distribution rather than norma. If \code{NULL}, use \code{object$df.residual}} \item{\dots}{for future expansion} } \value{ A matrix of confidence intervals } \references{ J. N. K. Rao and Alistair J. Scott (1984) On Chi-squared Tests For Multiway Contigency Tables with Proportions Estimated From Survey Data. Annals of Statistics 12:46-60 } \seealso{\code{\link{confint}} } \examples{ data(api) dclus2<-svydesign(id=~dnum+snum, fpc=~fpc1+fpc2, data=apiclus2) m<-svyglm(I(comp.imp=="Yes")~stype*emer+ell, design=dclus2, family=quasibinomial) confint(m) confint(m, method="like",ddf=NULL, parm=c("ell","emer")) } % Add one or more standard keywords, see file 'KEYWORDS' in the % R documentation directory. \keyword{survey} survey/man/hadamard.Rd0000755000176200001440000000425412750540770014431 0ustar liggesusers\name{hadamard} \alias{hadamard} %- Also NEED an '\alias' for EACH other topic documented here. \title{Hadamard matrices } \description{ Returns a Hadamard matrix of dimension larger than the argument. } \usage{ hadamard(n) } %- maybe also 'usage' for other objects documented here. \arguments{ \item{n}{lower bound for size } } \value{ A Hadamard matrix } \details{ For most \code{n} the matrix comes from \code{\link{paley}}. The \eqn{36\times 36}{36x36} matrix is from Plackett and Burman (1946) and the \eqn{28\times 28}{28x28} is from Sloane's library of Hadamard matrices. Matrices of dimension every multiple of 4 are thought to exist, but this function doesn't know about all of them, so it will sometimes return matrices that are larger than necessary. The excess is at most 4 for \eqn{n<180}{n<180} and at most 5\% for \eqn{n>100}{n>100}. } \note{Strictly speaking, a Hadamard matrix has entries +1 and -1 rather than 1 and 0, so \code{2*hadamard(n)-1} is a Hadamard matrix} \references{ Sloane NJA. A Library of Hadamard Matrices \url{http://neilsloane.com/hadamard/} Plackett RL, Burman JP. (1946) The Design of Optimum Multifactorial Experiments Biometrika, Vol. 33, No. 4 pp. 305-325 Cameron PJ (2005) Hadamard Matrices \url{http://designtheory.org/library/encyc/topics/had.pdf}. In: The Encyclopedia of Design Theory \url{http://designtheory.org/library/encyc/} } \seealso{\code{\link{brrweights}}, \code{\link{paley}}} \examples{ par(mfrow=c(2,2)) ## Sylvester-type image(hadamard(63),main=quote("Sylvester: "*64==2^6)) ## Paley-type image(hadamard(59),main=quote("Paley: "*60==59+1)) ## from NJ Sloane's library image(hadamard(27),main=quote("Stored: "*28)) ## For n=90 we get 96 rather than the minimum possible size, 92. image(hadamard(90),main=quote("Constructed: "*96==2^3\%*\%(11+1))) par(mfrow=c(1,1)) plot(2:150,sapply(2:150,function(i) ncol(hadamard(i))),type="S", ylab="Matrix size",xlab="n",xlim=c(1,150),ylim=c(1,150)) abline(0,1,lty=3) lines(2:150, 2:150-(2:150 \%\% 4)+4,col="purple",type="S",lty=2) legend(c(x=10,y=140),legend=c("Actual size","Minimum possible size"), col=c("black","purple"),bty="n",lty=c(1,2)) } \keyword{survey} survey/man/svyCprod.Rd0000755000176200001440000001151611757252167014506 0ustar liggesusers\name{svyCprod} \alias{svyCprod} \alias{onestage} \alias{onestrat} %- Also NEED an `\alias' for EACH other topic documented here. \title{Computations for survey variances} \description{ Computes the sum of products needed for the variance of survey sample estimators. \code{svyCprod} is used for survey design objects from before version 2.9, \code{onestage} is called by \code{\link{svyrecvar}} for post-2.9 design objects. } \usage{ svyCprod(x, strata, psu, fpc, nPSU,certainty=NULL, postStrata=NULL, lonely.psu=getOption("survey.lonely.psu")) onestage(x, strata, clusters, nPSU, fpc, lonely.psu=getOption("survey.lonely.psu"),stage=0,cal) } %- maybe also `usage' for other objects documented here. \arguments{ \item{x}{A vector or matrix} \item{strata}{A vector of stratum indicators (may be \code{NULL} for \code{svyCprod})} \item{psu}{A vector of cluster indicators (may be \code{NULL})} \item{clusters}{A vector of cluster indicators } \item{fpc}{A data frame (\code{svyCprod}) or vector (\code{onestage}) of population stratum sizes, or \code{NULL}} \item{nPSU}{Table (\code{svyprod}) or vector (\code{onestage}) of original sample stratum sizes (or \code{NULL})} \item{certainty}{logical vector with stratum names as names. If \code{TRUE} and that stratum has a single PSU it is a certainty PSU} \item{postStrata}{Post-stratification variables} \item{lonely.psu}{One of \code{"remove"}, \code{"adjust"}, \code{"fail"}, \code{"certainty"}, \code{"average"}. See Details below} \item{stage}{Used internally to track the depth of recursion} \item{cal}{Used to pass calibration information at stages below the population} } \details{ The observations for each cluster are added, then centered within each stratum and the outer product is taken of the row vector resulting for each cluster. This is added within strata, multiplied by a degrees-of-freedom correction and by a finite population correction (if supplied) and added across strata. If there are fewer clusters (PSUs) in a stratum than in the original design extra rows of zeroes are added to \code{x} to allow the correct subpopulation variance to be computed. See \code{\link{postStratify}} for information about post-stratification adjustments. The variance formula gives 0/0 if a stratum contains only one sampling unit. If the \code{certainty} argument specifies that this is a PSU sampled with probability 1 (a "certainty" PSU) then it does not contribute to the variance (this is correct only when there is no subsampling within the PSU -- otherwise it should be defined as a pseudo-stratum). If \code{certainty} is \code{FALSE} for this stratum or is not supplied the result depends on \code{lonely.psu}. The options are \code{"fail"} to give an error, \code{"remove"} or \code{"certainty"} to give a variance contribution of 0 for the stratum, \code{"adjust"} to center the stratum at the grand mean rather than the stratum mean, and \code{"average"} to assign strata with one PSU the average variance contribution from strata with more than one PSU. The choice is controlled by setting \code{options(survey.lonely.psu)}. If this is not done the factory default is \code{"fail"}. Using \code{"adjust"} is conservative, and it would often be better to combine strata in some intelligent way. The properties of \code{"average"} have not been investigated thoroughly, but it may be useful when the lonely PSUs are due to a few strata having PSUs missing completely at random. The \code{"remove"}and \code{"certainty"} options give the same result, but \code{"certainty"} is intended for situations where there is only one PSU in the population stratum, which is sampled with certainty (also called `self-representing' PSUs or strata). With \code{"certainty"} no warning is generated for strata with only one PSU. Ordinarily, \code{svydesign} will detect certainty PSUs, making this option unnecessary. For strata with a single PSU in a subset (domain) the variance formula gives a value that is well-defined and positive, but not typically correct. If \code{options("survey.adjust.domain.lonely")} is \code{TRUE} and \code{options("survey.lonely.psu")} is \code{"adjust"} or \code{"average"}, and no post-stratification or G-calibration has been done, strata with a single PSU in a subset will be treated like those with a single PSU in the sample. I am not aware of any theoretical study of this procedure, but it should at least be conservative. } \value{ A covariance matrix } \author{Thomas Lumley} \references{Binder, David A. (1983). On the variances of asymptotically normal estimators from complex surveys. International Statistical Review, 51, 279- 292. } \seealso{\code{\link{svydesign}}, \code{\link{svyrecvar}}, \code{\link{surveyoptions}}, \code{\link{postStratify}} } \keyword{utilities}% at least one, from doc/KEYWORDS \keyword{survey}% __ONLY ONE__ keyword per line survey/man/svyhist.Rd0000644000176200001440000000457413357475534014414 0ustar liggesusers\name{svyhist} \alias{svyhist} \alias{svyboxplot} %- Also NEED an '\alias' for EACH other topic documented here. \title{Histograms and boxplots} \description{ Histograms and boxplots weighted by the sampling weights. } \usage{ svyhist(formula, design, breaks = "Sturges", include.lowest = TRUE, right = TRUE, xlab = NULL, main = NULL, probability = TRUE, freq = !probability, ...) svyboxplot(formula, design, all.outliers=FALSE,...) } %- maybe also 'usage' for other objects documented here. \arguments{ \item{formula}{One-sided formula for \code{svyhist}, two-sided for \code{svyboxplot}} \item{design}{A survey design object} \item{xlab}{x-axis label} \item{main}{Main title} \item{probability,freq}{Y-axis is probability density or frequency} \item{all.outliers}{Show all outliers in the boxplot, not just extremes} \item{breaks, include.lowest, right}{As for \code{\link{hist}}} \item{\dots}{Other arguments to \code{\link{hist}} or \code{\link{bxp}}} } \details{ The histogram breakpoints are computed as if the sample were a simple random sample of the same size. The grouping variable in \code{svyboxplot}, if present, must be a factor. The boxplot whiskers go to the maximum and minimum observations or to 1.5 interquartile ranges beyond the end of the box, whichever is closer. The maximum and minimum are plotted as outliers if they are beyond the ends of the whiskers, but other outlying points are not plotted unless \code{all.outliers=TRUE}. \code{svyboxplot} requires a two-sided formula; use \code{variable~1} for a single boxplot. } \value{ As for \code{hist}, except that when \code{probability=FALSE}, the return value includes a component \code{count_scale} giving a scale factor between density and counts, assuming equal bin widths. } \seealso{ \code{\link{svyplot}}} \examples{ data(api) dstrat <- svydesign(id = ~1, strata = ~stype, weights = ~pw, data = apistrat, fpc = ~fpc) opar<-par(mfrow=c(1,3)) svyhist(~enroll, dstrat, main="Survey weighted",col="purple",ylim=c(0,1.3e-3)) hist(apistrat$enroll, main="Sample unweighted",col="purple",prob=TRUE,ylim=c(0,1.3e-3)) hist(apipop$enroll, main="Population",col="purple",prob=TRUE,ylim=c(0,1.3e-3)) par(mfrow=c(1,1)) svyboxplot(enroll~stype,dstrat,all.outliers=TRUE) svyboxplot(enroll~1,dstrat) par(opar) } \keyword{survey}% at least one, from doc/KEYWORDS \keyword{hplot}% __ONLY ONE__ keyword per line survey/man/nonresponse.Rd0000755000176200001440000000627311457435611015244 0ustar liggesusers\name{nonresponse} \alias{nonresponse} \alias{sparseCells} \alias{neighbours} \alias{joinCells} \alias{weights.nonresponse} \alias{print.nonresponse} \alias{print.nonresponseSubset} \alias{[.nonresponse} %- Also NEED an '\alias' for EACH other topic documented here. \title{Experimental: Construct non-response weights} \description{ Functions to simplify the construction of non-reponse weights by combining strata with small numbers or large weights. } \usage{ nonresponse(sample.weights, sample.counts, population) sparseCells(object, count=0,totalweight=Inf, nrweight=1.5) neighbours(index,object) joinCells(object,a,...) \method{weights}{nonresponse}(object,...) } %- maybe also 'usage' for other objects documented here. \arguments{ \item{sample.weights}{table of sampling weight by stratifying variables} \item{sample.counts}{table of sample counts by stratifying variables} \item{population}{table of population size by stratifying variables} \item{object}{object of class \code{"nonresponse"}} \item{count}{Cells with fewer sampled units than this are "sparse"} \item{nrweight}{Cells with higher non-response weight than this are "sparse"} \item{totalweight}{Cells with average sampling weight times non-response weight higher than this are "sparse"} \item{index}{Number of a cell whose neighbours are to be found} \item{a,...}{Cells to join} } \details{ When a stratified survey is conducted with imperfect response it is desirable to rescale the sampling weights to reflect the nonresponse. If some strata have small sample size, high non-response, or already had high sampling weights it may be desirable to get less variable non-response weights by averaging non-response across strata. Suitable strata to collapse may be similar on the stratifying variables and/or on the level of non-response. \code{nonresponse()} combines stratified tables of population size, sample size, and sample weight into an object. \code{sparseCells} identifies cells that may need combining. \code{neighbours} describes the cells adjacent to a specified cell, and \code{joinCells} collapses the specified cells. When the collapsing is complete, use \code{weights()} to extract the nonresponse weights. } \value{ \code{nonresponse} and \code{joinCells} return objects of class \code{"nonresponse"}, \code{neighbours} and \code{sparseCells} return objects of class \code{"nonresponseSubset"} } \examples{ data(api) ## pretend the sampling was stratified on three variables poptable<-xtabs(~sch.wide+comp.imp+stype,data=apipop) sample.count<-xtabs(~sch.wide+comp.imp+stype,data=apiclus1) sample.weight<-xtabs(pw~sch.wide+comp.imp+stype, data=apiclus1) ## create a nonresponse object nr<-nonresponse(sample.weight,sample.count, poptable) ## sparse cells sparseCells(nr) ## Look at neighbours neighbours(3,nr) neighbours(11,nr) ## Collapse some contiguous cells nr1<-joinCells(nr,3,5,7) ## sparse cells now sparseCells(nr1) nr2<-joinCells(nr1,3,11,8) nr2 ## one relatively sparse cell sparseCells(nr2) ## but nothing suitable to join it to neighbours(3,nr2) ## extract the weights weights(nr2) } \keyword{survey}% at least one, from doc/KEYWORDS \keyword{manip}% __ONLY ONE__ keyword per line survey/man/svyplot.Rd0000755000176200001440000001026213113124216014367 0ustar liggesusers\name{svyplot} \alias{svyplot} \alias{svyplot.default} %- Also NEED an '\alias' for EACH other topic documented here. \title{Plots for survey data } \description{ Because observations in survey samples may represent very different numbers of units in the population ordinary plots can be misleading. The \code{svyplot} function produces scatterplots adjusted in various ways for sampling weights. } \usage{ svyplot(formula, design,...) \method{svyplot}{default}(formula, design, style = c("bubble", "hex", "grayhex","subsample","transparent"), sample.size = 500, subset = NULL, legend = 1, inches = 0.05, amount=NULL, basecol="black", alpha=c(0, 0.8),xbins=30,...) } %- maybe also 'usage' for other objects documented here. \arguments{ \item{formula}{A model formula} \item{design}{ A survey object (svydesign or svrepdesign)} \item{style}{See Details below} \item{sample.size}{For \code{style="subsample"}} \item{subset}{expression using variables in the design object} \item{legend}{For \code{style="hex"} or \code{"grayhex"}} \item{inches}{Scale for bubble plots} \item{amount}{list with \code{x} and \code{y} components for amount of jittering to use in subsample plots, or \code{NULL} for the default amount} \item{basecol}{base color for transparent plots, or a function to compute the color (see below), or color for bubble plots} \item{alpha}{minimum and maximum opacity for transparent plots} \item{xbins}{Number of (x-axis) bins for hexagonal binning} \item{\dots}{Passed to \code{plot} methods} } \details{ Bubble plots are scatterplots with circles whose area is proportional to the sampling weight. The two "hex" styles produce hexagonal binning scatterplots, and require the \code{hexbin} package from Bioconductor. The "transparent" style plots points with opacity proportional to sampling weight. The \code{subsample} method uses the sampling weights to create a sample from approximately the population distribution and passes this to \code{\link{plot}} Bubble plots are suited to small surveys, hexagonal binning and transparency to large surveys where plotting all the points would result in too much overlap. \code{basecol} can be a function taking one data frame argument, which will be passed the data frame of variables from the survey object. This could be memory-intensive for large data sets. } \value{ None } \seealso{ \code{\link{symbols}} for other options (such as colour) for bubble plots. \code{\link{svytable}} for plots of discrete data. } \references{ Korn EL, Graubard BI (1998) "Scatterplots with Survey Data" The American Statistician 52: 58-69 Lumley T, Scott A (2017) "Fitting Regression Models to Survey Data" Statistical Science 32: 265-278 } \examples{ data(api) dstrat<-svydesign(id=~1,strata=~stype, weights=~pw, data=apistrat, fpc=~fpc) svyplot(api00~api99, design=dstrat, style="bubble") svyplot(api00~api99, design=dstrat, style="transparent",pch=19) ## these two require the hexbin package svyplot(api00~api99, design=dstrat, style="hex", xlab="1999 API",ylab="2000 API") svyplot(api00~api99, design=dstrat, style="grayhex",legend=0) dclus2<-svydesign(id=~dnum+snum, weights=~pw, data=apiclus2, fpc=~fpc1+fpc2) svyplot(api00~api99, design=dclus2, style="subsample") svyplot(api00~api99, design=dclus2, style="subsample", amount=list(x=25,y=25)) svyplot(api00~api99, design=dstrat, basecol=function(df){c("goldenrod","tomato","sienna")[as.numeric(df$stype)]}, style="transparent",pch=19,alpha=c(0,1)) legend("topleft",col=c("goldenrod","tomato","sienna"), pch=19, legend=c("E","H","M")) ## For discrete data, estimate a population table and plot the table. plot(svytable(~sch.wide+comp.imp+stype,design=dstrat)) fourfoldplot(svytable(~sch.wide+comp.imp+stype,design=dstrat,round=TRUE)) ## To draw on a hexbin plot you need grid graphics, eg, library(grid) h<-svyplot(api00~api99, design=dstrat, style="hex", xlab="1999 API",ylab="2000 API") s<-svysmooth(api00~api99,design=dstrat) grid.polyline(s$api99$x,s$api99$y,vp=h$plot.vp@hexVp.on,default.units="native", gp=gpar(col="red",lwd=2)) } \keyword{survey}% at least one, from doc/KEYWORDS \keyword{hplot}% __ONLY ONE__ keyword per line survey/man/svydesign.Rd0000755000176200001440000002306114423607223014674 0ustar liggesusers\name{svydesign} \alias{svydesign} \alias{svydesign.default} \alias{svydesign.imputationList} \alias{svydesign.character} \alias{na.omit.survey.design} \alias{na.exclude.survey.design} \alias{na.fail.survey.design} \title{Survey sample analysis.} \description{ Specify a complex survey design. } \usage{ svydesign(ids, probs=NULL, strata = NULL, variables = NULL, fpc=NULL, data = NULL, nest = FALSE, check.strata = !nest, weights=NULL,pps=FALSE,...) \method{svydesign}{default}(ids, probs=NULL, strata = NULL, variables = NULL, fpc=NULL,data = NULL, nest = FALSE, check.strata = !nest, weights=NULL, pps=FALSE,calibrate.formula=NULL,variance=c("HT","YG"),...) \method{svydesign}{imputationList}(ids, probs = NULL, strata = NULL, variables = NULL, fpc = NULL, data, nest = FALSE, check.strata = !nest, weights = NULL, pps=FALSE, calibrate.formula=NULL,...) \method{svydesign}{character}(ids, probs = NULL, strata = NULL, variables = NULL, fpc = NULL, data, nest = FALSE, check.strata = !nest, weights = NULL, pps=FALSE, calibrate.formula=NULL,dbtype = "SQLite", dbname, ...) } %- maybe also `usage' for other objects documented here.'` \arguments{ \item{ids}{Formula or data frame specifying cluster ids from largest level to smallest level, \code{~0} or \code{~1} is a formula for no clusters.} \item{probs}{Formula or data frame specifying cluster sampling probabilities} \item{strata}{Formula or vector specifying strata, use \code{NULL} for no strata} \item{variables}{Formula or data frame specifying the variables measured in the survey. If \code{NULL}, the \code{data} argument is used.} \item{fpc}{Finite population correction: see Details below} \item{weights}{Formula or vector specifying sampling weights as an alternative to \code{prob}} \item{data}{Data frame to look up variables in the formula arguments, or database table name, or \code{imputationList} object, see below} \item{nest}{If \code{TRUE}, relabel cluster ids to enforce nesting within strata} \item{check.strata}{If \code{TRUE}, check that clusters are nested in strata}. \item{pps}{\code{"brewer"} to use Brewer's approximation for PPS sampling without replacement. \code{"overton"} to use Overton's approximation. An object of class \code{\link{HR}} to use the Hartley-Rao approximation. An object of class \code{\link{ppsmat}} to use the Horvitz-Thompson estimator.} \item{calibrate.formula}{model formula specifying how the weights are *already* calibrated (raked, post-stratified).} \item{dbtype}{name of database driver to pass to \code{dbDriver}} \item{dbname}{name of database (eg file name for SQLite)} \item{variance}{For \code{pps} without replacement, use \code{variance="YG"} for the Yates-Grundy estimator instead of the Horvitz-Thompson estimator} \item{\dots}{for future expansion} } \details{ The \code{svydesign} object combines a data frame and all the survey design information needed to analyse it. These objects are used by the survey modelling and summary functions. The \code{id} argument is always required, the \code{strata}, \code{fpc}, \code{weights} and \code{probs} arguments are optional. If these variables are specified they must not have any missing values. By default, \code{svydesign} assumes that all PSUs, even those in different strata, have a unique value of the \code{id} variable. This allows some data errors to be detected. If your PSUs reuse the same identifiers across strata then set \code{nest=TRUE}. The finite population correction (fpc) is used to reduce the variance when a substantial fraction of the total population of interest has been sampled. It may not be appropriate if the target of inference is the process generating the data rather than the statistics of a particular finite population. The finite population correction can be specified either as the total population size in each stratum or as the fraction of the total population that has been sampled. In either case the relevant population size is the sampling units. That is, sampling 100 units from a population stratum of size 500 can be specified as 500 or as 100/500=0.2. The exception is for PPS sampling without replacement, where the sampling probability (which will be different for each PSU) must be used. If population sizes are specified but not sampling probabilities or weights, the sampling probabilities will be computed from the population sizes assuming simple random sampling within strata. For multistage sampling the \code{id} argument should specify a formula with the cluster identifiers at each stage. If subsequent stages are stratified \code{strata} should also be specified as a formula with stratum identifiers at each stage. The population size for each level of sampling should also be specified in \code{fpc}. If \code{fpc} is not specified then sampling is assumed to be with replacement at the top level and only the first stage of cluster is used in computing variances. If \code{fpc} is specified but for fewer stages than \code{id}, sampling is assumed to be complete for subsequent stages. The variance calculations for multistage sampling assume simple or stratified random sampling within clusters at each stage except possibly the last. For PPS sampling without replacement it is necessary to specify the probabilities for each stage of sampling using the \code{fpc} arguments, and an overall \code{weight} argument should not be given. At the moment, multistage or stratified PPS sampling without replacement is supported only with \code{pps="brewer"}, or by giving the full joint probability matrix using \code{\link{ppsmat}}. [Cluster sampling is supported by all methods, but not subsampling within clusters]. The \code{dim}, \code{"["}, \code{"[<-"} and na.action methods for \code{survey.design} objects operate on the dataframe specified by \code{variables} and ensure that the design information is properly updated to correspond to the new data frame. With the \code{"[<-"} method the new value can be a \code{survey.design} object instead of a data frame, but only the data frame is used. See also \code{\link{subset.survey.design}} for a simple way to select subpopulations. The \code{model.frame} method extracts the observed data. If the strata with only one PSU are not self-representing (or they are, but \code{svydesign} cannot tell based on \code{fpc}) then the handling of these strata for variance computation is determined by \code{options("survey.lonely.psu")}. See \code{\link{svyCprod}} for details. \code{data} may be a character string giving the name of a table or view in a relational database that can be accessed through the \code{DBI} interfaces. For DBI interfaces \code{dbtype} should be the name of the database driver and \code{dbname} should be the name by which the driver identifies the specific database (eg file name for SQLite). The appropriate database interface package must already be loaded (eg \code{RSQLite} for SQLite). The survey design object will contain only the design meta-data, and actual variables will be loaded from the database as needed. Use \code{\link[=close.DBIsvydesign]{close}} to close the database connection and \code{\link[=open.DBIsvydesign]{open}} to reopen the connection, eg, after loading a saved object. The database interface does not attempt to modify the underlying database and so can be used with read-only permissions on the database. If \code{data} is an \code{imputationList} object (from the "mitools" package), \code{svydesign} will return a \code{svyimputationList} object containing a set of designs. Use \code{\link{with.svyimputationList}} to do analyses on these designs and \code{MIcombine} to combine the results. } \value{ An object of class \code{survey.design}. } \author{Thomas Lumley} \seealso{ \code{\link{as.svrepdesign}} for converting to replicate weight designs, \code{\link{subset.survey.design}} for domain estimates, \code{\link{update.survey.design}} to add variables. \code{mitools} package for using multiple imputations \code{\link{svyrecvar}} for details of variance estimation \code{\link{election}} for examples of PPS sampling without replacement. } \examples{ data(api) # stratified sample dstrat<-svydesign(id=~1,strata=~stype, weights=~pw, data=apistrat, fpc=~fpc) # one-stage cluster sample dclus1<-svydesign(id=~dnum, weights=~pw, data=apiclus1, fpc=~fpc) # two-stage cluster sample: weights computed from population sizes. dclus2<-svydesign(id=~dnum+snum, fpc=~fpc1+fpc2, data=apiclus2) ## multistage sampling has no effect when fpc is not given, so ## these are equivalent. dclus2wr<-svydesign(id=~dnum+snum, weights=weights(dclus2), data=apiclus2) dclus2wr2<-svydesign(id=~dnum, weights=weights(dclus2), data=apiclus2) ## syntax for stratified cluster sample ##(though the data weren't really sampled this way) svydesign(id=~dnum, strata=~stype, weights=~pw, data=apistrat, nest=TRUE) ## PPS sampling without replacement data(election) dpps<- svydesign(id=~1, fpc=~p, data=election_pps, pps="brewer") ##database example: requires RSQLite \dontrun{ library(RSQLite) dbclus1<-svydesign(id=~dnum, weights=~pw, fpc=~fpc, data="apiclus1",dbtype="SQLite", dbname=system.file("api.db",package="survey")) } ## pre-calibrated weights cdclus1<-svydesign(id=~dnum, weights=~pw, data=apiclus1, fpc=~fpc, calibration.formula=~1) } \keyword{survey}% at least one, from doc/KEYWORDS \keyword{univar}% __ONLY ONE__ keyword per line \keyword{manip}% __ONLY ONE__ keyword per line survey/man/brrweights.Rd0000755000176200001440000001211011457435611015036 0ustar liggesusers\name{brrweights} \alias{jk1weights} \alias{jknweights} \alias{brrweights} %- Also NEED an `\alias' for EACH other topic documented here. \title{Compute replicate weights } \description{ Compute replicate weights from a survey design. These functions are usually called from \code{\link{as.svrepdesign}} rather than directly by the user. } \usage{ brrweights(strata, psu, match = NULL, small = c("fail","split","merge"), large = c("split", "merge", "fail"), fay.rho=0, only.weights=FALSE, compress=TRUE, hadamard.matrix=NULL) jk1weights(psu,fpc=NULL, fpctype=c("population","fraction","correction"), compress=TRUE) jknweights(strata,psu, fpc=NULL, fpctype=c("population","fraction","correction"), compress=TRUE, lonely.psu=getOption("survey.lonely.psu")) } %- maybe also `usage' for other objects documented here. \arguments{ \item{strata}{Stratum identifiers } \item{psu}{PSU (cluster) identifier } \item{match}{Optional variable to use in matching. } \item{small}{How to handle strata with only one PSU} \item{large}{How to handle strata with more than two PSUs} \item{fpc}{Optional population (stratum) size or finite population correction } \item{fpctype}{How \code{fpc} is coded.} \item{fay.rho}{Parameter for Fay's extended BRR method} \item{only.weights}{If \code{TRUE} return only the matrix of replicate weights} \item{compress}{If \code{TRUE}, store the replicate weights in compressed form} \item{hadamard.matrix}{Optional user-supplied Hadamard matrix for \code{brrweights}} \item{lonely.psu}{Handling of non-certainty single-PSU strata} } \details{ JK1 and JKn are jackknife schemes for unstratified and stratified designs respectively. The finite population correction may be specified as a single number, a vector with one entry per stratum, or a vector with one entry per observation (constant within strata). When \code{fpc} is a vector with one entry per stratum it may not have names that differ from the stratum identifiers (it may have no names, in which case it must be in the same order as \code{unique(strata)}). To specify population stratum sizes use \code{fpctype="population"}, to specify sampling fractions use \code{fpctype="fraction"} and to specify the correction directly use \code{fpctype="correction"} The only reason not to use \code{compress=TRUE} is that it is new and there is a greater possibility of bugs. It reduces the number of rows of the replicate weights matrix from the number of observations to the number of PSUs. In BRR variance estimation each stratum is split in two to give half-samples. Balanced replicated weights are needed, where observations in two different strata end up in the same half stratum as often as in different half-strata.BRR, strictly speaking, is defined only when each stratum has exactly two PSUs. A stratum with one PSU can be merged with another such stratum, or can be split to appear in both half samples with half weight. The latter approach is appropriate for a PSU that was deterministically sampled. A stratum with more than two PSUs can be split into multiple smaller strata each with two PSUs or the PSUs can be merged to give two superclusters within the stratum. When merging small strata or grouping PSUs in large strata the \code{match} variable is used to sort PSUs before merging, to give approximate matching on this variable. If you want more control than this you should probably construct your own weights using the Hadamard matrices produced by \code{\link{hadamard}} } \value{ For \code{brrweights} with \code{only.weights=FALSE} a list with elements \item{weights}{two-column matrix indicating the weight for each half-stratum in one particular set of split samples} \item{wstrata}{New stratum variable incorporating merged or split strata} \item{strata}{Original strata for distinct PSUs} \item{psu}{Distinct PSUs} \item{npairs}{Dimension of Hadamard matrix used in BRR construction} \item{sampler}{function returning replicate weights} \item{compress}{Indicates whether the \code{sampler} returns per PSU or per observation weights} For \code{jk1weights} and \code{jknweights} a data frame of replicate weights and the \code{scale} and \code{rscale} arguments to \code{\link{svrVar}}. } \references{Levy and Lemeshow "Sampling of Populations". Wiley. Shao and Tu "The Jackknife and Bootstrap". Springer. } \seealso{\code{\link{hadamard}}, \code{\link{as.svrepdesign}}, \code{\link{svrVar}}, \code{\link{surveyoptions}}} \examples{ data(scd) scdnofpc<-svydesign(data=scd, prob=~1, id=~ambulance, strata=~ESA, nest=TRUE) ## convert to BRR replicate weights scd2brr <- as.svrepdesign(scdnofpc, type="BRR") svymean(~alive, scd2brr) svyratio(~alive, ~arrests, scd2brr) ## with user-supplied hadamard matrix scd2brr1 <- as.svrepdesign(scdnofpc, type="BRR", hadamard.matrix=paley(11)) svymean(~alive, scd2brr1) svyratio(~alive, ~arrests, scd2brr1) } \keyword{survey}% at least one, from doc/KEYWORDS survey/man/svystandardize.Rd0000644000176200001440000000554514075121157015737 0ustar liggesusers\name{svystandardize} \alias{svystandardize} %- Also NEED an '\alias' for EACH other topic documented here. \title{ Direct standardization within domains } \description{ In health surveys it is often of interest to standardize domains to have the same distribution of, eg, age as in a target population. The operation is similar to post-stratification, except that the totals for the domains are fixed at the current estimates, not at known population values. This function matches the estimates produced by the (US) National Center for Health Statistics. } \usage{ svystandardize(design, by, over, population, excluding.missing = NULL) } %- maybe also 'usage' for other objects documented here. \arguments{ \item{design}{ survey design object } \item{by}{ A one-sided formula specifying the variables whose distribution will be standardised } \item{over}{ A one-sided formula specifying the domains within which the standardisation will occur, or \code{~1} to use the whole population. } \item{population}{ Desired population totals or proportions for the levels of combinations of variables in \code{by} } \item{excluding.missing}{ Optionally, a one-sided formula specifying variables whose missing values should be dropped before calculating the domain totals. } } \value{ A new survey design object of the same type as the input. } \references{ National Center for Health Statistics \verb{https://www.cdc.gov/nchs/tutorials/NHANES/NHANESAnalyses/agestandardization/age_standardization_intro.htm}} \note{ The standard error estimates do not exactly match the NCHS estimates } \seealso{ \code{\link{postStratify}}, \code{\link{svyby}} } \examples{ ## matches http://www.cdc.gov/nchs/data/databriefs/db92_fig1.png data(nhanes) popage <- c( 55901 , 77670 , 72816 , 45364 ) design<-svydesign(id=~SDMVPSU, strata=~SDMVSTRA, weights=~WTMEC2YR, data=nhanes, nest=TRUE) stdes<-svystandardize(design, by=~agecat, over=~race+RIAGENDR, population=popage, excluding.missing=~HI_CHOL) svyby(~HI_CHOL, ~race+RIAGENDR, svymean, design=subset(stdes, agecat!="(0,19]")) data(nhanes) nhanes_design <- svydesign(ids = ~ SDMVPSU, strata = ~ SDMVSTRA, weights = ~ WTMEC2YR, nest = TRUE, data = nhanes) ## These are the same nhanes_adj <- svystandardize(update(nhanes_design, all_adults = "1"), by = ~ agecat, over = ~ all_adults, population = c(55901, 77670, 72816, 45364), excluding.missing = ~ HI_CHOL) svymean(~I(HI_CHOL == 1), nhanes_adj, na.rm = TRUE) nhanes_adj <- svystandardize(nhanes_design, by = ~ agecat, over = ~ 1, population = c(55901, 77670, 72816, 45364), excluding.missing = ~ HI_CHOL) svymean(~I(HI_CHOL == 1), nhanes_adj, na.rm = TRUE) } % Add one or more standard keywords, see file 'KEYWORDS' in the % R documentation directory. \keyword{survey} survey/man/svy.varcoef.Rd0000755000176200001440000000132711457435611015133 0ustar liggesusers\name{svy.varcoef} \alias{svy.varcoef} %- Also NEED an `\alias' for EACH other topic documented here. \title{Sandwich variance estimator for glms} \description{ Computes the sandwich variance estimator for a generalised linear model fitted to data from a complex sample survey. Designed to be used internally by \code{\link{svyglm}}. } \usage{ svy.varcoef(glm.object, design) } \arguments{ \item{glm.object}{A \code{\link{glm}} object} \item{design}{A \code{survey.design} object } } \value{ A variance matrix } \author{ Thomas Lumley} \seealso{\code{\link{svyglm}},\code{\link{svydesign}}, \code{\link{svyCprod}} } \keyword{regression}% at least one, from doc/KEYWORDS \keyword{survey}% __ONLY ONE__ keyword per line survey/man/bootweights.Rd0000644000176200001440000000621611645177740015230 0ustar liggesusers\name{bootweights} \alias{bootweights} \alias{subbootweights} \alias{mrbweights} \alias{bootstratum} %- Also NEED an '\alias' for EACH other topic documented here. \title{Compute survey bootstrap weights } \description{ Bootstrap weights for infinite populations ('with replacement' sampling) are created by sampling with replacement from the PSUs in each stratum. \code{subbootweights()} samples \code{n-1} PSUs from the \code{n} available (Rao and Wu), \code{bootweights} samples \code{n} (Canty and Davison). For multistage designs or those with large sampling fractions, \code{mrbweights} implements Preston's multistage rescaled bootstrap. The multistage rescaled bootstrap is still useful for single-stage designs with small sampling fractions, where it reduces to a half-sample replicate method. } \usage{ bootweights(strata, psu, replicates = 50, fpc = NULL, fpctype = c("population", "fraction", "correction"), compress = TRUE) subbootweights(strata, psu, replicates = 50, compress = TRUE) mrbweights(clusters, stratas, fpcs, replicates=50, multicore=getOption("survey.multicore")) } %- maybe also 'usage' for other objects documented here. \arguments{ \item{strata}{Identifier for sampling strata (top level only)} \item{stratas}{data frame of strata for all stages of sampling} \item{psu}{Identifier for primary sampling units} \item{clusters}{data frame of identifiers for sampling units at each stage} \item{replicates}{Number of bootstrap replicates} \item{fpc}{Finite population correction (top level only) } \item{fpctype}{Is \code{fpc} the population size, sampling fraction, or 1-sampling fraction?} \item{fpcs}{\code{survey_fpc} object with population and sample size at each stage} \item{compress}{Should the replicate weights be compressed?} \item{multicore}{Use the \code{multicore} package to generate the replicates in parallel} } \value{ A set of replicate weights } \section{warning}{With \code{multicore=TRUE} the resampling procedure does not use the current random seed, so the results cannot be exactly reproduced even by using \code{set.seed()}} \note{ These bootstraps are strictly appropriate only when the first stage of sampling is a simple or stratified random sample of PSUs with or without replacement, and not (eg) for PPS sampling. The functions will not enforce simple random sampling, so they can be used (approximately) for data that have had non-response corrections and other weight adjustments. It is preferable to apply these adjustments after creating the bootstrap replicate weights, but that may not be possible with public-use data. } \references{Canty AJ, Davison AC. (1999) Resampling-based variance estimation for labour force surveys. The Statistician 48:379-391 Judkins, D. (1990), "Fay's Method for Variance Estimation" Journal of Official Statistics, 6, 223-239. Preston J. (2009) Rescaled bootstrap for stratified multistage sampling. Survey Methodology 35(2) 227-234 Rao JNK, Wu CFJ. Bootstrap inference for sample surveys. Proc Section on Survey Research Methodology. 1993 (866--871) } \seealso{\code{\link{as.svrepdesign}}} \keyword{survey}% at least one, from doc/KEYWORDS survey/man/svylogrank.Rd0000644000176200001440000000534713714356005015065 0ustar liggesusers\name{svylogrank} \alias{svylogrank} %- Also NEED an '\alias' for EACH other topic documented here. \title{ Compare survival distributions } \description{ Computes a weighted version of the logrank test for comparing two or more survival distributions. The generalization to complex samples is based on the characterization of the logrank test as the score test in a Cox model. Under simple random sampling with replacement, this function with \code{rho=0} and \code{gamma=0} is almost identical to the robust score test in the survival package. The \code{rho=0} and \code{gamma=0} version was proposed by Rader (2014). } \usage{ svylogrank(formula, design, rho=0,gamma=0,method=c("small","large","score"), ...) } %- maybe also 'usage' for other objects documented here. \arguments{ \item{formula}{ Model formula with a single predictor. The predictor must be a factor if it has more than two levels. } \item{design}{ A survey design object } \item{rho,gamma}{Coefficients for the Harrington/Fleming G-rho-gamma tests. The default is the logrank test, \code{rho=1} gives a generalised Wilcoxon test} \item{method}{\code{"small"} works faster when a matrix with dimension number of events by number of people fits easily in memory; \code{"large"} works faster for large data sets; \code{"score"} works by brute-force construction of an expanded data set, and is for debugging} \item{\dots}{ for future expansion. } } \value{ A vector containing the z-statistic for comparing each level of the variable to the lowest, the chisquared statistic for the logrank test, and the p-value. } \references{ Rader, Kevin Andrew. 2014. Methods for Analyzing Survival and Binary Data in Complex Surveys. Doctoral dissertation, Harvard University.\url{http://nrs.harvard.edu/urn-3:HUL.InstRepos:12274283} } %% ~Make other sections like Warning with \section{Warning }{....} ~ \seealso{ \code{\link{svykm}}, \code{\link{svycoxph}}. } \examples{ library("survival") data(nwtco) ## stratified on case status dcchs<-twophase(id=list(~seqno,~seqno), strata=list(NULL,~rel), subset=~I(in.subcohort | rel), data=nwtco, method="simple") svylogrank(Surv(edrel,rel)~factor(stage),design=dcchs) data(pbc, package="survival") pbc$randomized <- with(pbc, !is.na(trt) & trt>0) biasmodel<-glm(randomized~age*edema,data=pbc) pbc$randprob<-fitted(biasmodel) dpbc<-svydesign(id=~1, prob=~randprob, strata=~edema, data=subset(pbc,randomized)) svylogrank(Surv(time,status==2)~trt,design=dpbc) svylogrank(Surv(time,status==2)~trt,design=dpbc,rho=1) rpbc<-as.svrepdesign(dpbc) svylogrank(Surv(time,status==2)~trt,design=rpbc) } % Add one or more standard keywords, see file 'KEYWORDS' in the % R documentation directory. \keyword{survey} \keyword{survival}% __ONLY ONE__ keyword per line survey/man/SE.Rd0000755000176200001440000000120311757251640013167 0ustar liggesusers\name{SE} \alias{SE} \alias{SE.default} \alias{SE.svrepstat} %- Also NEED an '\alias' for EACH other topic documented here. \title{Extract standard errors } \description{ Extracts standard errors from an object. The default method is for objects with a \code{\link{vcov}} method. } \usage{ SE(object, ...) \method{SE}{default}(object,...) \method{SE}{svrepstat}(object,...) } %- maybe also 'usage' for other objects documented here. \arguments{ \item{object}{An object} \item{\dots}{Arguments for future expansion } } \value{ Vector of standard errors. } \seealso{ \code{\link{vcov}}} \keyword{models}% at least one, from doc/KEYWORDS survey/man/svyloglin.Rd0000644000176200001440000000651511457435612014716 0ustar liggesusers\name{svyloglin} \alias{svyloglin} \alias{anova.svyloglin} \alias{update.svyloglin} \alias{coef.svyloglin} \alias{print.anova.svyloglin} %- Also NEED an '\alias' for EACH other topic documented here. \title{Loglinear models } \description{ Fit and compare hierarchical loglinear models for complex survey data. } \usage{ svyloglin(formula, design, ...) \method{update}{svyloglin}(object,formula,...) \method{anova}{svyloglin}(object,object1,...,integrate=FALSE) \method{print}{anova.svyloglin}(x,pval=c("F","saddlepoint","lincom","chisq"),...) \method{coef}{svyloglin}(object,...,intercept=FALSE) } %- maybe also 'usage' for other objects documented here. \arguments{ \item{formula}{Model formula} \item{design}{survey design object} \item{object,object1}{loglinear model from \code{svyloglin}} \item{pval}{p-value approximation: see Details} \item{integrate}{Compute the exact asymptotic p-value (slow)?} \item{\dots}{not used } \item{intercept}{Report the intercept?} \item{x}{anova object} } \details{ The loglinear model is fitted to a multiway table with probabilities estimated by \code{\link{svymean}} and with the sample size equal to the observed sample size, treating the resulting table as if it came from iid multinomial sampling, as described by Rao and Scott. The variance-covariance matrix does not include the intercept term, and so by default neither does the \code{coef} method. A Newton-Raphson algorithm is used, rather than iterative proportional fitting, so starting values are not needed. The \code{anova} method computes the quantities that would be the score (Pearson) and likelihood ratio chi-squared statistics if the data were an iid sample. It computes four p-values for each of these, based on the exact asymptotic distribution (see \code{\link{pchisqsum}}), a saddlepoint approximateion to this distribution, a scaled chi-squared distribution, and a scaled F-distribution. When testing the two-way interaction model against the main-effects model in a two-way table the score statistic and p-values match the Rao-Scott tests computed by \code{\link{svychisq}}. The \code{anova} method can only compare two models if they are for exactly the same multiway table (same variables and same order). The \code{update} method will help with this. It is also much faster to use \code{update} than \code{svyloglin} for a large data set: its time complexity depends only on the size of the model, not on the size of the data set. It is not possible to fit a model using a variable created inline, eg \code{I(x<10)}, since the multiway table is based on all variables used in the formula. } \value{ Object of class \code{"svyloglin"} } \references{ Rao, JNK, Scott, AJ (1984) "On Chi-squared Tests For Multiway Contingency Tables with Proportions Estimated From Survey Data" Annals of Statistics 12:46-60. } \seealso{\code{\link{svychisq}}, \code{\link{svyglm}},\code{\link{pchisqsum}}} \examples{ data(api) dclus1<-svydesign(id=~dnum, weights=~pw, data=apiclus1, fpc=~fpc) a<-svyloglin(~stype+comp.imp,dclus1) b<-update(a,~.^2) an<-anova(a,b) an print(an, pval="saddlepoint") ## Wald test regTermTest(b, ~stype:comp.imp) ## linear-by-linear association d<-update(a,~.+as.numeric(stype):as.numeric(comp.imp)) an1<-anova(a,d) an1 } % Add one or more standard keywords, see file 'KEYWORDS' in the % R documentation directory. \keyword{survey} survey/man/svyprcomp.Rd0000644000176200001440000000520312372226272014720 0ustar liggesusers\name{svyprcomp} \Rdversion{1.1} \alias{svyprcomp} \alias{biplot.svyprcomp} %- Also NEED an '\alias' for EACH other topic documented here. \title{ Sampling-weighted principal component analysis } \description{ Computes principal components using the sampling weights. } \usage{ svyprcomp(formula, design, center = TRUE, scale. = FALSE, tol = NULL, scores = FALSE, ...) \method{biplot}{svyprcomp}(x, cols=c("black","darkred"),xlabs=NULL, weight=c("transparent","scaled","none"), max.alpha=0.5,max.cex=0.5,xlim=NULL,ylim=NULL,pc.biplot=FALSE, expand=1,xlab=NULL,ylab=NULL, arrow.len=0.1, ...) } \arguments{ \item{formula}{ model formula describing variables to be used } \item{design}{ survey design object. } \item{center}{ Center data before analysis? } \item{scale.}{ Scale to unit variance before analysis? } \item{tol}{ Tolerance for omitting components from the results; a proportion of the standard deviation of the first component. The default is to keep all components. } \item{scores}{ Return scores on each component? These are needed for \code{biplot}. } \item{x}{ A \code{svyprcomp} object } \item{cols}{ Base colors for observations and variables respectively } \item{xlabs}{ Formula, or character vector, giving labels for each observation } \item{weight}{ How to display the sampling weights: \code{"scaled"} changes the size of the point label, \code{"transparent"} uses opacity proportional to sampling weight, \code{"none"} changes neither. } \item{max.alpha}{ Opacity for the largest sampling weight, or for all points if \code{weight!="transparent"} } \item{max.cex}{ Character size (as a multiple of \code{par("cex")}) for the largest sampling weight, or for all points if \code{weight!="scaled"} } \item{xlim,ylim,xlab,ylab}{Graphical parameters} \item{expand,arrow.len}{See \code{\link{biplot}}} \item{pc.biplot}{See \code{link{biplot.prcomp}}} \item{\dots}{ Other arguments to \code{\link{prcomp}}, or graphical parameters for \code{biplot} } } \value{ \code{svyprcomp} returns an object of class \code{svyprcomp}, similar to class \code{prcomp} but including design information } \seealso{ \code{\link{prcomp}}, \code{\link{biplot.prcomp}} } \examples{ data(api) dclus2<-svydesign(id=~dnum+snum, fpc=~fpc1+fpc2, data=apiclus2) pc <- svyprcomp(~api99+api00+ell+hsg+meals+emer, design=dclus2,scale=TRUE,scores=TRUE) pc biplot(pc, xlabs=~dnum, weight="none") biplot(pc, xlabs=~dnum,max.alpha=1) biplot(pc, weight="scaled",max.cex=1.5, xlabs=~dnum) } % Add one or more standard keywords, see file 'KEYWORDS' in the % R documentation directory. \keyword{survey} \keyword{hplot}% __ONLY ONE__ keyword per line \keyword{multivariate}survey/man/as.svrepdesign.Rd0000755000176200001440000001072114166647050015621 0ustar liggesusers\name{as.svrepdesign} \alias{as.svrepdesign} \alias{as.svrepdesign.default} \alias{as.svrepdesign.svyimputationList} %- Also NEED an `\alias' for EACH other topic documented here. \title{Convert a survey design to use replicate weights} \description{ Creates a replicate-weights survey design object from a traditional strata/cluster survey design object. \code{JK1} and \code{JKn} are jackknife methods, \code{BRR} is Balanced Repeated Replicates and \code{Fay} is Fay's modification of this, \code{bootstrap} is Canty and Davison's bootstrap, \code{subbootstrap} is Rao and Wu's \eqn{(n-1)} bootstrap, and \code{mrbbootstrap} is Preston's multistage rescaled bootstrap. With a \code{svyimputationList} object, the same replicate weights will be used for each imputation if the sampling weights are all the same and \code{separate.replicates=FALSE}. } \usage{ as.svrepdesign(design,...) \method{as.svrepdesign}{default}(design, type=c("auto", "JK1", "JKn", "BRR", "bootstrap", "subbootstrap","mrbbootstrap","Fay"), fay.rho = 0, fpc=NULL,fpctype=NULL,..., compress=TRUE, mse=getOption("survey.replicates.mse")) \method{as.svrepdesign}{svyimputationList}(design, type=c("auto", "JK1", "JKn", "BRR", "bootstrap", "subbootstrap","mrbbootstrap","Fay"), fay.rho = 0, fpc=NULL,fpctype=NULL, separate.replicates=FALSE, ..., compress=TRUE, mse=getOption("survey.replicates.mse")) } %- maybe also `usage' for other objects documented here. \arguments{ \item{design}{Object of class \code{survey.design} or \code{svyimputationList}. Must not have been post-stratified/raked/calibrated in R} \item{type}{Type of replicate weights. \code{"auto"} uses JKn for stratified, JK1 for unstratified designs} \item{fay.rho}{Tuning parameter for Fay's variance method } \item{fpc,fpctype,\dots}{Passed to \code{jk1weights}, \code{jknweights}, \code{brrweights}, \code{bootweights}, \code{subbootweights}, or \code{mrbweights}.} \item{separate.replicates}{Compute replicate weights separately for each design (useful for the bootstrap types, which are not deterministic} \item{compress}{Use a compressed representation of the replicate weights matrix.} \item{mse}{if \code{TRUE}, compute variances from sums of squares around the point estimate, rather than the mean of the replicates} } \value{ Object of class \code{svyrep.design}. } \references{ Canty AJ, Davison AC. (1999) Resampling-based variance estimation for labour force surveys. The Statistician 48:379-391 Judkins, D. (1990), "Fay's Method for Variance Estimation," Journal of Official Statistics, 6, 223-239. Preston J. (2009) Rescaled bootstrap for stratified multistage sampling. Survey Methodology 35(2) 227-234 Rao JNK, Wu CFJ. Bootstrap inference for sample surveys. Proc Section on Survey Research Methodology. 1993 (866--871) } \seealso{\code{\link{brrweights}}, \code{\link{svydesign}}, \code{\link{svrepdesign}}, \code{\link{bootweights}}, \code{\link{subbootweights}}, \code{\link{mrbweights}} } \examples{ data(scd) scddes<-svydesign(data=scd, prob=~1, id=~ambulance, strata=~ESA, nest=TRUE, fpc=rep(5,6)) scdnofpc<-svydesign(data=scd, prob=~1, id=~ambulance, strata=~ESA, nest=TRUE) # convert to BRR replicate weights scd2brr <- as.svrepdesign(scdnofpc, type="BRR") scd2fay <- as.svrepdesign(scdnofpc, type="Fay",fay.rho=0.3) # convert to JKn weights scd2jkn <- as.svrepdesign(scdnofpc, type="JKn") # convert to JKn weights with finite population correction scd2jknf <- as.svrepdesign(scddes, type="JKn") ## with user-supplied hadamard matrix scd2brr1 <- as.svrepdesign(scdnofpc, type="BRR", hadamard.matrix=paley(11)) svyratio(~alive, ~arrests, design=scd2brr) svyratio(~alive, ~arrests, design=scd2brr1) svyratio(~alive, ~arrests, design=scd2fay) svyratio(~alive, ~arrests, design=scd2jkn) svyratio(~alive, ~arrests, design=scd2jknf) data(api) ## one-stage cluster sample dclus1<-svydesign(id=~dnum, weights=~pw, data=apiclus1, fpc=~fpc) ## convert to JK1 jackknife rclus1<-as.svrepdesign(dclus1) ## convert to bootstrap bclus1<-as.svrepdesign(dclus1,type="bootstrap", replicates=100) svymean(~api00, dclus1) svytotal(~enroll, dclus1) svymean(~api00, rclus1) svytotal(~enroll, rclus1) svymean(~api00, bclus1) svytotal(~enroll, bclus1) dclus2<-svydesign(id = ~dnum + snum, fpc = ~fpc1 + fpc2, data = apiclus2) mrbclus2<-as.svrepdesign(dclus2, type="mrb",replicates=100) svytotal(~api00+stype, dclus2) svytotal(~api00+stype, mrbclus2) } \keyword{survey}% at least one, from doc/KEYWORDS survey/man/scd.Rd0000755000176200001440000000362211457435611013437 0ustar liggesusers\name{scd} \alias{scd} \non_function{} \title{Survival in cardiac arrest} \usage{data(scd)} \description{ These data are from Section 12.2 of Levy and Lemeshow. They describe (a possibly apocryphal) study of survival in out-of-hospital cardiac arrest. Two out of five ambulance stations were sampled from each of three emergency service areas. } \format{ This data frame contains the following columns: \describe{ \item{ESA}{Emergency Service Area (strata)} \item{ambulance}{Ambulance station (PSU)} \item{arrests}{estimated number of cardiac arrests} \item{alive}{number reaching hospital alive} } } \source{ Levy and Lemeshow. "Sampling of Populations" (3rd edition). Wiley. } \examples{ data(scd) ## survey design objects scddes<-svydesign(data=scd, prob=~1, id=~ambulance, strata=~ESA, nest=TRUE, fpc=rep(5,6)) scdnofpc<-svydesign(data=scd, prob=~1, id=~ambulance, strata=~ESA, nest=TRUE) # convert to BRR replicate weights scd2brr <- as.svrepdesign(scdnofpc, type="BRR") # or to Rao-Wu bootstrap scd2boot <- as.svrepdesign(scdnofpc, type="subboot") # use BRR replicate weights from Levy and Lemeshow repweights<-2*cbind(c(1,0,1,0,1,0), c(1,0,0,1,0,1), c(0,1,1,0,0,1), c(0,1,0,1,1,0)) scdrep<-svrepdesign(data=scd, type="BRR", repweights=repweights) # ratio estimates svyratio(~alive, ~arrests, design=scddes) svyratio(~alive, ~arrests, design=scdnofpc) svyratio(~alive, ~arrests, design=scd2brr) svyratio(~alive, ~arrests, design=scd2boot) svyratio(~alive, ~arrests, design=scdrep) # or a logistic regression summary(svyglm(cbind(alive,arrests-alive)~1, family=quasibinomial, design=scdnofpc)) summary(svyglm(cbind(alive,arrests-alive)~1, family=quasibinomial, design=scdrep)) # Because no sampling weights are given, can't compute design effects # without replacement: use deff="replace" svymean(~alive+arrests, scddes, deff=TRUE) svymean(~alive+arrests, scddes, deff="replace") } \keyword{datasets} survey/man/svyciprop.Rd0000644000176200001440000000764413006461570014724 0ustar liggesusers\name{svyciprop} \alias{svyciprop} %- Also NEED an '\alias' for EACH other topic documented here. \title{Confidence intervals for proportions } \description{ Computes confidence intervals for proportions using methods that may be more accurate near 0 and 1 than simply using \code{confint(svymean())}. } \usage{ svyciprop(formula, design, method = c("logit", "likelihood", "asin", "beta", "mean","xlogit"), level = 0.95, df=degf(design),...) } %- maybe also 'usage' for other objects documented here. \arguments{ \item{formula}{Model formula specifying a single binary variable} \item{design}{ survey design object} \item{method}{ See Details below. Partial matching is done on the argument.} \item{level}{Confidence level for interval} \item{df}{denominator degrees of freedom, for all methods except \code{"beta"}. Use \code{Inf} for confidence intervals based on a Normal distribution, and for \code{"likelihood"} and \code{"logit"} use \code{NULL} for the default method in glms (currently \code{degf(design)-1}, but this may be improved in the future)} \item{\dots}{For \code{"mean"} and \code{"asin"}, this is passed to \code{\link{confint.svystat}} } } \details{ The \code{"logit"} method fits a logistic regression model and computes a Wald-type interval on the log-odds scale, which is then transformed to the probability scale. The \code{"likelihood"} method uses the (Rao-Scott) scaled chi-squared distribution for the loglikelihood from a binomial distribution. The \code{"asin"} method uses the variance-stabilising transformation for the binomial distribution, the arcsine square root, and then back-transforms the interval to the probability scale The \code{"beta"} method uses the incomplete beta function as in \code{\link{binom.test}}, with an effective sample size based on the estimated variance of the proportion. (Korn and Graubard, 1998) The \code{"xlogit"} method uses a logit transformation of the mean and then back-transforms to the probablity scale. This appears to be the method used by SUDAAN and SPSS COMPLEX SAMPLES. The \code{"mean"} method is a Wald-type interval on the probability scale, the same as \code{confint(svymean())} All methods undercover for probabilities close enough to zero or one, but \code{"beta"}, \code{"likelihood"}, \code{"logit"}, and \code{"logit"} are noticeably better than the other two. None of the methods will work when the observed proportion is exactly 0 or 1. The \code{confint} method extracts the confidence interval; the \code{vcov} and \code{SE} methods just report the variance or standard error of the mean. } \value{ The point estimate of the proportion, with the confidence interval as an attribute } \references{ Rao, JNK, Scott, AJ (1984) "On Chi-squared Tests For Multiway Contingency Tables with Proportions Estimated From Survey Data" Annals of Statistics 12:46-60. Korn EL, Graubard BI. (1998) Confidence Intervals For Proportions With Small Expected Number of Positive Counts Estimated From Survey Data. Survey Methodology 23:193-201. } \seealso{ \code{\link{svymean}}, \code{\link{yrbs}} } \examples{ data(api) dclus1<-svydesign(id=~dnum, fpc=~fpc, data=apiclus1) svyciprop(~I(ell==0), dclus1, method="li") svyciprop(~I(ell==0), dclus1, method="lo") svyciprop(~I(ell==0), dclus1, method="as") svyciprop(~I(ell==0), dclus1, method="be") svyciprop(~I(ell==0), dclus1, method="me") svyciprop(~I(ell==0), dclus1, method="xl") ## reproduces Stata svy: mean svyciprop(~I(ell==0), dclus1, method="me", df=degf(dclus1)) ## reproduces Stata svy: prop svyciprop(~I(ell==0), dclus1, method="lo", df=degf(dclus1)) rclus1<-as.svrepdesign(dclus1) svyciprop(~I(emer==0), rclus1, method="li") svyciprop(~I(emer==0), rclus1, method="lo") svyciprop(~I(emer==0), rclus1, method="as") svyciprop(~I(emer==0), rclus1, method="be") svyciprop(~I(emer==0), rclus1, method="me") } % Add one or more standard keywords, see file 'KEYWORDS' in the % R documentation directory. \keyword{survey} survey/man/compressWeights.Rd0000755000176200001440000000320211457435611016046 0ustar liggesusers\name{compressWeights} \alias{compressWeights} \alias{compressWeights.default} \alias{compressWeights.repweights_compressed} \alias{[.repweights_compressed} \alias{dim.repweights_compressed} \alias{dimnames.repweights_compressed} \alias{as.matrix.repweights_compressed} \alias{as.matrix.repweights} \alias{as.vector.repweights_compressed} \alias{compressWeights.svyrep.design} %- Also NEED an '\alias' for EACH other topic documented here. \title{Compress replicate weight matrix} \description{ Many replicate weight matrices have redundant rows, such as when weights are the same for all observations in a PSU. This function produces a compressed form. Methods for \code{as.matrix} and \code{as.vector} extract and expand the weights. } \usage{ compressWeights(rw, ...) \method{compressWeights}{svyrep.design}(rw,...) \method{as.matrix}{repweights_compressed}(x,...) \method{as.vector}{repweights_compressed}(x,...) } %- maybe also 'usage' for other objects documented here. \arguments{ \item{rw}{A set of replicate weights or a \code{svyrep.design} object} \item{x}{A compressed set of replicate weights} \item{\dots}{For future expansion} } \value{ An object of class \code{repweights_compressed} or a \code{svyrep.design} object with \code{repweights} element of class \code{repweights_compressed} } \seealso{\code{\link{jknweights}},\code{\link{as.svrepdesign}}} \examples{ data(api) dclus1<-svydesign(id=~dnum, weights=~pw, data=apiclus1, fpc=~fpc) rclus1c<-as.svrepdesign(dclus1,compress=TRUE) rclus1<-as.svrepdesign(dclus1,compress=FALSE) } \keyword{survey}% at least one, from doc/KEYWORDS \keyword{manip}% __ONLY ONE__ keyword per line survey/man/svycontrast.Rd0000644000176200001440000000707414222665767015301 0ustar liggesusers\name{svycontrast} \alias{svycontrast} %- Also NEED an '\alias' for EACH other topic documented here. \title{Linear and nonlinearconstrasts of survey statistics } \description{ Computes linear or nonlinear contrasts of estimates produced by survey functions (or any object with \code{coef} and \code{vcov} methods). } \usage{ svycontrast(stat, contrasts, add=FALSE, ...) } %- maybe also 'usage' for other objects documented here. \arguments{ \item{stat}{object of class \code{svrepstat} or \code{svystat} } \item{contrasts}{A vector or list of vectors of coefficients, or a call or list of calls } \item{add}{keep all the coefficients of the input in the output?} \item{\dots}{For future expansion} } \value{ Object of class \code{svrepstat} or \code{svystat} } \details{ If \code{contrasts} is a list, the element names are used as names for the returned statistics. If an element of \code{contrasts} is shorter than \code{coef(stat)} and has names, the names are used to match up the vectors and the remaining elements of \code{contrasts} are assumed to be zero. If the names are not legal variable names (eg \code{0.1}) they must be quoted (eg \code{"0.1"}) If \code{contrasts} is a \code{"call"} or list of \code{"call"s}, and \code{stat} is a \code{svrepstat} object including replicates, the replicates are transformed and used to compute the variance. If \code{stat} is a \code{svystat} object or a \code{svrepstat} object without replicates, the delta-method is used to compute variances, and the calls must use only functions that \code{\link{deriv}} knows how to differentiate. If the names are not legal variable names they must be quoted with backticks (eg \code{`0.1`}). } \seealso{\code{\link{regTermTest}}, \code{svyglm}} \examples{ data(api) dclus1<-svydesign(id=~dnum, weights=~pw, data=apiclus1, fpc=~fpc) a <- svytotal(~api00+enroll+api99, dclus1) svycontrast(a, list(avg=c(0.5,0,0.5), diff=c(1,0,-1))) ## if contrast vectors have names, zeroes may be omitted svycontrast(a, list(avg=c(api00=0.5,api99=0.5), diff=c(api00=1,api99=-1))) ## nonlinear contrasts svycontrast(a, quote(api00/api99)) svyratio(~api00, ~api99, dclus1) ## Example: standardised skewness coefficient moments<-svymean(~I(api00^3)+I(api00^2)+I(api00), dclus1) svycontrast(moments, quote((`I(api00^3)`-3*`I(api00^2)`*`I(api00)`+ 3*`I(api00)`*`I(api00)`^2-`I(api00)`^3)/ (`I(api00^2)`-`I(api00)`^2)^1.5)) ## Example: geometric means ## using delta method meanlogs <- svymean(~log(api00)+log(api99), dclus1) svycontrast(meanlogs, list(api00=quote(exp(`log(api00)`)), api99=quote(exp(`log(api99)`)))) ## using delta method rclus1<-as.svrepdesign(dclus1) meanlogs <- svymean(~log(api00)+log(api99), rclus1) svycontrast(meanlogs, list(api00=quote(exp(`log(api00)`)), api99=quote(exp(`log(api99)`)))) ## why is add=TRUE useful? (totals<-svyby(~enroll,~stype,design=dclus1,svytotal,covmat=TRUE)) totals1<-svycontrast(totals, list(total=c(1,1,1)), add=TRUE) svycontrast(totals1, list(quote(E/total), quote(H/total), quote(M/total))) totals2<-svycontrast(totals, list(total=quote(E+H+M)), add=TRUE) all.equal(as.matrix(totals1),as.matrix(totals2)) ## more complicated svyby means <- svyby(~api00+api99, ~stype+sch.wide, design=dclus1, svymean,covmat=TRUE) svycontrast(means, quote(`E.No:api00`-`E.No:api99`)) svycontrast(means, quote(`E.No:api00`/`E.No:api99`)) ## transforming replicates meanlogs_r <- svymean(~log(api00)+log(api99), rclus1, return.replicates=TRUE) svycontrast(meanlogs_r, list(api00=quote(exp(`log(api00)`)), api99=quote(exp(`log(api99)`)))) } \keyword{survey}% at least one, from doc/KEYWORDS survey/man/weights.survey.design.Rd0000755000176200001440000000254511457435612017150 0ustar liggesusers\name{weights.survey.design} \alias{weights.survey.design} \alias{weights.svyrep.design} \alias{weights.survey_fpc} %- Also NEED an `\alias' for EACH other topic documented here. \title{Survey design weights} \description{ Extract weights from a survey design object. } \usage{ \method{weights}{survey.design}(object, ...) \method{weights}{svyrep.design}(object, type=c("replication","sampling","analysis"), ...) \method{weights}{survey_fpc}(object,final=TRUE,...) } %- maybe also `usage' for other objects documented here. \arguments{ \item{object}{Survey design object} \item{type}{Type of weights: \code{"analysis"} combines sampling and replication weights.} \item{final}{If \code{FALSE} return a data frame with sampling weights at each stage of sampling.} \item{\dots}{Other arguments ignored } } \value{ vector or matrix of weights } \seealso{\code{\link{svydesign}}, \code{\link{svrepdesign}}, \code{\link{as.fpc}} } \examples{ data(scd) scddes<-svydesign(data=scd, prob=~1, id=~ambulance, strata=~ESA, nest=TRUE, fpc=rep(5,6)) repweights<-2*cbind(c(1,0,1,0,1,0), c(1,0,0,1,0,1), c(0,1,1,0,0,1), c(0,1,0,1,1,0)) scdrep<-svrepdesign(data=scd, type="BRR", repweights=repweights) weights(scdrep) weights(scdrep, type="sampling") weights(scdrep, type="analysis") weights(scddes) } \keyword{survey}% at least one, from doc/KEYWORDS survey/man/nhanes.Rd0000644000176200001440000000202114073700557014130 0ustar liggesusers\name{nhanes} \alias{nhanes} \docType{data} \title{ Cholesterol data from a US survey } \description{ Data extracted from NHANES 2009-2010 on high cholesterol. } \usage{data(nhanes)} \format{ A data frame with 8591 observations on the following 7 variables. \describe{ \item{\code{SDMVPSU}}{Primary sampling units} \item{\code{SDMVSTRA}}{Sampling strata} \item{\code{WTMEC2YR}}{Sampling weights} \item{\code{HI_CHOL}}{Numeric vector: 1 for total cholesterol over 240mg/dl, 0 under 240mg/dl} \item{\code{race}}{1=Hispanic, 2=non-Hispanic white, 3=non-Hispanic black, 4=other} \item{\code{agecat}}{Age group \code{(0,19]} \code{(19,39]} \code{(39,59]} \code{(59,Inf]}} \item{\code{RIAGENDR}}{Gender: 1=male, 2=female} } } \source{ Previously at \verb{https://wwwn.cdc.gov/nchs/nhanes/search/datapage.aspx?Component=laboratory&CycleBeginYear=2009} } \examples{ data(nhanes) design <- svydesign(id=~SDMVPSU, strata=~SDMVSTRA, weights=~WTMEC2YR, nest=TRUE,data=nhanes) design } \keyword{datasets} survey/man/svyquantile.Rd0000644000176200001440000001443314070456600015244 0ustar liggesusers\name{newsvyquantile} \alias{svyquantile} \alias{svyquantile.survey.design} \alias{svyquantile.svyrep.design} %- Also NEED an '\alias' for EACH other topic documented here. \title{ Quantiles under complex sampling. } \description{ Estimates quantiles and confidence intervals for them. This function was completely re-written for version 4.1 of the survey package, and has a wider range of ways to define the quantile. See the vignette for a list of them. } \usage{ svyquantile(x, design, quantiles, ...) \method{svyquantile}{survey.design}(x, design, quantiles, alpha = 0.05, interval.type = c("mean", "beta","xlogit", "asin","score"), na.rm = FALSE, ci=TRUE, se = ci, qrule=c("math","school","shahvaish","hf1","hf2","hf3", "hf4","hf5","hf6","hf7","hf8","hf9"), df = NULL, ...) \method{svyquantile}{svyrep.design}(x, design, quantiles, alpha = 0.05, interval.type = c("mean", "beta","xlogit", "asin","quantile"), na.rm = FALSE, ci = TRUE, se=ci, qrule=c("math","school","shahvaish","hf1","hf2","hf3", "hf4","hf5","hf6","hf7","hf8","hf9"), df = NULL, return.replicates=FALSE,...) } %- maybe also 'usage' for other objects documented here. \arguments{ \item{x}{ A one-sided formula describing variables to be used } \item{design}{ Design object } \item{quantiles}{ Numeric vector specifying which quantiles are requested } \item{alpha}{Specified confidence interval coverage} \item{interval.type}{See Details below} \item{na.rm}{Remove missing values?} \item{ci,se}{Return an estimated confidence interval and standard error?} \item{qrule}{Rule for defining the quantiles: either a character string specifying one of the built-in rules, or a function} \item{df}{Degrees of freedom for confidence interval estimation: \code{NULL} specifies \code{degf(design)}} \item{return.replicates}{Return replicate estimates of the quantile (only for \code{interval.type="quantile"})} \item{\dots}{ For future expansion } } \details{ The \code{p}th quantile is defined as the value where the estimated cumulative distribution function is equal to \code{p}. As with quantiles in unweighted data, this definition only pins down the quantile to an interval between two observations, and a rule is needed to interpolate. The default is the mathematical definition, the lower end of the quantile interval; \code{qrule="school"} uses the midpoint of the quantile interval; \code{"hf1"} to {"hf9"} are weighted analogues of \code{type=1} to \code{9} in \code{\link{quantile}}. See the vignette "Quantile rules" for details and for how to write your own. By default, confidence intervals are estimated using Woodruff's (1952) method, which involves computing the quantile, estimating a confidence interval for the proportion of observations below the quantile, and then transforming that interval using the estimated CDF. In that context, the \code{interval.type} argument specifies how the confidence interval for the proportion is computed, matching \code{\link{svyciprop}}. In contrast to \code{oldsvyquantile}, \code{NaN} is returned if a confidence interval endpoint on the probability scale falls outside \code{[0,1]}. There are two exceptions. For \code{svydesign} objects, \code{interval.type="score"} asks for the Francisco & Fuller confidence interval based on inverting a score test. According to Dorfmann & Valliant, this interval has inferior performance to the \code{"beta"} and \code{"logit"} intervals; it is provided for compatibility. For replicate-weight designs, \code{interval.type="quantile"} ask for an interval based directly on the replicates of the quantile. This interval is not valid for jackknife-type replicates, though it should perform well for bootstrap-type replicates, BRR, and SDR. The \code{df} argument specifies degrees of freedom for a t-distribution approximation to distributions of means. The default is the design degrees of freedom. Specify \code{df=Inf} to use a Normal distribution (eg, for compatibility). When the standard error is requested, it is estimated by dividing the confidence interval length by the number of standard errors in a t confidence interval with the specified \code{alpha}. For example, with \code{alpha=0.05} and \code{df=Inf} the standard error is estimated as the confidence interval length divided by \code{2*1.96}. } \value{ An object of class \code{"newsvyquantile"}, except that with a replicate-weights design and \code{interval.type="quantile"} and \code{return.replicates=TRUE} it's an object of class \code{"svrepstat"} } \references{ Dorfman A, Valliant R (1993) Quantile variance estimators in complex surveys. Proceedings of the ASA Survey Research Methods Section. 1993: 866-871 Francisco CA, Fuller WA (1986) Estimation of the distribution function with a complex survey. Technical Report, Iowa State University. Hyndman, R. J. and Fan, Y. (1996) Sample quantiles in statistical packages, The American Statistician 50, 361-365. Shah BV, Vaish AK (2006) Confidence Intervals for Quantile Estimation from Complex Survey Data. Proceedings of the Section on Survey Research Methods. Woodruff RS (1952) Confidence intervals for medians and other position measures. JASA 57, 622-627. } \seealso{ \code{vignette("qrule", package = "survey")} \code{\link{oldsvyquantile}} \code{\link{quantile}} } \examples{ data(api) ## population quantile(apipop$api00,c(.25,.5,.75)) ## one-stage cluster sample dclus1<-svydesign(id=~dnum, weights=~pw, data=apiclus1, fpc=~fpc) rclus1<-as.svrepdesign(dclus1) bclus1<-as.svrepdesign(dclus1,type="boot") svyquantile(~api00, dclus1, c(.25,.5,.75)) svyquantile(~api00, dclus1, c(.25,.5,.75),interval.type="beta") svyquantile(~api00, rclus1, c(.25,.5,.75)) svyquantile(~api00, rclus1, c(.25,.5,.75),interval.type="quantile") svyquantile(~api00, bclus1, c(.25,.5,.75),interval.type="quantile") svyquantile(~api00+ell, dclus1, c(.25,.5,.75), qrule="math") svyquantile(~api00+ell, dclus1, c(.25,.5,.75), qrule="school") svyquantile(~api00+ell, dclus1, c(.25,.5,.75), qrule="hf8") } % Add one or more standard keywords, see file 'KEYWORDS' in the % R documentation directory. \keyword{survey}% use one of RShowDoc("KEYWORDS") \keyword{univar}% at least one, from doc/KEYWORDS survey/man/svyqqplot.Rd0000644000176200001440000000401313710116156014732 0ustar liggesusers\name{svyqqplot} \alias{svyqqplot} \alias{svyqqmath} %- Also NEED an '\alias' for EACH other topic documented here. \title{ Quantile-quantile plots for survey data } \description{ Quantile-quantile plots either against a specified distribution function or comparing two variables from the same or different designs. } \usage{ svyqqplot(formula, design, designx = NULL, na.rm = TRUE, qrule = "hf8", xlab = NULL, ylab = NULL, ...) svyqqmath(x, design, null=qnorm, na.rm=TRUE, xlab="Expected",ylab="Observed",...) } %- maybe also 'usage' for other objects documented here. \arguments{ \item{x,formula}{ A one-sided formula for \code{svyqqmath} or a two-sided formula for \code{svyqqplot} } \item{design}{ Survey design object to look up variables } \item{designx}{ Survey design object to look up the RHS variable in \code{svyqqplot}, if different from the LHS variable } \item{null}{Quantile function to compare the data quantiles to} \item{na.rm}{ Remove missing values } \item{qrule}{ How to define quantiles for \code{svyqqplot} -- see \code{\link{svyquantile}} for possible values } \item{xlab,ylab}{ Passed to \code{plot}. For \code{svyqqplot}, if these are \code{NULL} they are replaced by the variable names } \item{\dots}{ Graphical options to be passed to \code{plot} } } \value{ None } \seealso{ \code{\link{quantile}} \code{\link{qqnorm}} \code{\link{qqplot}} } \examples{ data(api) dstrat<-svydesign(id=~1,strata=~stype, weights=~pw, data=apistrat, fpc=~fpc) svyqqmath(~api99, design=dstrat) svyqqplot(api00~api99, design=dstrat) dclus1<-svydesign(id=~dnum, weights=~pw, data=apiclus1, fpc=~fpc) opar<-par(mfrow=c(1,2)) ## sample distributions very different qqplot(apiclus1$enroll, apistrat$enroll); abline(0,1) ## estimated population distributions much more similar svyqqplot(enroll~enroll, design=dstrat,designx=dclus1,qrule=survey:::qrule_hf8); abline(0,1) par(opar) } % Add one or more standard keywords, see file 'KEYWORDS' in the % R documentation directory. \keyword{survey }% use one of RShowDoc("KEYWORDS") survey/man/withReplicates.Rd0000755000176200001440000001337013734201460015647 0ustar liggesusers\name{withReplicates} \alias{withReplicates} \alias{withReplicates.svyrep.design} \alias{withReplicates.svrepvar} \alias{withReplicates.svrepstat} \alias{withReplicates.svyimputationList} \alias{vcov.svyrep.design} %- Also NEED an `\alias' for EACH other topic documented here. \title{Compute variances by replicate weighting} \description{ Given a function or expression computing a statistic based on sampling weights, \code{withReplicates} evaluates the statistic and produces a replicate-based estimate of variance. \code{vcov.svrep.design} produces the variance estimate from a set of replicates and the design object. } \usage{ withReplicates(design, theta,..., return.replicates=FALSE) \method{withReplicates}{svyrep.design}(design, theta, rho = NULL, ..., scale.weights=FALSE, return.replicates=FALSE) \method{withReplicates}{svrepvar}(design, theta, ..., return.replicates=FALSE) \method{withReplicates}{svrepstat}(design, theta, ..., return.replicates=FALSE) \method{withReplicates}{svyimputationList}(design, theta, ..., return.replicates=FALSE) \method{vcov}{svyrep.design}(object, replicates, centre,...) } %- maybe also `usage' for other objects documented here. \arguments{ \item{design}{A survey design with replicate weights (eg from \code{\link{svrepdesign}}) or a suitable object with replicate parameter estimates} \item{theta}{A function or expression: see Details below} \item{rho}{If \code{design} uses BRR weights, \code{rho} optionally specifies the parameter for Fay's variance estimator.} \item{\dots}{Other arguments to \code{theta}} \item{scale.weights}{Divide the probability weights by their sum (can help with overflow problems)} \item{return.replicates}{Return the replicate estimates as well as the variance?} \item{object}{The replicate-weights design object used to create the replicates} \item{replicates}{A set of replicates} \item{centre}{The centering value for variance calculation. If \code{object$mse} is \code{TRUE} this is the result of estimation using the sampling weights, and must be supplied. If \code{object$mse} is \code{FALSE} the mean of the replicates is used and this argument is silently ignored. }} \details{ The method for \code{svyrep.design} objects evaluates a function or expression using the sampling weights and then each set of replicate weights. The method for \code{svrepvar} objects evaluates the function or expression on an estimated population covariance matrix and its replicates, to simplify multivariate statistics such as structural equation models. For the \code{svyrep.design} method, if \code{theta} is a function its first argument will be a vector of weights and the second argument will be a data frame containing the variables from the design object. If it is an expression, the sampling weights will be available as the variable \code{.weights}. Variables in the design object will also be in scope. It is possible to use global variables in the expression, but unwise, as they may be masked by local variables inside \code{withReplicates}. For the \code{svrepvar} method a function will get the covariance matrix as its first argument, and an expression will be evaluated with \code{.replicate} set to the variance matrix. For the \code{svrepstat} method a function will get the point estimate, and an expression will be evaluated with \code{.replicate} set to each replicate. The method can only be used when the \code{svrepstat} object includes replicates. The \code{svyimputationList} method runs \code{withReplicates} on each imputed design (which must be replicate-weight designs). } \value{ If \code{return.replicates=FALSE}, the weighted statistic, with the variance matrix as the \code{"var"} attribute. If \code{return.replicates=TRUE}, a list with elements \code{theta} for the usual return value and \code{replicates} for the replicates. } \seealso{ \code{\link{svrepdesign}}, \code{\link{as.svrepdesign}}, \code{\link{svrVar}}} \examples{ data(scd) repweights<-2*cbind(c(1,0,1,0,1,0), c(1,0,0,1,0,1), c(0,1,1,0,0,1), c(0,1,0,1,1,0)) scdrep<-svrepdesign(data=scd, type="BRR", repweights=repweights) a<-svyratio(~alive, ~arrests, design=scdrep) print(a$ratio) print(a$var) withReplicates(scdrep, quote(sum(.weights*alive)/sum(.weights*arrests))) withReplicates(scdrep, function(w,data) sum(w*data$alive)/sum(w*data$arrests)) data(api) dclus1<-svydesign(id=~dnum, weights=~pw, data=apiclus1, fpc=~fpc) rclus1<-as.svrepdesign(dclus1) varmat<-svyvar(~api00+api99+ell+meals+hsg+mobility,rclus1,return.replicates=TRUE) withReplicates(varmat, quote( factanal(covmat=.replicate, factors=2)$unique) ) data(nhanes) nhanesdesign <- svydesign(id=~SDMVPSU, strata=~SDMVSTRA, weights=~WTMEC2YR, nest=TRUE,data=nhanes) logistic <- svyglm(HI_CHOL~race+agecat+RIAGENDR, design=as.svrepdesign(nhanesdesign), family=quasibinomial, return.replicates=TRUE) fitted<-predict(logistic, return.replicates=TRUE, type="response") sensitivity<-function(pred,actual) mean(pred>0.1 & actual)/mean(actual) withReplicates(fitted, sensitivity, actual=logistic$y) \dontrun{ library(quantreg) data(api) ## one-stage cluster sample dclus1<-svydesign(id=~dnum, weights=~pw, data=apiclus1, fpc=~fpc) ## convert to bootstrap bclus1<-as.svrepdesign(dclus1,type="bootstrap", replicates=100) ## median regression withReplicates(bclus1, quote(coef(rq(api00~api99, tau=0.5, weights=.weights)))) } ## pearson correlation dstrat <- svydesign(id=~1,strata=~stype, weights=~pw, data=apistrat, fpc=~fpc) bstrat<- as.svrepdesign(dstrat,type="subbootstrap") v <- svyvar(~api00+api99, bstrat, return.replicates=TRUE) vcor<-cov2cor(as.matrix(v))[2,1] vreps<-v$replicates correps<-apply(vreps,1, function(v) v[2]/sqrt(v[1]*v[4])) vcov(bstrat,correps, centre=vcor) } \keyword{survey}% at least one, from doc/KEYWORDS survey/man/svynls.Rd0000644000176200001440000000374614076371104014224 0ustar liggesusers\name{svynls} \alias{svynls} %- Also NEED an '\alias' for EACH other topic documented here. \title{ Probability-weighted nonlinear least squares } \description{ Fits a nonlinear model by probability-weighted least squares. Uses \code{nls} to do the fitting, but estimates design-based standard errors with either linearisation or replicate weights. See \code{\link{nls}} for documentation of model specification and fitting. } \usage{ svynls(formula, design, start, weights=NULL, ...) } %- maybe also 'usage' for other objects documented here. \arguments{ \item{formula}{ Nonlinear model specified as a formula; see \code{\link{nls}} } \item{design}{ Survey design object } \item{start}{starting values, passed to \code{\link{nls}}} \item{weights}{ Non-sampling weights, eg precision weights to give more efficient estimation in the presence of heteroscedasticity. } \item{\dots}{ Other arguments to \code{nls} (especially, \code{start}). Also supports \code{return.replicates} for replicate-weight designs and \code{influence} for other designs. } } \value{ Object of class \code{svynls}. The fitted \code{nls} object is included as the \code{fit} element. } \seealso{ \code{\link{svymle}} for maximum likelihood with linear predictors on one or more parameters } \examples{ set.seed(2020-4-3) x<-rep(seq(0,50,1),10) y<-((runif(1,10,20)*x)/(runif(1,0,10)+x))+rnorm(510,0,1) pop_model<-nls(y~a*x/(b+x), start=c(a=15,b=5)) df<-data.frame(x=x,y=y) df$p<-ifelse((y-fitted(pop_model))*(x-mean(x))>0, .4,.1) df$strata<-ifelse(df$p==.4,"a","b") in_sample<-stratsample(df$strata, round(table(df$strat)*c(0.4,0.1))) sdf<-df[in_sample,] des<-svydesign(id=~1, strata=~strata, prob=~p, data=sdf) pop_model (biased_sample<-nls(y~a*x/(b+x),data=sdf, start=c(a=15,b=5))) (corrected <- svynls(y~a*x/(b+x), design=des, start=c(a=15,b=5))) } % Add one or more standard keywords, see file 'KEYWORDS' in the % R documentation directory. \keyword{survey }% use one of RShowDoc("KEYWORDS") survey/man/xdesign.Rd0000644000176200001440000000666614166647050014341 0ustar liggesusers\name{xdesign} \alias{xdesign} %- Also NEED an '\alias' for EACH other topic documented here. \title{ Crossed effects and other sparse correlations } \description{ Defines a design object with multiple dimensions of correlation: observations that share any of the \code{id} variables are correlated, or you can supply an adjacency matrix or Matrix to specify which are correlated. Supports crossed designs (eg multiple raters of multiple objects) and non-nested observational correlation (eg observations sharing primary school or secondary school). Has methods for \code{svymean}, \code{svytotal}, \code{svyglm} (so far). } \usage{ xdesign(id = NULL, strata = NULL, weights = NULL, data, fpc = NULL, adjacency = NULL, overlap = c("unbiased", "positive"), allow.non.binary = FALSE) } %- maybe also 'usage' for other objects documented here. \arguments{ \item{id}{ list of formulas specifying cluster identifiers for each clustering dimension (or \code{NULL}) } \item{strata}{ Not implemented } \item{weights}{ model formula specifying (sampling) weights } \item{data}{ data frame containing all the variables } \item{fpc}{ Not implemented } \item{adjacency}{ Adjacency matrix or Matrix indicating which pairs of observations are correlated } \item{overlap}{ See details below } \item{allow.non.binary}{ If \code{FALSE} check that \code{adjacency} is a binary 0/1 or \code{TRUE}/\code{FALSE} matrix or Matrix. } } \details{ Subsetting for these objects actually drops observations; it is not equivalent to just setting weights to zero as for survey designs. So, for example, a subset of a balanced design will not be a balanced design. The \code{overlap} option controls double-counting of some variance terms. Suppose there are two clustering dimensions, \code{~a} and \code{~b}. If we compute variance matrices clustered on \code{a} and clustered on \code{b} and add them, observations that share both \code{a} and \code{b} will be counted twice, giving a positively biased estimator. We can subtract off a variance matrix clustered on combinations of \code{a} and \code{b} to give an unbiased variance estimator. However, the unbiased estimator is not guaranteed to be positive definite. In the references, Miglioretti and Heagerty use the \code{overlap="positive"} estimator and Cameron et al use the \code{overlap="unbiased"} estimator. } \value{ An object of class \code{xdesign} } \references{ Miglioretti D, Heagerty PJ (2007) Marginal modeling of nonnested multilevel data using standard software. Am J Epidemiol 165(4):453-63 Cameron, A. C., Gelbach, J. B., & Miller, D. L. (2011). Robust Inference With Multiway Clustering. Journal of Business & Economic Statistics, 29(2), 238-249. \url{https://notstatschat.rbind.io/2021/09/18/crossed-clustering-and-parallel-invention/} } \seealso{\code{\link{salamander}}} %% ~Make other sections like Warning with \section{Warning }{....} ~ \examples{ ## With one clustering dimension, is close to the with-replacement ## survey estimator, but not identical unless clusters are equal size data(api) dclus1r<-svydesign(id=~dnum, weights=~pw, data=apiclus1) xclus1<-xdesign(id=list(~dnum), weights=~pw, data=apiclus1) xclus1 svymean(~enroll,dclus1r) svymean(~enroll,xclus1) data(salamander) xsalamander<-xdesign(id=list(~Male, ~Female), data=salamander, overlap="unbiased") xsalamander degf(xsalamander) }survey/man/mu284.Rd0000644000176200001440000000170613225255236013541 0ustar liggesusers\name{mu284} \alias{mu284} \docType{data} \title{Two-stage sample from MU284} \description{ The MU284 population comes from Sarndal et al, and the complete data are available from Statlib. These data are a two-stage sample from the population, analyzed on page 143 of the book. } \usage{data(mu284)} \format{ A data frame with 15 observations on the following 5 variables. \describe{ \item{\code{id1}}{identifier for PSU} \item{\code{n1}}{number of PSUs in population} \item{\code{id2}}{identifier for second-stage unit} \item{\code{y1}}{variable to be analysed} \item{\code{n2}}{number of second-stage units in this PSU} } } \source{ Carl Erik Sarndal, Bengt Swensson, Jan Wretman. (1991) "Model Assisted Survey Sampling" Springer. (downloaded from StatLib, which is no longer active) } \examples{ data(mu284) (dmu284<-svydesign(id=~id1+id2,fpc=~n1+n2, data=mu284)) (ytotal<-svytotal(~y1, dmu284)) vcov(ytotal) } \keyword{datasets} survey/man/svyby.Rd0000755000176200001440000002172514360123103014030 0ustar liggesusers\name{svyby} \alias{svyby} \alias{svybys} \alias{svyby.default} \alias{SE.svyby} \alias{deff.svyby} \alias{coef.svyby} \alias{confint.svyby} \alias{unwtd.count} \alias{svyby.survey.design2} %- Also NEED an '\alias' for EACH other topic documented here. \title{Survey statistics on subsets} \description{ Compute survey statistics on subsets of a survey defined by factors. } \usage{ svyby(formula, by ,design,...) \method{svyby}{default}(formula, by, design, FUN, ..., deff=FALSE,keep.var = TRUE, keep.names = TRUE,verbose=FALSE, vartype=c("se","ci","ci","cv","cvpct","var"), drop.empty.groups=TRUE, covmat=FALSE, return.replicates=FALSE, na.rm.by=FALSE, na.rm.all=FALSE, stringsAsFactors=TRUE, multicore=getOption("survey.multicore")) \method{svyby}{survey.design2}(formula, by, design, FUN, ..., deff=FALSE,keep.var = TRUE, keep.names = TRUE,verbose=FALSE, vartype=c("se","ci","ci","cv","cvpct","var"), drop.empty.groups=TRUE, covmat=FALSE, influence=covmat, na.rm.by=FALSE, na.rm.all=FALSE, stringsAsFactors=TRUE, multicore=getOption("survey.multicore")) \method{SE}{svyby}(object,...) \method{deff}{svyby}(object,...) \method{coef}{svyby}(object,...) \method{confint}{svyby}(object, parm, level = 0.95,df =Inf,...) unwtd.count(x, design, ...) svybys(formula, bys, design, FUN, ...) } %- maybe also 'usage' for other objects documented here. \arguments{ \item{formula,x}{A formula specifying the variables to pass to \code{FUN} (or a matrix, data frame, or vector)} \item{by}{A formula specifying factors that define subsets, or a list of factors.} \item{design}{A \code{svydesign} or \code{svrepdesign} object} \item{FUN}{A function taking a formula and survey design object as its first two arguments.} \item{\dots}{Other arguments to \code{FUN}. NOTE: if any of the names of these are partial matches to \code{formula},\code{by}, or \code{design}, you must specify the \code{formula},\code{by}, or \code{design} argument by name, not just by position. } \item{deff}{Request a design effect from \code{FUN}} \item{keep.var}{If \code{FUN} returns a \code{svystat} object, extract standard errors from it} \item{keep.names}{Define row names based on the subsets} \item{verbose}{If \code{TRUE}, print a label for each subset as it is processed.} \item{vartype}{Report variability as one or more of standard error, confidence interval, coefficient of variation, percent coefficient of variation, or variance} \item{drop.empty.groups}{If \code{FALSE}, report \code{NA} for empty groups, if \code{TRUE} drop them from the output} \item{na.rm.by}{If true, omit groups defined by \code{NA} values of the \code{by} variables}. \item{na.rm.all}{If true, check for groups with no non-missing observations for variables defined by \code{formula} and treat these groups as empty. Doesn't make much sense without \code{na.rm=TRUE}} \item{covmat}{If \code{TRUE}, compute covariances between estimates for different subsets. Allows \code{\link{svycontrast}} to be used on output. Requires that \code{FUN} supports either \code{return.replicates=TRUE} or \code{influence=TRUE}} \item{return.replicates}{Only for replicate-weight designs. If \code{TRUE}, return all the replicates as the "replicates" attribute of the result} \item{influence}{Return the influence functions of the result} \item{multicore}{Use \code{multicore} package to distribute subsets over multiple processors?} \item{stringsAsFactors}{Convert any string variables in \code{formula} to factors before calling \code{FUN}, so that the factor levels will be the same in all groups (See Note below). Potentially slow.} \item{parm}{a specification of which parameters are to be given confidence intervals, either a vector of numbers or a vector of names. If missing, all parameters are considered.} \item{level}{the confidence level required.} \item{df}{degrees of freedom for t-distribution in confidence interval, use \code{degf(design)} for number of PSUs minus number of strata} \item{object}{An object of class \code{"svyby"}} \item{bys}{one-sided formula with each term specifying a grouping (rather than being combined to give a grouping } } \value{ An object of class \code{"svyby"}: a data frame showing the factors and the results of \code{FUN}. For \code{unwtd.count}, the unweighted number of non-missing observations in the data matrix specified by \code{x} for the design. } \details{ The variance type "ci" asks for confidence intervals, which are produced by \code{confint}. In some cases additional options to \code{FUN} will be needed to produce confidence intervals, for example, \code{svyquantile} needs \code{ci=TRUE} or \code{keep.var=FALSE}. \code{unwtd.count} is designed to be passed to \code{svyby} to report the number of non-missing observations in each subset. Observations with exactly zero weight will also be counted as missing, since that's how subsets are implemented for some designs. Parallel processing with \code{multicore=TRUE} is useful only for fairly large problems and on computers with sufficient memory. The \code{multicore} package is incompatible with some GUIs, although the Mac Aqua GUI appears to be safe. The variant \code{svybys} creates a separate table for each term in \code{bys} rather than creating a joint table. } \note{The function works by making a lot of calls of the form \code{FUN(formula, subset(design, by==i))}, where \code{formula} is re-evaluated in each subset, so it is unwise to use data-dependent terms in \code{formula}. In particular, \code{svyby(~factor(a), ~b, design=d, svymean)}, will create factor variables whose levels are only those values of \code{a} present in each subset. If \code{a} is a character variable then \code{svyby(~a, ~b, design=d, svymean)} creates factor variables implicitly and so has the same problem. Either use \code{\link{update.survey.design}} to add variables to the design object instead or specify the levels explicitly in the call to \code{factor}. The \code{stringsAsFactors=TRUE} option converts all character variables to factors, which can be slow, set it to \code{FALSE} if you have predefined factors where necessary. } \note{ Asking for a design effect (\code{deff=TRUE}) from a function that does not produce one will cause an error or incorrect formatting of the output. The same will occur with \code{keep.var=TRUE} if the function does not compute a standard error. } \seealso{\code{\link{svytable}} and \code{\link{ftable.svystat}} for contingency tables, \code{\link{ftable.svyby}} for pretty-printing of \code{svyby} } \examples{ data(api) dclus1<-svydesign(id=~dnum, weights=~pw, data=apiclus1, fpc=~fpc) svyby(~api99, ~stype, dclus1, svymean) svyby(~api99, ~stype, dclus1, svyquantile, quantiles=0.5,ci=TRUE,vartype="ci") ## without ci=TRUE svyquantile does not compute standard errors svyby(~api99, ~stype, dclus1, svyquantile, quantiles=0.5, keep.var=FALSE) svyby(~api99, list(school.type=apiclus1$stype), dclus1, svymean) svyby(~api99+api00, ~stype, dclus1, svymean, deff=TRUE,vartype="ci") svyby(~api99+api00, ~stype+sch.wide, dclus1, svymean, keep.var=FALSE) ## report raw number of observations svyby(~api99+api00, ~stype+sch.wide, dclus1, unwtd.count, keep.var=FALSE) rclus1<-as.svrepdesign(dclus1) svyby(~api99, ~stype, rclus1, svymean) svyby(~api99, ~stype, rclus1, svyquantile, quantiles=0.5) svyby(~api99, list(school.type=apiclus1$stype), rclus1, svymean, vartype="cv") svyby(~enroll,~stype, rclus1,svytotal, deff=TRUE) svyby(~api99+api00, ~stype+sch.wide, rclus1, svymean, keep.var=FALSE) ##report raw number of observations svyby(~api99+api00, ~stype+sch.wide, rclus1, unwtd.count, keep.var=FALSE) ## comparing subgroups using covmat=TRUE mns<-svyby(~api99, ~stype, rclus1, svymean,covmat=TRUE) vcov(mns) svycontrast(mns, c(E = 1, M = -1)) str(svyby(~api99, ~stype, rclus1, svymean,return.replicates=TRUE)) tots<-svyby(~enroll, ~stype, dclus1, svytotal,covmat=TRUE) vcov(tots) svycontrast(tots, quote(E/H)) ## comparing subgroups uses the delta method unless replicates are present meanlogs<-svyby(~log(enroll),~stype,svymean, design=rclus1,covmat=TRUE) svycontrast(meanlogs, quote(exp(E-H))) meanlogs<-svyby(~log(enroll),~stype,svymean, design=rclus1,covmat=TRUE,return.replicates=TRUE) svycontrast(meanlogs, quote(exp(E-H))) ## extractor functions (a<-svyby(~enroll, ~stype, rclus1, svytotal, deff=TRUE, verbose=TRUE, vartype=c("se","cv","cvpct","var"))) deff(a) SE(a) cv(a) coef(a) confint(a, df=degf(rclus1)) ## ratio estimates svyby(~api.stu, by=~stype, denominator=~enroll, design=dclus1, svyratio) ratios<-svyby(~api.stu, by=~stype, denominator=~enroll, design=dclus1, svyratio,covmat=TRUE) vcov(ratios) ## empty groups svyby(~api00,~comp.imp+sch.wide,design=dclus1,svymean) svyby(~api00,~comp.imp+sch.wide,design=dclus1,svymean,drop.empty.groups=FALSE) ## Multiple tables svybys(~api00,~comp.imp+sch.wide,design=dclus1,svymean) } \keyword{survey}% at least one, from doc/KEYWORDS \keyword{manip}% __ONLY ONE__ keyword per line survey/man/svypredmeans.Rd0000644000176200001440000000577013743414240015404 0ustar liggesusers\name{svypredmeans} \alias{svypredmeans} %- Also NEED an '\alias' for EACH other topic documented here. \title{ Predictive marginal means } \description{ Predictive marginal means for a generalised linear model, using the method of Korn and Graubard (1999) and matching the results of SUDAAN. The predictive marginal mean for one level of a factor is the probability-weighted average of the fitted values for the model on new data where all the observations are set to that level of the factor but have whatever values of adjustment variables they really have. } \usage{ svypredmeans(adjustmodel, groupfactor, predictat=NULL) } %- maybe also 'usage' for other objects documented here. \arguments{ \item{adjustmodel}{ A generalised linear model fit by \code{\link{svyglm}} with the adjustment variable but without the factor for which predictive means are wanted } \item{groupfactor}{ A one-sided formula specifying the factor for which predictive means are wanted. Can use, eg, \code{~interaction(race,sex)} for combining variables. This does not have to be a factor, but it will be modelled linearly if it isn't} \item{predictat}{A vector of the values of \code{groupfactor} where you want predictions. If \code{groupfactor} is a factor, these must be values in the data, but if it is numeric you can interpolate/extrapolate} } \value{ An object of class \code{svystat} with the predictive marginal means and their covariance matrix. } \references{ Graubard B, Korn E (1999) "Predictive Margins with Survey Data" Biometrics 55:652-659 Bieler, Brown, Williams, & Brogan (2010) "Estimating Model-Adjusted Risks, Risk Differences, and Risk Ratios From Complex Survey Data" Am J Epi DOI: 10.1093/aje/kwp440} \note{ It is possible to supply an adjustment model with only an intercept, but the results are then the same as \code{\link{svymean}} It makes no sense to have a variable in the adjustment model that is part of the grouping factor, and will give an error message or \code{NA}. } %% ~Make other sections like Warning with \section{Warning }{....} ~ \seealso{ \code{\link{svyglm}} Worked example using National Health Interview Survey data: \url{https://gist.github.com/tslumley/2e74cd0ac12a671d2724} } \examples{ data(nhanes) nhanes_design <- svydesign(id=~SDMVPSU, strata=~SDMVSTRA, weights=~WTMEC2YR, nest=TRUE,data=nhanes) agesexmodel<-svyglm(HI_CHOL~agecat+RIAGENDR, design=nhanes_design,family=quasibinomial) ## high cholesterol by race/ethnicity, adjusted for demographic differences means<-svypredmeans(agesexmodel, ~factor(race)) means ## relative risks compared to non-Hispanic white svycontrast(means,quote(`1`/`2`)) svycontrast(means,quote(`3`/`2`)) data(api) dstrat<-svydesign(id=~1,strata=~stype, weights=~pw, data=apistrat, fpc=~fpc) demog_model <- svyglm(api00~mobility+ell+hsg+meals, design=dstrat) svypredmeans(demog_model,~enroll, predictat=c(100,300,1000,3000)) } % Add one or more standard keywords, see file 'KEYWORDS' in the % R documentation directory. \keyword{survey} \keyword{regression}% __ONLY ONE__ keyword per line survey/man/fpc.Rd0000755000176200001440000000306014424031636013426 0ustar liggesusers\name{fpc} \alias{fpc} \non_function{} \title{Small survey example} \usage{data(fpc)} \description{ The \code{fpc} data frame has 8 rows and 6 columns. It is artificial data to illustrate survey sampling estimators. } \format{ This data frame contains the following columns: \describe{ \item{stratid}{Stratum ids} \item{psuid}{Sampling unit ids} \item{weight}{Sampling weights} \item{nh}{number sampled per stratum} \item{Nh}{population size per stratum} \item{x}{data} } } \source{ \verb{https://www.stata-press.com/data/r7/fpc.dta} } \examples{ data(fpc) fpc withoutfpc<-svydesign(weights=~weight, ids=~psuid, strata=~stratid, variables=~x, data=fpc, nest=TRUE) withoutfpc svymean(~x, withoutfpc) withfpc<-svydesign(weights=~weight, ids=~psuid, strata=~stratid, fpc=~Nh, variables=~x, data=fpc, nest=TRUE) withfpc svymean(~x, withfpc) ## Other equivalent forms withfpc<-svydesign(prob=~I(1/weight), ids=~psuid, strata=~stratid, fpc=~Nh, variables=~x, data=fpc, nest=TRUE) svymean(~x, withfpc) withfpc<-svydesign(weights=~weight, ids=~psuid, strata=~stratid, fpc=~I(nh/Nh), variables=~x, data=fpc, nest=TRUE) svymean(~x, withfpc) withfpc<-svydesign(weights=~weight, ids=~interaction(stratid,psuid), strata=~stratid, fpc=~I(nh/Nh), variables=~x, data=fpc) svymean(~x, withfpc) withfpc<-svydesign(ids=~psuid, strata=~stratid, fpc=~Nh, variables=~x,data=fpc,nest=TRUE) svymean(~x, withfpc) withfpc<-svydesign(ids=~psuid, strata=~stratid, fpc=~I(nh/Nh), variables=~x, data=fpc, nest=TRUE) svymean(~x, withfpc) } \keyword{datasets} survey/man/surveysummary.Rd0000755000176200001440000002113414233634027015634 0ustar liggesusers\name{surveysummary} \alias{svymean} \alias{svymean.survey.design} \alias{svymean.survey.design2} \alias{svymean.svyrep.design} \alias{svymean.twophase} \alias{svytotal} \alias{svytotal.twophase} \alias{svytotal.survey.design} \alias{svytotal.survey.design2} \alias{svytotal.svyrep.design} \alias{svyvar} \alias{svyvar.survey.design} \alias{svyvar.svyrep.design} \alias{coef.svystat} \alias{vcov.svystat} \alias{coef.svrepstat} \alias{vcov.svrepstat} \alias{cv.svyratio} \alias{cv.svrepratio} \alias{cv.svrepstat} \alias{cv.svystat} \alias{cv.default} \alias{cv} \alias{deff} \alias{deff.default} \alias{confint.svystat} \alias{confint.svrepstat} \alias{make.formula} %- Also NEED an `\alias' for EACH other topic documented here. \title{Summary statistics for sample surveys} \description{ Compute means, variances, ratios and totals for data from complex surveys. } \usage{ \method{svymean}{survey.design}(x, design, na.rm=FALSE,deff=FALSE,influence=FALSE,...) \method{svymean}{survey.design2}(x, design, na.rm=FALSE,deff=FALSE,influence=FALSE,...) \method{svymean}{twophase}(x, design, na.rm=FALSE,deff=FALSE,...) \method{svymean}{svyrep.design}(x, design, na.rm=FALSE, rho=NULL, return.replicates=FALSE, deff=FALSE,...) \method{svyvar}{survey.design}(x, design, na.rm=FALSE,...) \method{svyvar}{svyrep.design}(x, design, na.rm=FALSE, rho=NULL, return.replicates=FALSE,...,estimate.only=FALSE) \method{svytotal}{survey.design}(x, design, na.rm=FALSE,deff=FALSE,influence=FALSE,...) \method{svytotal}{survey.design2}(x, design, na.rm=FALSE,deff=FALSE,influence=FALSE,...) \method{svytotal}{twophase}(x, design, na.rm=FALSE,deff=FALSE,...) \method{svytotal}{svyrep.design}(x, design, na.rm=FALSE, rho=NULL, return.replicates=FALSE, deff=FALSE,...) \method{coef}{svystat}(object,...) \method{coef}{svrepstat}(object,...) \method{vcov}{svystat}(object,...) \method{vcov}{svrepstat}(object,...) \method{confint}{svystat}(object, parm, level = 0.95,df =Inf,...) \method{confint}{svrepstat}(object, parm, level = 0.95,df =Inf,...) cv(object,...) deff(object, quietly=FALSE,...) make.formula(names) } %- maybe also `usage' for other objects documented here. \arguments{ \item{x}{A formula, vector or matrix} \item{design}{\code{survey.design} or \code{svyrep.design} object} \item{na.rm}{Should cases with missing values be dropped?} \item{influence}{Should a matrix of influence functions be returned (primarily to support \code{\link{svyby}})} \item{rho}{parameter for Fay's variance estimator in a BRR design} \item{return.replicates}{Return the replicate means/totals?} \item{deff}{Return the design effect (see below)} \item{object}{The result of one of the other survey summary functions} \item{quietly}{Don't warn when there is no design effect computed} \item{estimate.only}{Don't compute standard errors (useful when \code{svyvar} is used to estimate the design effect)} \item{parm}{a specification of which parameters are to be given confidence intervals, either a vector of numbers or a vector of names. If missing, all parameters are considered.} \item{level}{the confidence level required.} \item{df}{degrees of freedom for t-distribution in confidence interval, use \code{degf(design)} for number of PSUs minus number of strata} \item{...}{additional arguments to methods,not currently used} \item{names}{vector of character strings} } \details{ These functions perform weighted estimation, with each observation being weighted by the inverse of its sampling probability. Except for the table functions, these also give precision estimates that incorporate the effects of stratification and clustering. Factor variables are converted to sets of indicator variables for each category in computing means and totals. Combining this with the \code{\link{interaction}} function, allows crosstabulations. See \code{\link{ftable.svystat}} for formatting the output. With \code{na.rm=TRUE}, all cases with missing data are removed. With \code{na.rm=FALSE} cases with missing data are not removed and so will produce missing results. When using replicate weights and \code{na.rm=FALSE} it may be useful to set \code{options(na.action="na.pass")}, otherwise all replicates with any missing results will be discarded. The \code{svytotal} and \code{svreptotal} functions estimate a population total. Use \code{predict} on \code{\link{svyratio}} and \code{\link{svyglm}}, to get ratio or regression estimates of totals. \code{svyvar} estimates the population variance. The object returned includes the full matrix of estimated population variances and covariances, but by default only the diagonal elements are printed. To display the whole matrix use \code{as.matrix(v)} or \code{print(v, covariance=TRUE)}. The design effect compares the variance of a mean or total to the variance from a study of the same size using simple random sampling without replacement. Note that the design effect will be incorrect if the weights have been rescaled so that they are not reciprocals of sampling probabilities. To obtain an estimate of the design effect comparing to simple random sampling with replacement, which does not have this requirement, use \code{deff="replace"}. This with-replacement design effect is the square of Kish's "deft". The design effect for a subset of a design conditions on the size of the subset. That is, it compares the variance of the estimate to the variance of an estimate based on a simple random sample of the same size as the subset, taken from the subpopulation. So, for example, under stratified random sampling the design effect in a subset consisting of a single stratum will be 1.0. The \code{cv} function computes the coefficient of variation of a statistic such as ratio, mean or total. The default method is for any object with methods for \code{\link{SE}} and \code{coef}. \code{make.formula} makes a formula from a vector of names. This is useful because formulas as the best way to specify variables to the survey functions. } \value{ Objects of class \code{"svystat"} or \code{"svrepstat"}, which are vectors with a \code{"var"} attribute giving the variance and a \code{"statistic"} attribute giving the name of the statistic. These objects have methods for \code{vcov}, \code{SE}, \code{coef}, \code{confint}, \code{svycontrast}. } \author{Thomas Lumley} \seealso{ \code{\link{svydesign}}, \code{\link{as.svrepdesign}}, \code{\link{svrepdesign}} for constructing design objects. \code{\link{degf}} to extract degrees of freedom from a design. \code{\link{svyquantile}} for quantiles \code{\link{ftable.svystat}} for more attractive tables \code{\link{svyciprop}} for more accurate confidence intervals for proportions near 0 or 1. \code{\link{svyttest}} for comparing two means. \code{\link{svycontrast}} for linear and nonlinear functions of estimates. } \examples{ data(api) ## one-stage cluster sample dclus1<-svydesign(id=~dnum, weights=~pw, data=apiclus1, fpc=~fpc) svymean(~api00, dclus1, deff=TRUE) svymean(~factor(stype),dclus1) svymean(~interaction(stype, comp.imp), dclus1) svyquantile(~api00, dclus1, c(.25,.5,.75)) svytotal(~enroll, dclus1, deff=TRUE) svyratio(~api.stu, ~enroll, dclus1) v<-svyvar(~api00+api99, dclus1) v print(v, cov=TRUE) as.matrix(v) # replicate weights - jackknife (this is slower) dstrat<-svydesign(id=~1,strata=~stype, weights=~pw, data=apistrat, fpc=~fpc) jkstrat<-as.svrepdesign(dstrat) svymean(~api00, jkstrat) svymean(~factor(stype),jkstrat) svyvar(~api00+api99,jkstrat) svyquantile(~api00, jkstrat, c(.25,.5,.75)) svytotal(~enroll, jkstrat) svyratio(~api.stu, ~enroll, jkstrat) # coefficients of variation cv(svytotal(~enroll,dstrat)) cv(svyratio(~api.stu, ~enroll, jkstrat)) # extracting information from the results coef(svytotal(~enroll,dstrat)) vcov(svymean(~api00+api99,jkstrat)) SE(svymean(~enroll, dstrat)) confint(svymean(~api00+api00, dclus1)) confint(svymean(~api00+api00, dclus1), df=degf(dclus1)) # Design effect svymean(~api00, dstrat, deff=TRUE) svymean(~api00, dstrat, deff="replace") svymean(~api00, jkstrat, deff=TRUE) svymean(~api00, jkstrat, deff="replace") (a<-svytotal(~enroll, dclus1, deff=TRUE)) deff(a) ## weights that are *already* calibrated to population size sum(weights(dclus1)) nrow(apipop) cdclus1<- svydesign(id=~dnum, weights=~pw, data=apiclus1, fpc=~fpc,calibrate.formula=~1) SE(svymean(~enroll, dclus1)) ## not equal to SE(mean) SE(svytotal(~enroll, dclus1))/nrow(apipop) ## equal to SE(mean) SE(svytotal(~enroll, cdclus1))/nrow(apipop) } \keyword{univar}% at least one, from doc/KEYWORDS \keyword{survey}% __ONLY ONE__ keyword per line survey/man/svysurvreg.Rd0000644000176200001440000000352113101467340015110 0ustar liggesusers\name{svysurvreg} \alias{svysurvreg} \alias{svysurvreg.survey.design} %- Also NEED an '\alias' for EACH other topic documented here. \title{ Fit accelerated failure models to survey data } \description{ This function calls \code{survreg} from the 'survival' package to fit accelerated failure (accelerated life) models to complex survey data, and then computes correct standard errors by linearisation. It has the same arguments as \code{survreg}, except that the second argument is \code{design} rather than \code{data}. } \usage{ \method{svysurvreg}{survey.design}(formula, design, weights=NULL, subset=NULL, ...) } %- maybe also 'usage' for other objects documented here. \arguments{ \item{formula}{ Model formula } \item{design}{ Survey design object, including two-phase designs } \item{weights}{ Additional weights to multiply by the sampling weights. No, I don't know why you'd want to do that. } \item{subset}{ subset to use in fitting (if needed) } \item{\dots}{ Other arguments of \code{survreg} } } \value{ Object of class \code{svysurvreg}, with the same structure as a \code{survreg} object but with \code{NA} for the loglikelihood. } \note{ The \code{residuals} method is identical to that for \code{survreg} objects except the \code{weighted} option defaults to \code{TRUE} } \examples{ data(pbc, package="survival") pbc$randomized <- with(pbc, !is.na(trt) & trt>0) biasmodel<-glm(randomized~age*edema,data=pbc) pbc$randprob<-fitted(biasmodel) dpbc<-svydesign(id=~1, prob=~randprob, strata=~edema, data=subset(pbc,randomized)) model <- svysurvreg(Surv(time, status>0)~bili+protime+albumin, design=dpbc, dist="weibull") summary(model) } % Add one or more standard keywords, see file 'KEYWORDS' in the % R documentation directory. \keyword{survey}% use one of RShowDoc("KEYWORDS") \keyword{survival}% __ONLY ONE__ keyword per line survey/man/svrVar.Rd0000755000176200001440000000246612372225517014155 0ustar liggesusers\name{svrVar} \alias{svrVar} %- Also NEED an `\alias' for EACH other topic documented here. \title{Compute variance from replicates } \description{ Compute an appropriately scaled empirical variance estimate from replicates. The \code{mse} argument specifies whether the sums of squares should be centered at the point estimate (\code{mse=TRUE}) or the mean of the replicates. It is usually taken from the \code{mse} component of the design object. } \usage{ svrVar(thetas, scale, rscales, na.action=getOption("na.action"), mse=getOption("survey.replicates.mse"),coef) } %- maybe also `usage' for other objects documented here. \arguments{ \item{thetas}{matrix whose rows are replicates (or a vector of replicates)} \item{scale}{Overall scaling factor} \item{rscales}{Scaling factor for each squared deviation } \item{na.action}{How to handle replicates where the statistic could not be estimated} \item{mse}{if \code{TRUE}, center at the point estimated, if \code{FALSE} center at the mean of the replicates} \item{coef}{The point estimate, required only if \code{mse==TRUE}} } \value{ covariance matrix. } \seealso{\code{\link{svrepdesign}}, \code{\link{as.svrepdesign}}, \code{\link{brrweights}}, \code{\link{jk1weights}}, \code{\link{jknweights}}} \keyword{survey}% at least one, from doc/KEYWORDS survey/man/estweights.Rd0000644000176200001440000000716114412407502015043 0ustar liggesusers\name{estweights} \alias{estWeights} \alias{estWeights.twophase} \alias{estWeights.data.frame} %- Also NEED an '\alias' for EACH other topic documented here. \title{Estimated weights for missing data} \description{ Creates or adjusts a two-phase survey design object using a logistic regression model for second-phase sampling probability. This function should be particularly useful in reweighting to account for missing data. } \usage{ estWeights(data,formula,...) \method{estWeights}{twophase}(data,formula=NULL, working.model=NULL,...) \method{estWeights}{data.frame}(data,formula=NULL, working.model=NULL, subset=NULL, strata=NULL,...) } %- maybe also 'usage' for other objects documented here. \arguments{ \item{data}{twophase design object or data frame} \item{formula}{Predictors for estimating weights} \item{working.model}{Model fitted to complete (ie phase 1) data} \item{subset}{Subset of data frame with complete data (ie phase 1). If \code{NULL} use all complete cases} \item{strata}{Stratification (if any) of phase 2 sampling} \item{\dots}{for future expansion} } \details{ If \code{data} is a data frame, \code{estWeights} first creates a two-phase design object. The \code{strata} argument is used only to compute finite population corrections, the same variables must be included in \code{formula} to compute stratified sampling probabilities. With a two-phase design object, \code{estWeights} estimates the sampling probabilities using logistic regression as described by Robins et al (1994) and adds information to the object to enable correct sandwich standard errors to be computed. An alternative to specifying \code{formula} is to specify \code{working.model}. The estimating functions from this model will be used as predictors of the sampling probabilities, which will increase efficiency to the extent that the working model and the model of interest estimate the same parameters (Kulich & Lin 2004). The effect on a two-phase design object is very similar to \code{\link{calibrate}}, and is identical when \code{formula} specifies a saturated model. } \value{ A two-phase survey design object. } \references{ Breslow NE, Lumley T, Ballantyne CM, Chambless LE, Kulich M. (2009) Using the Whole Cohort in the Analysis of Case-Cohort Data. Am J Epidemiol. 2009 Jun 1;169(11):1398-405. Robins JM, Rotnitzky A, Zhao LP. (1994) Estimation of regression coefficients when some regressors are not always observed. Journal of the American Statistical Association, 89, 846-866. Kulich M, Lin DY (2004). Improving the Efficiency of Relative-Risk Estimation in Case-Cohort Studies. Journal of the American Statistical Association, Vol. 99, pp.832-844 Lumley T, Shaw PA, Dai JY (2011) "Connections between survey calibration estimators and semiparametric models for incomplete data" International Statistical Review. 79:200-220. (with discussion 79:221-232) } \seealso{ \code{\link{postStratify}}, \code{\link{calibrate}}, \code{\link{twophase}}} \examples{ data(airquality) ## ignoring missingness, using model-based standard error summary(lm(log(Ozone)~Temp+Wind, data=airquality)) ## Without covariates to predict missingness we get ## same point estimates, but different (sandwich) standard errors daq<-estWeights(airquality, formula=~1,subset=~I(!is.na(Ozone))) summary(svyglm(log(Ozone)~Temp+Wind,design=daq)) ## Reweighting based on weather, month d2aq<-estWeights(airquality, formula=~Temp+Wind+Month, subset=~I(!is.na(Ozone))) summary(svyglm(log(Ozone)~Temp+Wind,design=d2aq)) } \keyword{survey}% at least one, from doc/KEYWORDS \keyword{manip}% __ONLY ONE__ keyword per line survey/man/as.svydesign2.Rd0000755000176200001440000000202211757251704015360 0ustar liggesusers\name{as.svydesign2} \alias{as.svydesign2} \alias{.svycheck} %- Also NEED an '\alias' for EACH other topic documented here. \title{Update to the new survey design format} \description{ The structure of survey design objects changed in version 2.9, to allow standard errors based on multistage sampling. \code{as.svydesign} converts an object to the new structure and \code{.svycheck} warns if an object does not have the new structure. You can set \code{options(survey.want.obsolete=TRUE)} to suppress the warnings produced by \code{.svycheck} and \code{options(survey.ultimate.cluster=TRUE)} to always compute variances based on just the first stage of sampling. } \usage{ as.svydesign2(object) .svycheck(object) } %- maybe also 'usage' for other objects documented here. \arguments{ \item{object}{produced by \code{svydesign}} } \value{ Object of class \code{survey.design2} } \seealso{\code{\link{svydesign}}, \code{\link{svyrecvar}}} \keyword{survey}% at least one, from doc/KEYWORDS \keyword{manip}% __ONLY ONE__ keyword per line survey/man/open.DBIsvydesign.Rd0000644000176200001440000000252613542525537016163 0ustar liggesusers\name{open.DBIsvydesign} \alias{open.DBIsvydesign} \alias{close.DBIsvydesign} %- Also NEED an '\alias' for EACH other topic documented here. \title{Open and close DBI connections } \description{ A database-backed survey design object contains a connection to a database. This connection will be broken if the object is saved and reloaded, and the connection should ideally be closed with \code{close} before quitting R (although it doesn't matter for SQLite connections). The connection can be reopened with \code{open}. } \usage{ \method{open}{DBIsvydesign}(con, ...) \method{close}{DBIsvydesign}(con, ...) } %- maybe also 'usage' for other objects documented here. \arguments{ \item{con}{Object of class \code{DBIsvydesign} } \item{\dots}{Other options, to be passed to \code{dbConnect} or \code{dbDisconnect}.} } \value{ The same survey design object with the connection opened or closed. } \seealso{\code{\link{svydesign}} DBI package } \examples{ \dontrun{ library(RSQLite) dbclus1<-svydesign(id=~dnum, weights=~pw, fpc=~fpc, data="apiclus1",dbtype="SQLite", dbname=system.file("api.db",package="survey")) dbclus1 close(dbclus1) dbclus1 try(svymean(~api00, dbclus1)) dbclus1<-open(dbclus1) open(dbclus1) svymean(~api00, dbclus1) } } % Add one or more standard keywords, see file 'KEYWORDS' in the % R documentation directory. \keyword{survey} survey/man/svycoxph.Rd0000755000176200001440000001172314166647050014554 0ustar liggesusers\name{svycoxph} \alias{svycoxph} \alias{svycoxph.survey.design2} \alias{svycoxph.survey.design} \alias{svycoxph.svyrep.design} \alias{predict.svycoxph} %\alias{print.svycoxph} %\alias{model.frame.svycoxph} %\alias{summary.svycoxph} %\alias{anova.svycoxph} \alias{extractAIC.svycoxph} \alias{AIC.svycoxph} %\alias{survfit.svycoxph} %- Also NEED an `\alias' for EACH other topic documented here. \title{Survey-weighted Cox models.} \description{ Fit a proportional hazards model to data from a complex survey design. } \usage{ svycoxph(formula, design,subset=NULL, rescale=TRUE, ...) \method{predict}{svycoxph}(object, newdata, se=FALSE, type=c("lp", "risk", "terms","curve"),...) \method{AIC}{svycoxph}(object, ..., k = 2) } %- maybe also `usage' for other objects documented here. \arguments{ \item{formula}{Model formula. Any \code{cluster()} terms will be ignored.} \item{design}{ \code{survey.design} object. Must contain all variables in the formula} \item{subset}{Expression to select a subpopulation} \item{rescale}{Rescale weights to improve numerical stability} \item{object}{A \code{svycoxph} object} \item{newdata}{New data for prediction} \item{se}{Compute standard errors? This takes a lot of memory for \code{type="curve"}} \item{type}{"curve" does predicted survival curves. The other values are passed to \code{predict.coxph()}} \item{\dots}{For \code{AIC}, more models to compare the AIC of. For \code{svycoxph}, other arguments passed to \code{coxph}. } \item{k}{The penalty per parameter that would be used under independent sampling: AIC has \code{k=2}} } \details{ The main difference between \code{svycoxph} function and the \code{robust=TRUE} option to \code{\link{coxph}} in the survival package is that this function accounts for the reduction in variance from stratified sampling and the increase in variance from having only a small number of clusters. Note that \code{strata} terms in the model formula describe subsets that have a separate baseline hazard function and need not have anything to do with the stratification of the sampling. The \code{AIC} method uses the same approach as \code{\link{AIC.svyglm}}, though the relevance of the criterion this optimises is a bit less clear than for generalised linear models. The standard errors for predicted survival curves are available only by linearization, not by replicate weights (at the moment). Use \code{\link{withReplicates}} to get standard errors with replicate weights. Predicted survival curves are not available for stratified Cox models. The standard errors use the delta-method approach of Williams (1995) for the Nelson-Aalen estimator, modified to handle the Cox model following Tsiatis (1981). The standard errors agree closely with \code{survfit.coxph} for independent sampling when the model fits well, but are larger when the model fits poorly. I believe the standard errors are equivalent to those of Lin (2000), but I don't know of any implementation that would allow a check. } \value{ An object of class \code{svycoxph} for \code{svycoxph}, an object of class \code{svykm} or \code{svykmlist} for \code{predict(,type="curve")}. } \section{Warning}{ The standard error calculation for survival curves uses memory proportional to the sample size times the square of the number of events. } \author{Thomas Lumley} \references{Binder DA. (1992) Fitting Cox's proportional hazards models from survey data. Biometrika 79: 139-147 Lin D-Y (2000) On fitting Cox's proportional hazards model to survey data. Biometrika 87: 37-47 Tsiatis AA (1981) A Large Sample Study of Cox's Regression Model. Annals of Statistics 9(1) 93-108 Williams RL (1995) "Product-Limit Survival Functions with Correlated Survival Times" Lifetime Data Analysis 1: 171--186 } \seealso{ \code{\link{coxph}}, \code{\link{predict.coxph}} \code{\link{svykm}} for estimation of Kaplan-Meier survival curves and for methods that operate on survival curves. \code{\link{regTermTest}} for Wald and (Rao-Scott) likelihood ratio tests for one or more parameters. } \examples{ ## Somewhat unrealistic example of nonresponse bias. data(pbc, package="survival") pbc$randomized<-with(pbc, !is.na(trt) & trt>0) biasmodel<-glm(randomized~age*edema,data=pbc,family=binomial) pbc$randprob<-fitted(biasmodel) if (is.null(pbc$albumin)) pbc$albumin<-pbc$alb ##pre2.9.0 dpbc<-svydesign(id=~1, prob=~randprob, strata=~edema, data=subset(pbc,randomized)) rpbc<-as.svrepdesign(dpbc) (model<-svycoxph(Surv(time,status>0)~log(bili)+protime+albumin,design=dpbc)) svycoxph(Surv(time,status>0)~log(bili)+protime+albumin,design=rpbc) s<-predict(model,se=TRUE, type="curve", newdata=data.frame(bili=c(3,9), protime=c(10,10), albumin=c(3.5,3.5))) plot(s[[1]],ci=TRUE,col="sienna") lines(s[[2]], ci=TRUE,col="royalblue") quantile(s[[1]], ci=TRUE) confint(s[[2]], parm=365*(1:5)) } \keyword{regression}% at least one, from doc/KEYWORDS \keyword{survival}% at least one, from doc/KEYWORDS \keyword{survey}% at least one, from doc/KEYWORDS survey/man/api.Rd0000755000176200001440000001110514416101237013422 0ustar liggesusers\name{api} \alias{api} \alias{apipop} \alias{apiclus1} \alias{apiclus2} \alias{apistrat} \alias{apisrs} \docType{data} \title{Student performance in California schools} \description{ The Academic Performance Index is computed for all California schools based on standardised testing of students. The data sets contain information for all schools with at least 100 students and for various probability samples of the data. } \usage{ data(api) } \format{ The full population data in \code{apipop} are a data frame with 6194 observations on the following 37 variables. \describe{ \item{cds}{Unique identifier} \item{stype}{Elementary/Middle/High School} \item{name}{School name (15 characters)} \item{sname}{School name (40 characters)} \item{snum}{School number} \item{dname}{District name} \item{dnum}{District number} \item{cname}{County name} \item{cnum}{County number} \item{flag}{reason for missing data} \item{pcttest}{percentage of students tested} \item{api00}{API in 2000} \item{api99}{API in 1999} \item{target}{target for change in API} \item{growth}{Change in API} \item{sch.wide}{Met school-wide growth target?} \item{comp.imp}{Met Comparable Improvement target} \item{both}{Met both targets} \item{awards}{Eligible for awards program} \item{meals}{Percentage of students eligible for subsidized meals} \item{ell}{`English Language Learners' (percent)} \item{yr.rnd}{Year-round school} \item{mobility}{percentage of students for whom this is the first year at the school} \item{acs.k3}{average class size years K-3} \item{acs.46}{average class size years 4-6} \item{acs.core}{Number of core academic courses} \item{pct.resp}{percent where parental education level is known} \item{not.hsg}{percent parents not high-school graduates} \item{hsg}{percent parents who are high-school graduates} \item{some.col}{percent parents with some college} \item{col.grad}{percent parents with college degree} \item{grad.sch}{percent parents with postgraduate education} \item{avg.ed}{average parental education level} \item{full}{percent fully qualified teachers} \item{emer}{percent teachers with emergency qualifications} \item{enroll}{number of students enrolled} \item{api.stu}{number of students tested.} } The other data sets contain additional variables \code{pw} for sampling weights and \code{fpc} to compute finite population corrections to variance. } \details{ \code{apipop} is the entire population, \code{apisrs} is a simple random sample, \code{apiclus1} is a cluster sample of school districts, \code{apistrat} is a sample stratified by \code{stype}, and \code{apiclus2} is a two-stage cluster sample of schools within districts. The sampling weights in \code{apiclus1} are incorrect (the weight should be 757/15) but are as obtained from UCLA. } \source{ Data were obtained from the survey sampling help pages of UCLA Academic Technology Services; these pages are no longer on line. } \references{ The API program has been discontinued at the end of 2018, and the archive page at the California Department of Education is now gone. The Wikipedia article has links to past material at the Internet Archive. \url{https://en.wikipedia.org/wiki/Academic_Performance_Index_(California_public_schools)} } \examples{ library(survey) data(api) mean(apipop$api00) sum(apipop$enroll, na.rm=TRUE) #stratified sample dstrat<-svydesign(id=~1,strata=~stype, weights=~pw, data=apistrat, fpc=~fpc) summary(dstrat) svymean(~api00, dstrat) svytotal(~enroll, dstrat, na.rm=TRUE) # one-stage cluster sample dclus1<-svydesign(id=~dnum, weights=~pw, data=apiclus1, fpc=~fpc) summary(dclus1) svymean(~api00, dclus1) svytotal(~enroll, dclus1, na.rm=TRUE) # two-stage cluster sample dclus2<-svydesign(id=~dnum+snum, fpc=~fpc1+fpc2, data=apiclus2) summary(dclus2) svymean(~api00, dclus2) svytotal(~enroll, dclus2, na.rm=TRUE) # two-stage `with replacement' dclus2wr<-svydesign(id=~dnum+snum, weights=~pw, data=apiclus2) summary(dclus2wr) svymean(~api00, dclus2wr) svytotal(~enroll, dclus2wr, na.rm=TRUE) # convert to replicate weights rclus1<-as.svrepdesign(dclus1) summary(rclus1) svymean(~api00, rclus1) svytotal(~enroll, rclus1, na.rm=TRUE) # post-stratify on school type pop.types<-xtabs(~stype, data=apipop) rclus1p<-postStratify(rclus1, ~stype, pop.types) dclus1p<-postStratify(dclus1, ~stype, pop.types) summary(dclus1p) summary(rclus1p) svymean(~api00, dclus1p) svytotal(~enroll, dclus1p, na.rm=TRUE) svymean(~api00, rclus1p) svytotal(~enroll, rclus1p, na.rm=TRUE) } \keyword{datasets} survey/man/svycoplot.Rd0000644000176200001440000000372011457435611014724 0ustar liggesusers\name{svycoplot} \alias{svycoplot} %- Also NEED an '\alias' for EACH other topic documented here. \title{Conditioning plots of survey data } \description{ Draws conditioned scatterplots ('Trellis' plots) of survey data using hexagonal binning or transparency. } \usage{ svycoplot(formula, design, style = c("hexbin", "transparent"), basecol = "black", alpha = c(0, 0.8),hexscale=c("relative","absolute"), ...) } %- maybe also 'usage' for other objects documented here. \arguments{ \item{formula}{A graph formula suitable for \code{\link{xyplot}}} \item{design}{A survey design object } \item{style}{Hexagonal binning or transparent color?} \item{basecol}{The fully opaque 'base' color for creating transparent colors. This may also be a function; see \code{\link{svyplot}} for details} \item{alpha}{Minimum and maximum opacity } \item{hexscale}{Scale hexagons separate for each panel (relative) or across all panels (absolute)} \item{\dots}{Other arguments passed to \code{grid.hexagons} or \code{\link{xyplot}} } } \value{ An object of class \code{trellis} } \note{ As with all 'Trellis' graphs, this function creates an object but does not draw the graph. When used inside a function or non-interactively you need to \code{print()} the result to create the graph. } \seealso{\code{\link{svyplot}}} \examples{ data(api) dclus2<-svydesign(id=~dnum+snum, weights=~pw, data=apiclus2, fpc=~fpc1+fpc2) svycoplot(api00~api99|sch.wide*comp.imp, design=dclus2, style="hexbin") svycoplot(api00~api99|sch.wide*comp.imp, design=dclus2, style="hexbin", hexscale="absolute") svycoplot(api00~api99|sch.wide, design=dclus2, style="trans") svycoplot(api00~meals|stype,design=dclus2, style="transparent", basecol=function(d) c("darkred","purple","forestgreen")[as.numeric(d$stype)], alpha=c(0,1)) } % Add one or more standard keywords, see file 'KEYWORDS' in the % R documentation directory. \keyword{survey} \keyword{hplot}% __ONLY ONE__ keyword per line survey/man/svycdf.Rd0000644000176200001440000000355511457435611014166 0ustar liggesusers\name{svycdf} \alias{svycdf} \alias{print.svycdf} \alias{plot.svycdf} %- Also NEED an '\alias' for EACH other topic documented here. \title{Cumulative Distribution Function} \description{ Estimates the population cumulative distribution function for specified variables. In contrast to \code{\link{svyquantile}}, this does not do any interpolation: the result is a right-continuous step function. } \usage{ svycdf(formula, design, na.rm = TRUE,...) \method{print}{svycdf}(x,...) \method{plot}{svycdf}(x,xlab=NULL,...) } %- maybe also 'usage' for other objects documented here. \arguments{ \item{formula}{one-sided formula giving variables from the design object } \item{design}{survey design object } \item{na.rm}{remove missing data (case-wise deletion)?} \item{...}{other arguments to \code{\link{plot.stepfun}}} \item{x}{object of class \code{svycdf}} \item{xlab}{a vector of x-axis labels or \code{NULL} for the default labels} } \value{ An object of class \code{svycdf}, which is a list of step functions (of class \code{\link{stepfun}}) } \seealso{ \code{\link{svyquantile}}, \code{\link{svyhist}}, \code{\link{plot.stepfun}}} \examples{ data(api) dstrat <- svydesign(id = ~1, strata = ~stype, weights = ~pw, data = apistrat, fpc = ~fpc) cdf.est<-svycdf(~enroll+api00+api99, dstrat) cdf.est ## function cdf.est[[1]] ## evaluate the function cdf.est[[1]](800) cdf.est[[2]](800) ## compare to population and sample CDFs. opar<-par(mfrow=c(2,1)) cdf.pop<-ecdf(apipop$enroll) cdf.samp<-ecdf(apistrat$enroll) plot(cdf.pop,main="Population vs sample", xlab="Enrollment") lines(cdf.samp,col.points="red") plot(cdf.pop, main="Population vs estimate", xlab="Enrollment") lines(cdf.est[[1]],col.points="red") par(opar) } % Add one or more standard keywords, see file 'KEYWORDS' in the % R documentation directory. \keyword{survey} \keyword{hplot}% __ONLY ONE__ keyword per line survey/man/myco.Rd0000644000176200001440000000361214416101237013621 0ustar liggesusers\name{myco} \alias{myco} \docType{data} \title{ Association between leprosy and BCG vaccination } \description{ These data are in a paper by JNK Rao and colleagues, on score tests for complex survey data. External information (not further specified) suggests the functional form for the \code{Age} variable. } \usage{data("myco")} \format{ A data frame with 516 observations on the following 6 variables. \describe{ \item{\code{Age}}{Age in years at the midpoint of six age strata} \item{\code{Scar}}{Presence of a BCG vaccination scar} \item{\code{n}}{Sampled number of cases (and thus controls) in the age stratum} \item{\code{Ncontrol}}{Number of non-cases in the population} \item{\code{wt}}{Sampling weight} \item{\code{leprosy}}{case status 0/1} } } \details{ The data are a simulated stratified case-control study drawn from a population study conducted in a region of Malawi (Clayton and Hills, 1993, Table 18.1). The goal was to examine whether BCG vaccination against tuberculosis protects against leprosy (the causative agents are both species of _Mycobacterium_). Rao et al have a typographical error: the number of non-cases in the population in the 25-30 age stratum is given as 4981 but 5981 matches both the computational output and the data as given by Clayton and Hills. } \source{ JNK Rao, AJ Scott, and Skinner, C. (1998). QUASI-SCORE TESTS WITH SURVEY DATA. Statistica Sinica, 8(4), 1059-1070. Clayton, D., & Hills, M. (1993). Statistical Models in Epidemiology. OUP } \examples{ data(myco) dmyco<-svydesign(id=~1, strata=~interaction(Age,leprosy),weights=~wt,data=myco) m_full<-svyglm(leprosy~I((Age+7.5)^-2)+Scar, family=quasibinomial, design=dmyco) m_age<-svyglm(leprosy~I((Age+7.5)^-2), family=quasibinomial, design=dmyco) anova(m_full,m_age) ## unweighted model does not match m_full glm(leprosy~I((Age+7.5)^-2)+Scar, family=binomial, data=myco) } \keyword{datasets} survey/man/svykm.Rd0000644000176200001440000000774411457435612014046 0ustar liggesusers\name{svykm} \alias{svykm} \alias{plot.svykm} \alias{plot.svykmlist} \alias{lines.svykm} \alias{quantile.svykm} \alias{confint.svykm} %- Also NEED an '\alias' for EACH other topic documented here. \title{Estimate survival function. } \description{ Estimates the survival function using a weighted Kaplan-Meier estimator. } \usage{ svykm(formula, design,se=FALSE, ...) \method{plot}{svykm}(x,xlab="time",ylab="Proportion surviving", ylim=c(0,1),ci=NULL,lty=1,...) \method{lines}{svykm}(x,xlab="time",type="s",ci=FALSE,lty=1,...) \method{plot}{svykmlist}(x, pars=NULL, ci=FALSE,...) \method{quantile}{svykm}(x, probs=c(0.75,0.5,0.25),ci=FALSE,level=0.95,...) \method{confint}{svykm}(object,parm,level=0.95,...) } %- maybe also 'usage' for other objects documented here. \arguments{ \item{formula}{Two-sided formula. The response variable should be a right-censored \code{Surv} object} \item{design}{survey design object} \item{se}{Compute standard errors? This is slow for moderate to large data sets} \item{\dots}{in \code{plot} and \code{lines} methods, graphical parameters } \item{x}{a \code{svykm} or \code{svykmlist} object} \item{xlab,ylab,ylim,type}{as for \code{plot}} \item{lty}{Line type, see \code{\link{par}}} \item{ci}{Plot (or return, for\code{quantile}) the confidence interval} \item{pars}{A list of vectors of graphical parameters for the separate curves in a \code{svykmlist} object} \item{object}{A \code{svykm} object} \item{parm}{vector of times to report confidence intervals} \item{level}{confidence level} \item{probs}{survival probabilities for computing survival quantiles (note that these are the complement of the usual \code{\link{quantile}} input, so 0.9 means 90\% surviving, not 90\% dead)} } \value{ For \code{svykm}, an object of class \code{svykm} for a single curve or \code{svykmlist} for multiple curves. } \details{ When standard errors are computed, the survival curve is actually the Aalen (hazard-based) estimator rather than the Kaplan-Meier estimator. The standard error computations use memory proportional to the sample size times the square of the number of events. This can be a lot. In the case of equal-probability cluster sampling without replacement the computations are essentially the same as those of Williams (1995), and the same linearization strategy is used for other designs. Confidence intervals are computed on the log(survival) scale, following the default in \code{survival} package, which was based on simulations by Link(1984). Confidence intervals for quantiles use Woodruff's method: the interval is the intersection of the horizontal line at the specified quantile with the pointwise confidence band around the survival curve. } \references{ Link, C. L. (1984). Confidence intervals for the survival function using Cox's proportional hazards model with covariates. Biometrics 40, 601-610. Williams RL (1995) "Product-Limit Survival Functions with Correlated Survival Times" Lifetime Data Analysis 1: 171--186 Woodruff RS (1952) Confidence intervals for medians and other position measures. JASA 57, 622-627. } \seealso{\code{\link{predict.svycoxph}} for survival curves from a Cox model } \examples{ data(pbc, package="survival") pbc$randomized <- with(pbc, !is.na(trt) & trt>0) biasmodel<-glm(randomized~age*edema,data=pbc) pbc$randprob<-fitted(biasmodel) dpbc<-svydesign(id=~1, prob=~randprob, strata=~edema, data=subset(pbc,randomized)) s1<-svykm(Surv(time,status>0)~1, design=dpbc) s2<-svykm(Surv(time,status>0)~I(bili>6), design=dpbc) plot(s1) plot(s2) plot(s2, lwd=2, pars=list(lty=c(1,2),col=c("purple","forestgreen"))) quantile(s1, probs=c(0.9,0.75,0.5,0.25,0.1)) s3<-svykm(Surv(time,status>0)~I(bili>6), design=dpbc,se=TRUE) plot(s3[[2]],col="purple") confint(s3[[2]], parm=365*(1:5)) quantile(s3[[1]], ci=TRUE) } % Add one or more standard keywords, see file 'KEYWORDS' in the % R documentation directory. \keyword{survey} \keyword{survival}% __ONLY ONE__ keyword per line survey/man/make.calfun.Rd0000644000176200001440000000375513122060525015043 0ustar liggesusers\name{make.calfun} \alias{make.calfun} \alias{cal.linear} \alias{cal.raking} \alias{cal.logit} \alias{cal.sinh} %- Also NEED an '\alias' for EACH other topic documented here. \title{Calibration metrics} \description{ Create calibration metric for use in \code{\link{calibrate}}. The function \code{F} is the link function described in section 2 of Deville et al. To create a new calibration metric, specify \eqn{F-1}{F-1} and its derivative. The package provides \code{cal.linear}, \code{cal.raking}, \code{cal.logit}, which are standard, and \code{cal.sinh} from the \code{CALMAR2} macro, for which \code{F} is the derivative of the inverse hyperbolic sine. } \usage{ make.calfun(Fm1, dF, name) } %- maybe also 'usage' for other objects documented here. \arguments{ \item{Fm1}{Function \eqn{F-1}{F-1} taking a vector \code{u} and a vector of length 2, \code{bounds}.} \item{dF}{Derivative of \code{Fm1} wrt \code{u}: arguments \code{u} and \code{bounds} } \item{name}{Character string to use as name } } \value{ An object of class \code{"calfun"} } \references{ Deville J-C, Sarndal C-E, Sautory O (1993) Generalized Raking Procedures in Survey Sampling. JASA 88:1013-1020 Deville J-C, Sarndal C-E (1992) Calibration Estimators in Survey Sampling. JASA 87: 376-382 } \seealso{\code{\link{calibrate}} } \examples{ str(cal.linear) cal.linear$Fm1 cal.linear$dF hellinger <- make.calfun(Fm1=function(u, bounds) ((1-u/2)^-2)-1, dF= function(u, bounds) (1-u/2)^-3 , name="hellinger distance") hellinger data(api) dclus1<-svydesign(id=~dnum, weights=~pw, data=apiclus1, fpc=~fpc) svymean(~api00,calibrate(dclus1, ~api99, pop=c(6194, 3914069), calfun=hellinger)) svymean(~api00,calibrate(dclus1, ~api99, pop=c(6194, 3914069), calfun=cal.linear)) svymean(~api00,calibrate(dclus1, ~api99, pop=c(6194,3914069), calfun=cal.raking)) } % Add one or more standard keywords, see file 'KEYWORDS' in the % R documentation directory. \keyword{survey} survey/man/HR.Rd0000644000176200001440000000313114073672400013163 0ustar liggesusers\name{HR} \Rdversion{1.1} \alias{HR} \alias{ppsmat} \alias{ppscov} %- Also NEED an '\alias' for EACH other topic documented here. \title{Wrappers for specifying PPS designs} \description{ The Horvitz-Thompson estimator and the Hartley-Rao approximation require information in addition to the sampling probabilities for sampled individuals. These functions allow this information to be supplied. } \usage{ HR(psum=NULL, strata = NULL) ppsmat(jointprob, tolerance = 1e-04) ppscov(probcov, weighted=FALSE) } %- maybe also 'usage' for other objects documented here. \arguments{ \item{psum}{ The sum of squared sampling probabilities for the population, divided by the sample size, as a single number or as a vector for stratified sampling } \item{strata}{ Stratum labels, of the same length as \code{psum}, if \code{psum} is a vector } \item{jointprob}{Matrix of pairwise sampling probabilities for the sampled individuals} \item{tolerance}{Tolerance for deciding that the covariance of sampling indicators is zero} \item{probcov}{Covariance of the sampling indicators (often written 'Delta'), or weighted covariance if \code{weighted=TRUE}} \item{weighted}{If \code{TRUE}, the \code{probcov} argument is the covariance divided by pairwise sampling probabilities} } \value{ An object of class \code{HR},\code{ppsmat}, \code{ppsdelta}, or \code{ppsdcheck} suitable for supplying as the \code{pps} argument to \code{\link{svydesign}}. } \seealso{ \link{election} for examples of PPS designs } \examples{ HR(0.1) } % Add one or more standard keywords, see file 'KEYWORDS' in the % R documentation directory. \keyword{survey} survey/man/svygofchisq.Rd0000644000176200001440000000242313743702255015227 0ustar liggesusers\name{svygofchisq} \alias{svygofchisq} %- Also NEED an '\alias' for EACH other topic documented here. \title{ Test of fit to known probabilities } \description{ A Rao-Scott-type version of the chi-squared test for goodness of fit to prespecified proportions. The test statistic is the chi-squared statistic applied to the estimated population table, and the reference distribution is a Satterthwaite approximation: the test statistic divided by the estimated scale is compared to a chi-squared distribution with the estimated df. } \usage{ svygofchisq(formula, p, design, ...) } %- maybe also 'usage' for other objects documented here. \arguments{ \item{formula}{ Formula specifying a single factor variable } \item{p}{ Vector of probabilities for the categories of the factor, in the correct order (will be rescaled to sum to 1) } \item{design}{ Survey design object } \item{\dots}{ Other arguments to pass to \code{\link{svytotal}}, such as \code{na.rm} } } \value{ An object of class \code{htest} } \seealso{ \code{\link{chisq.test}}, \code{\link{svychisq}}, \code{\link{pchisqsum}} } \examples{ data(api) dclus2<-svydesign(id=~dnum+snum, fpc=~fpc1+fpc2, data=apiclus2) true_p <- table(apipop$stype) svygofchisq(~stype,dclus2,p=true_p) svygofchisq(~stype,dclus2,p=c(1/3,1/3,1/3)) } survey/man/barplot.svystat.Rd0000644000176200001440000000273412372225304016036 0ustar liggesusers\name{barplot.svystat} \alias{barplot.svystat} \alias{barplot.svrepstat} \alias{barplot.svyby} \alias{dotchart} \alias{dotchart.svystat} \alias{dotchart.svrepstat} \alias{dotchart.svyby} %- Also NEED an '\alias' for EACH other topic documented here. \title{ Barplots and Dotplots } \description{ Draws a barplot or dotplot based on results from a survey analysis. The default barplot method already works for results from \code{\link{svytable}}. } \usage{ \method{barplot}{svystat}(height, ...) \method{barplot}{svrepstat}(height, ...) \method{barplot}{svyby}(height,beside=TRUE, ...) \method{dotchart}{svystat}(x,...,pch=19) \method{dotchart}{svrepstat}(x,...,pch=19) \method{dotchart}{svyby}(x,...,pch=19) } %- maybe also 'usage' for other objects documented here. \arguments{ \item{height,x}{Analysis result } \item{beside}{Grouped, rather than stacked, bars} \item{\dots}{ Arguments to \code{\link{barplot}} or \code{dotchart} } \item{pch}{Overrides the default in \code{dotchart.default}} } \examples{ data(api) dclus1<-svydesign(id=~dnum, weights=~pw, data=apiclus1, fpc=~fpc) a<-svymean(~stype, dclus1) barplot(a) barplot(a, names.arg=c("Elementary","High","Middle"), col="purple", main="Proportions of school level") b<-svyby(~enroll+api.stu, ~stype, dclus1, svymean) barplot(b,beside=TRUE,legend=TRUE) dotchart(b) } % Add one or more standard keywords, see file 'KEYWORDS' in the % R documentation directory. \keyword{survey} \keyword{hplot}% __ONLY ONE__ keyword per line survey/man/svymle.Rd0000755000176200001440000001632413676517357014225 0ustar liggesusers\name{svymle} \alias{svymle} \alias{print.svymle} \alias{coef.svymle} \alias{summary.svymle} \alias{vcov.svymle} %- Also NEED an `\alias' for EACH other topic documented here. \title{Maximum pseudolikelihood estimation in complex surveys} \description{ Maximises a user-specified likelihood parametrised by multiple linear predictors to data from a complex sample survey and computes the sandwich variance estimator of the coefficients. Note that this function maximises an estimated population likelihood, it is not the sample MLE. } \usage{ svymle(loglike, gradient = NULL, design, formulas, start = NULL, control = list(), na.action="na.fail", method=NULL, lower=NULL,upper=NULL,influence=FALSE,...) \method{summary}{svymle}(object, stderr=c("robust", "model"),...) } %- maybe also `usage' for other objects documented here. \arguments{ \item{loglike}{vectorised loglikelihood function} \item{gradient}{Derivative of \code{loglike}. Required for variance computation and helpful for fitting} \item{design}{ a \code{survey.design} object } \item{formulas}{A list of formulas specifying the variable and linear predictors: see Details below} \item{start}{Starting values for parameters} \item{control}{control options for the optimiser: see the help page for the optimiser you are using.} \item{lower,upper}{Parameter bounds for \code{bobyqa}} \item{influence}{Return the influence functions (primarily for svyby)} \item{na.action}{Handling of \code{NA}s} \item{method}{\code{"nlm"} to use \code{nlm},\code{"uobyqa"} or \code{"bobyqa"} to use those optimisers from the \code{minqa} package; otherwise passed to \code{\link{optim}}} \item{\dots}{Arguments to \code{loglike} and \code{gradient} that are not to be optimised over.} \item{object}{\code{svymle} object} \item{stderr}{Choice of standard error estimator. The default is a standard sandwich estimator. See Details below.} } \details{ Optimization is done by \code{\link{nlm}} by default or if \code{method=="nlm"}. Otherwise \code{\link{optim}} is used and \code{method} specifies the method and \code{control} specifies control parameters. The \code{design} object contains all the data and design information from the survey, so all the formulas refer to variables in this object. The \code{formulas} argument needs to specify the response variable and a linear predictor for each freely varying argument of \code{loglike}. Consider for example the \code{\link{dnorm}} function, with arguments \code{x}, \code{mean}, \code{sd} and \code{log}, and suppose we want to estimate the mean of \code{y} as a linear function of a variable \code{z}, and to estimate a constant standard deviation. The \code{log} argument must be fixed at \code{FALSE} to get the loglikelihood. A \code{formulas} argument would be \code{list(~y, mean=~z, sd=~1)}. Note that the data variable \code{y} must be the first argument to \code{dnorm} and the first formula and that all the other formulas are labelled. It is also permitted to have the data variable as the left-hand side of one of the formulas: eg \code{list( mean=y~z, sd=~1)}. The two optimisers from the \code{minqa} package do not use any derivatives to be specified for optimisation, but they do assume that the function is smooth enough for a quadratic approximation, ie, that two derivatives exist. The usual variance estimator for MLEs in a survey sample is a `sandwich' variance that requires the score vector and the information matrix. It requires only sampling assumptions to be valid (though some model assumptions are required for it to be useful). This is the \code{stderr="robust"} option, which is available only when the \code{gradient} argument was specified. If the model is correctly specified and the sampling is at random conditional on variables in the model then standard errors based on just the information matrix will be approximately valid. In particular, for independent sampling where weights and strata depend on variables in the model the \code{stderr="model"} should work fairly well. } \value{ An object of class \code{svymle} } \author{Thomas Lumley} \seealso{\code{\link{svydesign}}, \code{\link{svyglm}}} \examples{ data(api) dstrat<-svydesign(id=~1, strata=~stype, weight=~pw, fpc=~fpc, data=apistrat) ## fit with glm m0 <- svyglm(api00~api99+ell,family="gaussian",design=dstrat) ## fit as mle (without gradient) m1 <- svymle(loglike=dnorm,gradient=NULL, design=dstrat, formulas=list(mean=api00~api99+ell, sd=~1), start=list(c(80,1,0),c(20)), log=TRUE) ## with gradient gr<- function(x,mean,sd,log){ dm<-2*(x - mean)/(2*sd^2) ds<-(x-mean)^2*(2*(2 * sd))/(2*sd^2)^2 - sqrt(2*pi)/(sd*sqrt(2*pi)) cbind(dm,ds) } m2 <- svymle(loglike=dnorm,gradient=gr, design=dstrat, formulas=list(mean=api00~api99+ell, sd=~1), start=list(c(80,1,0),c(20)), log=TRUE, method="BFGS") summary(m0) summary(m1,stderr="model") summary(m2) ## Using offsets m3 <- svymle(loglike=dnorm,gradient=gr, design=dstrat, formulas=list(mean=api00~api99+offset(ell)+ell, sd=~1), start=list(c(80,1,0),c(20)), log=TRUE, method="BFGS") ## demonstrating multiple linear predictors m3 <- svymle(loglike=dnorm,gradient=gr, design=dstrat, formulas=list(mean=api00~api99+offset(ell)+ell, sd=~stype), start=list(c(80,1,0),c(20,0,0)), log=TRUE, method="BFGS") ## More complicated censored lognormal data example ## showing that the response variable can be multivariate data(pbc, package="survival") pbc$randomized <- with(pbc, !is.na(trt) & trt>0) biasmodel<-glm(randomized~age*edema,data=pbc) pbc$randprob<-fitted(biasmodel) dpbc<-svydesign(id=~1, prob=~randprob, strata=~edema, data=subset(pbc,randomized)) ## censored logNormal likelihood lcens<-function(x,mean,sd){ ifelse(x[,2]==1, dnorm(log(x[,1]),mean,sd,log=TRUE), pnorm(log(x[,1]),mean,sd,log=TRUE,lower.tail=FALSE) ) } gcens<- function(x,mean,sd){ dz<- -dnorm(log(x[,1]),mean,sd)/pnorm(log(x[,1]),mean,sd,lower.tail=FALSE) dm<-ifelse(x[,2]==1, 2*(log(x[,1]) - mean)/(2*sd^2), dz*-1/sd) ds<-ifelse(x[,2]==1, (log(x[,1])-mean)^2*(2*(2 * sd))/(2*sd^2)^2 - sqrt(2*pi)/(sd*sqrt(2*pi)), ds<- dz*-(log(x[,1])-mean)/(sd*sd)) cbind(dm,ds) } m<-svymle(loglike=lcens, gradient=gcens, design=dpbc, method="newuoa", formulas=list(mean=I(cbind(time,status>0))~bili+protime+albumin, sd=~1), start=list(c(10,0,0,0),c(1))) summary(m) ## the same model, but now specifying the lower bound of zero on the ## log standard deviation mbox<-svymle(loglike=lcens, gradient=gcens, design=dpbc, method="bobyqa", formulas=list(mean=I(cbind(time,status>0))~bili+protime+albumin, sd=~1), lower=list(c(-Inf,-Inf,-Inf,-Inf),0), upper=Inf, start=list(c(10,0,0,0),c(1))) ## The censored lognormal model is now available in svysurvreg() summary(svysurvreg(Surv(time,status>0)~bili+protime+albumin, design=dpbc,dist="lognormal")) ## compare svymle scale value after log transformation svycontrast(m, quote(log(`sd.(Intercept)`))) } \keyword{survey}% at least one, from doc/KEYWORDS \keyword{models}% __ONLY ONE__ keyword per line \keyword{optimize}% __ONLY ONE__ keyword per line survey/man/marginpred.Rd0000644000176200001440000000562112537401233015005 0ustar liggesusers\name{marginpred} \Rdversion{1.1} \alias{marginpred} \alias{marginpred.svycoxph} \alias{marginpred.svykmlist} \alias{marginpred.svyglm} %- Also NEED an '\alias' for EACH other topic documented here. \title{ Standardised predictions (predictive margins) for regression models. } \description{ Reweights the design (using \code{\link{calibrate}}) so that the adjustment variables are uncorrelated with the variables in the model, and then performs predictions by calling \code{predict}. When the adjustment model is saturated this is equivalent to direct standardization on the adjustment variables. The \code{svycoxph} and \code{svykmlist} methods return survival curves. } \usage{ marginpred(model, adjustfor, predictat, ...) \method{marginpred}{svycoxph}(model, adjustfor, predictat, se=FALSE, ...) \method{marginpred}{svykmlist}(model, adjustfor, predictat, se=FALSE, ...) \method{marginpred}{svyglm}(model, adjustfor, predictat, ...) } %- maybe also 'usage' for other objects documented here. \arguments{ \item{model}{ A regression model object of a class that has a \code{marginpred} method } \item{adjustfor}{ Model formula specifying adjustment variables, which must be in the design object of the model } \item{predictat}{ A data frame giving values of the variables in \code{model} to predict at} \item{se}{Estimate standard errors for the survival curve (uses a lot of memory if the sample size is large)} \item{\dots}{Extra arguments, passed to the \code{predict} method for \code{model}} } \seealso{ \code{\link{svypredmeans}} for the method of Graubard and Korn implemented in SUDAAN. \code{\link{calibrate}} \code{\link{predict.svycoxph}} } \examples{ ## generate data with apparent group effect from confounding set.seed(42) df<-data.frame(x=rnorm(100)) df$time<-rexp(100)*exp(df$x-1) df$status<-1 df$group<-(df$x+rnorm(100))>0 des<-svydesign(id=~1,data=df) newdf<-data.frame(group=c(FALSE,TRUE), x=c(0,0)) ## Cox model m0<-svycoxph(Surv(time,status)~group,design=des) m1<-svycoxph(Surv(time,status)~group+x,design=des) ## conditional predictions, unadjusted and adjusted cpred0<-predict(m0, type="curve", newdata=newdf, se=TRUE) cpred1<-predict(m1, type="curve", newdata=newdf, se=TRUE) ## adjusted marginal prediction mpred<-marginpred(m0, adjustfor=~x, predictat=newdf, se=TRUE) plot(cpred0) lines(cpred1[[1]],col="red") lines(cpred1[[2]],col="red") lines(mpred[[1]],col="blue") lines(mpred[[2]],col="blue") ## Kaplan--Meier s2<-svykm(Surv(time,status>0)~group, design=des) p2<-marginpred(s2, adjustfor=~x, predictat=newdf,se=TRUE) plot(s2) lines(p2[[1]],col="green") lines(p2[[2]],col="green") ## logistic regression logisticm <- svyglm(group~time, family=quasibinomial, design=des) newdf$time<-c(0.1,0.8) logisticpred <- marginpred(logisticm, adjustfor=~x, predictat=newdf) } % Add one or more standard keywords, see file 'KEYWORDS' in the % R documentation directory. \keyword{survey} survey/man/psrsq.Rd0000644000176200001440000000256413122061027014022 0ustar liggesusers\name{psrsq} \alias{psrsq} %- Also NEED an '\alias' for EACH other topic documented here. \title{ Pseudo-Rsquareds } \description{ Compute the Nagelkerke and Cox--Snell pseudo-rsquared statistics, primarily for logistic regression. A generic function with methods for \code{glm} and \code{\link{svyglm}}. The method for \code{svyglm} objects uses the design-based estimators described by Lumley (2017) } \usage{ psrsq(object, method = c("Cox-Snell", "Nagelkerke"), ...) } %- maybe also 'usage' for other objects documented here. \arguments{ \item{object}{ A regression model (\code{glm} or \code{svyglm}) } \item{method}{ Which statistic to compute } \item{\dots}{ For future expansion } } \value{ Numeric value } \references{ Lumley T (2017) "Pseudo-R2 statistics under complex sampling" Australian and New Zealand Journal of Statistics DOI: 10.1111/anzs.12187 (preprint: \url{https://arxiv.org/abs/1701.07745}) } \seealso{ \code{\link{AIC.svyglm}} } \examples{ data(api) dclus2<-svydesign(id=~dnum+snum, weights=~pw, data=apiclus2) model1<-svyglm(I(sch.wide=="Yes")~ell+meals+mobility+as.numeric(stype), design=dclus2, family=quasibinomial()) psrsq(model1, type="Nagelkerke") } % Add one or more standard keywords, see file 'KEYWORDS' in the % R documentation directory. \keyword{survey }% use one of RShowDoc("KEYWORDS") \keyword{regression }% __ONLY ONE__ keyword per line survey/man/hospital.Rd0000755000176200001440000000165114073700335014504 0ustar liggesusers\name{hospital} \alias{hospital} \non_function{} \title{Sample of obstetric hospitals } \usage{data(hospital)} \description{ The \code{hospital} data frame has 15 rows and 5 columns. } \format{ This data frame contains the following columns: \describe{ \item{hospno}{Hospital id} \item{oblevel}{level of obstetric care} \item{weighta}{Weights, as given by the original reference} \item{tothosp}{total hospitalisations} \item{births}{births} \item{weightats}{Weights, as given in the source} } } \source{ Previously at \verb{http://www.ats.ucla.edu/stat/books/sop/hospsamp.dta} } \references{ Levy and Lemeshow. "Sampling of Populations" (3rd edition). Wiley. } \examples{ data(hospital) hospdes<-svydesign(strata=~oblevel, id=~hospno, weights=~weighta, fpc=~tothosp, data=hospital) hosprep<-as.svrepdesign(hospdes) svytotal(~births, design=hospdes) svytotal(~births, design=hosprep) } \keyword{datasets} survey/man/svrepdesign.Rd0000755000176200001440000002104713606737373015230 0ustar liggesusers\name{svrepdesign} \alias{svrepdesign} \alias{svrepdesign.default} \alias{svrepdesign.imputationList} \alias{svrepdesign.character} \alias{[.svyrep.design} \alias{image.svyrep.design} \alias{print.svyrep.design} \alias{model.frame.svyrep.design} \alias{summary.svyrep.design} \alias{print.summary.svyrep.design} %- Also NEED an `\alias' for EACH other topic documented here. \title{Specify survey design with replicate weights} \description{ Some recent large-scale surveys specify replication weights rather than the sampling design (partly for privacy reasons). This function specifies the data structure for such a survey. } \usage{ svrepdesign(variables , repweights , weights, data,...) \method{svrepdesign}{default}(variables = NULL, repweights = NULL, weights = NULL, data = NULL, type = c("BRR", "Fay", "JK1","JKn","bootstrap", "ACS","successive-difference","JK2","other"), combined.weights=TRUE, rho = NULL, bootstrap.average=NULL, scale=NULL, rscales=NULL,fpc=NULL, fpctype=c("fraction","correction"), mse=getOption("survey.replicates.mse"),...) \method{svrepdesign}{imputationList}(variables=NULL, repweights,weights,data, mse=getOption("survey.replicates.mse"),...) \method{svrepdesign}{character}(variables=NULL,repweights=NULL, weights=NULL,data=NULL, type=c("BRR","Fay","JK1", "JKn","bootstrap","ACS","successive-difference","JK2","other"), combined.weights=TRUE, rho=NULL, bootstrap.average=NULL, scale=NULL,rscales=NULL, fpc=NULL,fpctype=c("fraction","correction"),mse=getOption("survey.replicates.mse"), dbtype="SQLite", dbname,...) \method{image}{svyrep.design}(x, ..., col=grey(seq(.5,1,length=30)), type.=c("rep","total")) } %- maybe also `usage' for other objects documented here. \arguments{ \item{variables}{formula or data frame specifying variables to include in the design (default is all) } \item{repweights}{formula or data frame specifying replication weights, or character string specifying a regular expression that matches the names of the replication weight variables } \item{weights}{sampling weights } \item{data}{data frame to look up variables in formulas, or character string giving name of database table} \item{type}{Type of replication weights} \item{combined.weights}{\code{TRUE} if the \code{repweights} already include the sampling weights. This is usually the case.} \item{rho}{Shrinkage factor for weights in Fay's method} \item{bootstrap.average}{For \code{type="bootstrap"}, if the bootstrap weights have been averaged, gives the number of iterations averaged over} \item{scale, rscales}{Scaling constant for variance, see Details below} \item{fpc,fpctype}{Finite population correction information} \item{mse}{If \code{TRUE}, compute variances based on sum of squares around the point estimate, rather than the mean of the replicates} \item{dbname}{name of database, passed to \code{DBI::dbConnect()}} \item{dbtype}{Database driver: see Details} \item{x}{survey design with replicate weights} \item{...}{Other arguments to \code{\link{image}}} \item{col}{Colors} \item{type.}{\code{"rep"} for only the replicate weights, \code{"total"} for the replicate and sampling weights combined.} } \details{ In the BRR method, the dataset is split into halves, and the difference between halves is used to estimate the variance. In Fay's method, rather than removing observations from half the sample they are given weight \code{rho} in one half-sample and \code{2-rho} in the other. The ideal BRR analysis is restricted to a design where each stratum has two PSUs, however, it has been used in a much wider class of surveys. The \code{scale} and \code{rscales} arguments will be ignored (with a warning) if they are specified. The JK1 and JKn types are both jackknife estimators deleting one cluster at a time. JKn is designed for stratified and JK1 for unstratified designs. The successive-difference weights in the American Community Survey automatically use \code{scale = 4/ncol(repweights)} and \code{rscales=rep(1, ncol(repweights))}. This can be specified as \code{type="ACS"} or \code{type="successive-difference"}. The \code{scale} and \code{rscales} arguments will be ignored (with a warning) if they are specified. JK2 weights (\code{type="JK2"}), as in the California Health Interview Survey, automatically use \code{scale=1}, \code{rscales=rep(1, ncol(repweights))}. The \code{scale} and \code{rscales} arguments will be ignored (with a warning) if they are specified. Averaged bootstrap weights ("mean bootstrap") are used for some surveys from Statistics Canada. Yee et al (1999) describe their construction and use for one such survey. The variance is computed as the sum of squared deviations of the replicates from their mean. This may be rescaled: \code{scale} is an overall multiplier and \code{rscales} is a vector of replicate-specific multipliers for the squared deviations. That is, \code{rscales} should have one entry for each column of \code{repweights} If thereplication weights incorporate the sampling weights (\code{combined.weights=TRUE}) or for \code{type="other"} these must be specified, otherwise they can be guessed from the weights. A finite population correction may be specified for \code{type="other"}, \code{type="JK1"} and \code{type="JKn"}. \code{fpc} must be a vector with one entry for each replicate. To specify sampling fractions use \code{fpctype="fraction"} and to specify the correction directly use \code{fpctype="correction"} \code{repweights} may be a character string giving a regular expression for the replicate weight variables. For example, in the California Health Interview Survey public-use data, the sampling weights are \code{"rakedw0"} and the replicate weights are \code{"rakedw1"} to \code{"rakedw80"}. The regular expression \code{"rakedw[1-9]"} matches the replicate weight variables (and not the sampling weight variable). \code{data} may be a character string giving the name of a table or view in a relational database that can be accessed through the \code{DBI} interface. For DBI interfaces \code{dbtype} should be the name of the database driver and \code{dbname} should be the name by which the driver identifies the specific database (eg file name for SQLite). The appropriate database interface package must already be loaded (eg \code{RSQLite} for SQLite). The survey design object will contain the replicate weights, but actual variables will be loaded from the database only as needed. Use \code{\link[=close.DBIsvydesign]{close}} to close the database connection and \code{\link[=open.DBIsvydesign]{open}} to reopen the connection, eg, after loading a saved object. The database interface does not attempt to modify the underlying database and so can be used with read-only permissions on the database. To generate your own replicate weights either use \code{\link{as.svrepdesign}} on a \code{survey.design} object, or see \code{\link{brrweights}}, \code{\link{bootweights}}, \code{\link{jk1weights}} and \code{\link{jknweights}} The \code{model.frame} method extracts the observed data. } \value{ Object of class \code{svyrep.design}, with methods for \code{print}, \code{summary}, \code{weights}, \code{image}. } \references{Levy and Lemeshow. "Sampling of Populations". Wiley. Shao and Tu. "The Jackknife and Bootstrap." Springer. Yee et al (1999). Bootstrat Variance Estimation for the National Population Health Survey. Proceedings of the ASA Survey Research Methodology Section. \url{https://web.archive.org/web/20151110170959/http://www.amstat.org/sections/SRMS/Proceedings/papers/1999_136.pdf} } \note{To use replication-weight analyses on a survey specified by sampling design, use \code{as.svrepdesign} to convert it. } \seealso{\code{\link{as.svrepdesign}}, \code{\link{svydesign}}, \code{\link{brrweights}}, \code{bootweights} } \examples{ data(scd) # use BRR replicate weights from Levy and Lemeshow repweights<-2*cbind(c(1,0,1,0,1,0), c(1,0,0,1,0,1), c(0,1,1,0,0,1), c(0,1,0,1,1,0)) scdrep<-svrepdesign(data=scd, type="BRR", repweights=repweights, combined.weights=FALSE) svyratio(~alive, ~arrests, scdrep) \dontrun{ ## Needs RSQLite library(RSQLite) db_rclus1<-svrepdesign(weights=~pw, repweights="wt[1-9]+", type="JK1", scale=(1-15/757)*14/15, data="apiclus1rep",dbtype="SQLite", dbname=system.file("api.db",package="survey"), combined=FALSE) svymean(~api00+api99,db_rclus1) summary(db_rclus1) ## closing and re-opening a connection close(db_rclus1) db_rclus1 try(svymean(~api00+api99,db_rclus1)) db_rclus1<-open(db_rclus1) svymean(~api00+api99,db_rclus1) } } \keyword{survey}% at least one, from doc/KEYWORDS survey/man/subset.survey.design.Rd0000755000176200001440000000272111457435611016776 0ustar liggesusers\name{subset.survey.design} \alias{subset.survey.design} \alias{subset.svyrep.design} \alias{[.survey.design} %- Also NEED an `\alias' for EACH other topic documented here. \title{Subset of survey} \description{ Restrict a survey design to a subpopulation, keeping the original design information about number of clusters, strata. If the design has no post-stratification or calibration data the subset will use proportionately less memory. } \usage{ \method{subset}{survey.design}(x, subset, ...) \method{subset}{svyrep.design}(x, subset, ...) } %- maybe also `usage' for other objects documented here. \arguments{ \item{x}{A survey design object} \item{subset}{An expression specifying the subpopulation} \item{\dots}{Arguments not used by this method} } \value{ A new survey design object } \seealso{\code{\link{svydesign}}} \examples{ data(fpc) dfpc<-svydesign(id=~psuid,strat=~stratid,weight=~weight,data=fpc,nest=TRUE) dsub<-subset(dfpc,x>4) summary(dsub) svymean(~x,design=dsub) ## These should give the same domain estimates and standard errors svyby(~x,~I(x>4),design=dfpc, svymean) summary(svyglm(x~I(x>4)+0,design=dfpc)) data(api) dclus1<-svydesign(id=~dnum, weights=~pw, data=apiclus1, fpc=~fpc) rclus1<-as.svrepdesign(dclus1) svymean(~enroll, subset(dclus1, sch.wide=="Yes" & comp.imp=="Yes")) svymean(~enroll, subset(rclus1, sch.wide=="Yes" & comp.imp=="Yes")) } \keyword{survey}% at least one, from doc/KEYWORDS \keyword{manip}% __ONLY ONE__ keyword per line survey/man/trimWeights.Rd0000644000176200001440000000440614166647050015174 0ustar liggesusers\name{trimWeights} \Rdversion{1.1} \alias{trimWeights} \alias{trimWeights.svyrep.design} \alias{trimWeights.survey.design2} %- Also NEED an '\alias' for EACH other topic documented here. \title{ Trim sampling weights } \description{ Trims very high or very low sampling weights to reduce the influence of outlying observations. In a replicate-weight design object, the replicate weights are also trimmed. The total amount trimmed is divided among the observations that were not trimmed, so that the total weight remains the same. } \usage{ trimWeights(design, upper = Inf, lower = -Inf, ...) \method{trimWeights}{survey.design2}(design, upper = Inf, lower = -Inf, strict=FALSE,...) \method{trimWeights}{svyrep.design}(design, upper = Inf, lower = -Inf, strict=FALSE, compress=FALSE,...) } %- maybe also 'usage' for other objects documented here. \arguments{ \item{design}{ A survey design object } \item{upper}{ Upper bound for weights } \item{lower}{ Lower bound for weights } \item{strict}{ The reapportionment of the `trimmings' from the weights can push other weights over the limits. If \code{trim=TRUE} the function repeats the trimming iteratively to prevent this. For replicate-weight designs \code{strict} applies only to the trimming of the sampling weights. } \item{compress}{ Compress the replicate weights after trimming. } \item{\dots}{ Other arguments for future expansion } } \value{ A new survey design object with trimmed weights. } %% ~Make other sections like Warning with \section{Warning }{....} ~ \seealso{ \code{\link{calibrate}} has a \code{trim} option for trimming the calibration adjustments. } \examples{ data(api) dclus1<-svydesign(id=~dnum, weights=~pw, data=apiclus1, fpc=~fpc) pop.totals<-c(`(Intercept)`=6194, stypeH=755, stypeM=1018, api99=3914069) dclus1g<-calibrate(dclus1, ~stype+api99, pop.totals) summary(weights(dclus1g)) dclus1t<-trimWeights(dclus1g,lower=20, upper=45) summary(weights(dclus1t)) dclus1tt<-trimWeights(dclus1g, lower=20, upper=45,strict=TRUE) summary(weights(dclus1tt)) svymean(~api99+api00+stype, dclus1g) svymean(~api99+api00+stype, dclus1t) svymean(~api99+api00+stype, dclus1tt) } % Add one or more standard keywords, see file 'KEYWORDS' in the % R documentation directory. \keyword{survey} survey/man/crowd.Rd0000755000176200001440000000205311457435611014001 0ustar liggesusers\name{crowd} \alias{crowd} \docType{data} \title{Household crowding} \description{ A tiny dataset from the VPLX manual. } \usage{data(crowd)} \format{ A data frame with 6 observations on the following 5 variables. \describe{ \item{rooms}{Number of rooms in the house} \item{person}{Number of people in the household} \item{weight}{Sampling weight} \item{cluster}{Cluster number} \item{stratum}{Stratum number} } } \source{ Manual for VPLX, Census Bureau. } \examples{ data(crowd) ## Example 1-1 i1.1<-as.svrepdesign(svydesign(id=~cluster, weight=~weight,data=crowd)) i1.1<-update(i1.1, room.ratio=rooms/person, overcrowded=factor(person>rooms)) svymean(~rooms+person+room.ratio,i1.1) svytotal(~rooms+person+room.ratio,i1.1) svymean(~rooms+person+room.ratio,subset(i1.1,overcrowded==TRUE)) svytotal(~rooms+person+room.ratio,subset(i1.1,overcrowded==TRUE)) ## Example 1-2 i1.2<-as.svrepdesign(svydesign(id=~cluster,weight=~weight,strata=~stratum, data=crowd)) svymean(~rooms+person,i1.2) svytotal(~rooms+person,i1.2) } \keyword{datasets} survey/man/election.Rd0000644000176200001440000000547311457435611014473 0ustar liggesusers\name{election} \alias{election} \alias{election_pps} \alias{election_jointprob} \alias{election_jointHR} \alias{election_insample} \docType{data} \title{US 2004 presidential election data at state or county level} \description{ A sample of voting data from US states or counties (depending on data availability), sampled with probability proportional to number of votes. The sample was drawn using Tille's splitting method, implemented in the "sampling" package. } \usage{data(election)} \format{ \code{election} is a data frame with 4600 observations on the following 8 variables. \describe{ \item{\code{County}}{A factor specifying the state or country} \item{\code{TotPrecincts}}{Number of precincts in the state or county} \item{\code{PrecinctsReporting}}{Number of precincts supplying data} \item{\code{Bush}}{Votes for George W. Bush} \item{\code{Kerry}}{Votes for John Kerry} \item{\code{Nader}}{Votes for Ralph Nader} \item{\code{votes}}{Total votes for those three candidates} \item{\code{p}}{Sampling probability, proportional to \code{votes}} } \code{election_pps} is a sample of 40 counties or states taken with probability proportional to the number of votes. It includes the additional column \code{wt} with the sampling weights. \code{election_insample} indicates which rows of \code{election} were sampled. \code{election_jointprob} are the pairwise sampling probabilities and \code{election_jointHR} are approximate pairwise sampling probabilities using the Hartley-Rao approximation. } \source{ . } \examples{ data(election) ## high positive correlation between totals plot(Bush~Kerry,data=election,log="xy") ## high negative correlation between proportions plot(I(Bush/votes)~I(Kerry/votes), data=election) ## Variances without replacement ## Horvitz-Thompson type dpps_br<- svydesign(id=~1, fpc=~p, data=election_pps, pps="brewer") dpps_ov<- svydesign(id=~1, fpc=~p, data=election_pps, pps="overton") dpps_hr<- svydesign(id=~1, fpc=~p, data=election_pps, pps=HR(sum(election$p^2)/40)) dpps_hr1<- svydesign(id=~1, fpc=~p, data=election_pps, pps=HR()) dpps_ht<- svydesign(id=~1, fpc=~p, data=election_pps, pps=ppsmat(election_jointprob)) ## Yates-Grundy type dpps_yg<- svydesign(id=~1, fpc=~p, data=election_pps, pps=ppsmat(election_jointprob),variance="YG") dpps_hryg<- svydesign(id=~1, fpc=~p, data=election_pps, pps=HR(sum(election$p^2)/40),variance="YG") ## The with-replacement approximation dppswr <-svydesign(id=~1, probs=~p, data=election_pps) svytotal(~Bush+Kerry+Nader, dpps_ht) svytotal(~Bush+Kerry+Nader, dpps_yg) svytotal(~Bush+Kerry+Nader, dpps_hr) svytotal(~Bush+Kerry+Nader, dpps_hryg) svytotal(~Bush+Kerry+Nader, dpps_hr1) svytotal(~Bush+Kerry+Nader, dpps_br) svytotal(~Bush+Kerry+Nader, dpps_ov) svytotal(~Bush+Kerry+Nader, dppswr) } \keyword{datasets} \keyword{survey} survey/man/yrbs.Rd0000644000176200001440000000217314424031636013636 0ustar liggesusers\name{yrbs} \alias{yrbs} \docType{data} \title{ One variable from the Youth Risk Behaviors Survey, 2015. } \description{ Design information from the Youth Risk Behaviors Survey (YRBS), together with the single variable `Never/Rarely wore bike helmet'. Used as an analysis example by CDC. } \usage{data("yrbs")} \format{ A data frame with 15624 observations on the following 4 variables. \describe{ \item{\code{weight}}{sampling weights} \item{\code{stratum}}{sampling strata} \item{\code{psu}}{primary sampling units} \item{\code{qn8}}{1=Yes, 2=No} } } \source{ \url{ftp://ftp.cdc.gov/pub/data/yrbs/2015smy/} for files } \references{ Centers for Disease Control and Prevention (2016) Software for Analysis of YRBS Data. [CRAN doesn't believe the URL is valid] } \examples{ data(yrbs) yrbs_design <- svydesign(id=~psu, weight=~weight, strata=~stratum, data=yrbs) yrbs_design <- update(yrbs_design, qn8yes=2-qn8) ci <- svyciprop(~qn8yes, yrbs_design, na.rm=TRUE, method="xlogit") ci ## to print more digits: matches SUDAAN and SPSS exactly, per table 3 of reference coef(ci) SE(ci) attr(ci,"ci") } \keyword{datasets} survey/man/stratsample.Rd0000644000176200001440000000165211457435611015223 0ustar liggesusers\name{stratsample} \Rdversion{1.1} \alias{stratsample} %- Also NEED an '\alias' for EACH other topic documented here. \title{ Take a stratified sample } \description{ This function takes a stratified sample without replacement from a data set. } \usage{ stratsample(strata, counts) } %- maybe also 'usage' for other objects documented here. \arguments{ \item{strata}{ Vector of stratum identifiers; will be coerced to character } \item{counts}{ named vector of stratum sample sizes, with names corresponding to the values of \code{as.character(strata)} } } \value{ vector of indices into \code{strata} giving the sample } \seealso{ \code{\link{sample}} The "sampling" package has many more sampling algorithms. } \examples{ data(api) s<-stratsample(apipop$stype, c("E"=5,"H"=4,"M"=2)) table(apipop$stype[s]) } % Add one or more standard keywords, see file 'KEYWORDS' in the % R documentation directory. \keyword{survey} survey/man/twophase.Rd0000644000176200001440000002047511457435612014523 0ustar liggesusers\name{twophase} \alias{twophase} \alias{twophasevar} \alias{twophase2var} \alias{[.twophase} \alias{subset.twophase} \alias{print.twophase} \alias{summary.twophase} \alias{print.summary.twophase} \alias{model.frame.twophase} \alias{na.fail.twophase} \alias{na.omit.twophase} \alias{na.exclude.twophase} \alias{svyrecvar.phase1} \alias{multistage.phase1} \alias{onestage.phase1} \alias{onestrat.phase1} %- Also NEED an '\alias' for EACH other topic documented here. \title{Two-phase designs} \description{ In a two-phase design a sample is taken from a population and a subsample taken from the sample, typically stratified by variables not known for the whole population. The second phase can use any design supported for single-phase sampling. The first phase must currently be one-stage element or cluster sampling } \usage{ twophase(id, strata = NULL, probs = NULL, weights = NULL, fpc = NULL, subset, data, method=c("full","approx","simple")) twophasevar(x,design) twophase2var(x,design) } %- maybe also 'usage' for other objects documented here. \arguments{ \item{id}{list of two formulas for sampling unit identifiers} \item{strata}{list of two formulas (or \code{NULL}s) for stratum identifies} \item{probs}{ list of two formulas (or \code{NULL}s) for sampling probabilities} \item{weights}{Only for \code{method="approx"}, list of two formulas (or \code{NULL}s) for sampling weights} \item{fpc}{list of two formulas (or \code{NULL}s) for finite population corrections} \item{subset}{formula specifying which observations are selected in phase 2} \item{data}{Data frame will all data for phase 1 and 2} \item{method}{\code{"full"} requires (much) more memory, but gives unbiased variance estimates for general multistage designs at both phases. \code{"simple"} or \code{"approx"} uses the standard error calculation from version 3.14 and earlier, which uses much less memory and is correct for designs with simple random sampling at phase one and stratified random sampling at phase two. } \item{x}{probability-weighted estimating functions} \item{design}{two-phase design} } \details{ The population for the second phase is the first-phase sample. If the second phase sample uses stratified (multistage cluster) sampling without replacement and all the stratum and sampling unit identifier variables are available for the whole first-phase sample it is possible to estimate the sampling probabilities/weights and the finite population correction. These would then be specified as \code{NULL}. Two-phase case-control and case-cohort studies in biostatistics will typically have simple random sampling with replacement as the first stage. Variances given here may differ slightly from those in the biostatistics literature where a model-based estimator of the first-stage variance would typically be used. Variance computations are based on the conditioning argument in Section 9.3 of Sarndal et al. Method \code{"full"} corresponds exactly to the formulas in that reference. Method \code{"simple"} or \code{"approx"} (the two are the same) uses less time and memory but is exact only for some special cases. The most important special case is the two-phase epidemiologic designs where phase 1 is simple random sampling from an infinite population and phase 2 is stratified random sampling. See the \code{tests} directory for a worked example. The only disadvantage of method="simple" in these cases is that standardization of margins (\code{\link{marginpred}}) is not available. For \code{method="full"}, sampling probabilities must be available for each stage of sampling, within each phase. For multistage sampling this requires specifying either \code{fpc} or \code{probs} as a formula with a term for each stage of sampling. If no \code{fpc} or \code{probs} are specified at phase 1 it is treated as simple random sampling from an infinite population, and population totals will not be correctly estimated, but means, quantiles, and regression models will be correct. } \value{ \code{twophase} returns an object of class \code{twophase2} (for \code{method="full"}) or \code{twophase}. The structure of \code{twophase2} objects may change as unnecessary components are removed. \code{twophase2var} and \code{twophasevar} return a variance matrix with an attribute containing the separate phase 1 and phase 2 contributions to the variance. } \references{ Sarndal CE, Swensson B, Wretman J (1992) "Model Assisted Survey Sampling" Springer. Breslow NE and Chatterjee N, Design and analysis of two-phase studies with binary outcome applied to Wilms tumour prognosis. "Applied Statistics" 48:457-68, 1999 Breslow N, Lumley T, Ballantyne CM, Chambless LE, Kulick M. (2009) Improved Horvitz-Thompson estimation of model parameters from two-phase stratified samples: applications in epidemiology. Statistics in Biosciences. doi 10.1007/s12561-009-9001-6 Lin, DY and Ying, Z (1993). Cox regression with incomplete covariate measurements. "Journal of the American Statistical Association" 88: 1341-1349. } \seealso{\code{\link{svydesign}}, \code{\link{svyrecvar}} for multi*stage* sampling \code{\link{calibrate}} for calibration (GREG) estimators. \code{\link{estWeights}} for two-phase designs for missing data. The "epi" and "phase1" vignettes for examples and technical details. } \examples{ ## two-phase simple random sampling. data(pbc, package="survival") pbc$randomized<-with(pbc, !is.na(trt) & trt>0) pbc$id<-1:nrow(pbc) d2pbc<-twophase(id=list(~id,~id), data=pbc, subset=~randomized) svymean(~bili, d2pbc) ## two-stage sampling as two-phase data(mu284) ii<-with(mu284, c(1:15, rep(1:5,n2[1:5]-3))) mu284.1<-mu284[ii,] mu284.1$id<-1:nrow(mu284.1) mu284.1$sub<-rep(c(TRUE,FALSE),c(15,34-15)) dmu284<-svydesign(id=~id1+id2,fpc=~n1+n2, data=mu284) ## first phase cluster sample, second phase stratified within cluster d2mu284<-twophase(id=list(~id1,~id),strata=list(NULL,~id1), fpc=list(~n1,NULL),data=mu284.1,subset=~sub) svytotal(~y1, dmu284) svytotal(~y1, d2mu284) svymean(~y1, dmu284) svymean(~y1, d2mu284) ## case-cohort design: this example requires R 2.2.0 or later library("survival") data(nwtco) ## stratified on case status dcchs<-twophase(id=list(~seqno,~seqno), strata=list(NULL,~rel), subset=~I(in.subcohort | rel), data=nwtco) svycoxph(Surv(edrel,rel)~factor(stage)+factor(histol)+I(age/12), design=dcchs) ## Using survival::cch subcoh <- nwtco$in.subcohort selccoh <- with(nwtco, rel==1|subcoh==1) ccoh.data <- nwtco[selccoh,] ccoh.data$subcohort <- subcoh[selccoh] cch(Surv(edrel, rel) ~ factor(stage) + factor(histol) + I(age/12), data =ccoh.data, subcoh = ~subcohort, id=~seqno, cohort.size=4028, method="LinYing") ## two-phase case-control ## Similar to Breslow & Chatterjee, Applied Statistics (1999) but with ## a slightly different version of the data set nwtco$incc2<-as.logical(with(nwtco, ifelse(rel | instit==2,1,rbinom(nrow(nwtco),1,.1)))) dccs2<-twophase(id=list(~seqno,~seqno),strata=list(NULL,~interaction(rel,instit)), data=nwtco, subset=~incc2) dccs8<-twophase(id=list(~seqno,~seqno),strata=list(NULL,~interaction(rel,stage,instit)), data=nwtco, subset=~incc2) summary(glm(rel~factor(stage)*factor(histol),data=nwtco,family=binomial())) summary(svyglm(rel~factor(stage)*factor(histol),design=dccs2,family=quasibinomial())) summary(svyglm(rel~factor(stage)*factor(histol),design=dccs8,family=quasibinomial())) ## Stratification on stage is really post-stratification, so we should use calibrate() gccs8<-calibrate(dccs2, phase=2, formula=~interaction(rel,stage,instit)) summary(svyglm(rel~factor(stage)*factor(histol),design=gccs8,family=quasibinomial())) ## For this saturated model calibration is equivalent to estimating weights. pccs8<-calibrate(dccs2, phase=2,formula=~interaction(rel,stage,instit), calfun="rrz") summary(svyglm(rel~factor(stage)*factor(histol),design=pccs8,family=quasibinomial())) ## Since sampling is SRS at phase 1 and stratified RS at phase 2, we ## can use method="simple" to save memory. dccs8_simple<-twophase(id=list(~seqno,~seqno),strata=list(NULL,~interaction(rel,stage,instit)), data=nwtco, subset=~incc2,method="simple") summary(svyglm(rel~factor(stage)*factor(histol),design=dccs8_simple,family=quasibinomial())) } \keyword{survey}% at least one, from doc/KEYWORDS survey/man/dimnames.DBIsvydesign.Rd0000644000176200001440000000303413542525537017012 0ustar liggesusers\name{dimnames.DBIsvydesign} \alias{dimnames.DBIsvydesign} \alias{dimnames.survey.design} \alias{dimnames.svyrep.design} \alias{dimnames.twophase} \alias{dimnames.svyimputationList} \alias{dim.DBIsvydesign} \alias{dim.survey.design} \alias{dim.twophase} \alias{dim.svyimputationList} \alias{dim.svyrep.design} %- Also NEED an '\alias' for EACH other topic documented here. \title{Dimensions of survey designs} \description{ \code{dimnames} returns variable names and row names for the data variables in a design object and \code{dim} returns dimensions. For multiple imputation designs there is a third dimension giving the number of imputations. For database-backed designs the second dimension includes variables defined by \code{update}. The first dimension excludes observations with zero weight. } \usage{ \method{dim}{survey.design}(x) \method{dim}{svyimputationList}(x) \method{dimnames}{survey.design}(x) \method{dimnames}{DBIsvydesign}(x) \method{dimnames}{svyimputationList}(x) } %- maybe also 'usage' for other objects documented here. \arguments{ \item{x}{Design object} } \value{ A vector of numbers for \code{dim}, a list of vectors of strings for \code{dimnames}. } \seealso{ \code{\link{update.DBIsvydesign}}, \code{\link{with.svyimputationList}}} \examples{ data(api) dclus1 <- svydesign(ids=~dnum,weights=~pw,data=apiclus1,fpc=~fpc) dim(dclus1) dimnames(dclus1) colnames(dclus1) } % Add one or more standard keywords, see file 'KEYWORDS' in the % R documentation directory. \keyword{survey} \keyword{manip}% __ONLY ONE__ keyword per line survey/man/svyglm.Rd0000755000176200001440000002021713676517357014223 0ustar liggesusers\name{svyglm} \alias{svyglm} \alias{svyglm.survey.design} \alias{svyglm.svyrep.design} \alias{summary.svyglm} \alias{summary.svrepglm} \alias{vcov.svyglm} \alias{residuals.svyglm} \alias{residuals.svrepglm} \alias{predict.svyglm} \alias{predict.svrepglm} \alias{coef.svyglm} %- Also NEED an `\alias' for EACH other topic documented here. \title{Survey-weighted generalised linear models.} \description{ Fit a generalised linear model to data from a complex survey design, with inverse-probability weighting and design-based standard errors. } \usage{ \method{svyglm}{survey.design}(formula, design, subset=NULL, family=stats::gaussian(),start=NULL, rescale=TRUE, ..., deff=FALSE, influence=FALSE) \method{svyglm}{svyrep.design}(formula, design, subset=NULL, family=stats::gaussian(),start=NULL, rescale=NULL, ..., rho=NULL, return.replicates=FALSE, na.action,multicore=getOption("survey.multicore")) \method{summary}{svyglm}(object, correlation = FALSE, df.resid=NULL, ...) \method{predict}{svyglm}(object,newdata=NULL,total=NULL, type=c("link","response","terms"), se.fit=(type != "terms"),vcov=FALSE,...) \method{predict}{svrepglm}(object,newdata=NULL,total=NULL, type=c("link","response","terms"), se.fit=(type != "terms"),vcov=FALSE, return.replicates=!is.null(object$replicates),...) } %- maybe also `usage' for other objects documented here. \arguments{ \item{formula}{Model formula} \item{design}{Survey design from \code{\link{svydesign}} or \code{\link{svrepdesign}}. Must contain all variables in the formula} \item{subset}{Expression to select a subpopulation} \item{family}{\code{family} object for \code{glm}} \item{start}{Starting values for the coefficients (needed for some uncommon link/family combinations)} \item{rescale}{Rescaling of weights, to improve numerical stability. The default rescales weights to sum to the sample size. Use \code{FALSE} to not rescale weights. For replicate-weight designs, use \code{TRUE} to rescale weights to sum to 1, as was the case before version 3.34.} \item{\dots}{Other arguments passed to \code{glm} or \code{summary.glm} } \item{rho}{For replicate BRR designs, to specify the parameter for Fay's variance method, giving weights of \code{rho} and \code{2-rho}} \item{return.replicates}{Return the replicates as the \code{replicates} component of the result? (for \code{predict}, only possible if they were computed in the \code{svyglm} fit)} \item{deff}{Estimate the design effects} \item{influence}{Return influence functions} \item{object}{A \code{svyglm} object} \item{correlation}{Include the correlation matrix of parameters?} \item{na.action}{Handling of NAs} \item{multicore}{Use the \code{multicore} package to distribute replicates across processors?} \item{df.resid}{Optional denominator degrees of freedom for Wald tests} \item{newdata}{new data frame for prediction} \item{total}{population size when predicting population total} \item{type}{linear predictor (\code{link}) or response} \item{se.fit}{if \code{TRUE}, return variances of predictions} \item{vcov}{if \code{TRUE} and \code{se=TRUE} return full variance-covariance matrix of predictions} } \details{ For binomial and Poisson families use \code{family=quasibinomial()} and \code{family=quasipoisson()} to avoid a warning about non-integer numbers of successes. The `quasi' versions of the family objects give the same point estimates and standard errors and do not give the warning. If \code{df.resid} is not specified the df for the null model is computed by \code{\link{degf}} and the residual df computed by subtraction. This is recommended by Korn and Graubard and is correct for PSU-level covariates but is potentially very conservative for individual-level covariates. To get tests based on a Normal distribution use \code{df.resid=Inf}, and to use number of PSUs-number of strata, specify \code{df.resid=degf(design)}. Parallel processing with \code{multicore=TRUE} is helpful only for fairly large data sets and on computers with sufficient memory. It may be incompatible with GUIs, although the Mac Aqua GUI appears to be safe. \code{predict} gives fitted values and sampling variability for specific new values of covariates. When \code{newdata} are the population mean it gives the regression estimator of the mean, and when \code{newdata} are the population totals and \code{total} is specified it gives the regression estimator of the population total. Regression estimators of mean and total can also be obtained with \code{\link{calibrate}}. } \note{ \code{svyglm} always returns 'model-robust' standard errors; the Horvitz-Thompson-type standard errors used everywhere in the survey package are a generalisation of the model-robust 'sandwich' estimators. In particular, a quasi-Poisson \code{svyglm} will return correct standard errors for relative risk regression models. } \note{ This function does not return the same standard error estimates for the regression estimator of population mean and total as some textbooks, or SAS. However, it does give the same standard error estimator as estimating the mean or total with calibrated weights. In particular, under simple random sampling with or without replacement there is a simple rescaling of the mean squared residual to estimate the mean squared error of the regression estimator. The standard error estimate produced by \code{predict.svyglm} has very similar (asymptotically identical) expected value to the textbook estimate, and has the advantage of being applicable when the supplied \code{newdata} are not the population mean of the predictors. The difference is small when the sample size is large, but can be appreciable for small samples. You can obtain the other standard error estimator by calling \code{predict.svyglm} with the covariates set to their estimated (rather than true) population mean values. } \value{ \code{svyglm} returns an object of class \code{svyglm}. The \code{predict} method returns an object of class \code{svystat}} \author{Thomas Lumley} \seealso{ \code{\link{glm}}, which is used to do most of the work. \code{\link{regTermTest}}, for multiparameter tests \code{\link{calibrate}}, for an alternative way to specify regression estimators of population totals or means \code{\link{svyttest}} for one-sample and two-sample t-tests. } \references{ Lumley T, Scott A (2017) "Fitting Regression Models to Survey Data" Statistical Science 32: 265-278 } \examples{ data(api) dstrat<-svydesign(id=~1,strata=~stype, weights=~pw, data=apistrat, fpc=~fpc) dclus2<-svydesign(id=~dnum+snum, weights=~pw, data=apiclus2) rstrat<-as.svrepdesign(dstrat) rclus2<-as.svrepdesign(dclus2) summary(svyglm(api00~ell+meals+mobility, design=dstrat)) summary(svyglm(api00~ell+meals+mobility, design=dclus2)) summary(svyglm(api00~ell+meals+mobility, design=rstrat)) summary(svyglm(api00~ell+meals+mobility, design=rclus2)) ## use quasibinomial, quasipoisson to avoid warning messages summary(svyglm(sch.wide~ell+meals+mobility, design=dstrat, family=quasibinomial())) ## Compare regression and ratio estimation of totals api.ratio <- svyratio(~api.stu,~enroll, design=dstrat) pop<-data.frame(enroll=sum(apipop$enroll, na.rm=TRUE)) npop <- nrow(apipop) predict(api.ratio, pop$enroll) ## regression estimator is less efficient api.reg <- svyglm(api.stu~enroll, design=dstrat) predict(api.reg, newdata=pop, total=npop) ## same as calibration estimator svytotal(~api.stu, calibrate(dstrat, ~enroll, pop=c(npop, pop$enroll))) ## svyglm can also reproduce the ratio estimator api.reg2 <- svyglm(api.stu~enroll-1, design=dstrat, family=quasi(link="identity",var="mu")) predict(api.reg2, newdata=pop, total=npop) ## higher efficiency by modelling variance better api.reg3 <- svyglm(api.stu~enroll-1, design=dstrat, family=quasi(link="identity",var="mu^3")) predict(api.reg3, newdata=pop, total=npop) ## true value sum(apipop$api.stu) } \keyword{regression}% at least one, from doc/KEYWORDS \keyword{survey}% at least one, from doc/KEYWORDS survey/man/calibrate.Rd0000644000176200001440000003566213707703671014626 0ustar liggesusers\name{calibrate} \alias{calibrate.survey.design2} \alias{calibrate.svyrep.design} %\alias{is.calibrated} \alias{calibrate} %\alias{regcalibrate.survey.design2} %\alias{regcalibrate.svyrep.design} %\alias{regcalibrate} \alias{calibrate.twophase} \alias{grake} \alias{cal_names} %- Also NEED an '\alias' for EACH other topic documented here. \title{Calibration (GREG) estimators} \description{ Calibration, generalized raking, or GREG estimators generalise post-stratification and raking by calibrating a sample to the marginal totals of variables in a linear regression model. This function reweights the survey design and adds additional information that is used by \code{svyrecvar} to reduce the estimated standard errors. } \usage{ calibrate(design,...) \method{calibrate}{survey.design2}(design, formula, population, aggregate.stage=NULL, stage=0, variance=NULL, bounds=c(-Inf,Inf), calfun=c("linear","raking","logit"), maxit=50,epsilon=1e-7,verbose=FALSE,force=FALSE,trim=NULL, bounds.const=FALSE, sparse=FALSE,...) \method{calibrate}{svyrep.design}(design, formula, population,compress=NA, aggregate.index=NULL, variance=NULL, bounds=c(-Inf,Inf), calfun=c("linear","raking","logit"), maxit=50, epsilon=1e-7, verbose=FALSE,force=FALSE,trim=NULL, bounds.const=FALSE, sparse=FALSE,...) \method{calibrate}{twophase}(design, phase=2,formula, population, calfun=c("linear","raking","logit","rrz"),...) grake(mm,ww,calfun,eta=rep(0,NCOL(mm)),bounds,population,epsilon, verbose,maxit,variance=NULL) cal_names(formula,design,...) } %- maybe also 'usage' for other objects documented here. \arguments{ \item{design}{Survey design object} \item{formula}{Model formula for calibration model, or list of formulas for each margin} \item{population}{Vectors of population column totals for the model matrix in the calibration model, or list of such vectors for each cluster, or list of tables for each margin. Required except for two-phase designs} \item{compress}{compress the resulting replicate weights if \code{TRUE} or if \code{NA} and weights were previously compressed} \item{stage}{See Details below} \item{variance}{Coefficients for variance in calibration model (heteroskedasticity parameters) (see Details below)} \item{aggregate.stage}{An integer. If not \code{NULL}, make calibration weights constant within sampling units at this stage.} \item{aggregate.index}{A vector or one-sided formula. If not \code{NULL}, make calibration weights constant within levels of this variable} \item{bounds}{Bounds for the calibration weights, optional except for \code{calfun="logit"}} \item{bounds.const}{Should be \code{TRUE} if \code{bounds} have been spcified as constant values rather than multiplicative values} \item{trim}{Weights outside this range will be trimmed to these bounds.} \item{...}{Options for other methods} \item{calfun}{Calibration function: see below} \item{maxit}{Number of iterations} \item{epsilon}{Tolerance in matching population total. Either a single number or a vector of the same length as \code{population}} \item{verbose}{Print lots of uninteresting information} \item{force}{Return an answer even if the specified accuracy was not achieved} \item{phase}{Phase of a two-phase design to calibrate (only \code{phase=2} currently implemented.)} \item{mm}{Model matrix} \item{ww}{Vector of weights} \item{eta}{Starting values for iteration} \item{sparse}{Use sparse matrices for faster computation} } \details{ The \code{formula} argument specifies a model matrix, and the \code{population} argument is the population column sums of this matrix. The function \code{cal_names} shows what the column names of this model matrix will be. For the important special case where the calibration totals are (possibly overlapping) marginal tables of factor variables, as in classical raking, the \code{formula} and \code{population} arguments may be lists in the same format as the input to \code{\link{rake}}. If the \code{population} argument has a names attribute it will be checked against the names produced by \code{model.matrix(formula)} and reordered if necessary. This protects against situations where the (locale-dependent) ordering of factor levels is not what you expected. Numerical instabilities may result if the sampling weights in the \code{design} object are wrong by multiple orders of magnitude. The code now attempts to rescale the weights first, but it is better for the user to ensure that the scale is reasonable. The \code{calibrate} function implements linear, bounded linear, raking, bounded raking, and logit calibration functions. All except unbounded linear calibration use the Newton-Raphson algorithm described by Deville et al (1993). This algorithm is exposed for other uses in the \code{grake} function. Unbounded linear calibration uses an algorithm that is less sensitive to collinearity. The calibration function may be specified as a string naming one of the three built-in functions or as an object of class \code{calfun}, allowing user-defined functions. See \code{\link{make.calfun}} for details. The \code{bounds} argument can be specified as global upper and lower bounds e.g \code{bounds=c(0.5, 2)} or as a list with lower and upper vectors e.g. \code{bounds=list(lower=lower, upper=upper)}. This allows for individual boundary constraints for each unit. The lower and upper vectors must be the same length as the input data. The bounds can be specified as multiplicative values or constant values. If constant, \code{bounds.const} must be set to \code{TRUE}. Calibration with bounds, or on highly collinear data, may fail. If \code{force=TRUE} the approximately calibrated design object will still be returned (useful for examining why it failed). A failure in calibrating a set of replicate weights when the sampling weights were successfully calibrated will give only a warning, not an error. When calibration to the desired set of bounds is not possible, another option is to trim weights. To do this set \code{bounds} to a looser set of bounds for which calibration is achievable and set \code{trim} to the tighter bounds. Weights outside the bounds will be trimmed to the bounds, and the excess weight distributed over other observations in proportion to their sampling weight (and so this may put some other observations slightly over the trimming bounds). The projection matrix used in computing standard errors is based on the feasible bounds specified by the \code{bounds} argument. See also \code{\link{trimWeights}}, which trims the final weights in a design object rather than the calibration adjustments. For two-phase designs \code{calfun="rrz"} estimates the sampling probabilities using logistic regression as described by Robins et al (1994). \code{\link{estWeights}} will do the same thing. Calibration may result in observations within the last-stage sampling units having unequal weight even though they necessarily are sampled together. Specifying \code{aggegrate.stage} ensures that the calibration weight adjustments are constant within sampling units at the specified stage; if the original sampling weights were equal the final weights will also be equal. The algorithm is as described by Vanderhoeft (2001, section III.D). Specifying \code{aggregate.index} does the same thing for replicate weight designs; a warning will be given if the original weights are not constant within levels of \code{aggregate.index}. In a model with two-stage sampling, population totals may be available for the PSUs actually sampled, but not for the whole population. In this situation, calibrating within each PSU reduces with second-stage contribution to variance. This generalizes to multistage sampling. The \code{stage} argument specifies which stage of sampling the totals refer to. Stage 0 is full population totals, stage 1 is totals for PSUs, and so on. The default, \code{stage=NULL} is interpreted as stage 0 when a single population vector is supplied and stage 1 when a list is supplied. Calibrating to PSU totals will fail (with a message about an exactly singular matrix) for PSUs that have fewer observations than the number of calibration variables. The variance in the calibration model may depend on covariates. If \code{variance=NULL} the calibration model has constant variance. If \code{variance} is not \code{NULL} it specifies a linear combination of the columns of the model matrix and the calibration variance is proportional to that linear combination. Alternatively \code{variance} can be specified as a vector of values the same length as the input data specifying a heteroskedasticity parameter for each unit. The design matrix specified by formula (after any aggregation) must be of full rank, with one exception. If the population total for a column is zero and all the observations are zero the column will be ignored. This allows the use of factors where the population happens to have no observations at some level. In a two-phase design, \code{population} may be omitted when \code{phase=2}, to specify calibration to the phase-one sample. If the two-phase design object was constructed using the more memory-efficient \code{method="approx"} argument to \code{\link{twophase}}, calibration of the first phase of sampling to the population is not supported. } \value{ A survey design object. } \references{ Breslow NE, Lumley T, Ballantyne CM, Chambless LE, Kulich M. Using the whole cohort in the analysis of case-cohort data. Am J Epidemiol. 2009;169(11):1398-1405. doi:10.1093/aje/kwp055 Deville J-C, Sarndal C-E, Sautory O (1993) Generalized Raking Procedures in Survey Sampling. JASA 88:1013-1020 Kalton G, Flores-Cervantes I (2003) "Weighting methods" J Official Stat 19(2) 81-97 Lumley T, Shaw PA, Dai JY (2011) "Connections between survey calibration estimators and semiparametric models for incomplete data" International Statistical Review. 79:200-220. (with discussion 79:221-232) Sarndal C-E, Swensson B, Wretman J. "Model Assisted Survey Sampling". Springer. 1991. Rao JNK, Yung W, Hidiroglou MA (2002) Estimating equations for the analysis of survey data using poststratification information. Sankhya 64 Series A Part 2, 364-378. Robins JM, Rotnitzky A, Zhao LP. (1994) Estimation of regression coefficients when some regressors are not always observed. Journal of the American Statistical Association, 89, 846-866. Vanderhoeft C (2001) Generalized Calibration at Statistics Belgium. Statistics Belgium Working Paper No 3. } \seealso{ \code{\link{postStratify}}, \code{\link{rake}} for other ways to use auxiliary information \code{\link{twophase}} and \code{vignette("epi")} for an example of calibration in two-phase designs \code{survey/tests/kalton.R} for examples replicating those in Kalton & Flores-Cervantes (2003) \code{\link{make.calfun}} for user-defined calibration distances. \code{\link{trimWeights}} to trim final weights rather than calibration adjustments. } \examples{ data(api) dclus1<-svydesign(id=~dnum, weights=~pw, data=apiclus1, fpc=~fpc) cal_names(~stype, dclus1) pop.totals<-c(`(Intercept)`=6194, stypeH=755, stypeM=1018) ## For a single factor variable this is equivalent to ## postStratify (dclus1g<-calibrate(dclus1, ~stype, pop.totals)) svymean(~api00, dclus1g) svytotal(~enroll, dclus1g) svytotal(~stype, dclus1g) ## Make weights constant within school district (dclus1agg<-calibrate(dclus1, ~stype, pop.totals, aggregate=1)) svymean(~api00, dclus1agg) svytotal(~enroll, dclus1agg) svytotal(~stype, dclus1agg) ## Now add sch.wide cal_names(~stype+sch.wide, dclus1) (dclus1g2 <- calibrate(dclus1, ~stype+sch.wide, c(pop.totals, sch.wideYes=5122))) svymean(~api00, dclus1g2) svytotal(~enroll, dclus1g2) svytotal(~stype, dclus1g2) ## Finally, calibrate on 1999 API and school type cal_names(~stype+api99, dclus1) (dclus1g3 <- calibrate(dclus1, ~stype+api99, c(pop.totals, api99=3914069))) svymean(~api00, dclus1g3) svytotal(~enroll, dclus1g3) svytotal(~stype, dclus1g3) ## Same syntax with replicate weights rclus1<-as.svrepdesign(dclus1) (rclus1g3 <- calibrate(rclus1, ~stype+api99, c(pop.totals, api99=3914069))) svymean(~api00, rclus1g3) svytotal(~enroll, rclus1g3) svytotal(~stype, rclus1g3) (rclus1agg3 <- calibrate(rclus1, ~stype+api99, c(pop.totals,api99=3914069), aggregate.index=~dnum)) svymean(~api00, rclus1agg3) svytotal(~enroll, rclus1agg3) svytotal(~stype, rclus1agg3) ### ## Bounded weights range(weights(dclus1g3)/weights(dclus1)) dclus1g3b <- calibrate(dclus1, ~stype+api99, c(pop.totals, api99=3914069),bounds=c(0.6,1.6)) range(weights(dclus1g3b)/weights(dclus1)) svymean(~api00, dclus1g3b) svytotal(~enroll, dclus1g3b) svytotal(~stype, dclus1g3b) ## Individual boundary constraints as constant values # the first weight will be bounded at 40, the rest free to move bnds <- list( lower = rep(-Inf, nrow(apiclus1)), upper = c(40, rep(Inf, nrow(apiclus1)-1))) head(weights(dclus1g3)) dclus1g3b1 <- calibrate(dclus1, ~stype+api99, c(pop.totals, api99=3914069), bounds=bnds, bounds.const=TRUE) head(weights(dclus1g3b1)) svytotal(~api.stu, dclus1g3b1) ## trimming dclus1tr <- calibrate(dclus1, ~stype+api99, c(pop.totals, api99=3914069), bounds=c(0.5,2), trim=c(2/3,3/2)) svymean(~api00+api99+enroll, dclus1tr) svytotal(~stype,dclus1tr) range(weights(dclus1tr)/weights(dclus1)) rclus1tr <- calibrate(rclus1, ~stype+api99, c(pop.totals, api99=3914069), bounds=c(0.5,2), trim=c(2/3,3/2)) svymean(~api00+api99+enroll, rclus1tr) svytotal(~stype,rclus1tr) ## Input in the same format as rake() for classical raking pop.table <- xtabs(~stype+sch.wide,apipop) pop.table2 <- xtabs(~stype+comp.imp,apipop) dclus1r<-rake(dclus1, list(~stype+sch.wide, ~stype+comp.imp), list(pop.table, pop.table2)) gclus1r<-calibrate(dclus1, formula=list(~stype+sch.wide, ~stype+comp.imp), population=list(pop.table, pop.table2),calfun="raking") svymean(~api00+stype, dclus1r) svymean(~api00+stype, gclus1r) ## generalised raking dclus1g3c <- calibrate(dclus1, ~stype+api99, c(pop.totals, api99=3914069), calfun="raking") range(weights(dclus1g3c)/weights(dclus1)) (dclus1g3d <- calibrate(dclus1, ~stype+api99, c(pop.totals, api99=3914069), calfun=cal.logit, bounds=c(0.5,2.5))) range(weights(dclus1g3d)/weights(dclus1)) ## Ratio estimators are calibration estimators dstrat<-svydesign(id=~1,strata=~stype, weights=~pw, data=apistrat, fpc=~fpc) svytotal(~api.stu,dstrat) common<-svyratio(~api.stu, ~enroll, dstrat, separate=FALSE) predict(common, total=3811472) pop<-3811472 ## equivalent to (common) ratio estimator dstratg1<-calibrate(dstrat,~enroll-1, pop, variance=1) svytotal(~api.stu, dstratg1) # Alternatively specifying the heteroskedasticity parameters directly dstratgh <- calibrate(dstrat,~enroll-1, pop, variance=apistrat$enroll) svytotal(~api.stu, dstratgh) } \keyword{survey}% at least one, from doc/KEYWORDS \keyword{manip}% __ONLY ONE__ keyword per line survey/TODO0000644000176200001440000000407013006756255012311 0ustar liggesusersPossible additional developments in no particular order: --------------------------------------------------------- [done?] options to handle quantiles in rounded continuous data like SUDAAN does (if I can work out what it does). - Score-based confidence intervals for glms [mostly done] Rao-Scott-type tests for glms. [done] AIC/BIC - better choice of denominator df for tests [done] More general HT estimator for sampling without replacement - using joint inclusion probabilities - using population first-order inclusion probabilities and Hartley-Rao approximation - using Overton's approximation and sample inclusion probabilities - using Berger's approximation and sample inclusion probabilities. - GEE (you can do the independence working model just as another level of clustering). - an interface to the Auckland semiparametric approach to two-phase designs. - Parametric survival models (you can do these with svymle) - linear mixed models? - simpler case: multilevel model following sampling design - nested model exactly matching design - design is simpler than model - interesting case: separate model and sampling designs. - cluster sampling, so that higher-order sampling probabilities are available - more general sampling. [done] standard errors for survival curves, particularly in two-phase studies - an interface to twophase and calibrate for IPTW estimation. - Replicate weights for two-phase designs [done] and for multistage designs with large sampling fraction (Fukuoka's BBE?) [experimental] parallel processing for replicate weights, svyby(), svyrecvar()? - Gini index and other summaries of concentration and inequality. - Krista Giles' respondent-driven sampling estimators? [done] database-backed designs for replicate weights. - Multivariate statistics [done] principal components [experimental] factor analysis [done in lavaan.survey package] SEMs? ########## things to fix ################ Use naresid() to get better missing-value handling in svyglm, panel.svysmooth, etc survey/DESCRIPTION0000755000176200001440000000203014424413332013313 0ustar liggesusersPackage: survey Title: Analysis of Complex Survey Samples Description: Summary statistics, two-sample tests, rank tests, generalised linear models, cumulative link models, Cox models, loglinear models, and general maximum pseudolikelihood estimation for multistage stratified, cluster-sampled, unequally weighted survey samples. Variances by Taylor series linearisation or replicate weights. Post-stratification, calibration, and raking. Two-phase subsampling designs. Graphics. PPS sampling without replacement. Version: 4.2-1 Author: Thomas Lumley Maintainer: "Thomas Lumley" License: GPL-2 | GPL-3 Depends: R (>= 3.5.0), grid, methods, Matrix, survival Imports: stats, graphics, splines, lattice, minqa, numDeriv, mitools (>= 2.4) Suggests: foreign, MASS, KernSmooth, hexbin, RSQLite, quantreg, parallel, CompQuadForm, DBI, AER URL: http://r-survey.r-forge.r-project.org/survey/ NeedsCompilation: no Packaged: 2023-05-02 22:56:29 UTC; tlum005 Repository: CRAN Date/Publication: 2023-05-03 08:10:02 UTC survey/build/0000755000176200001440000000000014424312435012710 5ustar liggesuserssurvey/build/vignette.rds0000644000176200001440000000055414424312435015253 0ustar liggesusersRN0t@/!?T*p WlSKm섐́M&~ڻˈ( Hmc!Deɓ,Pkۂ jXI+0|31yf5om3c[ZO׹>L\vٛ)5NfKeZ/dV5@&kܖx>vʁMEܷsQS{,C黯hOX|zlQd<@U*[hhT9Np8m6ÎYQl2xZsurvey/tests/0000755000176200001440000000000014412404246012752 5ustar liggesuserssurvey/tests/toy_example_for_postStratify.R0000644000176200001440000000307313743413447021100 0ustar liggesuserslibrary(survey) # Dummy data for testing nonresponse adjustments toy <- data.frame(id = 1:10, dummy = 1, class = c(rep("A", 5), rep("B", 5)), responded = c(rep(TRUE, 8), FALSE, FALSE), weight = rep(100, 10)) # With jackknife replicate weights toy_repweights <- matrix(rep(1000/9, 100), nrow = 10) diag(toy_repweights) <- rep(0, 10) # Scramble up which person is in which jackknife group toy_repweights <- toy_repweights[sample(1:10, size = 10), ] toy_design <- svrepdesign(variables = toy[, 1:4], weights = toy$weight, repweights = toy_repweights, type = "JK1", scale = 0.9) # Get the sum of the weights for the full sample poptotals <- as.data.frame(svyby(formula = ~dummy, by = ~class, design = toy_design, FUN = survey::svytotal)) poptotals$Freq <- poptotals$dummy poptotals$dummy <- NULL poptotals$se <- NULL # Adjust the weights of the responding sample to match to the full sample adjusted <- postStratify(design = subset(toy_design, responded), strata = ~class, population = poptotals) # This works for the weights... svyby(formula = ~dummy, by = ~class, design = adjusted, FUN = survey::svytotal) # ...and some, but not all, the replicate weights stopifnot(all.equal(colSums(toy_design$repweights), colSums(adjusted$repweights))) survey/tests/datos_ejemplo.rds0000755000176200001440000001307713676531067016341 0ustar liggesusers] XTUQds DLMILAD]s J2s%si}-ܲ@f()/Xay3\fyY߻P(vu ~Tԍ!t7 ] Q,NkkDzy('&YX K>a>EQ+o m/YZS3X|GD}S|G#A}Vj3q{;K}F;e1+BXA.A_B&Ţ15#k ׌kWZPG}L;?ʍy(H@g_q扨J&[0?Y< eut*}IH <4B!HT0)h73vy*XLJN_n}_Z,餕I (_5=A~GhbܾJ&yx<ڂKkkh'c¼ZbIhn=3^:n<^_!Y! 5Brp;R+ O#'$6oX/ԙ !Xd ˉz!_= cIgܟ"5IJA\?(o6 {E}IW%Ts1v*4՝a}S2i#FFPaIV)Ǫ22T9ɡʜ#23Rr( GffUCr*G~W l~R^3;ϧi|i{͵U[j-]r v}:קœ+[n-*XTzX|cK=^9枫xS_[[oSRxO?7͍־'kVnp?gϳKk/ZkߟV\|Vu|Q?hިlŸ[St1Az^3^b!y fę6G*N,TWa~*gqcgE:ayzEF`n_Y LۿIy/[ rS}z> ٥ܶ0QӲ[Χ-okـ`7yq{|8he/$Ī_MP=zDo?'a#zy9І@> gz9yj$WNf|VUD  ^*_^ؠ xv>2Omd; #Cq*3ث(4čړqy#[f Mׇ?<#DE+,Lq<Н=|ˣvN^^``BZ#bл'ԟA0yKl7}`#OQ5QzyW5>oϱOf&ۦ1iuk0qWeW$!},;3Ou+n,SP4![E{'|[(yDzaqm!@`%Y=xUnFgh87`T~8o5? }d,¾¿ڿR d W!QO=4ΡSV^w$Oqc7je6:~A~wX3cxY6STmu%f㔎G '#跓|v>w.[n_h:/]'KH: uN B'^Fz5^[ݛ B} z?NyXVɟVĔ^As#SlK u(? ܻӼXՂ/ P׀D|r՛~=^&'"S Aِw O%ja&yNNu?-~~?EgH!4^U#ԙeʤ,UFNG Ə~VV%g*UJu05+3)]^rJ2%GRg*:lSym=w'_c|[X_|kX5Z׊Ebݻ7babvq>r"CDyF(yX/ GÐƶ'gQ<]}vjw~55l-QOv8 pl we6D%l/F^+>q r[FF:=oYaj`7٦at^ǺeX[lW`<8OxTq{p o2ƶ/#[,4P[C"]ϫPDq7yA%u>s >ӏ%;W]ON~saj*yEK^oe-M=^nyΖ"We+#7QixG Kv'kNkQdQq_ױ ̈]wyNYcrͩYQ}i9BB{9:k+[7q%I9I|Ur;uʛΘr>ﺚ7< 塐ߵDx mEޑxtGq]p8ޅF8X;dn9}kYs|ۨ{v'+?_uԢhT}tDoZ'/AoVeTgu}0m}r\3 VW6ȱ_Qx@r 4]$#$ļX.q,[lJ7 425!C|^xD6k{gw0/ʿ=0?h/LGb|na~6tze"#~XNoKx6u}\&=6MCu)r G,+l10瑸2z!h~8 8.C|8Q7׎"HF&E#ȃq X7A:^T/mۻ?ywsu!P&E.ǸA-C=gl{.?{/_o{u;\KŔ_G@VoEw߻/6MCA̱ϟ;{yӨYaɺ{(hӜ] TM׼aݐE}}u^3?ݶN0 yˤVܸ/PC6O)Tpv쪷qj~ ?^Q`ר A~ac2[p u.u "U> _<ܷPw9)Ix|舐HCUl{xq}`'#I)O;຦ uko9B=԰$N{V"<%~Ә ]:|{@?!@ ww:w >e"' %Uqx/ju4˃<];C}vey|π|Ey՘տzaҗ`+KPOܨf@ЪQwIU$E\vx}#N? i #ԁn_Z:'|E~#J 9o& ac|?a1Ͻ3νFBE{|~ 7t(O@\ ^^8qӂ~[W ~M~ O-WR2Dvxy[vmD{{>%y~<w1N_!oyE[z&yMJ1=yJۉ@}Q!UR_Mg.B i}Ÿ؏}?894P8<`?į.{a#<_AܹWmCn-It/AGi[6 HN1SgT3Yi#ҲT߫#}E ЅjST;1f㵇noOgy˻ubc=ΒZ?|~򍶟ݙfk?k>'X|Ydͧ߬6yggk?XɒOkX|aOo~kyxbi}bͺocc'K;^fgky~YkSy:y'V|^gϨcD*'G!~lwU''$-;C 蘬RBFfƦPrggN 0Wr2=z`&U+;ҒӲS7-w FLJ΁u|9B$ V<awsurvey/tests/check.R0000755000176200001440000000271411457435613014171 0ustar liggesuserslibrary(survey) data(fpc) ## test various possibilities for svydesign a<-svydesign(weights=~weight, ids=~psuid, strata=~stratid, variables=~x, data=fpc, nest=TRUE) a svymean(~x,a) a<-svydesign(weights=~weight, ids=~0, strata=~stratid, variables=~x, data=fpc, nest=TRUE) a svymean(~x,a) a<-svydesign(weights=1, ids=~0, strata=~stratid, variables=~x, data=fpc, nest=TRUE) a svymean(~x,a) a<-svydesign(ids=~0, strata=~stratid, variables=~x, data=fpc, nest=TRUE) a svymean(~x,a) a<-svydesign(ids=~0, strata=~stratid, prob=~I(1/weight),variables=~x, data=fpc, nest=TRUE) a svymean(~x,a) a<-svydesign(ids=~psuid, strata=~stratid, variables=~x, data=fpc, nest=TRUE) a svymean(~x,a) a<-svydesign(ids=~psuid, variables=~x, data=fpc, nest=TRUE) a svymean(~x,a) a<-svydesign(ids=~psuid, weights=~weight, variables=~x, data=fpc, nest=TRUE) a svymean(~x,a) a<-svydesign(ids=~stratid+psuid, weights=~weight, variables=~x, data=fpc) a svymean(~x,a) a<-svydesign(ids=~stratid+psuid, variables=~x, data=fpc) a svymean(~x,a) a<-svydesign(weights=fpc$weight, ids=fpc$psuid, strata=fpc$stratid, variables=fpc[,"x",drop=FALSE], nest=TRUE) a svymean(~x,a) a<-svydesign(weights=fpc$weight, ids=fpc$psuid, strata=fpc$stratid, variables=fpc[,4:6], nest=TRUE) a svymean(~x,a) a<-svydesign(weights=fpc$weight, ids=fpc$psuid, variables=fpc[,4:6], fpc=rep(27,8)) a svymean(~x,a) a<-svydesign(weights=fpc$weight, ids=fpc$psuid, strata=fpc$stratid, nest=TRUE, variables=fpc[,4:6], fpc=fpc$Nh) a svymean(~x,a) survey/tests/svyolr.R0000644000176200001440000000234014360136774014444 0ustar liggesuserslibrary(survey) ################################################################################ # Example from svyolr: runs OK data(api) dclus1<-svydesign(id=~dnum, weights=~pw, data=apiclus1, fpc=~fpc) dclus1<-update(dclus1, mealcat=cut(meals,c(0,25,50,75,100))) m<-svyolr(mealcat~avg.ed+mobility+stype, design=dclus1) m ## Use regTermTest for testing multiple parameters test<-regTermTest(m, ~avg.ed+stype, method="LRT") ################################################################################ ################################################################################ # If we wrap everything into a function: error b/c it looks for design variable # dclus1 in .GlobalEnv foo <- function(x){ dclus1<-svydesign(id=~dnum, weights=~pw, data=x, fpc=~fpc) dclus1<-update(dclus1, mealcat=cut(meals,c(0,25,50,75,100))) m<-svyolr(mealcat~avg.ed+mobility+stype, design=dclus1) ## Use regTermTest for testing multiple parameters regTermTest(m, ~avg.ed+stype, method="LRT") } # OK foo(apiclus1) # Clean-up everything but apiclus1 and foo rm(list = setdiff(ls(),c('apiclus1','foo','test'))) # Error test2<-foo(apiclus1) ################################################################################ all.equal(test,test2) survey/tests/README0000644000176200001440000000467014221463056013643 0ustar liggesusers3stage2phase.R: twophase designs with three-stage sample at phase 1 api.R: Run example(api) to check that results haven't changed bycovmat.R: Check that svyby(,covmat=TRUE) is getting the ordering of estimates correct. caleg.R: Calibration examples - calibration to information on PSUs rather than population - check that bounded weights really are bounded - check that linear calibration with error proportional to x agrees with ratio estimators check.R: Many combinations of options for svydesign deff.R: Regression test on design effects, especially for totals DBIcheck.R: Check that we get the same results for SQLite-backed and in-memory versions of the API data. domain.R: Check that domain estimators of means and their standard errors agree with derivations as ratio and regression estimators. Repeat for calibrated and raked designs fpc.R: Many ways to specify fpc kalton.R: Calibration examples from Kalton & Flore-Cervantes, J Off Stat, 19(2) 81-97 lonely.psu.R: All the lonely PSU options multistage.R: Check that a two-stage cluster sample analysis agrees with the hand-calcuated result in Sarndal et al. nwts.R: Compare results from twophase() to published two-phase case-control example nwts-cch.R: Compare results from twophase() to case-cohort analyses in survival package. pps.R: Brewer's approximation for pps without replacement quantile.R: quantile estimation on a lognormal sample rakecheck.R: check that raking by iterative post-stratification agrees with raking using calibrate() regpredict.R: ratio and regression estimation of a total. rss_scores.R: Score test example from Rao, Scott, and Skinner (1998) scoping.R: check that svyglm and svycoxph work inside functions. survcurve.R: check that svykm and predict.coxph give the same result when a data set is doubled and the two replicates of each observation are treated as a cluster. twophase.R: separately verifiable examples of twophase studies quantile-chile.R: example of interpolating for quantiles, from Chilean stats agency na_action.R: check that svyglm works with na.action=na.exclude svyivreg-var.R: check that summary.svyivreg is finding the right variances svyolr-rake-subset.R: make sure subsets of calibrated designs get handled correctly anova-svycoxph.R: check that symbolically nested and linear-algebra versions of anova.svycoxph agree survey/tests/domain.Rout.save0000644000176200001440000001553312372250160016035 0ustar liggesusers R version 3.1.0 (2014-04-10) -- "Spring Dance" Copyright (C) 2014 The R Foundation for Statistical Computing Platform: x86_64-apple-darwin13.1.0 (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. > ## > ## Domain means can be written as ratio estimators or as regression coefficients > ## > ## This code checks that subsetting the design object gives the same results as > ## these approaches. > ## > > > library(survey) Attaching package: 'survey' The following object is masked from 'package:graphics': dotchart > data(fpc) > dfpc<-svydesign(id=~psuid,strat=~stratid,weight=~weight,data=fpc,nest=TRUE) > dsub<-subset(dfpc,x>4) > (m1<-svymean(~x,design=dsub)) mean SE x 6.195 0.7555 > > ## These should give the same domain estimates and standard errors > (m2<-svyby(~x,~I(x>4),design=dfpc, svymean,keep.var=TRUE)) I(x > 4) x se FALSE FALSE 3.314286 0.3117042 TRUE TRUE 6.195000 0.7555129 > m3<-svyglm(x~I(x>4)+0,design=dfpc) > summary(m3) Call: svyglm(formula = x ~ I(x > 4) + 0, design = dfpc) Survey design: svydesign(id = ~psuid, strat = ~stratid, weight = ~weight, data = fpc, nest = TRUE) Coefficients: Estimate Std. Error t value Pr(>|t|) I(x > 4)FALSE 3.3143 0.3117 10.63 0.000127 *** I(x > 4)TRUE 6.1950 0.7555 8.20 0.000439 *** --- Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 (Dispersion parameter for gaussian family taken to be 2.557379) Number of Fisher Scoring iterations: 2 > (m4<-svyratio(~I(x*(x>4)),~as.numeric(x>4), dfpc)) Ratio estimator: svyratio.survey.design2(~I(x * (x > 4)), ~as.numeric(x > 4), dfpc) Ratios= as.numeric(x > 4) I(x * (x > 4)) 6.195 SEs= as.numeric(x > 4) I(x * (x > 4)) 0.7555129 > stopifnot(isTRUE(all.equal(SE(m2), as.vector(SE(m3))))) > stopifnot(isTRUE(all.equal(SE(m2)[2], as.vector(SE(m4))))) > > ## with strata > data(api) > dstrat<-svydesign(id=~1, strata=~stype, weights=~pw, data=apistrat, fpc=~fpc) > m1<-svymean(~enroll, subset(dstrat, comp.imp=="Yes")) > m2<-svyglm(enroll~comp.imp-1, dstrat) > m3<- svyratio(~I(enroll*(comp.imp=="Yes")), ~as.numeric(comp.imp=="Yes"), dstrat) > stopifnot(isTRUE(all.equal(as.vector(SE(m2)["comp.impYes"]), as.vector(SE(m1))))) > stopifnot(isTRUE( all.equal(as.vector(SE(m1)), as.vector(drop(SE(m3)))))) > > ## with calibration > dclus1<-svydesign(id=~dnum, weights=~pw, data=apiclus1, fpc=~fpc) > pop.totals<-c(`(Intercept)`=6194, stypeH=755, stypeM=1018) > (dclus1g3 <- calibrate(dclus1, ~stype+api99, c(pop.totals, api99=3914069))) 1 - level Cluster Sampling design With (15) clusters. calibrate(dclus1, ~stype + api99, c(pop.totals, api99 = 3914069)) > > m1<-svymean(~api00, subset(dclus1g3, comp.imp=="Yes")) > m3<-svyratio(~I(api00*(comp.imp=="Yes")), ~as.numeric(comp.imp=="Yes"), dclus1g3) > m2<-svyglm(api00~comp.imp-1, dclus1g3) > stopifnot(isTRUE( all.equal(as.vector(SE(m2)["comp.impYes"]), as.vector(SE(m1))))) > stopifnot(isTRUE( all.equal(as.vector(SE(m1)), as.vector(drop(SE(m3)))))) > > ## with raking > pop.types <- data.frame(stype=c("E","H","M"), Freq=c(4421,755,1018)) > pop.schwide <- data.frame(sch.wide=c("No","Yes"), Freq=c(1072,5122)) > dclus1r<-rake(dclus1, list(~stype,~sch.wide), list(pop.types, pop.schwide)) > m1<-svymean(~api00, subset(dclus1r, comp.imp=="Yes")) > m2<-svyglm(api00~comp.imp-1, dclus1r) > m3<-svyratio(~I(api00*(comp.imp=="Yes")), ~as.numeric(comp.imp=="Yes"), dclus1r) > stopifnot(isTRUE( all.equal(as.vector(SE(m2)["comp.impYes"]), as.vector(SE(m1))))) > stopifnot(isTRUE( all.equal(as.vector(SE(m1)), as.vector(drop(SE(m3)))))) > > > > ## > ## based on bug report from Takahiro Tsuchiya for version 3.4 > ## > rei<-read.table(tmp<-textConnection( + " id N n.a h n.ah n.h sub y + 1 1 300 20 1 12 5 TRUE 1 + 2 2 300 20 1 12 5 TRUE 2 + 3 3 300 20 1 12 5 TRUE 3 + 4 4 300 20 1 12 5 TRUE 4 + 5 5 300 20 1 12 5 TRUE 5 + 6 6 300 20 1 12 5 FALSE NA + 7 7 300 20 1 12 5 FALSE NA + 8 8 300 20 1 12 5 FALSE NA + 9 9 300 20 1 12 5 FALSE NA + 10 10 300 20 1 12 5 FALSE NA + 11 11 300 20 1 12 5 FALSE NA + 12 12 300 20 1 12 5 FALSE NA + 13 13 300 20 2 8 3 TRUE 6 + 14 14 300 20 2 8 3 TRUE 7 + 15 15 300 20 2 8 3 TRUE 8 + 16 16 300 20 2 8 3 FALSE NA + 17 17 300 20 2 8 3 FALSE NA + 18 18 300 20 2 8 3 FALSE NA + 19 19 300 20 2 8 3 FALSE NA + 20 20 300 20 2 8 3 FALSE NA + "), header=TRUE) > close(tmp) > > > des.rei2 <- twophase(id=list(~id,~id), strata=list(NULL,~h), + fpc=list(~N,NULL), subset=~sub, data=rei, method="full") > tot2<- svytotal(~y, subset(des.rei2, y>3)) > > rei$y<-rei$y*(rei$y>3) > ## based on Sarndal et al (9.4.14) > rei$w.ah <- rei$n.ah / rei$n.a > a.rei <- aggregate(rei, by=list(rei$h), mean, na.rm=TRUE) > a.rei$S.ysh <- tapply(rei$y, rei$h, var, na.rm=TRUE) > a.rei$y.u <- sum(a.rei$w.ah * a.rei$y) > V <- with(a.rei, sum(N * (N-1) * ((n.ah-1)/(n.a-1) - (n.h-1)/(N-1)) * w.ah * S.ysh / n.h)) > V <- V + with(a.rei, sum(N * (N-n.a) * w.ah * (y - y.u)^2 / (n.a-1))) > > a.rei$f.h<-with(a.rei, n.h/n.ah) > Vphase2<-with(a.rei, sum(N*N*w.ah^2* ((1-f.h)/n.h) *S.ysh)) > > a.rei$f<-with(a.rei, n.a/N) > a.rei$delta.h<-with(a.rei, (1/n.h)*(n.a-n.ah)/(n.a-1)) > Vphase1<-with(a.rei, sum(N*N*((1-f)/n.a)*( w.ah*(1-delta.h)*S.ysh+ ((n.a)/(n.a-1))*w.ah*(y-y.u)^2))) > > V [1] 70761.47 > Vphase1 [1] 44325.47 > Vphase2 [1] 26436 > vcov(tot2) [,1] [1,] 70761.47 attr(,"phases") attr(,"phases")$phase1 [,1] [1,] 44325.47 attr(,"phases")$phase2 [,1] [1,] 26436 > > ## comparing to regression > reg<-svyglm(y~I(y<4), design=des.rei2) > mn<-svymean(~y, subset(des.rei2,y>3)) > all.equal(as.vector(coef(reg))[1],as.vector(coef(mn))) [1] TRUE > all.equal(as.vector(SE(reg))[1],as.vector(SE(mn))) [1] TRUE > vcov(mn) [,1] [1,] 0.3292258 attr(,"phases") attr(,"phases")$phase1 [,1] [1,] 0.1599264 attr(,"phases")$phase2 [,1] [1,] 0.1692994 > vcov(reg) (Intercept) I(y < 4)TRUE (Intercept) 0.3292258 -0.3292258 I(y < 4)TRUE -0.3292258 0.5901907 attr(,"phases") attr(,"phases")$phase1 (Intercept) I(y < 4)TRUE (Intercept) 0.1599264 -0.1599264 I(y < 4)TRUE -0.1599264 0.2588542 attr(,"phases")$phase2 (Intercept) I(y < 4)TRUE (Intercept) 0.1692994 -0.1692994 I(y < 4)TRUE -0.1692994 0.3313365 > > > proc.time() user system elapsed 1.707 0.055 1.778 survey/tests/twophase.R0000644000176200001440000001176213423662360014742 0ustar liggesuserslibrary(survey) ## two-phase simple random sampling. data(pbc, package="survival") pbc$id<-1:nrow(pbc) pbc$randomized<-with(pbc, !is.na(trt) & trt>-9) (d2pbc<-twophase(id=list(~id,~id), data=pbc, subset=~I(!randomized))) m<-svymean(~bili, d2pbc) all.equal(as.vector(coef(m)),with(pbc, mean(bili[!randomized]))) all.equal(as.vector(SE(m)), with(pbc, sd(bili[!randomized])/sqrt(sum(!randomized))), tolerance=0.002) ## two-stage sampling as two-phase data(mu284) ii<-with(mu284, c(1:15, rep(1:5,n2[1:5]-3))) mu284.1<-mu284[ii,] mu284.1$id<-1:nrow(mu284.1) mu284.1$sub<-rep(c(TRUE,FALSE),c(15,34-15)) dmu284<-svydesign(id=~id1+id2,fpc=~n1+n2, data=mu284) ## first phase cluster sample, second phase stratified within cluster (d2mu284<-twophase(id=list(~id1,~id),strata=list(NULL,~id1), fpc=list(~n1,NULL),data=mu284.1,subset=~sub,method="approx")) (d22mu284<-twophase(id=list(~id1,~id),strata=list(NULL,~id1), fpc=list(~n1,NULL),data=mu284.1,subset=~sub,method="full")) summary(d2mu284) t1<-svytotal(~y1, dmu284) t2<-svytotal(~y1, d2mu284) t22<-svytotal(~y1,d22mu284) m1<-svymean(~y1, dmu284) m2<-svymean(~y1, d2mu284) m22<-svymean(~y1, d22mu284) all.equal(coef(t1),coef(t2)) all.equal(coef(t1),coef(t22)) all.equal(coef(m1),coef(m2)) all.equal(coef(m1),coef(m22)) all.equal(as.vector(SE(m1)),as.vector(SE(m2))) all.equal(as.vector(SE(m1)),as.vector(SE(m22))) all.equal(as.vector(SE(t1)),as.vector(SE(t2))) all.equal(as.vector(SE(t1)),as.vector(SE(t22))) ## case-cohort design ##this example requires R 2.3.1 or later for cch and data. library("survival") data(nwtco, package="survival") ## unstratified, equivalent to Lin & Ying (1993) print(dcchs<-twophase(id=list(~seqno,~seqno), strata=list(NULL,~rel), subset=~I(in.subcohort | rel), data=nwtco)) cch1<-svycoxph(Surv(edrel,rel)~factor(stage)+factor(histol)+I(age/12), design=dcchs) dcchs2<-twophase(id=list(~seqno,~seqno), strata=list(NULL,~rel), subset=~I(in.subcohort | rel), data=nwtco,method="approx") cch1.2<-svycoxph(Surv(edrel,rel)~factor(stage)+factor(histol)+I(age/12), design=dcchs) all.equal(coef(cch1),coef(cch1.2)) all.equal(SE(cch1),SE(cch1.2)) ## Using survival::cch subcoh <- nwtco$in.subcohort selccoh <- with(nwtco, rel==1|subcoh==1) ccoh.data <- nwtco[selccoh,] ccoh.data$subcohort <- subcoh[selccoh] cch2<-cch(Surv(edrel, rel) ~ factor(stage) + factor(histol) + I(age/12), data =ccoh.data, subcoh = ~subcohort, id=~seqno, cohort.size=4028, method="LinYing", robust=TRUE) print(all.equal(as.vector(coef(cch1)),as.vector(coef(cch2)))) ## cch has smaller variances by a factor of 1.0005 because ## there is a (n/(n-1)) in the survey phase1 varianace print(all.equal(as.vector(SE(cch1)), as.vector(SE(cch2)),tolerance=0.0006)) ## bug report from Takahiro Tsuchiya for version 3.4 ## We used to not match Sarndal exactly, because our old phase-one ## estimator had a small bias for finite populations rei<-read.table(tmp<-textConnection( " id N n.a h n.ah n.h sub y 1 1 300 20 1 12 5 TRUE 1 2 2 300 20 1 12 5 TRUE 2 3 3 300 20 1 12 5 TRUE 3 4 4 300 20 1 12 5 TRUE 4 5 5 300 20 1 12 5 TRUE 5 6 6 300 20 1 12 5 FALSE NA 7 7 300 20 1 12 5 FALSE NA 8 8 300 20 1 12 5 FALSE NA 9 9 300 20 1 12 5 FALSE NA 10 10 300 20 1 12 5 FALSE NA 11 11 300 20 1 12 5 FALSE NA 12 12 300 20 1 12 5 FALSE NA 13 13 300 20 2 8 3 TRUE 6 14 14 300 20 2 8 3 TRUE 7 15 15 300 20 2 8 3 TRUE 8 16 16 300 20 2 8 3 FALSE NA 17 17 300 20 2 8 3 FALSE NA 18 18 300 20 2 8 3 FALSE NA 19 19 300 20 2 8 3 FALSE NA 20 20 300 20 2 8 3 FALSE NA "), header=TRUE) close(tmp) des.rei <- twophase(id=list(~id,~id), strata=list(NULL,~h), fpc=list(~N,NULL), subset=~sub, data=rei, method="approx") tot<- svytotal(~y, des.rei) des.rei2 <- twophase(id=list(~id,~id), strata=list(NULL,~h), fpc=list(~N,NULL), subset=~sub, data=rei) tot2<- svytotal(~y, des.rei2) ## based on Sarndal et al (9.4.14) rei$w.ah <- rei$n.ah / rei$n.a a.rei <- aggregate(rei, by=list(rei$h), mean, na.rm=TRUE) a.rei$S.ysh <- tapply(rei$y, rei$h, var, na.rm=TRUE) a.rei$y.u <- sum(a.rei$w.ah * a.rei$y) V <- with(a.rei, sum(N * (N-1) * ((n.ah-1)/(n.a-1) - (n.h-1)/(N-1)) * w.ah * S.ysh / n.h)) V <- V + with(a.rei, sum(N * (N-n.a) * w.ah * (y - y.u)^2 / (n.a-1))) a.rei$f.h<-with(a.rei, n.h/n.ah) Vphase2<-with(a.rei, sum(N*N*w.ah^2* ((1-f.h)/n.h) *S.ysh)) a.rei$f<-with(a.rei, n.a/N) a.rei$delta.h<-with(a.rei, (1/n.h)*(n.a-n.ah)/(n.a-1)) Vphase1<-with(a.rei, sum(N*N*((1-f)/n.a)*( w.ah*(1-delta.h)*S.ysh+ ((n.a)/(n.a-1))*w.ah*(y-y.u)^2))) V Vphase1 Vphase2 vcov(tot) vcov(tot2) ## phase 2 identical all.equal(Vphase2,drop(attr(vcov(tot),"phases")$phase2)) all.equal(Vphase2,drop(attr(vcov(tot2),"phases")$phase2)) ## phase 1 differs by 2.6% for old twophase estimator Vphase1/attr(vcov(tot),"phases")$phase1 all.equal(Vphase1,as.vector(attr(vcov(tot2),"phases")$phase1)) survey/tests/DBIcheck.R0000644000176200001440000000354511457435613014510 0ustar liggesusers library(survey) library(RSQLite) data(api) apiclus1$api_stu<-apiclus1$api.stu apiclus1$comp_imp<-apiclus1$comp.imp dclus1<-svydesign(id=~dnum, weights=~pw, fpc=~fpc,data=apiclus1) dbclus1<-svydesign(id=~dnum, weights=~pw, fpc=~fpc, data="apiclus1",dbtype="SQLite", dbname=system.file("api.db",package="survey")) m<-svymean(~api00+stype,dclus1) m.db<-svymean(~api00+stype, dbclus1) all.equal(coef(m),coef(m.db)) all.equal(vcov(m), vcov(m.db)) r<-svyratio(~api_stu, ~enroll, design=dclus1) r.db<-svyratio(~api_stu, ~enroll, design=dbclus1) all.equal(coef(r), coef(r.db)) all.equal(SE(r), SE(r.db)) b<-svyby(~api99+api00,~stype, design=dclus1, svymean, deff=TRUE) b.db<-svyby(~api99+api00,~stype, design=dbclus1,svymean, deff=TRUE) all.equal(coef(b), coef(b.db)) all.equal(SE(b), SE(b.db)) all.equal(deff(b), deff(b.db)) l<-svyglm(api00~api99+mobility, design=dclus1) l.db<-svyglm(api00~api99+mobility, design=dbclus1) all.equal(coef(l),coef(l.db)) all.equal(vcov(l), vcov(l.db)) dclus1<-update(dclus1, apidiff=api00-api99) dclus1<-update(dclus1, apipct= apidiff/api99) dbclus1<-update(dbclus1, apidiff=api00-api99) dbclus1<-update(dbclus1, apipct= apidiff/api99) u<-svymean(~api00+apidiff+apipct, dclus1) u.db<-svymean(~api00+apidiff+apipct, dbclus1) all.equal(u, u.db) all.equal(nrow(dclus1),nrow(dbclus1)) all.equal(nrow(subset(dclus1,stype=="E")), nrow(subset(dbclus1,stype=="E"))) ## replicate weights rclus1<-as.svrepdesign(dclus1) db_rclus1<-svrepdesign(weights=~pw, repweights="wt[1-9]+", type="JK1", scale=(1-15/757)*14/15, data="apiclus1rep",dbtype="SQLite", dbname=system.file("api.db",package="survey"),combined.weights=FALSE) m<-svymean(~api00+api99,rclus1) m.db<-svymean(~api00+api99,db_rclus1) all.equal(m,m.db) summary(db_rclus1) s<-svymean(~api00, subset(rclus1, comp_imp=="Yes")) s.db<-svymean(~api00, subset(db_rclus1, comp_imp=="Yes")) all.equal(s,s.db) survey/tests/simdata1.RData0000644000176200001440000020110013423662360015370 0ustar liggesusersxTI;%v-hp  wsjf13;t<,t[uXikۧ^&RRҡLۥuf6RgSd2E+V=ZbRXbŊ+VXbŊ+VXbŊ+VX&RZbŊ+VXbŊ+VXbŊ+wΕn׼{v]_YW[p?zBwyg֜ rm=ք P z[ :Q ~L-<ttd_C>ug6tZA@k;CkïvھAkï 3AS> =o|ZTЍ:uBgď:ou_SpHS.l.x=ȷbU=zsh|TcȦ]Fևo5;s#3)"]4@7/4@[ WnhANC Ю3@ <@ WȼFz54D=BLL$0U0S=n4D_46|-oFX֨ 8 ?66&.l i, }ײSwZ@Z.-Z"hy\ &D,h*ČV k+Ȼ5Mk|5rְY[#j+׭ўp+[0mm 6PTgAi+ mO0 qkmoNmj>j*CyW;Āvvu|t&Q>{ DƠ#G]#G; @_t@;uo u@;/ttLGGȵc#X]KvD8g:xftP'ġNE}T'wB[;5P;/0S0t7Qp} mdtN]. Kw?ΨSgΰ:_ uNww@ Obbvßt_}s'>K>NqGFA{ H% -/CV !!x_O =s  c^^PAJ/ zNF ^_B ^ zgO& 2,z#.@ }@7{}О>hK>>A[ {mw_^L_fAaAQAybT?wCѯ@c~B?[__6g{Âı < P??Pwg 14i   3 AA34BÅPP+ EF PЅ "SCBO!A#N PW !nyaQa~8 5 Ða {&@c!p? ‘)uZ1TD7A߯%bT"?"Wy77!񅉄o,-G"EŽ"EOE"D|MGB#"QH䧑!_zE H鑨O$|HTA\l _ߏ:=m [ 79A mO#~N^ @ߦ))-)=й)SsOA|X4e`n }*|TİNEn5}7q|Z0< @1uZf.+\Źh\a.:x.<ēyW  3#̇3#nG^4>|A "͇_''{ [Y Q`4~eaA`4Olx1rhbbo/-F|^|E\߱X?eeˠ0XuYfAhyty [R_YpZ[Z[Z~VT |'ʼ5Ћ5z amv6O_ XS0Ym\? `6~@]Zwl Ч#|7`'sm@<05f #o=nl6nqو`<bFƳ l.o|asO6@7UTx@+%t ' 8lF&A>cq|f8j{gf Č-:-ȵ  Mb[࿶`ܲڂlɢa?ш[{V%ǭ[C[ö:$>q+VVM@"ڊؿu_m)۶|_Q6mmx궝651g`6&?@;wy;Юs;Ɏ~`Dxom";`;;0;K!#(N9@04NA;O]750]n&i7tbwiAn0cF 9^"x$=@=YuZ8ۋg/tr db/>}:dq>{c̿ovmޟ!(o.G޿F^=ۏ~ĵ]#N@>pyrPDvutU>>Y?6<OBu(ZA8C p t?s<~]DZAzrȧN8 kON4h '&;qDɬߝD.qcI0rc"t$|IITqB'b#B~ЍX0:;2/"Ţ b' v_z!v~B?"dv9E͋K. c]RCVHp>AE*l*sA OrW!\mMbU,,Џk9Z]a}m:u ~ v~ u Peסk77nBo$ @V]O _r ;/7#n B~x  rtRo۰A6dv6vg =JFNq{ { _s| g1 ;;ݙЧ#o%]ǘ>l>}Ě'`"?*@_>D> 3g8 `S GK/@} 88ļ8#8B3 0k&@,o'@0N;{/+_yz>@7C/c|FV 0yy#gÿ#׉o15z~%kץPF:%>5kkI^#^%@{^-іȹ_L N 9[@-1 l{t}AywH=~Yd}! 2C;_coc1=2T0^y| | X_|A@o\L_F J `X >16MjP>v{ jz!h _Fƶ8A &Usg 3i`A`i`Ĥ-/ V`X΀e6`8.k ))Ah [`g_'C)AEh0 9fxd{ƌ̈~XF-@' Nbq!ؗ| !njoMTWh_&ĝ ("Xτ\f9&``& %3 G z Сe6 lli VB"86t7t#~p WhG^\({QP+!@( ;/d69ua?l%'l gIDxw0v*.gs mꞀ~_%+@{rvǂW2[.(xfnrp? @P{3 3&/"ov[uAg0^}ygق@}*~Nf~!_nAWsV|]xU̷\CT>6?:Up` іWBU!^!S!k{0lp.0Pro[ Ч [2)"Ym.v4_v-E/E!+E&̦-H#HC1F1bN %OfSW|ϖ/_*͕*пJM=^0 گ|* F Ǖ*#ר?QV T# VTAlyVE쫚YvTEUmUU#sT~jC>3v)@ lvn]v dl!?*8"؝{ؕ}*Ab=oh_M %v@,p@,ph. Ezuv8"OsKG#t s{ 9łUUNWNog9():Cv·lpɔG+ tw>NKweO  ܂[7np0 now;b(,;|;|y# ,艺{BW<sxN;y Dߕ%ylΫ B>  P^p ^^m\JG =UߕOd6* 2RIb 6B.BT W!vP'tRv6 *ءqGuK_/Ȩ :@!k5G ? Ո-j،U}YO3]i0o-`]!֢ZF:Cqnr!e=|D_ft "BN?3ߖح/| U $vWT{Vm m'gaW A55j' 1A52Q갿Vძch v ]z.Ϣ.W]g9e9cgl޵v؃+֕Q+.z[9 ֭DWxJJilb***ê2j~f5&Lvvqf-|ZZA v!} Pu_\X;7AF zĻGRbӦ܌߬x|Knu}}}ym }E7_$m$ |Şr.Эh { o+z+Vޭ ۠```m>m6ĪmPmПJ~bP1K1b(0w7@cbb1d9@1!hv4xv44u4d~tvqvq< b3g΄ w}zfIt 35g!9 9?r<<82-~b_b rXTls;ȁcb 3}Hb]D_.^.^y\B?\B.!G{ 2dzr 9\F ] B&xx 7.WWUUU跫Sx5Ĝkx5kȥЅk5|5|Tx "א\C=A3Og>y}}1 7QMM&򵛰M&&bMĄnwo!./@F [p~y퓼b|uqw@wK A888qo}A7v8|t>zSz6=<<+6`9S)bSSSg3|3ϐ?>CA{`#{ϛx ]?y ~ K///a/O/K%%K%p ^Y`k`+C7 PW}ƿ=> ^^^F}x8Ax@?ߠO |[-t>uyy4 w~@ uĺ|C}~}@?}]@l:@Ny#dyGę:m]~^>3|g33 |A|A.ġ/|9%8sҀl ' AuJfc cm: T@-^pM <7Ec.Ii>240h :mPf6=fy@>P?h  T-I@fh`v!A+'2 9~.+ւu2  ` +ɃG+g}9N[2_^t= FY{oO9yѯy_&  Wcχ>͇g P|u>V>o Agp 7'w")قEA`yI `M }[+}\xLĦ\~P@["@ʹIr(')_@67<k3|` G5FgU}2D15OM`:^Ay?rl:lQO?~2 ȗ;@`~@@/e6l #Ps'&C ZCGd6!ڰЫ[{v?A %~ j{AA賠 às;=A#u\auo>:S>>_}X6U慎6CBAb (*W3W3@ 6M} ul=kxz5bMkK16555rl9۔Sm_[Z?q~pmaCmٶSx:z=>=bY1=U{^{]G3g|:ThGzg: .w ЦxWbf厈a't *;B{: ~#|]G\GĮhGa'e'NЏB`9  F Fu,;}aϝ/:-:=;#|rg aQΐ}gO<3@ttiS.Ѝ...nW ]!h{WԽ+t+JWPF+bhWȲbq7wriѾh[wȢ;bwYwYwПȿ==Szx$6٣@z@=з==z@Wz 􀮄@~!F\*z?<.~# AB P= zBzB=Ξ{Yt^ DoqoBoBo!e~ sn~o&`g5 @@4[`78Ďa¦S LBBaw♃ BA7!> yF[CB!PPt(bQ(3: -𝡐!|o|͐6u]or0Zt, }  ahO>z#7 o cap+<mGp#Z7~q?>uPGGg@@_> O>g?~}|;}:_;8=ǡaǡ+s'3'Ig??=Xs1  l 3gg`Wg;_N<#Ţc,>E\!9\,l&{,d w❱as.@. "t"^/B`ۗ` K%%Kh%Kг{].# v |+x u1*t*tj?_~_sCЇ_aa7`7 Щ b ߛй܄ݴxM&sr\V}b-o!wq+2[[[-[mm]]]3b<}G#u[~~?F!x~>B?Bġ=qi']C|C0~Ø(n*a|??Fl~}v> t >>)bSOOȯ1Έ߉ǣ^Sx^<L Bėx ėh yy<%ᗰKKK/񞗈5/O_'DL~++Wȏ^A^^߿~9L^/^#6F g~OЭOx't|gϰϩg333d}w~F.3bg_w_2| t KVV4&e6YA6@<@mP4A7&`C/mhlE<'40{eY^Wx>/22dYAufPN@=6M6=-  Tm(0jFf( s\Lr<@  9!ۜ, l14r}__ʂr@ \"7,7>7{@ ܐk2_}\*7*- _Q. F.\ٖ)?e`SeCe e/,R9J9ȵ\?k+u#ltC/{Q>lsC0x_X]8ЏJ6z^ tl|D%ȱt|E%JʐUegeԩ2l22QmT) U[**Г*С**mPUSTT*F6m { -@_AoPG;|ofاC g;q?jOG_C=t._lp!u'zVfgǺfGWsG?#Fæ;;v>wCwz{@&>z}5v,{u9.ar[[÷y!7oؠ7 _=L=F! !>OrhA7 #TB(u4|mRT>(ӕo%ޯ;]UIf[ V uCQ ?F gS'%@uKuKu :q]Ķ:S]|.bV]uԭУl].l.t.t.U1Q^/ևlC_=awa|LȲ^``ԣ!а 5 ?a Af[4on=h 5Bᝍ4i\ttmcAcȷ1k1>q?669@cBưM< @G7j74ܚ@MMg74E5Ek7;MsSs3fUዛ~!w S gK%MK<%MK,-얈-s[VcZ6[Ag[=QְxOU bGč6em`m?mm@۬hc]-tm~n ֮j7W<lwhXf2 鄸ة?@|~J{|lM'XO2`s06`CБ`H0l,%4 F># vntv͝s@]P..s]SWYW|'%3]!O7nn]!G@` nnhc7;{wݡ[ǻCogz11 AB b1!~3~662?DD {:Fv177rސio6>P>uqUĩЗxg_`_0u E ]/BO](d"Л!C׆@W x>?qr(P<(lo(tx(|PĖPCg M E®B_BNcC!xPC{ pxF8>mE vEmxWt)6~;(ą(\碠Qo: { |< t} r))S0f6s*t*ln*8Tm*ii`_Жix4iЋiMG_L?1:z12;2b&1=9VgD}fY33g.3 3 ͂]-@[d hě{B -D=jBDžЕ? /^tD&e΍yZZKki-ZZKk[ҟZZKki-ZZKki-ZZKki-ZZKki-ZZKki-ZZKki-ZZKki-ZZKki-ZZKki-ZZKki-ZZKki-ZZKki-W~Oe-۟).vΟ]ݾuy|~/_~4𦀧GE^w]zj'|97~gJz\V_KRUZ?Sr?ݿjo?Ǟ-פ>Wi_korSrVOli=F~I;g^ï]ZgWׇ?s,69o-W_׿~v?Qk-v;JkXߟݮer뿵mt=~v&m_j;^7t+rT}~~Kzlhy'W=~<~vW_>eR*WӇ_=?>~+o[bGWGrѿ-[˟U#ߪ/jo>hg;nϖkrWϖw*?z߿]n~_~2yGݟ*g϶؍~g9{]y>K,-o}ӷ[OK$_^KSb[BrKϵtU[~^^9'_|+_K3KcRrLs,oꗾU~IeR\ryR9rIGINKە{Vb⳥ۑTM.~ KY~7oWKkR~ORʷG뇥tb0=Rv`8T{I'ծ[K{!Ttklj#IjXz$[Zo-G*zCRH^X*~I$Uϓ/_,?qRzf){H&6$=WG,?,/o?ޓI#Iޤ7ir#X}&֞ۯ%6.Y*.&^Yy-+IoZRJR MR+~6~R{Rv\8ai;QGř{QbTT^^?$5[ʯ$~J%6XJ-$j'+GK=/>yJR%ϷX(HX?&՞,egқUK{Cbc){I^orM+}ER+zXjiM&]??ZڿZJ/w,ei1L{j۞_G+RR߷TL=$CmHr1K!Kǵ>'~-T}zZڎ,WK$~_&~g %ןk }W|.[NI}>矾=YJw/-?I}[()[?MUg :?M.o$_͖{?{OK_wRt~ηIm_=g_=;r᯿?I?#{~x}O{R˟_}柞-XZK,>K[cZr7oSRsozb|hrLJo$wW}=t+,$IN]K[rܹBb$6~W?/lߒ_ zoK+og[Z *~=o?&e\?= %=Ixgo~Ԙ/c_OR#J;۟ʓӎ>3s-HfMבAg }Ŋ ǐ%S.AC#ٜTC=sn] .O:"źZbeSԡƒC(К]Ù?ʀQNo*X.'ٻkh]^|٤oAg?6~u;LK2iXkѣC:zMM7 \UόAn+wA):=Ѝ nWl/T@ 2fL~ _6ЇqdT#Iu{<:vҹW1:>xѳX~Dm!c+v'ufkGƍ)6jKRћ<:=q^*Jpn}|Smہ{)e4PH56{yھOVy[r"sdJl}YUw7AdNUp+48ɵknwZU*Ụ8h 7e#n_Αs6T9N)d<;݅ݨ<7|ͻ;%;%$2YtΧҨs4 LKRNLâSxPM2:EpbȻ I%;+~j,wҙ5utC%dV\3e>R<}u~x5d^aٯ/ITs}ݍT+ʑmh*kVo D bۍ^>U m_kFbrH4ߛd6Iޢk=8Ace2Dm6rQ -7fO܅HsX>)߾z&R>R皳ud\lӤ=bV)n7H?xYa3ەZn>{3xPz3u#ye6yGsd2MHRVJRǓ_M!Cv^"] lEj㽁fvduttÞYJ}ftxԩ4 i(cwͫA#uUɝ#;Ix[d04a̲z#IjuR_ue0)$w,!zjيd$.߿to5=.&myݥQЈkٺuȷ9RthtI*}65Ғn=R=p" #:lzFy&)nNy)Sld]0jٯN.v3R4-2c=V=Y\.w~V~ K]E/dͿ~VR{8ysyy?yt+KH{t3U%K/}L:An};]I3KJXl폌%{T)g$i ;v]Ibڽ+7> }NC] Ɽ4|z9> e&|a6~+.Dj\W`2!iR~E29/ue4 Rs7ovxhU/ǧLɿ[o]ebWoE ה׎_"vdcIUBh[#͌d|_v)'Q75Hf':&M-_CQp#oLݝHu#Y3q\dl >?*n:"t2wV?8i?x7S '] yR~QwIqWS@>$F{ɱǼ" zzd'I?g+ނ?Cgr^{lJϞe x[.2-b,dsֿ-6)d>T`)۫I78;m1-<]`jw76DM%5jF*/}GdC_7ū*Q%G2~6;yA@$q")&!Є Z{IyP.Y&n6CRF*w3簭wQr׿8U:-ˌ!-x")7tsJ.,3tye>wS`)RbDڮBbTB66O/XRyW|Ww?m{KJRU>qb*HA_Rlޡ.z⭻{2w@kk%CDYMIRM Ώ+ߚʎ:;3U]vSZ/1Cr-#|jyUѽ<\geOMפ(D"Dنс|fS᫿=ruE0 /soǶFLxUL^%;^&dJ))15 ϭjo] 窛{ <<48Ezh=k-r.F+x@;q{rPCIFrn!1 n6>}kjo, 65X5by_D72gEw\E^\y"> !)tƀ->BĈ<`xyiϓHd#}/e']hM'07$iMI6'ݒɰe:rםPgx:-&U7k~/+@=Iiki%6$/5 %܅Aٞ6#ӲI'({cGMĩI][SucSG=":_]|ڧsn)ׇ_>'sdƒqʐ`k"]gKOMXS 7 (kuTfXo/Ȅq_8Z^Ro}~O7<[Ҋ*zq(Gyy O8C}") uk-*B_ %$B>UJJ硃=}giHsM۾bʎӁkΜSifKv ip^u*^Wy'Gl3mg^]K>ui펭,U0>ёoFm)b*|[§uG f7CڃҰ1KfYxD^!)VEҧz;kTtK>Uj !]wG&A~^Dn4.BOy17/GyDU}!5ҀjÖNKr1.c䰍tOO߲ RQ^C^ֶUJ#;F{IuނC)I)GeuoIsX&0i{Foٯ'-a6:eѬN!4jB*ϫ%YJ=F%m.vE֜'^-U}*T$M{Det dK\;HԧtiHqx'7]*dV̤k"37 b߇UP:dxgw)~j6EsG5]|hv+\#mlIWcۥV-p|-VݻLW@O)9 )Rv߳Ukǐ&7nMٮc41E^I'o o۟J6{i "gz$Xi?ٯo3yuݰRB O^ O)zdrSJSǟGi=K4_L]цwFz2 Q?J@CĘhC sn"ϟ}^m3y?JZ,2W~`yyzh7SYdžrw;^1'u3mIN_b pQD;i;-X1`{cX9iHm>dͯ- XCm+g4>T<^% XnGe%ܗ2V%cwu72ޕцDW=&|KԮkmBћzXL]e{ ߝ]o>n%iSr[[YQٮ?^IkI㊬4;?+NkPKɫ =]ظ geKJ'zr!m!MG%qQSxlï1X4=T!7Dʒ}4hhGKn;=~O2,uf7[p(Şդu;s͔ aJT /\L6V$-#dIIyR@awCd/@I ~/y=,F:n+#GᾛgwJ%sSU+\JҏzÝWGܑŌӌ̎/L1YxJ_>sڐP^T=ëXr~-|:} stsgRG?~\t4vBLxxdtGI5^S_Z3,\Tl1]mEE!'<fDc=QaWI{[rg-8|^r &/jTgdxhhA~T~jɒ&%T6=g)42if+}FiG+]A7Ϡӡh"Ms 7~qtyKr߇S]ΑOyS9T|}똞dڦ߻K%sd= iA䝤Hix3^291O\1+HvYǎ|o|ygFڻ㮷.r9`@d5H_ZVjK/^7vu?]}Ƒ'_\㐮yHN8^&3+`#y>L{PӵicSj ya_:9u 2gyX>d:*|Kt86]o8H<&Nޒ̮,GT Iw3.C1l=%4M0>nOoI=b#!x`]ꢉdx[*M!kȫ!?};nkQTy^rCՁD{Jx\]& @4]dcʩMQXQƴ<;V-׮iGڶzޙY4&;ݙc09љa({}S2!os:RkEm7b.65CiCjI ݤsQy\$o֖ۑԣe<_2|fpʋ#jtD/)ҤhT0<,K:i#8;ʙ*&;/9CGi"-4&=%f2,_Xxz{iZt3όO>U_#2fZg1ds+c-R ͅ5SKvb;K,9xзO@ԓx3ۏa)")wۖ]1"@>*-w;1#mmOq4\h!~Ʈ z[^_u.-Mۆc"5BQ}R[g^3%Fŧ ѲDy?oi;uLbvG%-ēyIH^"%mR쬜wUA-͕\y[߇OMa.>1dlVyl% |ǎוՍ4Y{9.isT\rQCWǤL}"㘝ۤi<b?!oA}QyY|ϟ JjgKN>vd.%-g$Li| 롿>p_5bDEE;tK*DD ʖ@ҥN\cC;Ԛ|4Ԗux?ޗ"mkA5&67kɘCM:H{>m*m(f(1%'ks[(54bxTJ7Z-V`1oqqy;inV˹D]IxՕAG\"I)iÅt9r8y}`4}ZrZ}kyH;}nJ &M?$$Fz2ozN䛙 RZþ1yC<3-0.]&R<ƭqr.p>#]O6%%Ob{M7܉\5֊ GK.de;#X}P@ҍUaWy^G'+V24 d1UKbvq+2t[>6w*c_A4WژL$wjOzsg]U -ƷBnCeT ̧=oKzqxyX\cХ}nx􁭃 Wn\ Aoz~{0Yֺ#Sߪ|6EAP'JRc.md:SQJ>DJ vK>/r?/ Gu[Yte}NC?kNq$}J̗}\b.!$)I:j}4;{.4y^v#IMFRz>4\S>'ZF`IȐ8g_x~ON1GoMxƸ"gIu;#I>wyJHݝ ' 쐎u&кtD/8m U M%z!c_iլ0 ~.v =cEOCwmIag0dZ$Qv^W6p?p~lx4}Fݯ摵-(9`2|swe)|0:N GAu|R\&#% @&HuHW2՘9M҆ R\VU+5\IwMD+GSG! }]by)/zbXŦ}$`>"㘷tP-鹕*ޏ/> a^sj?6 =L7uJIwm ~)JW^4 0/H$Q?nfHǤ ;$m0)+S~Ir8Ȍ_J2~*'G*I n~D[DV^.|9'Sj^VqA@jIM(-/-h)n/ţl&UN7M>{ہKMs'-D:M-n/"ur{.XO~oIٙgYx9z׹;yM"}mIR:;uP}xH;ǕnFNrܢy-vFz4,Tk#޷;,-7@}Kz4&mo5'flh28&/2{BG1`\I&rn>Lb٥yާrρir52dH<8CB$RP{Hўˑj\I^aRT,J|nsOK_&G;v~iO[ϜJ>]D9P]etY%|y."V n$|v˚I7i'L۵^nl8[ϓkO#Tkr]c 9}C˥zaMI8Ii#私-sɅU5pJYw5v>a0z`^O5qCZ d,RO~EJg|YhwgJ?9Kq݂D2:\|k ".+>hxGI:NP i<_<g'o0#bl }[qY&AҎyT<~P?1.|~ey ۜ7y/i!d3HRy?œ9閒E6 lM;xxy)xQ]W{tǤ?4;5mHkx<{*hsLuKY4\[?םYۈOڭ uI'ΙQY[ $K4h)t㗒z ׅ(~_d$-޼O#Mdj<*ݥ:S=^O x>끤wsgdl|^ tTsm!,w>W\D* n~5myN|Ί4Nv }yzq1U%iv9+6䑂\-}MuI]sNK/޺Gi[=sMIRO uiMy)Wdn/;Hj]2D8C;n@xMEFKӄwD&[4mٽ@_=5\W?"Q o>*"CM t\ڎ"oBD%uq^g_UA\>׾oy>e{y.OUiD*!l<ϦezF0A=~x߂_IǣnK ")2ym#J}Mb<#''e!ؿ{J^骰4[6-4s8:cȘ)V?RxS )NK8ӚO23=1>y=J(-4/|]iaά.w26XcƼ_Hld ,n{ZO96SژqjK>8qN7CI3wt`ҩyg)7Hߝc iJK-ISo^6O3~Ap q*<4yxC8:8 kjXҜ#q|~+jo*K>+ʪ|Ov "OEx~=/ I XO &to¥mֹɣ A:sd# *eNn끎s"q>GR+8e/POdһzɤ2MFľB1|O[R:K))̼2%OT|b$_יҝuo>wnqDa 29< iIv$lJ.b?a+^7|ߒ—޼SJ_\oIR6})_~V2$y}7<.;6Sy}Ndhd]RQEqYv/K:;ɛkVon)Iv1}6ߜg^|FoM+RHrFbKML_R}y>C<ߣr& %ω912=w{-cHs.@|HnsMO}Z#g𼾦_!i/髞 @FȚ*;|ɚ qn/H U)?*\Ic3}T 1.yRTȞ4Ҷd7_#TͼКOT6]9)9!-I[FJ*!3ϗP}|C+.a]ӓPfnFޯHxXSۤ}vZZX}KǑj^- I^HR ~Jq_{^>gilAIWՊm迊oy~[umvQZX&FR:}:Ҷ{IR4;8)43 C4R܂I{|nlCv/٤+M?g&6y`p+}r^2\(h3ir6CּIm-0/c:N32:.X#|GLY_Sy@#(=[29>&G^lN.bwkdo"]DK| S_}Tu %vLucNd'D9:"d|'YO/OYL+ؐ;䷏f -!ߧ&U8@KJz2*09t6xN=k768<Hۑ:?R+ljwm|'m,_^Օݮ7|WE2p|4ܶ~4,=ץKkۑږ!C*nyXgG8 Gi(MC_MN^PLy^%P6PS5 J:KsާcZJ2LZ+Zvikվsa=̍H!+98l؟JcE>_%M{C7&Ot קf^}t҅jCzC,T595o.$]Q:K~μ+/YZjHvfB8eH>|}%\PGn%wUt/N{Uj׀W;-+|w_R.H{A<մ9I: @zQܣޘG)6gue`1<(7]IaPjtKMF|Կ41AZT*^R^w˲ȷ>"i @v]y1'?^my#e]}1nw=͆b2bLֿ41K*q0^?S]V7k6!yyd6,'S>cƒz$.QzZKRts,]Gi)M6$GچD^W9?3TiBW UE>mC>=9q|8ߛSgYwA)yOw+{%+Q>˭E|~ݳo5#5uPK}>|ϔWzQuC/GH1L<ǼN *c\m\}{t1~nh>тK%7 'x?#-#N-#Ra:/?jLfRjPtHHݜ馜 :p /: f2ɛ}(=ʃ|UGm6wz/yasqAqE(-T"WNƆ_J܃~G^@+%lK)Mэz\d^nu[K k' 8O#Bxp;O>띪~>ҎU8ʜY?\RΤ]%mG>s%.yWqCXRU)u&Ei{Q`ksSzw@>|2J)ˑ2HSe%vK?rN[wG~[^?ٙ_9?vx'TW{Ho*y}steKɧH6cD RN 7ǸeG.HlW_Y\c8܎mޏbhJ>e)iY4iM)7:9(q.m'<9Fn % X34wniI zw73p^< 'Ԗ{(f%r#cK á7ɤsF57{FfMCS/_0q~ϣh~S@:.Tb_IBcT/sJ 86q{|R|[㑵oC#Vw|_o4__MΑ}K.6!PRȐw- BU@=GxJ|*k㸭-$|_{9Xд}rtT99yCK<~4̙=V[rMH'\9L˼Xs=#]4|LyԽH ÿ;ۜy=R] rtôQZNt‡ty_a1ۛ }J<2v|}7&~Ԥ,ިx!3qq 'ZUD|J|J]wG\_kWP]P7Ќ3~ IQ( g᷋-qC2%)S7LEϙyp3I]Ґ^7sz-ḨmIjtΫWe.dKnޓΘg #F^MV.&Rsl%f >w۞D6ބ\Dxz"|A/ԂK SG"Ѳ #7MMADjy"cߋ՟%r9䀕D΅m8򜤸~u:e_awr]f)Kt|XqQJv7*"Ky].ݤ*g=ܻWUi{ӻ9gr_unSOެx<=#7L4:v:-$zj+1cF +ˑ#q iY:/9iݸ'Hi9ys[򖼮5se=$v=/g9s^O4Jg6_()yK9|s"+v\"NԻkyim!4/'F7ÿAԝPQ$Z[{])7 _smQr[}bRzxIܝKg&m@3^uhgHύy^٤Kj,ܮz砊2)1.G"x޳:7䑗Ǐmx\݆a㤴ćBZcUvJя\gelGjHw4y}NǽGeJǴms^~c**EqK8䒎i 8ϾדyٖERs~'yץw;{ܖ>6>Q =ɥRW\Z$DžP|o2W2}4G(iEv2Ļi{7w2ϲ>uTk/_Uz|EԊ{^ژLzQ<5%}SVbxr7ۥ$/w C^/;޿z~V󬄴HDr6[Y:a>7C|gJΗ=3WQEI]IC>?|g(7k9>_Q"NrSջx>_9t>¼{tm5loLp)@P2,^VN Gd7@U_:W: P>/fy1Z;To͍*j=Gkm|b2It~=ʲ'1;tt/,98RSr3en+?jrIK^yI:Tܟ8HUǒ}sN|ψtUsUٿ OtDxrWsCHސmZsw~/^3JqSr/StqA^L{Zr>-v =T{IYoxus*ʒCw"if$$]LBy-5wpM|Y?RQe=+U f 4ofXn8?{v ÕyF׺3Rg݋ f;_ĭr *=Ź⻥x=ρPd\/e{]/:6G{;lr]r9X ߛ亝~?_ϓx\{iV/xߒE`K?;VƣsHj3C/D`"|us>ggrunT/]oT]>-blы{I<9[O/ؒނ?ԳwćDIIo[[>䞏)ݸVy Ԑ ߣMg~[g)FO$EmNO؏WWP#>礼tHqNߛm#m#9ܑæ$/߳&;ۗsǓg]=&.y:ʽ%B|\/HrG SJOjJoF%S/{\7q<+O>x(\JpyLsNc- Oo:;K )`Ss޻^Oݤ6fSr[P!㑴Ϝz,L{^Gyaއz *44 {{C};"u7R]"^o/>z̧:#qiڥ9yVȜK{&rY*󾊿+FMNQ&ߟ,mHγ^Qxg{:B:@M;Ԯ_a%Gqm В1 r ̭N5oJ" "1"L09d&'1&w"w~5bgv[UO>= _;o6 8<Ǧ ys9;;]cC8ߘ tmP6yD[ayZjY7@wZȋ_Zls&K@9AuG2^/LgLMژy[a_`n{ _0F5+IQoU廍;<⟈\v~YQec;-ks-.>I?7ԃL X9Q/n㘷?1{6k"kg`~Q?ױA>H; lN͇|[qE+'B,yfIj q;/oLa~G;. ~a>?e?y:~C6G{hj'\7|MwjWkm}ig_uWO P jcgşm_ uOkm U7y;BKEo |+[_80ĩU>_8<|_C4b9k,:,_+2{t9ޙL}W+~Uc\c3#wڷc]Xu}c@}J`^ԩK\|^APH(Ta>O<> iĨstjgC :2Z| v~*ڏP=iaDW_W?C/)_S'g`,-!T6u1W7ݰo!u21|+xW (m䭨OpqG0,\C~Tm:$Ao/U͹nZ>'[s>žQRq#/dJ[ uّ!1 ~U~ԯ=H@;\6 glXH+ ?X6h?Zئ{Q'Կ+Xy:;QvCh1oy[[9wfZAkc?(tUioza>a#MsUwE܋U쩝"oGɂ!Z|y5z< ћye o'[.N*W q> ܭ}zf7s:&KC??5Sٺox%_yT؏<܍>cnOb߸Ĉ;tPO[,ڼ 뗃 Q<~"ɿQW1py9\ͧ>xV[5?V<8TqbC>MVڬwc0b0\.>_'VGj(o6;ޣDi܂iyR CaG&'k?m_% ] uZo l|Icc`]8z >D p|>SVh\08?6>! 튚5z"6nC])xyM Ϝ}+)aa}cNMCYAsߵ a!f_"WhTv;nGfBǼ{bԯ v}u]񡯣NDYsioI噵soK%AWXG#Zxy#:GVj6 <&^6CtS7:Q]w-`j}'d#Vp8 Iw7EBܹKb\^S>x_O)wɈ7'7oòۻ7oN^ƝY0NZbW?aw8>7a%3mᵒk\_K~UB"B^Cw>O_zP5Zؿccfo)Cx=؇얘mLQ߱[y}<{~"j1>^Z+[S΂־>O?u:O.Ю2˄Cxy Z.<XߌøLjq1 M}+n6髧1M`XY/32>3iLoWVu$kڸ벝 *.=QWbtF9JEٱs: EwMn^΄\Ou|L|tXżXsԥyqO/;g ˼j}O5ʯ+s¾M~]'L;PäVw 겪n|:YXXaO/j %lk+-/3oKb>x#Bmm0i!/Y=ꞵvqH1 u e81O.$75Df yeju5<$PdOG|μ56_u./6S}zubhAPҷ}|β_5I{}ݪ>c{;x#Wы7r쳋}ug <Ρ,pn ild7gt|V/x?=3/"i׺,^{j{wcޭfXyl cdu-FlqԯXy,]1ztϚ}Euۊ vgnu`_zO{XtQX>9, l]13Px oMqz}[?:ױKHWf3`4]V6=/\["+|m>N9̻5x[ly]hv ֓V~ߋSVuK]+WO,y#\o|<쭀8.l#_Zu+lM\+x~4~챏 ev>}\O5<]S=0njA]*xwgȴy !G^ɘm;74 ۋFtr 3iwKhuNZ{xD~bks}߄ km׽zӫyp ('Z[WUs.oy֏p3zfvڰ?v(?S W?´R R+t$xx Hż^WU~|^q`^>2hr+kg__-uoMwzlk.Խm;>-:Uc;?z3߭#uwE7; F#*yW0o׸c;'ߊO^,G1?W [q;u]ÆcP;;#O XϚv%^|Q;/ޏ-O_ڕ/9S XRג|曡Qx5?͂&] >9ѰXr[?Mn{vaްj?֒x#35'͟ 4Lgv]u][4f~#~udu6#{@?߿Z~ 5 ~;q`(6wG} #߽މx+ltX]aӽ 1 vjk'ֳ? ʧ#gA; ]k\c7dM,0i!7֥Ĝocz[zxVԗZQZyn +䁃SeQ#l ޱy|5y"޳ b*|w[8;;G<|+n>>oxUmVF۾4mk ?#Ty\7hɵ0V3wKxVE|$}[CS96D\X_kO KVyBY-s*]P ͇7>QzLq&67>w!Vk~=x{.?߅nA<<<6)"Դ{Nj^t#O㌵P+_u(aþB5?%$--b Çm9U]촑v&w o/44TUMԁ"op6a{NXFiۿk1V)-7x4:r0ݻ&a^ÿ<~&lCk~eZc},V [f7>s萖~|ۨ8N{nQj|[=¾g,- :F->b۞V C4f ռzYoh򀧵y"iq;qEY0S!nm0>!b}7廗̈4+_XxODZ?]`V篭2٭n?v޸yn<4Oo9\Ru^ʗzd3]k?Ez 퐦bV\q[q&nRU~v0[u>3!Ow|(E^ƕӃvߘBYT+o9}(7'IgyxdI-.+:t9}t=g $57J/j#[ ȇwۚa@\?ݱo/N'a_@˯#mQ՝I(̫@g7,ϓ~{ⱶwAs|W>T7üU{vʫs!6[iuƊeyYئGUź3l͑?7\5iYtcCZa]<yy/.uF}P^mFW!-k:¯~T}xix _!q[swi]Sy=ekB\m/<:Zy:2_[#OL~iV/ox0~́|yS;;km')q]Z s?|V70lh^fv ^zvnQKWTf>sb3#"v,ƍ|dž+_bڒ狆DSksGhmW/~F!~>y96:O6n6h5kDh7')e8߁^;_n)ռ/X o unNYYBbmRy_.>B\+?8u}QG':nvŚۿ&lR+]nɐcjg'Z"!YT #~X&h6|:WШ#IsLq6[}n`M/=o 1{exȱe`7L9?̯Y^Iȿm1vyCz0lс-l4^ xZ/»i#yAny 눣_m/:";F3 ҉\L7jPlcݾ;ۢ?Lzlmua~yx-Ƶ'. _j{*Oל;d3=棳M1^BiE KVY(p4}~vx+kKQ/9֫xI[.߃oTpc_k~6䕰7mX\S ޥ흰u33}D F2 VW5PB_x钧|< zs7 :bݩ4l6v~0>^Eo`i`eK'thX^^Z{ 4ȇ;fE|neWc=/ &Ԙl,yy+UƱ ҩgs26Dmv흅]*F`&,>Vfȟ=v3Q6;{?fU<_ۇ ZqV}꠷UuO6B+燁>7OO.D}c1ߋwDg*OM}TuG])k¾|oq  흐W$/mu ?ݱȯ4`3'7 .kw1;cݭuMͷ9lB#4$Z9P $g =6'X]{m'U!`ge& ky!.Nv ow2.CFԞp/ڜҍ߳}>e"Oh,7ׄ4v<{ ӛ~5;_r=h2Gz/4}?,k㚨+]y@J3c=!<ˮ_`fO:Ka=; ׿|nƧӎ[`>yM!`Wȯ?^b Ɓԇ1_4xk Qה0qQOU.8πNxOWC^or|A/㝰s砾}g-`?'_r }6 $ݱq ַ /_,qm`}H[{y9a|;a%0[U'}S0xV_ߓ;ħڞgq2?]TtFgG=tB*Y~W+~Q9l\Dݱ+!#kjOX_Tu_;# F&7[׫? 뎃/K}74/!_Y7g0B;i5jF^y]uKI~ 5Cqmu܈+unρ:ױ~;C.u_䧃za"H:xΟnGݥ΃͢ų/*_8Z'K5F޻bfO.򳝃q~N-ǃx;ǃޓEVu=w+,LXkwu=֍!30żIk.xmڞ*C׫V dis'CZל?[!EPXۑ j-~G}ks_1$~:w8[ We 5-6nC0_٭KD7UBy꺋 N@S5v8>rHW9Qn}|&YZྡ9ϗֿ7't`޶{Z+=1 9CH\>S4=#.֘"N+þ.3*ZC؏qa^oqx}ṁ%mE>az)&^O=s&Cwd83 +;̍*^wߚ뚍װ;hȆ#ocɮ'CޠmByw|N"oe} Zytn{1f]q搠^uh\N<}Y|Ȼ>屸tA;/>~:A2mX>eiF\C;!|w mx &[Ҧc6Nu /uFs>u֪q{w>ΕX7i] )|ux 3}ݭ1hL W묗E%N">hm:B>^ JeP|,笫תKu,ZƕW0%/*MN@ǔv{gDbޏ>*{Z_ Ϩu]G^yBF!/d]o8Gcd{קP۟zmUy+%*/ġ_=AȫK|MmݿzcxӐ6wa5РoŵTE<aAWߗHE*F 4wĸIOAV>4mrtZAs?8kWjv$|޴ٜH7%Gyn'VhD+XmQ>^;UbstQ2|ӫg}c~}"?GʨyF=H0z^v&!mFpWi9G/ =^뛢Ungu$<8Ǻxim׭%cռ8t'ᾏ?F0u?bMaOL.|Zi1_Qgoy0ٽyF/ҝͯ[5B^cF-w6j`>OHCYPqZ:?unxūkX@m8G"iq(w-DE~lX^u_9ᥟvU_(Wot0ޭ\ik=[_lYڬ5oz܄g$t&7\ze]:7q_wkb??R|l ]qA*[CGaX2_ߑ4ҫBzS)ڸ _bX?mͿ8u~؇:5Py%#PO˪?=,ZƱ[ь1~ׁ5ݱȇy{Tj>tԧjU(v$~a=}(WMˬݹs=B~|ag;d4S 2diL_[Q6f-??1[|Ni[W/~k+_[chnm2x-n˝MkuAW9V[b6.uϻ=Vahm1P7؈`#ld _5kz-\ZqZiZ>ׇ^Cz}H!3K̮w>;zs5ޙ]Q^QG#z}D>^qG#{}ă}L'{Ž^II_/o$[Nz}'^iww;״G#ΜΜΜΜΜΜΜΜٙ{W{}^ׇ{}^ׇ{}>5kt֌[3fj̚EͺYlZo5fլVj֛Xob&օXb]u!օXκpv^gYκpօ.uᬋȺ]D[dE[dE[dE[l7vNĺHĺH켉]ob]$EjM7vuZuR.2-2-2-2-2-޼7oy[oz֛޼f=/v bMgȚ5k̬i/vb/vb؍.v"v^y{^.]=/z_n_z{M~A'00A"Ũ6.(!F 1JA bh^PәcjZ' 1d!Cb! 1d!Cyb$v^C2Đ! 1dH&yҘ<1D &b#A"F1D b#A"F1D b#AAAAAA6a6a6aY          [ gpM83N8ㄳh2!2\d֛000YzV6H\Bj]2l/uXL5X5X5X5X5gDqFgDqFg383838383838#38#38#38#JdD(%2DFȈQ"#JdD(%$2D\"KdC8g"Ld3q&2Dƙ8\"Kdp .%2D\"DƓxO"Id<'$2DƓxO"Id<'$2DƓxO"Id<, !!$2DDFȨ5"FdԈQ#2jDP*"CEd!2>DƇ"BdPzPV6- /ֹ"X$2rDF1lR7®/r 0&2`bLl 0q0(:Gjֵ̚&6FhmbMl6&6FhbbCLl 12&6FhmbMl6&6FGaeӾ ȠbREbRlP JA)6(ؠMz/1'bcTlQ1*6FƨbSl` L)60[8bcTlQ1*p&6\ņpbUl-\+p&6>ƧbSl|- <'6xObI <'&1$= +FMbCLC̰ɧ7&1$= +~®DiePJ JA)1(%ĠRbPJ J(1%FHXܓbCLbI 1!&1$ae>pMbI7&1$ƛĂĂ`LbI 0&1$ĂXkcMbI5I5&}m֣Q(1$ГzCObIRwR=zѠ~àRbPJ JA)1(%ĠRbPJ JA)1(%ԠRRjPJ JA)5(=( +it̚vƭǭaeNXR#ZjDK-hJ bA,5ԂPRCUjJ U*5Taeޟ/|jK]EV,5ƳxRYj)O&R[jASjK bA,5 RXjK bA,5 RXjJ\+5rFԢZP5ljJm9: bA,)5TPRCUjJ U*5TƧzS=ߩ/ 0.˘RO2cZfLˌi1-3e= +k#)HfMYfXf W*3\eƨ2cTfʌQ)30e22Of ?'3d~2Of1TfzlV6+^YReu2NfɌ:Q'3d,;1dPj22NfɌ:Q'3d/e/NMPY]2K֣Kylj2CMfɌ/A%3d_22cEfȌ"3VdƊXXXox6(FoDx(s9 o ox#7x#7x#7xrLLLL|&(,,{ͰIgiab!b![6h6h6booooFoFoFoxkkkE2 / /"ox7x7x7x7x7x7xAg =vBmG1jڽ:^o^3j kt5FWX+֨%ԗP_B} %ԗP_B}ԯPuy9B\9]+tt:BGWFtMQQQQ1S1S1S1S1S P P P P=6-+7MzSƔ~7kLSƔ>ʨɨߌQ/}g13)k<]ktNO<}ԯ~5gY#~ֈ5bfirhgԦ5"aHX#Ո~5 ˡM}jDѯFjD&|~z/DEjıqFjĮFjĮFjĮcW_hw=߼މr5\-柡+$Ոr5\(W#Ոl5"[V#Ոl5"[f~thӧA2E:/"TU#BՈP5"TU#BՈP5"TU#B//FyjDFyjDFyh#D!F(Z"y#D!F6Bqy̔ mWtD%!* gB"% JPBT$D%!* QIJBѕ%D(!B JPB"%D(!B EWBw#!Oڣtk IHBD"$D$!" IHBD$D'!: INBt$D'!: T)n"r K(~ń(&D1! QLbBń)F#9"#9"#9"# t4Gs1GQ#>}oΚQShV)GrD.GrD.G2/LhVPJJJJm6Q b9"#b9"#b9"#b9"#J9}}}}}}'"DD}"OD>~E+0'"OTz$ 6MQPQ)"*ED"RD1TDާ,_x bED""WD\Kq)"Eğ"OD?'"Dğcx_h_h"QD4F()"2EDQ"TDRQ*"JED}"}ߜ]7)"2EDQ,"TDh.*""WD_+"~Eį"WD_+&~įbWL2"9^RjgԦk"ʙ[ qDb"[Ldl1,&h|ĶSSbbYL,e1,&IJƍ1^1q-&oĸ-B1/&Db_L~1/+&Ļxb]Lq11.&ĸbb\Lq11.&4>w11.+&ı8bXLc1q,h+&rDb"WL䊉\1+&rDb"WLJ\ &WW~+vL)3jU"WBJh+$!%ı8bZBLK(BKb Q,!%D(XBKb Q,!%D1B? [B|Ko -!%%D"ZBDKh -!%D"ZBDKh Q,-!%D"ZBDKh -!%D"ZB\BtKn -!%D"ZBDKh -!%E[ m&sBKv .!%DhR]JqZJK)NKg),%4LcY~.6].%֥ĺXgF{_hߠ+$֥4cf,%DȗR"_J\h.%8S`JL)q0%8SR"_JK|)/%ڥDhȘ[q S"aJ$L)0%D”H S"aJ$L)K)Q1%*DŔM m~o?Q2%JDɔ(%SdJL)Q2%JDɔ⾔(%SdJL)Q2%JDɔ(%SdJL)K)/%D2_Fˈ~/#eDQ42"\FTˈjQ-.#eıbȕ2"WFʈ\l*#VeĪX2bUF|ʈO)#&eĤ2bRFL(ˈI1)#&eeĝw2NFɈ5&#dĚXk2bMFɈ5&#dĚ""0B^y隈;q'#dĝw2NFɈ;Eg1(#eĠ2bPF ʈA1(#eĠ2bPF ʈA1(#eĠAAAAA)#O<#O<#O<#O<#O<#O<#O<#O< O /y⑧<1<1<1/ B>/ 9""9Bνs/ 9Bνs/)"2/KD4"_"|!/_|!/_ m/q|!/_|!/_|!/_|1//"^ hd eF6DD1,}!K_,}!K_җ(F^/ B./ B/*}W|^{ B>/KL"^ȹr{]1{!^ȸ2{!^ȸKW7q|)"_r\|!_̹ m2 |!_b.l|!_Fνs/ 9Bνg/ yBg/ yB[/11<{!^ȳ<{!^ȳ<{!^ȳ<{D 9b}_h7E]~]&~/d Bv/d Bv/d Bv/d Bv/d PE$1{!^ȿ{!^ȿ{I]d Y1qIνs/ 9Bνs/ 9Bνs/ 9Bνs/ 9Bν$-2z!^̬ Q}%yEr|!_sCP$GF/d BF/d PFF/d BF/dKBZ0r|!_<|!_×GN/ 9BN/ 9BN/ 9Ȼ{!^Ȼ{!^Ȼ\{!^ȵE>O/ B>O/)q z!^R9Bμ3/ 9Ȓ,y!3^Ȇlx!^Ȇ x!^Ȁ2%1#B6 /dKJ!]x2ޅw!]r܅,w!]r܅,w!]r܅,w!]r)"]kڅv!]kż  2ޅw!]x2ޅw!]x2ޅw!]x2ޅw!]Rbb{_hӓ3s5̌Ai/'Zs/ 9Bνs/ 9Bνs/܋'ZȿwxjjDԎP;vFmB#3ߑwd;2|Gf#3ߑwd;wd;2|Gf#3ߑwd;}=zz>݈"*"qLoLoLoLoLoB&oB&oB&oB&oB&oJoJoJoJoJoFfoFfoF}eWF}eWF}yS_ԗ_OzS*2wd;Y,|G# ߑwd;Y,|G# ߑwd;Y,|GL{Gv#ޑ]Ȯwd;zGv zG#ޑAȠwQzG#gޑ3șw;ry+F"Sޑ)Ȕwd;2LyG#;ޑȎwd;3BqxG~#'ޑȉw;r9 ## regression test for bug reported by Richard Valliant > library(survey) Attaching package: 'survey' The following object is masked from 'package:graphics': dotchart > s<-subbootweights(c(1,1),1:2, 50) > stopifnot(all(s$repweights$weights %in% c(0,2))) > > proc.time() user system elapsed 0.140 0.021 0.165 survey/tests/scoping.R0000755000176200001440000000110211457435613014544 0ustar liggesusers ## regression test for testing regression library(survey) data(api) dstrat<-svydesign(id=~1,strata=~stype, weights=~pw, data=apistrat, fpc=~fpc) f<-function(){ form<-acs.46~stype svyglm(formula=form, design = dstrat) } g<-function(form){ svyglm(formula=form, design = dstrat) } f() g(acs.46~stype) f<-function(){ form<-Surv(acs.46)~stype svycoxph(formula=form, design = dstrat) } g<-function(form){ svycoxph(formula=form, design = dstrat) } f() g(Surv(acs.46)~stype) ## check coxph for a single predictor svycoxph(Surv(acs.46)~api00,design=dstrat) survey/tests/na_action.R0000644000176200001440000000044714066243344015042 0ustar liggesusers## from Terry Therneau library(survey) load("naa.rda") fit1e <- svyglm( pseudo ~ age34 + ccr5 + factor(times), design= adata.s,na.action=na.exclude) fit1o <- svyglm( pseudo ~ age34 + ccr5 + factor(times), design= adata.s) all.equal(coef(fit1e),coef(fit1o)) all.equal(vcov(fit1e),vcov(fit1o)) survey/tests/3stage2phase.R0000644000176200001440000000251213423662360015372 0ustar liggesusers## simulated data with three-stage sample at phase 1, SRS at phase 2 ## motivated by dietary biomarker substudy in HCHS library(survey) load("simdata1.RData") twophase.full = twophase(id=list(~block+house+ind,~1), strata=list(~strat,NULL), probs=list(~P.block+P.house+P.ind,NULL), subset=~phase2, data=simdata1,method='full') twophase.approx = twophase(id=list(~block+house+ind,~1), strata=list(~strat,NULL), probs=list(~P.block+P.house+P.ind,NULL), subset=~phase2, data=simdata1,method='approx') twophase.rep = twophase(id=list(~block,~1), strata=list(~strat,NULL), probs=list(~I(P.block*P.house*P.ind),NULL), subset=~phase2, data=simdata1,method='full') twophase.repapprox = twophase(id=list(~block,~1), strata=list(~strat,NULL), probs=list(~I(P.block*P.house*P.ind),NULL), subset=~phase2, data=simdata1,method='approx') svymean(~age, twophase.full) svymean(~age, twophase.approx) svymean(~age, twophase.rep) svymean(~age, twophase.repapprox) survey/tests/svycontrast.R0000644000176200001440000000072514234625517015510 0ustar liggesuserslibrary(survey) data(api) dclus2<-svydesign(id=~dnum+snum, weights=~pw, data=apiclus2) rclus2<-as.svrepdesign(dclus2) model<-svyglm(formula = api00 ~ ell + meals + mobility, design = rclus2) svycontrast(model, c(ell=1,meals=0)) a<-svycontrast(model, c(0,1,0,0)) model2<-svyglm(formula = api00 ~ ell + meals + mobility, design = rclus2,return.replicates=TRUE) svycontrast(model2, c(ell=1,meals=0)) a2<-svycontrast(model2, c(0,1,0,0)) stopifnot(!is.null(a2$replicates)) survey/tests/newquantile.R0000644000176200001440000000052413706453761015445 0ustar liggesusers## quantiles with equal weights library(survey) data(api) dclus1<-svydesign(id=~dnum, weights=~pw, data=apiclus1, fpc=~fpc) for(i in 1:9){ print(i) all.equal( as.vector(coef(svyquantile(~ell, dclus1, c(0.2,0.5,0.9), qrule=paste0("hf",i)))), as.vector(quantile(apiclus1$ell, c(0.2,0.5,0.9), type=i)) ) } survey/tests/caleg.R0000644000176200001440000001023513111135036014142 0ustar liggesusers## ## Calibration examples ## ## Example of calibration to first-stage clusters library(survey) data(api) clusters<-table(apiclus2$dnum) clusters<-clusters[clusters>1 & names(clusters)!="639"] apiclus2a<-subset(apiclus2, dnum %in% as.numeric(names(clusters))) dclus2<-svydesign(id=~dnum+snum, fpc=~fpc1+fpc2, data=apiclus2a) popclusters<-subset(apipop, dnum %in% as.numeric(names(clusters))) pop<-lapply(as.numeric(names(clusters)), function(cluster) { colSums(model.matrix(~api99, model.frame(~api99, subset(popclusters, dnum %in% cluster))))}) names(pop)<-names(clusters) dclus2g<-calibrate(dclus2, ~api99, pop,stage=1) svymean(~api99, dclus2) svymean(~api99, dclus2g) round(svyby(~api99, ~dnum, design=dclus2, svymean),4) round(svyby(~api99, ~dnum, design=dclus2g, svymean),4) ## Averaging to first stage dclus1<- svydesign(id = ~dnum, weights = ~pw, data = apiclus1, fpc = ~fpc) pop<-colSums(cbind(1,apipop$enroll),na.rm=TRUE) dclus1g<-calibrate(dclus1, ~enroll, pop, aggregate=1) svytotal(~enroll,dclus1g) svytotal(~api.stu,dclus1g) #variation within clusters should be zero all.equal(0, max(ave(weights(dclus1g),dclus1g$cluster,FUN=var),na.rm=TRUE)) ##bounded weights dclus1g<-calibrate(dclus1, ~enroll, pop) range(weights(dclus1g)/weights(dclus1)) dclus1gb<-calibrate(dclus1, ~enroll, pop, bounds=c(.6,1.5)) range(weights(dclus1gb)/weights(dclus1)) ## Ratio estimators dstrat<-svydesign(id=~1,strata=~stype, weights=~pw, data=apistrat, fpc=~fpc) svytotal(~api.stu,dstrat) common<-svyratio(~api.stu, ~enroll, dstrat, separate=FALSE) total.enroll<-sum(apipop$enroll,na.rm=TRUE) predict(common, total=total.enroll) dstratg<-calibrate(dstrat,~enroll-1, total.enroll, variance=1) svytotal(~api.stu, dstratg) ## postStratify vs calibrate in stratified sample (Ben French) set.seed(17) dat<-data.frame(y=rep(0:1,each=100),x=rnorm(200)+2*rep(0:1,each=100), z=rbinom(200,1,.2), fpc=rep(c(100,10000),each=100)) dat$w<-ifelse(dat$y,dat$z,1-dat$z) popw<-data.frame(w=c("0","1"), Freq=c(2000,8000)) des<-svydesign(id=~1,fpc=~fpc, data=dat,strata=~y) postStratify(des,~w,popw)->dps dcal<-calibrate(des,~factor(w), pop=c(10000,8000)) all.equal(SE(svymean(~x,dcal)),SE(svymean(~x,dps))) ## missing data in calibrated design dps$variables$z[1]<-NA summary(svyglm(y~z+x,design=dps,family=quasibinomial)) ## Ratio estimator using the heteroskedasticity parameter (Daniel Oehm) # should match the ratio estmate above dstratgh <- calibrate(dstrat,~enroll-1, total.enroll, variance=apistrat$enroll) svytotal(~api.stu, dstratgh) ## individual boundary constraints as multiplicative values (Daniel Oehm) bnds <- list( lower = c(1, 1, rep(-Inf, nrow(apistrat)-2)), upper = c(1, 1, rep(Inf, nrow(apistrat)-2))) # the first two weights will remain unchanged the others are free to move lapply(bnds, head) dstratg1<-calibrate(dstrat, ~enroll-1, total.enroll, bounds = bnds, variance=apistrat$enroll) svytotal(~api.stu, dstratg1) head(weights(dstrat)) head(weights(dstratg1)) all.equal(weights(dstrat)[1:2], weights(dstratg1)[1:2]) ## individual boundary constraints as constant values (Daniel Oehm) bnds <- list( lower = c(44.21, 44.21, rep(-Inf, nrow(apistrat)-2)), upper = c(44.21, 44.21, rep(Inf, nrow(apistrat)-2))) # the first two weights will remain unchanged lapply(bnds, head) dstratg2<-calibrate(dstrat, ~enroll-1, total.enroll, bounds = bnds, bounds.const = TRUE, variance=apistrat$enroll) svytotal(~api.stu, dstratg2) head(weights(dstrat)) head(weights(dstratg2)) all.equal(round(weights(dstrat)[1:2], 8), round(weights(dstratg2)[1:2]), 8) # minor rounding error but all good # sparse matrix support (Daniel Oehm) dclus1<-svydesign(id=~dnum, weights=~pw, data=apiclus1, fpc=~fpc) pop.totals<-c(`(Intercept)`=6194, stypeH=755, stypeM=1018) dclus1g<-calibrate(dclus1, ~stype, pop.totals) svymean(~api00, dclus1g) svytotal(~enroll, dclus1g) pop.totals<-c(`(Intercept)`=6194, stypeH=755, stypeM=1018) dclus1g<-calibrate(dclus1, ~stype, pop.totals, sparse = TRUE) svymean(~api00, dclus1g) svytotal(~enroll, dclus1g) pop.totals<-c(`(Intercept)`=6194, stypeH=755, stypeM=1018) dclus1g<-calibrate(dclus1, ~stype, pop.totals, sparse = TRUE, calfun = "raking") svymean(~api00, dclus1g) svytotal(~enroll, dclus1g) survey/tests/quantile.R0000644000176200001440000000262613707706366014743 0ustar liggesuserslibrary(survey) set.seed(42) df<-data.frame(x=exp(rnorm(1000))) df$y<-round(df$x,1) ddf<-svydesign(id=~1,data=df) rdf<-as.svrepdesign(ddf) SE(oldsvyquantile(~x,ddf, c(0.01,0.1,0.5,0.9,0.99),ci=TRUE)) SE(oldsvyquantile(~x,rdf, c(0.01,0.1,0.5,0.9,0.99),ci=TRUE)) SE(oldsvyquantile(~x,ddf, c(0.01,0.1,0.5,0.9,0.99),ci=TRUE,df=Inf)) SE(oldsvyquantile(~x,rdf, c(0.01,0.1,0.5,0.9,0.99),ci=TRUE,df=Inf)) oldsvyquantile(~y,ddf, c(0.01,0.1,0.5,0.9,0.99),ci=TRUE,ties="rounded",interval.type="betaWald") oldsvyquantile(~y,rdf, c(0.01,0.1,0.5,0.9,0.99),ci=TRUE) oldsvyquantile(~y,ddf, c(0.01,0.1,0.5,0.9,0.99),ci=TRUE,ties="rounded",interval.type="betaWald",df=Inf) oldsvyquantile(~y,rdf, c(0.01,0.1,0.5,0.9,0.99),ci=TRUE, df=Inf) df<-data.frame(x=exp(rnorm(20))) df$y<-round(df$x,1) ddf<-svydesign(id=~1,data=df) rdf<-as.svrepdesign(ddf) SE(oldsvyquantile(~x,ddf, c(0.01,0.1,0.5,0.9,0.99),ci=TRUE)) SE(oldsvyquantile(~x,rdf, c(0.01,0.1,0.5,0.9,0.99),ci=TRUE)) SE(oldsvyquantile(~x,ddf, c(0.01,0.1,0.5,0.9,0.99),ci=TRUE,df=Inf)) SE(oldsvyquantile(~x,rdf, c(0.01,0.1,0.5,0.9,0.99),ci=TRUE,df=Inf)) oldsvyquantile(~y,ddf, c(0.01,0.1,0.5,0.9,0.99),ci=TRUE,ties="rounded",interval.type="betaWald") oldsvyquantile(~y,rdf, c(0.01,0.1,0.5,0.9,0.99),ci=TRUE) oldsvyquantile(~y,ddf, c(0.01,0.1,0.5,0.9,0.99),ci=TRUE,ties="rounded",interval.type="betaWald",df=Inf) oldsvyquantile(~y,rdf, c(0.01,0.1,0.5,0.9,0.99),ci=TRUE, df=Inf) survey/tests/rakecheck.R0000644000176200001440000000305111457435613015024 0ustar liggesuserslibrary(survey) data(api) dclus1 <- svydesign(id=~dnum, weights=~pw, data=apiclus1, fpc=~fpc) rclus1 <- as.svrepdesign(dclus1) ## population marginal totals for each stratum pop.types <- data.frame(stype=c("E","H","M"), Freq=c(4421,755,1018)) pop.schwide <- data.frame(sch.wide=c("No","Yes"), Freq=c(1072,5122)) rclus1r <- rake(rclus1, list(~stype,~sch.wide), list(pop.types, pop.schwide)) svymean(~api00, rclus1r) svytotal(~enroll, rclus1r) ff<-~stype+sch.wide poptotals<-colSums(model.matrix(ff,model.frame(ff,apipop))) rclus1g<-calibrate(rclus1, ~stype+sch.wide, poptotals,calfun="raking") svymean(~api00,rclus1g) svytotal(~enroll,rclus1g) summary(weights(rclus1g)/weights(rclus1r)) ## Do it for a design without replicate weights dclus1r<-rake(dclus1, list(~stype,~sch.wide), list(pop.types, pop.schwide)) svymean(~api00, dclus1r) svytotal(~enroll, dclus1r) dclus1g<-calibrate(dclus1, ~stype+sch.wide, poptotals,calfun="raking") svymean(~api00,dclus1g) svytotal(~enroll,dclus1g) summary(weights(dclus1g)/weights(dclus1r)) ## Example of raking with partial joint distributions pop.table <- xtabs(~stype+sch.wide,apipop) pop.imp<-data.frame(comp.imp=c("No","Yes"),Freq=c(1712,4482)) dclus1r2<-rake(dclus1, list(~stype+sch.wide, ~comp.imp), list(pop.table, pop.imp)) svymean(~api00, dclus1r2) ff1 <-~stype*sch.wide+comp.imp poptotals1<-colSums(model.matrix(ff1,model.frame(ff1,apipop))) dclus1g2<-calibrate(dclus1, ~stype*sch.wide+comp.imp, poptotals1, calfun="raking") svymean(~api00, dclus1g2) summary(weights(dclus1r2)/weights(dclus1g2)) survey/tests/svyby-strings.R0000644000176200001440000000052514221461577015752 0ustar liggesusers ## check that stringsAsFactors fixes the string levels problem data(api, package = "survey") des <- survey::svydesign(id = ~dnum, weights = ~pw, data = apiclus1, fpc = ~fpc) est0 <- survey::svyby(design=des, formula=~cname, by=~both, FUN=survey::svymean, keep.var=TRUE, stringsAsFactors=TRUE) stopifnot(isTRUE(all(dim(est0)==c(2,23)))) survey/tests/anova-svycoxph.R0000644000176200001440000000026714221463056016071 0ustar liggesusers library(survey) example(svycoxph, ask=FALSE) m<-update(model, .~.+I(protime^2)) a<-anova(m,model) b<-anova(m, model,force=TRUE) stopifnot(isTRUE(all.equal(b[2:6],a[c(3,4,6,7,8)]))) survey/tests/poisson.R0000644000176200001440000000063314073671464014604 0ustar liggesusers## check poisson sampling library(survey) data(api) set.seed(2021-7-15) apipop$prob<-apipop$api00/1000 insample<-rbinom(nrow(apipop),1,apipop$prob) apipois<-apipop[insample,] des<-svydesign(id=~1, prob=~prob, pps=poisson_sampling(apipois$prob), data=apipois) stopifnot(isTRUE(all.equal( as.vector(SE(svytotal(~api00,design=des))), as.vector(sqrt(sum( (apipois$api00*weights(des))^2*(1-apipois$prob)))) ))) survey/tests/fpc.R0000644000176200001440000000011611457435613013653 0ustar liggesuserslibrary(survey) ## check many permutations of fpc specification example(fpc) survey/tests/kalton.R0000644000176200001440000000270411457435613014400 0ustar liggesuserslibrary(survey) ab<-expand.grid(a=factor(1:4),b=factor(1:3)) kaltonsample<-ab[rep(1:12,c(20,50,100,30,40,140,50,100,40,310,50,70)),] kaltonpop<-ab[rep(1:12,c(80,60,170,55,40,150,60,165,55,340,200,125)),] jointpop<-colSums(model.matrix(~a*b,kaltonpop)) marginalpop<-colSums(model.matrix(~a+b,kaltonpop)) gregpop<-colSums(model.matrix(~as.numeric(a)+as.numeric(b),kaltonpop)) dkalton<-svydesign(id=~1,data=kaltonsample) dps<-postStratify(dkalton,~a+b,xtabs(~a+b,kaltonpop)) drake<-rake(dkalton, list(~a,~b),list(xtabs(~a,kaltonpop),xtabs(~b,kaltonpop)),control=list(epsilon=0.0001)) dcalps<-calibrate(dkalton, ~a*b, jointpop) dcalrake<-calibrate(dkalton,~a+b, marginalpop, calfun="raking") dlinear<-calibrate(dkalton, ~a+b, marginalpop) dtrunclinear<-calibrate(dkalton, ~a+b, marginalpop,bounds=c(0.5,2.2)) dlogit<-calibrate(dkalton, ~a+b, marginalpop,bounds=c(0.5,2.2),calfun="logit") dgreg<-calibrate(dkalton,~as.numeric(a)+as.numeric(b), gregpop) #table A round(svytable(~a+b,dps)/xtabs(~a+b,kaltonsample),2) round(svytable(~a+b,dcalps)/xtabs(~a+b,kaltonsample),2) #table B round(svytable(~a+b,drake)/xtabs(~a+b,kaltonsample),2) round(svytable(~a+b,dcalrake)/xtabs(~a+b,kaltonsample),2) #table C round(svytable(~a+b,dlinear)/xtabs(~a+b,kaltonsample),2) #table D round(svytable(~a+b,dgreg)/xtabs(~a+b,kaltonsample),2) #table G round(svytable(~a+b,dlogit)/xtabs(~a+b,kaltonsample),2) #table G round(svytable(~a+b,dtrunclinear)/xtabs(~a+b,kaltonsample),2) survey/tests/quantile.Rout.save0000644000176200001440000001240713707706423016420 0ustar liggesusers R version 4.0.2 (2020-06-22) -- "Taking Off Again" Copyright (C) 2020 The R Foundation for Statistical Computing Platform: x86_64-apple-darwin17.0 (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. > library(survey) Loading required package: grid Loading required package: Matrix Loading required package: survival Attaching package: ‘survey’ The following object is masked from ‘package:graphics’: dotchart > set.seed(42) > > df<-data.frame(x=exp(rnorm(1000))) > df$y<-round(df$x,1) > ddf<-svydesign(id=~1,data=df) Warning message: In svydesign.default(id = ~1, data = df) : No weights or probabilities supplied, assuming equal probability > rdf<-as.svrepdesign(ddf) > > SE(oldsvyquantile(~x,ddf, c(0.01,0.1,0.5,0.9,0.99),ci=TRUE)) 0.01 0.1 0.5 0.9 0.99 0.01543792 0.01264453 0.03386225 0.16131948 2.10605799 > > SE(oldsvyquantile(~x,rdf, c(0.01,0.1,0.5,0.9,0.99),ci=TRUE)) x q0.01 0.01554946 q0.1 0.01425828 q0.5 0.03428012 q0.9 0.16457488 q0.99 1.88672412 > > SE(oldsvyquantile(~x,ddf, c(0.01,0.1,0.5,0.9,0.99),ci=TRUE,df=Inf)) 0.01 0.1 0.5 0.9 0.99 0.01545209 0.01265608 0.03388011 0.16145776 2.10061576 > > SE(oldsvyquantile(~x,rdf, c(0.01,0.1,0.5,0.9,0.99),ci=TRUE,df=Inf)) x q0.01 0.01556240 q0.1 0.01420086 q0.5 0.03430175 q0.9 0.16461019 q0.99 1.88818131 > > > oldsvyquantile(~y,ddf, c(0.01,0.1,0.5,0.9,0.99),ci=TRUE,ties="rounded",interval.type="betaWald") $quantiles 0.01 0.1 0.5 0.9 0.99 y 0.02352941 0.2230769 0.9340909 3.55 9.4 $CIs , , y 0.01 0.1 0.5 0.9 0.99 (lower 0.01594200 0.2020115 0.8578143 3.207543 7.568142 upper) 0.03287947 0.2467045 1.0059815 3.862241 14.978632 > > oldsvyquantile(~y,rdf, c(0.01,0.1,0.5,0.9,0.99),ci=TRUE) Statistic: y q0.01 0.1 q0.1 0.3 q0.5 1.0 q0.9 3.6 q0.99 9.4 SE: y q0.01 0.02547977 q0.1 0.02547977 q0.5 0.02547977 q0.9 0.15287859 q0.99 1.88302540 > > oldsvyquantile(~y,ddf, c(0.01,0.1,0.5,0.9,0.99),ci=TRUE,ties="rounded",interval.type="betaWald",df=Inf) $quantiles 0.01 0.1 0.5 0.9 0.99 y 0.02352941 0.2230769 0.9340909 3.55 9.4 $CIs , , y 0.01 0.1 0.5 0.9 0.99 (lower 0.01594200 0.2020115 0.8578143 3.207543 7.568142 upper) 0.03287947 0.2467045 1.0059815 3.862241 14.978632 > > oldsvyquantile(~y,rdf, c(0.01,0.1,0.5,0.9,0.99),ci=TRUE, df=Inf) Statistic: y q0.01 0.1 q0.1 0.3 q0.5 1.0 q0.9 3.6 q0.99 9.4 SE: y q0.01 0.02551067 q0.1 0.02551067 q0.5 0.02551067 q0.9 0.15306404 q0.99 1.88450896 > > > > df<-data.frame(x=exp(rnorm(20))) > df$y<-round(df$x,1) > ddf<-svydesign(id=~1,data=df) Warning message: In svydesign.default(id = ~1, data = df) : No weights or probabilities supplied, assuming equal probability > rdf<-as.svrepdesign(ddf) > SE(oldsvyquantile(~x,ddf, c(0.01,0.1,0.5,0.9,0.99),ci=TRUE)) 0.01 0.1 0.5 0.9 0.99 0.03576771 0.07329496 0.30149917 2.03440784 1.88468597 > > SE(oldsvyquantile(~x,rdf, c(0.01,0.1,0.5,0.9,0.99),ci=TRUE)) x q0.01 0.00000000 q0.1 0.04598541 q0.5 0.25943731 q0.9 2.12343073 q0.99 1.91998924 > > SE(oldsvyquantile(~x,ddf, c(0.01,0.1,0.5,0.9,0.99),ci=TRUE,df=Inf)) 0.01 0.1 0.5 0.9 0.99 0.03637398 0.07470310 0.29938115 2.16381289 2.00708994 > > SE(oldsvyquantile(~x,rdf, c(0.01,0.1,0.5,0.9,0.99),ci=TRUE,df=Inf)) x q0.01 0.00000000 q0.1 0.04732818 q0.5 0.24957966 q0.9 2.25211815 q0.99 2.04043154 > > > oldsvyquantile(~y,ddf, c(0.01,0.1,0.5,0.9,0.99),ci=TRUE,ties="rounded",interval.type="betaWald") $quantiles 0.01 0.1 0.5 0.9 0.99 y 0.1 0.15 0.75 2.4 8.68 $CIs , , y 0.01 0.1 0.5 0.9 0.99 (lower 0.100000 0.1000000 0.3674054 1.352279 0.5674674 upper) 1.132533 0.3464541 1.6303784 8.473337 10.2000000 > > oldsvyquantile(~y,rdf, c(0.01,0.1,0.5,0.9,0.99),ci=TRUE) Statistic: y q0.01 0.10 q0.1 0.20 q0.5 0.80 q0.9 2.40 q0.99 8.68 SE: y q0.01 0.00000000 q0.1 0.02611112 q0.5 0.26542051 q0.9 2.10908603 q0.99 1.91777710 > > oldsvyquantile(~y,ddf, c(0.01,0.1,0.5,0.9,0.99),ci=TRUE,ties="rounded",interval.type="betaWald",df=Inf) $quantiles 0.01 0.1 0.5 0.9 0.99 y 0.1 0.15 0.75 2.4 8.68 $CIs , , y 0.01 0.1 0.5 0.9 0.99 (lower 0.100000 0.1000000 0.3674054 1.352279 0.5674674 upper) 1.132533 0.3464541 1.6303784 8.473337 10.2000000 > > oldsvyquantile(~y,rdf, c(0.01,0.1,0.5,0.9,0.99),ci=TRUE, df=Inf) Statistic: y q0.01 0.10 q0.1 0.20 q0.5 0.80 q0.9 2.40 q0.99 8.68 SE: y q0.01 0.00000000 q0.1 0.02551067 q0.5 0.25244616 q0.9 2.23558589 q0.99 2.03881114 > > proc.time() user system elapsed 1.791 0.148 2.936 survey/tests/nwts.rda0000644000176200001440000000261511457435613014451 0ustar liggesusersRDX2 X  nwts    S03% @3< [ud<  !9) names stage instit histol control case class data.frame row.names 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 nwtsb    sVO @3< [ud<  !9) stage instit histol control case data.frame 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16survey/tests/naa.rda0000644000176200001440000004575314066243344014224 0ustar liggesusers <]ǾTP)9EMD+al!iע-i(I((Tٲ(mJqw<}?s>kw-:Ι6F6$F?GUuMH$Nv 6'n{G{{=oF| w" weW88xxDD$$dd!(!(# "!#h h"h!GF0AAAAa2!1Ti&f "D0 @9s!GX`ab%K,!X!,GXajk56k!G؀a=fG'2g\<<#x!x# @E؉ a7#@G8pBQcN D8p!!! !! B$Y(s."\Bp*B,587n"BH@p!! .=dR"#d N^n;#{ovtu5c"J|<`Il6TH&M.F߿I%ovr[{x9:y1wsq؈/ې~o1(2T^n;\ supwsr}+|^N6d4zՏ~u_Uq{]%?t_~,2,2,2,2,2,2,2,2,2,XF#d[orb˵wId}בeYfeYfeYfeYfeYfeYfeYfeYfeYfeY3w/2,2,2,2,2,2,2,2,2,2]cf__+.726N'->UF܃"lzQ+{eHU'\<|B"bR2r TT44#h#L@`0a*43Lf"B f#,@@Xa1#@X a55[#l@؈ a3#a 3 Vmn|v "DC؅a^} #D8p!(1@'N"BBF8p!,B9 y .!\FFAp!Bux7n!$ FpB2B }i2!W?,{Owot׃_B#-;}~rލŒd{/HK,=9}?ܴ5ܧ`-2=lky$a-Gʎ_׊5'adx\ߖ]5$ŅFFb-mpY5m& B]2 >Zɲ$vDžRV@瓍 uϾ\Պ7dca-`-ޜzڒlH]X ^_q B2.P~{c!"B|HXODM|&dE>|ۊ5zlX _։&a-vpVn2 m7b-dz8k'S換a-|$yLRta-:kGA&vZcMš[`Vwx&c:}k;"!Kga- #^!a-^'-ͬ xsvkHX v[zFa'~WETΐ敖tCE|y褌5eX_r5wB@׺b2֢?ߪ`-TyӖ)dʏ+ĚW O%eT[u*RŦڊȺ 'X \9kFۻ T᚜D:DwN`-nZoXhIƚwwFXs>|w5ZH/k兽 HXzّ QeC}dsc+&?`[2$<:X/җ؊5ĪHX6-Ě&k݋ob-ʡIr95Çy"s ւS-ׇ;͑Y%WGšOM` ւaԂּ?lJ"XMj7MFXs83YOƚkUXw/ c;4$p;fpA!\6`-LwTIWg!PF{!IfSt+&a-BK䏝ÚG$9f,P[DYk ;kaYFX Ixs8k3m=$=8oٲ5{(XyX5lbx_m%ɴb-"kqa fYo#;g}Hƚ Tc.k!Mg昿0|5 C#6Ěנ/\A}i3k0is4MOÛb$fb-:Xy9>!)XK':OƚH!]-XݽWf5m= k]FXs4-7wZg<^h {EkY=Jɦ2b_Pm$G[ꎱчB/[h[ÆX Kmsƚz,<g~9IX^"IX5šX=HšmTEDmBZ}4}Cق\)Xs5 S5;7XgbZi%c-|<֒ϓ/g]7ߍ7;=*̼UqRKN=nd92Ks9-shH!</]5y!ւ/&a`d|+SJygs_my:kʼnvǛD?Kjo];^mǓ ˎT˵ߩD'8DT,vZEFXY4`ujk-%'Kc7n$%-p9Cg)S6b8ۺd3$٤.a-`o4o}$EÛ'Z2IB8IXs4oPD8 կi'aaxۦR]ki=y\ fsXn[ޯXvwVy|&l-k^O?-ïte<֜v5Пq:g<ɳINE zZEƚtyf kk5sov/7S8Y6注w'cMzzd;|洠h? ov?܂1niCC_;Ahp_#ΠAn_Xn/-Zut;_qGqF͎Oƙ(QuI\^Πi+h8%Tp u DGͰQ8'ozt.g/#ΠpR|h{HXwżV(Ux%$alEև!8 Cy\/<~P pe*CHX7ğ* .iuKa&8CR' ꋽW|c "t*D v:\30S3%" uJo#!KIXn 7u,)rp&^:_3(58L)fZM4S Ǚ8q&fw >j/sLNh.(gfFf8/* ٖ~vl-$]({'O]n՞&8_)̣j9 H41;\[H,L4pgСʿdz'%bQXڵJ3Q]V bŠDž$?)WKZ)X7\YP.gn$+gS@3>s<On~ 2[3ѻ;l/׭Pj'aΩ3Y$Ơ8ȫg'DN QXf*E:czj6|~Л Ơ6HqϛUYșiF${ZsKL^ ?=gku5GA&oX ĺfn'>1qg&oVu$uV8{8bW$?+lfǺO.Π.pٖX7^`j,X3p 9M1Ơ}5;8ʏi#X'.D]u'߇*cAoG띱Nٗ~CDIaLkÌ5bbAG@8g |[Aυ`}gmY_ _z:PuI`˩rqT Xj2VgAo8Ճ{33f$vl|au܈ vʌ^J=Hº﫮3ΠD(_ I-xuUtG%[cQ49'6H}cv ycP?|(]q"G.xN^iu1i gP鱰fScH HZa lPcuefSHXw$mbM4} S\uy (Agݣϴ9q&m[jukGLšf|Èsn ;^6d^RuDN`-  p&5>u<>A3ޝsl]qfX_F58Zv|Ù_ˁ1̽:gJSA*֍fUn} p}δ6ĺeˢi8ORbsq_U\xR8dd p&8zDq䛻RH8gQln|\FC876<w;m%/ ouX2Y DďrQX7*kPB7? *NxܴFqvX?y{4WgЦE6zpg̈́y ~cuSfL*48E$.u.i;7p&zrs1ĺe卝QX)S2Z!y025xS>X__c30M)b{ gΐ'{#֥;n\43:)¨kDJuX²vE =4ƙh~O7 3ˣIXu\yA8\8 g9ELӝ]uڻcA뛕vXW\?>gY鼓'3Π߸՘0NإN2 .5gwS붘pW$vELԾ%a]zgޝ>gK0ƺoκ%%XjI1+voX7pv0.0[!Ik@KҁkPǹ^_>MJ!֍G,`ݛ9)gFN[8y3ۂc LAcycIK_kp5,w 9˜y/%a#&3ذ7w= gpVza-b pM?&ߍd?rx3xUFºpEUKJp&hl)A8;4(ƐMlܹl8lV] U;(8O_6[:LLGGC*$/`}&aK\Y{!!{r^6֖9|AkVNlVƍk.)(/Jg\sӄ5x'51i 0eExqr_?5 [Gy!X7.)zgP_ yV!!j2؁vS@Ε3 ٴ;B@h$'%hK@}%PHo]@(-OTdӷP}cڳđ K"D~5Ā=6} $ue%>Z*/Xn7TwYN2L]!Tp(ubESpEIF%`IXk(W66*tDޔ? 5~ #$shcp Q0H̟DEO:>? 6n fG*|Nt¹zżPϼ#Pist9pgWBUz9װZib ok ,g,G[ ڗiDwD or:cƏ=ptL?h):#z~R y?+C \ 9y $ޚȴļ&'O7 z]%*F(hXGD |uN yKw>ڊSv i]zQ 6lb[E\ˉs$~F}DMmCq@\ʰְ;)dR*TwzpC@ԪHoPVgnAOŶ j'G,<+Py?jgZ.ޏAծ\uK@Fy>w3 v'^ u0 HrDA Q<#G3=7_eJɼV?zV}dm"J"+.[+ o*HB(}B)(l;GCV,rI]I\?5"뜉w:M}GqO9D1%]TBCm6H~e(?@8]_2p<1sʅ|;m/~ěs)m7LΌ&J\UeK٣-gbֿ!GŤ}uBb8P}`^IP־zP.|DuT[8kTM\L_NoP:*~V4FO/јϻOoh4Wllʗ3>>ƸoFyՀH^]LdN8 *?ܵր&IK[a8 UR"hT6[SiD 5sePGA/C~#S_@yz(Z޹gS0΢nY!M~pGz[[߿&Kj{Z~2$W:'m_K~Oq}fP ~cfB n]*D wn/Cٸ@Rkrh^gްǬ?/U@9EKQOީ?lGwxA(hYmk(o&Msl2Lx7<>x Ml^5Bdʹ5_'Bg'_ q{lQG2mHhj3#fTH4A| ?r +/ܴ+.ȟ:J{ʼn*UܷMNN`6~ wuy>ͩoš/Fٓ_9.bf lX,/HsI"_0 ^*DSMBEÇGOOO/?I}TsX8nj(PU8k]ɲP?fe{0#NU$={槊vJ)CH޹'O|؊h69TH )hX!􊾣8 RcVϋ;N8޿m?fhKL1oc=~iP|qDzEr&}m#]*%*r#ALjӆ}2i3RiD洆}D>wDyޛϴl4U=b_TrRex_Qڡ H|I8mٗ JД]q͵قMGP3YA4TyEYc=с!#G1F=~8 -h/av_DsiZceTL|J>>ӀFx-rʏGßBM ; ne~To? |n|S|Ss? #ژpVedAQY$R xUSDUBxJOpP iSuFx (Z .Rf+5 v0-_))a ?ʒ[u,7*h*/mvz%&ۣ?[䩟'n+=#u.zy+?mVNJDL@!ac A刽?m+#*b/'W؁&/Yedž'_@y9o,(SʆULLhvڦJ78< ڡY!˟j#(jE+M"jn-NFH ߚS /B W֩@L PŮ4N2pmyQ Td$"ScCT"muۢ\CPPY P+DF 6ޗP ucVe?i̴JXt=-ך] ٴsMyfEG>4F$1-?[E[PJwb"^(ӭX5U, =]h@OyAC8]WAuhA]/̸2y9攘0y;3z}ޙg,l}i8?](TP$gݗ(߮{n =7^9jO\Ycwҗ[Y IGTt]wK\v{oʤCٓQGBJǫko=t +=Dl@K>k.BF.߇?\T7r ȾI4 e-d-\gNr]=^VslGR뺇i| SPTCca%r abI(\8oxhbGNAMʹTt򤷼PUAPsqG^o׉ǏOS}N'UzNtk@ODgMrvTO( 5lg_L<_ c4@Y7Jrg'vH@`ĚZ*#,SWnp~h<Υ ~4YyMIyV@;*=@ei[:~97/R;"̅(Jϫ7=ȫ x}Ճ>len=h~uǃ* ~Dkv;sl}|rz HQSJݎQJ@J`& Rwj$BۓWnR!Ĕ |Q*^cS QowXI-Hսmk:q2 Z eGoK6w25uwv@)^Ae⻤6p{܌C JМ? ٠r0oM,J9&Sûq/ZUg q0PpaR(rОϣǼ::%s!C&~tsQ Q.KYj+b3\?8M/zu=iD~J!mTذՔPTws8Q7ecXO}1w[vpp}BT7}޷|Pu}F6ϗ;ޯ>\z`6?GJćI'|F HS ^&{*s|D%<(nQc %~ݚ#o5PNK:@˜;'^ciC I~ôޮq9 MM죻h ?"\<*iE 8҃ӽaP$'VtP4x!2`m=No KOg |O3=/MY {{)?[/B~ Ǝ (Ua& ?yhTPvҖt4F.Oӑ2%-4zE 2m!X'1|`~ SBہ9V@6x~Aǔ -K~(|y4quvL??*m+?V$r=Q<V}끥!Pj{֜OPÊv1Ԝۗ_#DžuI |MV /_#S#DXN'ӽ( DSY_s%;}uvW0 rw>:We*gN9׆gsVɐѮ;2Fole:[ʊ|NN@QxP-cEF64"a:q/t+ڔ6FVœﻤgpN~O~Bcb`_8T92*q` *o*qޥn72;nrG-\jwɨoy[٭\>f -_eEHkK|J4',]CtGW9>ψ6~a _lX'lu{sTԜz+ht;bQwħϗ=D<jCN=$IYH4C(?@2YbSB*S]4^g&6GE(x(+_=+AcݮRqR3}>S=3قDwaYn[`8vvQPLE"g]?:vE ?*NQbq`49׹H8oƑ,Aou&fux@/~/{s(۽4\{2 }`/bOk,_R Uؼj87|AVsO'H:sk)hA$Ig#e;yMb0z|d^z3{q1m޿ߌwߦ,; 5%޸MŕqZ2gV?5"s˩fEzh ٬}M:?߃yޟAc߼d0Yt= t ΖŞ}G9 |@T1P(w?uAhht:fB,I~[ qJ3@܉O,1.5`~_n/?6/PuC'Ulw?<)J\U,W]zSZt{^( !bӺgnNy>!Ghz9Ҳӡ8d|5+$rotFߎb~Hk4ߐ{ssptP-ly~珿Ob_q~QV ,X3~6?~zfqmMA{ۺ@AmOǬ|H0w2}5GO{˕sm畣IjR~+]U^so^+Bviq.ߝ7 >Y٦Y[d@g*q:w'vXl kS.ST՜MT"S4׀%{}9}UlCW17и.\ܟ!zfp(:tm^:% IG?>J#V9}~{uy>]u>9O!cV~02_|F"NfzFQa:%h3xShbT۽͘⩩ hinyS&L*m Ixttso,Z2joDghF䎹LAJ%bBG5M_a[սBύy>< $R)԰QϷ%$?z1㻱14I2c^*}.8#mߚ5~{UaH_y}d~̘_ygR DuڗQn~c7OG >e*JAc̔&#6@;&}P /ޜ;|?g<ό!1֏Gg]!S}^۫Au׶|0;2?OO2]󾿮M7n=ܾ{ G` wn_F]J[œ_'wVzMtg_>h|A۟`g?'|Ni=#:ľFԀNN+1_PבcV"5QX՘g=&mlq246uK<0{>?|﫟Hg_?MxDOHkp@߾'Q( j"N w{`5G\?|CD*TB4!܀HP0CtTķXG׶.\b\.߱QգAw_)mT|hW~?`bǃ8?G?Kj^H\- Oz {ReOAۏHֲt?~dHktO<]>gn/Psl*%]|[~d=Hx>n54RHʍ.I, ;}}k&o;WAU|}, c}rysZH#9S"Ⱥ||V3.#Q@s[ }p]Bb֟_o`3)KS·_;zzDkG¯T)?9zi˵mu͏*~ģmc>& 6+*9~Z+bG|^cVA _O4-7o?ʜ?L4hO:{4[^O2 d]_[VPU6eи|Ɠl3d\[g'p޵D-Ks*6}占籫cAS*#1HGL|T싲i#K4c1g緿O5c~[oG2^6#WK~|̨mS4-c~7F.G6v2[->Qq{@}VKtge{r=SjF0hQ_YH/1L{}Yg}gdM`mHT#If8~-D|it,}Xۗv=p8YGL<:ŵDbG7 7'o N)C-N Șc/wKnOoO1t26F^e{ _[aUJsp6y~2J盿Kl*FI??:Ic#I?ޗ`/Jw_p\F BCͨvC=GB py܆Crj{[_f(27'/MwӶosӯ P&W_~l椑7~yDi4_k&zt8+` ,X` ,X`߃~vkM׌cvte%טwx:Dt`,d>>|8qZ%:pzzyl//9?{ov^pU"Əޤ_]|=G'o-wxwh{ڡsurvey/tests/svyivreg.R0000644000176200001440000000054613542525537014772 0ustar liggesuserslibrary(survey) library(AER) load("cigsw.rda") des<-svydesign(id=~1, weights=~wt, data=cigsw) m<-svyivreg(log(packs) ~ log(rprice) + log(rincome) | log(rincome) + tdiff + I(tax/cpi), design=des) all.equal(as.vector(coef(m)), c(10.42009 , -1.588135, 0.6140887),tolerance=1e-6) all.equal(as.vector(SE(m)), c( 1.047699, .3394232, .3614382 ),tolerance=1e-6) survey/tests/regTermTest-missing.R0000644000176200001440000000100314412404246017003 0ustar liggesuserslibrary(survey) data(nhanes) design <- svydesign(id=~SDMVPSU, strata=~SDMVSTRA, weights=~WTMEC2YR, nest=TRUE,data=nhanes) a<-svyglm(formula = I(race == 1) ~ HI_CHOL + agecat + RIAGENDR, design = subset(design,!is.na(HI_CHOL)), family=quasibinomial) b<-svyglm(formula = I(race == 1) ~ HI_CHOL + agecat + RIAGENDR, design =design , family=quasibinomial) ta<-regTermTest(a, ~HI_CHOL) tb<-regTermTest(b, ~HI_CHOL) stopifnot(isTRUE(all.equal(ta$chisq, tb$chisq))) stopifnot(isTRUE(all.equal(ta$lambda, tb$lambda))) survey/tests/lonely.psu.Rout.save0000755000176200001440000002247212372250160016701 0ustar liggesusers R version 3.1.0 (2014-04-10) -- "Spring Dance" Copyright (C) 2014 The R Foundation for Statistical Computing Platform: x86_64-apple-darwin13.1.0 (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. > > ## lonely PSUs by design > library(survey) Attaching package: 'survey' The following object is masked from 'package:graphics': dotchart > data(api) > ## not certainty PSUs by fpc > ds<-svydesign(id = ~1, weights = ~pw, strata = ~dnum, data = apiclus1) > summary(ds) Stratified Independent Sampling design (with replacement) svydesign(id = ~1, weights = ~pw, strata = ~dnum, data = apiclus1) Probabilities: Min. 1st Qu. Median Mean 3rd Qu. Max. 0.02954 0.02954 0.02954 0.02954 0.02954 0.02954 Stratum Sizes: 61 135 178 197 255 406 413 437 448 510 568 637 716 778 815 obs 13 34 4 13 16 2 1 4 12 21 9 11 37 2 4 design.PSU 13 34 4 13 16 2 1 4 12 21 9 11 37 2 4 actual.PSU 13 34 4 13 16 2 1 4 12 21 9 11 37 2 4 Data variables: [1] "cds" "stype" "name" "sname" "snum" "dname" [7] "dnum" "cname" "cnum" "flag" "pcttest" "api00" [13] "api99" "target" "growth" "sch.wide" "comp.imp" "both" [19] "awards" "meals" "ell" "yr.rnd" "mobility" "acs.k3" [25] "acs.46" "acs.core" "pct.resp" "not.hsg" "hsg" "some.col" [31] "col.grad" "grad.sch" "avg.ed" "full" "emer" "enroll" [37] "api.stu" "fpc" "pw" > > options(survey.lonely.psu="fail") > try(svymean(~api00,ds)) Error in onestrat(x[index, , drop = FALSE], clusters[index], nPSU[index][1], : Stratum (413) has only one PSU at stage 1 > try(svymean(~api00, as.svrepdesign(ds))) Error in jknweights(design$strata[, 1], design$cluster[, 1], fpc = fpc, : Stratum413has only one PSU > options(survey.lonely.psu="remove") > svymean(~api00,ds) mean SE api00 644.17 5.8058 > svymean(~api00, as.svrepdesign(ds)) mean SE api00 644.17 5.8058 > options(survey.lonely.psu="certainty") > svymean(~api00,ds) mean SE api00 644.17 5.8058 > svymean(~api00, as.svrepdesign(ds)) mean SE api00 644.17 5.8058 > options(survey.lonely.psu="adjust") > svymean(~api00,ds) mean SE api00 644.17 5.8281 > svymean(~api00, as.svrepdesign(ds)) mean SE api00 644.17 5.8267 > options(survey.lonely.psu="average") > svymean(~api00,ds) mean SE api00 644.17 6.0096 > svymean(~api00, as.svrepdesign(ds)) mean SE api00 644.17 5.8217 > > ## fpc specified > fpc<-ifelse(apiclus1$dnum==413, 1,1000) > ds<-svydesign(id = ~1, weights = ~pw, strata = ~dnum, data = apiclus1,fpc=fpc) > summary(ds) Stratified Independent Sampling design svydesign(id = ~1, weights = ~pw, strata = ~dnum, data = apiclus1, fpc = fpc) Probabilities: Min. 1st Qu. Median Mean 3rd Qu. Max. 0.02954 0.02954 0.02954 0.02954 0.02954 0.02954 Stratum Sizes: 61 135 178 197 255 406 413 437 448 510 568 637 716 778 815 obs 13 34 4 13 16 2 1 4 12 21 9 11 37 2 4 design.PSU 13 34 4 13 16 2 1 4 12 21 9 11 37 2 4 actual.PSU 13 34 4 13 16 2 1 4 12 21 9 11 37 2 4 Population stratum sizes (PSUs): 135 178 197 255 406 413 437 448 510 568 61 637 716 778 815 1000 1000 1000 1000 1000 1 1000 1000 1000 1000 1000 1000 1000 1000 1000 Data variables: [1] "cds" "stype" "name" "sname" "snum" "dname" [7] "dnum" "cname" "cnum" "flag" "pcttest" "api00" [13] "api99" "target" "growth" "sch.wide" "comp.imp" "both" [19] "awards" "meals" "ell" "yr.rnd" "mobility" "acs.k3" [25] "acs.46" "acs.core" "pct.resp" "not.hsg" "hsg" "some.col" [31] "col.grad" "grad.sch" "avg.ed" "full" "emer" "enroll" [37] "api.stu" "fpc" "pw" > > options(survey.lonely.psu="fail") > try(svymean(~api00,ds)) mean SE api00 644.17 5.7344 > svymean(~api00, as.svrepdesign(ds)) mean SE api00 644.17 5.7344 > options(survey.lonely.psu="remove") > svymean(~api00,ds) mean SE api00 644.17 5.7344 > svymean(~api00, as.svrepdesign(ds)) mean SE api00 644.17 5.7344 > options(survey.lonely.psu="certainty") > svymean(~api00,ds) mean SE api00 644.17 5.7344 > svymean(~api00, as.svrepdesign(ds)) mean SE api00 644.17 5.7344 > options(survey.lonely.psu="adjust") > svymean(~api00,ds) mean SE api00 644.17 5.7344 > svymean(~api00, as.svrepdesign(ds)) mean SE api00 644.17 5.7344 > options(survey.lonely.psu="average") > svymean(~api00,ds) mean SE api00 644.17 5.7344 > svymean(~api00, as.svrepdesign(ds)) mean SE api00 644.17 5.7501 > > rs<-as.svrepdesign(ds) > svytotal(~api00,rs) total SE api00 3989986 35616 > SE(svytotal(~api00,subset(rs, dnum==413)))==0 [1] TRUE > > ## lonely PSUs after subsetting > ds<-svydesign(id = ~1, weights = ~pw, strata = ~dnum, data = subset(apiclus1,dnum !=413)) > ds1<-ds[-31,] > summary(ds1) Stratified Independent Sampling design (with replacement) svydesign(id = ~1, weights = ~pw, strata = ~dnum, data = subset(apiclus1, dnum != 413)) Probabilities: Min. 1st Qu. Median Mean 3rd Qu. Max. 0.02954 0.02954 0.02954 0.02954 0.02954 0.02954 Stratum Sizes: 61 135 178 197 255 406 437 448 510 568 637 716 778 815 obs 13 34 4 13 16 1 4 12 21 9 11 37 2 4 design.PSU 13 34 4 13 16 2 4 12 21 9 11 37 2 4 actual.PSU 13 34 4 13 16 1 4 12 21 9 11 37 2 4 Data variables: [1] "cds" "stype" "name" "sname" "snum" "dname" [7] "dnum" "cname" "cnum" "flag" "pcttest" "api00" [13] "api99" "target" "growth" "sch.wide" "comp.imp" "both" [19] "awards" "meals" "ell" "yr.rnd" "mobility" "acs.k3" [25] "acs.46" "acs.core" "pct.resp" "not.hsg" "hsg" "some.col" [31] "col.grad" "grad.sch" "avg.ed" "full" "emer" "enroll" [37] "api.stu" "fpc" "pw" > > options(survey.lonely.psu="fail") > svymean(~api00,ds1) mean SE api00 645.14 5.8909 > options(survey.lonely.psu="remove") > svymean(~api00,ds1) mean SE api00 645.14 5.8909 > options(survey.lonely.psu="certainty") > svymean(~api00,ds1) mean SE api00 645.14 5.8909 > options(survey.lonely.psu="adjust") > svymean(~api00,ds1) mean SE api00 645.14 5.8909 > options(survey.lonely.psu="average") > svymean(~api00,ds1) mean SE api00 645.14 5.8909 > > ## with adjustment > options(survey.adjust.domain.lonely=TRUE) > ds<-svydesign(id = ~1, weights = ~pw, strata = ~dnum, data = subset(apiclus1,dnum !=413)) > ds1<-ds[-31,] > summary(ds1) Stratified Independent Sampling design (with replacement) svydesign(id = ~1, weights = ~pw, strata = ~dnum, data = subset(apiclus1, dnum != 413)) Probabilities: Min. 1st Qu. Median Mean 3rd Qu. Max. 0.02954 0.02954 0.02954 0.02954 0.02954 0.02954 Stratum Sizes: 61 135 178 197 255 406 437 448 510 568 637 716 778 815 obs 13 34 4 13 16 1 4 12 21 9 11 37 2 4 design.PSU 13 34 4 13 16 2 4 12 21 9 11 37 2 4 actual.PSU 13 34 4 13 16 1 4 12 21 9 11 37 2 4 Data variables: [1] "cds" "stype" "name" "sname" "snum" "dname" [7] "dnum" "cname" "cnum" "flag" "pcttest" "api00" [13] "api99" "target" "growth" "sch.wide" "comp.imp" "both" [19] "awards" "meals" "ell" "yr.rnd" "mobility" "acs.k3" [25] "acs.46" "acs.core" "pct.resp" "not.hsg" "hsg" "some.col" [31] "col.grad" "grad.sch" "avg.ed" "full" "emer" "enroll" [37] "api.stu" "fpc" "pw" > > options(survey.lonely.psu="fail") > try(svymean(~api00,ds1)) mean SE api00 645.14 5.8909 Warning message: In onestrat(x[index, , drop = FALSE], clusters[index], nPSU[index][1], : Stratum (406) has only one PSU at stage 1 > options(survey.lonely.psu="remove") > svymean(~api00,ds1) mean SE api00 645.14 5.8909 Warning message: In onestrat(x[index, , drop = FALSE], clusters[index], nPSU[index][1], : Stratum (406) has only one PSU at stage 1 > options(survey.lonely.psu="certainty") > svymean(~api00,ds1) mean SE api00 645.14 5.8909 Warning message: In onestrat(x[index, , drop = FALSE], clusters[index], nPSU[index][1], : Stratum (406) has only one PSU at stage 1 > options(survey.lonely.psu="adjust") > svymean(~api00,ds1) mean SE api00 645.14 5.9119 Warning message: In onestrat(x[index, , drop = FALSE], clusters[index], nPSU[index][1], : Stratum (406) has only one PSU at stage 1 > options(survey.lonely.psu="average") > svymean(~api00,ds1) mean SE api00 645.14 6.0914 Warning message: In onestrat(x[index, , drop = FALSE], clusters[index], nPSU[index][1], : Stratum (406) has only one PSU at stage 1 > > proc.time() user system elapsed 0.449 0.028 0.484 survey/tests/nwtco-subcohort.rda0000644000176200001440000000166511457435613016622 0ustar liggesusersY9A,]x Xkx/@ƠVUfFDF{22./߿rbwϻo?>}~o~5z\պި}ݵe +sZ}=}#|vd߳+nh{WשЕv*v+}j|OٸE! (B95_U:=ۅgC}|b y@5ĭw+6\⻋w}PQ9(~?,q+]xY;876u翳[ydtuXXP}qv®OU{Yzy]GVݕ(^4*}uY/;djvzY@=q;ہ+@ VՏo(\ƫ:_fկ,XЅ6ounj]sdt|A(;Ϲ+*M>Q7n~Y}WB7<AUi]|UV?.}>xf>5W>ۥOq]__ˢ:tٞl/;Z]S͗,ނ͋ѝfDmw^Qq#]Γh9<>Ghu>fCclTMvXۮsUt+?<EW#(Gr*OPq?vՇj|/\ջү\Vxut}@wi֎<^]o+ޣkE|bWW\gQ·]y7x(\xS5łVÍGsW,Ab?H~survey/tests/deff.Rout.save0000644000176200001440000000433312372250160015466 0ustar liggesusers R version 3.1.0 (2014-04-10) -- "Spring Dance" Copyright (C) 2014 The R Foundation for Statistical Computing Platform: x86_64-apple-darwin13.1.0 (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. > ## from Takahiro Tsuchiya > library(survey) Attaching package: 'survey' The following object is masked from 'package:graphics': dotchart > kigyo<-read.table(tmp<-textConnection(" obs uriage srs.w pps.w + 1 1 15 100 20 + 2 2 143 100 200 + 3 3 21 100 11 + 4 4 51 100 25 + 5 5 337 100 550 + 6 6 50 100 30 + 7 7 274 100 250 + 8 8 145 100 100 + 9 9 15 100 10 + 10 10 86 100 55 + ",open="r"),header=TRUE) > close(tmp) > des.srs <- svydesign(ids=~1, weights=~srs.w, data=kigyo) > (res.srs <- svymean(~uriage, des.srs, deff=TRUE)) mean SE DEff uriage 113.700 35.626 1.0101 > (SE(res.srs)^2) / ((1-10/1000) * coef(svyvar(~uriage, des.srs)) / 10) uriage uriage 1.010101 > > (tres.srs <- svytotal(~uriage, des.srs, deff=TRUE)) total SE DEff uriage 113700 35626 1.0101 > (SE(tres.srs)^2) / (1000^2 * (1-10/1000) * coef(svyvar(~uriage, des.srs)) / 10) uriage uriage 1.010101 > > > des.pps <- svydesign(ids=~1, weights=~pps.w, data=kigyo) > (res.pps <- svymean(~uriage, des.pps, deff='replace')) mean SE DEff uriage 243.914 48.752 1.9741 > (SE(res.pps)^2) / (coef(svyvar(~uriage, des.pps)) / 10) uriage uriage 1.974067 > (tres.pps <- svytotal(~uriage, des.pps, deff='replace')) total SE DEff uriage 305136 184965 18.157 > (N.hat <- sum(weights(des.pps))) [1] 1251 > (SE(tres.pps)^2) / (N.hat^2 * coef(svyvar(~uriage, des.pps)) / 10) uriage uriage 18.15669 > > proc.time() user system elapsed 0.163 0.021 0.189 survey/tests/regpredict.R0000644000176200001440000000305311457435613015236 0ustar liggesuserslibrary(survey) data(api) dstrat<-svydesign(id=~1,strata=~stype, weights=~pw, data=apistrat, fpc=~fpc) ## regression estimator of total, three ways pop<-data.frame(enroll=sum(apipop$enroll, na.rm=TRUE)) npop <- sum(!is.na(apipop$enroll)) api.reg <- svyglm(api.stu~enroll, design=dstrat) a <- predict(api.reg, newdata=pop, total=npop) b <- svytotal(~api.stu, calibrate(dstrat, ~enroll, pop=c(npop, pop$enroll))) all.equal(as.vector(coef(a)),as.vector(coef(b))) all.equal(as.vector(SE(a)), as.vector(SE(b))) if(!is.null(getOption("DEBUG"))){ ## uses 6194x6194 matrix d <- predict(api.reg, newdata=na.omit(apipop[,"enroll",drop=FALSE])) all.equal(as.vector(coef(a)), as.vector(sum(coef(d)))) all.equal(as.vector(SE(a)), as.vector(sqrt(sum(vcov(d))))) } ## classical ratio estimator, four ways. api.reg2 <- svyglm(api.stu~enroll-1, design=dstrat, family=quasi(link="identity", var="mu")) a <- predict(api.reg2, newdata=pop, total=npop) b <- svytotal(~api.stu, calibrate(dstrat, ~enroll-1, pop= pop$enroll, variance=2)) e <- predict(svyratio(~api.stu, ~enroll, dstrat),total=pop$enroll) all.equal(as.vector(coef(a)),as.vector(coef(b))) all.equal(as.vector(SE(a)), as.vector(SE(b))) all.equal(as.vector(coef(a)),as.vector(e$total)) all.equal(as.vector(SE(a)), as.vector(e$se)) if(!is.null(getOption("DEBUG"))){## uses 6194x6194 matrix d <- predict(api.reg2, newdata=na.omit(apipop[,"enroll",drop=FALSE])) all.equal(as.vector(coef(a)), as.vector(sum(coef(d)))) all.equal(as.vector(SE(a)), as.vector(sqrt(sum(vcov(d))))) } survey/tests/survcurve.Rout.save0000644000176200001440000000511212372250160016622 0ustar liggesusers R version 3.1.0 (2014-04-10) -- "Spring Dance" Copyright (C) 2014 The R Foundation for Statistical Computing Platform: x86_64-apple-darwin13.1.0 (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(survey) Attaching package: 'survey' The following object is masked from 'package:graphics': dotchart > library(survival) Loading required package: splines > > pbc2<-rbind(pbc,pbc) > pbc2$id<-rep(1:418,2) > > dpbc1<-svydesign(id=~1, data=pbc) Warning message: In svydesign.default(id = ~1, data = pbc) : No weights or probabilities supplied, assuming equal probability > dpbc2<-svydesign(id=~id, data=pbc2) Warning message: In svydesign.default(id = ~id, data = pbc2) : No weights or probabilities supplied, assuming equal probability > > s1<-svykm(Surv(time,status>0)~1, subset(dpbc1, bili>6), se=TRUE) > s2<-svykm(Surv(time,status>0)~1, subset(dpbc2, bili>6), se=TRUE) > > (c1<-confint(s1,(1:5)*365)) 0.025 0.975 365 0.6446215 0.8594153 730 0.5410938 0.7766848 1095 0.2683127 0.5103356 1460 0.1444731 0.3722001 1825 0.1009672 0.3204713 > (c2<-confint(s2,(1:5)*365)) 0.025 0.975 365 0.6446215 0.8594153 730 0.5410938 0.7766848 1095 0.2683127 0.5103356 1460 0.1444731 0.3722001 1825 0.1009672 0.3204713 > all.equal(c1, c2) [1] TRUE > > m1<-svycoxph(Surv(time,status>0)~log(bili), design=dpbc1) > m2<-svycoxph(Surv(time,status>0)~log(bili), design=dpbc2) > > d<-data.frame(bili=c(5,10)) > p1<-predict(m1, se=TRUE, newdata=d,type="curve") > p2<-predict(m2, se=TRUE, newdata=d,type="curve") > > (pc1<-confint(p1[[1]],(1:5)*365)) 0.025 0.975 365 0.8410027 0.9266263 730 0.7371114 0.8548312 1095 0.5517779 0.7018583 1460 0.4335073 0.5992819 1825 0.3260899 0.5046241 > (pc2<-confint(p2[[1]],(1:5)*365)) 0.025 0.975 365 0.8409490 0.9267054 730 0.7370152 0.8549432 1095 0.5515848 0.7019513 1460 0.4332252 0.5992968 1825 0.3257172 0.5045795 > all.equal(pc1, pc2) [1] "Mean relative difference: 0.0002070722" > > (q1<-quantile(p1[[2]])) 0.75 0.5 0.25 489 930 1492 > (q2<-quantile(p2[[2]])) 0.75 0.5 0.25 489 930 1492 > all.equal(q1,q2) [1] TRUE > > proc.time() user system elapsed 3.410 0.099 3.519 survey/tests/lonely.psu.R0000755000176200001440000000427211457435613015225 0ustar liggesusers ## lonely PSUs by design library(survey) data(api) ## not certainty PSUs by fpc ds<-svydesign(id = ~1, weights = ~pw, strata = ~dnum, data = apiclus1) summary(ds) options(survey.lonely.psu="fail") try(svymean(~api00,ds)) try(svymean(~api00, as.svrepdesign(ds))) options(survey.lonely.psu="remove") svymean(~api00,ds) svymean(~api00, as.svrepdesign(ds)) options(survey.lonely.psu="certainty") svymean(~api00,ds) svymean(~api00, as.svrepdesign(ds)) options(survey.lonely.psu="adjust") svymean(~api00,ds) svymean(~api00, as.svrepdesign(ds)) options(survey.lonely.psu="average") svymean(~api00,ds) svymean(~api00, as.svrepdesign(ds)) ## fpc specified fpc<-ifelse(apiclus1$dnum==413, 1,1000) ds<-svydesign(id = ~1, weights = ~pw, strata = ~dnum, data = apiclus1,fpc=fpc) summary(ds) options(survey.lonely.psu="fail") try(svymean(~api00,ds)) svymean(~api00, as.svrepdesign(ds)) options(survey.lonely.psu="remove") svymean(~api00,ds) svymean(~api00, as.svrepdesign(ds)) options(survey.lonely.psu="certainty") svymean(~api00,ds) svymean(~api00, as.svrepdesign(ds)) options(survey.lonely.psu="adjust") svymean(~api00,ds) svymean(~api00, as.svrepdesign(ds)) options(survey.lonely.psu="average") svymean(~api00,ds) svymean(~api00, as.svrepdesign(ds)) rs<-as.svrepdesign(ds) svytotal(~api00,rs) SE(svytotal(~api00,subset(rs, dnum==413)))==0 ## lonely PSUs after subsetting ds<-svydesign(id = ~1, weights = ~pw, strata = ~dnum, data = subset(apiclus1,dnum !=413)) ds1<-ds[-31,] summary(ds1) options(survey.lonely.psu="fail") svymean(~api00,ds1) options(survey.lonely.psu="remove") svymean(~api00,ds1) options(survey.lonely.psu="certainty") svymean(~api00,ds1) options(survey.lonely.psu="adjust") svymean(~api00,ds1) options(survey.lonely.psu="average") svymean(~api00,ds1) ## with adjustment options(survey.adjust.domain.lonely=TRUE) ds<-svydesign(id = ~1, weights = ~pw, strata = ~dnum, data = subset(apiclus1,dnum !=413)) ds1<-ds[-31,] summary(ds1) options(survey.lonely.psu="fail") try(svymean(~api00,ds1)) options(survey.lonely.psu="remove") svymean(~api00,ds1) options(survey.lonely.psu="certainty") svymean(~api00,ds1) options(survey.lonely.psu="adjust") svymean(~api00,ds1) options(survey.lonely.psu="average") svymean(~api00,ds1) survey/tests/cigsw.rda0000644000176200001440000000644513542525537014601 0ustar liggesusersYwXS"*`0DPVa#, BPR+E[GUb[B*^'V:9iGy{!05B{1-# <7MhAD@ ؙ`OЎ@t"LPLЕ;A"MЇp#$8/A? J YC '\Fp9r>7<93+]㚝мl vp۲4oZjr2&4$!IV{co0Ф'q *!J!KI/R'4G]7."y)ؐ%>K_7d/BNC!|ϡ x^ h^; #‚xI}i$A$A}T,'),Ѽ.cbW?<&{R75>ׂqmǭkr >`Y)EH<9 SmH-- !JQ1gj̝Tw0TAK. [Qx{;YhlȠ`zbԻCL43ݷY4֮bhBqڵ|ֈvY[yN*Z_l3MshQO`OĩaĤ86SQU*xd6!#rGbOmEu\!FaW!a'JA< %= N/BN D+e:Xu" {׈+d-aV|ArtWu`c/aQ5O]~Ƣ]Y\dۿ@<ա>{S|[Sð?HS ].m'3D}LP +gFbzU̫)?Ӵޤ Ίr?}|'1Oq6>t8b;=Y?#v^;uf`u~΋|c No\i%JO`#vc;'`eno(Kks{0~fG.c<%đA}G8CԆh7'vTnº޿"0y\ݫ>c)J#e]QLE\݋|NN1=?zn+F Tc^Axj 0>CJS>z%/=ƅc@b@~#/!.Lt$l]P 14ꢖBP-X s}hNn.muT$D=K-om+@Pڑ'!i{{3}9f6[d]kt4|91'p][r{C`ƝABOB#KA둹fTL"K, խDO_[Fݶ<ЦY?Yq=W5m8e{v*#H.h ;eDܓ ~i(]y;rOH,̟2TK]?kxſJm}NNAEF ~@8=0ti$[_Qn+ qOC^>x+Os灸RRa|ܝ'S[ȧc4}}~o^#xn__ 7m[V}=J<^zѽph*La|ŇmfпGW+%Zܳ}MmCMIԶ;XXXWm ]~ڴoz>z۔vDB'?>Y{9ftw -z,֯ǢE=([7$1J{~O?SNY2X"zoohVˏm~F^]iQf? 2qEe y'u&Ґ&ÐԢt>>A~vL33B%u={c%fig<-/2,*/3M\ZԜtNjqE9w}V-cmuܲif%oQD%::3T,{I/|7+:oDgoà0ڿ{IwyNWCU>h8όRg|Ii=B2}ٔ\:Oϋe fxԍ{CiF&ƺ)iD49eAEM&gsE2t\t++M|D-H`OKN^KVf+9ׯzKg&nXzM59% HOsurvey/tests/svyivreg-var.R0000644000176200001440000000042614221463056015545 0ustar liggesusers library(survey) data(api) dstrat<-svydesign(id=~1,strata=~stype, weights=~pw, data=apistrat, fpc=~fpc) a<-summary(svyglm(api00~ell+meals+mobility, design=dstrat)) b<- summary(svyivreg(api00~ell+meals+mobility, design=dstrat)) stopifnot(isTRUE(all.equal(a$cov.scaled, b$vcov))) survey/tests/kalton.Rout.save0000644000176200001440000000641512372250160016055 0ustar liggesusers R version 3.1.0 (2014-04-10) -- "Spring Dance" Copyright (C) 2014 The R Foundation for Statistical Computing Platform: x86_64-apple-darwin13.1.0 (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(survey) Attaching package: 'survey' The following object is masked from 'package:graphics': dotchart > > ab<-expand.grid(a=factor(1:4),b=factor(1:3)) > > kaltonsample<-ab[rep(1:12,c(20,50,100,30,40,140,50,100,40,310,50,70)),] > > kaltonpop<-ab[rep(1:12,c(80,60,170,55,40,150,60,165,55,340,200,125)),] > > jointpop<-colSums(model.matrix(~a*b,kaltonpop)) > marginalpop<-colSums(model.matrix(~a+b,kaltonpop)) > gregpop<-colSums(model.matrix(~as.numeric(a)+as.numeric(b),kaltonpop)) > > dkalton<-svydesign(id=~1,data=kaltonsample) Warning message: In svydesign.default(id = ~1, data = kaltonsample) : No weights or probabilities supplied, assuming equal probability > > dps<-postStratify(dkalton,~a+b,xtabs(~a+b,kaltonpop)) > > drake<-rake(dkalton, list(~a,~b),list(xtabs(~a,kaltonpop),xtabs(~b,kaltonpop)),control=list(epsilon=0.0001)) > > dcalps<-calibrate(dkalton, ~a*b, jointpop) > dcalrake<-calibrate(dkalton,~a+b, marginalpop, calfun="raking") Loading required package: MASS > dlinear<-calibrate(dkalton, ~a+b, marginalpop) > > dtrunclinear<-calibrate(dkalton, ~a+b, marginalpop,bounds=c(0.5,2.2)) > > dlogit<-calibrate(dkalton, ~a+b, marginalpop,bounds=c(0.5,2.2),calfun="logit") > > dgreg<-calibrate(dkalton,~as.numeric(a)+as.numeric(b), gregpop) > > > #table A > round(svytable(~a+b,dps)/xtabs(~a+b,kaltonsample),2) b a 1 2 3 1 4.00 1.00 1.38 2 1.20 1.07 1.10 3 1.70 1.20 4.00 4 1.83 1.65 1.79 > round(svytable(~a+b,dcalps)/xtabs(~a+b,kaltonsample),2) b a 1 2 3 1 4.00 1.00 1.37 2 1.20 1.07 1.10 3 1.70 1.20 4.00 4 1.83 1.65 1.79 > > #table B > round(svytable(~a+b,drake)/xtabs(~a+b,kaltonsample),2) b a 1 2 3 1 1.81 1.45 2.02 2 1.08 0.87 1.21 3 2.20 1.76 2.45 4 1.83 1.47 2.04 > round(svytable(~a+b,dcalrake)/xtabs(~a+b,kaltonsample),2) b a 1 2 3 1 1.81 1.45 2.02 2 1.08 0.87 1.21 3 2.20 1.76 2.45 4 1.83 1.47 2.04 > > #table C > round(svytable(~a+b,dlinear)/xtabs(~a+b,kaltonsample),2) b a 1 2 3 1 1.82 1.50 1.97 2 1.09 0.78 1.24 3 2.19 1.88 2.34 4 1.83 1.52 1.98 > > #table D > round(svytable(~a+b,dgreg)/xtabs(~a+b,kaltonsample),2) b a 1 2 3 1 1.21 1.17 1.14 2 1.43 1.40 1.36 3 1.66 1.62 1.59 4 1.88 1.85 1.81 > > #table G > round(svytable(~a+b,dlogit)/xtabs(~a+b,kaltonsample),2) b a 1 2 3 1 1.87 1.46 1.98 2 1.08 0.74 1.27 3 2.17 2.09 2.18 4 1.89 1.49 1.99 > > #table G > round(svytable(~a+b,dtrunclinear)/xtabs(~a+b,kaltonsample),2) b a 1 2 3 1 1.81 1.48 1.99 2 1.08 0.75 1.26 3 2.20 2.00 2.20 4 1.83 1.50 2.00 > > proc.time() user system elapsed 0.248 0.027 0.282 survey/tests/svyby_bug.R0000644000176200001440000000334514360142135015111 0ustar liggesuserslibrary(survey) options(warn=2) ## Caused warnings and unhelpful results in 4.1_1 (Guilherme Jacob) data(api) dclus1<-svydesign(id=~dnum, weights=~pw, data=apiclus1, fpc=~fpc) svyby(~api99, ~stype, dclus1, svymean ) set.seed(123) apiclus1$api99[ sample.int( nrow(apiclus1) , 5 ) ] <- NA dclus1.na <-svydesign(id=~dnum, weights=~pw, data=apiclus1, fpc=~fpc) # subsetting w/ na.rm = FALSE... svymean( ~api99 , subset( dclus1.na , stype == "E" ) , na.rm = FALSE ) svymean( ~api99 , subset( dclus1.na , stype == "H" ) , na.rm = FALSE ) svymean( ~api99 , subset( dclus1.na , stype == "M" ) , na.rm = FALSE ) # ... looks like this: svyby(~api99, ~stype, dclus1.na , svymean ) # subsetting w/ na.rm = TRUE... svymean( ~api99 , subset( dclus1.na , stype == "E" ) , na.rm = TRUE ) svymean( ~api99 , subset( dclus1.na , stype == "H" ) , na.rm = TRUE ) svymean( ~api99 , subset( dclus1.na , stype == "M" ) , na.rm = TRUE ) # ... looks like this svyby(~api99, ~stype, dclus1.na , svymean , na.rm = TRUE ) # Without missing values, this works: svyby(~api99, ~stype, dclus1 , svymean , na.rm = TRUE , covmat = TRUE ) # ... but this breaks! svyby(~api99, ~stype, dclus1.na , svymean , na.rm = TRUE , covmat = TRUE ) # ... and i don't think this is the expected behavior svyby( ~api99, ~stype, dclus1.na , svymean , na.rm.all = TRUE , covmat = TRUE ) svyby( ~api99, ~stype, dclus1.na , svymean , na.rm.all = TRUE , na.rm = TRUE , covmat = TRUE ) ## Now some more as tests svyby(~api99, ~stype, dclus1.na , svytotal , na.rm = TRUE , covmat = TRUE ) svyby(~api99, ~stype, dclus1.na , svyratio , na.rm = TRUE , denominator=~api00, covmat = TRUE ) ff<-function(f,d,...,na.rm=TRUE) svyglm(f,d,...) svyby(api99~1, ~stype, dclus1.na , ff , na.rm = TRUE , covmat = TRUE ) survey/tests/domain.R0000644000176200001440000001016511757250654014362 0ustar liggesusers## ## Domain means can be written as ratio estimators or as regression coefficients ## ## This code checks that subsetting the design object gives the same results as ## these approaches. ## library(survey) data(fpc) dfpc<-svydesign(id=~psuid,strat=~stratid,weight=~weight,data=fpc,nest=TRUE) dsub<-subset(dfpc,x>4) (m1<-svymean(~x,design=dsub)) ## These should give the same domain estimates and standard errors (m2<-svyby(~x,~I(x>4),design=dfpc, svymean,keep.var=TRUE)) m3<-svyglm(x~I(x>4)+0,design=dfpc) summary(m3) (m4<-svyratio(~I(x*(x>4)),~as.numeric(x>4), dfpc)) stopifnot(isTRUE(all.equal(SE(m2), as.vector(SE(m3))))) stopifnot(isTRUE(all.equal(SE(m2)[2], as.vector(SE(m4))))) ## with strata data(api) dstrat<-svydesign(id=~1, strata=~stype, weights=~pw, data=apistrat, fpc=~fpc) m1<-svymean(~enroll, subset(dstrat, comp.imp=="Yes")) m2<-svyglm(enroll~comp.imp-1, dstrat) m3<- svyratio(~I(enroll*(comp.imp=="Yes")), ~as.numeric(comp.imp=="Yes"), dstrat) stopifnot(isTRUE(all.equal(as.vector(SE(m2)["comp.impYes"]), as.vector(SE(m1))))) stopifnot(isTRUE( all.equal(as.vector(SE(m1)), as.vector(drop(SE(m3)))))) ## with calibration dclus1<-svydesign(id=~dnum, weights=~pw, data=apiclus1, fpc=~fpc) pop.totals<-c(`(Intercept)`=6194, stypeH=755, stypeM=1018) (dclus1g3 <- calibrate(dclus1, ~stype+api99, c(pop.totals, api99=3914069))) m1<-svymean(~api00, subset(dclus1g3, comp.imp=="Yes")) m3<-svyratio(~I(api00*(comp.imp=="Yes")), ~as.numeric(comp.imp=="Yes"), dclus1g3) m2<-svyglm(api00~comp.imp-1, dclus1g3) stopifnot(isTRUE( all.equal(as.vector(SE(m2)["comp.impYes"]), as.vector(SE(m1))))) stopifnot(isTRUE( all.equal(as.vector(SE(m1)), as.vector(drop(SE(m3)))))) ## with raking pop.types <- data.frame(stype=c("E","H","M"), Freq=c(4421,755,1018)) pop.schwide <- data.frame(sch.wide=c("No","Yes"), Freq=c(1072,5122)) dclus1r<-rake(dclus1, list(~stype,~sch.wide), list(pop.types, pop.schwide)) m1<-svymean(~api00, subset(dclus1r, comp.imp=="Yes")) m2<-svyglm(api00~comp.imp-1, dclus1r) m3<-svyratio(~I(api00*(comp.imp=="Yes")), ~as.numeric(comp.imp=="Yes"), dclus1r) stopifnot(isTRUE( all.equal(as.vector(SE(m2)["comp.impYes"]), as.vector(SE(m1))))) stopifnot(isTRUE( all.equal(as.vector(SE(m1)), as.vector(drop(SE(m3)))))) ## ## based on bug report from Takahiro Tsuchiya for version 3.4 ## rei<-read.table(tmp<-textConnection( " id N n.a h n.ah n.h sub y 1 1 300 20 1 12 5 TRUE 1 2 2 300 20 1 12 5 TRUE 2 3 3 300 20 1 12 5 TRUE 3 4 4 300 20 1 12 5 TRUE 4 5 5 300 20 1 12 5 TRUE 5 6 6 300 20 1 12 5 FALSE NA 7 7 300 20 1 12 5 FALSE NA 8 8 300 20 1 12 5 FALSE NA 9 9 300 20 1 12 5 FALSE NA 10 10 300 20 1 12 5 FALSE NA 11 11 300 20 1 12 5 FALSE NA 12 12 300 20 1 12 5 FALSE NA 13 13 300 20 2 8 3 TRUE 6 14 14 300 20 2 8 3 TRUE 7 15 15 300 20 2 8 3 TRUE 8 16 16 300 20 2 8 3 FALSE NA 17 17 300 20 2 8 3 FALSE NA 18 18 300 20 2 8 3 FALSE NA 19 19 300 20 2 8 3 FALSE NA 20 20 300 20 2 8 3 FALSE NA "), header=TRUE) close(tmp) des.rei2 <- twophase(id=list(~id,~id), strata=list(NULL,~h), fpc=list(~N,NULL), subset=~sub, data=rei, method="full") tot2<- svytotal(~y, subset(des.rei2, y>3)) rei$y<-rei$y*(rei$y>3) ## based on Sarndal et al (9.4.14) rei$w.ah <- rei$n.ah / rei$n.a a.rei <- aggregate(rei, by=list(rei$h), mean, na.rm=TRUE) a.rei$S.ysh <- tapply(rei$y, rei$h, var, na.rm=TRUE) a.rei$y.u <- sum(a.rei$w.ah * a.rei$y) V <- with(a.rei, sum(N * (N-1) * ((n.ah-1)/(n.a-1) - (n.h-1)/(N-1)) * w.ah * S.ysh / n.h)) V <- V + with(a.rei, sum(N * (N-n.a) * w.ah * (y - y.u)^2 / (n.a-1))) a.rei$f.h<-with(a.rei, n.h/n.ah) Vphase2<-with(a.rei, sum(N*N*w.ah^2* ((1-f.h)/n.h) *S.ysh)) a.rei$f<-with(a.rei, n.a/N) a.rei$delta.h<-with(a.rei, (1/n.h)*(n.a-n.ah)/(n.a-1)) Vphase1<-with(a.rei, sum(N*N*((1-f)/n.a)*( w.ah*(1-delta.h)*S.ysh+ ((n.a)/(n.a-1))*w.ah*(y-y.u)^2))) V Vphase1 Vphase2 vcov(tot2) ## comparing to regression reg<-svyglm(y~I(y<4), design=des.rei2) mn<-svymean(~y, subset(des.rei2,y>3)) all.equal(as.vector(coef(reg))[1],as.vector(coef(mn))) all.equal(as.vector(SE(reg))[1],as.vector(SE(mn))) vcov(mn) vcov(reg) survey/tests/nwts-cch.R0000644000176200001440000000215211457435613014633 0ustar liggesuserslibrary(survey) library(survival) data(nwtco) ntwco<-subset(nwtco, !is.na(edrel)) load("nwtco-subcohort.rda") nwtco$subcohort<-subcohort d_BorganII <- twophase(id=list(~seqno,~seqno), strata=list(NULL,~interaction(instit,rel)), data=nwtco, subset=~I(rel |subcohort)) ##Coefficient results same as Splus with code from ## http://faculty.washington.edu/norm/software.html ## SE slightly larger due to using sandwich variance. svycoxph(Surv(edrel, rel)~factor(stage)+factor(histol)+I(age/12), design=d_BorganII) ## ## This gives higher standard errors. calibrate() does not recompute the ## finite population correction if a calibration variable happens to predict ## sampling perfectly. It probably should. ## d_BorganIIps<-calibrate(twophase(id=list(~seqno,~seqno), strata=list(NULL,~rel), data=nwtco, subset=~I(rel |subcohort)), phase=2, formula=~interaction(instit,rel), epsilon=1e-10) svycoxph(Surv(edrel, rel)~factor(stage)+factor(histol)+I(age/12), design=d_BorganIIps) survey/tests/survcurve.R0000644000176200001440000000136211457435613015153 0ustar liggesuserslibrary(survey) library(survival) pbc2<-rbind(pbc,pbc) pbc2$id<-rep(1:418,2) dpbc1<-svydesign(id=~1, data=pbc) dpbc2<-svydesign(id=~id, data=pbc2) s1<-svykm(Surv(time,status>0)~1, subset(dpbc1, bili>6), se=TRUE) s2<-svykm(Surv(time,status>0)~1, subset(dpbc2, bili>6), se=TRUE) (c1<-confint(s1,(1:5)*365)) (c2<-confint(s2,(1:5)*365)) all.equal(c1, c2) m1<-svycoxph(Surv(time,status>0)~log(bili), design=dpbc1) m2<-svycoxph(Surv(time,status>0)~log(bili), design=dpbc2) d<-data.frame(bili=c(5,10)) p1<-predict(m1, se=TRUE, newdata=d,type="curve") p2<-predict(m2, se=TRUE, newdata=d,type="curve") (pc1<-confint(p1[[1]],(1:5)*365)) (pc2<-confint(p2[[1]],(1:5)*365)) all.equal(pc1, pc2) (q1<-quantile(p1[[2]])) (q2<-quantile(p2[[2]])) all.equal(q1,q2) survey/tests/defftest.R0000644000176200001440000000117013676517357014723 0ustar liggesuserslibrary(survey) data(api) ## one-stage cluster sample dclus1<-svydesign(id=~dnum, weights=~pw, data=apiclus1, fpc=~fpc) # svyglm model mod <- svyglm(api99 ~ enroll + api.stu, design = dclus1, deff = TRUE) #deffs returned from svyglm model - implausibly high deff(mod) #> (Intercept) enroll api.stu #> 351.3500 457.6799 491.5567 # run mod with same data and glm() srs_mod <- glm(api99 ~ enroll + api.stu, data = apiclus1) # manually calculate deffs clust_se <- summary(mod)$coefficients[,2] srs_se <- summary(srs_mod)$coefficients[,2] deffs <- clust_se^2 / srs_se^2 stopifnot(all.equal(deffs, deff(mod))) survey/tests/testoutput/0000755000176200001440000000000014412404246015212 5ustar liggesuserssurvey/tests/testoutput/api.Rout.saved0000644000176200001440000003543313101464017017743 0ustar liggesusers R version 3.1.0 (2014-04-10) -- "Spring Dance" Copyright (C) 2014 The R Foundation for Statistical Computing Platform: x86_64-apple-darwin13.1.0 (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(survey) Attaching package: 'survey' The following object is masked from 'package:graphics': dotchart > options(survey.replicates.mse=TRUE) > example(api) api> library(survey) api> data(api) api> mean(apipop$api00) [1] 664.7126 api> sum(apipop$enroll, na.rm=TRUE) [1] 3811472 api> #stratified sample api> dstrat<-svydesign(id=~1,strata=~stype, weights=~pw, data=apistrat, fpc=~fpc) api> summary(dstrat) Stratified Independent Sampling design svydesign(id = ~1, strata = ~stype, weights = ~pw, data = apistrat, fpc = ~fpc) Probabilities: Min. 1st Qu. Median Mean 3rd Qu. Max. 0.02262 0.02262 0.03587 0.04014 0.05339 0.06623 Stratum Sizes: E H M obs 100 50 50 design.PSU 100 50 50 actual.PSU 100 50 50 Population stratum sizes (PSUs): E H M 4421 755 1018 Data variables: [1] "cds" "stype" "name" "sname" "snum" "dname" [7] "dnum" "cname" "cnum" "flag" "pcttest" "api00" [13] "api99" "target" "growth" "sch.wide" "comp.imp" "both" [19] "awards" "meals" "ell" "yr.rnd" "mobility" "acs.k3" [25] "acs.46" "acs.core" "pct.resp" "not.hsg" "hsg" "some.col" [31] "col.grad" "grad.sch" "avg.ed" "full" "emer" "enroll" [37] "api.stu" "pw" "fpc" api> svymean(~api00, dstrat) mean SE api00 662.29 9.4089 api> svytotal(~enroll, dstrat, na.rm=TRUE) total SE enroll 3687178 114642 api> # one-stage cluster sample api> dclus1<-svydesign(id=~dnum, weights=~pw, data=apiclus1, fpc=~fpc) api> summary(dclus1) 1 - level Cluster Sampling design With (15) clusters. svydesign(id = ~dnum, weights = ~pw, data = apiclus1, fpc = ~fpc) Probabilities: Min. 1st Qu. Median Mean 3rd Qu. Max. 0.02954 0.02954 0.02954 0.02954 0.02954 0.02954 Population size (PSUs): 757 Data variables: [1] "cds" "stype" "name" "sname" "snum" "dname" [7] "dnum" "cname" "cnum" "flag" "pcttest" "api00" [13] "api99" "target" "growth" "sch.wide" "comp.imp" "both" [19] "awards" "meals" "ell" "yr.rnd" "mobility" "acs.k3" [25] "acs.46" "acs.core" "pct.resp" "not.hsg" "hsg" "some.col" [31] "col.grad" "grad.sch" "avg.ed" "full" "emer" "enroll" [37] "api.stu" "fpc" "pw" api> svymean(~api00, dclus1) mean SE api00 644.17 23.542 api> svytotal(~enroll, dclus1, na.rm=TRUE) total SE enroll 3404940 932235 api> # two-stage cluster sample api> dclus2<-svydesign(id=~dnum+snum, fpc=~fpc1+fpc2, data=apiclus2) api> summary(dclus2) 2 - level Cluster Sampling design With (40, 126) clusters. svydesign(id = ~dnum + snum, fpc = ~fpc1 + fpc2, data = apiclus2) Probabilities: Min. 1st Qu. Median Mean 3rd Qu. Max. 0.003669 0.037740 0.052840 0.042390 0.052840 0.052840 Population size (PSUs): 757 Data variables: [1] "cds" "stype" "name" "sname" "snum" "dname" [7] "dnum" "cname" "cnum" "flag" "pcttest" "api00" [13] "api99" "target" "growth" "sch.wide" "comp.imp" "both" [19] "awards" "meals" "ell" "yr.rnd" "mobility" "acs.k3" [25] "acs.46" "acs.core" "pct.resp" "not.hsg" "hsg" "some.col" [31] "col.grad" "grad.sch" "avg.ed" "full" "emer" "enroll" [37] "api.stu" "pw" "fpc1" "fpc2" api> svymean(~api00, dclus2) mean SE api00 670.81 30.099 api> svytotal(~enroll, dclus2, na.rm=TRUE) total SE enroll 2639273 799638 api> # two-stage `with replacement' api> dclus2wr<-svydesign(id=~dnum+snum, weights=~pw, data=apiclus2) api> summary(dclus2wr) 2 - level Cluster Sampling design (with replacement) With (40, 126) clusters. svydesign(id = ~dnum + snum, weights = ~pw, data = apiclus2) Probabilities: Min. 1st Qu. Median Mean 3rd Qu. Max. 0.003669 0.037740 0.052840 0.042390 0.052840 0.052840 Data variables: [1] "cds" "stype" "name" "sname" "snum" "dname" [7] "dnum" "cname" "cnum" "flag" "pcttest" "api00" [13] "api99" "target" "growth" "sch.wide" "comp.imp" "both" [19] "awards" "meals" "ell" "yr.rnd" "mobility" "acs.k3" [25] "acs.46" "acs.core" "pct.resp" "not.hsg" "hsg" "some.col" [31] "col.grad" "grad.sch" "avg.ed" "full" "emer" "enroll" [37] "api.stu" "pw" "fpc1" "fpc2" api> svymean(~api00, dclus2wr) mean SE api00 670.81 30.712 api> svytotal(~enroll, dclus2wr, na.rm=TRUE) total SE enroll 2639273 820261 api> # convert to replicate weights api> rclus1<-as.svrepdesign(dclus1) api> summary(rclus1) Call: as.svrepdesign(dclus1) Unstratified cluster jacknife (JK1) with 15 replicates and MSE variances. Variables: [1] "cds" "stype" "name" "sname" "snum" "dname" [7] "dnum" "cname" "cnum" "flag" "pcttest" "api00" [13] "api99" "target" "growth" "sch.wide" "comp.imp" "both" [19] "awards" "meals" "ell" "yr.rnd" "mobility" "acs.k3" [25] "acs.46" "acs.core" "pct.resp" "not.hsg" "hsg" "some.col" [31] "col.grad" "grad.sch" "avg.ed" "full" "emer" "enroll" [37] "api.stu" "fpc" "pw" api> svymean(~api00, rclus1) mean SE api00 644.17 26.335 api> svytotal(~enroll, rclus1, na.rm=TRUE) total SE enroll 3404940 932235 api> # post-stratify on school type api> pop.types<-xtabs(~stype, data=apipop) api> rclus1p<-postStratify(rclus1, ~stype, pop.types) api> dclus1p<-postStratify(dclus1, ~stype, pop.types) api> summary(dclus1p) 1 - level Cluster Sampling design With (15) clusters. postStratify(dclus1, ~stype, pop.types) Probabilities: Min. 1st Qu. Median Mean 3rd Qu. Max. 0.01854 0.03257 0.03257 0.03040 0.03257 0.03257 Population size (PSUs): 757 Data variables: [1] "cds" "stype" "name" "sname" "snum" "dname" [7] "dnum" "cname" "cnum" "flag" "pcttest" "api00" [13] "api99" "target" "growth" "sch.wide" "comp.imp" "both" [19] "awards" "meals" "ell" "yr.rnd" "mobility" "acs.k3" [25] "acs.46" "acs.core" "pct.resp" "not.hsg" "hsg" "some.col" [31] "col.grad" "grad.sch" "avg.ed" "full" "emer" "enroll" [37] "api.stu" "fpc" "pw" api> summary(rclus1p) Call: postStratify(rclus1, ~stype, pop.types) Unstratified cluster jacknife (JK1) with 15 replicates and MSE variances. Variables: [1] "cds" "stype" "name" "sname" "snum" "dname" [7] "dnum" "cname" "cnum" "flag" "pcttest" "api00" [13] "api99" "target" "growth" "sch.wide" "comp.imp" "both" [19] "awards" "meals" "ell" "yr.rnd" "mobility" "acs.k3" [25] "acs.46" "acs.core" "pct.resp" "not.hsg" "hsg" "some.col" [31] "col.grad" "grad.sch" "avg.ed" "full" "emer" "enroll" [37] "api.stu" "fpc" "pw" api> svymean(~api00, dclus1p) mean SE api00 642.31 23.921 api> svytotal(~enroll, dclus1p, na.rm=TRUE) total SE enroll 3680893 406293 api> svymean(~api00, rclus1p) mean SE api00 642.31 26.936 api> svytotal(~enroll, rclus1p, na.rm=TRUE) total SE enroll 3680893 473434 > > options(survey.replicates.mse=FALSE) > example(api) api> library(survey) api> data(api) api> mean(apipop$api00) [1] 664.7126 api> sum(apipop$enroll, na.rm=TRUE) [1] 3811472 api> #stratified sample api> dstrat<-svydesign(id=~1,strata=~stype, weights=~pw, data=apistrat, fpc=~fpc) api> summary(dstrat) Stratified Independent Sampling design svydesign(id = ~1, strata = ~stype, weights = ~pw, data = apistrat, fpc = ~fpc) Probabilities: Min. 1st Qu. Median Mean 3rd Qu. Max. 0.02262 0.02262 0.03587 0.04014 0.05339 0.06623 Stratum Sizes: E H M obs 100 50 50 design.PSU 100 50 50 actual.PSU 100 50 50 Population stratum sizes (PSUs): E H M 4421 755 1018 Data variables: [1] "cds" "stype" "name" "sname" "snum" "dname" [7] "dnum" "cname" "cnum" "flag" "pcttest" "api00" [13] "api99" "target" "growth" "sch.wide" "comp.imp" "both" [19] "awards" "meals" "ell" "yr.rnd" "mobility" "acs.k3" [25] "acs.46" "acs.core" "pct.resp" "not.hsg" "hsg" "some.col" [31] "col.grad" "grad.sch" "avg.ed" "full" "emer" "enroll" [37] "api.stu" "pw" "fpc" api> svymean(~api00, dstrat) mean SE api00 662.29 9.4089 api> svytotal(~enroll, dstrat, na.rm=TRUE) total SE enroll 3687178 114642 api> # one-stage cluster sample api> dclus1<-svydesign(id=~dnum, weights=~pw, data=apiclus1, fpc=~fpc) api> summary(dclus1) 1 - level Cluster Sampling design With (15) clusters. svydesign(id = ~dnum, weights = ~pw, data = apiclus1, fpc = ~fpc) Probabilities: Min. 1st Qu. Median Mean 3rd Qu. Max. 0.02954 0.02954 0.02954 0.02954 0.02954 0.02954 Population size (PSUs): 757 Data variables: [1] "cds" "stype" "name" "sname" "snum" "dname" [7] "dnum" "cname" "cnum" "flag" "pcttest" "api00" [13] "api99" "target" "growth" "sch.wide" "comp.imp" "both" [19] "awards" "meals" "ell" "yr.rnd" "mobility" "acs.k3" [25] "acs.46" "acs.core" "pct.resp" "not.hsg" "hsg" "some.col" [31] "col.grad" "grad.sch" "avg.ed" "full" "emer" "enroll" [37] "api.stu" "fpc" "pw" api> svymean(~api00, dclus1) mean SE api00 644.17 23.542 api> svytotal(~enroll, dclus1, na.rm=TRUE) total SE enroll 3404940 932235 api> # two-stage cluster sample api> dclus2<-svydesign(id=~dnum+snum, fpc=~fpc1+fpc2, data=apiclus2) api> summary(dclus2) 2 - level Cluster Sampling design With (40, 126) clusters. svydesign(id = ~dnum + snum, fpc = ~fpc1 + fpc2, data = apiclus2) Probabilities: Min. 1st Qu. Median Mean 3rd Qu. Max. 0.003669 0.037740 0.052840 0.042390 0.052840 0.052840 Population size (PSUs): 757 Data variables: [1] "cds" "stype" "name" "sname" "snum" "dname" [7] "dnum" "cname" "cnum" "flag" "pcttest" "api00" [13] "api99" "target" "growth" "sch.wide" "comp.imp" "both" [19] "awards" "meals" "ell" "yr.rnd" "mobility" "acs.k3" [25] "acs.46" "acs.core" "pct.resp" "not.hsg" "hsg" "some.col" [31] "col.grad" "grad.sch" "avg.ed" "full" "emer" "enroll" [37] "api.stu" "pw" "fpc1" "fpc2" api> svymean(~api00, dclus2) mean SE api00 670.81 30.099 api> svytotal(~enroll, dclus2, na.rm=TRUE) total SE enroll 2639273 799638 api> # two-stage `with replacement' api> dclus2wr<-svydesign(id=~dnum+snum, weights=~pw, data=apiclus2) api> summary(dclus2wr) 2 - level Cluster Sampling design (with replacement) With (40, 126) clusters. svydesign(id = ~dnum + snum, weights = ~pw, data = apiclus2) Probabilities: Min. 1st Qu. Median Mean 3rd Qu. Max. 0.003669 0.037740 0.052840 0.042390 0.052840 0.052840 Data variables: [1] "cds" "stype" "name" "sname" "snum" "dname" [7] "dnum" "cname" "cnum" "flag" "pcttest" "api00" [13] "api99" "target" "growth" "sch.wide" "comp.imp" "both" [19] "awards" "meals" "ell" "yr.rnd" "mobility" "acs.k3" [25] "acs.46" "acs.core" "pct.resp" "not.hsg" "hsg" "some.col" [31] "col.grad" "grad.sch" "avg.ed" "full" "emer" "enroll" [37] "api.stu" "pw" "fpc1" "fpc2" api> svymean(~api00, dclus2wr) mean SE api00 670.81 30.712 api> svytotal(~enroll, dclus2wr, na.rm=TRUE) total SE enroll 2639273 820261 api> # convert to replicate weights api> rclus1<-as.svrepdesign(dclus1) api> summary(rclus1) Call: as.svrepdesign(dclus1) Unstratified cluster jacknife (JK1) with 15 replicates. Variables: [1] "cds" "stype" "name" "sname" "snum" "dname" [7] "dnum" "cname" "cnum" "flag" "pcttest" "api00" [13] "api99" "target" "growth" "sch.wide" "comp.imp" "both" [19] "awards" "meals" "ell" "yr.rnd" "mobility" "acs.k3" [25] "acs.46" "acs.core" "pct.resp" "not.hsg" "hsg" "some.col" [31] "col.grad" "grad.sch" "avg.ed" "full" "emer" "enroll" [37] "api.stu" "fpc" "pw" api> svymean(~api00, rclus1) mean SE api00 644.17 26.329 api> svytotal(~enroll, rclus1, na.rm=TRUE) total SE enroll 3404940 932235 api> # post-stratify on school type api> pop.types<-xtabs(~stype, data=apipop) api> rclus1p<-postStratify(rclus1, ~stype, pop.types) api> dclus1p<-postStratify(dclus1, ~stype, pop.types) api> summary(dclus1p) 1 - level Cluster Sampling design With (15) clusters. postStratify(dclus1, ~stype, pop.types) Probabilities: Min. 1st Qu. Median Mean 3rd Qu. Max. 0.01854 0.03257 0.03257 0.03040 0.03257 0.03257 Population size (PSUs): 757 Data variables: [1] "cds" "stype" "name" "sname" "snum" "dname" [7] "dnum" "cname" "cnum" "flag" "pcttest" "api00" [13] "api99" "target" "growth" "sch.wide" "comp.imp" "both" [19] "awards" "meals" "ell" "yr.rnd" "mobility" "acs.k3" [25] "acs.46" "acs.core" "pct.resp" "not.hsg" "hsg" "some.col" [31] "col.grad" "grad.sch" "avg.ed" "full" "emer" "enroll" [37] "api.stu" "fpc" "pw" api> summary(rclus1p) Call: postStratify(rclus1, ~stype, pop.types) Unstratified cluster jacknife (JK1) with 15 replicates. Variables: [1] "cds" "stype" "name" "sname" "snum" "dname" [7] "dnum" "cname" "cnum" "flag" "pcttest" "api00" [13] "api99" "target" "growth" "sch.wide" "comp.imp" "both" [19] "awards" "meals" "ell" "yr.rnd" "mobility" "acs.k3" [25] "acs.46" "acs.core" "pct.resp" "not.hsg" "hsg" "some.col" [31] "col.grad" "grad.sch" "avg.ed" "full" "emer" "enroll" [37] "api.stu" "fpc" "pw" api> svymean(~api00, dclus1p) mean SE api00 642.31 23.921 api> svytotal(~enroll, dclus1p, na.rm=TRUE) total SE enroll 3680893 406293 api> svymean(~api00, rclus1p) mean SE api00 642.31 26.934 api> svytotal(~enroll, rclus1p, na.rm=TRUE) total SE enroll 3680893 473431 > > proc.time() user system elapsed 0.560 0.033 0.608 survey/tests/testoutput/scoping.Rout.save0000644000176200001440000000631712750743334020502 0ustar liggesusers R version 3.3.1 (2016-06-21) -- "Bug in Your Hair" Copyright (C) 2016 The R Foundation for Statistical Computing Platform: x86_64-apple-darwin13.4.0 (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. > > ## regression test for testing regression > > library(survey) Loading required package: grid Loading required package: Matrix Loading required package: survival Attaching package: 'survey' The following object is masked from 'package:graphics': dotchart > data(api) > > dstrat<-svydesign(id=~1,strata=~stype, weights=~pw, data=apistrat, fpc=~fpc) > > > f<-function(){ + form<-acs.46~stype + svyglm(formula=form, design = dstrat) + } > > g<-function(form){ + svyglm(formula=form, design = dstrat) + } > f() Stratified Independent Sampling design svydesign(id = ~1, strata = ~stype, weights = ~pw, data = apistrat, fpc = ~fpc) Call: svyglm(formula = form, design = dstrat) Coefficients: (Intercept) stypeH stypeM 28.7449 0.7551 0.4022 Degrees of Freedom: 133 Total (i.e. Null); 129 Residual (66 observations deleted due to missingness) Null Deviance: 1838 Residual Deviance: 1835 AIC: 719.8 > g(acs.46~stype) Stratified Independent Sampling design svydesign(id = ~1, strata = ~stype, weights = ~pw, data = apistrat, fpc = ~fpc) Call: svyglm(formula = form, design = dstrat) Coefficients: (Intercept) stypeH stypeM 28.7449 0.7551 0.4022 Degrees of Freedom: 133 Total (i.e. Null); 129 Residual (66 observations deleted due to missingness) Null Deviance: 1838 Residual Deviance: 1835 AIC: 719.8 > > f<-function(){ + form<-Surv(acs.46)~stype + svycoxph(formula=form, design = dstrat) + } > > g<-function(form){ + svycoxph(formula=form, design = dstrat) + } > > f() Call: svycoxph(formula = form, design = dstrat) coef exp(coef) se(coef) z p stypeH -0.677 0.508 0.665 -1.02 0.31 stypeM -0.251 0.778 0.209 -1.20 0.23 Likelihood ratio test= on 2 df, p= n= 134, number of events= 134 (66 observations deleted due to missingness) > g(Surv(acs.46)~stype) Call: svycoxph(formula = form, design = dstrat) coef exp(coef) se(coef) z p stypeH -0.677 0.508 0.665 -1.02 0.31 stypeM -0.251 0.778 0.209 -1.20 0.23 Likelihood ratio test= on 2 df, p= n= 134, number of events= 134 (66 observations deleted due to missingness) > > ## check coxph for a single predictor > svycoxph(Surv(acs.46)~api00,design=dstrat) Call: svycoxph(formula = Surv(acs.46) ~ api00, design = dstrat) coef exp(coef) se(coef) z p api00 6.06e-06 1.00e+00 7.49e-04 0.01 0.99 Likelihood ratio test= on 1 df, p= n= 134, number of events= 134 (66 observations deleted due to missingness) > > proc.time() user system elapsed 1.030 0.059 1.106 survey/tests/testoutput/multistage.Rout.save0000644000176200001440000000227112372250160021177 0ustar liggesusers R version 3.1.0 (2014-04-10) -- "Spring Dance" Copyright (C) 2014 The R Foundation for Statistical Computing Platform: x86_64-apple-darwin13.1.0 (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. > ## > ## Check that multistage samples still work > ## > library(survey) Attaching package: 'survey' The following object is masked from 'package:graphics': dotchart > example(mu284) mu284> data(mu284) mu284> (dmu284<-svydesign(id=~id1+id2,fpc=~n1+n2, data=mu284)) 2 - level Cluster Sampling design With (5, 15) clusters. svydesign(id = ~id1 + id2, fpc = ~n1 + n2, data = mu284) mu284> (ytotal<-svytotal(~y1, dmu284)) total SE y1 15080 2274.3 mu284> vcov(ytotal) y1 y1 5172234 > > > proc.time() user system elapsed 0.167 0.024 0.202 survey/tests/testoutput/README0000644000176200001440000000043313423662357016104 0ustar liggesusersThese are tests involving the printed output. They do not give character-by-character identical results on all systems (and in particular, the CRAN Windows system gives slightly different results from any computer I have tried), so they can't be part of the default R CMD check. survey/tests/testoutput/caleg.Rout.save0000644000176200001440000002072713115663534020113 0ustar liggesusers R version 3.4.0 (2017-04-21) -- "You Stupid Darkness" Copyright (C) 2017 The R Foundation for Statistical Computing Platform: x86_64-apple-darwin15.6.0 (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. > ## > ## Calibration examples > ## > > > ## Example of calibration to first-stage clusters > library(survey) Loading required package: grid Loading required package: Matrix Loading required package: survival Attaching package: 'survey' The following object is masked from 'package:graphics': dotchart > data(api) > > clusters<-table(apiclus2$dnum) > clusters<-clusters[clusters>1 & names(clusters)!="639"] > apiclus2a<-subset(apiclus2, dnum %in% as.numeric(names(clusters))) > > dclus2<-svydesign(id=~dnum+snum, fpc=~fpc1+fpc2, data=apiclus2a) > > popclusters<-subset(apipop, dnum %in% as.numeric(names(clusters))) > > pop<-lapply(as.numeric(names(clusters)), function(cluster) { + colSums(model.matrix(~api99, model.frame(~api99, subset(popclusters, dnum %in% cluster))))}) > > names(pop)<-names(clusters) > > dclus2g<-calibrate(dclus2, ~api99, pop,stage=1) > > svymean(~api99, dclus2) mean SE api99 642.14 31.434 > svymean(~api99, dclus2g) mean SE api99 654.49 29.82 > > round(svyby(~api99, ~dnum, design=dclus2, svymean),4) dnum api99 se 83 83 694.3333 0.0000 132 132 505.0000 0.0000 152 152 574.0000 0.0000 173 173 894.7500 0.0000 198 198 533.7500 0.0000 200 200 589.8000 6.8335 228 228 477.0000 0.0000 295 295 646.4000 0.0000 302 302 903.5000 0.0000 403 403 852.4000 0.0000 452 452 533.0000 0.0000 480 480 614.2000 0.0000 523 523 580.5000 0.0000 534 534 564.6000 0.0000 549 549 896.2000 0.0000 552 552 730.0000 0.0000 570 570 518.4000 7.5478 575 575 800.8000 4.2513 596 596 785.6000 2.4155 620 620 591.6000 10.5869 638 638 560.2000 4.0954 674 674 760.0000 0.0000 679 679 610.2500 0.0000 687 687 718.6667 0.0000 701 701 651.5000 0.0000 711 711 690.5000 0.0000 731 731 702.0000 2.1744 768 768 562.5000 0.0000 781 781 854.4000 0.7456 > > round(svyby(~api99, ~dnum, design=dclus2g, svymean),4) dnum api99 se 83 83 694.3333 0 132 132 505.0000 0 152 152 574.0000 0 173 173 894.7500 0 198 198 533.7500 0 200 200 567.5455 0 228 228 477.0000 0 295 295 646.4000 0 302 302 903.5000 0 403 403 852.4000 0 452 452 533.0000 0 480 480 614.2000 0 523 523 580.5000 0 534 534 564.6000 0 549 549 896.2000 0 552 552 730.0000 0 570 570 548.9444 0 575 575 824.5357 0 596 596 787.5714 0 620 620 609.3750 0 638 638 585.6429 0 674 674 760.0000 0 679 679 610.2500 0 687 687 718.6667 0 701 701 651.5000 0 711 711 690.5000 0 731 731 700.6667 0 768 768 562.5000 0 781 781 851.0000 0 > > ## Averaging to first stage > > dclus1<- svydesign(id = ~dnum, weights = ~pw, data = apiclus1, fpc = ~fpc) > pop<-colSums(cbind(1,apipop$enroll),na.rm=TRUE) > > dclus1g<-calibrate(dclus1, ~enroll, pop, aggregate=1) > > svytotal(~enroll,dclus1g) total SE enroll 3811472 0 > svytotal(~api.stu,dclus1g) total SE api.stu 3242857 38967 > > #variation within clusters should be zero > all.equal(0, max(ave(weights(dclus1g),dclus1g$cluster,FUN=var),na.rm=TRUE)) [1] TRUE > > ##bounded weights > dclus1g<-calibrate(dclus1, ~enroll, pop) > range(weights(dclus1g)/weights(dclus1)) [1] 0.7906782 1.7891164 > dclus1gb<-calibrate(dclus1, ~enroll, pop, bounds=c(.6,1.5)) > range(weights(dclus1gb)/weights(dclus1)) [1] 0.7198751 1.5000000 > > ## Ratio estimators > dstrat<-svydesign(id=~1,strata=~stype, weights=~pw, data=apistrat, fpc=~fpc) > svytotal(~api.stu,dstrat) total SE api.stu 3086009 99477 > common<-svyratio(~api.stu, ~enroll, dstrat, separate=FALSE) > total.enroll<-sum(apipop$enroll,na.rm=TRUE) > predict(common, total=total.enroll) $total enroll api.stu 3190038 $se enroll api.stu 29565.98 > dstratg<-calibrate(dstrat,~enroll-1, total.enroll, variance=1) > svytotal(~api.stu, dstratg) total SE api.stu 3190038 29566 > > ## postStratify vs calibrate in stratified sample (Ben French) > set.seed(17) > dat<-data.frame(y=rep(0:1,each=100),x=rnorm(200)+2*rep(0:1,each=100), + z=rbinom(200,1,.2), fpc=rep(c(100,10000),each=100)) > dat$w<-ifelse(dat$y,dat$z,1-dat$z) > popw<-data.frame(w=c("0","1"), Freq=c(2000,8000)) > des<-svydesign(id=~1,fpc=~fpc, data=dat,strata=~y) > postStratify(des,~w,popw)->dps > dcal<-calibrate(des,~factor(w), pop=c(10000,8000)) > > all.equal(SE(svymean(~x,dcal)),SE(svymean(~x,dps))) [1] TRUE > > ## missing data in calibrated design > dps$variables$z[1]<-NA > summary(svyglm(y~z+x,design=dps,family=quasibinomial)) Call: svyglm(formula = y ~ z + x, design = dps, family = quasibinomial) Survey design: postStratify(des, ~w, popw) Coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept) -0.1203 0.3380 -0.356 0.722 z 6.2118 0.6451 9.630 <2e-16 *** x 2.2602 0.2514 8.992 <2e-16 *** --- Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 (Dispersion parameter for quasibinomial family taken to be 1.919987) Number of Fisher Scoring iterations: 9 > > ## Ratio estimator using the heteroskedasticity parameter (Daniel Oehm) > # should match the ratio estmate above > dstratgh <- calibrate(dstrat,~enroll-1, total.enroll, variance=apistrat$enroll) > svytotal(~api.stu, dstratgh) total SE api.stu 3190038 29566 > > ## individual boundary constraints as multiplicative values (Daniel Oehm) > bnds <- list( + lower = c(1, 1, rep(-Inf, nrow(apistrat)-2)), + upper = c(1, 1, rep(Inf, nrow(apistrat)-2))) # the first two weights will remain unchanged the others are free to move > lapply(bnds, head) $lower [1] 1 1 -Inf -Inf -Inf -Inf $upper [1] 1 1 Inf Inf Inf Inf > dstratg1<-calibrate(dstrat, ~enroll-1, total.enroll, bounds = bnds, variance=apistrat$enroll) > svytotal(~api.stu, dstratg1) total SE api.stu 3190133 29561 > head(weights(dstrat)) 1 2 3 4 5 6 44.21 44.21 44.21 44.21 44.21 44.21 > head(weights(dstratg1)) 1 2 3 4 5 6 44.21000 44.21000 45.72055 45.72055 45.72055 45.72055 > all.equal(weights(dstrat)[1:2], weights(dstratg1)[1:2]) [1] TRUE > > ## individual boundary constraints as constant values (Daniel Oehm) > bnds <- list( + lower = c(44.21, 44.21, rep(-Inf, nrow(apistrat)-2)), + upper = c(44.21, 44.21, rep(Inf, nrow(apistrat)-2))) # the first two weights will remain unchanged > lapply(bnds, head) $lower [1] 44.21 44.21 -Inf -Inf -Inf -Inf $upper [1] 44.21 44.21 Inf Inf Inf Inf > dstratg2<-calibrate(dstrat, ~enroll-1, total.enroll, bounds = bnds, bounds.const = TRUE, variance=apistrat$enroll) > svytotal(~api.stu, dstratg2) total SE api.stu 3190133 29561 > head(weights(dstrat)) 1 2 3 4 5 6 44.21 44.21 44.21 44.21 44.21 44.21 > head(weights(dstratg2)) 1 2 3 4 5 6 44.21000 44.21000 45.72055 45.72055 45.72055 45.72055 > all.equal(round(weights(dstrat)[1:2], 8), round(weights(dstratg2)[1:2]), 8) # minor rounding error but all good [1] TRUE > > # sparse matrix support (Daniel Oehm) > dclus1<-svydesign(id=~dnum, weights=~pw, data=apiclus1, fpc=~fpc) > pop.totals<-c(`(Intercept)`=6194, stypeH=755, stypeM=1018) > dclus1g<-calibrate(dclus1, ~stype, pop.totals) > svymean(~api00, dclus1g) mean SE api00 642.31 23.921 > svytotal(~enroll, dclus1g) total SE enroll 3680893 406293 > > pop.totals<-c(`(Intercept)`=6194, stypeH=755, stypeM=1018) > dclus1g<-calibrate(dclus1, ~stype, pop.totals, sparse = TRUE) > svymean(~api00, dclus1g) mean SE api00 642.31 23.921 > svytotal(~enroll, dclus1g) total SE enroll 3680893 406293 > > pop.totals<-c(`(Intercept)`=6194, stypeH=755, stypeM=1018) > dclus1g<-calibrate(dclus1, ~stype, pop.totals, sparse = TRUE, calfun = "raking") > svymean(~api00, dclus1g) mean SE api00 642.31 23.921 > svytotal(~enroll, dclus1g) total SE enroll 3680893 406293 > > proc.time() user system elapsed 2.591 0.084 2.712 survey/tests/testoutput/DBIcheck.R0000644000176200001440000000341613403332210016723 0ustar liggesusers library(survey) library(RSQLite) data(api) apiclus1$api_stu<-apiclus1$api.stu apiclus1$comp_imp<-apiclus1$comp.imp dclus1<-svydesign(id=~dnum, weights=~pw, fpc=~fpc,data=apiclus1) dbclus1<-svydesign(id=~dnum, weights=~pw, fpc=~fpc, data="apiclus1",dbtype="SQLite", dbname=system.file("api.db",package="survey")) m<-svymean(~api00+stype,dclus1) m.db<-svymean(~api00+stype, dbclus1) all.equal(coef(m),coef(m.db)) all.equal(vcov(m), vcov(m.db)) r<-svyratio(~api_stu, ~enroll, design=dclus1) r.db<-svyratio(~api_stu, ~enroll, design=dbclus1) all.equal(coef(r), coef(r.db)) all.equal(SE(r), SE(r.db)) b<-svyby(~api99+api00,~stype, design=dclus1, svymean, deff=TRUE) b.db<-svyby(~api99+api00,~stype, design=dbclus1,svymean, deff=TRUE) all.equal(coef(b), coef(b.db)) all.equal(SE(b), SE(b.db)) all.equal(deff(b), deff(b.db)) l<-svyglm(api00~api99+mobility, design=dclus1) l.db<-svyglm(api00~api99+mobility, design=dbclus1) all.equal(coef(l),coef(l.db)) all.equal(vcov(l), vcov(l.db)) dclus1<-update(dclus1, apidiff=api00-api99) dclus1<-update(dclus1, apipct= apidiff/api99) dbclus1<-update(dbclus1, apidiff=api00-api99) dbclus1<-update(dbclus1, apipct= apidiff/api99) u<-svymean(~api00+apidiff+apipct, dclus1) u.db<-svymean(~api00+apidiff+apipct, dbclus1) all.equal(u, u.db) all.equal(nrow(dclus1),nrow(dbclus1)) ## replicate weights rclus1<-as.svrepdesign(dclus1) db_rclus1<-svrepdesign(weights=~pw, repweights="wt[1-9]+", type="JK1", scale=(1-15/757)*14/15, data="apiclus1rep",dbtype="SQLite", dbname=system.file("api.db",package="survey"),combined.weights=FALSE) m<-svymean(~api00+api99,rclus1) m.db<-svymean(~api00+api99,db_rclus1) all.equal(m,m.db) summary(db_rclus1) s<-svymean(~api00, subset(rclus1, comp_imp=="Yes")) s.db<-svymean(~api00, subset(db_rclus1, comp_imp=="Yes")) all.equal(s,s.db) survey/tests/testoutput/scoping.R0000755000176200001440000000110213403330170016765 0ustar liggesusers ## regression test for testing regression library(survey) data(api) dstrat<-svydesign(id=~1,strata=~stype, weights=~pw, data=apistrat, fpc=~fpc) f<-function(){ form<-acs.46~stype svyglm(formula=form, design = dstrat) } g<-function(form){ svyglm(formula=form, design = dstrat) } f() g(acs.46~stype) f<-function(){ form<-Surv(acs.46)~stype svycoxph(formula=form, design = dstrat) } g<-function(form){ svycoxph(formula=form, design = dstrat) } f() g(Surv(acs.46)~stype) ## check coxph for a single predictor svycoxph(Surv(acs.46)~api00,design=dstrat) survey/tests/testoutput/nwts-cch.Rout.save0000644000176200001440000000610212750743313020553 0ustar liggesusers R version 3.3.1 (2016-06-21) -- "Bug in Your Hair" Copyright (C) 2016 The R Foundation for Statistical Computing Platform: x86_64-apple-darwin13.4.0 (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(survey) Loading required package: grid Loading required package: Matrix Loading required package: survival Attaching package: 'survey' The following object is masked from 'package:graphics': dotchart > library(survival) > data(nwtco) > > ntwco<-subset(nwtco, !is.na(edrel)) > > load("nwtco-subcohort.rda") > nwtco$subcohort<-subcohort > > d_BorganII <- twophase(id=list(~seqno,~seqno), + strata=list(NULL,~interaction(instit,rel)), + data=nwtco, subset=~I(rel |subcohort)) > > ##Coefficient results same as Splus with code from > ## http://faculty.washington.edu/norm/software.html > ## SE slightly larger due to using sandwich variance. > > svycoxph(Surv(edrel, rel)~factor(stage)+factor(histol)+I(age/12), design=d_BorganII) Call: svycoxph(formula = Surv(edrel, rel) ~ factor(stage) + factor(histol) + I(age/12), design = d_BorganII) coef exp(coef) se(coef) z p factor(stage)2 0.4629 1.5886 0.1809 2.56 0.0105 factor(stage)3 0.5831 1.7916 0.1785 3.27 0.0011 factor(stage)4 1.0597 2.8854 0.2052 5.16 2.4e-07 factor(histol)2 1.5974 4.9403 0.1334 11.97 < 2e-16 I(age/12) 0.0299 1.0304 0.0334 0.90 0.3697 Likelihood ratio test= on 5 df, p= n= 1062, number of events= 571 > > ## > ## This gives higher standard errors. calibrate() does not recompute the > ## finite population correction if a calibration variable happens to predict > ## sampling perfectly. It probably should. > ## > d_BorganIIps<-calibrate(twophase(id=list(~seqno,~seqno), + strata=list(NULL,~rel), + data=nwtco, subset=~I(rel |subcohort)), + phase=2, formula=~interaction(instit,rel), + epsilon=1e-10) > > svycoxph(Surv(edrel, rel)~factor(stage)+factor(histol)+I(age/12), design=d_BorganIIps) Call: svycoxph(formula = Surv(edrel, rel) ~ factor(stage) + factor(histol) + I(age/12), design = d_BorganIIps) coef exp(coef) se(coef) z p factor(stage)2 0.4629 1.5886 0.1808 2.56 0.0104 factor(stage)3 0.5831 1.7916 0.1784 3.27 0.0011 factor(stage)4 1.0597 2.8854 0.2051 5.17 2.4e-07 factor(histol)2 1.5974 4.9403 0.1304 12.25 < 2e-16 I(age/12) 0.0299 1.0304 0.0333 0.90 0.3688 Likelihood ratio test= on 5 df, p= n= 1062, number of events= 571 > > proc.time() user system elapsed 1.823 0.105 1.962 survey/tests/testoutput/caleg.R0000644000176200001440000001023513606736750016425 0ustar liggesusers## ## Calibration examples ## ## Example of calibration to first-stage clusters library(survey) data(api) clusters<-table(apiclus2$dnum) clusters<-clusters[clusters>1 & names(clusters)!="639"] apiclus2a<-subset(apiclus2, dnum %in% as.numeric(names(clusters))) dclus2<-svydesign(id=~dnum+snum, fpc=~fpc1+fpc2, data=apiclus2a) popclusters<-subset(apipop, dnum %in% as.numeric(names(clusters))) pop<-lapply(as.numeric(names(clusters)), function(cluster) { colSums(model.matrix(~api99, model.frame(~api99, subset(popclusters, dnum %in% cluster))))}) names(pop)<-names(clusters) dclus2g<-calibrate(dclus2, ~api99, pop,stage=1) svymean(~api99, dclus2) svymean(~api99, dclus2g) round(svyby(~api99, ~dnum, design=dclus2, svymean),4) round(svyby(~api99, ~dnum, design=dclus2g, svymean),4) ## Averaging to first stage dclus1<- svydesign(id = ~dnum, weights = ~pw, data = apiclus1, fpc = ~fpc) pop<-colSums(cbind(1,apipop$enroll),na.rm=TRUE) dclus1g<-calibrate(dclus1, ~enroll, pop, aggregate=1) svytotal(~enroll,dclus1g) svytotal(~api.stu,dclus1g) #variation within clusters should be zero all.equal(0, max(ave(weights(dclus1g),dclus1g$cluster,FUN=var),na.rm=TRUE)) ##bounded weights dclus1g<-calibrate(dclus1, ~enroll, pop) range(weights(dclus1g)/weights(dclus1)) dclus1gb<-calibrate(dclus1, ~enroll, pop, bounds=c(.6,1.5)) range(weights(dclus1gb)/weights(dclus1)) ## Ratio estimators dstrat<-svydesign(id=~1,strata=~stype, weights=~pw, data=apistrat, fpc=~fpc) svytotal(~api.stu,dstrat) common<-svyratio(~api.stu, ~enroll, dstrat, separate=FALSE) total.enroll<-sum(apipop$enroll,na.rm=TRUE) predict(common, total=total.enroll) dstratg<-calibrate(dstrat,~enroll-1, total.enroll, variance=1) svytotal(~api.stu, dstratg) ## postStratify vs calibrate in stratified sample (Ben French) set.seed(17) dat<-data.frame(y=rep(0:1,each=100),x=rnorm(200)+2*rep(0:1,each=100), z=rbinom(200,1,.2), fpc=rep(c(100,10000),each=100)) dat$w<-ifelse(dat$y,dat$z,1-dat$z) popw<-data.frame(w=c("0","1"), Freq=c(2000,8000)) des<-svydesign(id=~1,fpc=~fpc, data=dat,strata=~y) postStratify(des,~w,popw)->dps dcal<-calibrate(des,~factor(w), pop=c(10000,8000)) all.equal(SE(svymean(~x,dcal)),SE(svymean(~x,dps))) ## missing data in calibrated design dps$variables$z[1]<-NA summary(svyglm(y~z+x,design=dps,family=quasibinomial)) ## Ratio estimator using the heteroskedasticity parameter (Daniel Oehm) # should match the ratio estmate above dstratgh <- calibrate(dstrat,~enroll-1, total.enroll, variance=apistrat$enroll) svytotal(~api.stu, dstratgh) ## individual boundary constraints as multiplicative values (Daniel Oehm) bnds <- list( lower = c(1, 1, rep(-Inf, nrow(apistrat)-2)), upper = c(1, 1, rep(Inf, nrow(apistrat)-2))) # the first two weights will remain unchanged the others are free to move lapply(bnds, head) dstratg1<-calibrate(dstrat, ~enroll-1, total.enroll, bounds = bnds, variance=apistrat$enroll) svytotal(~api.stu, dstratg1) head(weights(dstrat)) head(weights(dstratg1)) all.equal(weights(dstrat)[1:2], weights(dstratg1)[1:2]) ## individual boundary constraints as constant values (Daniel Oehm) bnds <- list( lower = c(44.21, 44.21, rep(-Inf, nrow(apistrat)-2)), upper = c(44.21, 44.21, rep(Inf, nrow(apistrat)-2))) # the first two weights will remain unchanged lapply(bnds, head) dstratg2<-calibrate(dstrat, ~enroll-1, total.enroll, bounds = bnds, bounds.const = TRUE, variance=apistrat$enroll) svytotal(~api.stu, dstratg2) head(weights(dstrat)) head(weights(dstratg2)) all.equal(round(weights(dstrat)[1:2], 8), round(weights(dstratg2)[1:2]), 8) # minor rounding error but all good # sparse matrix support (Daniel Oehm) dclus1<-svydesign(id=~dnum, weights=~pw, data=apiclus1, fpc=~fpc) pop.totals<-c(`(Intercept)`=6194, stypeH=755, stypeM=1018) dclus1g<-calibrate(dclus1, ~stype, pop.totals) svymean(~api00, dclus1g) svytotal(~enroll, dclus1g) pop.totals<-c(`(Intercept)`=6194, stypeH=755, stypeM=1018) dclus1g<-calibrate(dclus1, ~stype, pop.totals, sparse = TRUE) svymean(~api00, dclus1g) svytotal(~enroll, dclus1g) pop.totals<-c(`(Intercept)`=6194, stypeH=755, stypeM=1018) dclus1g<-calibrate(dclus1, ~stype, pop.totals, sparse = TRUE, calfun = "raking") svymean(~api00, dclus1g) svytotal(~enroll, dclus1g) survey/tests/testoutput/fpc.R0000644000176200001440000000011613404603450016101 0ustar liggesuserslibrary(survey) ## check many permutations of fpc specification example(fpc) survey/tests/testoutput/nwts.rda0000644000176200001440000000261513403331173016676 0ustar liggesusersRDX2 X  nwts    S03% @3< [ud<  !9) names stage instit histol control case class data.frame row.names 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 nwtsb    sVO @3< [ud<  !9) stage instit histol control case data.frame 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16survey/tests/testoutput/bycovmat.Rout.save0000644000176200001440000000745013251340246020653 0ustar liggesusers R version 3.1.0 (2014-04-10) -- "Spring Dance" Copyright (C) 2014 The R Foundation for Statistical Computing Platform: x86_64-apple-darwin13.1.0 (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(survey) Attaching package: 'survey' The following object is masked from 'package:graphics': dotchart > data(api) > options(survey.replicates.mse=TRUE) > dclus1<-svydesign(id=~dnum, weights=~pw, data=apiclus1, fpc=~fpc) > rclus1<-as.svrepdesign(dclus1) > > a<-svyby(~api00+api99, ~comp.imp+sch.wide,design=rclus1,svymean, + covmat=TRUE,drop.empty.groups=FALSE) > b<-svyby(~api00+api99, ~comp.imp+sch.wide,design=rclus1,svymean, + covmat=TRUE,drop.empty.groups=TRUE) > > stopifnot(all(na.omit( + as.vector(as.matrix(SE(a)))==sqrt(diag(vcov(a))) + ))) > stopifnot(all( + as.vector(as.matrix(SE(b)))==sqrt(diag(vcov(b))) + )) > > rat <- svyratio(~ell+mobility, ~mobility+meals, dclus1,covmat=TRUE) > all <- svytotal(~ell+mobility+meals, dclus1) > > stopifnot(all(abs(vcov(svycontrast(all, + list(quote(ell/mobility), + quote(mobility/mobility), + quote(ell/meals),quote(mobility/meals)))) + -vcov(rat))<1e-10)) > > stopifnot(all(abs(SE(rat)-sqrt(diag(vcov(rat))))<1e-10)) > > rat <- svyratio(~ell+mobility, ~mobility+meals, rclus1,covmat=TRUE) > all <- svytotal(~ell+mobility+meals, rclus1, return.replicates=TRUE) > > con<-svycontrast(all, + list(quote(ell/mobility), + quote(mobility/mobility), + quote(ell/meals),quote(mobility/meals))) > > stopifnot(all(abs(survey:::svrVar(con$replicates, rclus1$scale,rclus1$rscales,mse=rclus1$mse, coef=coef(con))-vcov(rat))<1e-10)) > > options(survey.replicates.mse=FALSE) > dclus1<-svydesign(id=~dnum, weights=~pw, data=apiclus1, fpc=~fpc) > rclus1<-as.svrepdesign(dclus1) > > a<-svyby(~api00+api99, ~comp.imp+sch.wide,design=rclus1,svymean, + covmat=TRUE,drop.empty.groups=FALSE) > b<-svyby(~api00+api99, ~comp.imp+sch.wide,design=rclus1,svymean, + covmat=TRUE,drop.empty.groups=TRUE) > > stopifnot(all(na.omit( + as.vector(as.matrix(SE(a)))==sqrt(diag(vcov(a))) + ))) > stopifnot(all( + as.vector(as.matrix(SE(b)))==sqrt(diag(vcov(b))) + )) > > rat <- svyratio(~ell+mobility, ~mobility+meals, dclus1,covmat=TRUE) > all <- svytotal(~ell+mobility+meals, dclus1) > > stopifnot(all(abs(vcov(svycontrast(all, + list(quote(ell/mobility), + quote(mobility/mobility), + quote(ell/meals),quote(mobility/meals)))) + -vcov(rat))<1e-10)) > > stopifnot(all(abs(SE(rat)-sqrt(diag(vcov(rat))))<1e-10)) > > rat <- svyratio(~ell+mobility, ~mobility+meals, rclus1,covmat=TRUE) > all <- svytotal(~ell+mobility+meals, rclus1, return.replicates=TRUE) > > con<-svycontrast(all, + list(quote(ell/mobility), + quote(mobility/mobility), + quote(ell/meals),quote(mobility/meals))) > > stopifnot(all(abs(survey:::svrVar(con$replicates, rclus1$scale,rclus1$rscales,mse=rclus1$mse, coef=coef(con))-vcov(rat))<1e-10)) > > > > proc.time() user system elapsed 0.299 0.027 0.333 survey/tests/testoutput/fpc.Rout.save0000644000176200001440000000542212372250160017572 0ustar liggesusers R version 3.1.0 (2014-04-10) -- "Spring Dance" Copyright (C) 2014 The R Foundation for Statistical Computing Platform: x86_64-apple-darwin13.1.0 (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(survey) Attaching package: 'survey' The following object is masked from 'package:graphics': dotchart > ## check many permutations of fpc specification > example(fpc) fpc> data(fpc) fpc> fpc stratid psuid weight nh Nh x 1 1 1 3 5 15 2.8 2 1 2 3 5 15 4.1 3 1 3 3 5 15 6.8 4 1 4 3 5 15 6.8 5 1 5 3 5 15 9.2 6 2 1 4 3 12 3.7 7 2 2 4 3 12 6.6 8 2 3 4 3 12 4.2 fpc> withoutfpc<-svydesign(weights=~weight, ids=~psuid, strata=~stratid, variables=~x, fpc+ data=fpc, nest=TRUE) fpc> withoutfpc Stratified Independent Sampling design (with replacement) svydesign(weights = ~weight, ids = ~psuid, strata = ~stratid, variables = ~x, data = fpc, nest = TRUE) fpc> svymean(~x, withoutfpc) mean SE x 5.4481 0.7413 fpc> withfpc<-svydesign(weights=~weight, ids=~psuid, strata=~stratid, fpc+ fpc=~Nh, variables=~x, data=fpc, nest=TRUE) fpc> withfpc Stratified Independent Sampling design svydesign(weights = ~weight, ids = ~psuid, strata = ~stratid, fpc = ~Nh, variables = ~x, data = fpc, nest = TRUE) fpc> svymean(~x, withfpc) mean SE x 5.4481 0.616 fpc> ## Other equivalent forms fpc> withfpc<-svydesign(prob=~I(1/weight), ids=~psuid, strata=~stratid, fpc+ fpc=~Nh, variables=~x, data=fpc, nest=TRUE) fpc> svymean(~x, withfpc) mean SE x 5.4481 0.616 fpc> withfpc<-svydesign(weights=~weight, ids=~psuid, strata=~stratid, fpc+ fpc=~I(nh/Nh), variables=~x, data=fpc, nest=TRUE) fpc> svymean(~x, withfpc) mean SE x 5.4481 0.616 fpc> withfpc<-svydesign(weights=~weight, ids=~interaction(stratid,psuid), fpc+ strata=~stratid, fpc=~I(nh/Nh), variables=~x, data=fpc) fpc> svymean(~x, withfpc) mean SE x 5.4481 0.616 fpc> withfpc<-svydesign(ids=~psuid, strata=~stratid, fpc=~Nh, fpc+ variables=~x,data=fpc,nest=TRUE) fpc> svymean(~x, withfpc) mean SE x 5.4481 0.616 fpc> withfpc<-svydesign(ids=~psuid, strata=~stratid, fpc+ fpc=~I(nh/Nh), variables=~x, data=fpc, nest=TRUE) fpc> svymean(~x, withfpc) mean SE x 5.4481 0.616 > > > proc.time() user system elapsed 0.194 0.025 0.229 survey/tests/testoutput/nwtco-subcohort.rda0000644000176200001440000000166513403331173021047 0ustar liggesusersY9A,]x Xkx/@ƠVUfFDF{22./߿rbwϻo?>}~o~5z\պި}ݵe +sZ}=}#|vd߳+nh{WשЕv*v+}j|OٸE! (B95_U:=ۅgC}|b y@5ĭw+6\⻋w}PQ9(~?,q+]xY;876u翳[ydtuXXP}qv®OU{Yzy]GVݕ(^4*}uY/;djvzY@=q;ہ+@ VՏo(\ƫ:_fկ,XЅ6ounj]sdt|A(;Ϲ+*M>Q7n~Y}WB7<AUi]|UV?.}>xf>5W>ۥOq]__ˢ:tٞl/;Z]S͗,ނ͋ѝfDmw^Qq#]Γh9<>Ghu>fCclTMvXۮsUt+?<EW#(Gr*OPq?vՇj|/\ջү\Vxut}@wi֎<^]o+ޣkE|bWW\gQ·]y7x(\xS5łVÍGsW,Ab?H~survey/tests/testoutput/nwts-cch.R0000644000176200001440000000215213403330170017054 0ustar liggesuserslibrary(survey) library(survival) data(nwtco) ntwco<-subset(nwtco, !is.na(edrel)) load("nwtco-subcohort.rda") nwtco$subcohort<-subcohort d_BorganII <- twophase(id=list(~seqno,~seqno), strata=list(NULL,~interaction(instit,rel)), data=nwtco, subset=~I(rel |subcohort)) ##Coefficient results same as Splus with code from ## http://faculty.washington.edu/norm/software.html ## SE slightly larger due to using sandwich variance. svycoxph(Surv(edrel, rel)~factor(stage)+factor(histol)+I(age/12), design=d_BorganII) ## ## This gives higher standard errors. calibrate() does not recompute the ## finite population correction if a calibration variable happens to predict ## sampling perfectly. It probably should. ## d_BorganIIps<-calibrate(twophase(id=list(~seqno,~seqno), strata=list(NULL,~rel), data=nwtco, subset=~I(rel |subcohort)), phase=2, formula=~interaction(instit,rel), epsilon=1e-10) svycoxph(Surv(edrel, rel)~factor(stage)+factor(histol)+I(age/12), design=d_BorganIIps) survey/tests/testoutput/bycovmat.R0000644000176200001440000000563313403330037017163 0ustar liggesusers library(survey) data(api) options(survey.replicates.mse=TRUE) dclus1<-svydesign(id=~dnum, weights=~pw, data=apiclus1, fpc=~fpc) rclus1<-as.svrepdesign(dclus1) a<-svyby(~api00+api99, ~comp.imp+sch.wide,design=rclus1,svymean, covmat=TRUE,drop.empty.groups=FALSE) b<-svyby(~api00+api99, ~comp.imp+sch.wide,design=rclus1,svymean, covmat=TRUE,drop.empty.groups=TRUE) stopifnot(all.equal( as.vector(as.matrix(SE(a))),as.vector(sqrt(diag(vcov(a)))) )) stopifnot(all.equal( as.vector(as.matrix(SE(b))),as.vector(sqrt(diag(vcov(b)))) )) rat <- svyratio(~ell+mobility, ~mobility+meals, dclus1,covmat=TRUE) all <- svytotal(~ell+mobility+meals, dclus1) stopifnot(all(abs(vcov(svycontrast(all, list(quote(ell/mobility), quote(mobility/mobility), quote(ell/meals),quote(mobility/meals)))) -vcov(rat))<1e-10)) stopifnot(all(abs(SE(rat)-sqrt(diag(vcov(rat))))<1e-10)) rat <- svyratio(~ell+mobility, ~mobility+meals, rclus1,covmat=TRUE) all <- svytotal(~ell+mobility+meals, rclus1, return.replicates=TRUE) con<-svycontrast(all, list(quote(ell/mobility), quote(mobility/mobility), quote(ell/meals),quote(mobility/meals))) stopifnot(all(abs(survey:::svrVar(con$replicates, rclus1$scale,rclus1$rscales,mse=rclus1$mse, coef=coef(con))-vcov(rat))<1e-10)) options(survey.replicates.mse=FALSE) dclus1<-svydesign(id=~dnum, weights=~pw, data=apiclus1, fpc=~fpc) rclus1<-as.svrepdesign(dclus1) a<-svyby(~api00+api99, ~comp.imp+sch.wide,design=rclus1,svymean, covmat=TRUE,drop.empty.groups=FALSE) b<-svyby(~api00+api99, ~comp.imp+sch.wide,design=rclus1,svymean, covmat=TRUE,drop.empty.groups=TRUE) stopifnot(all.equal( as.vector(as.matrix(SE(a))), as.vector(sqrt(diag(vcov(a)))) )) stopifnot(all.equal( as.vector(as.matrix(SE(b))), as.vector(sqrt(diag(vcov(b)))) )) rat <- svyratio(~ell+mobility, ~mobility+meals, dclus1,covmat=TRUE) all <- svytotal(~ell+mobility+meals, dclus1) stopifnot(all(abs(vcov(svycontrast(all, list(quote(ell/mobility), quote(mobility/mobility), quote(ell/meals),quote(mobility/meals)))) -vcov(rat))<1e-10)) stopifnot(all(abs(SE(rat)-sqrt(diag(vcov(rat))))<1e-10)) rat <- svyratio(~ell+mobility, ~mobility+meals, rclus1,covmat=TRUE) all <- svytotal(~ell+mobility+meals, rclus1, return.replicates=TRUE) con<-svycontrast(all, list(quote(ell/mobility), quote(mobility/mobility), quote(ell/meals),quote(mobility/meals))) stopifnot(all(abs(survey:::svrVar(con$replicates, rclus1$scale,rclus1$rscales,mse=rclus1$mse, coef=coef(con))-vcov(rat))<1e-10)) survey/tests/testoutput/multistage.R0000644000176200001440000000012313404603450017505 0ustar liggesusers## ## Check that multistage samples still work ## library(survey) example(mu284) survey/tests/testoutput/pps.Rout.save0000644000176200001440000000763113101464017017627 0ustar liggesusers R version 3.1.0 (2014-04-10) -- "Spring Dance" Copyright (C) 2014 The R Foundation for Statistical Computing Platform: x86_64-apple-darwin13.1.0 (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(survey) Attaching package: 'survey' The following object is masked from 'package:graphics': dotchart > data(election) > > dpps<- svydesign(id=~1, weights=~wt, fpc=~p, data=election_pps, pps="brewer") > dppswr <-svydesign(id=~1, weights=~wt, data=election_pps) > svytotal(~Bush+Kerry+Nader, dpps) total SE Bush 64518472 2447629 Kerry 51202102 2450787 Nader 478530 102420 > svytotal(~Bush+Kerry+Nader, dppswr) total SE Bush 64518472 2671455 Kerry 51202102 2679433 Nader 478530 105303 > > ##subsets > svytotal(~Bush+Kerry+Nader, subset(dpps, Nader>0)) total SE Bush 34944285 5399833 Kerry 25581714 4028434 Nader 478530 102420 > > ##multistage: should agree with STRS analysis > data(api) > dclus2<-svydesign(id = ~dnum + snum, fpc = ~fpc1 + fpc2, data = apiclus2) > dclus2pps<-svydesign(id = ~dnum + snum, fpc = ~I(40/fpc1) + I(pmin(1,5/fpc2)), data = apiclus2) > > all.equal(svytotal(~sch.wide,dclus2), svytotal(~sch.wide,dclus2pps)) [1] TRUE > all.equal(svymean(~sch.wide,dclus2), svymean(~sch.wide,dclus2pps)) [1] TRUE > all.equal(svytotal(~enroll,dclus2), svytotal(~enroll,dclus2pps)) [1] TRUE > > ## the new without-replacement methods > data(election) > dpps_br<- svydesign(id=~1, fpc=~p, data=election_pps, pps="brewer") > dpps_ov<- svydesign(id=~1, fpc=~p, data=election_pps, pps="overton") > dpps_hr<- svydesign(id=~1, fpc=~p, data=election_pps, pps=HR(sum(election$p^2)/40)) > dpps_hr1<- svydesign(id=~1, fpc=~p, data=election_pps, pps=HR()) > dpps_ht<- svydesign(id=~1, fpc=~p, data=election_pps, pps=ppsmat(election_jointprob)) > ## Yates-Grundy type > dpps_yg<- svydesign(id=~1, fpc=~p, data=election_pps, pps=ppsmat(election_jointprob),variance="YG") > dpps_hryg<- svydesign(id=~1, fpc=~p, data=election_pps, pps=HR(sum(election$p^2)/40),variance="YG") > > ## The with-replacement approximation > svytotal(~Bush+Kerry+Nader, dpps_ht) total SE Bush 64518472 2604404 Kerry 51202102 2523712 Nader 478530 102326 > svytotal(~Bush+Kerry+Nader, dpps_yg) total SE Bush 64518472 2406526 Kerry 51202102 2408091 Nader 478530 101664 > svytotal(~Bush+Kerry+Nader, dpps_hr) total SE Bush 64518472 2624662 Kerry 51202102 2525222 Nader 478530 102793 > svytotal(~Bush+Kerry+Nader, dpps_hryg) total SE Bush 64518472 2436738 Kerry 51202102 2439845 Nader 478530 102016 > svytotal(~Bush+Kerry+Nader, dpps_hr1) total SE Bush 64518472 2472753 Kerry 51202102 2426842 Nader 478530 102595 > svytotal(~Bush+Kerry+Nader, dpps_br) total SE Bush 64518472 2447629 Kerry 51202102 2450787 Nader 478530 102420 > svytotal(~Bush+Kerry+Nader, dpps_ov) total SE Bush 64518472 2939608 Kerry 51202102 1964632 Nader 478530 104373 > > ## subsets > svytotal(~Bush+Kerry+Nader, subset(dpps_ht, Nader>0)) total SE Bush 34944285 5406348 Kerry 25581714 4047741 Nader 478530 102326 > svytotal(~Bush+Kerry+Nader, subset(dpps_hryg, Nader>0)) total SE Bush 34944285 5377659 Kerry 25581714 4010908 Nader 478530 102016 > > ## counts > svyby(~Bush+Kerry+Nader,~I(Nader>0), unwtd.count,design=dpps_ht) I(Nader > 0) counts se FALSE FALSE 19 0 TRUE TRUE 21 0 > > proc.time() user system elapsed 1.946 0.058 2.017 survey/tests/testoutput/quantile-new.R0000644000176200001440000000135214412404246017747 0ustar liggesusers## From Ben Schneider, https://github.com/bschneidr/r-forge-survey-mirror/pull/7 library(survey) data('api', package = 'survey') boot_design <- svydesign( ids = ~ 1, strata = ~ stype, weights = ~ pw, data = apistrat, ) |> as.svrepdesign(type = "boot") # Attempt to estimate variance of quantile using direct replication ---- new <- svyquantile( x = ~ api00 + api99, quantiles = c(0.25, 0.75), design = boot_design, interval.type = "quantile", return.replicates = TRUE ) print(new) old <- oldsvyquantile( x = ~ api00 + api99, quantiles = c(0.25, 0.75), design = boot_design, interval.type = "quantile", return.replicates = TRUE ) print(old) confint(new) confint(old) survey/tests/testoutput/quantile-new.Rout.save0000644000176200001440000000407114412404246021435 0ustar liggesusers R version 4.1.1 (2021-08-10) -- "Kick Things" Copyright (C) 2021 The R Foundation for Statistical Computing Platform: aarch64-apple-darwin20 (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. > ## From Ben Schneider, https://github.com/bschneidr/r-forge-survey-mirror/pull/7 > library(survey) > data('api', package = 'survey') > > boot_design <- svydesign( + ids = ~ 1, strata = ~ stype, + weights = ~ pw, + data = apistrat, + ) |> as.svrepdesign(type = "boot") > > # Attempt to estimate variance of quantile using direct replication ---- > new <- svyquantile( + x = ~ api00 + api99, + quantiles = c(0.25, 0.75), + design = boot_design, + interval.type = "quantile", + return.replicates = TRUE + ) > > print(new) Statistic: api00 api99 q0.25 565 526 q0.75 756 728 SE: api00 api99 q0.25 19.22732 14.45368 q0.75 13.72320 19.50807 > > old <- oldsvyquantile( + x = ~ api00 + api99, + quantiles = c(0.25, 0.75), + design = boot_design, + interval.type = "quantile", + return.replicates = TRUE + ) > > print(old) Statistic: api00 api99 q0.25 562.2056 525.4800 q0.75 755.1226 726.7813 SE: api00 api99 q0.25 18.91980 14.53474 q0.75 14.13114 18.73837 > > confint(new) 2.5 % 97.5 % q0.25_api00 527.3152 602.6848 q0.75_api00 729.1030 782.8970 q0.25_api99 497.6713 554.3287 q0.75_api99 689.7649 766.2351 > confint(old) 2.5 % 97.5 % q0.25_api00 525.1235 599.2877 q0.75_api00 727.4261 782.8191 q0.25_api99 496.9924 553.9676 q0.75_api99 690.0547 763.5078 > survey/tests/testoutput/DBIcheck.Rout.save0000644000176200001440000001002613403332244020412 0ustar liggesusers R version 3.4.1 (2017-06-30) -- "Single Candle" Copyright (C) 2017 The R Foundation for Statistical Computing Platform: x86_64-apple-darwin15.6.0 (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. > > library(survey) Loading required package: grid Loading required package: Matrix Loading required package: survival Attaching package: ‘survey’ The following object is masked from ‘package:graphics’: dotchart > library(RSQLite) > > data(api) > apiclus1$api_stu<-apiclus1$api.stu > apiclus1$comp_imp<-apiclus1$comp.imp > dclus1<-svydesign(id=~dnum, weights=~pw, fpc=~fpc,data=apiclus1) > dbclus1<-svydesign(id=~dnum, weights=~pw, fpc=~fpc, + data="apiclus1",dbtype="SQLite", dbname=system.file("api.db",package="survey")) > > m<-svymean(~api00+stype,dclus1) > m.db<-svymean(~api00+stype, dbclus1) > all.equal(coef(m),coef(m.db)) [1] TRUE > all.equal(vcov(m), vcov(m.db)) [1] TRUE > > r<-svyratio(~api_stu, ~enroll, design=dclus1) > r.db<-svyratio(~api_stu, ~enroll, design=dbclus1) > all.equal(coef(r), coef(r.db)) [1] TRUE > all.equal(SE(r), SE(r.db)) [1] TRUE > > b<-svyby(~api99+api00,~stype, design=dclus1, svymean, deff=TRUE) > b.db<-svyby(~api99+api00,~stype, design=dbclus1,svymean, deff=TRUE) > all.equal(coef(b), coef(b.db)) [1] TRUE > all.equal(SE(b), SE(b.db)) [1] TRUE > all.equal(deff(b), deff(b.db)) [1] TRUE > > l<-svyglm(api00~api99+mobility, design=dclus1) > l.db<-svyglm(api00~api99+mobility, design=dbclus1) > all.equal(coef(l),coef(l.db)) [1] TRUE > all.equal(vcov(l), vcov(l.db)) [1] TRUE > > dclus1<-update(dclus1, apidiff=api00-api99) > dclus1<-update(dclus1, apipct= apidiff/api99) > dbclus1<-update(dbclus1, apidiff=api00-api99) > dbclus1<-update(dbclus1, apipct= apidiff/api99) > > u<-svymean(~api00+apidiff+apipct, dclus1) > u.db<-svymean(~api00+apidiff+apipct, dbclus1) > all.equal(u, u.db) [1] TRUE > > all.equal(nrow(dclus1),nrow(dbclus1)) [1] TRUE > > ## replicate weights > rclus1<-as.svrepdesign(dclus1) > db_rclus1<-svrepdesign(weights=~pw, repweights="wt[1-9]+", type="JK1", scale=(1-15/757)*14/15, + data="apiclus1rep",dbtype="SQLite", dbname=system.file("api.db",package="survey"),combined.weights=FALSE) > m<-svymean(~api00+api99,rclus1) > m.db<-svymean(~api00+api99,db_rclus1) > all.equal(m,m.db) [1] TRUE > > summary(db_rclus1) DB-backed replicate weight design Call: svrepdesign(weights = ~pw, repweights = "wt[1-9]+", type = "JK1", scale = (1 - 15/757) * 14/15, data = "apiclus1rep", dbtype = "SQLite", dbname = system.file("api.db", package = "survey"), combined.weights = FALSE) Unstratified cluster jacknife (JK1) with 15 replicates. Variables: [1] "row_names" "cds" "stype" "name" "sname" [6] "snum" "dname" "dnum" "cname" "cnum" [11] "flag" "pcttest" "api00" "api99" "target" [16] "growth" "sch_wide" "comp_imp" "both" "awards" [21] "meals" "ell" "yr_rnd" "mobility" "acs_k3" [26] "acs_46" "acs_core" "pct_resp" "not_hsg" "hsg" [31] "some_col" "col_grad" "grad_sch" "avg_ed" "full__1" [36] "emer" "enroll" "api_stu" "fpc" "pw" [41] "row_names:1" "wt1" "wt2" "wt3" "wt4" [46] "wt5" "wt6" "wt7" "wt8" "wt9" [51] "wt10" "wt11" "wt12" "wt13" "wt14" [56] "wt15" > > s<-svymean(~api00, subset(rclus1, comp_imp=="Yes")) > s.db<-svymean(~api00, subset(db_rclus1, comp_imp=="Yes")) > all.equal(s,s.db) [1] TRUE > survey/tests/testoutput/pps.R0000644000176200001440000000353213403330037016135 0ustar liggesuserslibrary(survey) data(election) dpps<- svydesign(id=~1, weights=~wt, fpc=~p, data=election_pps, pps="brewer") dppswr <-svydesign(id=~1, weights=~wt, data=election_pps) svytotal(~Bush+Kerry+Nader, dpps) svytotal(~Bush+Kerry+Nader, dppswr) ##subsets svytotal(~Bush+Kerry+Nader, subset(dpps, Nader>0)) ##multistage: should agree with STRS analysis data(api) dclus2<-svydesign(id = ~dnum + snum, fpc = ~fpc1 + fpc2, data = apiclus2) dclus2pps<-svydesign(id = ~dnum + snum, fpc = ~I(40/fpc1) + I(pmin(1,5/fpc2)), data = apiclus2) all.equal(svytotal(~sch.wide,dclus2), svytotal(~sch.wide,dclus2pps)) all.equal(svymean(~sch.wide,dclus2), svymean(~sch.wide,dclus2pps)) all.equal(svytotal(~enroll,dclus2), svytotal(~enroll,dclus2pps)) ## the new without-replacement methods data(election) dpps_br<- svydesign(id=~1, fpc=~p, data=election_pps, pps="brewer") dpps_ov<- svydesign(id=~1, fpc=~p, data=election_pps, pps="overton") dpps_hr<- svydesign(id=~1, fpc=~p, data=election_pps, pps=HR(sum(election$p^2)/40)) dpps_hr1<- svydesign(id=~1, fpc=~p, data=election_pps, pps=HR()) dpps_ht<- svydesign(id=~1, fpc=~p, data=election_pps, pps=ppsmat(election_jointprob)) ## Yates-Grundy type dpps_yg<- svydesign(id=~1, fpc=~p, data=election_pps, pps=ppsmat(election_jointprob),variance="YG") dpps_hryg<- svydesign(id=~1, fpc=~p, data=election_pps, pps=HR(sum(election$p^2)/40),variance="YG") ## The with-replacement approximation svytotal(~Bush+Kerry+Nader, dpps_ht) svytotal(~Bush+Kerry+Nader, dpps_yg) svytotal(~Bush+Kerry+Nader, dpps_hr) svytotal(~Bush+Kerry+Nader, dpps_hryg) svytotal(~Bush+Kerry+Nader, dpps_hr1) svytotal(~Bush+Kerry+Nader, dpps_br) svytotal(~Bush+Kerry+Nader, dpps_ov) ## subsets svytotal(~Bush+Kerry+Nader, subset(dpps_ht, Nader>0)) svytotal(~Bush+Kerry+Nader, subset(dpps_hryg, Nader>0)) ## counts svyby(~Bush+Kerry+Nader,~I(Nader>0), unwtd.count,design=dpps_ht) survey/tests/testoutput/api.R0000644000176200001440000000016413403330037016102 0ustar liggesuserslibrary(survey) options(survey.replicates.mse=TRUE) example(api) options(survey.replicates.mse=FALSE) example(api) survey/tests/bycovmat.R0000644000176200001440000000563313251326377014740 0ustar liggesusers library(survey) data(api) options(survey.replicates.mse=TRUE) dclus1<-svydesign(id=~dnum, weights=~pw, data=apiclus1, fpc=~fpc) rclus1<-as.svrepdesign(dclus1) a<-svyby(~api00+api99, ~comp.imp+sch.wide,design=rclus1,svymean, covmat=TRUE,drop.empty.groups=FALSE) b<-svyby(~api00+api99, ~comp.imp+sch.wide,design=rclus1,svymean, covmat=TRUE,drop.empty.groups=TRUE) stopifnot(all.equal( as.vector(as.matrix(SE(a))),as.vector(sqrt(diag(vcov(a)))) )) stopifnot(all.equal( as.vector(as.matrix(SE(b))),as.vector(sqrt(diag(vcov(b)))) )) rat <- svyratio(~ell+mobility, ~mobility+meals, dclus1,covmat=TRUE) all <- svytotal(~ell+mobility+meals, dclus1) stopifnot(all(abs(vcov(svycontrast(all, list(quote(ell/mobility), quote(mobility/mobility), quote(ell/meals),quote(mobility/meals)))) -vcov(rat))<1e-10)) stopifnot(all(abs(SE(rat)-sqrt(diag(vcov(rat))))<1e-10)) rat <- svyratio(~ell+mobility, ~mobility+meals, rclus1,covmat=TRUE) all <- svytotal(~ell+mobility+meals, rclus1, return.replicates=TRUE) con<-svycontrast(all, list(quote(ell/mobility), quote(mobility/mobility), quote(ell/meals),quote(mobility/meals))) stopifnot(all(abs(survey:::svrVar(con$replicates, rclus1$scale,rclus1$rscales,mse=rclus1$mse, coef=coef(con))-vcov(rat))<1e-10)) options(survey.replicates.mse=FALSE) dclus1<-svydesign(id=~dnum, weights=~pw, data=apiclus1, fpc=~fpc) rclus1<-as.svrepdesign(dclus1) a<-svyby(~api00+api99, ~comp.imp+sch.wide,design=rclus1,svymean, covmat=TRUE,drop.empty.groups=FALSE) b<-svyby(~api00+api99, ~comp.imp+sch.wide,design=rclus1,svymean, covmat=TRUE,drop.empty.groups=TRUE) stopifnot(all.equal( as.vector(as.matrix(SE(a))), as.vector(sqrt(diag(vcov(a)))) )) stopifnot(all.equal( as.vector(as.matrix(SE(b))), as.vector(sqrt(diag(vcov(b)))) )) rat <- svyratio(~ell+mobility, ~mobility+meals, dclus1,covmat=TRUE) all <- svytotal(~ell+mobility+meals, dclus1) stopifnot(all(abs(vcov(svycontrast(all, list(quote(ell/mobility), quote(mobility/mobility), quote(ell/meals),quote(mobility/meals)))) -vcov(rat))<1e-10)) stopifnot(all(abs(SE(rat)-sqrt(diag(vcov(rat))))<1e-10)) rat <- svyratio(~ell+mobility, ~mobility+meals, rclus1,covmat=TRUE) all <- svytotal(~ell+mobility+meals, rclus1, return.replicates=TRUE) con<-svycontrast(all, list(quote(ell/mobility), quote(mobility/mobility), quote(ell/meals),quote(mobility/meals))) stopifnot(all(abs(survey:::svrVar(con$replicates, rclus1$scale,rclus1$rscales,mse=rclus1$mse, coef=coef(con))-vcov(rat))<1e-10)) survey/tests/badcal.R0000644000176200001440000000063412027701336014306 0ustar liggesusers## ## Calibration with badly-scaled initial weights (bug report by Takahiro Tsuchiya) ## library(survey) data <- data.frame(x=c(1,1,1,1,2,2,2,2,2,2), w=rep(10,10)) des <- svydesign(ids=~1, weights=~w, data=data) des.c <- calibrate(des, ~factor(x), c(10000, 5000)) des.r <- calibrate(des, ~factor(x), c(10000, 5000), calfun='raking') stopifnot(all.equal(svytotal(~factor(x), des.c), svytotal(~factor(x), des.r))) survey/tests/svyby_se.R0000644000176200001440000000042613710407056014744 0ustar liggesuserslibrary(survey) data(api) dstrat<-svydesign(id=~1,strata=~stype, weights=~pw, data=apistrat, fpc=~fpc) a<-svyby(~enroll,~stype,design=dstrat,svytotal,vartype=c("ci","se")) b<-svyby(~enroll,~stype,design=dstrat,svytotal,vartype=c("se","ci")) stopifnot(all.equal(SE(a),SE(b))) survey/tests/rss_scores.R0000644000176200001440000000114714166647050015275 0ustar liggesusers## Example from Rao, Scott, and Skinner 1998 Statistica Sinica library(survey) data(myco) dmyco<-svydesign(id=~1, strata=~interaction(Age,leprosy),weights=~wt,data=myco) m_full<-svyglm(leprosy~I((Age+7.5)^-2)+Scar, family=quasibinomial, design=dmyco) m_null<-svyglm(leprosy~I((Age+7.5)^-2), family=quasibinomial, design=dmyco) stopifnot(isTRUE(all.equal(coef(m_null), c(`(Intercept)`=-4.6, `I((Age + 7.5)^-2)`=-427),tol=1e-2))) s<-svyscoretest(m_full, ~Scar) stopifnot(abs(s[1]-10.73)<0.05) t<-svyscoretest(m_full,~Scar,method="individual") stopifnot(abs(coef(t)- -32.61)<0.1) stopifnot(abs(vcov(t)-99.1)<0.1) survey/tests/multistage.R0000644000176200001440000000012311457435613015257 0ustar liggesusers## ## Check that multistage samples still work ## library(survey) example(mu284) survey/tests/nwts.R0000644000176200001440000000237211457435613014104 0ustar liggesusers ## examples from Breslow & Chatterjee: Applied Statistics 1999 No. 4, p458 ## data from Norman Breslow's web page. library(survey) load("nwts.rda") nwtsnb<-nwts nwtsnb$case<-nwts$case-nwtsb$case nwtsnb$control<-nwts$control-nwtsb$control a<-rbind(nwtsb,nwtsnb) a$in.ccs<-rep(c(TRUE,FALSE),each=16) b<-rbind(a,a) b$rel<-rep(c(1,0),each=32) b$n<-ifelse(b$rel,b$case,b$control) index<-rep(1:64,b$n) nwt.exp<-b[index,c(1:3,6,7)] nwt.exp$id<-1:4088 dccs2<-twophase(id=list(~id,~id),subset=~in.ccs, strata=list(NULL,~interaction(instit,rel)),data=nwt.exp) dccs8<-twophase(id=list(~id,~id),subset=~in.ccs, strata=list(NULL,~interaction(instit,stage,rel)),data=nwt.exp) gccs8<-calibrate(dccs2,phase=2,formula=~interaction(instit,stage,rel)) summary(svyglm(rel~factor(stage)*factor(histol),family=quasibinomial,design=dccs2)) summary(svyglm(rel~factor(stage)*factor(histol),family=quasibinomial,design=dccs8)) summary(svyglm(rel~factor(stage)*factor(histol),family=quasibinomial,design=gccs8)) ## check subsets of calibrated designs. summary(svyglm(rel~factor(stage), family=quasibinomial,design=subset(dccs8,histol==1))) summary(svyglm(rel~factor(stage), family=quasibinomial,design=subset(gccs8,histol==1))) survey/tests/regpredict.Rout.save0000644000176200001440000000472012372250160016712 0ustar liggesusers R version 3.1.0 (2014-04-10) -- "Spring Dance" Copyright (C) 2014 The R Foundation for Statistical Computing Platform: x86_64-apple-darwin13.1.0 (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(survey) Attaching package: 'survey' The following object is masked from 'package:graphics': dotchart > data(api) > dstrat<-svydesign(id=~1,strata=~stype, weights=~pw, data=apistrat, fpc=~fpc) > > > ## regression estimator of total, three ways > pop<-data.frame(enroll=sum(apipop$enroll, na.rm=TRUE)) > npop <- sum(!is.na(apipop$enroll)) > > api.reg <- svyglm(api.stu~enroll, design=dstrat) > a <- predict(api.reg, newdata=pop, total=npop) > b <- svytotal(~api.stu, calibrate(dstrat, ~enroll, pop=c(npop, pop$enroll))) > > all.equal(as.vector(coef(a)),as.vector(coef(b))) [1] TRUE > all.equal(as.vector(SE(a)), as.vector(SE(b))) [1] TRUE > if(!is.null(getOption("DEBUG"))){ ## uses 6194x6194 matrix + d <- predict(api.reg, newdata=na.omit(apipop[,"enroll",drop=FALSE])) + all.equal(as.vector(coef(a)), as.vector(sum(coef(d)))) + all.equal(as.vector(SE(a)), as.vector(sqrt(sum(vcov(d))))) + } > > ## classical ratio estimator, four ways. > api.reg2 <- svyglm(api.stu~enroll-1, design=dstrat, + family=quasi(link="identity", var="mu")) > > a <- predict(api.reg2, newdata=pop, total=npop) > b <- svytotal(~api.stu, + calibrate(dstrat, ~enroll-1, pop= pop$enroll, variance=2)) > e <- predict(svyratio(~api.stu, ~enroll, dstrat),total=pop$enroll) > > all.equal(as.vector(coef(a)),as.vector(coef(b))) [1] TRUE > all.equal(as.vector(SE(a)), as.vector(SE(b))) [1] TRUE > all.equal(as.vector(coef(a)),as.vector(e$total)) [1] TRUE > all.equal(as.vector(SE(a)), as.vector(e$se)) [1] TRUE > if(!is.null(getOption("DEBUG"))){## uses 6194x6194 matrix + d <- predict(api.reg2, newdata=na.omit(apipop[,"enroll",drop=FALSE])) + all.equal(as.vector(coef(a)), as.vector(sum(coef(d)))) + all.equal(as.vector(SE(a)), as.vector(sqrt(sum(vcov(d))))) + } > > proc.time() user system elapsed 0.239 0.026 0.272 survey/tests/svyolr-rake-subset.R0000644000176200001440000000145614221463056016666 0ustar liggesuserslibrary(survey) data(api) dclus1 <- svydesign(id=~dnum, weights=~pw, data=apiclus1, fpc=~fpc) dclus1<-update(dclus1, mealcat=cut(meals,c(0,25,50,75,100))) ## population marginal totals for each stratum pop.types <- data.frame(stype=c("E","H","M"), Freq=c(4421,755,1018)) pop.schwide <- data.frame(sch.wide=c("No","Yes"), Freq=c(1072,5122)) ## rake with the population totals dclus1r<-rake(dclus1, list(~stype,~sch.wide), list(pop.types, pop.schwide)) # works m <- svyolr(mealcat~avg.ed+mobility+stype, design=dclus1) # fails in 4.1 (should work because svyolr's default na.action is na.omit) m2 <- svyolr(mealcat~avg.ed+mobility+stype, design=dclus1r) # fails in 4.1 (should work because NA values are subsetted out) m3 <- svyolr(mealcat~avg.ed+mobility+stype, design=subset( dclus1r , !is.na( avg.ed ) ) ) survey/tests/logranktest.R0000644000176200001440000000734213733223237015444 0ustar liggesusers## StackOverflow 63333282 library(survey) D = data.frame(unique_id = 1:135, weights = rep(1,135), event_time = c(0.53512437, 1.35655869, 2.00414189, 2.37276648, 3.20343526, 0.96618494, 2.57894309, 0.94575080, 1.25347833, 1.44416450, 5.04038200, 7.80587169 , 6.53631154, 6.31914568, 7.00146597, 9.67616088, 7.94212358, 9.70693890, 10.67575835, 10.06764688, 12.29175616, 13.60092871, 13.12508566, 14.66417522, 15.35250691, 0.93368707, 0.19087611, 3.15533767, 4.40821633, 17.54334957, 17.95177642, 15.50903946, 16.48376185, 20.87956697, 21.24571398, 22.34297263, 23.36042629, 21.01760215, 23.84785038, 26.06105822, 4.16866350, 1.96922485, 0.66199008, 6.76987830, 1.55617685, 0.19095871, 3.13291784, 5.43159409, 9.55805671, 4.31437322, 0.78259860, 5.26415156, 3.45095686, 1.69128712, 8.41942426, 3.33748695, 6.08516173, 2.72897404, 0.22789783, 0.86348009, 2.35707587, 2.97477615, 12.33273800, 0.58532123, 0.14586238, 10.67948547, 4.07655972, 3.94405136, 0.37226898, 1.42558725, 1.47680658, 4.22506540, 1.56703478, 8.37484756, 12.54015087, 1.80994787, 3.66453633, 1.02834532, 1.99065652, 1.23577436, 16.21981618, 14.35039798, 4.15321606, 2.79740679, 0.35538726, 7.46823358, 1.66329088, 7.46525382, 2.62734831, 3.19057957, 0.33317193, 0.09122886, 9.14616245, 2.48542578, 2.37569263, 5.48499630, 2.22749399, 2.64816296, 0.97101545, 1.42468625, 1.27668904, 0.03692447, 1.98783210, 5.47692729, 3.88316178, 0.32921277, 1.77225345, 9.33268901, 2.44517775, 1.49813702, 2.56059172, 3.43194832, 1.22955630, 3.56263947, 9.07060099, 3.58312362, 2.22755370, 4.24783776, 3.46364804, 1.61671354, 11.10973565, 7.18764270, 1.80400046, 6.39833474, 6.72825192, 6.46063344, 5.76855531, 5.27157807, 4.66154734, 3.50019718, 2.27156678, 3.28531594, 2.35699896, 2.94956000, 8.85381736), event_flag = c(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0), group = c(rep("group1", 40), rep("group2", 95))) svykm_formula = as.formula("Surv(event_time, event_flag) ~ group") svy_design = svydesign( ids = ~unique_id , weights = ~weights, data = D ) a<-svylogrank(formula = svykm_formula, design = svy_design) ii<-with(D, order(event_time, event_flag)) svy_design2 = svydesign( ids = ~unique_id , weights = ~weights, data = D[ii,] ) b<-svylogrank(formula = svykm_formula, design = svy_design2) d<-svylogrank(formula = svykm_formula, design = svy_design, method = "large") f<- svylogrank(formula = svykm_formula, design = svy_design, method = "score") stopifnot(all.equal(a[[2]],b[[2]])) stopifnot(all.equal(a[[2]],d[[2]])) stopifnot(all.equal(a[[2]],f[-1])) survey/tests/rakecheck.Rout.save0000644000176200001440000001112312372250160016475 0ustar liggesusers R version 3.1.0 (2014-04-10) -- "Spring Dance" Copyright (C) 2014 The R Foundation for Statistical Computing Platform: x86_64-apple-darwin13.1.0 (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(survey) Attaching package: 'survey' The following object is masked from 'package:graphics': dotchart > > data(api) > dclus1 <- svydesign(id=~dnum, weights=~pw, data=apiclus1, fpc=~fpc) > rclus1 <- as.svrepdesign(dclus1) > > ## population marginal totals for each stratum > pop.types <- data.frame(stype=c("E","H","M"), Freq=c(4421,755,1018)) > pop.schwide <- data.frame(sch.wide=c("No","Yes"), Freq=c(1072,5122)) > > rclus1r <- rake(rclus1, list(~stype,~sch.wide), list(pop.types, pop.schwide)) > > svymean(~api00, rclus1r) mean SE api00 641.23 26.873 > svytotal(~enroll, rclus1r) total SE enroll 3647300 463511 > > ff<-~stype+sch.wide > poptotals<-colSums(model.matrix(ff,model.frame(ff,apipop))) > rclus1g<-calibrate(rclus1, ~stype+sch.wide, poptotals,calfun="raking") Loading required package: MASS > > svymean(~api00,rclus1g) mean SE api00 641.23 26.874 > svytotal(~enroll,rclus1g) total SE enroll 3647280 463582 > > summary(weights(rclus1g)/weights(rclus1r)) V1 V2 V3 V4 V5 V6 Min. :1 Min. :1 Min. :1 Min. :1 Min. :1 Min. :1 1st Qu.:1 1st Qu.:1 1st Qu.:1 1st Qu.:1 1st Qu.:1 1st Qu.:1 Median :1 Median :1 Median :1 Median :1 Median :1 Median :1 Mean :1 Mean :1 Mean :1 Mean :1 Mean :1 Mean :1 3rd Qu.:1 3rd Qu.:1 3rd Qu.:1 3rd Qu.:1 3rd Qu.:1 3rd Qu.:1 Max. :1 Max. :1 Max. :1 Max. :1 Max. :1 Max. :1 NA's :11 NA's :4 NA's :2 NA's :13 NA's :2 NA's :4 V7 V8 V9 V10 V11 Min. :1 Min. :1 Min. :1 Min. :1 Min. :1 1st Qu.:1 1st Qu.:1 1st Qu.:1 1st Qu.:1 1st Qu.:1 Median :1 Median :1 Median :1 Median :1 Median :1 Mean :1 Mean :1 Mean :1 Mean :1 Mean :1 3rd Qu.:1 3rd Qu.:1 3rd Qu.:1 3rd Qu.:1 3rd Qu.:1 Max. :1 Max. :1 Max. :1 Max. :1 Max. :1 NA's :4 NA's :16 NA's :9 NA's :34 NA's :21 V12 V13 V14 V15 Min. :0.9997 Min. :1 Min. :1 Min. :1 1st Qu.:1.0001 1st Qu.:1 1st Qu.:1 1st Qu.:1 Median :1.0001 Median :1 Median :1 Median :1 Mean :1.0000 Mean :1 Mean :1 Mean :1 3rd Qu.:1.0001 3rd Qu.:1 3rd Qu.:1 3rd Qu.:1 Max. :1.0002 Max. :1 Max. :1 Max. :1 NA's :37 NA's :13 NA's :1 NA's :12 > > > ## Do it for a design without replicate weights > dclus1r<-rake(dclus1, list(~stype,~sch.wide), list(pop.types, pop.schwide)) > > svymean(~api00, dclus1r) mean SE api00 641.23 23.704 > svytotal(~enroll, dclus1r) total SE enroll 3647300 400603 > > dclus1g<-calibrate(dclus1, ~stype+sch.wide, poptotals,calfun="raking") > > svymean(~api00,dclus1g) mean SE api00 641.23 23.704 > svytotal(~enroll,dclus1g) total SE enroll 3647280 400603 > > summary(weights(dclus1g)/weights(dclus1r)) Min. 1st Qu. Median Mean 3rd Qu. Max. 1 1 1 1 1 1 > > > > ## Example of raking with partial joint distributions > pop.table <- xtabs(~stype+sch.wide,apipop) > pop.imp<-data.frame(comp.imp=c("No","Yes"),Freq=c(1712,4482)) > dclus1r2<-rake(dclus1, list(~stype+sch.wide, ~comp.imp), + list(pop.table, pop.imp)) > svymean(~api00, dclus1r2) mean SE api00 642.62 22.732 > > ff1 <-~stype*sch.wide+comp.imp > > poptotals1<-colSums(model.matrix(ff1,model.frame(ff1,apipop))) > dclus1g2<-calibrate(dclus1, ~stype*sch.wide+comp.imp, poptotals1, calfun="raking") > > svymean(~api00, dclus1g2) mean SE api00 642.61 22.731 > > summary(weights(dclus1r2)/weights(dclus1g2)) Min. 1st Qu. Median Mean 3rd Qu. Max. 0.999 1.000 1.000 1.000 1.000 1.002 > > proc.time() user system elapsed 0.459 0.032 0.499 survey/tests/mtcars-var.R0000644000176200001440000000072014166647050015163 0ustar liggesuserslibrary(survey) # don't throw an error on domains of size 1, just return NA input <- mtcars input$carb <- factor(input$carb) design <- svydesign(ids = ~0, weights = NULL, data = input) svyby( ~mpg, ~carb, design, svyvar ) ## same n with na.rm=TRUE as subset(, !is.na) input$mpg[1]<-NA design <- svydesign(ids = ~0, weights = NULL, data = input) stopifnot(all.equal(svyvar(~mpg, design, na.rm=TRUE), svyvar(~mpg, subset(design, !is.na(mpg))))) survey/tests/contrast-replicates.R0000644000176200001440000000133113676517357017104 0ustar liggesusers## test use of replicates in svyby, svycontrast library(survey) data(api) dclus1<-svydesign(id=~dnum, weights=~pw, data=apiclus1, fpc=~fpc) rclus1<-as.svrepdesign(dclus1) meanlogs_without<-svyby(~log(enroll),~stype,svymean, design=rclus1,covmat=TRUE) c_without<-svycontrast(meanlogs_without, quote(exp(E-H))) vcov(c_without) meanlogs_with<-svyby(~log(enroll),~stype,svymean, design=rclus1,covmat=TRUE,return.replicates=TRUE) c_with<-svycontrast(meanlogs_with, quote(exp(E-H))) v_with<- vcov(rclus1, c_with$replicates) r<- attr(meanlogs_with, "replicates") vr_with<-vcov(rclus1,exp(r[,1]-r[,2])) stopifnot(all.equal(as.numeric(v_with),as.numeric(vr_with))) stopifnot(all.equal(as.numeric(v_with),as.numeric(vcov(c_with)))) survey/tests/twophase.Rout.save0000644000176200001440000002127213423662360016424 0ustar liggesusers R version 3.4.2 (2017-09-28) -- "Short Summer" Copyright (C) 2017 The R Foundation for Statistical Computing Platform: x86_64-apple-darwin15.6.0 (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(survey) Loading required package: grid Loading required package: Matrix Loading required package: survival Attaching package: 'survey' The following object is masked from 'package:graphics': dotchart > > ## two-phase simple random sampling. > data(pbc, package="survival") > pbc$id<-1:nrow(pbc) > pbc$randomized<-with(pbc, !is.na(trt) & trt>-9) > (d2pbc<-twophase(id=list(~id,~id), data=pbc, subset=~I(!randomized))) Two-phase sparse-matrix design: twophase2(id = id, strata = strata, probs = probs, fpc = fpc, subset = subset, data = data) Phase 1: Independent Sampling design (with replacement) svydesign(ids = ~id) Phase 2: Independent Sampling design svydesign(ids = ~id, fpc = `*phase1*`) > m<-svymean(~bili, d2pbc) > all.equal(as.vector(coef(m)),with(pbc, mean(bili[!randomized]))) [1] TRUE > all.equal(as.vector(SE(m)), + with(pbc, sd(bili[!randomized])/sqrt(sum(!randomized))), + tolerance=0.002) [1] TRUE > > ## two-stage sampling as two-phase > data(mu284) > ii<-with(mu284, c(1:15, rep(1:5,n2[1:5]-3))) > mu284.1<-mu284[ii,] > mu284.1$id<-1:nrow(mu284.1) > mu284.1$sub<-rep(c(TRUE,FALSE),c(15,34-15)) > dmu284<-svydesign(id=~id1+id2,fpc=~n1+n2, data=mu284) > ## first phase cluster sample, second phase stratified within cluster > (d2mu284<-twophase(id=list(~id1,~id),strata=list(NULL,~id1), + fpc=list(~n1,NULL),data=mu284.1,subset=~sub,method="approx")) Two-phase design: twophase(id = list(~id1, ~id), strata = list(NULL, ~id1), fpc = list(~n1, NULL), data = mu284.1, subset = ~sub, method = "approx") Phase 1: 1 - level Cluster Sampling design With (5) clusters. svydesign(ids = ~id1, fpc = ~n1) Phase 2: Stratified Independent Sampling design svydesign(ids = ~id, strata = ~id1, fpc = `*phase1*`) > (d22mu284<-twophase(id=list(~id1,~id),strata=list(NULL,~id1), + fpc=list(~n1,NULL),data=mu284.1,subset=~sub,method="full")) Two-phase sparse-matrix design: twophase2(id = id, strata = strata, probs = probs, fpc = fpc, subset = subset, data = data) Phase 1: 1 - level Cluster Sampling design With (5) clusters. svydesign(ids = ~id1, fpc = ~n1) Phase 2: Stratified Independent Sampling design svydesign(ids = ~id, strata = ~id1, fpc = `*phase1*`) > summary(d2mu284) Two-phase design: twophase(id = list(~id1, ~id), strata = list(NULL, ~id1), fpc = list(~n1, NULL), data = mu284.1, subset = ~sub, method = "approx") Phase 1: 1 - level Cluster Sampling design With (5) clusters. svydesign(ids = ~id1, fpc = ~n1) Probabilities: Min. 1st Qu. Median Mean 3rd Qu. Max. 0.1 0.1 0.1 0.1 0.1 0.1 Population size (PSUs): 50 Phase 2: Stratified Independent Sampling design svydesign(ids = ~id, strata = ~id1, fpc = `*phase1*`) Probabilities: Min. 1st Qu. Median Mean 3rd Qu. Max. 0.3333 0.3750 0.4286 0.4674 0.6000 0.6000 Stratum Sizes: 19 31 45 47 50 obs 3 3 3 3 3 design.PSU 3 3 3 3 3 actual.PSU 3 3 3 3 3 Population stratum sizes (PSUs): 19 31 45 47 50 5 7 8 5 9 Data variables: [1] "id1" "n1" "id2" "y1" "n2" "id" "sub" > t1<-svytotal(~y1, dmu284) > t2<-svytotal(~y1, d2mu284) > t22<-svytotal(~y1,d22mu284) > m1<-svymean(~y1, dmu284) > m2<-svymean(~y1, d2mu284) > m22<-svymean(~y1, d22mu284) > all.equal(coef(t1),coef(t2)) [1] TRUE > all.equal(coef(t1),coef(t22)) [1] TRUE > all.equal(coef(m1),coef(m2)) [1] TRUE > all.equal(coef(m1),coef(m22)) [1] TRUE > all.equal(as.vector(SE(m1)),as.vector(SE(m2))) [1] TRUE > all.equal(as.vector(SE(m1)),as.vector(SE(m22))) [1] TRUE > all.equal(as.vector(SE(t1)),as.vector(SE(t2))) [1] TRUE > all.equal(as.vector(SE(t1)),as.vector(SE(t22))) [1] TRUE > > ## case-cohort design > ##this example requires R 2.3.1 or later for cch and data. > library("survival") > data(nwtco, package="survival") > ## unstratified, equivalent to Lin & Ying (1993) > print(dcchs<-twophase(id=list(~seqno,~seqno), strata=list(NULL,~rel), + subset=~I(in.subcohort | rel), data=nwtco)) Two-phase sparse-matrix design: twophase2(id = id, strata = strata, probs = probs, fpc = fpc, subset = subset, data = data) Phase 1: Independent Sampling design (with replacement) svydesign(ids = ~seqno) Phase 2: Stratified Independent Sampling design svydesign(ids = ~seqno, strata = ~rel, fpc = `*phase1*`) > cch1<-svycoxph(Surv(edrel,rel)~factor(stage)+factor(histol)+I(age/12), + design=dcchs) > dcchs2<-twophase(id=list(~seqno,~seqno), strata=list(NULL,~rel), + subset=~I(in.subcohort | rel), data=nwtco,method="approx") > cch1.2<-svycoxph(Surv(edrel,rel)~factor(stage)+factor(histol)+I(age/12), + design=dcchs) > all.equal(coef(cch1),coef(cch1.2)) [1] TRUE > all.equal(SE(cch1),SE(cch1.2)) [1] TRUE > ## Using survival::cch > subcoh <- nwtco$in.subcohort > selccoh <- with(nwtco, rel==1|subcoh==1) > ccoh.data <- nwtco[selccoh,] > ccoh.data$subcohort <- subcoh[selccoh] > cch2<-cch(Surv(edrel, rel) ~ factor(stage) + factor(histol) + I(age/12), + data =ccoh.data, subcoh = ~subcohort, id=~seqno, + cohort.size=4028, method="LinYing", robust=TRUE) > > print(all.equal(as.vector(coef(cch1)),as.vector(coef(cch2)))) [1] TRUE > ## cch has smaller variances by a factor of 1.0005 because > ## there is a (n/(n-1)) in the survey phase1 varianace > print(all.equal(as.vector(SE(cch1)), as.vector(SE(cch2)),tolerance=0.0006)) [1] TRUE > > > ## bug report from Takahiro Tsuchiya for version 3.4 > ## We used to not match Sarndal exactly, because our old phase-one > ## estimator had a small bias for finite populations > rei<-read.table(tmp<-textConnection( + " id N n.a h n.ah n.h sub y + 1 1 300 20 1 12 5 TRUE 1 + 2 2 300 20 1 12 5 TRUE 2 + 3 3 300 20 1 12 5 TRUE 3 + 4 4 300 20 1 12 5 TRUE 4 + 5 5 300 20 1 12 5 TRUE 5 + 6 6 300 20 1 12 5 FALSE NA + 7 7 300 20 1 12 5 FALSE NA + 8 8 300 20 1 12 5 FALSE NA + 9 9 300 20 1 12 5 FALSE NA + 10 10 300 20 1 12 5 FALSE NA + 11 11 300 20 1 12 5 FALSE NA + 12 12 300 20 1 12 5 FALSE NA + 13 13 300 20 2 8 3 TRUE 6 + 14 14 300 20 2 8 3 TRUE 7 + 15 15 300 20 2 8 3 TRUE 8 + 16 16 300 20 2 8 3 FALSE NA + 17 17 300 20 2 8 3 FALSE NA + 18 18 300 20 2 8 3 FALSE NA + 19 19 300 20 2 8 3 FALSE NA + 20 20 300 20 2 8 3 FALSE NA + "), header=TRUE) > close(tmp) > > des.rei <- twophase(id=list(~id,~id), strata=list(NULL,~h), + fpc=list(~N,NULL), subset=~sub, data=rei, method="approx") > tot<- svytotal(~y, des.rei) > des.rei2 <- twophase(id=list(~id,~id), strata=list(NULL,~h), + fpc=list(~N,NULL), subset=~sub, data=rei) > tot2<- svytotal(~y, des.rei2) > > ## based on Sarndal et al (9.4.14) > rei$w.ah <- rei$n.ah / rei$n.a > a.rei <- aggregate(rei, by=list(rei$h), mean, na.rm=TRUE) > a.rei$S.ysh <- tapply(rei$y, rei$h, var, na.rm=TRUE) > a.rei$y.u <- sum(a.rei$w.ah * a.rei$y) > V <- with(a.rei, sum(N * (N-1) * ((n.ah-1)/(n.a-1) - (n.h-1)/(N-1)) * w.ah * S.ysh / n.h)) > V <- V + with(a.rei, sum(N * (N-n.a) * w.ah * (y - y.u)^2 / (n.a-1))) > > a.rei$f.h<-with(a.rei, n.h/n.ah) > Vphase2<-with(a.rei, sum(N*N*w.ah^2* ((1-f.h)/n.h) *S.ysh)) > > a.rei$f<-with(a.rei, n.a/N) > a.rei$delta.h<-with(a.rei, (1/n.h)*(n.a-n.ah)/(n.a-1)) > Vphase1<-with(a.rei, sum(N*N*((1-f)/n.a)*( w.ah*(1-delta.h)*S.ysh+ ((n.a)/(n.a-1))*w.ah*(y-y.u)^2))) > > V [1] 36522.63 > Vphase1 [1] 24072.63 > Vphase2 [1] 12450 > vcov(tot) y y 35911.05 attr(,"phases") attr(,"phases")$phase1 [,1] [1,] 23461.05 attr(,"phases")$phase2 y y 12450 > vcov(tot2) [,1] [1,] 36522.63 attr(,"phases") attr(,"phases")$phase1 [,1] [1,] 24072.63 attr(,"phases")$phase2 [,1] [1,] 12450 > ## phase 2 identical > all.equal(Vphase2,drop(attr(vcov(tot),"phases")$phase2)) [1] TRUE > all.equal(Vphase2,drop(attr(vcov(tot2),"phases")$phase2)) [1] TRUE > ## phase 1 differs by 2.6% for old twophase estimator > Vphase1/attr(vcov(tot),"phases")$phase1 [,1] [1,] 1.026068 > all.equal(Vphase1,as.vector(attr(vcov(tot2),"phases")$phase1)) [1] TRUE > > > proc.time() user system elapsed 3.561 0.201 3.809 survey/tests/raowuboot.R0000644000176200001440000000023311457435613015124 0ustar liggesusers## regression test for bug reported by Richard Valliant library(survey) s<-subbootweights(c(1,1),1:2, 50) stopifnot(all(s$repweights$weights %in% c(0,2))) survey/tests/glm-scoping.R0000644000176200001440000000132313230220173015303 0ustar liggesusers## bug report from Thomas Leeper, fixed in version 3.32-3 library("survey") data(api) dstrat<-svydesign(id=~1,strata=~stype, weights=~pw, data=apistrat, fpc=~fpc) # pass `family` directly (WORKS!) svyglm(api00~ell+meals+mobility, design=dstrat, family = gaussian()) # passing `family` via ... (WORKS!) myfun1 <- function(formula, design, ...) { svyglm(formula, design = design, ...) } myfun1(api00~ell+meals+mobility, design=dstrat, family = gaussian()) # passing `family` via default argument (DOES NOT WORK!) myfun2 <- function(formula, design, family = gaussian()) { svyglm(formula, design = design, family = family) } myfun2(api00~ell+meals+mobility, design=dstrat, family = gaussian()) survey/tests/coxph-termtest.R0000644000176200001440000000216114166647050016073 0ustar liggesuserslibrary(survey) library(survival) set.seed(2021-6-25) test1 <- list(time=c(4,3,1,1,2,2,3), status=c(1,1,1,0,1,1,0), x1=as.factor(rbinom(7, 2, 0.5)), x=c(0,2,1,1,1,0,0)) # Fit a stratified model mod_c <- coxph(Surv(time, status) ~ x1 + x, test1) mod_d <- coxph(Surv(time, status) ~ x + x1, test1) stopifnot(all.equal(regTermTest(mod_c, ~x1, df = Inf)[c("chisq","df","test.terms","p")], regTermTest(mod_d, ~x1, df = Inf)[c("chisq","df","test.terms","p")])) data(pbc, package="survival") pbc$randomized<-with(pbc, !is.na(trt) & trt>0) biasmodel<-glm(randomized~age*edema,data=pbc,family=binomial) pbc$randprob<-fitted(biasmodel) if (is.null(pbc$albumin)) pbc$albumin<-pbc$alb ##pre2.9.0 dpbc<-svydesign(id=~1, prob=~randprob, strata=~edema, data=subset(pbc,randomized)) library(splines) model<-svycoxph(formula = Surv(time, status > 0) ~ bili + protime + albumin+ns(bili,4)[,1:3], design = dpbc) test<-regTermTest(model, ~ns(bili,4)[,1:3],method="LRT") stopifnot(all.equal(test$chisq, 47.314, tolerance=1e-4)) stopifnot(all.equal(test$lambda, c(1.4764260, 1.0109836, 0.6923415),tolerance=1e-4)) survey/tests/deff.R0000644000176200001440000000201711457435613014011 0ustar liggesusers## from Takahiro Tsuchiya library(survey) kigyo<-read.table(tmp<-textConnection(" obs uriage srs.w pps.w 1 1 15 100 20 2 2 143 100 200 3 3 21 100 11 4 4 51 100 25 5 5 337 100 550 6 6 50 100 30 7 7 274 100 250 8 8 145 100 100 9 9 15 100 10 10 10 86 100 55 ",open="r"),header=TRUE) close(tmp) des.srs <- svydesign(ids=~1, weights=~srs.w, data=kigyo) (res.srs <- svymean(~uriage, des.srs, deff=TRUE)) (SE(res.srs)^2) / ((1-10/1000) * coef(svyvar(~uriage, des.srs)) / 10) (tres.srs <- svytotal(~uriage, des.srs, deff=TRUE)) (SE(tres.srs)^2) / (1000^2 * (1-10/1000) * coef(svyvar(~uriage, des.srs)) / 10) des.pps <- svydesign(ids=~1, weights=~pps.w, data=kigyo) (res.pps <- svymean(~uriage, des.pps, deff='replace')) (SE(res.pps)^2) / (coef(svyvar(~uriage, des.pps)) / 10) (tres.pps <- svytotal(~uriage, des.pps, deff='replace')) (N.hat <- sum(weights(des.pps))) (SE(tres.pps)^2) / (N.hat^2 * coef(svyvar(~uriage, des.pps)) / 10) survey/tests/pps.R0000644000176200001440000000353211457435613013712 0ustar liggesuserslibrary(survey) data(election) dpps<- svydesign(id=~1, weights=~wt, fpc=~p, data=election_pps, pps="brewer") dppswr <-svydesign(id=~1, weights=~wt, data=election_pps) svytotal(~Bush+Kerry+Nader, dpps) svytotal(~Bush+Kerry+Nader, dppswr) ##subsets svytotal(~Bush+Kerry+Nader, subset(dpps, Nader>0)) ##multistage: should agree with STRS analysis data(api) dclus2<-svydesign(id = ~dnum + snum, fpc = ~fpc1 + fpc2, data = apiclus2) dclus2pps<-svydesign(id = ~dnum + snum, fpc = ~I(40/fpc1) + I(pmin(1,5/fpc2)), data = apiclus2) all.equal(svytotal(~sch.wide,dclus2), svytotal(~sch.wide,dclus2pps)) all.equal(svymean(~sch.wide,dclus2), svymean(~sch.wide,dclus2pps)) all.equal(svytotal(~enroll,dclus2), svytotal(~enroll,dclus2pps)) ## the new without-replacement methods data(election) dpps_br<- svydesign(id=~1, fpc=~p, data=election_pps, pps="brewer") dpps_ov<- svydesign(id=~1, fpc=~p, data=election_pps, pps="overton") dpps_hr<- svydesign(id=~1, fpc=~p, data=election_pps, pps=HR(sum(election$p^2)/40)) dpps_hr1<- svydesign(id=~1, fpc=~p, data=election_pps, pps=HR()) dpps_ht<- svydesign(id=~1, fpc=~p, data=election_pps, pps=ppsmat(election_jointprob)) ## Yates-Grundy type dpps_yg<- svydesign(id=~1, fpc=~p, data=election_pps, pps=ppsmat(election_jointprob),variance="YG") dpps_hryg<- svydesign(id=~1, fpc=~p, data=election_pps, pps=HR(sum(election$p^2)/40),variance="YG") ## The with-replacement approximation svytotal(~Bush+Kerry+Nader, dpps_ht) svytotal(~Bush+Kerry+Nader, dpps_yg) svytotal(~Bush+Kerry+Nader, dpps_hr) svytotal(~Bush+Kerry+Nader, dpps_hryg) svytotal(~Bush+Kerry+Nader, dpps_hr1) svytotal(~Bush+Kerry+Nader, dpps_br) svytotal(~Bush+Kerry+Nader, dpps_ov) ## subsets svytotal(~Bush+Kerry+Nader, subset(dpps_ht, Nader>0)) svytotal(~Bush+Kerry+Nader, subset(dpps_hryg, Nader>0)) ## counts svyby(~Bush+Kerry+Nader,~I(Nader>0), unwtd.count,design=dpps_ht) survey/tests/badcal.Rout.save0000644000176200001440000000235612372250160015773 0ustar liggesusers R version 3.1.0 (2014-04-10) -- "Spring Dance" Copyright (C) 2014 The R Foundation for Statistical Computing Platform: x86_64-apple-darwin13.1.0 (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. > ## > ## Calibration with badly-scaled initial weights (bug report by Takahiro Tsuchiya) > ## > library(survey) Attaching package: 'survey' The following object is masked from 'package:graphics': dotchart > data <- data.frame(x=c(1,1,1,1,2,2,2,2,2,2), w=rep(10,10)) > des <- svydesign(ids=~1, weights=~w, data=data) > des.c <- calibrate(des, ~factor(x), c(10000, 5000)) > des.r <- calibrate(des, ~factor(x), c(10000, 5000), calfun='raking') Loading required package: MASS > stopifnot(all.equal(svytotal(~factor(x), des.c), svytotal(~factor(x), des.r))) > > proc.time() user system elapsed 0.162 0.025 0.194 survey/tests/check.Rout.save0000755000176200001440000001301512372250160015637 0ustar liggesusers R version 3.1.0 (2014-04-10) -- "Spring Dance" Copyright (C) 2014 The R Foundation for Statistical Computing Platform: x86_64-apple-darwin13.1.0 (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(survey) Attaching package: 'survey' The following object is masked from 'package:graphics': dotchart > data(fpc) > ## test various possibilities for svydesign > a<-svydesign(weights=~weight, ids=~psuid, strata=~stratid, variables=~x, data=fpc, nest=TRUE) > a Stratified Independent Sampling design (with replacement) svydesign(weights = ~weight, ids = ~psuid, strata = ~stratid, variables = ~x, data = fpc, nest = TRUE) > svymean(~x,a) mean SE x 5.4481 0.7413 > a<-svydesign(weights=~weight, ids=~0, strata=~stratid, variables=~x, data=fpc, nest=TRUE) > a Stratified Independent Sampling design (with replacement) svydesign(weights = ~weight, ids = ~0, strata = ~stratid, variables = ~x, data = fpc, nest = TRUE) > svymean(~x,a) mean SE x 5.4481 0.7413 > a<-svydesign(weights=1, ids=~0, strata=~stratid, variables=~x, data=fpc, nest=TRUE) > a Stratified Independent Sampling design (with replacement) svydesign(weights = 1, ids = ~0, strata = ~stratid, variables = ~x, data = fpc, nest = TRUE) > svymean(~x,a) mean SE x 44.2 6.237 > a<-svydesign(ids=~0, strata=~stratid, variables=~x, data=fpc, nest=TRUE) Warning message: In svydesign.default(ids = ~0, strata = ~stratid, variables = ~x, : No weights or probabilities supplied, assuming equal probability > a Stratified Independent Sampling design (with replacement) svydesign(ids = ~0, strata = ~stratid, variables = ~x, data = fpc, nest = TRUE) > svymean(~x,a) mean SE x 5.525 0.7796 > a<-svydesign(ids=~0, strata=~stratid, prob=~I(1/weight),variables=~x, data=fpc, nest=TRUE) > a Stratified Independent Sampling design (with replacement) svydesign(ids = ~0, strata = ~stratid, prob = ~I(1/weight), variables = ~x, data = fpc, nest = TRUE) > svymean(~x,a) mean SE x 5.4481 0.7413 > a<-svydesign(ids=~psuid, strata=~stratid, variables=~x, data=fpc, nest=TRUE) Warning message: In svydesign.default(ids = ~psuid, strata = ~stratid, variables = ~x, : No weights or probabilities supplied, assuming equal probability > a Stratified Independent Sampling design (with replacement) svydesign(ids = ~psuid, strata = ~stratid, variables = ~x, data = fpc, nest = TRUE) > svymean(~x,a) mean SE x 5.525 0.7796 > a<-svydesign(ids=~psuid, variables=~x, data=fpc, nest=TRUE) Warning message: In svydesign.default(ids = ~psuid, variables = ~x, data = fpc, nest = TRUE) : No weights or probabilities supplied, assuming equal probability > a 1 - level Cluster Sampling design (with replacement) With (5) clusters. svydesign(ids = ~psuid, variables = ~x, data = fpc, nest = TRUE) > svymean(~x,a) mean SE x 5.525 0.838 > a<-svydesign(ids=~psuid, weights=~weight, variables=~x, data=fpc, nest=TRUE) > a 1 - level Cluster Sampling design (with replacement) With (5) clusters. svydesign(ids = ~psuid, weights = ~weight, variables = ~x, data = fpc, nest = TRUE) > svymean(~x,a) mean SE x 5.4481 0.7938 > a<-svydesign(ids=~stratid+psuid, weights=~weight, variables=~x, data=fpc) > a 2 - level Cluster Sampling design (with replacement) With (2, 8) clusters. svydesign(ids = ~stratid + psuid, weights = ~weight, variables = ~x, data = fpc) > svymean(~x,a) mean SE x 5.4481 0.5465 > a<-svydesign(ids=~stratid+psuid, variables=~x, data=fpc) Warning message: In svydesign.default(ids = ~stratid + psuid, variables = ~x, data = fpc) : No weights or probabilities supplied, assuming equal probability > a 2 - level Cluster Sampling design (with replacement) With (2, 8) clusters. svydesign(ids = ~stratid + psuid, variables = ~x, data = fpc) > svymean(~x,a) mean SE x 5.525 0.5188 > a<-svydesign(weights=fpc$weight, ids=fpc$psuid, strata=fpc$stratid, variables=fpc[,"x",drop=FALSE], nest=TRUE) > a Stratified Independent Sampling design (with replacement) svydesign(weights = fpc$weight, ids = fpc$psuid, strata = fpc$stratid, variables = fpc[, "x", drop = FALSE], nest = TRUE) > svymean(~x,a) mean SE x 5.4481 0.7413 > a<-svydesign(weights=fpc$weight, ids=fpc$psuid, strata=fpc$stratid, variables=fpc[,4:6], nest=TRUE) > a Stratified Independent Sampling design (with replacement) svydesign(weights = fpc$weight, ids = fpc$psuid, strata = fpc$stratid, variables = fpc[, 4:6], nest = TRUE) > svymean(~x,a) mean SE x 5.4481 0.7413 > > a<-svydesign(weights=fpc$weight, ids=fpc$psuid, variables=fpc[,4:6], fpc=rep(27,8)) > a 1 - level Cluster Sampling design With (5) clusters. svydesign(weights = fpc$weight, ids = fpc$psuid, variables = fpc[, 4:6], fpc = rep(27, 8)) > svymean(~x,a) mean SE x 5.4481 0.7165 > > a<-svydesign(weights=fpc$weight, ids=fpc$psuid, strata=fpc$stratid, nest=TRUE, variables=fpc[,4:6], fpc=fpc$Nh) > a Stratified Independent Sampling design svydesign(weights = fpc$weight, ids = fpc$psuid, strata = fpc$stratid, nest = TRUE, variables = fpc[, 4:6], fpc = fpc$Nh) > svymean(~x,a) mean SE x 5.4481 0.616 > > proc.time() user system elapsed 0.201 0.024 0.232 survey/tests/nwts.Rout.save0000644000176200001440000001642013403330123015547 0ustar liggesusers R version 3.4.1 (2017-06-30) -- "Single Candle" Copyright (C) 2017 The R Foundation for Statistical Computing Platform: x86_64-apple-darwin15.6.0 (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. > > ## examples from Breslow & Chatterjee: Applied Statistics 1999 No. 4, p458 > ## data from Norman Breslow's web page. > library(survey) Loading required package: grid Loading required package: Matrix Loading required package: survival Attaching package: ‘survey’ The following object is masked from ‘package:graphics’: dotchart > load("nwts.rda") > nwtsnb<-nwts > nwtsnb$case<-nwts$case-nwtsb$case > nwtsnb$control<-nwts$control-nwtsb$control > > a<-rbind(nwtsb,nwtsnb) > a$in.ccs<-rep(c(TRUE,FALSE),each=16) > > b<-rbind(a,a) > b$rel<-rep(c(1,0),each=32) > b$n<-ifelse(b$rel,b$case,b$control) > > index<-rep(1:64,b$n) > > nwt.exp<-b[index,c(1:3,6,7)] > nwt.exp$id<-1:4088 > > dccs2<-twophase(id=list(~id,~id),subset=~in.ccs, + strata=list(NULL,~interaction(instit,rel)),data=nwt.exp) > > dccs8<-twophase(id=list(~id,~id),subset=~in.ccs, + strata=list(NULL,~interaction(instit,stage,rel)),data=nwt.exp) > > gccs8<-calibrate(dccs2,phase=2,formula=~interaction(instit,stage,rel)) > > summary(svyglm(rel~factor(stage)*factor(histol),family=quasibinomial,design=dccs2)) Call: svyglm(formula = rel ~ factor(stage) * factor(histol), design = dccs2, family = quasibinomial) Survey design: twophase2(id = id, strata = strata, probs = probs, fpc = fpc, subset = subset, data = data) Coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept) -2.5701 0.1288 -19.955 < 2e-16 *** factor(stage)2 0.5482 0.1979 2.769 0.005708 ** factor(stage)3 0.4791 0.2032 2.359 0.018515 * factor(stage)4 1.0037 0.2592 3.872 0.000114 *** factor(histol)2 1.3505 0.3107 4.346 1.51e-05 *** factor(stage)2:factor(histol)2 0.1152 0.4410 0.261 0.793876 factor(stage)3:factor(histol)2 0.5066 0.4241 1.194 0.232548 factor(stage)4:factor(histol)2 0.9785 0.6214 1.575 0.115615 --- Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 (Dispersion parameter for quasibinomial family taken to be 1.000876) Number of Fisher Scoring iterations: 4 > summary(svyglm(rel~factor(stage)*factor(histol),family=quasibinomial,design=dccs8)) Call: svyglm(formula = rel ~ factor(stage) * factor(histol), design = dccs8, family = quasibinomial) Survey design: twophase2(id = id, strata = strata, probs = probs, fpc = fpc, subset = subset, data = data) Coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept) -2.71604 0.10827 -25.085 < 2e-16 *** factor(stage)2 0.78141 0.14726 5.306 1.35e-07 *** factor(stage)3 0.80093 0.15250 5.252 1.80e-07 *** factor(stage)4 1.07293 0.17817 6.022 2.33e-09 *** factor(histol)2 1.45836 0.31780 4.589 4.96e-06 *** factor(stage)2:factor(histol)2 -0.04743 0.43495 -0.109 0.913 factor(stage)3:factor(histol)2 0.28064 0.41298 0.680 0.497 factor(stage)4:factor(histol)2 0.90983 0.63774 1.427 0.154 --- Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 (Dispersion parameter for quasibinomial family taken to be 1.000876) Number of Fisher Scoring iterations: 4 > summary(svyglm(rel~factor(stage)*factor(histol),family=quasibinomial,design=gccs8)) Call: svyglm(formula = rel ~ factor(stage) * factor(histol), design = gccs8, family = quasibinomial) Survey design: calibrate(dccs2, phase = 2, formula = ~interaction(instit, stage, rel)) Coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept) -2.71604 0.10878 -24.968 < 2e-16 *** factor(stage)2 0.78141 0.14729 5.305 1.35e-07 *** factor(stage)3 0.80093 0.15212 5.265 1.68e-07 *** factor(stage)4 1.07293 0.17905 5.993 2.77e-09 *** factor(histol)2 1.45836 0.31757 4.592 4.88e-06 *** factor(stage)2:factor(histol)2 -0.04743 0.43432 -0.109 0.913 factor(stage)3:factor(histol)2 0.28064 0.41231 0.681 0.496 factor(stage)4:factor(histol)2 0.90983 0.63187 1.440 0.150 --- Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 (Dispersion parameter for quasibinomial family taken to be 1.000876) Number of Fisher Scoring iterations: 4 > > ## check subsets of calibrated designs. > summary(svyglm(rel~factor(stage), + family=quasibinomial,design=subset(dccs8,histol==1))) Call: svyglm(formula = rel ~ factor(stage), design = subset(dccs8, histol == 1), family = quasibinomial) Survey design: subset(dccs8, histol == 1) Coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept) -2.7160 0.1083 -25.085 < 2e-16 *** factor(stage)2 0.7814 0.1473 5.306 1.48e-07 *** factor(stage)3 0.8009 0.1525 5.252 1.97e-07 *** factor(stage)4 1.0729 0.1782 6.022 2.73e-09 *** --- Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 (Dispersion parameter for quasibinomial family taken to be 1.001333) Number of Fisher Scoring iterations: 4 Warning messages: 1: In `[.twophase2`(x, r, ) : 1 strata have only one PSU in this subset. 2: In summary.glm(g) : observations with zero weight not used for calculating dispersion 3: In summary.glm(glm.object) : observations with zero weight not used for calculating dispersion 4: In `[.twophase2`(design, nas == 0, ) : 1 strata have only one PSU in this subset. 5: In `[.twophase2`(design, nas == 0, ) : 1 strata have only one PSU in this subset. > summary(svyglm(rel~factor(stage), + family=quasibinomial,design=subset(gccs8,histol==1))) Call: svyglm(formula = rel ~ factor(stage), design = subset(gccs8, histol == 1), family = quasibinomial) Survey design: subset(gccs8, histol == 1) Coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept) -2.7160 0.1082 -25.105 < 2e-16 *** factor(stage)2 0.7814 0.1457 5.363 1.10e-07 *** factor(stage)3 0.8009 0.1504 5.324 1.34e-07 *** factor(stage)4 1.0729 0.1759 6.101 1.70e-09 *** --- Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 (Dispersion parameter for quasibinomial family taken to be 1.001333) Number of Fisher Scoring iterations: 4 Warning messages: 1: In summary.glm(g) : observations with zero weight not used for calculating dispersion 2: In summary.glm(glm.object) : observations with zero weight not used for calculating dispersion > > survey/tests/quantiles-chile.R0000644000176200001440000000170513706430621016170 0ustar liggesuserslibrary(survey) datos <- readRDS("datos_ejemplo.rds") design <- svydesign(id = ~id_directorio, strata = ~estrato, weights = ~f_pers, check.strata = TRUE, data = datos) set.seed(234262762) repdesign <- as.svrepdesign(design, type = "subbootstrap", replicates=20) options(survey.lonely.psu="remove") values<-datos$ing_t_p[datos$CL_GRUPO_OCU_08=="ISCO08_6"] suppressWarnings({ f0<-coef(svyquantile(~ing_t_p, subset(design,CL_GRUPO_OCU_08=="ISCO08_6"),quantiles=c(0.5), qrule="math")) f0.5<-coef(svyquantile(~ing_t_p, subset(design,CL_GRUPO_OCU_08=="ISCO08_6"),quantiles=c(0.5), qrule="school")) }) all.equal(c(values[1],mean(values)), as.vector(c(f0,f0.5))) suppressWarnings({ f0<-coef(svyquantile(~ing_t_p, subset(repdesign,CL_GRUPO_OCU_08=="ISCO08_6"),quantiles=c(0.5), qrule="math")) f0.5<-coef(svyquantile(~ing_t_p, subset(repdesign,CL_GRUPO_OCU_08=="ISCO08_6"),quantiles=c(0.5), qrule="school")) }) all.equal(c(values[1],mean(values)), as.vector(c(f0,f0.5))) survey/tests/api.R0000644000176200001440000000016411616354754013662 0ustar liggesuserslibrary(survey) options(survey.replicates.mse=TRUE) example(api) options(survey.replicates.mse=FALSE) example(api) survey/vignettes/0000755000176200001440000000000014424312435013621 5ustar liggesuserssurvey/vignettes/pps.Rnw0000644000176200001440000001455111541475406015126 0ustar liggesusers\documentclass{article} \usepackage{url} \addtolength{\topmargin}{-0.5in} \addtolength{\textheight}{0.75in} \addtolength{\oddsidemargin}{-0.5in} \addtolength{\textwidth}{1in} %\VignetteIndexEntry{Analysing PPS designs} \usepackage{Sweave} \author{Thomas Lumley} \title{Describing PPS designs to R} \begin{document} \maketitle The survey package has always supported PPS (ie, arbitrary unequal probability) sampling with replacement, or using the with-replacement single-stage approximation to a multistage design. No special notation is required: just specify the correct sampling weights. Version 3.11 added an another approximation for PPS sampling without replacement, and version 3.16 added more support. There are two broad classes of estimators for PPS sampling without replacement: approximations to the Horvitz--Thompson and Yates--Grundy estimators based on approximating the pairwise sampling probabilities, and estimators of H\'ajek type that attempt to recover the extra precision of a without-replacement design by conditioning on the estimated population size. \subsection*{Direct approximations} Using the standard recursive algorithm for stratified multistage sampling when one or more stages are actually PPS gives an approximation due to Brewer. This is simple to compute, always non-negative, and appears to be fairly efficient. \subsection*{Approximating $\pi_{ij}$} Given the pairwise sampling probabilities $\pi_{ij}$ we can define the weighted covariance of sampling indicators $$\check{\Delta}_{ij} = 1-\frac{\pi_i\pi_j}{\pi_{ij}}$$ and the weighted observations $$\check{x}_i=\frac{1}{\pi_i}x_i.$$ Two unbiased estimators of the variance of the total of $x$ are the Horvitz--Thompson estimator $$\hat V_{HT}= \sum_{i,j=1}^n \check{\Delta}\check{x}_i\check{x}_j$$ and the Yates--Grundy(--Sen) estimator $$\hat V_{YG}= \frac{1}{2}\sum_{i,j=1}^n \check{\Delta}(\check{x}_i-\check{x}_j)^2$$ The Yates--Grundy estimator appears to be preferred in most comparisons. It is always non-negative (up to rounding error, at least). In principle, $\pi_{ij}$ might not be available and various approximations have been proposed. The (truncated) Hartley--Rao approximation is $$\check{\Delta}_{ij}=1-\frac{n-\pi_i-\pi_j+\sum_{k=1}^N\pi^2_k/n}{n-1}$$ which requires knowing $\pi_i$ for all units in the population. The population sum can be estimated from the sample, giving a further approximation $$\check{\Delta}_{ij}=1-\frac{n-\pi_i-\pi_j+\sum_{k=1}^n\pi_k/n}{n-1}.$$ that requires only the sample $\pi_i$. Overton's approximation is $$\check{\Delta}_{ij}=1-\frac{n-(\pi_i+\pi_j)/2}{n-1}$$ which also requires only the sample $\pi_i$. In practice, given modern computing power, $\pi_{ij}$ should be available either explicitly or by simulation, so the Hartley--Rao and Overton approximations are not particularly useful. \subsection{Using the PPS estimators} At the moment, only Brewer's approximation can be used as a component of multistage sampling, though for any sampling design it is possible to work out the joint sampling probabilities and use the other approaches. The other approaches can be used for cluster sampling or for sampling of individual units. This is likely to change in the future. To specify a PPS design, the sampling probabilities must be given in the \texttt{prob} argument of \texttt{svydesign}, or in the \texttt{fpc} argument, with \texttt{prob} and \texttt{weight} unspecified. In addition, it is necessary to specify which PPS computation should be used, with the \texttt{pps} argument. The optional \texttt{variance} argument specifies the Horvitz--Thompson (\texttt{variance="HT"}) or Yates--Grundy (\texttt{variance="YG"}) estimator, with the default being \texttt{"HT"}. Some estimators require information in addition to the sampling probabilities for units in the sample. This information is supplied to the \texttt{pps=} argument of \texttt{svydesign} using wrapper functions that create objects with appropriate classes. To specify the population sum $\sum pi_i^2/n$ needed for the Hartley--Rao approximation, use \texttt{HR()}, and to specify a matrix of pairwise sampling probabilities use \texttt{ppsmat()}. The function \texttt{HR()} without an argument will use the Hartley--Rao approximation and estimate the population sum from the sample. The data set \texttt{election} contains county-level voting data from the 2004 US presidential elections, with a PPS sample of size 40 taken using Till\'e's splitting method, from the \texttt{sampling} package. The sampling probabilities vary widely, with Los Angeles County having a probability of 0.9 and many small counties having probabilities less than 0.0005. <<>>= library(survey) data(election) summary(election$p) summary(election_pps$p) @ Some possible survey design specifications for these data are: <<>>= ## Hajek type dpps_br<- svydesign(id=~1, fpc=~p, data=election_pps, pps="brewer") ## Horvitz-Thompson type dpps_ov<- svydesign(id=~1, fpc=~p, data=election_pps, pps="overton") dpps_hr<- svydesign(id=~1, fpc=~p, data=election_pps, pps=HR(sum(election$p^2)/40)) dpps_hr1<- svydesign(id=~1, fpc=~p, data=election_pps, pps=HR()) dpps_ht<- svydesign(id=~1, fpc=~p, data=election_pps, pps=ppsmat(election_jointprob)) ## Yates-Grundy type dpps_yg<- svydesign(id=~1, fpc=~p, data=election_pps, pps=ppsmat(election_jointprob),variance="YG") dpps_hryg<- svydesign(id=~1, fpc=~p, data=election_pps, pps=HR(sum(election$p^2)/40),variance="YG") ## The with-replacement approximation dppswr <-svydesign(id=~1, probs=~p, data=election_pps) @ All the without-replacement design objects except for Brewer's method include a matrix $\check{\Delta}$. These can be visualized with the \texttt{image()} method. These plots use the \texttt{lattice} package and so need \texttt{show()} to display them inside a program: <>= show(image(dpps_ht)) @ <>= show(image(dpps_ov)) @ In this example there are more negative entries in $\check{\Delta}$ with the approximate methods than when the full pairwise sampling matrix is supplied. The estimated totals are the same with all the methods, but the standard errors are not. <<>>= svytotal(~Bush+Kerry+Nader, dpps_ht) svytotal(~Bush+Kerry+Nader, dpps_yg) svytotal(~Bush+Kerry+Nader, dpps_hr) svytotal(~Bush+Kerry+Nader, dpps_hryg) svytotal(~Bush+Kerry+Nader, dpps_hr1) svytotal(~Bush+Kerry+Nader, dpps_br) svytotal(~Bush+Kerry+Nader, dpps_ov) svytotal(~Bush+Kerry+Nader, dppswr) @ \end{document} survey/vignettes/epi.Rnw0000644000176200001440000002362211457435610015077 0ustar liggesusers\documentclass{article} \usepackage{url} \addtolength{\topmargin}{-0.5in} \addtolength{\textheight}{0.75in} \addtolength{\oddsidemargin}{-0.5in} \addtolength{\textwidth}{1in} %\VignetteIndexEntry{Two-phase designs in epidemiology} \usepackage{Sweave} \author{Thomas Lumley} \title{Two-phase designs in epidemiology} \begin{document} \maketitle This document explains how to analyse case--cohort and two-phase case--control studies with the ``survey'' package, using examples from \url{http://faculty.washington.edu/norm/software.html}. Some of the examples were published by Breslow \& Chatterjee (1999). The data are relapse rates from the National Wilm's Tumor Study (NWTS). Wilm's Tumour is a rare cancer of the kidney in children. Intensive treatment cures the majority of cases, but prognosis is poor when the disease is advanced at diagnosis and for some histological subtypes. The histological characterisation of the tumour is difficult, and histological group as determined by the NWTS central pathologist predicts much better than determinations by local institution pathologists. In fact, local institution histology can be regarded statistically as a pure surrogate for the central lab histology. In these examples we will pretend that the (binary) local institution histology determination (\texttt{instit}) is avavailable for all children in the study and that the central lab histology (\texttt{histol}) is obtained for a probability sample of specimens in a two-phase design. We treat the initial sampling of the study as simple random sampling from an infinite superpopulation. We also have data on disease stage, a four-level variable; on relapse; and on time to relapse. \section*{Case--control designs} Breslow \& Chatterjee (1999) use the NWTS data to illustrate two-phase case--control designs. The data are available at \url{http://faculty.washington.edu/norm/software.html} in compressed form; we first expand to one record per patient. <<>>= library(survey) load(system.file("doc","nwts.rda",package="survey")) nwtsnb<-nwts nwtsnb$case<-nwts$case-nwtsb$case nwtsnb$control<-nwts$control-nwtsb$control a<-rbind(nwtsb,nwtsnb) a$in.ccs<-rep(c(TRUE,FALSE),each=16) b<-rbind(a,a) b$rel<-rep(c(1,0),each=32) b$n<-ifelse(b$rel,b$case,b$control) index<-rep(1:64,b$n) nwt.exp<-b[index,c(1:3,6,7)] nwt.exp$id<-1:4088 @ As we actually do know \texttt{histol} for all patients we can fit the logistic regression model with full sampling to compare with the two-phase analyses <<>>= glm(rel~factor(stage)*factor(histol), family=binomial, data=nwt.exp) @ The second phase sample consists of all patients with unfavorable histology as determined by local institution pathologists, all cases, and a 20\% sample of the remainder. Phase two is thus a stratified random sample without replacement, with strata defined by the interaction of \texttt{instit} and \texttt{rel}. <<>>= dccs2<-twophase(id=list(~id,~id),subset=~in.ccs, strata=list(NULL,~interaction(instit,rel)),data=nwt.exp) summary(svyglm(rel~factor(stage)*factor(histol),family=binomial,design=dccs2)) @ Disease stage at the time of surgery is also recorded. It could be used to further stratify the sampling, or, as in this example, to post-stratify. We can analyze the data either pretending that the sampling was stratified or using \texttt{calibrate} to post-stratify the design. <<>>= dccs8<-twophase(id=list(~id,~id),subset=~in.ccs, strata=list(NULL,~interaction(instit,stage,rel)),data=nwt.exp) gccs8<-calibrate(dccs2,phase=2,formula=~interaction(instit,stage,rel)) summary(svyglm(rel~factor(stage)*factor(histol),family=binomial,design=dccs8)) summary(svyglm(rel~factor(stage)*factor(histol),family=binomial,design=gccs8)) @ \section*{Case--cohort designs} In the case--cohort design for survival analysis, a $P$\% sample of a cohort is taken at recruitment for the second phase, and all participants who experience the event (cases) are later added to the phase-two sample. Viewing the sampling design as progressing through time in this way, as originally proposed, gives a double sampling design at phase two. It is simpler to view the process \emph{sub specie aeternitatis}, and to note that cases are sampled with probability 1, and controls with probability $P/100$. The subcohort will often be determined retrospectively rather than at recruitment, giving stratified random sampling without replacement, stratified on case status. If the subcohort is determined prospectively we can use the same analysis, post-stratifying rather than stratifying. There have been many analyses proposed for the case--cohort design (Therneau \& Li, 1999). We consider only those that can be expressed as a Horvitz--Thompson estimator for the Cox model. First we load the data and the necessary packages. The version of the NWTS data that includes survival times is not identical to the data set used for case--control analyses above. <<>>= library(survey) library(survival) data(nwtco) ntwco<-subset(nwtco, !is.na(edrel)) @ Again, we fit a model that uses \texttt{histol} for all patients, to compare with the two-phase design <<>>= coxph(Surv(edrel, rel)~factor(stage)+factor(histol)+I(age/12),data=nwtco) @ We define a two-phase survey design using simple random superpopulation sampling for the first phase, and sampling without replacement stratified on \texttt{rel} for the second phase. The \texttt{subset} argument specifies that observations are in the phase-two sample if they are in the subcohort or are cases. As before, the data structure is rectangular, but variables measured at phase two may be \texttt{NA} for participants not included at phase two. We compare the result to that given by \texttt{survival::cch} for Lin \& Ying's (1993) approach to the case--cohort design. <<>>= (dcch<-twophase(id=list(~seqno,~seqno), strata=list(NULL,~rel), subset=~I(in.subcohort | rel), data=nwtco)) svycoxph(Surv(edrel,rel)~factor(stage)+factor(histol)+I(age/12), design=dcch) subcoh <- nwtco$in.subcohort selccoh <- with(nwtco, rel==1|subcoh==1) ccoh.data <- nwtco[selccoh,] ccoh.data$subcohort <- subcoh[selccoh] cch(Surv(edrel, rel) ~ factor(stage) + factor(histol) + I(age/12), data =ccoh.data, subcoh = ~subcohort, id=~seqno, cohort.size=4028, method="LinYing") @ Barlow (1994) proposes an analysis that ignores the finite population correction at the second phase. This simplifies the standard error estimation, as the design can be expressed as one-phase stratified superpopulation sampling. The standard errors will be somewhat conservative. More data preparation is needed for this analysis as the weights change over time. <<>>= nwtco$eventrec<-rep(0,nrow(nwtco)) nwtco.extra<-subset(nwtco, rel==1) nwtco.extra$eventrec<-1 nwtco.expd<-rbind(subset(nwtco,in.subcohort==1),nwtco.extra) nwtco.expd$stop<-with(nwtco.expd, ifelse(rel & !eventrec, edrel-0.001,edrel)) nwtco.expd$start<-with(nwtco.expd, ifelse(rel & eventrec, edrel-0.001, 0)) nwtco.expd$event<-with(nwtco.expd, ifelse(rel & eventrec, 1, 0)) nwtco.expd$pwts<-ifelse(nwtco.expd$event, 1, 1/with(nwtco,mean(in.subcohort | rel))) @ The analysis corresponds to a cluster-sampled design in which individuals are sampled stratified by subcohort membership and then time periods are sampled stratified by event status. Having individual as the primary sampling unit is necessary for correct standard error calculation. <<>>= (dBarlow<-svydesign(id=~seqno+eventrec, strata=~in.subcohort+rel, data=nwtco.expd, weight=~pwts)) svycoxph(Surv(start,stop,event)~factor(stage)+factor(histol)+I(age/12), design=dBarlow) @ In fact, as the finite population correction is not being used the second stage of the cluster sampling could be ignored. We can also produce the stratified bootstrap standard errors of Wacholder et al (1989), using a replicate weights analysis <<>>= (dWacholder <- as.svrepdesign(dBarlow,type="bootstrap",replicates=500)) svycoxph(Surv(start,stop,event)~factor(stage)+factor(histol)+I(age/12), design=dWacholder) @ \subsection*{Exposure-stratified designs} Borgan et al (2000) propose designs stratified or post-stratified on phase-one variables. The examples at \url{http://faculty.washington.edu/norm/software.html} use a different subcohort sample for this stratified design, so we load the new \texttt{subcohort} variable <<>>= load(system.file("doc","nwtco-subcohort.rda",package="survey")) nwtco$subcohort<-subcohort d_BorganII <- twophase(id=list(~seqno,~seqno), strata=list(NULL,~interaction(instit,rel)), data=nwtco, subset=~I(rel |subcohort)) (b2<-svycoxph(Surv(edrel,rel)~factor(stage)+factor(histol)+I(age/12), design=d_BorganII)) @ We can further post-stratify the design on disease stage and age with \texttt{calibrate} <<>>= d_BorganIIps <- calibrate(d_BorganII, phase=2, formula=~age+interaction(instit,rel,stage)) svycoxph(Surv(edrel,rel)~factor(stage)+factor(histol)+I(age/12), design=d_BorganIIps) @ \section*{References} Barlow WE (1994). Robust variance estimation for the case-cohort design. \emph{Biometrics} 50: 1064-1072 Borgan \O, Langholz B, Samuelson SO, Goldstein L and Pogoda J (2000). Exposure stratified case-cohort designs, \emph{Lifetime Data Analysis} 6:39-58 Breslow NW and Chatterjee N. (1999) Design and analysis of two-phase studies with binary outcome applied to Wilms tumour prognosis. \emph{Applied Statistics} 48:457-68. Lin DY, and Ying Z (1993). Cox regression with incomplete covariate measurements. \emph{Journal of the American Statistical Association} 88: 1341-1349. Therneau TM and Li H., Computing the Cox model for case-cohort designs. \emph{Lifetime Data Analysis} 5:99-112, 1999 Wacholder S, Gail MH, Pee D, and Brookmeyer R (1989) Alternate variance and efficiency calculations for the case-cohort design \emph{Biometrika}, 76, 117-123 \end{document} survey/vignettes/qrule.Rnw0000644000176200001440000000774514073730263015461 0ustar liggesusers\documentclass{article} \usepackage{url} %\VignetteIndexEntry{Quantile rules} \usepackage{Sweave} \author{Thomas Lumley} \title{Estimating quantiles} \newlength{\wdth} \newcommand{\strike}[1]{\settowidth{\wdth}{#1}\rlap{\rule[.5ex]{\wdth}{.4pt}}#1} \begin{document} \SweaveOpts{concordance=TRUE} \maketitle The $p$th quantile is defined as the value where the estimated cumulative distribution function is equal to $p$. As with quantiles in unweighted data, this definition only pins down the quantile to an interval between two observations, and a rule is needed to interpolate. As the help for the base R function \texttt{quantile} explains, even before considering sampling weights there are many possible rules. Rules in the \texttt{svyquantile()} function can be divided into three classes \begin{itemize} \item Discrete rules, following types 1 to 3 in \texttt{quantile} \item Continuous rules, following types 4 to 9 in \texttt{quantile} \item A rule proposed by Shah \& Vaish (2006) and used in some versions of \textsf{SUDAAN} \end{itemize} \subsection*{Discrete rules} These are based on the discrete empirical CDF that puts weight proportional to the weight $w_k$ on values $x_k$. $$\hat F(x) = \frac{\sum_i \{x_i\leq x\}w_i}{\sum_i w_i}$$ \paragraph{The mathematical inverse} The mathematical inverse $\hat F^{-1}(p)$ of the CDF is the smallest $x$ such that $F(x)\geq p$. This is rule \texttt{hf1} and \texttt{math} and in equally-weighted data gives the same answer as \texttt{type=1} in \texttt{quantile} \paragraph{The primary-school median} The school definition of the median for an even number of observations is the average of the middle two observations. We extend this to say that the $p$th quantile is $q_{\mathrm{low}}=\hat F^{-1}(p)$ if $\hat F(q_{\mathrm{low}})=p$ and otherwise is the the average of $\hat F^{-1}(p)$ and the next higher observation. This is \texttt{school} and \texttt{hf2} and is the same as \texttt{type=2} in \texttt{quantile}. \paragraph{Nearest even order statistic} The $p$th quantile is whichever of $\hat F^{-1}(p)$ and the next higher observation is at an even-numbered position when the distinct data values are sorted. This is \texttt{hf3} and is the same as \texttt{type=3} in \texttt{quantile}. \subsection*{Continuous rules} These construct the empirical CDF as a piecewise-linear function and read off the quantile. They differ in the choice of points to interpolate. Hyndman \& Fan describe these as interpolating the points $(p_k,x_k)$ where $p_k$ is defined in terms of $k$ and $n$. For weighted use they have been redefined in terms of the cumulative weights $C_k=\sum_{i\leq k} w_i$, the total weight $C_n=\sum w_i$, and the weight $w_k$ on the $k$th observation. \begin{tabular}{lll} {\tt qrule} & Hyndman \& Fan & Weighted\\ \hline {\tt hf4} & $p_k= k/n$ & $p_k = C_k/C_n$\\ {\tt hf5} & $p_k= (k-0.5)/n$ & $p_k = (C_k-w_k)/C_n$\\ {\tt hf6} & $p_k= k/(n+1)$ & $p_k = C_k/(C_n+w_n)$\\ {\tt hf7} & $p_k= (k-1)/(n-1)$ & $p_k = C_{k-1}/C_{n-1}$\\ {\tt hf8} & $p_k= (k-1/3)/(n+2/3)$ & $p_k = (C_k-w_k/3)/(C_n+w_n/3)$\\ {\tt hf9} & $p_k= (k-3/8)/(n+1/4)$ & $p_k = (C_k-3w_k./8)/(C_n+w_n/4)$\\ \hline \end{tabular} \subsection*{Shah \& Vaish} This rule is related to {\tt hf6}, but it is discrete and more complicated. First, define $w^*_i=w_in/C_n$, so that $w^*_i$ sum to the sample size rather than the population size, and $C^*k$ as partial sums of $w^*_k$. Now define the estimated CDF by $$\hat F(x_k) =\frac{1}{n+1}\left(C^*_k+1/2-w_k/2 \right)$$ and take $\hat F^{-1}(p)$ as the $p$th quantile. \subsection*{Other options} It would be possible to redefine all the continuous estimators in terms of $w^*$, so that type 8, for example, would use $$p_k = (C^*_k-1/3)/(C^*_n+2/3)$$ Or a compromise, eg using $w^*_k$ in the numerator and numbers in the denominator, such as $$p_k = (C^*_k-w^*_k/3)/(C^*_n+2/3).$$ Comparing these would be \strike{a worthwhile}\dots\strike{an interesting}... a research question for simulation. \end{document} survey/vignettes/survey.Rnw0000644000176200001440000000670611541475435015666 0ustar liggesusers\documentclass{article} \usepackage{url} %\VignetteIndexEntry{A survey analysis example} \usepackage{Sweave} \author{Thomas Lumley} \title{A survey analysis example} \begin{document} \maketitle This document provides a simple example analysis of a survey data set, a subsample from the California Academic Performance Index, an annual set of tests used to evaluate California schools. The API website, including the original data files are at \url{http://api.cde.ca.gov}. The subsample was generated as a teaching example by Academic Technology Services at UCLA and was obtained from \url{http://www.ats.ucla.edu/stat/stata/Library/svy_survey.htm}. We have a cluster sample in which 15 school districts were sampled and then all schools in each district. This is in the data frame \texttt{apiclus1}, loaded with \texttt{data(api)}. The two-stage sample is defined by the sampling unit (\texttt{dnum}) and the population size(\texttt{fpc}). Sampling weights are computed from the population sizes, but could be provided separately. <<>>= library(survey) data(api) dclus1 <- svydesign(id = ~dnum, weights = ~pw, data = apiclus1, fpc = ~fpc) @ The \texttt{svydesign} function returns an object containing the survey data and metadata. <<>>= summary(dclus1) @ We can compute summary statistics to estimate the mean, median, and quartiles of the Academic Performance Index in the year 2000, the number of elementary, middle, and high schools in the state, the total number of students, and the proportion who took the test. Each function takes a formula object describing the variables and a survey design object containing the data. <<>>= svymean(~api00, dclus1) svyquantile(~api00, dclus1, quantile=c(0.25,0.5,0.75), ci=TRUE) svytotal(~stype, dclus1) svytotal(~enroll, dclus1) svyratio(~api.stu,~enroll, dclus1) @ The ordinary R subsetting functions \verb'[' and \texttt{subset} work correctly on these survey objects, carrying along the metadata needed for valid standard errors. Here we compute the proportion of high school students who took the test <<>>= svyratio(~api.stu, ~enroll, design=subset(dclus1, stype=="H")) @ The warnings referred to in the output occured because several school districts have only one high school sampled, making the second stage standard error estimation unreliable. Specifying a large number of variables is made easier by the \texttt{make.formula} function <<>>= vars<-names(apiclus1)[c(12:13,16:23,27:37)] svymean(make.formula(vars),dclus1,na.rm=TRUE) @ Summary statistics for subsets can also be computed with \texttt{svyby}. Here we compute the average proportion of ``English language learners'' and of students eligible for subsidized school meals for elementary, middle, and high schools <<>>= svyby(~ell+meals, ~stype, design=dclus1, svymean) @ Regression models show that these socieconomic variables predict API score and whether the school achieved its API target <<>>= regmodel <- svyglm(api00~ell+meals,design=dclus1) logitmodel <- svyglm(I(sch.wide=="Yes")~ell+meals, design=dclus1, family=quasibinomial()) summary(regmodel) summary(logitmodel) @ We can calibrate the sampling using the statewide total for the previous year's API <<>>= gclus1 <- calibrate(dclus1, formula=~api99, population=c(6194, 3914069)) @ which improves estimation of some quantities <<>>= svymean(~api00, gclus1) svyquantile(~api00, gclus1, quantile=c(0.25,0.5,0.75), ci=TRUE) svytotal(~stype, gclus1) svytotal(~enroll, gclus1) svyratio(~api.stu,~enroll, gclus1) @ \end{document} survey/vignettes/precalibrated.Rnw0000644000176200001440000000611114233634027017113 0ustar liggesusers\documentclass{article} %\VignetteIndexEntry{Pre-calibrated weights} \usepackage{Sweave} \title{Making use of pre-calibrated weights} \begin{document} \maketitle \SweaveOpts{concordance=TRUE} Public-use data sets often come with weights that have been adjusted by post-stratification, raking, or calibration. It is standard practice to ignore this fact and treat the weights as if they were sampling weights. An alternative approach is to calibrate the weights again in R. This might seem impossible: calibration needs the population totals. But we know the population totals, because the effect of calibration is precisely that the estimated population totals match the true population totals. From version 4.2, the \texttt{svydesign} function has an option \texttt{calibrate.formula} to specify (as a model formula) the variables that the weights are already calibrated on. The weights will be recalibrated using this formula, to population totals estimated from the sample. The weights will not change --- they were already calibrated --- but information will be added to the survey design object to describe the calibration constraints and standard errors of estimates will change. Consider, for example, the \texttt{apiclus1} example. This is a cluster sample of 15 school districts in California <<>>= library(survey) data(api) dclus1 <- svydesign(id = ~dnum, weights = ~pw, data = apiclus1, fpc = ~fpc) @ The sampling weights \texttt{pw} are already calibrated to sum to the known number of schools in the population, 6194, but R does not know this: <<>>= sum(weights(dclus1)) dim(apipop) dclus1<-update(dclus1, one=rep(1,nrow(dclus1))) svytotal(~one,dclus1) @ The standard error should be zero, because the calibration procedure ensures that the the estimated total is exactly 6194. We could use \texttt{calibrate()} on the design object <<>>= cal_dclus1<-calibrate(dclus1, formula=~1, population=sum(weights(dclus1))) svytotal(~one,cal_dclus1) @ The standard errors have changed, but the weights haven't <<>>= summary(weights(cal_dclus1)/weights(dclus1)) @ With the new option to \texttt{svydesign} we can do the same thing when the object is created <<>>= precal_dclus1<-svydesign(id = ~dnum, weights = ~pw, data = apiclus1, fpc = ~fpc, calibrate.formula=~1) precal_dclus1<-update(precal_dclus1, one=rep(1,nrow(dclus1))) svytotal(~one,precal_dclus1) @ Calibrating to the population size simplifies the standard error relationship between mean and total <<>>= (enroll_t<-svytotal(~enroll, dclus1)) (enroll_m<-svymean(~enroll, dclus1)) SE(enroll_m) SE(enroll_t)/6194 (cenroll_t<-svytotal(~enroll, precal_dclus1)) (cenroll_m<-svymean(~enroll, precal_dclus1)) SE(cenroll_m) SE(cenroll_t)/6194 @ Because calibration in this way changes the standard errors but not the point estimates, it's critical that you {\em only use it when the weights are in fact already calibrated}. If not, the standard errors will be wrong. In particular, it is not valid to take a subset of a data set with calibrated weights and then pretend the subset was also calibrated on the same variables. \end{document} survey/vignettes/domain.Rnw0000644000176200001440000000771611457435610015577 0ustar liggesusers\documentclass{article} \usepackage{url} %\VignetteIndexEntry{Estimates in subpopulations} \usepackage{Sweave} \author{Thomas Lumley} \title{Estimates in subpopulations.} \begin{document} \maketitle Estimating a mean or total in a subpopulation (domain) from a survey, eg the mean blood pressure in women, is not done simply by taking the subset of data in that subpopulation and pretending it is a new survey. This approach would give correct point estimates but incorrect standard errors. The standard way to derive domain means is as ratio estimators. I think it is easier to derive them as regression coefficients. These derivations are not important for R users, since subset operations on survey design objects automatically do the necessary adjustments, but they may be of interest. The various ways of constructing domain mean estimators are useful in quality control for the survey package, and some of the examples here are taken from \texttt{survey/tests/domain.R}. Suppose that in the artificial \texttt{fpc} data set we want to estimate the mean of \texttt{x} when \texttt{x>4}. <<>>= library(survey) data(fpc) dfpc<-svydesign(id=~psuid,strat=~stratid,weight=~weight,data=fpc,nest=TRUE) dsub<-subset(dfpc,x>4) svymean(~x,design=dsub) @ The \texttt{subset} function constructs a survey design object with information about this subpopulation and \texttt{svymean} computes the mean. The same operation can be done for a set of subpopulations with \texttt{svyby}. <<>>= svyby(~x,~I(x>4),design=dfpc, svymean) @ In a regression model with a binary covariate $Z$ and no intercept, there are two coefficients that estimate the mean of the outcome variable in the subpopulations with $Z=0$ and $Z=1$, so we can construct the domain mean estimator by regression. <<>>= summary(svyglm(x~I(x>4)+0,design=dfpc)) @ Finally, the classical derivation of the domain mean estimator is as a ratio where the numerator is $X$ for observations in the domain and 0 otherwise and the denominator is 1 for observations in the domain and 0 otherwise <<>>= svyratio(~I(x*(x>4)),~as.numeric(x>4), dfpc) @ The estimator is implemented by setting the sampling weight to zero for observations not in the domain. For most survey design objects this allows a reduction in memory use, since only the number of zero weights in each sampling unit needs to be kept. For more complicated survey designs, such as post-stratified designs, all the data are kept and there is no reduction in memory use. \subsection*{More complex examples} Verifying that \texttt{svymean} agrees with the ratio and regression derivations is particularly useful for more complicated designs where published examples are less readily available. This example shows calibration (GREG) estimators of domain means for the California Academic Performance Index (API). <<>>= data(api) dclus1<-svydesign(id=~dnum, weights=~pw, data=apiclus1, fpc=~fpc) pop.totals<-c(`(Intercept)`=6194, stypeH=755, stypeM=1018) gclus1 <- calibrate(dclus1, ~stype+api99, c(pop.totals, api99=3914069)) svymean(~api00, subset(gclus1, comp.imp=="Yes")) svyratio(~I(api00*(comp.imp=="Yes")), ~as.numeric(comp.imp=="Yes"), gclus1) summary(svyglm(api00~comp.imp-1, gclus1)) @ Two-stage samples with full finite-population corrections <<>>= data(mu284) dmu284<-svydesign(id=~id1+id2,fpc=~n1+n2, data=mu284) svymean(~y1, subset(dmu284,y1>40)) svyratio(~I(y1*(y1>40)),~as.numeric(y1>40),dmu284) summary(svyglm(y1~I(y1>40)+0,dmu284)) @ Stratified two-phase sampling of children with Wilm's Tumor, estimating relapse probability for those older than 3 years (36 months) at diagnosis <<>>= library("survival") data(nwtco) nwtco$incc2<-as.logical(with(nwtco, ifelse(rel | instit==2,1,rbinom(nrow(nwtco),1,.1)))) dccs8<-twophase(id=list(~seqno,~seqno), strata=list(NULL,~interaction(rel,stage,instit)), data=nwtco, subset=~incc2) svymean(~rel, subset(dccs8,age>36)) svyratio(~I(rel*as.numeric(age>36)), ~as.numeric(age>36), dccs8) summary(svyglm(rel~I(age>36)+0, dccs8)) @ \end{document} survey/R/0000755000176200001440000000000014424042503012006 5ustar liggesuserssurvey/R/olr.R0000644000176200001440000003145414360134366012744 0ustar liggesuserssvyolr<-function(formula, design,...) UseMethod("svyolr",design) ## ## Much of this is taken from MASS polr, thus the GPL-2 license. ## svyolr.svyrep.design<-function(formula,design,subset=NULL,...,return.replicates=FALSE, multicore=getOption("survey.multicore")){ environment(formula)<-environment() subset<-substitute(subset) subset<-eval(subset, model.frame(design), parent.frame()) if (!is.null(subset)){ if (any(is.na(subset))) stop("subset must not contain NA values") design<-design[subset,] } df<-model.frame(design) pwt<-weights(design,"sampling") if (multicore && !requireNamespace("parallel", quietly=TRUE)) multicore <- FALSE rval<-suppressWarnings(MASS::polr(formula,data=df,...,Hess=TRUE,model=FALSE, weights=pwt)) start<-c(rval$coefficients,rval$zeta) rw<-weights(design,"analysis") if (multicore){ betas<-do.call(cbind,parallel::mclapply(1:ncol(rw), function(i){ w<-rw[,i] environment(formula)<-environment() m<-MASS::polr(formula,data=df,Hess=FALSE, start=start, model=FALSE, weights=w) c(m$coefficients, m$zeta) })) } else { betas<-apply(rw,2,function(w) { environment(formula)<-environment() m<-MASS::polr(formula,data=df,Hess=FALSE, start=start, model=FALSE, weights=w) c(m$coefficients, m$zeta) }) } rval$var<-svrVar(t(betas),design$scale,design$rscales,mse=design$mse, coef=start) rval$df.residual<-degf(design)-length(rval$coefficients) rval$deviance<-rval$deviance/mean(pwt) rval$survey.design<-design class(rval)<-"svyolr" rval$call<-sys.call() rval$call[[1]]<-as.name(.Generic) if (return.replicates) rval$replicates<-t(betas) rval } pgumbel<- function (q, loc = 0, scale = 1, lower.tail = TRUE) { q <- (q - loc)/scale p <- exp(-exp(-q)) if (!lower.tail) 1 - p else p } dgumbel<-function (x, loc = 0, scale = 1, log = FALSE) { x <- (x - loc)/scale d <- log(1/scale) - x - exp(-x) if (!log) exp(d) else d } svyolr.survey.design2<-function (formula, design, start, subset=NULL,..., na.action=na.omit, method = c("logistic", "probit", "cloglog", "cauchit")) { logit <- function(p) log(p/(1 - p)) fmin <- function(beta) { theta <- beta[pc + 1:q] gamm <- c(-100, cumsum(c(theta[1], exp(theta[-1]))), 100) eta <- offset if (pc > 0) eta <- eta + drop(x %*% beta[1:pc]) pr <- pfun(gamm[y + 1] - eta) - pfun(gamm[y] - eta) if (all(pr > 0)) -sum(wt * log(pr)) else Inf } jacobian <- function(theta) { k <- length(theta) etheta <- exp(theta) mat <- matrix(0, k, k) mat[, 1] <- rep(1, k) for (i in 2:k) mat[i:k, i] <- etheta[i] mat } gmini <- function(beta,logdiff=FALSE) { theta <- beta[pc + 1:q] gamm <- c(-100, cumsum(c(theta[1], exp(theta[-1]))), 100) eta <- offset if (pc > 0) eta <- eta + drop(x %*% beta[1:pc]) pr <- pfun(gamm[y + 1] - eta) - pfun(gamm[y] - eta) p1 <- dfun(gamm[y + 1] - eta) p2 <- dfun(gamm[y] - eta) g1 <- if (pc > 0) x * (wt * (p1 - p2)/pr) else numeric(0) xx <- .polrY1 * p1 - .polrY2 * p2 g2 <- - xx * (wt/pr) if (logdiff) g2 <- g2 %*% jacobian(theta) if (all(pr > 0)) cbind(g1, g2) else NA+cbind(g1,g2) } gmin<-function(beta){ colSums(gmini(beta,logdiff=TRUE)) } m <- match.call(expand.dots = FALSE) method <- match.arg(method) pfun <- switch(method, logistic = plogis, probit = pnorm, cloglog = pgumbel, cauchit = pcauchy) dfun <- switch(method, logistic = dlogis, probit = dnorm, cloglog = dgumbel, cauchit = dcauchy) subset<-substitute(subset) subset<-eval(subset, model.frame(design), parent.frame()) if (!is.null(subset)){ if (any(is.na(subset))) stop("subset must not contain NA values") design<-design[subset,] } m<-model.frame(formula,model.frame(design),na.action=na.pass) Terms <- attr(m, "terms") m<-na.action(m) nao<-attr(m,"na.action") if(length(nao)) { design<-design[-nao,] } x <- model.matrix(Terms, m) xint <- match("(Intercept)", colnames(x), nomatch = 0) n <- nrow(x) pc <- ncol(x) cons <- attr(x, "contrasts") if (xint > 0) { x <- x[, -xint, drop = FALSE] pc <- pc - 1 } else warning("an intercept is needed and assumed") keep<-weights(design)!=0 wt <- weights(design)[keep] offset <- model.offset(m) if (length(offset) <= 1) offset <- rep(0, n) y <- model.response(m) if (!is.factor(y)) stop("response must be a factor") lev <- levels(y) if (length(lev) <= 2) stop("response must have 3 or more levels") y <- unclass(y) q <- length(lev) - 1 Y <- matrix(0, n, q) .polrY1 <- col(Y) == y .polrY2 <- col(Y) == y - 1 if (missing(start)) { q1 <- length(lev)%/%2 y1 <- (y > q1) X <- cbind(Intercept = rep(1, n), x) fit <- switch(method, logistic = glm.fit(X, y1, wt/mean(wt), family = quasibinomial(), offset = offset), probit = glm.fit(X, y1, wt/mean(wt), family = quasibinomial("probit"), offset = offset), cloglog = glm.fit(X, y1, wt/mean(wt), family = quasibinomial("probit"), offset = offset), cauchit = glm.fit(X, y1, wt/mean(wt), family = quasibinomial("cauchit"), offset = offset)) if (!fit$converged) stop("attempt to find suitable starting values failed") coefs <- fit$coefficients if (any(is.na(coefs))) { warning("design appears to be rank-deficient, so dropping some coefs") keep <- names(coefs)[!is.na(coefs)] coefs <- coefs[keep] x <- x[, keep[-1], drop = FALSE] pc <- ncol(x) } spacing <- logit((1:q)/(q + 1)) if (method != "logit") spacing <- spacing/1.7 gammas <- -coefs[1] + spacing - spacing[q1] thetas <- c(gammas[1], log(diff(gammas))) start <- c(coefs[-1], thetas) } else if (length(start) != pc + q) stop("'start' is not of the correct length") res <- optim(start, fmin, gmin, method = "BFGS", hessian = TRUE, ...) beta <- res$par[seq_len(pc)] theta <- res$par[pc + 1:q] zeta <- cumsum(c(theta[1], exp(theta[-1]))) deviance <- 2 * res$value/mean(wt) niter <- c(f.evals = res$counts[1], g.evals = res$counts[2]) names(zeta) <- paste(lev[-length(lev)], lev[-1], sep = "|") if (pc > 0) { names(beta) <- colnames(x) eta <- drop(x %*% beta) } else { eta <- rep(0, n) } cumpr <- matrix(pfun(matrix(zeta, n, q, byrow = TRUE) - eta), , q) fitted <- t(apply(cumpr, 1, function(x) diff(c(0, x, 1)))) dimnames(fitted) <- list(row.names(m), lev) fit <- list(coefficients = beta, zeta = zeta, deviance = deviance, fitted.values = fitted, lev = lev, terms = Terms, df.residual = sum(wt) - pc - q, edf = pc + q, n = sum(wt), nobs = sum(wt), method = method, convergence = res$convergence, niter = niter) dn <- c(names(beta), names(zeta)) ## MASS::polr reparametrises the intercepts other than the first ## using logs of differences (to ensure the ordering). Need to undo it. vc <- MASS::ginv(res$hessian) pc <- length(beta) gamma <- fit$zeta z.ind <- pc + seq_along(gamma) theta <- c(gamma[1L], log(diff(gamma))) J <- jacobian(theta) A <- diag(pc + length(gamma)) A[z.ind, z.ind] <- J Vm <- A %*% vc %*% t(A) dimnames(Vm) <- list(dn, dn) fit$Hessian<-H <- solve(Vm) ## fit$call<-sys.call() fit$call[[1]]<-as.name(.Generic) inffun<- gmini(res$par, logdiff=FALSE)%*%solve(H) if(any(!keep)){ ## subsets of raked designs inffun1<-matrix(0,ncol=NCOL(inffun), nrow=length(keep)) inffun1[keep,]<-inffun inffun<-inffun1 } fit$var<-svyrecvar(inffun, design$cluster, design$strata, design$fpc, postStrata = design$postStrata) fit$df.residual<-degf(design)-length(beta) fit$survey.design<-design fit$na.action <- attr(m, "na.action") fit$contrasts <- cons fit$xlevels <- .getXlevels(Terms, m) class(fit) <- "svyolr" fit } vcov.svyolr<-function(object,...) object$var print.svyolr<-function (x, ...) { if (!is.null(cl <- x$call)) { cat("Call:\n") dput(cl, control = NULL) } if (length(coef(x))) { cat("\nCoefficients:\n") print(coef(x,intercept=FALSE), ...) } else { cat("\nNo coefficients\n") } cat("\nIntercepts:\n") print(x$zeta, ...) invisible(x) } coef.svyolr<-function(object,intercepts=TRUE,...) { if(intercepts) c(object$coefficients, object$zeta) else object$coefficients } summary.svyolr<-function (object, digits = max(3, .Options$digits - 3), correlation = FALSE, ...) { cc <- coef(object) pc <- length(coef(object, FALSE)) q <- length(object$zeta) coef <- matrix(0, pc + q, 3, dimnames = list(names(cc), c("Value", "Std. Error", "t value"))) coef[, 1] <- cc vc <- vcov(object) z.ind <- (pc + 1):(pc + q) gamma <- object$zeta theta <- c(gamma[1], log(diff(gamma))) ## used to have jacobian here but it's now in svyolr coef[, 2] <- sd <- sqrt(diag(vc)) coef[, 3] <- coef[, 1]/coef[, 2] object$coefficients <- coef object$pc <- pc object$digits <- digits if (correlation) object$correlation <- (vc/sd)/rep(sd, rep(pc + q, pc + q)) class(object) <- "summary.svyolr" object } print.summary.svyolr<-function (x, digits = x$digits, ...) { if (!is.null(cl <- x$call)) { cat("Call:\n") dput(cl, control = NULL) } coef <- format(round(x$coefficients, digits = digits)) pc <- x$pc if (pc > 0) { cat("\nCoefficients:\n") print(x$coefficients[seq_len(pc), , drop = FALSE], quote = FALSE, ...) } else { cat("\nNo coefficients\n") } cat("\nIntercepts:\n") print(coef[(pc + 1):nrow(coef), , drop = FALSE], quote = FALSE, ...) if (nzchar(mess <- naprint(x$na.action))) cat("(", mess, ")\n", sep = "") if (!is.null(correl <- x$correlation)) { cat("\nCorrelation of Coefficients:\n") ll <- lower.tri(correl) correl[ll] <- format(round(correl[ll], digits)) correl[!ll] <- "" print(correl[-1, -ncol(correl)], quote = FALSE, ...) } invisible(x) } model.frame.svyolr<-function(formula, ...){ mcall <- match.call(svyolr, formula$call) e<-environment(formula(formula)) formula<-eval(mcall$formula, envir=e) design<- eval(mcall$design, envir=e) mf<-model.frame(formula,model.frame(design)) w<-weights(design, type="sampling") if (is.null(naa<-attr(mf,"na.action"))) mf[["(weights)"]]<-w else mf[["(weights)"]]<-w[-naa] mf } ## taken from MASS::predict.polr predict.svyolr<-function (object, newdata, type = c("class", "probs"), ...) { type <- match.arg(type) if (missing(newdata)) Y <- object$fitted else { newdata <- as.data.frame(newdata) Terms <- delete.response(object$terms) m <- model.frame(Terms, newdata, na.action = function(x) x, xlev = object$xlevels) if (!is.null(cl <- attr(Terms, "dataClasses"))) .checkMFClasses(cl, m) X <- model.matrix(Terms, m, contrasts = object$contrasts) xint <- match("(Intercept)", colnames(X), nomatch = 0L) if (xint > 0L) X <- X[, -xint, drop = FALSE] n <- nrow(X) q <- length(object$zeta) eta <- drop(X %*% object$coefficients) pfun <- switch(object$method, logistic = plogis, probit = pnorm, loglog = pgumbel, cloglog = pGumbel, cauchit = pcauchy) cumpr <- matrix(pfun(matrix(object$zeta, n, q, byrow = TRUE) - eta), , q) Y <- t(apply(cumpr, 1L, function(x) diff(c(0, x, 1)))) dimnames(Y) <- list(rownames(X), object$lev) } if (missing(newdata) && !is.null(object$na.action)) Y <- napredict(object$na.action, Y) if (type == "class") factor(max.col(Y), levels = seq_along(object$lev), labels = object$lev) else drop(Y) } ## taken from MASS::pGumbel pGumbel<-function (q, loc = 0, scale = 1, lower.tail = TRUE) { q <- (q - loc)/scale p <- exp(-exp(q)) if (lower.tail) 1 - p else p } survey/R/naa.R0000644000176200001440000000434414066243344012705 0ustar liggesusersnaa_longer<-function(naa, object,...) UseMethod("naa_longer",naa) naa_shorter<-function(naa, object,...) UseMethod("naa_shorter",naa) naa_longer.NULL<-function(naa, object,...) object naa_shorter.NULL<-function(naa, object,...) object naa_longer.default<-function(naa, object,...) stop("no default method (not psychic)") naa_shorter.default<-function(naa, object,...) stop("no default method (not psychic)") naa_longer.fail<-function(naa, object,...) stop("can't happen (na.fail)") naa_shorter.fail<-function(naa, object,...) stop("can't happen (na.fail)") naa_shorter.omit<-function(naa, object,...) object naa_longer.omit<-function(naa,object,...){ ##from naresid.exclude if (length(naa) == 0 || !is.numeric(naa)) stop("invalid argument 'naa'") if (is.null(object)) return(object) n <- NROW(object) keep <- rep.int(NA, n + length(naa)) keep[-naa] <- 1L:n if (is.matrix(object)) { object <- object[keep, , drop = FALSE] temp <- rownames(object) if (length(temp)) { temp[naa] <- names(naa) rownames(object) <- temp } } else if (is.array(object) && length(d <- dim(object)) > 2L) { object <- object[keep, , , drop = FALSE] temp <- (dn <- dimnames(object))[[1L]] if (!is.null(temp)) { temp[naa] <- names(naa) dimnames(object)[[1L]] <- temp } } else { object <- object[keep] temp <- names(object) if (length(temp)) { temp[naa] <- names(naa) names(object) <- temp } } object } naa_longer.exclude<-function(naa,object,...) object naa_shorter.exclude<-function(naa,object,...) { if (length(naa) == 0 || !is.numeric(naa)) stop("invalid argument 'naa'") if (is.null(object)) return(object) n <- NROW(object) keep <- (1:n)[-naa] if (is.matrix(object)) { object <- object[keep, , drop = FALSE] temp <- rownames(object) } else if (is.array(object) && length(d <- dim(object)) > 2L) { object <- object[keep, , , drop = FALSE] temp <- (dn <- dimnames(object))[[1L]] } else { object <- object[keep] temp <- names(object) } object } survey/R/count.R0000644000176200001440000000172411457435612013277 0ustar liggesusersunwtd.count<-function(x, design,...){ if (inherits(x, "formula")) { mf <- model.frame(x, model.frame(design), na.action = na.pass) xx <- lapply(attr(terms(x), "variables")[-1], function(tt) model.matrix(eval(bquote(~0 + .(tt))), mf) ) cols <- sapply(xx, NCOL) x <- matrix(nrow = NROW(xx[[1]]), ncol = sum(cols)) scols <- c(0, cumsum(cols)) for (i in 1:length(xx)) { x[, scols[i] + 1:cols[i]] <- xx[[i]] } colnames(x) <- do.call("c", lapply(xx, colnames)) } else if (typeof(x) %in% c("expression", "symbol")) x <- eval(x, model.frame(design)) x <- as.matrix(x) out<- weights(design,"sampling")==0 nas <- rowSums(is.na(x)) x <- x[(nas+out) == 0, , drop = FALSE] rval<-NROW(x) names(rval)<-"counts" attr(rval,"var")<-matrix(0,1,1) attr(rval,"statistic")<-"counts" if (inherits(design,"svyrep.design")) class(rval)<-"svrepstat" else class(rval)<-"svystat" rval } survey/R/greg.R0000644000176200001440000002140414074165701013065 0ustar liggesusers regcalibrate<-function(design, ...) UseMethod("regcalibrate") is.calibrated<-function(design){ !is.null(design$postStrata)} regcalibrate.pps<-function(design,formula, population, stage=NULL, lambda=NULL, aggregate.stage=NULL,...){ if (!is.null(stage) && !(stage==0)) stop("'stage' not supported for pps designs") if (!is.null(aggregate.stage)) stop("'aggregate.stage' not supported for pps designs") regcalibrate.survey.design2(design,formula, population, stage=NULL, lambda=NULL, aggregate.stage=NULL,...) } ## ## unbounded linear calibration using qr decomposition: less sensitive to ## collinearity than Deville & Sarndal's Newton algorithm. ## regcalibrate.survey.design2<-function(design, formula, population, stage=NULL, lambda=NULL, aggregate.stage=NULL, sparse=FALSE,...){ if (is.null(stage)) stage<-if (is.list(population)) 1 else 0 if (!is.null(aggregate.stage)){ aggindex<-design$cluster[[aggregate.stage]] } if(stage==0){ ## calibration to population totals if(sparse){ mm<-sparse.model.matrix(formula, model.frame(formula, model.frame(design))) }else{ mm<-model.matrix(formula, model.frame(formula, model.frame(design))) } ww<-weights(design) if (is.null(lambda)){ sigma2<-rep(1,nrow(mm)) }else if(length(lambda) == nrow(mm)){ # for the heteroskedasticity parameter sigma2<-drop(lambda) }else{ sigma2<-drop(mm%*%lambda) # to keep the same functionality when variance = 1 } if (!is.null(aggregate.stage)){ mm<-apply(mm,2,function(mx) ave(mx,aggindex)) ww<-ave(ww,aggindex) sigma2<-ave(sigma2,aggindex) } whalf<-sqrt(ww) sample.total<-colSums(mm*ww) if(any(sample.total==0)){ ## drop columsn where all sample and population are zero zz<-(population==0) & (apply(mm,2,function(x) all(x==0))) mm<-mm[,!zz] population<-population[!zz] sample.total<-sample.total[!zz] } if (!is.null(names(population))){ if (!all(names(sample.total) %in% names(population))){ warning("Sampling and population totals have different names.") cat("Sample: "); print(names(sample.total)) cat("Popltn: "); print(names(population)) } else if (!all(names(sample.total) == names(population))){ warning("Sample and population totals reordered to make names agree: check results.") population <- population[match(names(sample.total), names(population))] } } tqr<-qr(mm*whalf/sqrt(sigma2)) ## not needed ##if (is.null(lambda) && !all(abs(qr.resid(tqr,whalf*sigma2)/sigma2) <1e-5)) ## warning("Calibration models with constant variance must have an intercept") g<-rep(1,NROW(mm)) Tmat<-crossprod(mm*whalf/sqrt(sigma2)) tT<-solve(Tmat,population-sample.total) g<-drop(1+mm%*%tT/sigma2) design$prob<-design$prob/g caldata<- list(qr=tqr, w=g*whalf*sqrt(sigma2), stage=0, index=NULL) } else { ## Calibration within clusters (Sarndal's Case C) if (stage>NCOL(design$cluster)) stop("This design does not have stage",stage) if (!is.null(aggregate.stage)){ stop("aggregate= not implemented for calibration within clusters") } if (!all(length(population[[1]])==sapply(population,length))) stop("Population totals are not all the same length") clusters<-unique(design$cluster[,stage]) nc<-length(clusters) caldata<-list(qr=vector("list",nc), w=vector("list",nc), stage=stage,index=as.character(clusters)) if(sparse){ mm<-sparse.model.matrix(formula, model.frame(formula, model.frame(design))) }else{ mm<-model.matrix(formula, model.frame(formula, model.frame(design))) } if (is.null(lambda)){ sigma2<-rep(1,nrow(mm)) }else if(length(lambda) == nrow(mm)){ # for the heteroskedasticity parameter sigma2<-drop(lambda) }else{ sigma2<-drop(mm%*%lambda) # to keep the same functionality when variance = 1 } if(NCOL(mm)!=length(population[[1]])){ stop("Population and sample totals are not the same length.") } if (any(colnames(mm)!=names(population[[1]]))){ warning("Sampling and population totals have different names.") cat("Sample: "); print(colnames(mm)) cat("Popltn: "); print(names(population[[1]])) } stageweights<-1/apply(design$allprob[,1:stage,drop=FALSE],1,prod) if (any(duplicated(design$cluster[!duplicated(stageweights),stage]))) stop("Weights at stage", stage, "vary within sampling units") cwhalf<-sqrt(weights(design)/stageweights) dwhalf<-sqrt(weights(design)) tqr<-qr(mm) ## not needed ## if (is.null(lambda) && !all(abs(qr.resid(tqr,sigma2)) <1e-3)) ## stop("Calibration models with constant variance must have an intercept") for (i in 1:length(clusters)){ cluster<-clusters[[i]] these<-which(cluster == as.character(design$cluster[,stage])) mmi<-mm[these,,drop=FALSE] sample.total<-colSums(mmi*cwhalf[these]*cwhalf[these]) if(any(sample.total==0)){ ## drop columsn where all sample and population are zero zz<-(population[[i]]==0) & (apply(mmi,2,function(x) all(x==0))) mmi<-mmi[,!zz,drop=FALSE] population[[i]]<-population[[i]][!zz] sample.total<-sample.total[!zz] } tqr<-qr(mmi*cwhalf[these]/sqrt(sigma2[these])) Tmat<-crossprod(mmi*cwhalf[these]/sqrt(sigma2[these])) tT<-solve(Tmat,population[[i]]-sample.total) g<-drop(1+mmi%*%tT/sigma2[these]) design$prob[these]<-design$prob[these]/g caldata$qr[[i]]<-tqr caldata$w[[i]]<-g*stageweights[these]*sqrt(sigma2[these])*cwhalf[these]^2 } } class(caldata)<-"greg_calibration" design$postStrata<-c(design$postStrata, list(caldata)) design$call<-sys.call(-1) design } regcalibrate.svyrep.design<-function(design, formula, population,compress=NA,lambda=NULL, aggregate.index=NULL,sparse=FALSE,...){ mf<-model.frame(formula, design$variables) if(sparse){ mm<-sparse.model.matrix(formula, mf) }else{ mm<-model.matrix(formula, mf) } ww<-design$pweights if (is.null(lambda)){ sigma2<-rep(1,nrow(mm)) }else if(length(lambda) == nrow(mm)){ # for the heteroskedasticity parameter sigma2<-drop(lambda) }else{ sigma2<-drop(mm%*%lambda) # to keep the same functionality when variance = 1 } repwt<-as.matrix(design$repweights) if (!design$combined.weights) repwt<-repwt*design$pweights if (inherits(aggregate.index,"formula")){ if (length(aggregate.index)!=2) stop("aggregate.index must be a one-sided formula") aggregate.index<-model.frame(aggregate.index, design$variables) if (NCOL(aggregate.index)>1) stop("aggregate.index must specify a single variable") aggregate.index<-aggregate.index[[1]] } if (!is.null(aggregate.index)){ if (sqrt(max(ave(ww,aggregate.index,FUN=var),na.rm=TRUE))>1e-2*mean(ww)) warning("Sampling weights are not constant within clusters defined by aggregate.index") mm<-apply(mm,2,function(mx) ave(mx,aggregate.index)) ww<-ave(ww,aggregate.index) sigma2<-ave(sigma2,aggregate.index) repwt<-apply(repwt,2,function(wx) ave(wx, aggregate.index)) } whalf<-sqrt(ww) sample.total<-colSums(mm*ww) if(any(sample.total==0)){ ## drop columsn where all sample and population are zero zz<-(population==0) & (apply(mm,2,function(x) all(x==0))) mm<-mm[,!zz] population<-population[!zz] sample.total<-sample.total[!zz] } if(length(sample.total)!=length(population)){ stop("Population and sample totals are not the same length.") } if (!is.null(names(population)) && any(names(sample.total)!=names(population))){ warning("Sampling and population totals have different names.") cat("Sample: "); print(colnames(mm)) cat("Popltn: "); print(names(population[[1]])) } Tmat<-crossprod(mm*whalf/sqrt(sigma2)) tT<-solve(Tmat,population-sample.total) gtotal<-drop(1+mm%*%tT/sigma2) design$pweights<-design$pweights*gtotal for(i in 1:NCOL(repwt)){ whalf<-sqrt(repwt[,i]) Tmat<-crossprod(mm*whalf/sqrt(sigma2)) sample.total<-colSums(mm*whalf*whalf) g<-drop(1+mm%*%solve(Tmat,population-sample.total)/sigma2) repwt[,i]<-as.vector(design$repweights[,i])*g } if (!design$combined.weights) repwt<-repwt/gtotal if (compress || (is.na(compress && inherits(design$repweights,"repweights_compressed")))){ repwt<-compressWeights(repwt) } design$repweights<-repwt design$call<-sys.call(-1) design$degf<-NULL design$degf<-degf(design) design } survey/R/svyttest.R0000644000176200001440000001100314423574562014047 0ustar liggesuserssvyttest<-function(formula, design,...) UseMethod("svyttest",design) svyttest.default<-function(formula, design, ...){ if (formula[[3]]==1 || formula[[3]]==0){ ## one-sample tt <- eval(bquote(svymean(~as.numeric(.(formula[[2]])),design,...))) rval<-list(statistic=coef(tt)[1]/SE(tt)[1], parameter=degf(design)-1, estimate=coef(tt)[1], null.value=0, alternative="two.sided", method="Design-based one-sample t-test", data.name=deparse(formula)) rval$p.value<-2*pt(-abs(rval$statistic),df=rval$parameter) ci <- confint(tt,level=0.95,df=rval$parameter) attr(ci,"conf.level")<-0.95 rval$conf.int<-ci names(rval$statistic)<-"t" names(rval$parameter)<-"df" names(rval$estimate)<-"mean" names(rval$null.value)<-"mean" class(rval)<-c("svyttest","htest") } else { ## two-sample m <- eval(bquote(svyglm(formula,design, family=gaussian()))) mm<-model.matrix(m) if( (ncol(mm)!=2) || (any(!(mm[,2] %in% c(0,1))) && any(!(mm[,2] %in% c(1,2))))) stop("group must be binary") rval<-list(statistic=coef(m)[2]/SE(m)[2], parameter=m$df.resid, estimate=coef(m)[2], null.value=0, alternative="two.sided", method="Design-based t-test", data.name=deparse(formula)) rval$p.value<-2*pt(-abs(rval$statistic),df=rval$parameter) ci <- confint(m,parm=2) attr(ci,"conf.level")<-0.95 rval$conf.int<-ci names(rval$statistic)<-"t" names(rval$parameter)<-"df" names(rval$estimate)<-"difference in mean" names(rval$null.value)<-"difference in mean" class(rval)<-c("svyttest","htest") } return(rval) } confint.svyttest<-function(object, parm, level=0.95,...){ if(level==0.95) return(object$conf.int) halfw<-diff(as.vector(object$conf.int))/2 q95<-qt(0.975,df=object$parameter) qthis<-qt(1-(1-level)/2, df=object$parameter) thishalfw<-halfw*qthis/q95 rval<-object$estimate+c(-thishalfw,thishalfw) attr(rval,"conf.level")<-level rval } expit<-function(eta) exp(eta)/(1+exp(eta)) svyciprop<-function(formula, design, method=c("logit","likelihood","asin","beta","mean","xlogit"), level=0.95,df=degf(design),...) { method<-match.arg(method) if (method=="mean"){ m<-eval(bquote(svymean(~as.numeric(.(formula[[2]])),design,...))) ci<-as.vector(confint(m,1,level=level,df=df,...)) rval<-coef(m)[1] attr(rval,"var")<-vcov(m) } else if (method=="asin"){ m<-eval(bquote(svymean(~as.numeric(.(formula[[2]])),design,...))) names(m)<-1 xform<-svycontrast(m,quote(asin(sqrt(`1`)))) ci<-sin(as.vector(confint(xform,1,level=level,df=df,...)))^2 rval<-coef(m)[1] attr(rval,"var")<-vcov(m) } else if (method=="xlogit"){ m<-eval(bquote(svymean(~as.numeric(.(formula[[2]])),design,...))) names(m)<-1 xform<-svycontrast(m,quote(log(`1`/(1-`1`)))) ci<-expit(as.vector(confint(xform,1,level=level,df=df,...))) rval<-coef(m)[1] attr(rval,"var")<-vcov(m) } else if (method=="beta"){ m<-eval(bquote(svymean(~as.numeric(.(formula[[2]])),design,...))) n.eff <- coef(m)*(1-coef(m))/vcov(m) rval<-coef(m)[1] attr(rval,"var")<-vcov(m) alpha<-1-level n.eff<-n.eff*( qt(alpha/2, nrow(design)-1)/qt(alpha/2, degf(design)) )^2 ci<-c(qbeta(alpha/2, n.eff*rval,n.eff*(1-rval)+1), qbeta(1-alpha/2, n.eff*rval+1, n.eff*(1-rval))) } else { m<-eval(bquote(svyglm(.(formula[[2]])~1,design, family=quasibinomial))) cimethod<-switch(method, logit="Wald",likelihood="likelihood") ci<-suppressMessages(as.numeric(expit(confint(m,1,level=level,method=cimethod,ddf=df)))) rval<-expit(coef(m))[1] attr(rval,"var")<-vcov(eval(bquote(svymean(~as.numeric(.(formula[[2]])),design,...)))) } halfalpha<-(1-level)/2 names(ci)<-paste(round(c(halfalpha,(1-halfalpha))*100,1),"%",sep="") names(rval)<-paste(deparse(formula[[2]]), collapse="") attr(rval,"ci")<-ci class(rval)<-"svyciprop" rval } confint.svyciprop<-function(object,parm,level=NULL,...){ if (!is.null(level)) stop("need to re-run svyciprop to specify level") rval<-t(as.matrix(attr(object,"ci"))) rownames(rval)<-names(object) rval } coef.svyciprop<-function(object,...) object vcov.svyciprop<-function(object,...) attr(object,"var") print.svyciprop<-function(x,digits=max(3,getOption("digits")-4),...){ m <- cbind(coef(x), confint(x)) printCoefmat(m,digits=digits) invisible(x) } survey/R/svycralpha.R0000644000176200001440000000057313403313510014305 0ustar liggesusers svycralpha<-function(formula, design, na.rm=FALSE){ scoredef<-formula scoredef[[1]]<-quote(I) design<-eval(bquote(update(design, `*alpha*`= .(scoredef)))) vtotal<-coef(svyvar(~`*alpha*`,design,na.rm=na.rm)) vitems <-diag(coef(svyvar(formula, design,na.rm=na.rm))) K<-length(attr(terms(formula),"term.labels")) (K/(K-1))*(1-sum(vitems)/vtotal) } survey/R/logrank.R0000644000176200001440000001647714424042503013605 0ustar liggesuserssvylogrank<-function(formula, design,rho=0,gamma=0,method=c("small","large","score"),...){ UseMethod("svylogrank",design) } print.svylogrank<-function(x,...){ m<-t(x) rownames(m)="" printCoefmat(m,has.Pvalue=TRUE,P.values=TRUE) invisible(NULL) } .logrank<-function(formula, design,rho=0,gamma=0){ nullformula<-update(formula,.~1) S<-svykm(nullformula,design,se=FALSE) epsilon<-min(diff(sort(unique(S$time))))/10 w<-approxfun(S$time+epsilon,S$surv^rho*(1-S$surv)^gamma,method="constant",rule=2) environment(formula)<-environment() coxmodel<-coxph(formula,data=model.frame(design), weights=weights(design,"sampling"),iter.max=0) x<-model.matrix(coxmodel) detail<-coxph.detail(coxmodel,riskmat=TRUE) dLambda<-detail$hazard E<-as.matrix(detail$means) N<-coxmodel$y[,"status"] times<-coxmodel$y[,"time"] Y<-t(outer(times, detail$time,">=")) # was t(detail$riskmat) but that doesn't do what is documented U<-matrix(nrow=nrow(x),ncol=ncol(x)) index<-match(times[N==1],detail$time) ZmEdN<- matrix(0,nrow=nrow(x),ncol=ncol(x)) ZmEdN[N==1,]<-x[N==1,,drop=FALSE]-E[index,] for(p in 1:ncol(x)){ ZmE <- outer(x[,p],E[,p], "-") ##people are rows, times are columns U[,p]<- ZmEdN[,p]*w(times)- rowSums(ZmE *t(w(detail$time)*dLambda*Y)) } means <- svytotal(U,design) zstat<-coef(means)/SE(means) chisqstat<-coef(means)%*%solve(vcov(means),coef(means)) rval<-list(cbind(score=coef(means),se=SE(means),z=coef(means)/SE(means),p= 2*pnorm(-abs(coef(means)/SE(means)))), c(Chisq=chisqstat,p=pchisq(chisqstat,df=ncol(x),lower.tail=FALSE))) class(rval)<-"svylogrank" rval } .biglogrank<-function(formula, design,rho=0,gamma=0){ nullformula<-update(formula,.~1) S<-svykm(nullformula,design,se=FALSE) epsilon<-min(diff(sort(unique(S$time))))/10 w<-approxfun(S$time+epsilon,S$surv^rho*(1-S$surv)^gamma,method="constant",rule=2) environment(formula)<-environment() coxmodel<-coxph(formula,data=model.frame(design), weights=weights(design,"sampling"),iter.max=0) x<-model.matrix(coxmodel) detail<-coxph.detail(coxmodel) dLambda<-detail$hazard E<-as.matrix(detail$means) N<-coxmodel$y[,"status"] times<-coxmodel$y[,"time"] U<-matrix(nrow=nrow(x),ncol=ncol(x)) index<-match(times[N==1],detail$time) ZmEdN<- matrix(0,nrow=nrow(x),ncol=ncol(x)) ZmEdN[N==1,]<-x[N==1,,drop=FALSE]-E[index,] for(p in 1:ncol(x)){ U[,p]<- ZmEdN[,p]*w(times) for (j in seq_along(detail$time)){ thistime<-detail$time[j] ZmE <- x[,p]-E[j,p] U[,p] <- U[,p] - w(thistime)*ZmE*dLambda[j]*(times>=thistime) } } means <- svytotal(U,design) zstat<-coef(means)/SE(means) chisqstat<-coef(means)%*%solve(vcov(means),coef(means)) rval<-list(data.frame(score=coef(means),se=SE(means),z=coef(means)/SE(means),p= 2*pnorm(-abs(coef(means)/SE(means)))), c(Chisq=chisqstat,p=pchisq(chisqstat,df=ncol(x),lower.tail=FALSE))) class(rval)<-"svylogrank" rval } svylogrank.survey.design2<-function(formula, design,rho=0,gamma=0, method=c("small","large","score"), ...){ method<-match.arg(method) if (method=="small") return(.logrank(formula,design, rho,gamma,...)) else if (method=="large") return(.biglogrank(formula,design,rho,gamma,...)) if (rho!=0 || gamma!=0){ return(expandlogrank(formula,design,rho,gamma,...)) } tms<-delete.response(terms(formula,specials="strata")) findstrat<-untangle.specials(tms,"strata") if(length(findstrat$terms)) tms<-tms[-findstrat$terms] mf<-model.frame(tms,model.frame(design)) if(length(mf)>1) stop("Only one grouping variable allowed") if(!is.factor(mf[[1]]) && length(unique(mf[[1]]))>2) stop("Grouping variable with more than 2 levels must be a factor") b<-coef(svycoxph(formula,design,iter=1)) v<-vcov(svycoxph(formula,design,iter=0)) x2<-sum(b*solve(v,b)) rval<-c(z=b/sqrt(diag(v)), Chisq=x2, p=pchisq(x2,length(b),lower.tail=FALSE)) class(rval)<-"svylogrank" rval } svylogrank.twophase<-svylogrank.survey.design2 svylogrank.twophase2<-svylogrank.survey.design2 svylogrank.DBIsvydesign<-function (formula, design, ...) { design$variables <- dropFactor(getvars(formula, design$db$connection, design$db$tablename, updates = design$updates, subset = design$subset), weights(design)) NextMethod("svylogrank", design) } svylogrank.svyrep.design<-function(formula, design,rho=0,gamma=0,method=c("small","large","score"), ...){ method<-match.arg(method) if (method=="small") return(.logrank(formula,design, rho,gamma,...)) else if (method=="large") return(.biglogrank(formula,design,rho,gamma,...)) if (rho!=0 || gamma!=0){ return(expandlogrank(formula,design,rho,gamma,...)) } tms<-delete.response(terms(formula,specials="strata")) findstrat<-untangle.specials(tms,"strata") if(length(findstrat$terms)) tms<-tms[-findstrat$terms] mf<-model.frame(tms,model.frame(design)) if(length(mf)>1) stop("Only one grouping variable allowed") if(!is.factor(mf[[1]]) && length(unique(mf[[1]]))>2) stop("Grouping variable with more than 2 levels must be a factor") rr<-withReplicates(design, function(w,df){ environment(formula)<-environment() coef(coxph(formula,data=df,weights=w+1e-8,iter=1)) }) b<-unclass(rr) attr(b,"var")<-NULL v<-attr(rr,"var") x2<-sum(b*solve(v,b)) rval<- c(z=b/sqrt(diag(as.matrix(v))), Chisq=x2, p=pchisq(x2,length(b),lower.tail=FALSE)) class(rval)<-"svylogrank" rval } expandlogrank<-function(formula, design, rho=0, gamma=0){ nullformula<-update(formula,.~1) S<-svykm(nullformula,design,se=FALSE) epsilon<-min(diff(sort(unique(S$time))))/10 w<-approxfun(S$time+epsilon,S$surv^rho*(1-S$surv)^gamma,method="constant",rule=2) environment(formula)<-environment() coxmodel<-coxph(formula,data=model.frame(design), weights=weights(design,"sampling"),iter.max=0) mf<-model.frame(design) detail<-coxph.detail(coxmodel) if(attr(coxmodel$y,"type")=="right"){ mf$.time<-coxmodel$y[,"time"] mf$.status<-coxmodel$y[,"status"] mfsplit <- survSplit(mf, cut=detail$time, end=".time", event=".status", start=".start", id=".id", episode=".episode") } else { mf$.start<-coxmodel$y[,"start"] mf$.time<-coxmodel$y[,"stop"] mf$.status<-coxmodel$y[,"status"] mfsplit <- survSplit(mf, cut=detail$time, end=".time", event=".status", start=".start", id=".id", episode=".episode") } formula[[2]]<-quote(Surv(.start,.time,.status)) mfsplit$.weights<-weights(design,"sampling")[match(mfsplit$.id, rownames(mf))]*w(mfsplit$.time) expdesign<-svydesign(ids=eval(design$call$id), strata=eval(design$call$strata), data=mfsplit, weights=~.weights) #svylogrank(formula,expdesign) tms<-delete.response(terms(formula,specials="strata")) findstrat<-untangle.specials(tms,"strata") if(length(findstrat$terms)) tms<-tms[-findstrat$terms] mf<-model.frame(tms,model.frame(expdesign)) if(length(mf)>1) stop("Only one grouping variable allowed") if(!is.factor(mf[[1]]) && length(unique(mf[[1]]))>2) stop("Grouping variable with more than 2 levels must be a factor") b<-coef(svycoxph(formula,expdesign,iter=1)) v<-vcov(svycoxph(formula,expdesign,iter=0)) x2<-sum(b*solve(v,b)) rval<-c(z=b/sqrt(diag(v)), Chisq=x2, p=pchisq(x2,length(b),lower.tail=FALSE)) class(rval)<-"svylogrank" rval } survey/R/DBI.R0000644000176200001440000003130714233634027012541 0ustar liggesusers svydesign.character<-function (ids, probs = NULL, strata = NULL, variables = NULL, fpc = NULL, data, nest = FALSE, check.strata = !nest, weights = NULL,pps=FALSE, calibrate.formula=NULL, dbtype="SQLite", dbname, ...) { if (dbtype == "ODBC"){ message("RODBC support has been removed. Use the 'odbc' package") } else { db<-DBI::dbDriver(dbtype) dbconn<- DBI::dbConnect(db, dbname,...) } design.vars<-c(all.vars(ids), all.vars(probs), all.vars(strata), all.vars(fpc), all.vars(weights)) ## Need at least one variable to find out the data size if (length(design.vars)==0) design.vars<-"1 as _ugly_workaround_" design.query<-paste("select", paste(design.vars,collapse=","), "from", data) design.data<-DBI::dbGetQuery(dbconn, design.query) rval<-svydesign(ids=ids, probs=probs, strata=strata, data=design.data, fpc=fpc, variables=variables, nest=nest,check.strata=check.strata, weights=weights, calibrate.formula=calibrate.formula) rval$db<-list(dbname=dbname, tablename=data, connection=dbconn, dbtype=dbtype) rval$variables<-NULL rval$call<-sys.call(-1) class(rval)<-c("DBIsvydesign",class(rval)) rval } print.DBIsvydesign<-function(x,...){ cat("DB-backed ") NextMethod() if (!checkConnection(x$db$connection, error=FALSE)) cat("\n") invisible(x) } summary.DBIsvydesign<-function(object,...){ class(object)<-c("summary.DBIsvydesign",class(object)) object } print.summary.DBIsvydesign<-function(x,...){ print.survey.design2(x,varnames=TRUE,design.summaries=TRUE,...) invisible(x) } close.DBIsvydesign<-function(con,...){ DBI::dbDisconnect(con$db$connection,...) invisible(con) } open.DBIsvydesign<-function(con,...){ db<-DBI::dbDriver(con$db$dbtype) con$db$connection<-DBI::dbConnect(db, dbname=con$db$dbname,...) con } svymean.DBIsvydesign<-function(x, design,...){ design$variables<-getvars(x, design$db$connection, design$db$tablename,updates=design$updates, subset=design$subset) NextMethod("svymean",design) } svytotal.DBIsvydesign<-function(x, design,na.rm=FALSE,...){ design$variables<-getvars(x, design$db$connection, design$db$tablename,updates=design$updates, subset=design$subset) NextMethod("svytotal",design) } svyquantile.DBIsvydesign<-function(x, design,quantiles,...){ design$variables<-getvars(x, design$db$connection, design$db$tablename,updates=design$updates, subset=design$subset) NextMethod("svyquantile",design) } oldsvyquantile.DBIsvydesign<-function(x, design,quantiles,...){ design$variables<-getvars(x, design$db$connection, design$db$tablename,updates=design$updates, subset=design$subset) NextMethod("svyquantile",design) } dropFactor<-function(mf, w){ if(!any(w==0)) return(mf) dropped<-w==0 for(i in 1:ncol(mf)) { if (is.factor(mf[[i]])){ fi<-mf[[i]] if (all(dropped[fi==levels(fi)[1]])){ tt<-table(fi[!dropped]) l<-min(which(tt>0)) levs<-levels(fi) mf[[i]]<-relevel(mf[[i]],ref=levs[l]) } } } mf } svyglm.DBIsvydesign<-function(formula, design,...){ design$variables<-dropFactor(getvars(formula, design$db$connection, design$db$tablename,updates=design$updates, subset=design$subset), weights(design)) NextMethod("svyglm",design) } svyplot.DBIsvydesign<-function(formula,design,...){ design$variables<-getvars(formula, design$db$connection, design$db$tablename,updates=design$updates, subset=design$subset) design$variables[weights(design)==0,]<-NA NextMethod("svyplot",design) } svycoplot.DBIsvydesign<-function(formula,design, style=c("hexbin","transparent"), basecol="black",alpha=c(0,0.8),hexscale=c("relative","absolute"),...){ design$variables<-getvars(formula, design$db$connection, design$db$tablename, updates=design$updates, subset=design$subset) design$variables[weights(design)==0,]<-NA NextMethod("svycoplot",design) } svyboxplot.DBIsvydesign<-function(formula,design, ...){ design$variables<-getvars(formula, design$db$connection, design$db$tablename,updates=design$updates, subset=design$subset) design$variables[weights(design)==0,]<-NA class(design)<-setdiff(class(design),"DBIsvydesign") svyboxplot(formula,design,...) } svycdf.DBIsvydesign<-function(formula,design, na.rm=TRUE, ...){ design$variables<-getvars(formula, design$db$connection, design$db$tablename,updates=design$updates, subset=design$subset) NextMethod("svycdf",design) } svyolr.DBIsvydesign<-function(formula,design,...){ design$variables<-dropFactor(getvars(formula, design$db$connection, design$db$tablename,updates=design$updates, subset=design$subset), weights(design)) NextMethod("svyolr",design) } svycoxph.DBIsvydesign<-function(formula,design,...){ design$variables<-dropFactor(getvars(formula, design$db$connection, design$db$tablename,updates=design$updates), weights(design)) NextMethod("svycoxph",design) } svyvar.DBIsvydesign<-function(x,design,na.rm=FALSE,...){ design$variables<-getvars(x, design$db$connection, design$db$tablename,updates=design$updates, subset=design$subset) NextMethod("svyvar",design) } svykm.DBIsvydesign<-function(formula,design,...){ design$variables<-getvars(formula, design$db$connection, design$db$tablename,updates=design$updates, subset=design$subset) NextMethod("svykm",design) } svykappa.DBIsvydesign<-function(formula,design,...){ design$variables<-getvars(formula, design$db$connection, design$db$tablename,updates=design$updates, subset=design$subset) NextMethod("svykappa",design) } svysmooth.DBIsvydesign<-function(formula,design,method=c("locpoly","quantreg"),bandwidth,quantile,df,...){ design$variables<-getvars(formula, design$db$connection, design$db$tablename,updates=design$updates, subset=design$subset) NextMethod("svysmooth",design) } svychisq.DBIsvydesign<-function(formula,design,...){ design$variables<-getvars(formula, design$db$connection, design$db$tablename,updates=design$updates, subset=design$subset) NextMethod("svychisq",design) } svyranktest.DBIsvydesign<-function(formula,design,...){ design$variables<-getvars(formula, design$db$connection, design$db$tablename,updates=design$updates, subset=design$subset) NextMethod("svyranktest",design) } svyratio.DBIsvydesign<-function(numerator, denominator, design,...){ design$variables<-cbind(getvars(numerator,design$db$connection, design$db$tablename,updates=design$updates, subset=design$subset), getvars(denominator,design$db$connection, design$db$tablename,updates=design$updates, subset=design$subset)) NextMethod("svyratio",design) } svyby.DBIsvydesign<-function(formula, by, design,...){ design$variables<-cbind(getvars(formula,design$db$connection, design$db$tablename,updates=design$updates, subset=design$subset), getvars(by,design$db$connection, design$db$tablename,updates=design$updates, subset=design$subset)) class(design)<-setdiff(class(design),"DBIsvydesign") svyby(formula,by,design,...) } svytable.DBIsvydesign<-function(formula,design,...){ design$variables<-getvars(formula, design$db$connection, design$db$tablename,updates=design$updates, subset=design$subset) NextMethod("svytable",design) } calibrate.DBIsvydesign<-function(design,formula,...){ design$variables<-getvars(formula, design$db$connection, design$db$tablename,updates=design$updates, subset=design$subset) NextMethod("calibrate",design) } postStratify.DBIsvydesign<-function(design, strata, population, partial = FALSE, ...) .NotYetImplemented() subset.DBIsvydesign<-function (x, subset, ...) { e <- substitute(subset) x$variables<-getvars(make.formula(all.vars(e)), x$db$connection, x$db$tablename,updates=x$updates, subset=x$subset) r <- eval(e, x$variables, parent.frame()) r <- r & !is.na(r) x <- x[r, ] x$call <- sys.call(-1) x } dim.DBIsvydesign<-function(x){ w<-weights(x) nrow <- length(w) #need dim to report honest matrix size, so not: nrow<-sum(w!=0) coln<-names(DBI::dbGetQuery(x$db$conn, paste("select * from", x$db$tablename, "limit 1"))) if (!is.null(x$updates)){ update.names<-do.call(c, lapply(x$updates, names)) ncol<-length(unique(c(coln,update.names))) } else ncol<-length(coln) c(nrow,ncol) } dim.DBIrepdesign<-function(x){ if (is.null(x$subset)) nrow <-nrow(x$repweights) else nrow<-length(x$subset) coln<-names(DBI::dbGetQuery(x$db$conn, paste("select * from", x$db$tablename, "limit 1"))) if (!is.null(x$updates)){ update.names<-do.call(c, lapply(x$updates, names)) ncol<-length(unique(c(coln,update.names))) } else ncol<-length(coln) c(nrow,ncol) } dimnames.DBIsvydesign<-function(x){ rown<-rownames(x$cluster)[weights(x)!=0] coln<-names(DBI::dbGetQuery(x$db$conn, paste("select * from", x$db$tablename, "limit 1"))) if (!is.null(x$updates)){ update.names<-do.call(c, lapply(x$updates, names)) coln<-unique(c(coln,update.names)) } list(rown,coln) } dimnames.DBIrepdesign<-function(x){ if (is.null(x$subset)) rown<-rownames(x$cluster) else rown<-rownames(x$cluster)[x$subset] coln<-names(DBI::dbGetQuery(x$db$conn, paste("select * from", x$db$tablename, "limit 1"))) if (!is.null(x$updates)){ update.names<-do.call(c, lapply(x$updates, names)) coln<-unique(c(coln,update.names)) } list(rown,coln) } "[.DBIsvydesign"<-function (x, i, ..., drop = TRUE) { if (!missing(i)) { if (is.logical(i)) x$prob[!i] <- Inf else if (is.numeric(i) && length(i)) x$prob[-i] <- Inf else { tmp <- x$prob[i, ] x$prob <- rep(Inf, length(x$prob)) x$prob[i, ] <- tmp } index <- is.finite(x$prob) psu <- !duplicated(x$cluster[index, 1]) tt <- table(x$strata[index, 1][psu]) if (any(tt == 1)) { warning(sum(tt == 1), " strata have only one PSU in this subset.") } } else { if (!is.null(x$variables)) x$variables <- x$variables[, ..1, drop = FALSE] } x } "[.DBIrepdesign"<-function (x, i, j, drop = FALSE) { if (!missing(i)) { pwt <- x$pweights if (is.data.frame(pwt)) pwt <- pwt[[1]] x$pweights <- pwt[i] x$repweights <- x$repweights[i, , drop = FALSE] if (!is.null(x$selfrep)) x$selfrep <- x$selfrep[i] if (is.null(x$subset)) x$subset<-(1:nrow(x$variables))[i] else x$subset<-x$subset[i] if (!missing(j)) x$variables <- x$variables[i, j, drop = FALSE] else x$variables <- x$variables[i, , drop = FALSE] x$degf <- NULL x$degf <- degf(x) } else { x$variables <- x$variables[, j, drop = FALSE] } x } svrepdesign.character<-function (variables=NULL,repweights=NULL, weights=NULL, data=NULL,type=c("BRR","Fay","JK1", "JKn","bootstrap","ACS","successive-difference","JK2","other"), combined.weights=TRUE, rho=NULL, bootstrap.average=NULL, scale=NULL,rscales=NULL,fpc=NULL, fpctype=c("fraction","correction"), mse=getOption("survey.replicates.mse"),dbtype="SQLite", dbname, ...) { if (dbtype == "ODBC"){ stop("'RODBC' no longer supported. Use the odbc package") } else { db<-DBI::dbDriver(dbtype) dbconn<- DBI::dbConnect(db, dbname,...) } if (is.character(repweights)){ allvars<-names(DBI::dbGetQuery(dbconn, paste("select * from",data,"limit 1"))) design.vars<-c(all.vars(weights),grep(repweights,allvars,value=TRUE)) } else { design.vars<-c(all.vars(weights),all.vars(repweights)) } design.query<-paste("select", paste(design.vars,collapse=","), "from", data) design.data<-DBI::dbGetQuery(dbconn, design.query) rval<-svrepdesign(variables=variables,repweights=repweights, weights=weights, type=type, data=design.data, combined.weights=combined.weights, rho=rho, bootstrap.average=NULL, scale=scale,rscales=rscales,fpc=fpc, fpctype=c("fraction","correction"), mse=mse) rval$db<-list(dbname=dbname, tablename=data, connection=dbconn, dbtype=dbtype) rval$variables<-NULL rval$call<-sys.call(-1) class(rval)<-c("DBIrepdesign","DBIsvydesign",class(rval)) rval } print.DBIrepdesign<-function(x,...){ cat("DB-backed replicate weight design\n") print.svyrep.design(x,...) if (!checkConnection(x$db$connection, error=FALSE)) cat("\n") invisible(x) } summary.DBIrepdesign<-function(object,...){ summary.svyrep.design(object,...) } survey/R/svysurvreg.R0000644000176200001440000000521713101467340014376 0ustar liggesuserssvysurvreg<-function (formula, design, weights=NULL, subset = NULL, ...) { UseMethod("svysurvreg", design) } residuals.svysurvreg<-function(object, type = c("response", "deviance", "dfbeta", "dfbetas", "working", "ldcase", "ldresp", "ldshape", "matrix"), rsigma = TRUE, collapse = FALSE, weighted = TRUE, ...) { NextMethod() } svysurvreg.survey.design<- function (formula, design, weights=NULL, subset=NULL, ...) { subset <- substitute(subset) subset <- eval(subset, model.frame(design), parent.frame()) if (!is.null(subset)) design <- design[subset, ] if (any(weights(design) < 0)) stop("weights must be non-negative") data <- model.frame(design) g <- match.call() g$formula <- eval.parent(g$formula) g$design <- NULL g$var <- NULL if (is.null(g$weights)) g$weights <- quote(.survey.prob.weights) else g$weights <- bquote(.survey.prob.weights * .(g$weights)) g[[1]] <- quote(survreg) g$data <- quote(data) g$subset <- quote(.survey.prob.weights > 0) g$model <- TRUE data$.survey.prob.weights <- (1/design$prob)/mean(1/design$prob) if (!all(all.vars(formula) %in% names(data))) stop("all variables must be in design= argument") g <- with(list(data = data), eval(g)) g$call <- match.call() g$call[[1]] <- as.name(.Generic) g$printcall <- sys.call(-1) g$printcall[[1]] <- as.name(.Generic) class(g) <- c("svysurvreg", class(g)) g$survey.design <- design nas <- g$na.action if (length(nas)) design <- design[-nas, ] dbeta.subset <- resid(g, "dfbeta", weighted = TRUE) if (nrow(design) == NROW(dbeta.subset)) { dbeta <- as.matrix(dbeta.subset) } else { dbeta <- matrix(0, ncol = NCOL(dbeta.subset), nrow = nrow(design)) dbeta[is.finite(design$prob), ] <- dbeta.subset } g$inv.info <- g$var if (inherits(design, "survey.design2")) g$var <- svyrecvar(dbeta, design$cluster, design$strata, design$fpc, postStrata = design$postStrata) else if (inherits(design, "twophase")) g$var <- twophasevar(dbeta, design) else if (inherits(design, "twophase2")) g$var <- twophase2var(dbeta, design) else if (inherits(design, "pps")) g$var <- ppsvar(dbeta, design) else g$var <- svyCprod(dbeta, design$strata, design$cluster[[1]], design$fpc, design$nPSU, design$certainty, design$postStrata) g$ll <- g$loglik g$loglik <- NA g$degf.resid <- degf(design) - length(coef(g)[!is.na(coef(g))]) + 1 g } survey/R/anova.svyglm.R0000644000176200001440000003076114221463056014571 0ustar liggesusers oneanova.svyglm<-function(object,test,method){ tt<-terms(object) tlbls<-attr(tt,"term.labels") nt<-length(tlbls) if (nt<2) return(NULL) seqtests<-vector("list",nt) if(test=="F") ddf<-NULL else ddf<-Inf thismodel<-object if (!("formula") %in% names(thismodel$call)) names(thismodel$call)[[2]] <- "formula" for(i in nt:1){ thisterm<-tlbls[i] seqtests[[i]]<-regTermTest(thismodel,tlbls[i],method=method,df=ddf) thisformula<-make.formula(thisterm)[[2]] thismodel <- eval(bquote(update(thismodel, . ~ . - (.(thisformula))))) } class(seqtests)<-"seqanova.svyglm" attr(seqtests,"method")<-method attr(seqtests,"test")<-test seqtests } oneanova.svycoxph<-function(object,test,method){ tt<-terms(object) tlbls<-attr(tt,"term.labels") nt<-length(tlbls) if (nt<2) return(NULL) seqtests<-vector("list",nt) if(test=="F") ddf<-NULL else ddf<-Inf thismodel<-object if (!("formula") %in% names(thismodel$call)) names(thismodel$call)[[2]] <- "formula" for(i in nt:1){ thisterm<-tlbls[i] seqtests[[i]]<-regTermTest(thismodel,tlbls[i],method=method,df=ddf) thisformula<-make.formula(thisterm)[[2]] thismodel <- eval(bquote(update(thismodel, . ~ . - (.(thisformula))))) } class(seqtests)<-"seqanova.svycoxph" attr(seqtests,"method")<-method attr(seqtests,"test")<-test seqtests } print.seqanova.svyglm<-function(x,...){ isWald<-attr(x,"method")=="Wald" isF<-attr(x,"test")=="F" cat("Anova table: ") if (isWald) cat("(Wald tests)\n") else cat(" (Rao-Scott LRT)\n") print(x[[1]]$mcall) terms<-sapply(x,"[[","test.terms") stats<-if(isF && isWald) sapply(x,"[[","Ftest") else sapply(x,"[[","chisq") if(!isWald) stats<-cbind(stats,DEff=sapply(x,function(xi) mean(xi$lambda))) df<-sapply(x,"[[","df") p<-sapply(x,"[[","p") if (!isF){ rval<-cbind(stats,df,p) } else { ddf<-sapply(x,"[[","ddf") rval<-cbind(stats,df,ddf,p) } rownames(rval)<-terms printCoefmat(rval,tst.ind=1,zap.ind=2:3,has.Pvalue=TRUE) invisible(x) } print.seqanova.svycoxph<-function(x,...){ isWald<-attr(x,"method")=="Wald" isF<-attr(x,"test")=="F" cat("Anova table: ") if (isWald) cat("(Wald tests)\n") else cat(" (Rao-Scott LRT)\n") print(x[[1]]$mcall) terms<-sapply(x,"[[","test.terms") stats<-if(isF && isWald) sapply(x,"[[","Ftest") else sapply(x,"[[","chisq") if(!isWald) stats<-cbind(stats,DEff=sapply(x,function(xi) mean(xi$lambda))) df<-sapply(x,"[[","df") p<-sapply(x,"[[","p") if (!isF){ rval<-cbind(stats,df,p) } else { ddf<-sapply(x,"[[","ddf") rval<-cbind(stats,df,ddf,p) } rownames(rval)<-terms printCoefmat(rval,tst.ind=1,zap.ind=2:3,has.Pvalue=TRUE) invisible(x) } SD<-function(x) if (NCOL(x)>1) apply(x,2,sd) else sd(x) anova.svyglm<-function(object, object2=NULL,test=c("F","Chisq"),method=c("LRT","Wald"),tolerance=1e-5,...,force=FALSE){ test<-match.arg(test) method<-match.arg(method) if(is.null(object2)) ## sequential tests return(oneanova.svyglm(object,test,method)) t1<-attr(terms(object),"term.labels") t2<-attr(terms(object2),"term.labels") if ((all(t1 %in% t2) || all(t2 %in% t1)) && !force){ ## symbolically nested, call regTermTest biggerobject<-if(all(t1 %in% t2)) object2 else object termdiff<-make.formula(if(all(t1 %in% t2)) setdiff(t2,t1) else setdiff(t1,t2)) if(test=="F") ddf<-NULL else ddf<-Inf return(regTermTest(biggerobject,termdiff,df=ddf,method=method)) } ## not symbolically nested, need to project explicitly X<-model.matrix(object) Z<-model.matrix(object2) if (nrow(X)!=nrow(Z)) stop("models have different numbers of observations") if (ncol(X)>ncol(Z)) { tmp<-X X<-Z Z<-tmp bigger<-1 } else bigger<-2 if (any(sapply(suppressWarnings(summary(lm(X~Z))), "[[","sigma")/(tolerance+SD(X))>tolerance)) stop("models not nested") XX<-matrix(nrow=nrow(Z),ncol=ncol(Z)) xform<-lm(Z[,1]~X+0) XX[,1]<-resid(xform) for(i in 2:ncol(Z)){ XX[,i]<-resid(xform<-lm(Z[,i]~X+Z[,1:(i-1)]+0)) } colkeep<-colMeans(abs(XX))/(tolerance+colMeans(abs(Z))) > tolerance XX<-XX[,colkeep,drop=FALSE] index<-ncol(X)+(1:ncol(XX)) ## and now need to refit the model ## ugly, but svyglm demands that all variables are in the design argument. ## We do know the fitted values at convergence, so one iteration suffices. mu<-if(bigger==1) fitted(object) else fitted(object2) eta<-if(bigger==1) object$linear.predictors else object2$linear.predictors offset<-if(bigger==1) object$offset else object2$offset if (is.null(offset)) offset<-0 pweights<-weights(object$survey.design,"sampling") y<-object$y if (length(pweights)!=length(y)){ pweights<-pweights[pweights>0] if (length(pweights)!=length(y)) stop("number of observations does not match design") } pweights<-pweights/mean(pweights) ywork<-eta-offset+(y-mu)/object$family$mu.eta(eta) wwork<-((pweights * object$family$mu.eta(eta)^2)/object$family$variance(mu)) wlm<-lm.wfit(cbind(X,XX),ywork,wwork) p1<-1:wlm$rank Ainv<-chol2inv(wlm$qr$qr[p1,p1,drop=FALSE]) estfun<-cbind(X,XX)*wwork*((y-mu)/object$family$mu.eta(eta)) design<-object$survey.design if (inherits(design, "survey.design2")) V<-svyrecvar(estfun %*% Ainv, design$cluster, design$strata, design$fpc, postStrata = design$postStrata) else if (inherits(design, "twophase")) V<-twophasevar(estfun %*% Ainv, design) else if (inherits(design, "twophase2")) V<-twophase2var(estfun %*% Ainv, design) else if (inherits(design, "pps")) V<-ppsvar(estfun %*% Ainv, design) else if (inherits(design, "svyrep.design")){ V<-vcov(svymean(estfun%*% Ainv/pweights, design))*length(pweights)^2 } else stop("not implemented for this type of design") V<-V[index,index] df<-min(object$df.residual, object2$df.residual) if(method=="LRT"){ V0<-Ainv[index,index] chisq <- if(bigger==1) deviance(object2) - deviance(object) else deviance(object)-deviance(object2) misspec <- eigen(solve(V0) %*% V, only.values = TRUE)$values if (test=="Chisq") p <- pchisqsum(chisq, rep(1, length(misspec)), misspec, method = "sad", lower.tail = FALSE) else p <- pFsum(chisq, rep(1, length(misspec)), misspec, ddf = df, method = "sad", lower.tail = FALSE) rval <- list(call = sys.call(), chisq = chisq, df = length(index), p = p, lambda = misspec, ddf = df, mcall=if(bigger==1) object$call else object2$call, test.terms=if(bigger==1) c(setdiff(t1,t2),"-",setdiff(t2,t1)) else c(setdiff(t2,t1),"-",setdiff(t1,t2)) ) class(rval)<-"regTermTestLRT" } else { ## method=Wald beta<- wlm$coefficients[index] chisq<-crossprod(beta,solve(V,beta)) if (test=="Chisq"){ p<-pchisq(chisq,df=length(index),lower.tail=FALSE) } else { p<-pf(chisq/length(index),df1=length(index),df2=df,lower.tail=FALSE) } rval <- list(call = sys.call(), Ftest = chisq/length(index), df = length(index), p = p, ddf = df, mcall=if(bigger==1) object$call else object2$call, test.terms=if(bigger==1) c(setdiff(t1,t2),"-",setdiff(t2,t1)) else c(setdiff(t2,t1),"-",setdiff(t1,t2)) ) class(rval)<-"regTermTest" } rval } get_cox_strata<-function(object){ t<-untangle.specials(terms(object),"strata", order=1) if (length(t$vars)==0) return(NULL) m<-model.frame(object) strata(m[t$vars], shortlabel = TRUE) } anova.svycoxph<-function(object, object2=NULL,test=c("F","Chisq"),method=c("LRT","Wald"),tolerance=1e-5,...,force=FALSE){ test<-match.arg(test) method<-match.arg(method) if(is.null(object2)) ## sequential tests return(oneanova.svycoxph(object,test,method)) t1<-attr(terms(object),"term.labels") t2<-attr(terms(object2),"term.labels") if ((all(t1 %in% t2) || all(t2 %in% t1)) && !force){ ## symbolically nested, call regTermTest biggerobject<-if(all(t1 %in% t2)) object2 else object termdiff<-make.formula(if(all(t1 %in% t2)) setdiff(t2,t1) else setdiff(t1,t2)) if(test=="F") ddf<-NULL else ddf<-Inf return(regTermTest(biggerobject,termdiff,df=ddf,method=method)) } ## not symbolically nested, need to project explicitly X<-model.matrix(object) Z<-model.matrix(object2) if (nrow(X)!=nrow(Z)) stop("models have different numbers of observations") if (ncol(X)>ncol(Z)) { tmp<-X X<-Z Z<-tmp bigger<-1 } else bigger<-2 if (any(sapply(suppressWarnings(summary(lm(X~Z))), "[[","sigma")/(tolerance+SD(X))>tolerance)) stop("models not nested") XX<-matrix(nrow=nrow(Z),ncol=ncol(Z)) xform<-lm(Z[,1]~X) XX[,1]<-resid(xform) for(i in 2:ncol(Z)){ XX[,i]<-resid(xform<-lm(Z[,i]~X+Z[,1:(i-1)])) } colnames(XX)<-paste0("_X_",colnames(Z)) colkeep<-colMeans(abs(XX))/(tolerance+colMeans(abs(Z))) > tolerance XX<-XX[,colkeep,drop=FALSE] index<-ncol(X)+(1:ncol(XX)) ## and now need to refit the model ## ugly, but svycoxph demands that all variables are in the design argument. ### FIXME pweights<-weights(object$survey.design,"sampling") y<-object$y if (length(pweights)!=length(y)){ pweights<-pweights[pweights>0] if (length(pweights)!=length(y)) stop("number of observations does not match design") } pweights<-pweights/mean(pweights) beta<-if(bigger==1) coef(object2) else coef(object) coxstrat<-get_cox_strata(object) coxstrat2<-get_cox_strata(object2) offs<-if(bigger==1) object$offset else object2$offset if (length(offs)==0) offs<-NULL else stop("models with offset not yet implemented") if(!all(coxstrat==coxstrat2)) stop("Cox model strata must match") refit1<-coxph.fit(cbind(X,XX),y,coxstrat, offs, init=c(beta,rep(0,NCOL(XX))), control=coxph.control(),weights=pweights,method=object$method, rownames=names(resid(object)),resid=TRUE) refit<-if(bigger==1) object else object2 refit[names(refit1)]<-refit1 design<-object$survey.design Ainv<- if(is.null(refit$naive.var)) refit$var else refit$naive.var dbeta.subset <- resid(refit, "dfbeta", weighted = TRUE) if (nrow(design) == NROW(dbeta.subset)) { estfun <- as.matrix(dbeta.subset) } else { estfun <- matrix(0, ncol = NCOL(dbeta.subset), nrow = nrow(design)) estfun[is.finite(design$prob), ] <- dbeta.subset } if (inherits(design, "survey.design2")) V<-svyrecvar(estfun, design$cluster, design$strata, design$fpc, postStrata = design$postStrata) else if (inherits(design, "twophase")) V<-twophasevar(estfun, design) else if (inherits(design, "twophase2")) V<-twophase2var(estfun , design) else if (inherits(design, "pps")) V<-ppsvar(estfun , design) else if (inherits(design, "svyrep.design")){ V<-vcov(svymean(estfun/pweights, design))*length(pweights)^2 } else stop("not implemented for this type of design") V<-V[index,index] df<-min(object$degf.resid, object2$degf.resid) deviance.coxph<-function(object,...) -2*object$loglik[2] if(method=="LRT"){ V0<-Ainv[index,index] chisq <- if(bigger==1) deviance(object2) - deviance(object) else deviance(object)-deviance(object2) misspec <- eigen(solve(V0) %*% V, only.values = TRUE)$values if (test=="Chisq") p <- pchisqsum(chisq, rep(1, length(misspec)), misspec, method = "sad", lower.tail = FALSE) else p <- pFsum(chisq, rep(1, length(misspec)), misspec, ddf = df, method = "sad", lower.tail = FALSE) rval <- list(call = sys.call(), chisq = chisq, df = length(index), p = p, lambda = misspec, ddf = df, mcall=if(bigger==1) object$call else object2$call, test.terms=if(bigger==1) c(setdiff(t1,t2),"-",setdiff(t2,t1)) else c(setdiff(t2,t1),"-",setdiff(t1,t2)) ) class(rval)<-"regTermTestLRT" } else { ## method=Wald beta<- refit$coefficients[index] chisq<-crossprod(beta,solve(V,beta)) if (test=="Chisq"){ p<-pchisq(chisq,df=length(index),lower.tail=FALSE) } else { p<-pf(chisq/length(index),df1=length(index),df2=df,lower.tail=FALSE) } rval <- list(call = sys.call(), Ftest = chisq/length(index), df = length(index), p = p, ddf = df, mcall=if(bigger==1) object$call else object2$call, test.terms=if(bigger==1) c(setdiff(t1,t2),"-",setdiff(t2,t1)) else c(setdiff(t2,t1),"-",setdiff(t1,t2)) ) class(rval)<-"regTermTest" } rval } survey/R/sysdata.rda0000644000176200001440000000073214424312436014155 0ustar liggesusersBZh91AY&SYw3XP@6f@ fQ@4 @?Ti 4h@diJEBm 6jPfl@$ꩵvF)${ JА8RݝXs,Yʐd !2 dDO)CNp6޹+? 3Z1a7 a9^^0UeFTSRPZ陂297w:E)aU%9qf\ֈ-neխ>MLxֶ lJ mZ-񮲻iUJ+hւpB, eCmS2Ӆ4wrĥh )X[łEJRŲTYDZ, 6ٍY$XZ3&P VO;; m)NO_?ްzidq$ H "Osurvey/R/surveychisq.R0000755000176200001440000004137414233634027014540 0ustar liggesusers## ## Tests for contingency tables ## svychisq<-function(formula, design,...) UseMethod("svychisq",design) svychisq.survey.design<-function(formula, design, statistic=c("F","Chisq","Wald","adjWald","lincom","saddlepoint","wls-score"), na.rm=TRUE,...){ if (ncol(attr(terms(formula),"factors"))>2) stop("Only 2-way tables at the moment") statistic<-match.arg(statistic) if (statistic=="wls-score") return(svychisqzero(formula,design,na.rm=na.rm)) rows<-formula[[2]][[2]] cols<-formula[[2]][[3]] rowvar<-unique(design$variables[,as.character(rows)]) colvar<-unique(design$variables[,as.character(cols)]) returnNA<-FALSE if ((any(is.na(rowvar),is.na(colvar)))){ rowvar<-na.omit(rowvar) colvar<-na.omit(colvar) returnNA<-!na.rm } nr<-length(rowvar) nc<-length(colvar) fsat<-eval(bquote(~interaction(factor(.(rows)),factor(.(cols)))-1)) mm<-model.matrix(fsat,model.frame(fsat, design$variables,na.action=na.pass)) N<-nrow(mm) nu <- length(unique(design$cluster[,1]))-length(unique(design$strata[,1])) pearson<- suppressWarnings(chisq.test(svytable(formula,design,Ntotal=N), correct=FALSE)) mf1<-expand.grid(rows=1:nr,cols=1:nc) X1<-model.matrix(~factor(rows)+factor(cols),mf1) X12<-model.matrix(~factor(rows)*factor(cols),mf1) if(statistic %in% c("Wald", "adjWald")){ frow<-eval(bquote(~factor(.(rows))-1)) fcol<-eval(bquote(~factor(.(cols))-1)) mr<-model.matrix(frow, model.frame(frow,design$variables, na.action=na.pass)) mc<-model.matrix(fcol, model.frame(fcol,design$variables, na.action=na.pass)) one<-rep(1,NROW(mc)) cells<-svytotal(~mm+mr+mc+one,design,na.rm=TRUE) Jcb <- cbind(diag(nr*nc), -outer(mf1$rows,1:nr,"==")*rep(cells[(nr*nc)+nr+1:nc]/cells[(nr*nc)+nr+nc+1],each=nr), -outer(mf1$cols,1:nc,"==")*cells[(nr*nc)+1:nr]/cells[(nr*nc)+nr+nc+1], as.vector(outer(cells[(nr*nc)+1:nr],cells[(nr*nc+nr)+1:nc])/cells[(nr*nc)+nr+nc+1]^2)) Y<-cells[1:(nc*nr)]-as.vector(outer(cells[(nr*nc)+1:nr],cells[(nr*nc+nr)+1:nc]))/cells[(nr*nc)+nr+nc+1] V<-Jcb%*%attr(cells,"var")%*%t(Jcb) use<-as.vector(matrix(1:(nr*nc),nrow=nr,ncol=nc)[-1,-1]) waldstat<-Y[use]%*%solve(V[use,use],Y[use]) if (statistic=="Wald"){ waldstat<-waldstat/((nc-1)*(nr-1)) numdf<-(nc-1)*(nr-1) denomdf<-nu } else { numdf<-(nr-1)*(nc-1) denomdf<-(nu-numdf+1) waldstat <- waldstat*denomdf/(numdf*nu) } if (returnNA){ pearson$statistic<-NA pearson$parameter<-c(ndf=numdf,ddf=denomdf) pearson$p.value<-NA attr(pearson$statistic,"names")<-"F" pearson$data.name<-deparse(sys.call(-1)) pearson$method<-"Design-based Wald test of association" } else { pearson$statistic<-waldstat pearson$parameter<-c(ndf=numdf,ddf=denomdf) pearson$p.value<-pf(pearson$statistic, numdf, denomdf, lower.tail=FALSE) attr(pearson$statistic,"names")<-"F" pearson$data.name<-deparse(sys.call(-1)) pearson$method<-"Design-based Wald test of association" } return(pearson) } mean2<-svymean(mm,design,na.rm=TRUE) Cmat<-qr.resid(qr(X1),X12[,-(1:(nr+nc-1)),drop=FALSE]) Dmat <- diag(mean2) iDmat<- diag(ifelse(mean2==0,0,1/mean2)) Vsrs <- (Dmat - outer(mean2,mean2))/N V <- attr(mean2,"var") denom<- t(Cmat) %*% (iDmat/N) %*% Cmat numr<-t(Cmat)%*% iDmat %*% V %*% iDmat %*% Cmat Delta<-solve(denom,numr) d0<- sum(diag(Delta))^2/(sum(diag(Delta%*%Delta))) warn<-options(warn=-1) ## turn off the small-cell count warning. pearson<- chisq.test(svytable(formula,design,Ntotal=N), correct=FALSE) options(warn) if (match.arg(statistic)=="F"){ pearson$statistic<-pearson$statistic/sum(diag(Delta)) pearson$p.value<-pf(pearson$statistic, d0, d0*nu, lower.tail=FALSE) attr(pearson$statistic,"names")<-"F" pearson$parameter<-c(ndf=d0,ddf=d0*nu) pearson$method<-"Pearson's X^2: Rao & Scott adjustment" } else if (match.arg(statistic)=="lincom") { pearson$p.value<-pFsum(pearson$statistic, rep(1,ncol(Delta)), eigen(Delta,only.values=TRUE)$values, lower.tail=FALSE,method="integration",ddf=d0*nu) pearson$parameter<-NULL pearson$method<-"Pearson's X^2: asymptotic exact distribution" } else if (match.arg(statistic)=="saddlepoint") { pearson$p.value<-pFsum(pearson$statistic, rep(1,ncol(Delta)), eigen(Delta,only.values=TRUE)$values, lower.tail=FALSE,method="saddlepoint",ddf=d0*nu) pearson$parameter<-NULL pearson$method<-"Pearson's X^2: saddlepoint approximation" } else{ pearson$p.value<-pchisq(pearson$statistic/mean(diag(Delta)), df=NCOL(Delta),lower.tail=FALSE) pearson$parameter<-c(df=NCOL(Delta)) pearson$method<-"Pearson's X^2: Rao & Scott adjustment" } if (returnNA){ pearson$statistic<-NA pearson$p.value<-NA } pearson$data.name<-deparse(sys.call(-1)) pearson } svychisq.twophase<-function(formula, design, statistic=c("F","Chisq","Wald","adjWald","lincom","saddlepoint"), na.rm=TRUE,...){ if (ncol(attr(terms(formula),"factors"))>2) stop("Only 2-way tables at the moment") statistic<-match.arg(statistic) ##if(!is.null(design$postStrata)) ## warning("Post-stratification not implemented") rows<-formula[[2]][[2]] cols<-formula[[2]][[3]] dat<-design$phase1$sample$variables rowvar<-unique(dat[,as.character(rows)]) colvar<-unique(dat[,as.character(cols)]) returnNA<-FALSE if ((any(is.na(rowvar),is.na(colvar)))){ rowvar<-na.omit(rowvar) colvar<-na.omit(colvar) returnNA<-!na.rm } nr<-length(rowvar) nc<-length(colvar) fsat<-eval(bquote(~interaction(factor(.(rows)),factor(.(cols)))-1)) mm<-model.matrix(fsat,model.frame(fsat, dat,na.action=na.pass)) N<-nrow(mm) nu <- length(unique(design$phase2$cluster[,1]))-length(unique(design$phase2$strata[,1])) pearson<- suppressWarnings(chisq.test(svytable(formula,design,Ntotal=N), correct=FALSE)) mf1<-expand.grid(rows=1:nr,cols=1:nc) X1<-model.matrix(~factor(rows)+factor(cols),mf1) X12<-model.matrix(~factor(rows)*factor(cols),mf1) if(statistic %in% c("Wald", "adjWald")){ frow<-eval(bquote(~factor(.(rows))-1)) fcol<-eval(bquote(~factor(.(cols))-1)) mr<-model.matrix(frow, model.frame(frow,dat, na.action=na.pass)) mc<-model.matrix(fcol, model.frame(fcol,dat, na.action=na.pass)) one<-rep(1,NROW(mc)) cells<-svytotal(~mm+mr+mc+one,design,na.rm=TRUE) Jcb <- cbind(diag(nr*nc), -outer(mf1$rows,1:nr,"==")*rep(cells[(nr*nc)+nr+1:nc]/cells[(nr*nc)+nr+nc+1],each=nr), -outer(mf1$cols,1:nc,"==")*cells[(nr*nc)+1:nr]/cells[(nr*nc)+nr+nc+1], as.vector(outer(cells[(nr*nc)+1:nr],cells[(nr*nc+nr)+1:nc])/cells[(nr*nc)+nr+nc+1]^2)) Y<-cells[1:(nc*nr)]-as.vector(outer(cells[(nr*nc)+1:nr],cells[(nr*nc+nr)+1:nc]))/cells[(nr*nc)+nr+nc+1] V<-Jcb%*%attr(cells,"var")%*%t(Jcb) use<-as.vector(matrix(1:(nr*nc),nrow=nr,ncol=nc)[-1,-1]) waldstat<-Y[use]%*%solve(V[use,use],Y[use]) if (statistic=="Wald"){ waldstat<-waldstat/((nc-1)*(nr-1)) numdf<-(nc-1)*(nr-1) denomdf<-nu } else { numdf<-(nr-1)*(nc-1) denomdf<-(nu-numdf+1) waldstat <- waldstat*denomdf/(numdf*nu) } if (returnNA){ pearson$statistic<-NA pearson$parameter<-c(ndf=numdf,ddf=denomdf) pearson$p.value<-NA attr(pearson$statistic,"names")<-"F" pearson$data.name<-deparse(sys.call(-1)) pearson$method<-"Design-based Wald test of association" } else { pearson$statistic<-waldstat pearson$parameter<-c(ndf=numdf,ddf=denomdf) pearson$p.value<-pf(pearson$statistic, numdf, denomdf, lower.tail=FALSE) attr(pearson$statistic,"names")<-"F" pearson$data.name<-deparse(sys.call(-1)) pearson$method<-"Design-based Wald test of association" } return(pearson) } mean2<-svymean(mm,design,na.rm=TRUE) Cmat<-qr.resid(qr(X1),X12[,-(1:(nr+nc-1)),drop=FALSE]) Dmat <- diag(mean2) iDmat<- diag(ifelse(mean2==0,0,1/mean2)) Vsrs <- (Dmat - outer(mean2,mean2))/N V <- attr(mean2,"var") denom<- t(Cmat) %*% (iDmat/N) %*% Cmat numr<-t(Cmat)%*% iDmat %*% V %*% iDmat %*% Cmat Delta<-solve(denom,numr) d0<- sum(diag(Delta))^2/(sum(diag(Delta%*%Delta))) warn<-options(warn=-1) ## turn off the small-cell count warning. pearson<- chisq.test(svytable(formula,design,Ntotal=N), correct=FALSE) options(warn) if (match.arg(statistic)=="F"){ pearson$statistic<-pearson$statistic/sum(diag(Delta)) pearson$p.value<-pf(pearson$statistic, d0, d0*nu, lower.tail=FALSE) attr(pearson$statistic,"names")<-"F" pearson$parameter<-c(ndf=d0,ddf=d0*nu) pearson$method<-"Pearson's X^2: Rao & Scott adjustment" } else if (match.arg(statistic)=="lincom") { pearson$p.value<-pFsum(pearson$statistic, rep(1,ncol(Delta)), eigen(Delta,only.values=TRUE)$values, lower.tail=FALSE,method="integration",ddf=d0*nu) pearson$parameter<-NULL pearson$method<-"Pearson's X^2: asymptotic exact distribution" } else if (match.arg(statistic)=="saddlepoint") { pearson$p.value<-pFsum(pearson$statistic, rep(1,ncol(Delta)), eigen(Delta,only.values=TRUE)$values, lower.tail=FALSE,method="saddlepoint",ddf=d0*nu) pearson$parameter<-NULL pearson$method<-"Pearson's X^2: saddlepoint approximation" } else{ pearson$p.value<-pchisq(pearson$statistic/mean(diag(Delta)), df=NCOL(Delta),lower.tail=FALSE) pearson$parameter<-c(df=NCOL(Delta)) pearson$method<-"Pearson's X^2: Rao & Scott adjustment" } if (returnNA){ pearson$statistic<-NA pearson$p.value<-NA } pearson$data.name<-deparse(sys.call(-1)) pearson } svychisq.svyrep.design<-function(formula, design, statistic=c("F","Chisq","Wald","adjWald","lincom","saddlepoint","wls-score"), na.rm=TRUE,...){ if (ncol(attr(terms(formula),"factors"))>2) stop("Only 2-way tables at the moment") statistic<-match.arg(statistic) if (statistic=="wls-score") return(svychisqzero(formula,design,na.rm=na.rm)) rows<-formula[[2]][[2]] cols<-formula[[2]][[3]] rowvar<-unique(design$variables[,as.character(rows)]) colvar<-unique(design$variables[,as.character(cols)]) returnNA<-FALSE if ((any(is.na(rowvar),is.na(colvar)))){ rowvar<-na.omit(rowvar) colvar<-na.omit(colvar) returnNA<-!na.rm } nr<-length(rowvar) nc<-length(colvar) fsat<-eval(bquote(~interaction(factor(.(rows)),factor(.(cols)))-1)) mm<-model.matrix(fsat,model.frame(fsat, design$variables,na.action=na.pass)) N<-nrow(mm) nu <- degf(design) pearson<- suppressWarnings(chisq.test(svytable(formula,design,Ntotal=N), correct=FALSE)) mf1<-expand.grid(rows=1:nr,cols=1:nc) X1<-model.matrix(~factor(rows)+factor(cols),mf1) X12<-model.matrix(~factor(rows)*factor(cols),mf1) if(statistic %in% c("Wald", "adjWald")){ frow<-eval(bquote(~factor(.(rows))-1)) fcol<-eval(bquote(~factor(.(cols))-1)) mr<-model.matrix(frow, model.frame(frow,design$variables, na.action=na.pass)) mc<-model.matrix(fcol, model.frame(fcol,design$variables, na.action=na.pass)) one<-rep(1,NROW(mc)) cells<-svytotal(~mm+mr+mc+one,design,na.rm=TRUE) Jcb <- cbind(diag(nr*nc), -outer(mf1$rows,1:nr,"==")*rep(cells[(nr*nc)+nr+1:nc]/cells[(nr*nc)+nr+nc+1],each=nr), -outer(mf1$cols,1:nc,"==")*cells[(nr*nc)+1:nr]/cells[(nr*nc)+nr+nc+1], as.vector(outer(cells[(nr*nc)+1:nr],cells[(nr*nc+nr)+1:nc])/cells[(nr*nc)+nr+nc+1]^2)) Y<-cells[1:(nc*nr)]-as.vector(outer(cells[(nr*nc)+1:nr],cells[(nr*nc+nr)+1:nc]))/cells[(nr*nc)+nr+nc+1] V<-Jcb%*%attr(cells,"var")%*%t(Jcb) use<-as.vector(matrix(1:(nr*nc),nrow=nr,ncol=nc)[-1,-1]) waldstat<-Y[use]%*%solve(V[use,use],Y[use]) if (statistic=="Wald"){ waldstat<-waldstat/((nc-1)*(nr-1)) numdf<-(nc-1)*(nr-1) denomdf<-nu } else { numdf<-(nr-1)*(nc-1) denomdf<-(nu-numdf+1) waldstat <- waldstat*denomdf/(numdf*nu) } if (returnNA){ pearson$statistic<-NA pearson$parameter<-c(ndf=numdf,ddf=denomdf) pearson$p.value<-NA attr(pearson$statistic,"names")<-"F" pearson$data.name<-deparse(sys.call(-1)) pearson$method<-"Design-based Wald test of association" } else { pearson$statistic<-waldstat pearson$parameter<-c(ndf=numdf,ddf=denomdf) pearson$p.value<-pf(pearson$statistic, numdf, denomdf, lower.tail=FALSE) attr(pearson$statistic,"names")<-"F" pearson$data.name<-deparse(sys.call(-1)) pearson$method<-"Design-based Wald test of association" } return(pearson) } mean2<-svymean(mm,design,na.rm=TRUE) Cmat<-qr.resid(qr(X1),X12[,-(1:(nr+nc-1)),drop=FALSE]) Dmat <- diag(mean2) iDmat<- diag(ifelse(mean2==0,0,1/mean2)) Vsrs <- (Dmat - outer(mean2,mean2))/N V <- attr(mean2,"var") denom<- t(Cmat) %*% (iDmat/N) %*% Cmat numr<-t(Cmat)%*% iDmat %*% V %*% iDmat %*% Cmat Delta<-solve(denom,numr) d0<- sum(diag(Delta))^2/(sum(diag(Delta%*%Delta))) warn<-options(warn=-1) ## turn off the small-cell count warning. pearson<- chisq.test(svytable(formula,design,Ntotal=N), correct=FALSE) options(warn) if (match.arg(statistic)=="F"){ pearson$statistic<-pearson$statistic/sum(diag(Delta)) pearson$p.value<-pf(pearson$statistic, d0, d0*nu, lower.tail=FALSE) attr(pearson$statistic,"names")<-"F" pearson$parameter<-c(ndf=d0,ddf=d0*nu) } else if (match.arg(statistic)=="lincom") { pearson$p.value<-pchisqsum(pearson$statistic, rep(1,ncol(Delta)), eigen(Delta,only.values=TRUE)$values, lower.tail=FALSE,method="integration") pearson$parameter<-NULL pearson$method<-"Pearson's X^2: asymptotic exact distribution" }else if (match.arg(statistic)=="saddlepoint") { pearson$p.value<-pchisqsum(pearson$statistic, rep(1,ncol(Delta)), eigen(Delta,only.values=TRUE)$values, lower.tail=FALSE,method="saddlepoint") pearson$parameter<-NULL pearson$method<-"Pearson's X^2: saddlepoint approximation" } else { pearson$p.value<-pchisq(pearson$statistic/mean(diag(Delta)), df=NCOL(Delta),lower.tail=FALSE) pearson$parameter<-c(df=NCOL(Delta)) } if (returnNA){ pearson$statistic<-NA pearson$p.value<-NA } pearson$data.name<-deparse(sys.call(-1)) pearson$method<-"Pearson's X^2: Rao & Scott adjustment" pearson } summary.svreptable<-function(object,...){ object } summary.svytable<-function(object, statistic=c("F","Chisq","Wald","adjWald","lincom","saddlepoint"),...){ statistic<-match.arg(statistic) call<-attr(object, "call") ff<-call$formula if (is.null(environment(ff))) env<-parent.frame() else env<-environment(ff) ff<-delete.response(ff) test<-eval(bquote(svychisq(.(ff), design=.(call$design), statistic=.(statistic))), env) rval<-list(table=object,statistic=test) class(rval)<-"summary.svytable" rval } print.summary.svytable<-function(x,digits=0,...){ print(round(x$table,digits)) print(x$statistic,...) } svychisqzero<-function(formula,design,na.rm){ if (ncol(attr(terms(formula), "factors")) > 2) stop("Only 2-way tables") rows <- formula[[2]][[2]] cols <- formula[[2]][[3]] rowvar <- unique(design$variables[, as.character(rows)]) nr <- length(rowvar) des<-design[rep(1:nrow(design), nr), ] yind<-as.vector(eval(bquote( model.matrix(~factor(.(rows))+0, model.frame(design))))) k<-rep(1:nr,each=nrow(design)) des<-update(des,yind=yind,k=k) ff0<-eval(bquote(yind~factor(k)+factor(.(cols)))) ff1<-eval(bquote(~factor(k):factor(.(cols)))) m0<-svyglm(ff0, des) test<-svyscoretest(m0, add.terms=ff1,method="pseudo") ## rescaling: the weights matter because score test uses svytotal test["X2"]<-test["X2"]/nr/nr if (is.finite(test["ddf"])) { p<-pf(test["X2"], test["df"],test["ddf"],lower.tail=FALSE) } else{ p<- pchisq(test["X2"], test["df"],lower.tail=FALSE) } test["p"]<-p ## formatting warn<-options(warn=-1) ## turn off the small-cell count warning. pearson<- chisq.test(svytable(formula,design,Ntotal=nrow(design)), correct=FALSE) options(warn) pearson$statistic<-test["X2"] pearson$parameter<-c(ndf=test["df"],ddf=test["ddf"]) pearson$p.value<-test["p"] attr(pearson$statistic,"names")<-"F" pearson$data.name<-deparse(sys.call(-1)) pearson$method<-"Design-based WLS score test of association" pearson } survey/R/twophase.R0000644000176200001440000006120614417125025013773 0ustar liggesusers## ## twophase<-function(id,strata=NULL, probs=NULL, weights=NULL, fpc=NULL, subset, data, method=c("full","approx","simple")){ data<-detibble(data) method<-match.arg(method) if(method=="full") { if (!is.null(weights)) stop("weights not accepted by method='full'") return(twophase2(id=id, strata=strata, probs=probs, fpc=fpc,subset=subset,data=data)) } d1<-svydesign(ids=id[[1]],strata=strata[[1]],weights=weights[[1]], probs=probs[[1]],fpc=fpc[[1]],data=data) if(inherits(subset,"formula")) subset<-eval.parent(model.frame(subset,data=data,na.action=na.pass))[[1]] if(!is.logical(subset) && sort(unique(subset))==c(0,1)) subset<-as.logical(subset) if (any(is.na(subset))) stop("missing values in 'subset'") d1s<-svydesign(ids=id[[1]],strata=strata[[1]],weights=weights[[1]], probs=probs[[1]],fpc=fpc[[1]],data=data[subset,]) d1s$prob<-d1$prob[subset] d1s$allprob<-d1$allprob[subset,,drop=FALSE] ##if (NCOL(d1s$allprob)>1) ## stop("Can't handle multistage sampling at phase 1 (yet)") ## work out phase-two fpc if (is.null(fpc[[2]])){ complete.vars<-names(data)[apply(data, 2, function(v) all(!is.na(v)))] if (all(c(all.vars(id[[2]]), all.vars(strata[[2]])) %in% complete.vars)){ dfpc<-svydesign(ids=id[[2]], strata=strata[[2]], data=data, probs=NULL) popsize<-mapply(function(s,i) ave(!duplicated(i),s,FUN=sum), dfpc$strata, dfpc$cluster) rm(dfpc) } else { warning("Second-stage fpc not specified and not computable") popsize<-NULL } } else popsize<-NULL d2<-svydesign(ids=id[[2]], strata=strata[[2]], probs=probs[[2]], weights=weights[[2]], fpc=fpc[[2]], data=data[subset,]) ## ugly hack to get nicer labels if(!is.null(fpc[[2]])){ d2call<-bquote(svydesign(ids=.(id[[2]]),strata=.(strata[[2]]), probs=.(probs[[2]]), weights=.(weights[[2]]), fpc=.(fpc[[2]]))) } else{ d2call<-bquote(svydesign(ids=.(id[[2]]),strata=.(strata[[2]]), probs=.(probs[[2]]), weights=.(weights[[2]]), fpc=`*phase1*`)) } for(i in names(d2call)[-1]) d2call[[i]]<-d2call[[i]] d2$call<-d2call d1call<-bquote(svydesign(ids=.(id[[1]]), strata=.(strata[[1]]), probs=.(probs[[1]]), weights=.(weights[[1]]), fpc=.(fpc[[1]]))) for(i in names(d1call)[-1]) d1call[[i]]<-d1call[[i]] d1$call<-d1call ## Add phase 2 fpc and probs if they were computed rather than specified. if (!is.null(popsize)) d2$fpc<-as.fpc(popsize[subset,,drop=FALSE],d2$strata,d2$cluster) if(is.null(probs[[2]]) && is.null(weights[[2]]) && !is.null(d2$fpc$popsize)){ d2$allprob<-1/weights(d2$fpc,final=FALSE) d2$prob<-apply(as.data.frame(d2$allprob),1,prod) } d2$variables<-NULL rval<-list(phase1=list(full=d1,sample=d1s), phase2=d2, subset=subset) rval$prob<-rval$phase1$sample$prob ## Are phase 2 PSUs the same as Phase 1 USUs, or smaller? rval$samescale<- !any(duplicated(d1s$cluster[,NCOL(d1s$cluster)][!duplicated(d2$cluster[,1])])) ## For each phase 1 sampling unit, need probability of being represented ## at phase 2. nunique<-function(x) sum(!duplicated(x)) m<-NCOL(rval$phase1$sample$cluster) if(d2$has.strata){ if (inherits(strata[[2]],"formula")) sa<-eval(attr(terms(strata[[2]]),"variables")[[2]],d1$variables) else sa<-d1$strata[,1] cm<-rval$phase1$full$cluster[,m] if (nunique(sa)!=nunique(sa[subset])) stop("Some phase-2 strata have zero sampling fraction") rval$usu<-ave(as.numeric(cm[subset]),sa[subset],FUN=nunique)/ave(as.numeric(cm),sa,FUN=nunique)[subset] } else { rval$usu<-drop(with(rval$phase1$sample,ave(as.numeric(cluster[,m]), strata[,m], FUN=nunique))/rval$phase1$full$fpc$sampsize[rval$subset,m]) } ## if (any(rval$usu<1) && any(duplicated(d1$cluster[,1]))) ## stop("Phase 1 design must either be element sampling or have all phase 1 sampling units in phase 2") if (length(rval$phase1$sample$prob)==length(d2$prob)) rval$prob<-rval$phase1$sample$prob*d2$prob else{ rval$prob<-rep(Inf,length(rval$phase1$sample$prob)) rval$prob[subset]<-rval$prob[subset]*d2$prob } rval$call<-sys.call() class(rval) <- c("twophase","survey.design") rval } print.twophase<-function(x,...){ cat("Two-phase design: ") print(x$call) cat("Phase 1:\n") print(x$phase1$full) cat("Phase 2:\n") print(x$phase2) invisible(x) } summary.twophase<-function(object,...){ class(object)<-"summary.twophase" object } print.summary.twophase<-function(x,...,varnames=TRUE){ cat("Two-phase design: ") print(x$call) cat("Phase 1:\n") print(x$phase1$full,design.summaries=TRUE,varnames=FALSE) cat("Phase 2:\n") print(x$phase2,design.summaries=TRUE, varnames=FALSE) if (varnames){ cat("Data variables:\n") print(names(x$phase1$full$variables)) } invisible(x) } twophasevar<-function(x,design){ d1 <- design$phase1$sample if (NROW(x)==length(design$usu)){ ph2pr<-design$usu if (any(design$prob==Inf)) x[is.na(x)]<-0 }else{ x[is.na(x)]<-0 ph2pr<-rep(1,NROW(x)) ph2pr[design$subset]<-design$usu } ## compute phase 1 variance vphase1 <- svyrecvar.phase1(x,d1$cluster, d1$strata, d1$fpc, postStrata=d1$postStrata, ph2prob=ph2pr, nPSUfull=design$phase1$full$fpc$sampsize[design$subset,,drop=FALSE]) ## is phase 2 sampling whole phase 1 units or subsampling within units? if (design$samescale) u2<-x else u2<-x*sqrt(d1$prob) u2[is.na(u2)]<-0 ## compute phase 2 variance vphase2 <- with(design, svyrecvar(u2, phase2$cluster, phase2$strata, phase2$fpc, postStrata=phase2$postStrata)) rval <- vphase1+vphase2 attr(rval, "phases")<-list(phase1=vphase1, phase2=vphase2) rval } svyrecvar.phase1<-function(x, clusters, stratas, fpcs, postStrata=NULL, lonely.psu=getOption("survey.lonely.psu"), one.stage=getOption("survey.ultimate.cluster"), ph2prob, nPSUfull){ x<-as.matrix(x) cal<-NULL ## FIXME: calibration of phase 1 not yet implemented. ## Remove post-stratum means, which may cut across clusters ## Also center the data using any "g-calibration" models if(!is.null(postStrata)){ stop("calibration of phase 1 not yet implemented") for (psvar in postStrata){ if (inherits(psvar, "greg_calibration")) { if (psvar$stage==0){ ## G-calibration at population level x<-qr.resid(psvar$qr,x/psvar$w)*psvar$w } else { ## G-calibration within clusters cal<-c(cal, list(psvar)) } } else { ## ordinary post-stratification psw<-attr(psvar, "weights") postStrata<-as.factor(psvar) psmeans<-rowsum(x/psw,psvar,reorder=TRUE)/as.vector(table(factor(psvar))) x<- x-psmeans[match(psvar,sort(unique(psvar))),]*psw } } } multistage.phase1(x, clusters,stratas,fpcs$sampsize, fpcs$popsize, lonely.psu=getOption("survey.lonely.psu"), one.stage=one.stage,stage=1,cal=cal,ph2prob=ph2prob, nPSUfull=nPSUfull) } multistage.phase1<-function(x, clusters, stratas, nPSUs, fpcs, lonely.psu=getOption("survey.lonely.psu"), one.stage=FALSE,stage,cal,ph2prob, nPSUfull){ n<-NROW(x) v <- onestage.phase1(x,stratas[,1], clusters[,1], nPSUs[,1], fpcs[,1], lonely.psu=lonely.psu,stage=stage,cal=cal, ph2prob=ph2prob, nPSUfull=nPSUfull[,1]) if (one.stage!=TRUE && !is.null(fpcs) && NCOL(clusters)>1) { v.sub<-by(1:n, list(as.numeric(clusters[,1])), function(index){ ## residuals for G-calibration using population information ## only on clusters at this stage. for(cali in cal){ if (cali$stage != stage) next j<-match(clusters[index,1],cali$index) if (length(unique(j))!=1) stop("Internal problem in g-calibration data: stage",stage, ", cluster", j) j<-j[[1]] x[index,]<-qr.resid(cali$qr[[j]], x[index,,drop=FALSE]/cali$w[[j]])*cali$w[[j]] } multistage.phase1(x[index,,drop=FALSE], clusters[index,-1,drop=FALSE], stratas[index,-1,drop=FALSE], nPSUs[index,-1,drop=FALSE], fpcs[index,-1,drop=FALSE], lonely.psu=lonely.psu,one.stage=one.stage-1, stage=stage+1,cal=cal,ph2prob=ph2prob[index], nPSUfull=nPSUfull[index,-1,drop=FALSE])*nPSUfull[index[1],1]/fpcs[index[1],1] }) for(i in 1:length(v.sub)) v<-v+v.sub[[i]] } v } onestrat.phase1<-function(x,cluster,nPSU,fpc, lonely.psu,stratum=NULL, stage=1,cal,ph2prob, nPSUfull){ x<-rowsum(x, cluster) ph2prob<-ph2prob[!duplicated(cluster)] nsubset<-nrow(x) if (nsubset1 || (nPSU>1 && !getOption("survey.adjust.domain.lonely"))) x<-sweep(x, 2, xcenter, "-") if (nPSU>1) scale<-f*nPSUfull/(nPSUfull-1) else scale<-f if (nsubset==1 && nPSU>1){ warning("Stratum (",stratum,") has only one PSU at stage ",stage) if (lonely.psu=="average" && getOption("survey.adjust.domain.lonely")) scale<-NA } if (nPSU>1){ return(crossprod(x/sqrt(ph2prob))*scale) } else if (f<0.0000001) ## certainty PSU return(0*crossprod(x/sqrt(ph2prob))) else { rval<-switch(lonely.psu, certainty=scale*crossprod(x/sqrt(ph2prob)), remove=scale*crossprod(x/sqrt(ph2prob)), adjust=scale*crossprod(x/sqrt(ph2prob)), average=NA*crossprod(x/sqrt(ph2prob)), fail= stop("Stratum (",stratum,") has only one PSU at stage ",stage), stop("Can't handle lonely.psu=",lonely.psu) ) rval } } onestage.phase1<-function(x, strata, clusters, nPSU, fpc, lonely.psu=getOption("survey.lonely.psu"),stage=0, cal,ph2prob, nPSUfull){ stratvars<-tapply(1:NROW(x), list(factor(strata)), function(index){ onestrat.phase1(x[index,,drop=FALSE], clusters[index], nPSU[index][1], fpc[index][1], lonely.psu=lonely.psu,stratum=strata[index][1], stage=stage,cal=cal, ph2prob=ph2prob[index], nPSUfull=nPSUfull[index][1]) }) p<-NCOL(x) nstrat<-length(unique(strata)) nokstrat<-sum(sapply(stratvars,function(m) !any(is.na(m)))) apply(array(unlist(stratvars),c(p,p,length(stratvars))),1:2,sum,na.rm=TRUE)*nstrat/nokstrat } svytotal.twophase<-function(x,design, na.rm=FALSE, deff=FALSE,...){ if (inherits(x,"formula")){ ## do the right thing with factors mf<-model.frame(x,design$phase1$sample$variables, na.action=na.pass) xx<-lapply(attr(terms(x),"variables")[-1], function(tt) model.matrix(eval(bquote(~0+.(tt))),mf)) cols<-sapply(xx,NCOL) x<-matrix(nrow=NROW(xx[[1]]),ncol=sum(cols)) scols<-c(0,cumsum(cols)) for(i in 1:length(xx)){ x[,scols[i]+1:cols[i]]<-xx[[i]] } colnames(x)<-do.call("c",lapply(xx,colnames)) } else { if(typeof(x) %in% c("expression","symbol")) x<-eval(x, design$variables) else { if(is.data.frame(x) && any(sapply(x,is.factor))){ xx<-lapply(x, function(xi) {if (is.factor(xi)) 0+(outer(xi,levels(xi),"==")) else xi}) cols<-sapply(xx,NCOL) scols<-c(0,cumsum(cols)) cn<-character(sum(cols)) for(i in 1:length(xx)) cn[scols[i]+1:cols[i]]<-paste(names(x)[i],levels(x[[i]]),sep="") x<-matrix(nrow=NROW(xx[[1]]),ncol=sum(cols)) for(i in 1:length(xx)){ x[,scols[i]+1:cols[i]]<-xx[[i]] } colnames(x)<-cn } } } x<-as.matrix(x) if (na.rm){ nas<-rowSums(is.na(x)) design<-design[nas==0,] if(length(nas)>length(design$prob)) x<-x[nas==0,,drop=FALSE] else x[nas>0,]<-0 } N<-sum(1/design$prob) total <- colSums(x/as.vector(design$prob),na.rm=na.rm) class(total)<-"svystat" attr(total, "var")<-v<-twophasevar(x/design$prob,design) attr(total,"statistic")<-"total" if (is.character(deff) || deff){ nobs<-NROW(design$cluster) if (deff=="replace") vsrs<-svyvar(x,design,na.rm=na.rm)*sum(weights(design)^2)*(N-nobs)/N else vsrs<-svyvar(x,design,na.rm=na.rm)*sum(weights(design)^2) attr(total, "deff")<-v/vsrs } return(total) } svymean.twophase<-function(x,design, na.rm=FALSE,deff=FALSE,...){ if (inherits(x,"formula")){ ## do the right thing with factors mf<-model.frame(x,design$phase1$sample$variables ,na.action=na.pass) xx<-lapply(attr(terms(x),"variables")[-1], function(tt) model.matrix(eval(bquote(~0+.(tt))),mf)) cols<-sapply(xx,NCOL) x<-matrix(nrow=NROW(xx[[1]]),ncol=sum(cols)) scols<-c(0,cumsum(cols)) for(i in 1:length(xx)){ x[,scols[i]+1:cols[i]]<-xx[[i]] } colnames(x)<-do.call("c",lapply(xx,colnames)) } else { if(typeof(x) %in% c("expression","symbol")) x<-eval(x, design$variables) else { if(is.data.frame(x) && any(sapply(x,is.factor))){ xx<-lapply(x, function(xi) {if (is.factor(xi)) 0+(outer(xi,levels(xi),"==")) else xi}) cols<-sapply(xx,NCOL) scols<-c(0,cumsum(cols)) cn<-character(sum(cols)) for(i in 1:length(xx)) cn[scols[i]+1:cols[i]]<-paste(names(x)[i],levels(x[[i]]),sep="") x<-matrix(nrow=NROW(xx[[1]]),ncol=sum(cols)) for(i in 1:length(xx)){ x[,scols[i]+1:cols[i]]<-xx[[i]] } colnames(x)<-cn } } } x<-as.matrix(x) if (na.rm){ nas<-rowSums(is.na(x)) design<-design[nas==0,] if(length(nas)>length(design$prob)) x<-x[nas==0,,drop=FALSE] else x[nas>0,]<-0 } pweights<-1/design$prob psum<-sum(pweights) average<-colSums(x*pweights/psum) x<-sweep(x,2,average) v<-twophasevar(x*pweights/psum,design) attr(average,"var")<-v attr(average,"statistic")<-"mean" class(average)<-"svystat" if (is.character(deff) || deff){ nobs<-NROW(design$cluster) if(deff=="replace"){ vsrs<-svyvar(x,design,na.rm=na.rm)/(nobs) } else { if(psum1){ N<-ncol(ids) for(i in 2:(N)){ ids[,i]<-do.call("interaction", ids[,1:i,drop=TRUE]) } } ## force clusters nested in strata if (nest && has.strata && NCOL(ids)){ N<-NCOL(ids) for(i in 1:N) ids[,i]<-do.call("interaction", list(strata, ids[,i])) } ## check if clusters nested in strata if (check.strata && nest) warning("No point in check.strata=TRUE if nest=TRUE") if(check.strata && !is.null(strata) && NCOL(ids)){ sc<-rowSums(table(ids[,1],strata)>0) if(any(sc>1)) stop("Clusters not nested in strata") } ## Put degrees of freedom (# of PSUs in each stratum) in object, to ## allow subpopulations if (NCOL(ids)){ nPSU<-table(strata[!duplicated(ids[,1])]) } if (!is.null(fpc)){ if (NCOL(ids)>1){ if (all(fpc<1)) warning("FPC is not currently supported for multi-stage sampling") else stop("Can't compute FPC from population size for multi-stage sampling") } ## Finite population correction: specified per observation if (is.numeric(fpc) && length(fpc)==NROW(variables)){ tbl<-by(fpc,list(strata),unique) if (any(sapply(tbl,length)!=1)) stop("fpc not constant within strata") fpc<-data.frame(strata=factor(rownames(tbl),levels=levels(strata)), N=as.vector(tbl)) } ## Now reduced to fpc per stratum nstr<-table(strata[!duplicated(ids[[1]])]) if (all(fpc[,2]<=1)){ fpc[,2]<- nstr[match(as.character(fpc[,1]), names(nstr))]/fpc[,2] } else if (any(fpc[,2] 0.99])) names(certainty)<-as.character(unique(strata)) } else { warning("Some strata have only one PSU and I can't tell if they are certainty PSUs") } } if (is.numeric(probs) && length(probs)==1) probs<-rep(probs, NROW(variables)) if (length(probs)==0) probs<-rep(1,NROW(variables)) if (NCOL(probs)==1) probs<-data.frame(probs) rval<-list(cluster=ids) rval$strata<-strata rval$has.strata<-has.strata rval$prob<- apply(probs,1,prod) rval$allprob<-probs rval$call<-match.call() rval$variables<-variables rval$fpc<-fpc rval$certainty<-certainty rval$call<-sys.call() rval$nPSU<-nPSU class(rval)<-"survey.design" rval } print.survey.design<-function(x,varnames=FALSE,design.summaries=FALSE,...){ .svycheck(x) n<-NROW(x$cluster) if (x$has.strata) cat("Stratified ") un<-length(unique(x$cluster[,1])) if(n==un){ cat("Independent Sampling design\n") is.independent<-TRUE } else { cat(NCOL(x$cluster),"- level Cluster Sampling design\n") nn<-lapply(x$cluster,function(i) length(unique(i))) cat(paste("With (",paste(unlist(nn),collapse=", "),") clusters.\n",sep="")) is.independent<-FALSE } print(x$call) if (design.summaries){ cat("Probabilities:\n") print(summary(x$prob)) if(x$has.strata){ cat("Stratum sizes: \n") a<-rbind(obs=table(x$strata), design.PSU=x$nPSU, actual.PSU=if(!is.independent || !is.null(x$fpc)) table(x$strata[!duplicated(x$cluster[,1])])) print(a) } if (!is.null(x$fpc)){ if (x$has.strata) { cat("Population stratum sizes (PSUs): \n") print(x$fpc) } else { cat("Population size (PSUs):",x$fpc[,2],"\n") } } } if (varnames){ cat("Data variables:\n") print(names(x$variables)) } invisible(x) } "[.survey.design"<-function (x,i, ...){ if (!missing(i)){ if (is.calibrated(x)){ tmp<-x$prob[i,] x$prob<-rep(Inf, length(x$prob)) x$prob[i,]<-tmp } else { x$variables<-"[.data.frame"(x$variables,i,...,drop=FALSE) x$cluster<-x$cluster[i,,drop=FALSE] x$prob<-x$prob[i] x$allprob<-x$allprob[i,,drop=FALSE] x$strata<-x$strata[i] } } else { x$variables<-x$variables[,...,drop=FALSE] } x } "[<-.survey.design"<-function(x, ...,value){ if (inherits(value, "survey.design")) value<-value$variables x$variables[...]<-value x } dim.survey.design<-function(x){ dim(x$variables) } na.fail.survey.design<-function(object,...){ tmp<-na.fail(object$variables,...) object } na.omit.survey.design<-function(object,...){ tmp<-na.omit(object$variables,...) omit<-attr(tmp,"na.action") if (length(omit)){ object<-object[-omit,] object$variables<-tmp attr(object,"na.action")<-omit } object } na.exclude.survey.design<-function(object,...){ tmp<-na.exclude(object$variables,...) exclude<-attr(tmp,"na.action") if (length(exclude)){ object<-object[-exclude,] object$variables<-tmp attr(object,"na.action")<-exclude } object } update.survey.design<-function(object,...){ dots<-substitute(list(...))[-1] newnames<-names(dots) for(j in seq(along=dots)){ object$variables[,newnames[j]]<-eval(dots[[j]],object$variables, parent.frame()) } object$call<-sys.call(-1) object } subset.survey.design<-function(x,subset,...){ e <- substitute(subset) r <- eval(e, x$variables, parent.frame()) r <- r & !is.na(r) x<-x[r,] x$call<-sys.call(-1) x } summary.survey.design<-function(object,...){ class(object)<-"summary.survey.design" object } print.summary.survey.design<-function(x,...){ y<-x class(y)<-"survey.design" print(y,varnames=TRUE,design.summaries=TRUE,...) } postStratify.survey.design<-function(design, strata, population, partial=FALSE,...){ if(inherits(strata,"formula")){ mf<-substitute(model.frame(strata, data=design$variables,na.action=na.fail)) strata<-eval.parent(mf) } strata<-as.data.frame(strata) sampletable<-xtabs(I(1/design$prob)~.,data=strata) sampletable<-as.data.frame(sampletable) if (inherits(population,"table")) population<-as.data.frame(population) else if (is.data.frame(population)) population$Freq <- as.vector(population$Freq) ##allows Freq computed by tapply() else stop("population must be a table or dataframe") if (!all(names(strata) %in% names(population))) stop("Stratifying variables don't match") nn<- names(population) %in% names(strata) if (sum(!nn)!=1) stop("stratifying variables don't match") names(population)[which(!nn)]<-"Pop.Freq" both<-merge(sampletable, population, by=names(strata), all=TRUE) samplezero <- both$Freq %in% c(0, NA) popzero <- both$Pop.Freq %in% c(0, NA) both<-both[!(samplezero & popzero),] if (any(onlysample<- popzero & !samplezero)){ print(both[onlysample,]) stop("Strata in sample absent from population. This Can't Happen") } if (any(onlypop <- samplezero & !popzero)){ if (partial){ both<-both[!onlypop,] warning("Some strata absent from sample: ignored") } else { print(both[onlypop,]) stop("Some strata absent from sample: use partial=TRUE to ignore them.") } } reweight<-both$Pop.Freq/both$Freq both$label <- do.call("interaction", list(both[,names(strata)])) designlabel <- do.call("interaction", strata) index<-match(designlabel, both$label) attr(index,"oldweights")<-1/design$prob design$prob<-design$prob/reweight[index] attr(index,"weights")<-1/design$prob design$postStrata<-c(design$postStrata,list(index)) ## Do we need to iterate here a la raking to get design strata ## and post-strata both balanced? design$call<-sys.call(-1) design } svyCprod<-function(x, strata, psu, fpc, nPSU, certainty=NULL, postStrata=NULL, lonely.psu=getOption("survey.lonely.psu")){ x<-as.matrix(x) n<-NROW(x) ## Remove post-stratum means, which may cut across PSUs if(!is.null(postStrata)){ for (psvar in postStrata){ if (inherits(psvar, "greg_calibration") || inherits(psvar, "raking")) stop("rake() and calibrate() not supported for old-style design objects") psw<-attr(psvar,"weights") psmeans<-rowsum(x/psw,psvar,reorder=TRUE)/as.vector(table(factor(psvar))) x<- x-psmeans[match(psvar,sort(unique(psvar))),]*psw } } ##First collapse over PSUs if (is.null(strata)){ strata<-rep("1",n) if (!is.null(nPSU)) names(nPSU)<-"1" } else strata<-as.character(strata) ##can't use factors as indices in for()' if (is.null(certainty)){ certainty<-rep(FALSE,length(strata)) names(certainty)<-strata } if (!is.null(psu)){ x<-rowsum(x, psu, reorder=FALSE) strata<-strata[!duplicated(psu)] n<-NROW(x) } if (!is.null(nPSU)){ obsn<-table(strata) dropped<-nPSU[match(names(obsn),names(nPSU))]-obsn if(sum(dropped)){ xtra<-matrix(0,ncol=NCOL(x),nrow=sum(dropped)) strata<-c(strata,rep(names(dropped),dropped)) if(is.matrix(x)) x<-rbind(x,xtra) else x<-c(x,xtra) n<-NROW(x) } } else obsn<-table(strata) if(is.null(strata)){ x<-t(t(x)-colMeans(x)) } else { strata.means<-drop(rowsum(x,strata, reorder=FALSE))/drop(rowsum(rep(1,n),strata, reorder=FALSE)) if (!is.matrix(strata.means)) strata.means<-matrix(strata.means, ncol=NCOL(x)) x<- x- strata.means[ match(strata, unique(strata)),,drop=FALSE] } p<-NCOL(x) v<-matrix(0,p,p) ss<-unique(strata) for(s in ss){ this.stratum <- strata %in% s ## original number of PSUs in this stratum ## before missing data/subsetting this.n <-nPSU[match(s,names(nPSU))] this.df <- this.n/(this.n-1) if (is.null(fpc)) this.fpc <- 1 else{ this.fpc <- fpc[,2][ fpc[,1]==as.character(s)] this.fpc <- (this.fpc - this.n)/this.fpc } xs<-x[this.stratum,,drop=FALSE] this.certain<-certainty[names(certainty) %in% s] ## stratum with only 1 design cluster leads to undefined variance lonely.psu<-match.arg(lonely.psu, c("remove","adjust","fail", "certainty","average")) if (this.n==1 && !this.certain){ this.df<-1 if (lonely.psu=="fail") stop("Stratum ",s, " has only one sampling unit.") else if (lonely.psu!="certainty") warning("Stratum ",s, " has only one sampling unit.") if (lonely.psu=="adjust") xs<-strata.means[match(s,ss),,drop=FALSE] } else if (obsn[match(s,names(obsn))]==1 && !this.certain){ ## stratum with only 1 cluster left after subsetting warning("Stratum ",s," has only one PSU in this subset.") if (lonely.psu=="adjust") xs<-strata.means[match(s,ss),,drop=FALSE] } ## add it up if (!this.certain) v<-v+crossprod(xs)*this.df*this.fpc } if (lonely.psu=="average"){ v<- v/(1-mean(obsn==1 & !certainty)) } v } svymean<-function(x, design,na.rm=FALSE,...){ .svycheck(design) UseMethod("svymean",design) } svymean.survey.design<-function(x,design, na.rm=FALSE,deff=FALSE, influence=FALSE,...){ if (!inherits(design,"survey.design")) stop("design is not a survey design") if (inherits(x,"formula")){ ## do the right thing with factors mf<-model.frame(x,design$variables,na.action=na.pass) xx<-lapply(attr(terms(x),"variables")[-1], function(tt) model.matrix(eval(bquote(~0+.(tt))),mf)) cols<-sapply(xx,NCOL) x<-matrix(nrow=NROW(xx[[1]]),ncol=sum(cols)) scols<-c(0,cumsum(cols)) for(i in 1:length(xx)){ x[,scols[i]+1:cols[i]]<-xx[[i]] } colnames(x)<-do.call("c",lapply(xx,colnames)) } else if(typeof(x) %in% c("expression","symbol")) x<-eval(x, design$variables) x<-as.matrix(x) if (na.rm){ nas<-rowSums(is.na(x)) design<-design[nas==0,] x<-x[nas==0,,drop=FALSE] } pweights<-1/design$prob psum<-sum(pweights) average<-colSums(x*pweights/psum) x<-sweep(x,2,average) v<-svyCprod(x*pweights/psum,design$strata,design$cluster[[1]], design$fpc, design$nPSU,design$certainty, design$postStrata) attr(average,"var")<-v attr(average,"statistic")<-"mean" if(influence) attr(average, "influence")<-x*pweights/psum class(average)<-"svystat" if (is.character(deff) || deff){ nobs<-NROW(design$cluster) vsrs<-svyvar(x,design,na.rm=na.rm)/nobs vsrs<-vsrs*(psum-nobs)/psum attr(average, "deff")<-v/vsrs } return(average) } print.svystat<-function(x,...){ vv<-attr(x,"var") if (is.matrix(vv)) m<-cbind(x,sqrt(diag(vv))) else m<-cbind(x,sqrt(vv)) hasdeff<-!is.null(attr(x,"deff")) if (hasdeff) { m<-cbind(m,deff(x)) colnames(m)<-c(attr(x,"statistic"),"SE","DEff") } else { colnames(m)<-c(attr(x,"statistic"),"SE") } printCoefmat(m) } as.data.frame.svystat<-function(x,...){ rval<-data.frame(statistic=coef(x),SE=SE(x)) names(rval)[1]<-attr(x,"statistic") if (!is.null(attr(x,"deff"))) rval<-cbind(rval,deff=deff(x)) rval } coef.svystat<-function(object,...){ attr(object,"statistic")<-NULL attr(object,"deff")<-NULL attr(object,"var")<-NULL unclass(object) } vcov.svystat<-function(object,...){ as.matrix(attr(object,"var")) } influence.svystat<-function(model,...){ attr(model,"influence") } SE.svystat<-function(object,...){ v<-vcov(object) if (!is.matrix(v) || NCOL(v)==1) sqrt(v) else sqrt(diag(v)) } deff <- function(object,quietly=FALSE,...) UseMethod("deff") deff.default <- function(object, quietly=FALSE,...){ rval<-attr(object,"deff") if (is.null(rval)) { if(!quietly) warning("object has no design effect information") } else rval<-diag(as.matrix(rval)) rval } cv<-function(object,...) UseMethod("cv") cv.default<-function(object, warn=TRUE, ...){ rval<-SE(object)/coef(object) if (warn && any(coef(object)<0,na.rm=TRUE)) warning("CV may not be useful for negative statistics") rval } svytotal<-function(x,design,na.rm=FALSE,...){ .svycheck(design) UseMethod("svytotal",design) } svytotal.survey.design<-function(x,design, na.rm=FALSE, deff=FALSE,influence=FALSE,...){ if (!inherits(design,"survey.design")) stop("design is not a survey design") if (inherits(x,"formula")){ ## do the right thing with factors mf<-model.frame(x,design$variables,na.action=na.pass) xx<-lapply(attr(terms(x),"variables")[-1], function(tt) model.matrix(eval(bquote(~0+.(tt))),mf)) cols<-sapply(xx,NCOL) x<-matrix(nrow=NROW(xx[[1]]),ncol=sum(cols)) scols<-c(0,cumsum(cols)) for(i in 1:length(xx)){ x[,scols[i]+1:cols[i]]<-xx[[i]] } colnames(x)<-do.call("c",lapply(xx,colnames)) } else if(typeof(x) %in% c("expression","symbol")) x<-eval(x, design$variables) x<-as.matrix(x) if (na.rm){ nas<-rowSums(is.na(x)) design<-design[nas==0,] x<-x[nas==0,,drop=FALSE] } N<-sum(1/design$prob) m <- svymean(x, design, na.rm=na.rm) total<-m*N attr(total, "var")<-v<-svyCprod(x/design$prob,design$strata, design$cluster[[1]], design$fpc, design$nPSU,design$certainty,design$postStrata) attr(total,"statistic")<-"total" if (influence){ attr(total,"influence")<-x/design$prob } if (is.character(deff) || deff){ vsrs<-svyvar(x,design)*sum(weights(design)^2) vsrs<-vsrs*(N-NROW(design$cluster))/N attr(total,"deff")<-v/vsrs } return(total) } svyvar<-function(x, design, na.rm=FALSE,...){ .svycheck(design) UseMethod("svyvar",design) } svyvar.survey.design<-function(x, design, na.rm=FALSE,...){ if (inherits(x,"formula")) x<-model.frame(x,model.frame(design),na.action=na.pass) else if(typeof(x) %in% c("expression","symbol")) x<-eval(x, design$variables) n<-sum((weights(design,"sampling")!=0) & (rowSums(is.na(as.matrix(x)))==0)) xbar<-svymean(x,design, na.rm=na.rm) if(NCOL(x)==1) { if(n==1){ v<-NA attr(v,"statistic")<-NA attr(v,"var")<-NA class(v)<-"svystat" return(v) } x<-x-xbar v<-svymean(x*x*n/(n-1),design, na.rm=na.rm) attr(v,"statistic")<-"variance" return(v) } x<-t(t(x)-xbar) p<-NCOL(x) a<-matrix(rep(x,p),ncol=p*p) b<-x[,rep(1:p,each=p)] ## Kish uses the n-1 divisor, so it affects design effects v<-svymean(a*b*n/(n-1),design, na.rm=na.rm) vv<-matrix(v,ncol=p) dimnames(vv)<-list(names(xbar),names(xbar)) attr(vv,"var")<-attr(v,"var") attr(vv,"statistic")<-"variance" class(vv)<-c("svyvar","svystat") vv } print.svyvar<-function (x, covariance=FALSE, ...) { if(!is.matrix(x)) NextMethod() vv <- attr(x, "var") if (covariance){ nms<-outer(rownames(x),colnames(x),paste,sep=":") m<-cbind(as.vector(x), sqrt(diag(vv))) rownames(m)<-nms } else{ ii <- which(diag(sqrt(length(x)))>0) m <- cbind(x[ii], sqrt(diag(vv))[ii]) } colnames(m) <- c(attr(x, "statistic"), "SE") printCoefmat(m) } as.matrix.svyvar<-function(x,...) unclass(x) coef.svyratio<-function(object,...,drop=TRUE){ if (!drop) return(object$ratio) cf<-as.vector(object$ratio) nms<-as.vector(outer(rownames(object$ratio),colnames(object$ratio),paste,sep="/")) names(cf)<-nms cf } SE.svyratio<-function(object,...,drop=TRUE){ if(!drop) return(sqrt(object$var)) se<-as.vector(sqrt(object$var)) nms<-as.vector(outer(rownames(object$ratio),colnames(object$ratio),paste,sep="/")) names(se)<-nms se } svyratio<-function(numerator,denominator, design,...){ .svycheck(design) UseMethod("svyratio",design) } svyratio.survey.design<-function(numerator, denominator, design,...){ if (inherits(numerator,"formula")) numerator<-model.frame(numerator,design$variables) else if(typeof(numerator) %in% c("expression","symbol")) numerator<-eval(numerator, design$variables) if (inherits(denominator,"formula")) denominator<-model.frame(denominator,design$variables) else if(typeof(denominator) %in% c("expression","symbol")) denominator<-eval(denominator, design$variables) nn<-NCOL(numerator) nd<-NCOL(denominator) all<-cbind(numerator,denominator) allstats<-svytotal(all,design) rval<-list(ratio=outer(allstats[1:nn],allstats[nn+1:nd],"/")) vars<-matrix(ncol=nd,nrow=nn) for(i in 1:nn){ for(j in 1:nd){ r<-(numerator[,i]-rval$ratio[i,j]*denominator[,j])/sum(denominator[,j]/design$prob) vars[i,j]<-svyCprod(r*1/design$prob, design$strata, design$cluster[[1]], design$fpc, design$nPSU, design$certainty,design$postStrata) } } colnames(vars)<-names(denominator) rownames(vars)<-names(numerator) rval$var<-vars rval$call<-sys.call() class(rval)<-"svyratio" rval } print.svyratio_separate<-function(x,...){ cat("Stratified ratio estimate: ") if (!is.null(x$call)) print(x$call) else if (!is.null(attr(x,"call"))) print(attr(x$call)) for(r in x$ratios) { print(r) } invisible(x) } print.svyratio<-function(x,...){ cat("Ratio estimator: ") if (!is.null(x$call)) print(x$call) else if(!is.null(attr(x,"call"))) print(attr(x,"call")) cat("Ratios=\n") print(x$ratio) cat("SEs=\n") print(sqrt(x$var)) invisible(NULL) } predict.svyratio<-function(object, total, se=TRUE,...){ if (se) return(list(total=object$ratio*total,se=sqrt(object$var)*total)) else return(object$ratio*total) } predict.svyratio_separate<-function(object, total, se=TRUE,...){ if (length(total)!=length(object$ratios)) stop("Number of strata differ in ratio object and totals.") if (!is.null(names(total)) && !is.null(levels(object$strata))){ if (!setequal(names(total), levels(object$strata))) warning("Names of strata differ in ratio object and totals") else if (!all(names(total)==levels(object$strata))){ warning("Reordering supplied totals to make their names match the ratio object") total<-total[match(names(total),levels(object$strata))] } } totals<-mapply(predict, object=object$ratios, total=total,se=se,...,SIMPLIFY=FALSE) if(se){ rval<-totals[[1]]$total v<-totals[[1]]$se^2 for(ti in totals[-1]) { rval<-rval+ti$total v<-v+ti$se^2 } list(total=rval,se=sqrt(v)) } else { rval<-totals[[1]] for (ti in totals[-1]) rval<-rval+ti rval } } cv.svyratio<-function(object,...){ sqrt(object$var)/object$ratio } svytable<-function(formula, design, ...){ UseMethod("svytable",design) } svytable.survey.design<-function(formula, design, Ntotal=NULL, round=FALSE,...){ if (!inherits(design,"survey.design")) stop("design must be a survey design") weights<-1/design$prob ## unstratified or unadjusted if (length(Ntotal)<=1 || !design$has.strata){ if (length(formula)==3) tblcall<-bquote(xtabs(I(weights*.(formula[[2]]))~.(formula[[3]]), data=model.frame(design),...)) else tblcall<-bquote(xtabs(weights~.(formula[[2]]), data=model.frame(design),...)) tbl<-eval(tblcall) if (!is.null(Ntotal)) { if(length(formula)==3) tbl<-tbl/sum(Ntotal) else tbl<-tbl*sum(Ntotal)/sum(tbl) } if (round) tbl<-round(tbl) attr(tbl,"call")<-match.call() class(tbl)<-c("svytable",class(tbl)) return(tbl) } ## adjusted and stratified if (length(formula)==3) tblcall<-bquote(xtabs(I(weights*.(formula[[2]]))~design$strata[,1]+.(formula[[3]]), data=model.frame(design),...)) else tblcall<-bquote(xtabs(weights~design$strata[,1]+.(formula[[2]]), data=model.frame(design),...)) tbl<-eval(tblcall) ss<-match(sort(unique(design$strata[,1])), Ntotal[,1]) dm<-dim(tbl) layer<-prod(dm[-1]) tbl<-sweep(tbl,1,Ntotal[ss, 2]/apply(tbl,1,sum),"*") tbl<-apply(tbl, 2:length(dm), sum) if (round) tbl<-round(tbl) class(tbl)<-c("svytable","xtabs", "table") attr(tbl, "call")<-match.call() tbl } svycoxph<-function(formula,design,subset=NULL,rescale=TRUE,...){ .svycheck(design) UseMethod("svycoxph",design) } svycoxph.survey.design<-function(formula,design, subset=NULL, rescale=TRUE, ...){ subset<-substitute(subset) subset<-eval(subset, model.frame(design),parent.frame()) if (!is.null(subset)) design<-design[subset,] if(any(weights(design)<0)) stop("weights must be non-negative") data<-model.frame(design) g<-match.call() g$formula<-eval.parent(g$formula) g$design<-NULL g$var<-NULL g$rescale <- NULL if (is.null(g$weights)) g$weights<-quote(.survey.prob.weights) else g$weights<-bquote(.survey.prob.weights*.(g$weights)) g[[1]]<-quote(coxph) g$data<-quote(data) g$subset<-quote(.survey.prob.weights>0) g$model <- TRUE ##need to rescale weights for stability ## unless the user doesn't want to if (rescale) data$.survey.prob.weights<-(1/design$prob)/mean(1/design$prob) else data$.survey.prob.weights<-1/design$prob if (!all(all.vars(formula) %in% names(data))) stop("all variables must be in design= argument") g<-with(list(data=data), eval(g)) if (inherits(g, "coxph.penal")) warning("svycoxph does not support penalised terms") g$call<-match.call() g$call[[1]]<-as.name(.Generic) g$printcall<-sys.call(-1) g$printcall[[1]]<-as.name(.Generic) class(g)<-c("svycoxph", class(g)) g$survey.design<-design nas<-g$na.action if (length(nas)) design<-design[-nas,] ## if there are betas... if (length(coef(g))>0){ dbeta.subset<-resid(g,"dfbeta",weighted=TRUE) if (nrow(design)==NROW(dbeta.subset)){ dbeta<-as.matrix(dbeta.subset) } else { dbeta<-matrix(0,ncol=NCOL(dbeta.subset),nrow=nrow(design)) dbeta[is.finite(design$prob),]<-dbeta.subset } if (!is.null(g$naive.var)) ## newer versions of survival switch to robust=TRUE with non-integer weights g$inv.info<-g$naive.var else g$inv.info<-g$var if (inherits(design,"survey.design2")) g$var<-svyrecvar(dbeta, design$cluster, design$strata, design$fpc, postStrata=design$postStrata) else if (inherits(design, "twophase")) g$var<-twophasevar(dbeta, design) else if(inherits(design, "twophase2")) g$var<-twophase2var(dbeta, design) else if(inherits(design, "pps")) g$var<-ppsvar(dbeta,design) else g$var<-svyCprod(dbeta, design$strata, design$cluster[[1]], design$fpc,design$nPSU, design$certainty,design$postStrata) g$wald.test<-coef(g)%*%solve(g$var,coef(g)) } else g$var<-matrix(ncol=0,nrow=0) g$ll<-g$loglik g$loglik<-NULL g$rscore<-NULL g$score<-NA g$degf.resid<-degf(design)-length(coef(g)[!is.na(coef(g))])+1 g } model.frame.svycoxph<-function(formula,...){ f<-formula$call env <- environment(formula(formula)) if (is.null(env)) env <- parent.frame() f[[1]]<-as.name("model.frame") f$data<-quote(data) f$design<-NULL f$method<-f$control<-f$singular.ok<-f$model<-f$x<-f$y<-f$iter<-NULL f$formula<-formula(formula) if (is.null(f$weights)) f$weights<-quote(.survey.prob.weights) else f$weights<-bquote(.survey.prob.weights*.(f$weights)) design<-formula$survey.design data<-model.frame(design) data$.survey.prob.weights<-(1/design$prob)/sum(1/design$prob) with(list(data=data), eval(f)) } ## model.matrix.svycoxph<-function (object, data = NULL, contrast.arg = object$contrasts, ## ...) ## { ## if (!is.null(object[["x"]])) ## object[["x"]] ## else { ## if (is.null(data)) ## data <- model.frame(object, ...) ## else data <- model.frame(object, data = data, ...) ## Terms <- object$terms ## attr(Terms, "intercept") <- 1 ## strats <- attr(Terms, "specials")$strata ## cluster <- attr(Terms, "specials")$cluster ## dropx <- NULL ## if (length(cluster)) { ## tempc <- untangle.specials(Terms, "cluster", 1:10) ## ord <- attr(Terms, "order")[tempc$terms] ## if (any(ord > 1)) ## stop("Cluster can not be used in an interaction") ## dropx <- tempc$terms ## } ## if (length(strats)) { ## temp <- untangle.specials(Terms, "strata", 1) ## dropx <- c(dropx, temp$terms) ## } ## if (length(dropx)) { ## newTerms <- Terms[-dropx] ## X <- model.matrix(newTerms, data, contrasts = contrast.arg) ## } ## else { ## newTerms <- Terms ## X <- model.matrix(Terms, data, contrasts = contrast.arg) ## } ## X ## } ## } print.svycoxph<-function(x,...){ print(x$survey.design, varnames=FALSE, design.summaries=FALSE,...) ## x$call<-x$printcall NextMethod() } summary.svycoxph<-function(object,...){ print(object$survey.design,varnames=FALSE, design.summaries=FALSE,...) ## object$call<-object$printcall NextMethod() } survfit.svycoxph<-function(formula,...){ stop("No survfit method for survey models") } extractAIC.svycoxph<-function(fit,...){ stop("No AIC for survey models") } svyglm<-function(formula, design,subset=NULL,family=stats::gaussian(),start=NULL, ...){ .svycheck(design) UseMethod("svyglm",design) } svyglm.survey.design<-function(formula,design,subset=NULL, family=stats::gaussian(),start=NULL, rescale=TRUE,..., deff=FALSE, influence=FALSE){ subset<-substitute(subset) subset<-eval(subset, model.frame(design), parent.frame()) if (!is.null(subset)){ if (any(is.na(subset))) stop("subset must not contain NA values") design<-design[subset,] } data<-model.frame(design) g<-match.call() g$formula<-eval.parent(g$formula) g$influence<-NULL g$design<-NULL g$var <- NULL g$rescale <- NULL g$deff<-NULL g$subset <- NULL ## done it already g$family<-family if (is.null(g$weights)) g$weights<-quote(.survey.prob.weights) else g$weights<-bquote(.survey.prob.weights*.(g$weights)) g$data<-quote(data) g[[1]]<-quote(glm) ##need to rescale weights for stability in binomial ## (unless the user doesn't want to) if (rescale) data$.survey.prob.weights<-(1/design$prob)/mean(1/design$prob) else data$.survey.prob.weights<-(1/design$prob) if(any(is.na(data$.survey.prob.weights))) stop("weights must not contain NA values") if (!all(all.vars(formula) %in% names(data))) stop("all variables must be in design= argument") g<-with(list(data=data), eval(g)) summ<-summary(g) g$naive.cov<-summ$cov.unscaled nas<-g$na.action if (length(nas)) design<-design[-nas,] g$cov.unscaled<-svy.varcoef(g,design) g$df.residual <- degf(design)+1-length(coef(g)[!is.na(coef(g))]) class(g)<-c("svyglm",class(g)) g$call<-match.call() g$call[[1]]<-as.name(.Generic) if(!("formula" %in% names(g$call))) { if (is.null(names(g$call))) i<-1 else i<-min(which(names(g$call)[-1]=="")) names(g$call)[i+1]<-"formula" } if(deff){ vsrs<-summ$cov.scaled*mean(data$.survey.prob.weights) attr(g,"deff")<-g$cov.unscaled/vsrs } if (influence){ estfun<- model.matrix(g)*naa_shorter(nas, resid(g,"working"))*g$weights if (g$rankNROW(estfun))){ estfun1<-matrix(0,ncol=ncol(estfun),nrow=nrow(data)) estfun1[-nas,]<-estfun estfun<-estfun1 } attr(g, "influence")<-estfun%*%g$naive.cov } g$survey.design<-design g } print.svyglm<-function(x,...){ print(x$survey.design, varnames=FALSE, design.summaries=FALSE,...) NextMethod() } coef.svyglm<-function(object,complete=FALSE,...,na.rm=!complete) { beta<-object$coefficients if (!na.rm || length(beta)==object$rank) beta else beta[object$qr$pivot[1:object$rank]] } vcov.svyglm<-function(object,...) { v<-object$cov.unscaled dimnames(v)<-list(names(coef(object)),names(coef(object))) v } svy.varcoef<-function(glm.object,design){ Ainv<-summary(glm.object)$cov.unscaled nas<-glm.object$na.action estfun<-model.matrix(glm.object)*naa_shorter(nas, resid(glm.object,"working"))*glm.object$weights if (glm.object$rank|z|)")) } else if (df.r > 0) { pvalue <- 2 * pt(-abs(tvalue), df.r) coef.table <- cbind(coef.p, s.err, tvalue, pvalue) dimnames(coef.table) <- list(names(coef.p), c(dn, "t value", "Pr(>|t|)")) } else { coef.table <- cbind(coef.p, s.err, tvalue, NaN) dimnames(coef.table) <- list(names(coef.p), c(dn, "t value", "Pr(>|t|)")) } ans <- c(object[c("call", "terms", "family", "deviance", "aic", "contrasts", "df.residual", "null.deviance", "df.null", "iter")], list(deviance.resid = residuals(object, type = "deviance"), aic = object$aic, coefficients = coef.table, dispersion = dispersion, df = c(object$rank, df.r,NCOL(Qr$qr)), cov.unscaled = covmat, cov.scaled = covmat)) if (correlation) { dd <- sqrt(diag(covmat)) ans$correlation <- covmat/outer(dd, dd) } ans$aliased<-is.na(coef(object,na.rm=FALSE)) ans$survey.design<-list(call=object$survey.design$call) class(ans) <- c("summary.svyglm","summary.glm") return(ans) } confint.svyglm<-function(object,parm,level=0.95,method=c("Wald","likelihood"),ddf=NULL,...){ method<-match.arg(method) if(method=="Wald"){ if (is.null(ddf)) ddf <- object$df.residual if (ddf<=0) { ci<-confint.default(object,parm=parm,level=.95,...)*NaN } else { tlevel <- 1 - 2*pnorm(qt((1 - level)/2, df = ddf)) ci<-confint.default(object,parm=parm,level=tlevel,...) } a <- (1 - level)/2 a <- c(a, 1 - a) pct <- format.perc(a, 3) colnames(ci)<-pct return(ci) } pnames <- names(coef(object)) if (missing(parm)) parm <- seq_along(pnames) else if (is.character(parm)) parm <- match(parm, pnames, nomatch = 0) lambda<-diag(object$cov.unscaled[parm,parm,drop=FALSE])/diag(object$naive.cov[parm,parm,drop=FALSE]) if(is.null(ddf)) ddf<-object$df.residual if (ddf==Inf){ alpha<-pnorm(qnorm((1-level)/2)*sqrt(lambda))/2 } else if (ddf<=0) { stop("zero or negative denomintor df") } else { alpha<-pnorm(qt((1-level)/2,df=ddf)*sqrt(lambda))/2 } rval<-vector("list",length(parm)) for(i in 1:length(parm)){ temp<-MASSprofile_glm(fitted=object,which=parm[i],alpha=alpha[i],...) rval[[i]]<-confint_profile(temp,parm=parm[i],level=level, unscaled_level=2*alpha[i],...) } names(rval)<-pnames[parm] if (length(rval)==1) rval<-rval[[1]] else rval<-do.call(rbind,rval) attr(rval,"levels")<-level rval } ## ## based on MASS:::confint.profile.glm ## which is GPL and (c) Bill Venables and Brian D Ripley. ## confint_profile <- function (object, parm = seq_along(pnames), level = 0.95, unscaled_level, ...) { of <- attr(object, "original.fit") pnames <- names(coef(of)) if (is.character(parm)) parm <- match(parm, pnames, nomatch = 0L) a <- (1-level)/2 a <- c(a, 1 - a) pct <- paste(round(100 * a, 1), "%") ci <- array(NA, dim = c(length(parm), 2L), dimnames = list(pnames[parm], pct)) cutoff <- c(qnorm(unscaled_level),qnorm(unscaled_level, lower.tail=FALSE)) for (pm in parm) { pro <- object[[pnames[pm]]] if (is.null(pro)) next if (length(pnames) > 1L) sp <- spline(x = pro[, "par.vals"][, pm], y = pro[, 1]) else sp <- spline(x = pro[, "par.vals"], y = pro[, 1]) ci[pnames[pm], ] <- approx(sp$y, sp$x, xout = cutoff)$y } drop(ci) } ## ## MASS:::profile.glm with very slight changes to avoid rounding error in 1-alpha ## original is GPL and (c) Bill Venables and Brian D Ripley. ## MASSprofile_glm<-function (fitted, which = 1:p, alpha = 0.01, maxsteps = 10, del = zmax/5, trace = FALSE, ...) { Pnames <- names(B0 <- coef(fitted)) nonA <- !is.na(B0) pv0 <- t(as.matrix(B0)) p <- length(Pnames) if (is.character(which)) which <- match(which, Pnames) summ <- summary(fitted) std.err <- summ$coefficients[, "Std. Error", drop = FALSE] mf <- model.frame(fitted) Y <- model.response(mf) n <- NROW(Y) O <- model.offset(mf) if (!length(O)) O <- rep(0, n) W <- model.weights(mf) if (length(W) == 0L) W <- rep(1, n) OriginalDeviance <- deviance(fitted) DispersionParameter <- summ$dispersion X <- model.matrix(fitted) fam <- family(fitted) switch(fam$family, binomial = , poisson = , `Negative Binomial` = { zmax <- sqrt(qchisq(alpha, 1,lower.tail=FALSE)) profName <- "z" }, gaussian = , quasi = , inverse.gaussian = , quasibinomial = , quasipoisson = , { zmax <- sqrt(qf(alpha, 1, n - p,lower.tail=FALSE)) profName <- "tau" }) prof <- vector("list", length = length(which)) names(prof) <- Pnames[which] for (i in which) { if (!nonA[i]) next zi <- 0 pvi <- pv0 a <- nonA a[i] <- FALSE Xi <- X[, a, drop = FALSE] pi <- Pnames[i] for (sgn in c(-1, 1)) { if (trace) message("\nParameter: ", pi, " ", c("down", "up")[(sgn + 1)/2 + 1]) step <- 0 z <- 0 LP <- X[, nonA, drop = FALSE] %*% B0[nonA] + O while ((step <- step + 1) < maxsteps && abs(z) < zmax) { bi <- B0[i] + sgn * step * del * std.err[Pnames[i], 1] o <- O + X[, i] * bi fm <- glm.fit(x = Xi, y = Y, weights = W, etastart = LP, offset = o, family = fam, control = fitted$control) LP <- Xi %*% fm$coefficients + o ri <- pv0 ri[, names(coef(fm))] <- coef(fm) ri[, pi] <- bi pvi <- rbind(pvi, ri) zz <- (fm$deviance - OriginalDeviance)/DispersionParameter if (zz > -0.001) zz <- max(zz, 0) else stop("profiling has found a better solution, so original fit had not converged") z <- sgn * sqrt(zz) zi <- c(zi, z) } } si <- order(zi) prof[[pi]] <- structure(data.frame(zi[si]), names = profName) prof[[pi]]$par.vals <- pvi[si, , drop = FALSE] } val <- structure(prof, original.fit = fitted, summary = summ) class(val) <- c("profile.glm", "profile") val } ### svymle<-function(loglike, gradient=NULL, design, formulas, start=NULL, control=list(), na.action="na.fail", method=NULL,lower=NULL,upper=NULL, influence=FALSE,...){ if(is.null(method)) method<-if(is.null(gradient)) "Nelder-Mead" else "newuoa" if (!inherits(design,"survey.design")) stop("design is not a survey.design") weights<-weights(design) wtotal<-sum(weights) if (!(method %in% c("bobyqa","newuoa")) && is.null(control$fnscale)) control$fnscale <- -wtotal/length(weights) if (inherits(design, "twophase")) { data<-design$phase1$sample$variables } else { data<-design$variables } ## Get the response variable nms<-names(formulas) if (nms[1]==""){ if (inherits(formulas[[1]],"formula")) { y<-eval.parent(model.frame(formulas[[1]],data=data,na.action=na.pass)) } else { y<-eval(y,data,parent.frame()) } formulas[1]<-NULL if (FALSE && NCOL(y)>1) stop("Y has more than one column") } else { ## one formula must have response has.response<-sapply(formulas,length)==3 if (sum(has.response)!=1) stop("Need a response variable") ff<-formulas[[which(has.response)]] ff[[3]]<-1 y<-eval.parent(model.frame(ff,data=data,na.action=na.pass)) formulas[[which(has.response)]]<-delete.response(terms(formulas[[which(has.response)]])) nms<-c("",nms) } if(length(which(nms==""))>1) stop("Formulas must have names") mf<-vector("list",length(formulas)) vnms <- unique(do.call(c, lapply(formulas, all.vars))) uformula <- make.formula(vnms) mf <- model.frame(uformula, data=data,na.action=na.pass) mf <- cbind(`(Response)`=y, mf) mf<-mf[,!duplicated(colnames(mf)),drop=FALSE] mf<-get(na.action)(mf) nas<-attr(mf,"na.action") if (length(nas)) design<-design[-nas,] weights<-1/design$prob wtotal<-sum(weights) Y<-mf[,1] # mm <- lapply(formulas,model.matrix, data=mf) mmFrame <- lapply(formulas,model.frame, data=mf) mm = mapply(model.matrix, object = formulas, data=mmFrame, SIMPLIFY=FALSE) mmOffset <- lapply(mmFrame, model.offset) # add a vector of zeros if there is no offset provided noOffset = which(unlist(lapply(mmOffset, length))==0) for(D in noOffset) { mmOffset[[D]] = rep(0, NROW(mm[[1]])) } ## parameter names parnms<-lapply(mm,colnames) for(i in 1:length(parnms)) parnms[[i]]<-paste(nms[i+1],parnms[[i]],sep=".") parnms<-unlist(parnms) # maps position in theta to model matrices np<-c(0,cumsum(sapply(mm,NCOL))) objectivefn<-function(theta,...){ args<-vector("list",length(nms)) args[[1]]<-Y for(i in 2:length(nms)) args[[i]]<-mm[[i-1]]%*%theta[(np[i-1]+1):np[i]] + mmOffset[[i-1]] names(args)<-nms args<-c(args, ...) sum(do.call("loglike",args)*weights) } if (is.null(gradient)) { grad<-NULL } else { fnargs<-names(formals(loglike))[-1] grargs<-names(formals(gradient))[-1] if(!identical(fnargs,grargs)) stop("loglike and gradient have different arguments.") reorder<-na.omit(match(grargs,nms[-1])) grad<-function(theta,...){ args<-vector("list",length(nms)) args[[1]]<-Y for(i in 2:length(nms)) args[[i]]<-drop( mm[[i-1]]%*%theta[(np[i-1]+1):np[i]] + mmOffset[[i-1]]) names(args)<-nms args<-c(args,...) rval<-NULL tmp<-do.call("gradient",args) for(i in reorder){ rval<-c(rval, colSums(as.matrix(tmp[,i]*weights*mm[[i]]))) } drop(rval) } } theta0<-numeric(np[length(np)]) if (is.list(start)) st<-do.call("c",start) else st<-start if (length(st)==length(theta0)) { theta0<-st } else { stop("starting values wrong length") } if (method=="nlm"){ ff<-function(theta){ rval<- -objectivefn(theta) if (is.na(rval)) rval<- -Inf attr(rval,"gradient")<- -grad(theta) rval } rval<-nlm(ff, theta0,hessian=TRUE) if (rval$code>3) warning("nlm did not converge") rval$par<-rval$estimate } else if (method == "newuoa"){ rval<-minqa::uobyqa(theta0, function(par,...) -objectivefn(par,...), control=control, ...) if(rval$ier>0) warning(rval$msg) rval$hessian <- numDeriv::hessian(objectivefn, rval$par) } else if (method == "bobyqa"){ if (is.list(lower)) lower<-do.call(c, lower) if (is.list(upper)) upper<-do.call(c,upper) rval<-minqa::bobyqa(theta0, function(par,...) -objectivefn(par,...), control=control,lower=lower,upper=upper, ...) if(rval$ier>0) warning(rval$msg) rval$hessian <- numDeriv::hessian(objectivefn,rval$par) }else { rval<-optim(theta0, objectivefn, grad,control=control, hessian=TRUE,method=method,...) if (rval$conv!=0) warning("optim did not converge") } names(rval$par)<-parnms dimnames(rval$hessian)<-list(parnms,parnms) if (is.null(gradient)) { rval$invinf<-solve(-rval$hessian) rval$scores<-NULL rval$sandwich<-NULL } else { theta<-rval$par args<-vector("list",length(nms)) args[[1]]<-Y for(i in 2:length(nms)) args[[i]]<-drop(mm[[i-1]]%*%theta[(np[i-1]+1):np[i]]+ mmOffset[[i-1]]) names(args)<-nms args<-c(args,...) deta<-do.call("gradient",args) rval$scores<-NULL for(i in reorder) rval$scores<-cbind(rval$scores,deta[,i]*weights*mm[[i]]) rval$invinf<-solve(-rval$hessian) dimnames(rval$invinf)<-list(parnms,parnms) db<-rval$scores%*%rval$invinf if (inherits(design,"survey.design2")) rval$sandwich<-svyrecvar(db,design$cluster,design$strata, design$fpc, postStrata=design$postStrata) else if (inherits(design, "twophase")) rval$sandwich<-twophasevar(db,design) else rval$sandwich<-svyCprod(db,design$strata,design$cluster[[1]], design$fpc, design$nPSU, design$certainty, design$postStrata) dimnames(rval$sandwich)<-list(parnms,parnms) } if (influence){ if (nas && (NROW(data)>NROW(db))){ db1<-matrix(0,nrow=NROW(data),ncol=NCOL(db)) db1[-nas,]<-db db<-db1 } attr(rval,"influence")<-db } rval$call<-match.call() rval$design<-design class(rval)<-"svymle" rval } coef.svymle<-function(object,...) object$par vcov.svymle<-function(object,stderr=c("robust","model"),...) { stderr<-match.arg(stderr) if (stderr=="robust"){ rval<-object$sandwich if (is.null(rval)) { p<-length(coef(object)) rval<-matrix(NA,p,p) } } else { rval<-object$invinf*mean(1/object$design$prob) } rval } print.svymle<-function(x,...){ cat("Survey-sampled mle: \n") print(x$call) cat("Coef: \n") print(x$par) } summary.svymle<-function(object,stderr=c("robust","model"),...){ cat("Survey-sampled mle: \n") print(object$call) stderr<-match.arg(stderr) tbl<-data.frame(Coef=coef(object),SE=sqrt(diag(vcov(object,stderr=stderr)))) tbl$p.value<-format.pval(2*(1-pnorm(abs(tbl$Coef/tbl$SE))), digits=3,eps=0.001) print(tbl) print(object$design) } model.frame.survey.design<-function(formula,...,drop=TRUE){ formula$variables } model.frame.svyrep.design<-function(formula,...){ formula$variables } model.frame.survey.design2<-function(formula,...){ formula$variables } .onLoad<-function(...){ if (is.null(getOption("survey.lonely.psu"))) options(survey.lonely.psu="fail") if (is.null(getOption("survey.ultimate.cluster"))) options(survey.ultimate.cluster=FALSE) if (is.null(getOption("survey.want.obsolete"))) options(survey.want.obsolete=FALSE) if (is.null(getOption("survey.adjust.domain.lonely"))) options(survey.adjust.domain.lonely=FALSE) if (is.null(getOption("survey.drop.replicates"))) options(survey.drop.replicates=TRUE) if (is.null(getOption("survey.multicore"))) options(survey.multicore=FALSE) if (is.null(getOption("survey.replicates.mse"))) options(survey.replicates.mse=FALSE) } predterms<-function(object,se=FALSE,terms=NULL){ tt<-terms(object) n <- length(object$residuals) p <- object$rank p1 <- seq_len(p) piv <- object$qr$pivot[p1] beta<-coef(object) X<-mm<-model.matrix(object) aa <- attr(mm, "assign") ll <- attr(tt, "term.labels") hasintercept <- attr(tt, "intercept") > 0L if (hasintercept) ll <- c("(Intercept)", ll) aaa <- factor(aa, labels = ll) asgn <- split(order(aa), aaa) if (hasintercept) { asgn$"(Intercept)" <- NULL } avx <- colMeans(mm) termsconst <- sum(avx[piv] * beta[piv]) nterms <- length(asgn) ip <- matrix(ncol = nterms, nrow = NROW(X)) if (nterms > 0) { predictor <- matrix(ncol = nterms, nrow = NROW(X)) dimnames(predictor) <- list(rownames(X), names(asgn)) if (hasintercept) X <- sweep(X, 2L, avx, check.margin = FALSE) unpiv <- rep.int(0L, NCOL(X)) unpiv[piv] <- p1 for (i in seq.int(1L, nterms, length.out = nterms)) { iipiv <- asgn[[i]] ii <- unpiv[iipiv] iipiv[ii == 0L] <- 0L predictor[, i] <- if (any(iipiv > 0L)) X[, iipiv, drop = FALSE] %*% beta[iipiv] else 0 if (se){ ip[,i]<-if (any(iipiv > 0L)) rowSums(as.matrix(X[, iipiv, drop = FALSE] %*% vcov(object)[ii,ii]) * X[, iipiv, drop = FALSE]) else 0 } } if (!is.null(terms)) { predictor <- predictor[, terms, drop = FALSE] if (se) ip <- ip[, terms, drop = FALSE] } } else { predictor <- ip <- matrix(0, n, 0) } attr(predictor, "constant") <- if (hasintercept) termsconst else 0 if(se) dimnames(ip)<-dimnames(predictor) if (se) list(fit=predictor,se.fit=sqrt(ip)) else predictor } predict.svyglm <- function(object, newdata=NULL, total=NULL, type = c("link", "response","terms"), se.fit=(type!="terms"), vcov=FALSE,...){ if(is.null(newdata)) newdata<-model.frame(object$survey.design) type<-match.arg(type) if (type=="terms") return(predterms(object,se=se.fit,...)) tt<-delete.response(terms(formula(object))) mf<-model.frame(tt,data=newdata, xlev=object$xlevels) mm<-model.matrix(tt,mf,contrasts.arg = object$contrasts) if (!is.null(total) && attr(tt,"intercept")){ mm[,attr(tt,"intercept")]<-mm[,attr(tt,"intercept")]*total } eta<-drop(mm %*% coef(object)) d<-drop(object$family$mu.eta(eta)) eta<-switch(type, link=eta, response=object$family$linkinv(eta)) if(se.fit){ if(vcov){ vv<-mm %*% vcov(object) %*% t(mm) attr(eta,"var")<-switch(type, link=vv, response=d*(t(vv*d))) } else { ## FIXME make this more efficient vv<-drop(rowSums((mm %*% vcov(object)) * mm)) attr(eta,"var")<-switch(type, link=vv, response=drop(d*(t(vv*d)))) } } attr(eta,"statistic")<-type class(eta)<-"svystat" eta } survey/R/svymi.R0000644000176200001440000002330314233634027013307 0ustar liggesusers svydesign.imputationList<-function(ids, probs = NULL, strata = NULL, variables = NULL, fpc = NULL, data, nest = FALSE, check.strata = !nest, weights = NULL, pps=FALSE,calibrate.formula=NULL,...){ designs <- lapply(data$imputations, function(d) svydesign(ids=ids, probs=probs, strata=strata,variables=variables,fpc=fpc,nest=nest, check.strata=check.strata, weights=weights,data=d,pps=pps,calibrate.formula=calibrate.formula,...)) rval <- list(designs=designs, call=sys.call(-1)) class(rval) <- "svyimputationList" rval } svrepdesign.imputationList<-function(variables=NULL, repweights,weights,data,mse=getOption("survey.replicates.mse"),...){ ## dispatch on data= if (!is.null(variables) && !inherits(variables,"imputationList")) stop("'variables' must also be an 'imputationList' (or NULL)") if(!is.null(variables)){ if (inherits(repweights,"imputationList")){ designs <- mapply(function(v,d,r) svrepdesign(variables=v, repweights=r, weights=weights,data=NULL,mse=mse,...), variables$imputations,data$imputations, repweights$imputations,SIMPLIFY=FALSE) } else { designs <- mapply(function(d,v) svrepdesign(variables=v, repweights=repweights, weights=weights,data=d,mse=mse,...), data$imputations,variables$imputations,SIMPLIFY=FALSE) } }else{ if (inherits(repweights,"imputationList")){ designs <- mapply(function(d,r) svrepdesign(repweights=r, weights=weights,data=NULL,mse=mse,...), data$imputations, repweights$imputations,SIMPLIFY=FALSE) } else { designs <- lapply(data$imputations, function(d) svrepdesign( repweights=repweights, weights=weights,data=d,mse=mse,...)) } } rval <- list(designs=designs, call=sys.call(-1)) class(rval) <- "svyimputationList" rval } as.svrepdesign.svyimputationList<-function(design,type=c("auto","JK1","JKn","BRR","bootstrap","subbootstrap","mrbbootstrap","Fay"), fay.rho=0, fpc=NULL, fpctype=NULL, separate.replicates=FALSE,...,compress=TRUE, mse=getOption("survey.replicates.mse")){ if (inherits(design$design[[1]], "svyrep.design")){ warning("already a replicate-weights design") return(design) } pwts<-weights(design$designs[[1]], "sampling") same.weights<-all(sapply(design$designs, function (d) isTRUE(all.equal(pwts, weights(d,"sampling"))))) if (!same.weights && separate.replicates){ repdesigns<-lapply(design$designs, function(d) as.svrepdesign(d, type=type,fay.rho=fay.rho, fpc=fpc,fpctype=fpctype, ..., compress=compress, mse=mse)) } else { design1<-design$designs[[1]] repdesign1<-as.svrepdesign(design1, type=type,fay.rho=fay.rho, fpc=fpc,fpctype=fpctype, ..., compress=compress, mse=mse) repdesigns<-lapply(design$designs, function(d) { repdesign1$variables<-d$variables repdesign1 }) } rval<-list(designs=repdesigns, call=sys.call(-1)) class(rval)<-"svyimputationList" rval } svydesign.DBimputationList<-function(ids, probs = NULL, strata = NULL, variables = NULL, fpc = NULL, data, nest = FALSE, check.strata = !nest, weights = NULL, ...){ design.vars<-c(all.vars(ids), all.vars(probs), all.vars(strata),all.vars(fpc), all.vars(weights)) design.query<-paste("select", paste(design.vars,collapse=","), "from", data$imputations[1]) design.data<-DBI::dbGetQuery(data$db$connection, design.query) rval<-list() rval$design<-svydesign(ids=ids, probs=probs, strata=strata, data=design.data, fpc=fpc, variables=variables, nest=nest,check.strata=check.strata, weights=weights) class(rval$design)<-c("DBIsvydesign", class(rval$design)) rval$design$updates<-data$updates rval$db<-data$db rval$imputations<-data$imputations rval$variables<-NULL rval$call<-sys.call(-1) class(rval)<-"svyDBimputationList" rval } print.svyDBimputationList<-function(x,...){ cat("DB-backed Multiple (",length(x$imputations),") imputations: ",sep="") print(x$call) } print.svyimputationList<-function(x,...){ cat("Multiple (",length(x$designs),") imputations: ",sep="") print(x$call) } dim.svyimputationList<-function(x){ c(dim(x$designs[[1]]),length(x$designs)) } dimnames.svyimputationList<-function(x){ c(dimnames(x$designs[[1]]),list(paste("imputation",1:length(x$designs)))) } subset.svyimputationList<-function(x, subset,...){ n<-nrow(x$designs[[1]]) e<-substitute(subset) r<-eval(e,x$designs[[1]]$variables, parent.frame()) r <- r & !is.na( r ) x$designs[[1]]<-x$designs[[1]][r,] same<-TRUE for(i in 2:length(x$designs)){ r1<-eval(e,x$designs[[i]]$variables, parent.frame()) x$designs[[i]]<-x$designs[[i]][r1,] r1<-r1 & !is.na(r1) if (any(r!=r1)) { same<-FALSE } } if (!same) warning('subset differed between imputations') x$call<-sys.call(-1) x } subset.svyDBimputationList<-function(x, subset,...,all=FALSE){ n<-nrow(x$designs[[1]]) e<-substitute(subset) df<-getvars(all.vars(e), x$db$connection, x$imputations[1], db.only=FALSE, updates=x$design$updates) r<-eval(e,df, parent.frame()) same<-TRUE for(i in 2:length(x$imputations)){ df<-getvars(all.vars(e), x$db$connection, x$imputations[i], db.only=FALSE, updates=x$design$updates) r1<-eval(e,df, parent.frame()) r1<-r1 & !is.na(r1) if (any(r!=r1)) { same<-FALSE if (all) r <- r & r1 else r<- r | r1 } } if (!same) warning('subset differed between imputations') x$design<-x$design[r,] x$call<-sys.call(-1) x } with.svyimputationList<-function (data, expr, fun, ..., multicore=getOption("survey.multicore")) { pf <- parent.frame() if (multicore && !requireNamespace("parallel",quietly=TRUE)) multicore<-FALSE if (!is.null(match.call()$expr)) { expr <- substitute(expr) expr$design<-as.name(".design") if (multicore){ results <- parallel::mclapply(data$designs, function(.design) { eval(expr, list(.design=.design),enclos=pf) } ) } else{ results <- lapply(data$designs, function(.design) { eval(expr, list(.design=.design),enclos=pf) } ) } } else { results <- lapply(data$designs, fun, ...) } if (all(sapply(results, inherits, what = "imputationResult"))) { class(results) <- "imputationResultList" results$call <- sys.call(-1) } else { attr(results, "call") <- sys.call(-1) } results } withReplicates.svyimputationList<-function(design, theta,...,return.replicates=FALSE){ if (!inherits(design$designs[[1]],"svyrep.design")) stop("not a replicate-weights design") m<-match.call() m[[1]]<-as.name("withReplicates") rval<-eval(bquote(with(design, .(m)))) attr(rval,"call")<-m rval } with.svyDBimputationList<-function (data, expr, ..., multicore=getOption("survey.multicore")) { pf <- parent.frame() if (!is.null(match.call()$expr)) { expr <- substitute(expr) expr$design<-as.name(".design") if (multicore && !requireNamespace("parallel")) multicore <-FALSE if (multicore){ results<-parallel::mclapply(data$imputations, function(tablename) { close(data) .design<-data$design db<-data$db db$tablename<-tablename .design$db<-db .design<-open(.design) rval<-eval(expr, list(.design=.design),enclos=pf) close(.design) rval } ) } else { results <- lapply(data$imputations, function(tablename) { .design<-data$design db<-data$db db$tablename<-tablename .design$db<-db eval(expr, list(.design=.design),enclos=pf) } ) } } attr(results, "call") <- sys.call(-1) results } update.svyDBimputationList<-function(object, ...){ dots <- substitute(list(...))[-1] newnames <- names(dots) updates<-lapply(dots, function(dot){ list(inputs=all.vars(dot),expression=dot) }) if (is.null(object$design$updates)) object$design$updates<-list(updates) else object$design$updates<-c(object$design$updates, list(updates)) object } update.svyimputationList<-function(object, ...){ dots <- substitute(list(...))[-1] newnames <- names(dots) for (i in seq(along = object$designs)) { for (j in seq(along = dots)) { object$designs[[i]]$variables[, newnames[j]] <- eval(dots[[j]], object$designs[[i]]$variables, parent.frame()) } } object } close.svyDBimputationList<-function(con,...){ dbcon<-con$db$connection DBI::dbDisconnect(dbcon) invisible(con) } open.svyDBimputationList<-function(con,...){ dbdriver<-DBI::dbDriver(con$db$dbtype) con$db$connection<-DBI::dbConnect(dbdriver,dbname=con$db$dbname,...) con } survey/R/chisqsum.R0000644000176200001440000000553514166647050014010 0ustar liggesusers pchisqsum<-function(x,df,a,lower.tail=TRUE, method=c("satterthwaite","integration","saddlepoint")){ satterthwaite<-function(a,df){ if(any(df>1)){ a<-rep(a,df) } tr<-mean(a) tr2<-mean(a^2)/(tr^2) list(scale=tr*tr2, df=length(a)/tr2) } ## chisqphi<-function(t, df=1,a=1){ ## (1-(0+2i)*a*t)^(-df/2) ## } ## make.integrand<-function(x,DF,A){ ## m<-length(DF) ## function(t){ ## n<-length(t) ## tmp<-matrix(chisqphi(rep(t,each=m),rep(DF,n),rep(A,n) ),ncol=n) ## phi<-apply(tmp,2,prod) ## rval<-Im(phi*exp(-(0+1i)*t*x)/(pi*t)) ## rval[t==0]<-x/(pi) ## rval ## } ## } method<-match.arg(method) sat<-satterthwaite(a,df) guess<-pchisq(x/sat$scale,sat$df,lower.tail=lower.tail) if (method=="satterthwaite") return(guess) method<-match.arg(method) if (method=="integration" && !(requireNamespace("CompQuadForm",quietly=TRUE))){ warning("Package 'CompQuadForm' not found, using saddlepoint approximation") method<-"saddlepoint" } abstol<-guess/1000 abstol<-pmax(1e-9, abstol) reltol<-rep(1/1000,length(abstol)) if (method=="integration"){ if (any(a<=0)){ for(i in seq(length=length(x))){ f<-CompQuadForm::davies(x[i],a,df,acc=1e-7) if (f$ifault>0) warning("Probable loss of accuracy ") guess[i]<-f$Qq } if(any(guess<1e-6)) warning("Probable loss of accuracy ") } else{ for(i in seq(length=length(x))){ ## version 1.4.2 of CompQuadForm changed the *name* of the result. Grr. temp<-CompQuadForm::farebrother(x[i],a,df) guess[i]<-if ("Qq" %in% names(temp)) temp$Qq else temp$res } if(any(guess<1e-9)) warning("Probable loss of accuracy ") } if (lower.tail) guess<-1-guess return(guess) } else if (method=="saddlepoint"){ lambda<-rep(a,df) sad<-sapply(x,saddle,lambda=lambda) if (lower.tail) sad<-1-sad guess<-ifelse(is.na(sad),guess,sad) return(guess) } } saddle<-function(x,lambda){ d<-max(lambda) lambda<-lambda/d x<-x/d k0<-function(zeta) -sum(log(1-2*zeta*lambda))/2 kprime0<-function(zeta) sapply(zeta, function(zz) sum(lambda/(1-2*zz*lambda))) kpprime0<-function(zeta) 2*sum(lambda^2/(1-2*zeta*lambda)^2) n<-length(lambda) if (any(lambda < 0)) { lmin <- max(1/(2 * lambda[lambda < 0])) * 0.99999 } else if (x>sum(lambda)){ lmin <- -0.01 } else { lmin<- -length(lambda)/(2*x) } lmax<-min(1/(2*lambda[lambda>0]))*0.99999 hatzeta <- uniroot(function(zeta) kprime0(zeta) - x, lower = lmin, upper = lmax, tol = 1e-08)$root w<-sign(hatzeta)*sqrt(2*(hatzeta*x-k0(hatzeta))) v<-hatzeta*sqrt(kpprime0(hatzeta)) if (abs(hatzeta)<1e-4) NA else pnorm(w+log(v/w)/w, lower.tail=FALSE) } survey/R/svycdf.R0000644000176200001440000000262111533517727013445 0ustar liggesuserssvycdf<-function(formula,design,na.rm=TRUE,...) UseMethod("svycdf",design) svycdf.default<-function(formula, design,na.rm=TRUE,...){ if (inherits(formula, "formula")) x <- model.frame(formula, model.frame(design), na.action = na.pass) else if (typeof(formula) %in% c("expression", "symbol")) x <- eval(formula, model.frame(design, na.action = na.pass)) else x<-formula if (na.rm) { nas <- rowSums(is.na(x)) x <- x[nas == 0, , drop = FALSE] } rval<-vector("list",ncol(x)) names(rval)<-names(x) for(i in 1:ncol(x)){ xx<-x[,i] w <- weights(design,type="sampling")[nas==0] oo<-order(xx) cum.w<-cumsum(w[oo])/sum(w) cdf <- approxfun( xx[oo],cum.w, method = "constant", yleft =0, yright =1,ties="max") class(cdf)<-"stepfun" call.i<-match.call() call.i$formula<-as.formula(paste("~",names(x)[i])) attr(cdf,"call")<-call.i rval[[names(x)[i]]]<-cdf } class(rval)<-"svycdf" cc<-sys.call() cc[[1]]<-as.name(.Generic) attr(rval,"call")<-cc rval } print.svycdf<-function(x,...){ cat("Weighted ECDFs: ") print(attr(x,"call")) invisible(x) } plot.svycdf<-function(x,xlab=NULL,...){ if(is.null(xlab)) xlab<-names(x) else if (length(xlab)==1) xlab<-rep(xlab,length(names(x))) for (i in 1:length(x)) plot(x[[i]], xlab =xlab[i], ...) } survey/R/ftable.svystat.R0000755000176200001440000000372511457435612015126 0ustar liggesusers ftable.svystat<-function(x, rownames=NULL, ...){ m<-cbind(coef(x),SE(x)) if (is.null(rownames)) return(as.table(m)) statname<-if (is.list(x)) attr(x[[1]],"statistic") else attr(x,"statistic") deff<-attr(x,"deff") has.deff<-!is.null(deff) if (has.deff) m<-cbind(m,diag(deff)) rowdim<-sapply(rownames,length) if (has.deff){ mm<-array(m,dim=c(rowdim,NCOL(m)), dimnames=c(as.list(rownames), list(c(statname,"SE","Deff")))) ftable(mm,row.vars=length(rowdim)+0:1) } else { mm<-array(m,dim=c(rowdim,NCOL(m)), dimnames=c(as.list(rownames), list(c(statname,"SE")))) ftable(mm,row.vars=length(rowdim)+0:1) } } ftable.svrepstat<-ftable.svystat ftable.svyby <- function (x, ...) { info <- attr(x, "svyby") margins <- info$margins dimnames <- lapply(x[, margins, drop = FALSE], levels) dims <- sapply(dimnames, length) dims <- c(dims, variable = info$nstats) senames<-c(se="SE",cv="cv",cvpct="cv%",var="Var")[info$vartype] if (info$vars || info$deffs) { dims <- c(dims, 1 + info$vars + info$deffs) dimnames <- c(dimnames, list(sub("^statistic\\.(.*)$", "\\1", info$variables)), list(c(info$statistic, if (info$vars) senames, if (info$deffs) "DEff"))) } else if (info$nstats == 1) { dimnames <- c(dimnames, list(info$statistic)) } else { dimnames <- c(dimnames, list(info$variables)) } ## fix by Sergio Calva for ordering bug. x <- x[do.call("order",x[,rev(margins),drop = FALSE]),] rval <- array(as.matrix(x[, -margins, drop = FALSE]), dim = dims, dimnames = dimnames) ftable(rval, row.vars = c(1, length(dim(rval)))) } if(FALSE){ odfTable.svystat <- function(x,...) odfTable(as.data.frame(x),...) odfTable.table <- odfTable.matrix } survey/R/regtest.R0000755000176200001440000003122714412404246013621 0ustar liggesusers##deviance methods not exported, used by method="LRT" deviance.svycoxph<-function(object,...) if(length(object$ll)==2) 2 * (object$ll[1] - object$ll[2]) else 0 deviance.coxph<-function(object,...) if(length(object$loglik)==2) 2 * (object$loglik[1] - object$loglik[2]) else 0 explicit1<-function(formula){ if (length(formula)==1) return(formula==1) if (!(formula[[1]]=="+" || formula[[1]]=="*" || formula[[1]]=="/" || formula[[1]]=="^"|| formula[[1]]=="~")) return(FALSE) if (length(formula)==3){ (formula[[2]]==1) || explicit1(formula[[2]]) || explicit1(formula[[3]]) } else { (formula[[2]]==1) || explicit1(formula[[2]]) } } regTermTest<-function(model, test.terms, null=NULL, df=NULL, method=c("Wald","WorkingWald","LRT"), lrt.approximation="saddlepoint"){ method<-match.arg(method) canonicalOrder<-function(term){ tt<-strsplit(term,":") tt<-lapply(tt,sort) sapply(tt,paste,collapse=":") } if(inherits(test.terms,"formula")){ test_intercept<-explicit1(test.terms) test.terms<-attr(terms(test.terms),"term.labels") } else test_intercept<-FALSE okbeta<-!is.na(coef(model,na.rm=FALSE)) ## na.rm for svyglm tt<-attr(terms(model),"term.labels") aa<-attr(model.matrix(model),"assign")[okbeta] if((inherits(model,"svyloglin") || inherits(model,"svyolr")) && attr(terms(model),"intercept")){ aa<-aa[-1] } index<-which(aa %in% match(canonicalOrder(test.terms),canonicalOrder(tt))) if (any(is.na(index))) stop("Terms didn't match:",canonicalOrder(test.terms),canonicalOrder(tt)) if (test_intercept){ if (attr(terms(model),"intercept")) index<-unique(c(1,index)) else stop("model does not have an intercept") } beta<-coef(model)[index] if (!is.null(null)) beta<-beta-null V<-vcov(model)[index,index] ## this should be rewritten as methods, but that's not happening any time soon. if (is.null(df)){ if (inherits(model,"svyglm")) df<-model$df.residual else if (inherits(model, "svycoxph")) df<-model$degf.resid else if (inherits(model,"lm")) df<-model$df.residual else if (inherits(model,"coxph")) df<-model$n-length(coef(model)) else if (inherits(model, "MIresult")) df<-min(model$df[index]) else if (inherits(model,"svyloglin")) df<-model$df+1-length(index) else if (inherits(model, "svyolr")) df<-model$df.residual else df<-length(resid(model))-length(coef(model)) } if (method %in% c("LRT","WorkingWald")){ if (inherits(model,"svyglm")) V0<-model$naive.cov else if (inherits(model, "svycoxph")) V0<-model$inv.info else if (inherits(model,"lm")) V0<-vcov(model) else if (inherits(model,"coxph")){ if (is.null(model$naive.var)) V0<-model$var else V0<-model$naive.var } else if (inherits(model,"svyolr")) { V0<-solve(model$Hess) } else stop("method='LRT' not supported for this model") V0<-V0[index,index] if (test_intercept){ test.formula<-make.formula(c(1,test.terms))[[2]] } else { test.formula<-make.formula(test.terms)[[2]] } if (!("formula" %in% names(model$call))) names(model$call)[[2]]<-"formula" if (method=="LRT"){ model0<-eval(bquote(update(.(model), .~.-(.(test.formula)),design=.(model$survey.design),subset=NULL)), environment(formula(model))) ## same missing data if (inherits(model,"svyglm")){ rescale<-mean(model$prior.weights)/mean(model0$prior.weights) } else if (inherits(model,"svycoxph")){ rescale<-mean(model$weights)/mean(model0$weights) } else rescale<-1 ##FIXME -- probably want a generic drop_and_refit function chisq<-deviance(model0)*rescale-deviance(model) } else { chisq<-beta%*%solve(V0)%*%beta } misspec<-eigen(solve(V0)%*%V, only.values=TRUE)$values if (df==Inf) p<-pchisqsum(chisq,rep(1,length(misspec)),misspec,method=lrt.approximation,lower.tail=FALSE) else p<-pFsum(chisq,rep(1,length(misspec)),misspec,ddf=df,method=lrt.approximation,lower.tail=FALSE) rval<-list(call=sys.call(),mcall=model$call,chisq=chisq, df=length(index),test.terms=test.terms, p=p,lambda=misspec,ddf=df) if (method=="LRT") class(rval)<-"regTermTestLRT" else class(rval)<- "regTermTestWW" return(rval) } chisq<-beta%*%solve(V)%*%beta if (df1) cat("(scale factors: ",signif(x$lambda/mean(x$lambda),2),")") else cat("df=1") if (!is.null(x$ddf) && is.finite(x$ddf)) cat("; denominator df=",x$ddf) cat("\n") invisible(x) } print.regTermTestWW<-function(x,...){ if (is.null(x$ddf) || x$ddf==Inf) cat("Working (Rao-Scott) Wald test for ") else cat("Working (Rao-Scott+F) for ") cat(x$test.terms) cat("\n in ") print(x$mcall) chisq<-x$chisq/mean(x$lambda) cat("Working Wald statistic = ",chisq, 'p=',format.pval(x$p),"\n") if (length(x$lambda)>1) cat("(scale factors: ",signif(x$lambda/mean(x$lambda),2),")") else cat("df=1") if (!is.null(x$ddf) && is.finite(x$ddf)) cat("; denominator df=",x$ddf) cat("\n") invisible(x) } svycontrast<-function(stat, contrasts,add=FALSE,...) UseMethod("svycontrast") match.names <- function(nms,contrasts){ l<-length(nms) ll<-sapply(contrasts,length) if (l==0) stop("No names to match") if (length(unlist(sapply(contrasts,names)))==0) return(contrasts) if( !all( unlist(sapply(contrasts,names)) %in% nms)) stop("names not matched") lapply(contrasts, function(con) { r<-numeric(l) names(r)<-nms r[names(con)]<-con r }) } contrast<-function(coef,var,contrasts, influence=NULL){ nas<-is.na(var[,1]) drop<-nas & apply(contrasts,2,function(v) all(v==0)) if(any(drop)){ contrasts<-contrasts[,!drop,drop=FALSE] coef<-coef[!drop] var<-var[!drop,!drop,drop=FALSE] } if (any(is.na(coef))){ badin<-is.na(coef) bad<-((contrasts!=0)%*%is.na(coef))>0 rval<-rep(NA,NROW(contrasts)) rval[!bad]<-contrasts[!bad,!badin,drop=FALSE]%*%coef[!badin] v<-matrix(NA,length(rval),length(rval)) v[!bad,!bad]<-contrasts[!bad,!badin,drop=FALSE]%*%var[!badin,!badin,drop=FALSE]%*%t(contrasts[!bad,!badin,drop=FALSE]) dimnames(v)<-list(names(rval),names(rval)) rval<-drop(rval) if(!is.null(influence)){ attr(rval,"influence")<- influence[,!badin,drop=FALSE]%*%t(contrasts[!bad,!badin,drop=FALSE]) } attr(rval, "var")<-v } else{ rval<-drop(contrasts%*%coef) v<-contrasts%*%var%*%t(contrasts) dimnames(v)<-list(names(rval),names(rval)) if(!is.null(influence)){ attr(rval,"influence")<- influence%*%t(contrasts) } attr(rval,"var")<-v } rval } addQuote<-function(contrasts, original){ ll<-as.list(original) names(ll)<-original ll<-lapply(ll, as.name) c(contrasts,ll) } addLin<-function(contrasts, original){ id<-diag(length(original)) dimnames(id)<-list(original,original) rbind(contrasts,id) } svycontrast.svystat<-function(stat, contrasts,add=FALSE,...){ if (!is.list(contrasts)) contrasts<-list(contrast=contrasts) if (is.language(contrasts[[1]])){ if(add){ contrasts<-addQuote(contrasts,names(coef(stat))) } rval<-nlcon(contrasts,as.list(coef(stat)), vcov(stat), attr(stat,"influence")) class(rval)<-"svrepstat" attr(rval,"statistic")<-"nlcon" return(rval) } contrasts<-match.names(names(coef(stat)),contrasts) contrasts<-do.call(rbind,contrasts) if (add) contrasts<-addLin(contrasts, names(coef(stat))) coef<-contrast(coef(stat),vcov(stat),contrasts, attr(stat,"influence")) class(coef)<-"svystat" attr(coef,"statistic")<-"contrast" coef } svycontrast.svyolr<-function(stat, contrasts,add=FALSE,...){ if (!is.list(contrasts)) contrasts<-list(contrast=contrasts) if (is.language(contrasts[[1]])){ if(add){ contrasts<-addQuote(contrasts,names(coef(stat))) } rval<-nlcon(contrasts,as.list(c(coef(stat),stat$zeta)), vcov(stat)) class(rval)<-"svystat" attr(rval,"statistic")<-"nlcon" return(rval) } contrasts <- match.names(names(coef(stat)), contrasts) contrasts<-do.call(rbind,contrasts) if (add) contrasts<-addLin(contrasts, names(coef(stat))) coef<-contrast(as.vector(as.matrix(coef(stat))), vcov(stat),contrasts) class(coef)<-"svystat" attr(coef,"statistic")<-"contrast" coef } svycontrast.svrepstat<-function(stat, contrasts,add=FALSE,...){ if (!is.list(contrasts)) contrasts<-list(contrast=contrasts) if (is.language(contrasts[[1]])){ if(add){ contrasts<-addQuote(contrasts,names(coef(stat))) } if (is.list(stat) && !is.null(stat$replicates)){ ##replicates rval<-list(nlcon=nlcon(contrasts,as.list(coef(stat)),varmat=NULL)) reps<-as.matrix(stat$replicates) colnames(reps)<-names(coef(stat)) xreps<-apply(reps,1, function(repi) nlcon(datalist=as.list(repi), exprlist=contrasts, varmat=NULL)) rval$replicates<-if(is.matrix(xreps)) t(xreps) else as.matrix(xreps) attr(rval$nlcon,"var")<-svrVar(rval$replicates, scale=attr(stat$replicates,"scale"), rscales=attr(stat$replicates,"rscales"),mse=attr(stat$replicates,"mse"), coef=rval$nlcon) attr(rval$nlcon,"statistic")<-"nlcon" } else { rval<-nlcon(contrasts,as.list(coef(stat)), vcov(stat)) attr(rval,"statistic")<-"nlcon" } class(rval)<-"svrepstat" return(rval) } else { contrasts<-match.names(names(coef(stat)), contrasts) contrasts<-do.call(rbind,contrasts) if (add) contrasts<-addLin(contrasts, names(coef(stat))) coef<-contrast(coef(stat), vcov(stat), contrasts) attr(coef,"statistic")<-"contrast" if (is.list(stat) && !is.null(stat$replicates)){ coef<-list(contrast=coef, replicates=tcrossprod(stat$replicates, contrasts)) } class(coef)<-"svrepstat" coef } } nlcon<-function(exprlist, datalist, varmat, influence=NULL){ if (!is.list(exprlist)) exprlist<-list(contrast=exprlist) dexprlist<-lapply(exprlist, function(expr) deriv(expr, names(datalist))[[1]]) values<-lapply(dexprlist, function(dexpr) eval(do.call(substitute, list(dexpr,datalist)))) if (is.null(varmat)) return(do.call(c,values)) jac<-do.call(rbind,lapply(values, function(value) attr(value,"gradient"))) var<-jac%*%varmat%*%t(jac) values<-do.call(c, values) dimnames(var)<-list(names(values),names(values)) attr(values, "var")<-var if(!is.null(influence)){ attr(values,"influence")<-influence%*%t(jac) } values } svycontrast.svyglm<-svycontrast.svystat svycontrast.svycoxph<-svycontrast.svystat svycontrast.svrepglm<-svycontrast.svrepstat svycontrast.svrepcoxph<-svycontrast.svrepstat svycontrast.svyby<-svycontrast.svystat svycontrast.default<-svycontrast.svystat svycontrast.svyby<-function(stat, contrasts,...){ if(!is.null(r<-attr(stat, "replicates"))){ s<-coef(stat) attr(s,"var")<-vcov(stat) attr(s,"statistic")<-attr(stat,"svyby")$statistic repstat<-list(stat=s, replicates=r) class(repstat)<-"svrepstat" svycontrast(repstat, contrasts,...) } else NextMethod() ## default } survey/R/svyivreg.R0000644000176200001440000000340514221463056014016 0ustar liggesusers svyivreg<-function(formula, design, ...) UseMethod("svyivreg",design) svyivreg.survey.design<-function(formula, design,...){ .data<-model.frame(design) .data$.weights<-weights(design,"sampling") .weights<-NULL ## make CMD check happy ##estfun<-get("estfun",mode="function") model<- AER::ivreg(formula, data=.data, weights=.weights) U<-estfun.ivreg(model)/weights(design,"sampling") n<-NROW(U) infl<- U%*%model$cov.unscaled v<-vcov(svytotal(infl, design)) model$invinf<-model$cov.unscaled model$cov.unscaled<-v model$df.residual<-degf(design)+1-length(coef(model)) model$sigma<-model$sigma/sqrt(mean(weights(design,"sampling"))) model$call<-sys.call(-1) class(model)<-c("svyivreg","ivreg") model } summary.svyivreg<-function(object, df = NULL, ...){ V<-vcov(object) class(object)<-"ivreg" summary(object, vcov.=V, df=df, diagnostics=FALSE,...) } vcov.svyivreg<-function(object,...) object$cov.unscaled svyivreg.svyrep.design<-function(formula, design,return.replicates=FALSE,...){ .pweights<-NULL ## make CMD check happy withReplicates(design, return.replicates=return.replicates, function(.weights, .data){ .data$.pweights<-.weights m<-AER::ivreg(formula,data= .data, weights=.pweights) coef(m) }) } estfun.ivreg<-function (x, ...) { xmat <- model.matrix(x) if (any(alias <- is.na(coef(x)))) xmat <- xmat[, !alias, drop = FALSE] wts <- weights(x) if (is.null(wts)) wts <- 1 res <- residuals(x) rval <- as.vector(res) * wts * xmat attr(rval, "assign") <- NULL attr(rval, "contrasts") <- NULL return(rval) } survey/R/loglin.R0000644000176200001440000001466614423576340013444 0ustar liggesuserssvyloglin<-function(formula,design,...) UseMethod("svyloglin",design) withOptions<-function(optlist,expr){ oldopt<-options(optlist) on.exit(options(oldopt)) expr<-substitute(expr) eval.parent(expr) } tr<-function(m)sum(diag(m)) tr2<-function(m) sum(m*m) svyloglin.survey.design<-function(formula,design,...){ if (length(formula)!=2) stop("needs a one-sided formula") mdata<-model.frame(design)[,all.vars(formula)] mf<-model.frame(formula,mdata,na.action=na.pass) n<-as.numeric(nrow(mf)) hatp<-svymean(~I(do.call(interaction,mf)),design,na.rm=TRUE) dat<-do.call(expand.grid,lapply(mdata,function(x) sort(unique(x)))) dat<-as.data.frame(lapply(dat,as.factor)) dat$y<-coef(hatp)*n ff<-update(formula, y~.) m1<-withOptions(list(contrasts=c("contr.sum","contr.poly")), glm(ff, data=dat,family=quasipoisson) ) P1<-(diag(fitted(m1)/n)-tcrossprod(fitted(m1)/n))/n V<-vcov(hatp) XX<-model.matrix(m1)[,-1,drop=FALSE] XX<-sweep(XX,2,colMeans(XX)) Vtheta<-solve(t(XX)%*%P1%*%XX)%*%(t(XX)%*%V%*%XX)%*%solve(t(XX)%*%P1%*%XX)/(n*n) rval<-list(model=m1, var=Vtheta, prob.table=hatp,df.null=degf(design),n=n) call<-sys.call() call[[1]]<-as.name(.Generic) rval$call<-call class(rval)<-"svyloglin" rval } print.svyloglin<-function(x,...) {cat("Loglinear model: ");print(x$call)} coef.svyloglin<-function(object,...,intercept=FALSE){ if (intercept) coef(object$model) else coef(object$model)[-1] } vcov.svyloglin<-function(object,...) object$var deviance.svyloglin<-function(object,...) deviance(object$model) degf.svyloglin<-function(design,...) length(design$prob.table)-length(coef(design))-1 terms.svyloglin<-function(x,...) terms(x$model,...) model.matrix.svyloglin<-function(object,...) model.matrix(object$model,...) update.svyloglin<-function(object, formula,...){ n<-object$n model<-withOptions(list(contrasts=c("contr.sum","contr.sum")), update(object$model, formula,data=object$model$model)) P1<-(diag(fitted(model)/n)-tcrossprod(fitted(model)/n))/n V<-vcov(object$prob.table) XX<-model.matrix(model)[,-1,drop=FALSE] XX<-sweep(XX,2,colMeans(XX)) A<-solve(t(XX)%*%P1%*%XX) B<-t(XX)%*%V%*%XX Vtheta<-A%*%B%*%A/(n*n) rval<-list(model=model, var=Vtheta, prob.table=object$prob.table, df.null=object$df.null,n=n) call<-sys.call() call[[1]]<-as.name(.Generic) rval$call<-call class(rval)<-"svyloglin" rval } anova.svyloglin<-function(object,object1,...,integrate=FALSE){ if(length(coef(object1))="4.4.0") FALSE else NULL an<-anova(m0,m1,test=no_tests) dev<-an$Deviance[2] if (integrate){ pdev<-pchisqsum(dev,rep(1,ncol(wX2)), a=eigen(Delta,only.values=TRUE,symmetric=TRUE)$values, lower.tail=FALSE,method="integration") } else pdev<-NA pdev1<-pchisq(dev*ncol(wX2)/tr(Delta),df=ncol(wX2),lower.tail=FALSE) pdev2a<-pf(dev/tr(Delta), tr(Delta)^2/tr2(Delta),dfnull*tr(Delta)^2/tr2(Delta), lower.tail=FALSE) pdevsad<-pchisqsum(dev,rep(1,ncol(wX2)), a=eigen(Delta,only.values=TRUE)$values, lower.tail=FALSE,method="saddlepoint") pearson<-n*sum( (pi1-pi0)^2/pi0 ) if (integrate){ pearsonp<-pchisqsum(pearson, rep(1,ncol(wX2)), a=eigen(Delta,only.values=TRUE,symmetric=TRUE)$values, lower.tail=FALSE,method="integration") } else pearsonp<-NA prs1<-pchisq(pearson*ncol(wX2)/tr(Delta),df=ncol(wX2),lower.tail=FALSE) prs2<-pchisq(pearson*ncol(wX2)/tr(Delta),df=tr(Delta)^2/tr2(Delta),lower.tail=FALSE) prs2a<-pf(pearson/tr(Delta), tr(Delta)^2/tr2(Delta),dfnull*tr(Delta)^2/tr2(Delta), lower.tail=FALSE) pchisqsad<-pchisqsum(pearson, rep(1,ncol(wX2)), a=eigen(Delta,only.values=TRUE,symmetric=TRUE)$values, lower.tail=FALSE,method="saddlepoint") rval<-list(an, dev=list(dev=dev, p=c(pdev,pdev1,pdev2a,pdevsad)), score=list(chisq=pearson,p=c(pearsonp,prs1,prs2a,pchisqsad)), integrate=integrate,a=eigen(Delta,only.values=TRUE,symmetric=TRUE)$values,p=ncol(wX2)) class(rval)<-"anova.svyloglin" rval } print.anova.svyloglin<-function(x,pval=c("F","saddlepoint","lincom","chisq"),...){ cat(attr(x[[1]],"heading"),"\n") pval<-match.arg(pval) if (pval=="lincom" && !x$integrate){ x$dev$p[1]<-pchisqsum(x$dev$dev, rep(1,x$p), a=x$a, lower.tail=FALSE,method="integration") x$score$p[1]<-pchisqsum(x$score$chisq, rep(1,x$p), a=x$a, lower.tail=FALSE,method="integration") } cat("Deviance=",x$dev$dev,"p=", switch(pval,lincom=x$dev$p[1], saddlepoint=x$dev$p[4], chisq=x$dev$p[2], F=x$dev$p[3]),"\n") cat("Score=",x$score$chisq,"p=", switch(pval,lincom=x$score$p[1], saddlepoint=x$score$p[4], chisq=x$score$p[2], F=x$score$p[3]),"\n") invisible(x) } summary.svyloglin<-function(object,...){ rval<-list(ll=object) class(rval)<-"summary.svyloglin" rval } print.summary.svyloglin<-function(x,...){ print(x$ll) print(cbind(coef=coef(x$ll), se=SE(x$ll), p=2*pnorm(abs(coef(x$ll)/SE(x$ll)),lower.tail=FALSE))) invisible(x) } svyloglin.svyrep.design<-svyloglin.survey.design svyloglin.DBIsvydesign<-function (formula, design, ...) { design$variables <- dropFactor(getvars(formula, design$db$connection, design$db$tablename, updates = design$updates), weights(design)) class(design)<-c("survey.design2","survey.design") rval<-svyloglin(formula,design) rval$call<-sys.call() rval$call[[1]]<-as.name(.Generic) rval } survey/R/dbiupdate.R0000644000176200001440000000536413542525435014114 0ustar liggesusers ## ## stored variable updates. ## updatesInfilter<-function(varlist, updates){ if (is.null(updates)) return(list(varlist=varlist)) n<-length(updates) v<-vector("list",n) for(i in n:1){ if (any(idx<-(varlist %in% names(updates[[i]])))){ v[[i]]<-varlist[idx] ups<-match(v[[i]], names(updates[[i]])) varlist<-unique(c(varlist[!idx], do.call(c, lapply(updates[[i]][ups], "[[", "inputs")))) } } list(varlist=varlist, history=v) } updatesOutfilter<-function(df, varlist,history, updates){ if (is.null(updates)) return(df) if (all(sapply(history,length)==0)) return(df) n<-length(updates) for(i in 1:n){ if (mi<-length(history[[i]])){ outputs<-vector("list", mi) for(j in 1:mi){ idx.j<-match(history[[i]][j],names(updates[[i]])) outputs[[j]]<-eval(updates[[i]][[idx.j]]$expression, df) } names(outputs)<-history[[i]] if (any(mod<-names(df) %in% names(outputs))){ df<-df[,!mod,drop=FALSE] } df<-cbind(df,outputs) } } df[, names(df) %in% varlist,drop=FALSE] } checkConnection<-function(dbconnection, error=TRUE){ if (is(dbconnection,"DBIConnection")) { if (!DBI::dbIsValid(dbconnection)) if (error) stop("Database connection is closed") else return(FALSE) } invisible(TRUE) } getvars<-function (formula, dbconnection, tables, db.only = TRUE, updates=NULL, subset=NULL) { checkConnection(dbconnection) if (is.null(formula)) return(NULL) if (inherits(formula, "formula")) { var0<- all.vars(formula) } else if (is.character(formula)){ var0<-formula } else { return(formula) } infilter<-updatesInfilter(var0, updates) if (db.only) { in.db <- infilter$varlist } else { query <- sub("@tab@", tables, "select * from @tab@ limit 1") if (is(dbconnection,"DBIConnection")) oneline <- DBI::dbGetQuery(dbconnection, query) in.db <- infilter$varlist[infilter$varlist %in% names(oneline)] } query <- paste("select", paste(in.db, collapse = ", "), "from", tables) df <- DBI::dbGetQuery(dbconnection, query) if (!is.null(subset)) df<-df[subset,,drop=FALSE] df<-updatesOutfilter(df, var0, infilter$history, updates) is.string <- sapply(df, is.character) if (any(is.string)) { for (i in which(is.string)) df[[i]] <- as.factor(df[[i]]) } df } update.DBIsvydesign<-function(object, ...){ dots <- substitute(list(...))[-1] newnames <- names(dots) updates<-lapply(dots, function(dot){ list(inputs=all.vars(dot),expression=dot) }) if (is.null(object$updates)) object$updates<-list(updates) else object$updates<-c(object$updates, list(updates)) object } survey/R/newsvyquantile.R0000644000176200001440000002564614412404246015247 0ustar liggesuserssvyquantile<-function(x,design,quantiles,...) UseMethod("svyquantile", design) svyquantile.survey.design <- function (x, design, quantiles, alpha = 0.05, interval.type = c("mean", "beta","xlogit", "asin","score"), na.rm = FALSE, ci=TRUE, se = ci, qrule=c("math","school","shahvaish","hf1","hf2","hf3","hf4","hf5","hf6","hf7","hf8","hf9"), df = NULL, ...) { if (inherits(x, "formula")) x <- model.frame(x, model.frame(design), na.action = na.pass) else if (typeof(x) %in% c("expression", "symbol")) x <- eval(x, model.frame(design, na.action = na.pass)) if (na.rm) { nas <- rowSums(is.na(x)) design <- design[nas == 0, ] if (length(nas) > length(design$prob)) x <- x[nas == 0, , drop = FALSE] else x[nas > 0, ] <- 0 } if(is.null(df)) df<-degf(design) if (is.character(qrule)){ qrulename<-paste("qrule",match.arg(qrule),sep="_") qrule<-get(qrulename, mode="function") } qcrit<-if(df==Inf) qnorm else function(...) qt(...,df=df) interval.type<-match.arg(interval.type) if (interval.type=="score"){ ci_fun<-ffullerCI } else { ci_fun<-function(...) woodruffCI(...,method=interval.type) } w<-weights(design) rvals<-lapply(x, function(xi){ r<-t(sapply(quantiles, function(p){ qhat<-qrule(xi,w,p) if(ci){ ci<-ci_fun(xi,qhat,p,design,qrule,alpha,df) names(ci)<-c(round(100*alpha/2,2),round(100-100*alpha/2,2)) c(quantile=qhat,ci=ci, se=as.numeric(diff(ci)/(2*qcrit(1-alpha/2))) ) } else { c(quantile=qhat) } } )) if(!ci) colnames(r)<-quantiles else rownames(r)<-quantiles r } ) attr(rvals,"hasci")<-ci class(rvals)<-"newsvyquantile" rvals } svyquantile.svyrep.design <- function (x, design, quantiles, alpha = 0.05, interval.type = c("mean", "beta","xlogit", "asin","quantile"), na.rm = FALSE, ci=TRUE, se = ci, qrule=c("math","school","shahvaish","hf1","hf2","hf3","hf4","hf5","hf6","hf7","hf8","hf9"), df = NULL, return.replicates=FALSE,...) { interval.type <- match.arg(interval.type) if (design$type %in% c("JK1", "JKn") && interval.type == "quantile") warning("Jackknife replicate weights may not give valid standard errors for quantiles") if (design$type %in% "other" && interval.type == "quantile") message("Not all replicate weight designs give valid standard errors for quantiles.") if (inherits(x, "formula")) x <- model.frame(x, design$variables, na.action = if (na.rm) na.pass else na.fail) else if (typeof(x) %in% c("expression", "symbol")) x <- eval(x, design$variables) if (na.rm) { nas <- rowSums(is.na(x)) design <- design[nas == 0, ] if (length(nas) > length(design$prob)) x <- x[nas == 0, , drop = FALSE] else x[nas > 0, ] <- 0 } if (is.character(qrule)){ qrulename<-paste("qrule",match.arg(qrule),sep="_") qrule<-get(qrulename, mode="function") } if (is.null(df)) df <- degf(design) if (df == Inf) qcrit <- qnorm else qcrit <- function(...) qt(..., df = df) w<-weights(design,"sampling") if (interval.type=="quantile"){ ci_fun<-function(...) repCI(...,return.replicates=return.replicates) } else { if(return.replicates) warning("return.replicates=TRUE only implemented for interval.type='quantile'") ci_fun<- function(...) woodruffCI(..., method = interval.type) } if ((interval.type=="quantile") && return.replicates){ rvals<-lapply(x, function(xi){ lapply(quantiles, function(p){ qhat<-qrule(xi,w,p) ci<-ci_fun(xi,qhat,p,design,qrule,alpha,df) list(quantile=qhat, replicates=attr(ci,"replicates")) } ) } ) ests<-sapply(rvals, function(v) sapply(v, function(qi) qi$quantile)) ests <- matrix(ests, nrow = length(quantiles), ncol = length(rvals), dimnames=list(paste("q",round(quantiles,2),sep=""), names(x))) attr(ests, "scale") <- design$scale attr(ests, "rscales") <- design$rscales attr(ests, "mse") <- design$mse reps<-sapply(rvals, function(v) sapply(v, function(qi) qi$replicates)) reps <- matrix(reps, ncol = nrow(ests) * ncol(ests)) colnames(reps) <- as.vector(outer(names(x), paste("q",round(quantiles,2),sep=""), paste)) rval <- ests attr(rval,"statistic") <- 'quantiles' vv <- svrVar(reps, design$scale, design$rscales, mse=design$mse, coef=ests) attr(rval,"var") <- matrix(diag(vv), nrow = nrow(ests), ncol = ncol(ests), dimnames=list(paste("q",round(quantiles,2),sep=""), names(x))) rval<-list(quantile=rval,replicates=reps) class(rval)<-"svrepstat" return(rval) } else { rvals<-lapply(x, function(xi){ r<- t(sapply(quantiles, function(p){ qhat<-qrule(xi,w,p) if(ci){ ci<-ci_fun(xi,qhat,p,design,qrule,alpha,df) names(ci)<-c(round(100*alpha/2,2),round(100-100*alpha/2,2)) c(quantile=qhat,ci=ci, se=unname(diff(ci)/(2*qcrit(1-alpha/2))) )} else{ c(quantile=qhat) } } )) if(!ci) colnames(r)<-quantiles else rownames(r)<-quantiles r } ) attr(rvals,"hasci")<-ci | se class(rvals)<-"newsvyquantile" } rvals } SE.newsvyquantile<-function(object,...) { if(!attr(object,"hasci")) stop("object does not have uncertainty estimates") do.call(c,lapply(object,function(ai) ai[,4])) } vcov.newsvyquantile<-function(object,...) { if(!attr(object,"hasci")) stop("object does not have uncertainty estimates") r<-do.call(c,lapply(object,function(ai) ai[,4]))^2 v<-matrix(NA,nrow=length(r),ncol=length(r)) diag(v)<-r v } coef.newsvyquantile<-function(object,...){ if(attr(object,"hasci")) do.call(c,lapply(object,function(ai) ai[,1])) else do.call(c,lapply(object,function(ai) ai[1,])) } confint.newsvyquantile<-function(object,...){ if(!attr(object,"hasci")) stop("object does not have uncertainty estimates") l<-do.call(c,lapply(object,function(ai) ai[,2])) u<-do.call(c,lapply(object,function(ai) ai[,3])) cbind(l,u) } woodruffCI<-function(x, qhat,p, design, qrule,alpha,df,method=c("mean","beta","xlogit","asin")){ method<-match.arg(method) m<-svymean(x<=qhat, design) names(m)<-"pmed" pconfint<-switch(method, mean=as.vector(confint(m, 1, level = 1-alpha, df = df)), xlogit= {xform <- svycontrast(m, quote(log(`pmed`/(1 - `pmed`)))); expit(as.vector(confint(xform, 1, level = 1-alpha, df = df)))}, beta={n.eff <- coef(m) * (1 - coef(m))/vcov(m); rval <- coef(m)[1] n.eff <- n.eff * (qt(alpha/2, nrow(design) - 1)/qt(alpha/2, degf(design)))^2 c(qbeta(alpha/2, n.eff * rval, n.eff * (1 - rval) + 1), qbeta(1 - alpha/2, n.eff * rval + 1, n.eff * (1 - rval))) }, asin={xform <- svycontrast(m, quote(asin(sqrt(`pmed`)))) sin(as.vector(confint(xform, 1, level = 1-alpha, df = df)))^2 } ) lower<-if(is.nan(pconfint[1]) || (pconfint[1]<0)) NaN else qrule(x,weights(design,"sampling"), pconfint[1]) upper<-if(is.nan(pconfint[2])|| (pconfint[2]>1)) NaN else qrule(x,weights(design,"sampling"), pconfint[2]) rval<-c(lower, upper) names(rval)<-c(round(100*alpha/2,1),round(100*(1-alpha/2),1)) rval } ffullerCI<-function(x, qhat, p, design, qrule, alpha, df){ qcrit<-if(df==Inf) qnorm else function(...) qt(...,df=df) U <- function(theta) { ((x > theta) - (1 - p)) } scoretest <- function(theta, qlimit) { umean <- svymean(U(theta), design) umean/SE(umean) - qlimit } iqr <- IQR(x) lowerT <- min(x) + iqr/100 upperT <- max(x) - iqr/100 tol <- 1/(100 * sqrt(nrow(design))) qlow<- uniroot(scoretest, interval = c(lowerT, upperT), qlimit = qcrit(alpha/2, lower.tail = FALSE), tol = tol)$root qup<-uniroot(scoretest, interval = c(lowerT, upperT), qlimit = qcrit(alpha/2, lower.tail = TRUE), tol = tol)$root w<-weights(design) c(qrule(x, w, mean(x<=qlow)), qrule(x, w, mean(x<=qup))) } repCI<-function(x, qhat, p, design, qrule, alpha, df,return.replicates){ qcrit<-if(df==Inf) qnorm else function(...) qt(...,df=df) wrep<-weights(design,"analysis") reps<-apply(wrep,2, function(wi) qrule(x,wi,p)) v<-with(design, svrVar(reps, scale=scale, rscales=rscales, mse=mse,coef=qhat)) ci<- qhat+ c(-1,1)*sqrt(v)*qcrit(1-alpha/2) if (return.replicates) attr(ci,"replicates")<-reps ci } survey/R/gofchisq.R0000644000176200001440000000175513743701277013761 0ustar liggesuserssvygofchisq<-function(formula, p, design,...){ p<-p/sum(p) means<-svytotal(formula, design,...) rval<-chisq.test(means,p=p) nm<-names(coef(means)) ncat<-length(coef(means)) means<-svycontrast(means, list(N=rep(1,ncat)), add=TRUE) pN<-split(cbind(p,0*diag(p)), paste0("p_",nm)) names(pN)<-paste0("p_",nm) means<-svycontrast(means, pN,add=TRUE) for(i in 1:length(nm)){ O<-as.name(nm[i]) E<-as.name(names(pN)[i]) expr<-list(bquote((.(O)-.(E))/sqrt(.(E)))) names(expr)[[1]]<-paste0("X2_",O) means<-svycontrast(means,expr,add=TRUE) } result<-svycontrast(means, rep(c(1,0),c(ncat,2*ncat+1))) lambda<-eigen(vcov(means)[1:ncat,1:ncat])$values tr <- mean(lambda) tr2 <- mean(lambda ^2)/(tr^2) scale = tr * tr2 df = ncat/tr2 rval$parameter<-c(scale=scale,df=df) rval$p.value<-pchisqsum(rval$statistic,rep(1,ncat), lambda,lower.tail=FALSE) rval$data.name<-deparse(formula) rval$method<-"Design-based chi-squared test for given probabilities" rval$lambda<-lambda rval }survey/R/pFsum.R0000644000176200001440000000235412750463316013240 0ustar liggesuserspFsum<-function(x,df,a,ddf=Inf,lower.tail=TRUE,method=c("saddlepoint","integration","satterthwaite"),...){ if (ddf==Inf) return(pchisqsum(x,df=df,a=a,lower.tail=lower.tail,...)) method<-match.arg(method) if (method=="integration" && !(requireNamespace("CompQuadForm",quietly=TRUE))){ warning("Package 'CompQuadForm' not found, using saddlepoint approximation") method<-"saddlepoint" } if (method=="integration"){ int<-CompQuadForm::davies(0,lambda=c(a,-x/ddf), h=c(df,ddf),acc=1e-7) if ( (int$ifault %in% c(0,2))){ rval<-int$Qq } else { rval<-CompQuadForm::davies(0,lambda=c(a,-x/ddf), h=c(df,ddf),acc=1e-5)$Qq } if(lower.tail) return(1-rval) else return(rval) } else if (method %in% c("satterthwaite","saddlepoint")){ if(any(df>1)){ a<-rep(a,df) } tr<-mean(a) tr2<-mean(a^2)/(tr^2) scale=tr*tr2 ndf=length(a)/tr2 rval<-pf(x/ndf/scale, ndf,ddf,lower.tail=lower.tail) if (method=="saddlepoint"){ a<-c(a,-x/ddf) df<-c(df,ddf) if(any(df>1)) a<-rep(a,df) s<-saddle(0,a) if (!is.na(s)) { if (lower.tail) rval<-1-s else rval<-s } } rval } } survey/R/compressweights.R0000755000176200001440000000245311457435612015400 0ustar liggesusers "dim.repweights_compressed"<-function(x){ c(length(x$index),ncol(x$weights)) } "dimnames.repweights_compressed"<-function(x){ list(names(x$index), colnames(x$weights)) } "[.repweights_compressed"<-function(x,i,...,drop=FALSE){ if (!missing(i)){ x$index<-x$index[i] if(!missing(..1)) x$weights<-x$weights[,..1,drop=FALSE] } else{ ## this is faster than just subscripting x$weights (!) x<-list(index=x$index, weights=x$weights[,...,drop=FALSE]) class(x)<-c("repweights_compressed","repweights") } x } "as.matrix.repweights_compressed"<-function(x,...){ x$weights[x$index,,drop=FALSE] } "as.vector.repweights_compressed"<-function(x,...){ as.vector(x$weights[x$index,]) } "as.matrix.repweights"<-function(x,...){ x } compressWeights<-function(rw,...){ UseMethod("compressWeights") } "compressWeights.repweights_compressed"<-function(rw,...){ compressWeights(as.matrix(rw)) } compressWeights.default<-function(rw,...){ mat<-as.matrix(rw) tmp<-apply(mat,1,function(x) paste(x,collapse="\r")) unq<-!duplicated(mat) rval<-list(weights=mat[unq,],index=match(tmp,tmp[unq])) class(rval)<-c("repweights_compressed","repweights") rval } compressWeights.svyrep.design<-function(rw,...){ rw$repweights<-compressWeights(rw$repweights,...) rw } survey/R/svyqq.R0000644000176200001440000000444513707703671013340 0ustar liggesusers svyqqmath<-function(x, design, null=qnorm, na.rm=TRUE,xlab="Expected",ylab="Observed",...){ if (inherits(x, "formula")) x <- model.frame(x, model.frame(design), na.action = na.pass) else if (typeof(x) %in% c("expression", "symbol")) x <- eval(x, model.frame(design, na.action = na.pass)) if (na.rm) { nas <- rowSums(is.na(x)) design <- design[nas == 0, ] if (length(nas) > length(design$prob)) x <- x[nas == 0, , drop = FALSE] else x[nas > 0, ] <- 0 } n<-NROW(x) for(variable in seq_len(NCOL(x))){ ii<-order(x[, variable]) obsi<-x[ii, variable] w<-weights(design,"sampling")[ii] cumw<-(cumsum(w)/sum(w))*(n/(n+1)) expi<-null(cumw) plot(expi,obsi,xlab=xlab,ylab=ylab,...) } invisible(NULL) } svyqqplot<-function(formula, design, designx=NULL, na.rm=TRUE,qrule="hf8",xlab=NULL,ylab=NULL,...){ if (is.null(designx)){ if (inherits(formula, "formula")) x <- model.frame(formula, model.frame(design), na.action = na.pass) else if (typeof(x) %in% c("expression", "symbol")) x <- eval(formula, model.frame(design, na.action = na.pass)) if (na.rm) { nas <- rowSums(is.na(x)) design <- design[nas == 0, ] if (length(nas) > length(design$prob)) x <- x[nas == 0, , drop = FALSE] else x[nas > 0, ] <- 0 } Y<-x[,1] X<-x[,2] wx<-wy<-weights(design,"sampling") } else { xform<-formula[-2] yform<-make.formula(formula[[2]]) environment(yform)<-environment(formula) Y<- model.frame(formula, model.frame(design), na.action = na.pass)[[1]] wy<-weights(design,"sampling") X<- model.frame(formula, model.frame(designx), na.action = na.pass)[[1]] wx<-weights(designx,"sampling") } n<-length(Y) m<-length(X) if(is.null(xlab)) xlab<-deparse(formula[[3]]) if(is.null(ylab)) ylab<-deparse(formula[[2]]) if(is.character(qrule)) qrule<-get(paste("qrule",qrule,sep="_"), mode="function") if (nm){ Y<-sapply(1:m, function(i) qrule(Y,wy, i/m)) } plot(sort(X),sort(Y),xlab=xlab,ylab=ylab,...) } survey/R/surveygraph.R0000755000176200001440000002314213707703671014532 0ustar liggesusersmake.panel.svysmooth<-function(design,bandwidth=NULL){ function(x,y,span=NULL,col.smooth="red",col=par("col"),bg=NA,pch=par("pch"),cex=1,...){ if(!is.null(span)) bandwidth<-diff(range(x))*span/3 s<-svysmooth(y~x,design=design,bandwidth=bandwidth) points(x,y,pch=pch,bg=bg,col=col) lines(s[[1]],col=col.smooth,...) } } svyplot<-function(formula, design,...) UseMethod("svyplot",design) svyplot.default<-function(formula, design, style=c("bubble","hex","grayhex","subsample","transparent"), sample.size=500, subset=NULL,legend=1,inches=0.05, amount=NULL,basecol="black",alpha=c(0,0.8), xbins=30,...){ style<-match.arg(style) if (style %in% c("hex","grayhex") && !requireNamespace("hexbin",quietly=TRUE)){ stop(style," plots require the hexbin package") } subset<-substitute(subset) subset<-with(design$variables, subset) if(length(subset)>0) design<-design[subset,] W<-weights(design, "sampling") mf<-model.frame(formula, design$variables,na.action=na.pass) Y<-model.response(mf) X<-mf[,attr(attr(mf,"terms"),"term.labels")] switch(style, bubble={ if(is.function(basecol)) basecol<-basecol(model.frame(design)) symbols(X,Y,circles=sqrt(W),inches=inches,fg=basecol,...) }, hex={ ## CRAN will be happier if we stop supporting the old version of hexbin ## new version rval<-hexbin::hexbin(X,Y,IDs=TRUE,xbins=xbins) cell<-rval@cID rval@count<-as.vector(tapply(W,cell,sum)) rval@xcm<-as.vector(tapply(1:length(X), cell, function(ii) weighted.mean(X[ii],W[ii]))) rval@ycm<-as.vector(tapply(1:length(Y), cell, function(ii) weighted.mean(Y[ii],W[ii]))) hexbin::gplot.hexbin(rval, legend=legend, style="centroids",...) }, grayhex={ ## new version rval<-hexbin::hexbin(X,Y,IDs=TRUE,xbins=xbins) cell<-rval@cID rval@count<-as.vector(tapply(W,cell,sum)) hexbin::gplot.hexbin(rval, legend=legend,...) }, subsample={ index<-sample(length(X),sample.size,replace=TRUE, prob=W) if (is.numeric(X)) xs<-jitter(X[index],factor=3,amount=amount$x) else xs<-X[index] if (is.numeric(Y)) ys<-jitter(Y[index],factor=3,amount=amount$y) else ys<-Y[index] plot(xs,ys,...) }, transparent={ transcol<-function(base,opacity){ rgbs<-col2rgb(base)/255 rgb(rgbs[1,],rgbs[2,], rgbs[3,], alpha=opacity) } if(is.function(basecol)) basecol<-basecol(model.frame(design)) w<-weights(design) maxw<-max(w) minw<-0 alphas<- (alpha[1]*(maxw-w)+alpha[2]*(w-minw))/(maxw-minw) plot(X,Y,col=transcol(basecol,alphas),...) }) } svyboxplot<-function(formula, design,all.outliers=FALSE,...) UseMethod("svyboxplot",design) svyboxplot.default<-function(formula, design, all.outliers=FALSE,col=NULL,names,...){ formula<-as.formula(formula) if(length(formula)!=3) stop("need a two-sided formula") ##if(length(formula[[3]])>2) stop("only one rhs variable allowed") outcome<-eval(bquote(~.(formula[[2]]))) outcome.values<-model.frame(outcome, model.frame(design),na.action=na.pass) if (length(attr(terms(formula),"term.labels"))){ groups<-eval(bquote(~.(formula[[3]]))) qs <- svyby(outcome,groups,design,svyquantile,ci=FALSE, keep.var=FALSE, quantiles=c(0,0.25,0.5,0.75,1),na.rm=TRUE) group.values<-model.frame(groups, model.frame(design),na.action=na.pass)[[1]] n<-NCOL(qs) iqr<- qs[,n-1]-qs[,n-3] low<-pmax(qs[,n-4],qs[,n-3]-1.5*iqr) hi<-pmin(qs[,n],qs[,n-1]+1.5*iqr) stats<-t(as.matrix(cbind(low,qs[,n-(3:1)],hi))) z<-list(stats=stats,n=coef(svytotal(groups,design,na.rm=TRUE))) for(i in 1:ncol(stats)){ out<-c(if(qs[i,n]!=hi[i]) qs[i,n], if(qs[i,n-4]!=low[i])qs[i,n-4]) if (all.outliers){ outlo<-sort(outcome.values[!is.na(outcome.values) & (as.numeric(group.values) %in% i) & outcome.valueshi[i] ]) out<-na.omit(unique(c(outlo,outhi))) } z$out<-c(z$out,out) z$group<-c(z$group,rep(i,length(out))) z$names<-as.character(qs[,1]) } } else { qs<-coef(svyquantile(outcome,design,ci=FALSE, quantiles=c(0,0.25,0.5,0.75,1),na.rm=TRUE)) iqr<-qs[4]-qs[2] z<-list(stats=matrix(c(max(qs[1],qs[2]-1.5*iqr), qs[2:4],min(qs[5],qs[4]+1.5*iqr))), n=sum(weights(design,"sampling"))) z$out<-c(if(qs[5]!=z$stats[5]) qs[5], if(qs[1]!=z$stats[1]) qs[1]) if (all.outliers){ outlo<-sort(outcome.values[!is.na(outcome.values) & outcome.valuesqs[4]+1.5*iqr]) z$out<-na.omit(unique(c(outlo,outhi))) } z$group<-rep(1,length(z$out)) } if (is.null(col)) col<-par("bg") if (!missing(names)) z$names<-names bxp(z,boxfill=col,...) } svycoplot<-function(formula, design, style=c("hexbin","transparent"), basecol="black",alpha=c(0,0.8),hexscale=c("relative","absolute"),...) UseMethod("svycoplot",design) svycoplot.default<-function(formula, design, style=c("hexbin","transparent"), basecol="black",alpha=c(0,0.8),hexscale=c("relative","absolute"),xbins=15,...){ style<-match.arg(style) wt<-weights(design,"sampling") switch(style, hexbin={ hexscale<-match.arg(hexscale) xyplot(formula, data=model.frame(design), xbins=xbins, panel=function(x,y,style="centroids",xbins,subscripts,...) { if (!length(x)) return(panel.xyplot(x,y,...)) vp<-current.viewport() wd<-convertWidth(vp$width,unitTo="cm",valueOnly=TRUE) ht<-convertHeight(vp$height,unitTo="cm",valueOnly=TRUE) W<-wt[subscripts] rval<-hexbin::hexbin(x,y,IDs=TRUE,xbins=xbins,shape=ht/wd,xbnds=vp$xscale,ybnds=vp$yscale) cell<-rval@cID rval@count<-as.vector(tapply(W,cell,sum)) rval@xcm<-as.vector(tapply(1:length(x), cell, function(ii) weighted.mean(x[ii],W[ii]))) rval@ycm<-as.vector(tapply(1:length(y), cell, function(ii) weighted.mean(x[ii],W[ii]))) hexbin::grid.hexagons(rval,style=style, maxarea=switch(hexscale, relative=0.8, absolute=0.8*sum(W)/sum(wt))) },...) }, transparent={ if(is.function(basecol)) basecol<-basecol(model.frame(design)) transcol<-function(base,opacity){ rgbs<-col2rgb(base)/255 rgb(rgbs[1,],rgbs[2,], rgbs[3,], alpha=opacity) } maxw<-max(wt) minw<-0 alphas<- (alpha[1]*(maxw-wt)+alpha[2]*(wt-minw))/(maxw-minw) cols<-transcol(basecol,alphas) xyplot(formula, data=model.frame(design), panel=function(x,y,basecol="black",subscripts,...) { a<-alphas[subscripts] panel.xyplot(x,y,col=cols[subscripts],pch=19,...) },...) } ) } barplot.svystat<-function(height,...) barplot(coef(height),...) barplot.svrepstat<-function(height,...) barplot(coef(height),...) plot.svystat<-function(x,...) barplot(coef(x),...) plot.svrepstat<-function(x,...) barplot(coef(x),...) barplot.svyby<-function(height,beside=TRUE,...){ aa <- attr(height, "svyby") rval <- height[, max(aa$margins) + (1:aa$nstats)] if (is.null(dim(rval))) { if (length(aa$margins)<2){ names(rval) <- row.names(height) } else { rval<-matrix(rval, nrow=length(unique(height[,aa$margins[1]]))) rownames(rval) <- unique(height[,aa$margins[1]]) colnames(rval)<-levels(do.call(interaction, height[,aa$margins[-1],drop=FALSE])) } } else { rval <- as.matrix(rval) colnames(rval)<-sub("statistics\\.","",colnames(rval)) rval<-t(rval) } barplot(rval,beside=beside,...) } plot.svyby<-function(x,...) barplot.svyby(x,...) dotchart.default<-graphics::dotchart dotchart<-function(x,...,pch=19) UseMethod("dotchart") dotchart.svystat<-function(x,...,pch=19) dotchart(coef(x),...,pch=pch) dotchart.svrepstat<-function(x,...,pch=19) dotchart(coef(x),...,pch=pch) dotchart.svyby<-function(x,...,pch=19){ height<-x aa <- attr(height, "svyby") rval <- height[, max(aa$margins) + (1:aa$nstats)] if (is.null(dim(rval))) { if (length(aa$margins)<2){ names(rval) <- row.names(height) } else { rval<-matrix(rval, nrow=length(unique(height[,aa$margins[1]]))) rownames(rval) <- unique(height[,aa$margins[1]]) colnames(rval)<-levels(do.call(interaction, height[,aa$margins[-1],drop=FALSE])) } } else { rval <- as.matrix(rval) colnames(rval)<-sub("statistics\\.","",colnames(rval)) rval<-t(rval) } dotchart(rval,...,pch=pch) } survey/R/multivariate.R0000644000176200001440000001122311757246235014654 0ustar liggesusers svyfactanal<-function(formula, design, factors,n=c("none", "sample","degf","effective","min.effective"),...){ v<-svyvar(formula,design) n<-match.arg(n) s2<-diag(v) ses2<-diag(matrix(SE(v), length(s2), length(s2))) neff<-2*(s2/ses2)^2 n<-switch(n, sample=nrow(design)-1, degf=degf(design), effective=1/mean(1/neff),min.effective=min(neff), none=NA)+1 f<-factanal(covmat=v, factors=factors, n.obs=n,...) f$call<-sys.call() f } svyprcomp<-function (formula, design, center = TRUE, scale. = FALSE, tol = NULL, scores=FALSE, ...) { tms<-terms(formula) attr(tms,"intercept")<-0 mf<-model.frame(formula,model.frame(design)) naa<-attr(mf,"na.action") x <- model.matrix(tms,mf) if(length(naa)) w<-weights(design,"sampling")[-naa] else w<-weights(design,"sampling") x<-x*sqrt(w/mean(w)) x <- scale(x, center = center, scale = scale.) cen <- attr(x, "scaled:center") sc <- attr(x, "scaled:scale") if (any(sc == 0)) stop("cannot rescale a constant/zero column to unit variance") s <- svd(x, nu = 0) s$d <- s$d/sqrt(max(1, nrow(x) - 1)) if (!is.null(tol)) { rank <- sum(s$d > (s$d[1L] * tol)) if (rank < ncol(x)) { s$v <- s$v[, 1L:rank, drop = FALSE] s$d <- s$d[1L:rank] } } dimnames(s$v) <- list(colnames(x), paste("PC", seq_len(ncol(s$v)), sep = "")) r <- list(sdev = s$d, rotation = s$v, center = if (is.null(cen)) FALSE else cen, scale = if (is.null(sc)) FALSE else sc) r$weights<-w/mean(w) if (scores) r$x <- (x %*% s$v)/sqrt(r$weights) r$naa<-naa r$design<-design class(r) <- c("svyprcomp","prcomp") r } biplot.svyprcomp<-function(x, cols=c("black","darkred"),xlabs=NULL,weight=c("transparent","scaled","none"), max.alpha=0.5,max.cex=0.5,xlim=NULL,ylim=NULL,pc.biplot=FALSE,expand=1,xlab=NULL,ylab=NULL, arrow.len=0.1, ...){ if(is.null(xlabs)){ xlabs<-1:NROW(x$x) } else { if (inherits(xlabs,"formula")){ mf<-model.frame(xlabs,model.frame(x$design),na.action=na.pass) if(length(x$na.action)) mf<-mf[-x$na.action,] if(ncol(mf)>1) xlabs<-sapply(mf,paste,collapse=".") else xlabs<-as.character(mf[[1]]) } } scores<-x$x lam <- x$sdev[1:2] n <- NROW(scores) lam <- lam * sqrt(n) if (pc.biplot) lam <- lam/sqrt(n) xx<-t(t(scores[, 1:2])/lam) yy<-t(t(x$rotation[,1:2]) * lam) if (missing(xlabs)) { xlabs <- dimnames(x)[[1L]] if (is.null(xlabs)) xlabs <- 1L:n } xlabs <- as.character(xlabs) dimnames(xx) <- list(xlabs, dimnames(xx)[[2L]]) ylabs <- dimnames(yy)[[1L]] ylabs <- as.character(ylabs) dimnames(yy) <- list(ylabs, dimnames(yy)[[2L]]) weight<-match.arg(weight) w<-weights(x$design) if (length(x$na.action)) w<-w[-x$na.action] if (weight=="transparent"){ xcexs<-par("cex")*max.cex rgbcol<-col2rgb(rep(cols[1],length=length(w))) xcols<-rgb(rgbcol[1,],rgbcol[2,],rgbcol[3,],alpha=pmax(1,255*w*max.alpha/max(w)), maxColorValue=255) } else if (weight=="scaled"){ xcexs<-par("cex")*pmax(0.2, max.cex*sqrt(w/max(w))) rgbcol<-col2rgb(cols[1]) xcols<-rgb(rgbcol[1,],rgbcol[2,],rgbcol[3,],alpha=max.alpha*255, maxColorValue=255) } else if (weight=="none"){ rgbcol<-col2rgb(cols[1]) xcols<-rgb(rgbcol[1,],rgbcol[2,],rgbcol[3,],alpha=max.alpha*255, maxColorValue=255) xcexs<-par("cex")*max.cex } unsigned.range <- function(x) c(-abs(min(x, na.rm = TRUE)), abs(max(x, na.rm = TRUE))) rangx1 <- unsigned.range(xx[, 1L]) rangx2 <- unsigned.range(xx[, 2L]) rangy1 <- unsigned.range(yy[, 1L]) rangy2 <- unsigned.range(yy[, 2L]) if (is.null(xlim) && is.null(ylim)) xlim <- ylim <- rangx1 <- rangx2 <- range(rangx1, rangx2) else if (is.null(xlim)) xlim <- rangx1 else if (is.null(ylim)) ylim <- rangx2 ratio <- max(rangy1/rangx1, rangy2/rangx2)/expand on.exit(par(op)) op <- par(pty = "s") plot(xx, type = "n", xlim = xlim, ylim = ylim, col = cols[1], xlab = xlab, ylab = ylab, ...) text(xx, xlabs, cex = xcexs, col = xcols, ...) par(new = TRUE) plot(yy, axes = FALSE, type = "n", xlim = xlim * ratio, ylim = ylim * ratio, xlab = "", ylab = "", col = xcols, ...) axis(3, col = cols[2L], ...) axis(4, col = cols[2L], ...) box(col = cols[1L]) text(yy, labels = ylabs, col = cols[2L], ...) arrows(0, 0, yy[, 1L] * 0.8, yy[, 2L] * 0.8, col = cols[2L], length = arrow.len) invisible() } survey/R/ht.R0000644000176200001440000000163011457435612012556 0ustar liggesusers htvar.list<-function(xcheck, Dcheck){ rval<-sapply(Dcheck, function(stagei) {htvar.matrix(rowsum(xcheck,stagei$id),stagei$dcheck)}) rval } ## used in twophase2var() htvar.matrix<-function(xcheck, Dcheck){ if (is.null(dim(xcheck))) xcheck<-as.matrix(xcheck) rval<-apply(xcheck,2, function(xicheck) apply(xcheck,2, function(xjcheck) as.matrix(Matrix::crossprod(xicheck, Dcheck%*%xjcheck)) )) if(is.null(dim(rval))) dim(rval)<-c(1,1) rval } ## used in ppsvar, twophase2var ygvar.matrix<-function(xcheck,Dcheck){ ht<-htvar.matrix(xcheck,Dcheck) if (is.null(dim(xcheck))){ corr <- sum(Dcheck%*%(xcheck*xcheck)) } else { corr <- apply(xcheck,2, function(xicheck) apply(xcheck,2, function(xjcheck) sum(Dcheck%*%(xicheck*xjcheck)) )) } rval<-ht-corr } survey/R/mrb.R0000644000176200001440000000354214044064724012724 0ustar liggesusers## Rescaled multistage bootstrap ## Preston http://www.statcan.gc.ca/pub/12-001-x/2009002/article/11044-eng.pdf ## mrbweights<-function(clusters,stratas,fpcs, replicates=50, multicore=getOption("survey.multicore")){ nstages<-NCOL(clusters) if (is.null(fpcs$popsize)){ warning("Design is sampled with replacement: only first stage used") fpcs$popsize<-matrix(Inf, ncol=1,nrow=NROW(clusters)) nstages<-1 } if (multicore & !requireNamespace("parallel", quietly=TRUE)) multicore<-FALSE do.it<-if(multicore) parallel::mclapply else lapply weightlist<-do.it(1:replicates, function(k){ weights<-matrix(1,nrow=NROW(clusters),ncol=nstages) kept<-rep(TRUE, NROW(clusters)) cumffs<-rep(1,NROW(clusters)) for(i in 1:nstages){ ustrata<-unique(stratas[,i]) nstrata<-length(ustrata) for(j in 1:nstrata){ thisstratum<-stratas[,i]==ustrata[j] su <- unique(clusters[thisstratum & kept,i] ) n <-length(su) nstar<-floor(n/2) cumff<-cumffs[thisstratum][1] fpc<- fpcs$sampsize[thisstratum,i][1]/fpcs$popsize[thisstratum,i][1] if (nstar==0) { wstar<-0 keep<- rep(FALSE,sum(thisstratum)) } else { lambda<-sqrt(cumff*nstar*(1-fpc)/(n-nstar)) keep<-clusters[thisstratum,i] %in% sample(su,nstar) wstar<-(-lambda+lambda*(n/nstar)*keep) } weights[thisstratum, i]<-wstar*weights[thisstratum, i] if (nstar>0 & iN/2)) } else{ testf<-test } if (identical(test,"wilcoxon")) test<-"KruskalWallis" ii<-order(y) n<-length(y) rankhat<-numeric(n) w<-weights(design,"sampling") ## calibrated designs have weights set to zero, not removed na.fixup<-FALSE if (is.calibrated(design) && length(w)>n && !is.null(naa)){ w<-w[-naa] na.fixup<-TRUE } N<-sum(w) rankhat[ii]<-ave(cumsum(w[ii])-w[ii]/2,factor(y[ii])) rankscore<-testf(rankhat,N) m <- lm(rankscore~g, weights=w) delta<-coef(m)[2] xmat<-model.matrix(m) if (na.fixup){ infn<-matrix(0,nrow=nrow(xmat)+length(naa),ncol=ncol(xmat)) infn[-naa,]<-(xmat*(rankscore-fitted(m)))%*%summary(m)$cov.unscaled } else { infn<- (xmat*(rankscore-fitted(m)))%*%summary(m)$cov.unscaled } tot.infn<-svytotal(infn,design) if (is.character(test)) method<-paste("Design-based",test,"test") else if (!is.null(attr(test,"name"))) method<-paste("Design-based",attr(test,"name"),"test") else method<-"Design-based rank test" rval <- list(statistic = coef(m)[2]/SE(tot.infn)[2], parameter = degf(design) - 1, estimate = coef(m)[2], null.value = 0, alternative = "two.sided", method = method, data.name = deparse(formula)) rval$p.value <- 2 * pt(-abs(rval$statistic), df = rval$parameter) names(rval$statistic) <- "t" names(rval$parameter) <- "df" names(rval$estimate) <- "difference in mean rank score" names(rval$null.value) <- "difference in mean rank score" class(rval) <- "htest" rval } multiranktest<-function(formula,design,test=c('wilcoxon','vanderWaerden','median','KruskalWallis'),...){ mf<-model.frame(formula,model.frame(design),na.action=na.omit) if (!is.null(naa<-attr(mf,"na.action"))){ design<-design[-naa,] #mf<-model.frame(formula,model.frame(design),na.action=na.fail) } y<-mf[,1] g<-mf[,2] if (is.character(test)) { test<-match.arg(test) testf<-switch(test, wilcoxon=,KruskalWallis=function(r,N) r/N, vanderWaerden=function(r,N) qnorm(r/N), median=function(r,N) as.numeric(r>N/2)) } else{ testf<-test } if (identical(test,"wilcoxon")) test<-"KruskalWallis" ii<-order(y) n<-length(y) rankhat<-numeric(n) w<-weights(design,"sampling") ## calibrated designs have weights set to zero, not removed if (is.calibrated(design) && length(w)>n && !is.null(naa)){ w<-w[-naa] } N<-sum(w) rankhat[ii]<-ave(cumsum(w[ii])-w[ii]/2,factor(y[ii])) rankscore<-testf(rankhat,N) m <- glm(rankscore~factor(g),weights=w) m$na.action<-naa V<-svy.varcoef(m,design) ndf<-length(unique(g))-1 beta<-coef(m)[-1] V<-V[-1,-1] chisq<-beta%*%solve(V,beta) ddf<-degf(design)-ndf if (is.character(test)) method<-paste("Design-based",test,"test") else if (!is.null(attr(test,"name"))) method<-paste("Design-based",attr(test,"name"),"test") else method<-"Design-based rank test" names(chisq)<-"Chisq" names(ndf)<-"df" rval<-list(parameter=chisq,statistic=ndf,ddf=ddf,p.value=pf(chisq/ndf,ndf,ddf,lower.tail=FALSE), method=method, data.name = deparse(formula)) class(rval)<-"htest" rval } cov_inffun_glm<-function(m, design){ A<-summary(m)$cov.unscaled xmat <- model.matrix(m) U<-residuals(m, "working") * m$weights * xmat/weights(design,"sampling") h<-U%*%A vcov(svytotal(h, design)) } survey/R/grake.R0000644000176200001440000004320514423576274013246 0ustar liggesusers make.calfun<-function(Fm1,dF, name){ if (!identical(names(formals(Fm1)), c("u","bounds"))) stop("wrong argument names for Fm1") if(!identical(names(formals(dF)), c("u","bounds"))) stop("wrong argument names for dF") rval<-list(Fm1=Fm1, dF=dF, name=name) class(rval)<-"calfun" rval } cal_names <- function(formula, design, ...) UseMethod("cal_names",design) cal_names.DBIsvydesign<-function(formula, design,...){ design$variables <- getvars(formula, design$db$connection, design$db$tablename, updates = design$updates, subset = design$subset) colnames(model.matrix(formula, model.frame(formula,design$variables[0,]))) } cal_names.survey.design<-function(formula,design,...) { colnames(model.matrix(formula, model.frame(formula,model.frame(design)[0,]))) } print.calfun<-function(x,...) cat("calibration metric: ",x$name,"\n") calibrate<-function(design, ...) UseMethod("calibrate") calibrate.pps<-function(design, formula, population, aggregate.stage=NULL, stage=0,...){ if (!is.null(stage) && !(stage==0)) stop("'stage'(>0) not supported for pps designs") if (!is.null(aggregate.stage)) stop("'aggregate.stage' not supported for pps designs") calibrate.survey.design2(design, formula, population, aggregate.stage=NULL, stage=0,,...) } calibrate.survey.design2<-function(design, formula, population, aggregate.stage=NULL, stage=0, variance=NULL, bounds=c(-Inf,Inf), calfun=c("linear","raking","logit"), maxit=50, epsilon=1e-7, verbose=FALSE, force=FALSE, trim=NULL, bounds.const = FALSE, sparse=FALSE, ...){ if(is.list(formula) && is.list(population)){ ## inputs as marginal totals, as in rake() population<-margins2totals(formula,population) formula<-as.formula(paste("~",paste(sapply(formula,function(f) paste(all.vars(f),collapse="*")),collapse="+"))) if (verbose){ print(formula) print(population) } } if (!is.list(bounds)) bounds <- list(lower = bounds[1], upper = bounds[2]) ## converting to list if not already if (is.character(calfun)) calfun<-match.arg(calfun) if (is.character(calfun) && calfun=="linear" && all(unlist(bounds) == c(-Inf, Inf))){ ## old code is better for ill-conditioned linear calibration rval<-regcalibrate(design,formula,population, aggregate.stage=aggregate.stage, stage=stage, lambda=variance,sparse=sparse,...) rval$call<-sys.call(-1) return(rval) } if(is.character(calfun)) calfun<-switch(calfun,linear=cal.linear, raking=cal.raking, logit=cal.logit) else if(!inherits(calfun,"calfun")) stop("'calfun' must be a string or of class 'calfun'.") if (length(epsilon)!=1 && length(epsilon)!=length(population)) stop("'epsilon' must be a scalar or of the same length as 'population'") if (!is.null(aggregate.stage)){ aggindex<-design$cluster[[aggregate.stage]] } expit<-function(x) 1-1/(1+exp(x)) ## calibration to population totals if(sparse){ mm<-sparse.model.matrix(formula, model.frame(formula, model.frame(design))) }else{ mm<-model.matrix(formula, model.frame(formula, model.frame(design))) } ww<-weights(design) if (bounds.const) bounds<-lapply(bounds, function(x) ifelse(ww>0,x/ww,x)) # if bounds are set to a constant convert to multiplicative value and run as normal if (!is.null(aggregate.stage)){ mm<-apply(mm,2,function(mx) ave(mx,aggindex)) ww<-ave(ww,aggindex) } whalf<-sqrt(ww) sample.total<-colSums(mm*ww) if(any(sample.total==0)){ ## drop columsn where all sample and population are zero zz<-(population==0) & (apply(mm,2,function(x) all(x==0))) mm<-mm[,!zz] population<-population[!zz] sample.total<-sample.total[!zz] if (length(epsilon)>1) epsilon <- epsilon[!zz] } if (length(sample.total)!=length(population)){ print(sample.total) print(population) stop("Population and sample totals are not the same length.") } if(!is.null(names(population))){ if (!all(names(sample.total) %in% names(population))){ warning("Sampling and population totals have different names.") cat("Sample: "); print(names(sample.total)) cat("Popltn: "); print(names(population)) } else if (!all(names(sample.total) == names(population))){ warning("Sample and population totals reordered to make names agree: check results.") population <- population[match(names(sample.total), names(population))] } } tqr<-qr(mm*whalf) #if (!all(abs(qr.resid(tqr,whalf))<1e-10)) # warning("G-calibration models must have an intercept") g<-grake(mm,ww,calfun, bounds=bounds,population=population, verbose=verbose,epsilon=epsilon,maxit=maxit, variance=variance) if(!is.null(trim)) { gnew<-pmax(trim[1], pmin(g, trim[2])) outside<-gtrim[2] if (any(outside)){ trimmings<-(g-gnew)*ww gnew[!outside]<-gnew[!outside]+sum(trimmings)/sum(ww[!outside]) g<-gnew attr(g,"failed")<-NULL message(paste(sum(outside),"weights were trimmed")) } } if (!is.null(attr(g,"failed"))){ if (!force) stop("Calibration failed") } design$prob<-design$prob/g caldata <- list(qr=tqr, w=g*whalf, stage=0, index=NULL) class(caldata) <- c("greg_calibration","gen_raking") design$postStrata <- c(design$postStrata, list(caldata)) design$call <- sys.call(-1) design } calibrate.svyrep.design<-function(design, formula, population,compress=NA, aggregate.index=NULL, variance=NULL, bounds=c(-Inf,Inf), calfun=c("linear","raking","logit"), maxit=50, epsilon=1e-7, verbose=FALSE,force=FALSE, trim=NULL, bounds.const=FALSE, sparse=FALSE, ...){ if(is.list(formula) && is.list(population)){ ## inputs as marginal totals, as in rake() population<-margins2totals(formula,population) formula<-as.formula(paste("~",paste(sapply(formula,function(f) paste(all.vars(f),collapse="*")),collapse="+"))) if (verbose){ print(formula) print(population) } } if (is.character(calfun)) calfun<-match.arg(calfun) if (length(epsilon)!=1 && length(epsilon)!=length(population)) stop("'epsilon' must be a scalar or of the same length as 'population'") if (!is.list(bounds)) bounds <- list(lower = bounds[1], upper = bounds[2]) ## converting to list if not already if (is.character(calfun) && calfun=="linear" && all(unlist(bounds)==c(-Inf,Inf))){ ## old code is better for ill-conditioned linear calibration rval<-regcalibrate(design,formula,population, compress=compress, aggregate.index=aggregate.index, lambda=variance,...) rval$call<-sys.call(-1) return(rval) } mf<-model.frame(formula, design$variables) if(sparse){ mm<-sparse.model.matrix(formula, model.frame(formula, model.frame(design))) }else{ mm<-model.matrix(formula, model.frame(formula, model.frame(design))) } ww<-design$pweights repwt<-as.matrix(design$repweights) if (!design$combined.weights) repwt<-repwt*design$pweights if (inherits(aggregate.index,"formula")){ if (length(aggregate.index)!=2) stop("aggregate.index must be a one-sided formula") aggregate.index<-model.frame(aggregate.index, design$variables) if (NCOL(aggregate.index)>1) stop("aggregate.index must specify a single variable") aggregate.index<-aggregate.index[[1]] } if (!is.null(aggregate.index)){ if (sqrt(max(ave(ww,aggregate.index,FUN=var),na.rm=TRUE))>1e-2*mean(ww)) warning("Sampling weights are not constant within clusters defined by aggregate.index") mm<-apply(mm,2,function(mx) ave(mx,aggregate.index)) ww<-ave(ww,aggregate.index) repwt<-apply(repwt,2,function(wx) ave(wx, aggregate.index)) } whalf<-sqrt(ww) sample.total<-colSums(mm*ww) if(any(sample.total==0)){ ## drop columsn where all sample and population are zero zz<-(population==0) & (apply(mm,2,function(x) all(x==0))) mm<-mm[,!zz] population<-population[!zz] sample.total<-sample.total[!zz] if (length(epsilon)>1) epsilon <- epsilon[!zz] } if (length(sample.total)!=length(population)){ print(sample.total) print(population) stop("Population and sample totals are not the same length.") } if (!is.null(names(population))){ if (!all(names(sample.total) %in% names(population))){ warning("Sampling and population totals have different names.") cat("Sample: "); print(names(sample.total)) cat("Popltn: "); print(names(population)) } else if (!all(names(sample.total) == names(population))){ warning("Sample and population totals reordered to make names agree: check results.") population <- population[match(names(sample.total), names(population))] } } if(is.character(calfun)) calfun<-switch(calfun, linear=cal.linear, raking=cal.raking, logit=cal.logit) else if (!inherits(calfun,"calfun")) stop("'calfun' must be a string or a 'calfun' object") gtotal <- grake(mm,ww,calfun,bounds=bounds,population=population, verbose=verbose, epsilon=epsilon, maxit=maxit, variance=variance) if(!is.null(trim)) { gnew<-pmax(trim[1], pmin(gtotal, trim[2])) outside<-gtotaltrim[2] if (any(outside)){ trimmings<-(gtotal-gnew)*ww gnew[!outside]<-gnew[!outside]+sum(trimmings)/sum(ww[!outside]) gtotal<-gnew attr(gtotal,"failed")<-NULL message(paste(sum(outside),"weights were trimmed")) } } if (!force && !is.null(attr(gtotal,"failed"))) stop("Calibration failed") design$pweights<-design$pweights*gtotal for(i in 1:NCOL(repwt)){ wwi<-repwt[,i] if(verbose) cat("replicate = ",i,"\n") g<-grake(mm, wwi, calfun, eta=rep(0,NCOL(mm)), bounds=bounds, population=population, epsilon=epsilon, verbose=verbose, maxit=maxit, variance=variance) if(length(trim)==2){ outside<-(gtrim[2]) if (any(outside)) { gnew<-pmax(trim[1],pmin(g,trim[2])) trimmings<-(g-gnew)*wwi gnew[!outside]<-gnew[!outside]+sum(trimmings)/sum(wwi[!outside]) g<-gnew }} repwt[,i]<-as.vector(design$repweights[,i])*g } if (!design$combined.weights) repwt<-repwt/gtotal if (compress || (is.na(compress && inherits(design$repweights,"repweights_compressed")))){ repwt<-compressWeights(repwt) } design$repweights<-repwt design$call<-sys.call(-1) design } cal.linear<-make.calfun(function(u,bounds) pmin(pmax(u+1,bounds$lower),bounds$upper)-1, function(u, bounds) as.numeric(u < bounds$upper-1 & u > bounds$lower-1), "linear calibration") cal.raking<-make.calfun(function(u,bounds) pmin(pmax(exp(u),bounds$lower),bounds$upper)-1, function(u, bounds) ifelse(ubounds$lower-1,exp(u),0), "raking") cal.logit<-make.calfun( function(u,bounds) { if (any(!is.finite(unlist(bounds)))) stop("Logit calibration requires finite bounds") L <- bounds$lower U <- bounds$upper A <- (U-L)/((U-1)*(1-L)) eAu <- exp(A*u) ( L*(U-1) + U*(1-L)*eAu)/(U-1+(1-L)*eAu)-1 }, function(u,bounds) { L <- bounds$lower U <- bounds$upper A <- (U-L)/((U-1)*(1-L)) eAu <- exp(A*u) U*(1-L)*eAu*A/(U-1+(1-L)*eAu)-( (L*(U-1)+U*(1-L)*eAu)*( (1-L)*eAu*A ) )/(U-1+(1-L)*eAu)^2 }, "logit calibration" ) cal.sinh <- make.calfun( Fm1 = function(u, bounds) { if (any(!is.finite(unlist(bounds)))) stop("Sinh calibration requires finite bounds") dasinh <- function(u, alpha = 1) { p <- asinh(2 * alpha * u) m <- (p + sqrt((p^2) + 4*(alpha^2)))/(2*alpha) m <- as.vector(m) m } # linear truncation pmin(pmax(dasinh(u), bounds$lower), bounds$upper) - 1 }, dF = function(u, bounds) { ddasinh <- function(u, alpha = 1) { p <- asinh(2 * alpha * u) m <- 1/sqrt(1 + (2*alpha*u)^2)*(1 + p/sqrt(p^2 + 4*alpha^2)) m <- as.vector(m) m } ifelse(u < bounds$upper - 1 & u > bounds$lower - 1, ddasinh(u), 0) }, name = 'sinh calibration' ) grake<-function(mm,ww,calfun,eta=rep(0,NCOL(mm)),bounds,population,epsilon, verbose, maxit, variance=NULL){ sample.total<-colSums(mm*ww) if(!inherits(calfun,"calfun")) stop("'calfun' must be of class 'calfun'") Fm1<-calfun$Fm1 dF<-calfun$dF if (is.null(variance)){ sigma2<-rep(1,nrow(mm)) } else if(length(variance) == nrow(mm)){ sigma2<-drop(variance) }else{ sigma2<-drop(mm%*%variance) } xeta<-drop(mm%*%eta/sigma2) g<-1+Fm1(xeta, bounds) deriv <- dF(xeta, bounds) iter<-1 ## pre-scaling for people starting with no weights SOMETHRESHOLD<-20 scales<-population/sample.total if (min(scales)> SOMETHRESHOLD){ scale<-mean(scales) ww<-ww*scale sample.total<-sample.total*scale if(verbose) message(paste("Sampling weights rescaled by",signif(scale,3))) if (any(is.finite(unlist(bounds)))) warning(paste("Bounds were set but will be interpreted after rescaling by",signif(scale,3))) } else scale<-NULL repeat({ Tmat<-crossprod(mm*ww/sqrt(sigma2)*deriv, mm/sqrt(sigma2)) misfit<-(population-sample.total-colSums(mm*ww*Fm1(xeta, bounds))) deta<-MASS::ginv(as(Tmat, "matrix"), tol=256*.Machine$double.eps)%*%misfit eta<-eta+deta xeta<- drop(mm%*%eta/sigma2) g<-1+Fm1(xeta, bounds) deriv <- dF(xeta, bounds) while(itermaxit) { achieved<-max((abs(misfit)/(1+abs(population)))) warning("Failed to converge: eps=",achieved," in ",iter," iterations") attr(g,"failed")<-achieved break; } }) if (!is.null(scale)) g<-g*scale attr(g,"eta")<-eta g } trimWeights<-function(design, upper=Inf,lower=-Inf, ...){ UseMethod("trimWeights") } do_trimWeights<-function(pw, upper,lower, has_trimmed){ outside<-pwupper if (!any(outside)) return(list(weights=pw,has_trimmed=has_trimmed)) pwnew<-pmax(lower,pmin(pw, upper)) trimmings<-pw-pwnew can_trim<-!outside & !has_trimmed if (!any(can_trim)){ warning("trimming failed") } else { pwnew[can_trim]<-pwnew[can_trim]+sum(trimmings)/sum(can_trim) } list(weights=pwnew,has_trimmed=outside | has_trimmed) } trimWeights.survey.design2<-function(design, upper=Inf, lower= -Inf, strict=FALSE,...){ pw<-weights(design,"sampling") outside<-pwupper if (!any(outside)) return(design) ## doesn't need trimming has_trimmed<-rep(FALSE,length(outside)) while(any(outside)){ trim<-do_trimWeights(pw, upper,lower, has_trimmed) pw<-trim$weights if (!strict) break outside<-pwupper has_trimmed<-trim$has_trimmed } design$prob<-1/pw design$call<-sys.call() design$call[[1]]<-as.name(.Generic) design } trimWeights.svyrep.design<-function(design, upper=Inf, lower= -Inf, strict=FALSE, compress=FALSE,...){ pw<-weights(design,"sampling") outside<-pwupper if (any(outside)) { has_trimmed<-rep(FALSE,length(outside)) while(any(outside)){ trim<-do_trimWeights(pw, upper,lower, has_trimmed) pw<-trim$weights if (!strict) break outside<-pwupper has_trimmed<-trim$has_trimmed } design$prob<-1/pw } rw<-weights(design, "analysis") outside<-rwupper if (any(outside)) { rwnew<-matrix(pmax(lower,pmin(rw, upper)),nrow=nrow(rw)) trimmings<-rw-rwnew rwnew<-rwnew+t(t(!outside)*colSums(trimmings)/colSums(!outside)) if (compress) design$repweights<-compressWeights(rwnew) else design$repweights<-rwnew design$combined.weights<-TRUE } design$call<-sys.call() design$call[[1]]<-as.name(.Generic) design } margins2totals<-function(formulas, totals){ totals<-mapply(onemargin2totals,formulas,totals,SIMPLIFY=FALSE) totaln<-do.call(c,totals) totalorder<-do.call(c,lapply(totals,function(x) attr(x,"order"))) totaln<-totaln[order(totalorder)] totaln[!duplicated(names(totaln))] } onemargin2totals<-function(formula,total){ if (is.table(total)) total<-as.data.frame(total) if (!is.data.frame(total) && is.vector(total) && (length(formula[[2]])==1)){ ## just a vector total<-as.table(total) d<-dimnames(total) names(d)<-paste(deparse(formula[[2]]),collapse="") total<-as.data.frame(total) } if (!is.data.frame(total)) stop("incorrect format for population totals") newformula<-as.formula(paste("Freq",paste(all.vars(formula),collapse="*"),sep="~")) mf<-model.frame(newformula,as.data.frame(total)) mm<-model.matrix(newformula,mf) intorder<-c(1,attr(terms(newformula),"order")[attr(mm,"assign")]) rval<-colSums(mf$Freq*mm) attr(rval,"order")<-intorder rval } survey/R/transform.R0000644000176200001440000000076411712610132014147 0ustar liggesusers## another name for update() transform.survey.design<-function(`_data`, ...) update(`_data`,...) transform.svyrep.design<-function(`_data`, ...) update(`_data`,...) transform.twophase<-function(`_data`, ...) update(`_data`,...) transform.twophase2<-function(`_data`, ...) update(`_data`,...) transform.ODBCsvydesign<-function(`_data`, ...) update(`_data`,...) transform.DBIsvydesign<-function(`_data`, ...) update(`_data`,...) transform.svyimputationList<-function(`_data`, ...) update(`_data`,...) survey/R/mse.R0000644000176200001440000000066611616331023012723 0ustar liggesusers mse<-function(repstat, design){ v<-attr(repstat,"var") center<-attr(v,"means") if ((length(v)!=length(center)^2) && (length(v)==length(center))){ attr(repstat,"var")<-vcov(repstat)+(center-coef(repstat))^2*sum(design$rscales)*design$scale } else { attr(repstat,"var")<-as.matrix(vcov(repstat)+outer((center-coef(repstat)))*sum(design$rscales)*design$scale) } repstat } survey/R/qrule.R0000644000176200001440000000622414357653352013304 0ustar liggesusers ## Need to call qs() from qrule(), because definition of p varies by rule. ## Discrete qrule_math <-qrule_hf1 <- function(x,w,p){ if (any(zero<-w==0)){ w<-w[!zero] x<-x[!zero] } qdata<-qs(x,w,p) if(qdata$wlow==0) qdata$qlow else qdata$qup } qrule_school<-qrule_hf2 <- function(x,w,p){ if (any(zero<-w==0)){ w<-w[!zero] x<-x[!zero] } qdata<-qs(x,w,p) if(qdata$wlow==0) (qdata$qlow+qdata$qup)/2 else qdata$qup } qrule_hf3 <- function(x,w,p){ if (any(zero<-w==0)){ w<-w[!zero] x<-x[!zero] } w<-rowsum(w,x) x<-sort(unique(x)) qdata<-qs(x,w,p) if((qdata$wlow==0)&& (qdata$ilow %%2 ==0)) qdata$qlow else qdata$qup } ## Continuous qrule_hf4 <- function(x,w,p){ if (any(zero<-w==0)){ w<-w[!zero] x<-x[!zero] } qdata<-qs(x,w,p) gamma<-with(qdata, wlow/(wup+wlow)) qdata$qlow*(1-gamma)+qdata$qup*gamma } qrule_hf5<-function(x,w,p){ if (any(zero<-w==0)){ w<-w[!zero] x<-x[!zero] } n<-length(x) if (n==1) return(x) ii<-order(x) x<-x[ii] w<-w[ii] cumw<-cumsum(w) pk<-(cumw-w/2)/(cumw[n]) approx( pk,x, p, method="linear", rule=2)$y } qrule_hf6<-function(x,w,p){ if (any(zero<-w==0)){ w<-w[!zero] x<-x[!zero] } n<-length(x) if (n==1) return(x) ii<-order(x) x<-x[ii] w<-w[ii] cumw<-cumsum(w) pk<-cumw/(cumw[n]+w[n]) approx( pk,x, p, method="linear", rule=2)$y } qrule_shahvaish<-function(x,w,p){ if (any(zero<-w==0)){ w<-w[!zero] x<-x[!zero] } n<-length(x) if (n==1) return(x) ii<-order(x) x<-x[ii] w<-w[ii] wbar<-w/mean(w) S<-cumsum(wbar) pk<-(S+0.5-w/2)/(n+1) approx( pk,x, p, method="constant", f=0, rule=2)$y } qrule_hf7<-function(x,w,p){ if (any(zero<-w==0)){ w<-w[!zero] x<-x[!zero] } n<-length(x) if (n==1) return(x) ii<-order(x) x<-x[ii] cumw<-cumsum(w[ii]) pk<-c(0, cumw[-n])/cumw[n-1] approx( pk,x, p, method="linear", rule=2)$y } qrule_hf8<-function(x,w,p){ if (any(zero<-w==0)){ w<-w[!zero] x<-x[!zero] } n<-length(x) if (n==1) return(x) ii<-order(x) x<-x[ii] w<-w[ii] cumw<-cumsum(w) pk<-(c(0, cumw[-n])*1/3+cumw*2/3)/(cumw[n]+w[n]/3) approx( pk,x, p, method="linear", rule=2)$y } qrule_hf9<-function(x,w,p){ if (any(zero<-w==0)){ w<-w[!zero] x<-x[!zero] } n<-length(x) if (n==1) return(x) ii<-order(x) x<-x[ii] w<-w[ii] cumw<-cumsum(w) pk<-(c(0, cumw[-n])*3/8+cumw*5/8)/(cumw[n]+w[n]/4) approx( pk,x, p, method="linear", rule=2)$y } last<-function(a) { if (any(a)) max(which(a)) else 1 } qs <- function(x, w, p){ ## already has missings removed, ties handled. n<-length(x) ii<-order(x) x<-x[ii] cumw<-cumsum(w[ii]) pos<-last(cumw<=p*sum(w)) posnext<-if(pos==length(x)) pos else pos+1 list(qlow=x[pos], qup=x[posnext], ilow=pos,iup=posnext, wlow=p-cumw[pos]/sum(w),wup=cumw[posnext]/sum(w)-p) } survey/R/score.R0000644000176200001440000001356114233634027013260 0ustar liggesusers fisherinf<-function(beta, model, X=model.matrix(model)){ design<-model$survey.design eta<-X %*%beta mu<-drop(family(model)$linkinv(eta)) V<-family(model)$variance(mu) d<-drop(family(model)$mu.eta(eta)) w<-weights(design,"sampling") D<-X*d t(D)%*%(w*D/V) } scores<-function(model, newbeta, X=model.matrix(model),fullrank=TRUE){ design<-model$survey.design out<-newbeta==0 eta<-X %*%newbeta Xin<-X[, !out, drop=FALSE] Xout<-X[, out, drop=FALSE] Xout_in<-qr.resid(qr(Xin),Xout) mu<-drop(family(model)$linkinv(eta)) V<-family(model)$variance(mu) d<-drop(family(model)$mu.eta(eta)) Y<-model$y Uin<-Xin*((d/V)*(Y-mu)) Uout<-Xout*((d/V)*(Y-mu)) I_rss98<-fisherinf(newbeta, model, X) ## equation 3.3, Rao, Scott, and Skinner 1998 Atwiddle<-I_rss98[out,!out]%*%solve(I_rss98[!out,!out]) #equation 3.2, ibid Uout_in<-Uout-Uin%*%t(Atwiddle) if(fullrank){ rankcheck<-qr(Uout_in) if (rankcheck$rank1){ N<-ncol(ids) for(i in 2:N){ ids[,i]<-do.call("interaction", ids[,1:i,drop=FALSE]) } } ## force clusters nested in strata if (nest && has.strata && NCOL(ids)){ N<-NCOL(ids) NS<-NCOL(strata) for(i in 1:N) ids[,i]<-do.call("interaction", c(strata[,1:min(i,NS),drop=FALSE], ids[,i,drop=FALSE])) } ## check if clusters nested in strata if (check.strata && nest) warning("No point in check.strata=TRUE if nest=TRUE") if(check.strata && !is.null(strata) && NCOL(ids)){ sc<-(rowSums(table(ids[,1],strata[,1])>0)) if(any(sc>1)) stop("Clusters not nested in strata at top level; you may want nest=TRUE.") } ## force substrata nested in clusters N<-ncol(ids) NS<-ncol(strata) if (N>1){ for(i in 2:N) strata[,i]<-interaction(strata[,min(i,NS)], ids[,i-1]) } ## PPS: valid choices currently are FALSE and "brewer" if (is.logical(pps) && pps) stop("'pps' must be FALSE or a character string") if (is.character(pps)) { pps<-TRUE } ## Finite population correction: specified per observation ## Also incorporates design sample sizes formerly in nPSU if (!is.null(fpc) && !is.numeric(fpc) && !is.data.frame(fpc)) stop("fpc must be a matrix or dataframe or NULL") fpc<-as.fpc(fpc,strata, ids, pps=pps) ## if FPC specified, but no weights, use it for weights if (is.null(probs) && is.null(weights)){ if (is.null(fpc$popsize)){ if (missing(probs) && missing(weights)) warning("No weights or probabilities supplied, assuming equal probability") probs<-rep(1,nrow(ids)) } else { probs<-1/weights(fpc, final=FALSE) } } if (is.numeric(probs) && length(probs)==1) probs<-rep(probs, NROW(variables)) if (length(probs)==0) probs<-rep(1,NROW(variables)) if (NCOL(probs)==1) probs<-data.frame(probs) rval<-list(cluster=ids) rval$strata<-strata rval$has.strata<-has.strata rval$prob<- apply(probs,1,prod) rval$allprob<-probs rval$call<-match.call() rval$variables<-variables rval$fpc<-fpc rval$call<-sys.call(-1) rval$pps<-pps class(rval)<-c("survey.design2","survey.design") if (!is.null(calibrate.formula)){ rval<-recalibrate(rval, calibrate.formula) rval$call<-sys.call(-1) } rval } onestrat<-function(x,cluster,nPSU,fpc, lonely.psu,stratum=NULL,stage=1,cal=cal){ if (is.null(fpc)) f<-rep(1,NROW(x)) else{ f<-ifelse(fpc==Inf, 1, (fpc-nPSU)/fpc) } if (nPSU>1) scale<-f*nPSU/(nPSU-1) else scale<-f if (all(f<0.0000001))## self-representing stratum return(matrix(0,NCOL(x),NCOL(x))) scale<-scale[!duplicated(cluster)] x<-rowsum(x,cluster) nsubset<-nrow(x) if (nsubset1 || (nPSU>1 & !getOption("survey.adjust.domain.lonely"))) x<-sweep(x, 2, colMeans(x), "-") if (nsubset==1 && nPSU>1 && getOption("survey.adjust.domain.lonely")){ warning("Stratum (",stratum,") has only one PSU at stage ",stage) if (lonely.psu=="average" && getOption("survey.adjust.domain.lonely")) scale<-NA } if (nPSU>1){ return(crossprod(x*sqrt(scale))) } else { rval<-switch(lonely.psu, certainty=crossprod(x*sqrt(scale)), remove=crossprod(x*sqrt(scale)), adjust=crossprod(x*sqrt(scale)), average=NA*crossprod(x), fail= stop("Stratum (",stratum,") has only one PSU at stage ",stage), stop("Can't handle lonely.psu=",lonely.psu) ) rval } } onestage<-function(x, strata, clusters, nPSU, fpc, lonely.psu=getOption("survey.lonely.psu"),stage=0, cal){ if (NROW(x)==0) return(matrix(0,NCOL(x),NCOL(x))) stratvars<- tapply(1:NROW(x), list(factor(strata)), function(index){ onestrat(x[index,,drop=FALSE], clusters[index], nPSU[index][1], fpc[index], ##changed from fpc[index][1], to allow pps(brewer) lonely.psu=lonely.psu,stratum=strata[index][1], stage=stage,cal=cal) }) p<-NCOL(x) nstrat<-length(unique(strata)) nokstrat<-sum(sapply(stratvars,function(m) !any(is.na(m)))) apply(array(unlist(stratvars),c(p,p,length(stratvars))),1:2,sum,na.rm=TRUE)*nstrat/nokstrat } svyrecvar<-function(x, clusters, stratas, fpcs, postStrata=NULL, lonely.psu=getOption("survey.lonely.psu"), one.stage=getOption("survey.ultimate.cluster")){ x<-as.matrix(x) cal<-NULL ## Remove post-stratum means, which may cut across clusters ## Also center the data using any "g-calibration" models if(!is.null(postStrata)){ for (psvar in postStrata){ if (inherits(psvar, "greg_calibration")) { if (psvar$stage==0){ ## G-calibration at population level x<-as.matrix(qr.resid(psvar$qr,x/psvar$w)*psvar$w) } else { ## G-calibration within clusters cal<-c(cal, list(psvar)) } } else if (inherits(psvar, "raking")){ ## raking by iterative proportional fitting for(iterations in 1:10){ for(margin in psvar){ psw<-attr(margin, "weights") x<- x - psw*apply(x/psw, 2, ave, margin) } } } else { ## ordinary post-stratification psw<-attr(psvar, "weights") oldw<-attr(psvar, "oldweights") if (is.null(oldw)) oldw<-rep(1,length(psw)) zeroes<-which(psw==0 & oldw==0) if (length(zeroes)) psw[zeroes]=1 psvar<-as.factor(psvar) psmeans<-rowsum(x*oldw/psw,psvar,reorder=TRUE)/as.vector(by(oldw,psvar,sum)) x<- x-psmeans[match(psvar,sort(unique(psvar))),]*psw } } } multistage(x, clusters,stratas,fpcs$sampsize, fpcs$popsize, lonely.psu=getOption("survey.lonely.psu"), one.stage=one.stage,stage=1,cal=cal) } multistage<-function(x, clusters, stratas, nPSUs, fpcs, lonely.psu=getOption("survey.lonely.psu"), one.stage=FALSE,stage,cal){ n<-NROW(x) v <- onestage(x,stratas[,1], clusters[,1], nPSUs[,1], fpcs[,1], lonely.psu=lonely.psu,stage=stage,cal=cal) if (one.stage!=TRUE && !is.null(fpcs) && NCOL(clusters)>1) { v.sub<-by(1:n, list(as.numeric(clusters[,1])), function(index){ ## residuals for G-calibration using population information ## only on clusters at this stage. for(cali in cal){ if (cali$stage != stage) next j<-match(clusters[index,1],cali$index) if (length(unique(j))!=1) stop("Internal problem in g-calibration data: stage",stage, ", cluster", j) j<-j[[1]] x[index,]<-as.matrix(qr.resid(cali$qr[[j]], x[index,,drop=FALSE]/cali$w[[j]])*cali$w[[j]]) } multistage(x[index,,drop=FALSE], clusters[index,-1,drop=FALSE], stratas[index,-1,drop=FALSE], nPSUs[index,-1,drop=FALSE], fpcs[index,-1,drop=FALSE], lonely.psu=lonely.psu,one.stage=one.stage-1, stage=stage+1,cal=cal)*nPSUs[index[1],1]/fpcs[index[1],1] }) for(i in 1:length(v.sub)) v<-v+v.sub[[i]] } dimnames(v)<-list(colnames(x),colnames(x)) v } ## fpc not given are zero: full sampling. as.fpc<-function(df,strata,ids,pps=FALSE){ count<-function(x) sum(!duplicated(x)) sampsize<-matrix(ncol=ncol(ids),nrow=nrow(ids)) for(i in 1:ncol(ids)) split(sampsize[,i],strata[,i])<-lapply(split(ids[,i],strata[,i]),count) if (is.null(df)){ ## No fpc rval<-list(popsize=NULL, sampsize=sampsize) class(rval)="survey_fpc" return(rval) } fpc<-as.matrix(df) if (xor(ispopsize<-any(df>1), all(df>=1))){ big<-which(fpc>=1,arr.ind=TRUE) small<-which(fpc<1,arr.ind=TRUE) cat("record",big[1,1]," stage",big[1,2],": fpc=", fpc[big[1,,drop=FALSE]],"\n") cat("record",small[1,1]," stage ",small[1,2],": fpc=", fpc[small[1,,drop=FALSE]],"\n") stop("Must have all fpc>=1 or all fpc<=1") } if (ispopsize){ if(pps) stop("fpc must be specified as sampling fraction for PPS sampling") popsize<-fpc } else { popsize<-sampsize/(fpc) } if (any(popsize100% sampling in some strata") } if (!ispopsize && any(is.finite(popsize) & (popsize>1e10))){ big<-which(popsize>1e10 & is.finite(popsize),arr.ind=TRUE) warning("FPC implies population larger than ten billion (record",big[1,1]," stage ",big[1,2],")") } if(!pps){ ## check that fpc is constant within strata. for(i in 1:ncol(popsize)){ diff<-by(popsize[,i], list(strata[,i]), count) if (any(as.vector(diff)>1)){ j<-which(as.vector(diff)>1)[1] warning("`fpc' varies within strata: stratum ",names(diff)[j], " at stage ",i) } } } else{ ## check that fpc is constant with clusters diff<-by(popsize[,i], list(ids[,i]), count) if (any(as.vector(diff)>1)){ j<-which(as.vector(diff)>1)[1] warning("`fpc' varies within cluster: cluster ",names(diff)[j], " at stage ",i) } } rval<-list(popsize=popsize, sampsize=sampsize) class(rval)<-"survey_fpc" rval } "weights.survey_fpc"<-function(object,final=TRUE,...){ if (is.null(object$popsize) || any(object$popsize>1e12)) stop("Weights not supplied and can't be computed from fpc.") if (final) { pop<-apply(object$popsize,1,prod) samp<-apply(object$sampsize,1,prod) pop/samp } else { object$popsize/object$sampsize } } print.survey.design2<-function(x,varnames=FALSE,design.summaries=FALSE,...){ n<-NROW(x$cluster) if (x$has.strata) cat("Stratified ") un<-length(unique(x$cluster[,1])) if(n==un){ cat("Independent Sampling design") is.independent<-TRUE if (is.null(x$fpc$popsize)) cat(" (with replacement)\n") else cat("\n") } else { cat(NCOL(x$cluster),"- level Cluster Sampling design") if (is.null(x$fpc$popsize)) cat(" (with replacement)\n") else cat("\n") nn<-lapply(x$cluster,function(i) length(unique(i))) cat(paste("With (",paste(unlist(nn),collapse=", "),") clusters.\n",sep="")) is.independent<-FALSE } print(x$call) if (design.summaries){ cat("Probabilities:\n") print(summary(x$prob)) if(x$has.strata){ if (NCOL(x$cluster)>1) cat("First-level ") cat("Stratum Sizes: \n") oo<-order(unique(x$strata[,1])) a<-rbind(obs=table(x$strata[,1]), design.PSU=x$fpc$sampsize[!duplicated(x$strata[,1]),1][oo], actual.PSU=table(x$strata[!duplicated(x$cluster[,1]),1])) print(a) } if (!is.null(x$fpc$popsize)){ if (x$has.strata) { cat("Population stratum sizes (PSUs): \n") s<-!duplicated(x$strata[,1]) a<-x$fpc$popsize[s,1] names(a)<-x$strata[s,1] a<-a[order(names(a))] print(a) } else { cat("Population size (PSUs):",x$fpc$popsize[1,1],"\n") } } } if (varnames){ cat("Data variables:\n") print(colnames(x)) } invisible(x) } summary.survey.design2<-function(object,...){ class(object)<-c("summary.survey.design2",class(object)) object } print.summary.survey.design2<-function(x,...){ y<-x class(y)<-c("survey.design2",class(x)) print(y,varnames=TRUE,design.summaries=TRUE,...) } .svycheck<-function(object){ if (inherits(object,"survey.design") && !is.null(object$nPSU)) warning("This is an old-style design object. Please use as.svydesign2 to update it.") } as.svydesign2<-function(object){ if (inherits(object,"survey.design2")) return(object) if (!inherits(object,"survey.design")) stop("This function is for updating old-style survey.design objects") count<-function(x) length(unique(x)) strata<-data.frame(one=object$strata) if ((nc<-ncol(object$cluster))>1){ for(i in 2:nc){ strata<-cbind(strata,object$cluster[,i-1]) } } sampsize<-matrix(ncol=nc,nrow=nrow(object$cluster)) sampsize[,1]<-object$nPSU[match(object$strata, names(object$nPSU))] if (nc>1){ for(i in 2:nc){ split(sampsize[,i],strata[,i])<-lapply(split(object$cluster[,i],strata[,i]),count) } } if (!is.null(object$fpc)){ popsize<-sampsize popsize[,1]<-object$fpc$N[match(object$strata,object$fpc$strata)] } else popsize<-NULL if (nc>1 && !is.null(object$fpc)){ warning("Assuming complete sampling at stages 2 -",nc) } fpc<-list(popsize=popsize,sampsize=sampsize) class(fpc)<-"survey_fpc" object$fpc<-fpc object$strata<-strata object$nPSU<-NULL class(object)<-c("survey.design2","survey.design") object } is.pps<-function(x) if(is.null(x$pps)) FALSE else (x$pps!=FALSE) "[.survey.design2"<-function (x,i, ..., drop=TRUE){ if (!missing(i)){ if (is.calibrated(x) || is.pps(x) || !drop){ ## Set weights to zero: no memory saving possible ## There should be an easier way to complement a subscript.. if (is.logical(i)) x$prob[!i]<-Inf else if (is.numeric(i) && length(i)) x$prob[-i]<-Inf else { tmp<-x$prob[i,] x$prob<-rep(Inf, length(x$prob)) x$prob[i,]<-tmp } index<-is.finite(x$prob) psu<-!duplicated(x$cluster[index,1]) tt<-table(x$strata[index,1][psu]) if(any(tt==1) && getOption("survey.adjust.domain.lonely")){ warning(sum(tt==1)," strata have only one PSU in this subset.") } } else { ## subset everything. if (!is.null(x$variables)) ## phase 2 of twophase design x$variables<-"[.data.frame"(x$variables,i,..1,drop=FALSE) x$cluster<-x$cluster[i,,drop=FALSE] x$prob<-x$prob[i] x$allprob<-x$allprob[i,,drop=FALSE] x$strata<-x$strata[i,,drop=FALSE] x$fpc$sampsize<-x$fpc$sampsize[i,,drop=FALSE] x$fpc$popsize<-x$fpc$popsize[i,,drop=FALSE] } } else { if(!is.null(x$variables)) x$variables<-x$variables[,..1,drop=FALSE] } x } svytotal.survey.design2<-function(x,design, na.rm=FALSE, deff=FALSE,influence=FALSE,...){ if (inherits(x,"formula")){ ## do the right thing with factors mf<-model.frame(x,design$variables,na.action=na.pass) xx<-lapply(attr(terms(x),"variables")[-1], function(tt) model.matrix(eval(bquote(~0+.(tt))),mf)) cols<-sapply(xx,NCOL) x<-matrix(nrow=NROW(xx[[1]]),ncol=sum(cols)) scols<-c(0,cumsum(cols)) for(i in 1:length(xx)){ x[,scols[i]+1:cols[i]]<-xx[[i]] } colnames(x)<-do.call("c",lapply(xx,colnames)) } else{ if(typeof(x) %in% c("expression","symbol")) x<-eval(x, design$variables) else { if(is.data.frame(x) && any(sapply(x,is.factor))){ xx<-lapply(x, function(xi) {if (is.factor(xi)) 0+(outer(xi,levels(xi),"==")) else xi}) cols<-sapply(xx,NCOL) scols<-c(0,cumsum(cols)) cn<-character(sum(cols)) for(i in 1:length(xx)) cn[scols[i]+1:cols[i]]<-paste(names(x)[i],levels(x[[i]]),sep="") x<-matrix(nrow=NROW(xx[[1]]),ncol=sum(cols)) for(i in 1:length(xx)){ x[,scols[i]+1:cols[i]]<-xx[[i]] } colnames(x)<-cn } } } x<-as.matrix(x) if (na.rm){ nas<-rowSums(is.na(x)) design<-design[nas==0,] if (length(nas)>length(design$prob)) x<-x[nas==0,,drop=FALSE] else x[nas>0,]<-0 } N<-sum(1/design$prob) total <- colSums(x/as.vector(design$prob),na.rm=na.rm) class(total)<-"svystat" attr(total, "var")<-v<-svyrecvar(x/design$prob,design$cluster, design$strata, design$fpc, postStrata=design$postStrata) attr(total,"statistic")<-"total" if (influence){ if (na.rm && (length(nas)>length(design$prob))) { infl<-matrix(0,ncol=NCOL(x),nrow=length(nas)) infl[nas==0,]<-x/design$prob attr(total, "influence")<-infl } else { attr(total, "influence")<-x/design$prob } } if (is.character(deff) || deff){ nobs<-sum(weights(design)!=0) if (deff=="replace") vsrs<-svyvar(x,design,na.rm=na.rm)*sum(weights(design))^2/nobs else vsrs<-svyvar(x,design,na.rm=na.rm)*sum(weights(design))^2*(N-nobs)/(N*nobs) attr(total, "deff")<-v/vsrs } return(total) } svymean.survey.design2<-function(x,design, na.rm=FALSE,deff=FALSE,influence=FALSE,...){ if (inherits(x,"formula")){ ## do the right thing with factors mf<-model.frame(x,design$variables,na.action=na.pass) xx<-lapply(attr(terms(x),"variables")[-1], function(tt) model.matrix(eval(bquote(~0+.(tt))),mf)) cols<-sapply(xx,NCOL) x<-matrix(nrow=NROW(xx[[1]]),ncol=sum(cols)) scols<-c(0,cumsum(cols)) for(i in 1:length(xx)){ x[,scols[i]+1:cols[i]]<-xx[[i]] } colnames(x)<-do.call("c",lapply(xx,colnames)) } else { if(typeof(x) %in% c("expression","symbol")) x<-eval(x, design$variables) else if(is.data.frame(x) && any(sapply(x,is.factor))){ xx<-lapply(x, function(xi) {if (is.factor(xi)) 0+(outer(xi,levels(xi),"==")) else xi}) cols<-sapply(xx,NCOL) scols<-c(0,cumsum(cols)) cn<-character(sum(cols)) for(i in 1:length(xx)) cn[scols[i]+1:cols[i]]<-paste(names(x)[i],levels(x[[i]]),sep="") x<-matrix(nrow=NROW(xx[[1]]),ncol=sum(cols)) for(i in 1:length(xx)){ x[,scols[i]+1:cols[i]]<-xx[[i]] } colnames(x)<-cn } } x<-as.matrix(x) if (na.rm){ nas<-rowSums(is.na(x)) design<-design[nas==0,] if (length(nas)>length(design$prob)) x<-x[nas==0,,drop=FALSE] else x[nas>0,]<-0 } pweights<-1/design$prob psum<-sum(pweights) average<-colSums(x*pweights/psum) x<-sweep(x,2,average) v<-svyrecvar(x*pweights/psum,design$cluster,design$strata, design$fpc, postStrata=design$postStrata) attr(average,"var")<-v attr(average,"statistic")<-"mean" if (influence){ if (na.rm && (length(nas)>length(pweights))) { infl<-matrix(0,ncol=NCOL(x),nrow=length(nas)) infl[nas==0,]<-x*pweights/psum } else { infl<-x*pweights/psum } attr(average,"influence") <- infl } class(average)<-"svystat" if (is.character(deff) || deff){ nobs<-sum(weights(design)!=0) if(deff=="replace"){ vsrs<-svyvar(x,design,na.rm=na.rm)/(nobs) } else { if(psumlength(design$prob))) { infl<-matrix(0,ncol=NCOL(r),nrow=length(nas)) infl[nas==0,]<-r/design$prob } else { infl<-r/design$prob } attr(rval,"influence") <- infl } class(rval)<-"svyratio" rval } survey/R/svynls.R0000644000176200001440000001506614166647050013512 0ustar liggesusers## svynls svynls<-function(formula, design, start, weights=NULL, ...){ UseMethod("svynls", design) } var_power<-function(d, maxit=3){ ## this should use svytotal dispersion<-0 rval<-list( precision_weights=function(res,mu){ dispersion<<-sum((res^2)^d) /sum(abs(mu)^d) variance<-dispersion*abs(mu)^d 1/variance }, iterations=maxit, name=paste0("weights: variance =",signif(dispersion,3),"mu^",d) ) class(rval)<-"svynls_weights" rval } svynls.DBIsvydesign<-function(formula, design,start, weights=NULL, ...){ design$variables <- getvars(formula, design$db$connection, design$db$tablename, updates = design$updates, subset = design$subset) NextMethod("svynls", design) } utils::globalVariables(c(".survey.prob.weight", ".survey.repwt")) svynls.svyrep.design<-function(formula, design, start, weights=NULL, ..., return.replicates=FALSE){ has_vars<- intersect(all.vars(formula),colnames(design)) dat<-model.frame(design)[,has_vars] if (is.numeric(weights)) prior.weights<-weights else prior.weights<-rep(1, nrow(dat)) meanweight<-mean(weights(design, "sampling")) dat$.survey.prob.weight<-prior.weights*weights(design, "sampling")/meanweight if (inherits(weights, "svynls_weights")){ maxit<-weights$iterations } else { maxit<-0 } first<-nls(formula,dat, weights=.survey.prob.weight,start=start, ...) for(i in seq_len(maxit)){ prior.weights<-weights$precision_weights(fitted(first), resid(first)) dat$.survey.prob.weight<-prior.weights*weights(design, "sampling")/meanweight first<-nls(formula, dat, weights=.survey.prob.weight,start=start, ...) first$precision_weights<-prior.weights } theta<-coef(first) repwts<-weights(design,"analysis") thetas<-matrix(0, ncol=length(theta),nrow=ncol(repwts)) for(i in ncol(repwts)){ dat$.survey.repwt<-prior.weights*repwts[,i]/meanweight model<-nls(formula,dat, weights=.survey.repwt,start=theta, ...) thetas[i, ] <- coef(model) } rval<-list() rval$fit<-first v<-svrVar(thetas, design$scale, design$rscales, coef=theta) rval$naive.cov<-summary(first)$cov.unscaled rval$cov<-v rval$coef<-theta rval$design<-design rval$meanweight<-meanweight rval$call<-sys.call(-1) if (return.replicates) rval$replicates<-thetas class(rval)<-"svynls" rval } svynls.survey.design2<-function(formula, design, start, weights=NULL, ..., influence=FALSE){ has_vars<- intersect(all.vars(formula),colnames(design)) dat<-model.frame(design)[,has_vars] if (is.numeric(weights)) prior.weights<-weights else prior.weights<-rep(1, nrow(dat)) meanweight<-mean(weights(design, "sampling")) w<-prior.weights*weights(design, "sampling")/meanweight if (inherits(weights, "svynls_weights")){ maxit<-weights$iterations } else { maxit<-0 } dat$.survey.prob.weight<-w fit<-nls(formula, dat, weights=.survey.prob.weight,start=start, ...) for(i in seq_len(maxit)){ precwt<-weights$precision_weights(fitted(fit), resid(fit)) w<-precwt*weights(design, "sampling")/meanweight dat$.survey.prob.weight<-w fit<-nls(formula, dat, weights=.survey.prob.weight,start=start, ...) fit$precision_weights<-precwt } v0<-summary(fit)$cov.unscaled theta<-coef(fit) grads<-fit$m$gradient()/sqrt(w) ## nls scales by sqrt(weights) resids<-fit$m$resid() infl<-resids*grads%*%v0 v<-svyrecvar(infl*w, design$cluster, design$strata, design$fpc, postStrata = design$postStrata) rval<-list() rval$fit<-fit rval$coef<-theta rval$cov<-v rval$naive.cov<-vcov(fit) rval$call<-sys.call(-1) rval$design<-design rval$meanweight<-meanweight if(influence) attr(rval,"inference")<-infl class(rval)<-"svynls" rval } .p.nls.convInfo<-function (x, digits, show. = getOption("show.nls.convergence", TRUE)) { if (!is.null(x$convInfo)) with(x$convInfo, { if (identical(x$call$algorithm, "port")) cat("\nAlgorithm \"port\", convergence message: ", stopMessage, "\n", sep = "") else { if (!isConv || show.) { cat("\nNumber of iterations", if (isConv) "to convergence:" else "till stop:", finIter, "\nAchieved convergence tolerance:", format(finTol, digits = digits)) cat("\n") } if (!isConv) { cat("Reason stopped:", stopMessage) cat("\n") } } }) invisible() } print.svynls<-function (x, digits = max(3L, getOption("digits") - 3L), ...) { cat("Nonlinear survey regression model\n") cat(" model: ", deparse(formula(x$fit)), "\n", sep = "") cat(" design: ") print(x$design) print(x$fit$m$getAllPars(), digits = digits, ...) cat(" ", "weighted ", "residual sum-of-squares: ", format(x$fit$m$deviance()*x$meanweight, digits = digits), "\n", sep = "") .p.nls.convInfo(x, digits = digits) invisible(x) } coef.svynls<-function(object,...) object$coef vcov.svynls<-function(object,...) object$cov summary.svynls <- function (object, correlation = FALSE, ...) { r <- as.vector(object$fit$m$resid()) w <- object$fit$weights n <- if (!is.null(w)) sum(w > 0) else length(r) param <- coef(object) pnames <- names(param) p <- length(param) rdf <- n - p resvar <- if (rdf <= 0) NaN else deviance(object$fit)/rdf se <-SE(object) tval <- param/se param <- cbind(param, se, tval, 2 * pt(abs(tval), rdf, lower.tail = FALSE)) dimnames(param) <- list(pnames, c("Estimate", "Std. Error", "t value", "Pr(>|t|)")) ans <- list(formula = formula(object$fit), residuals = r, sigma = sqrt(resvar), df = c(p, rdf), cov.unscaled = vcov(object)/sqrt(resvar), cov.scaled=vcov(object), call = object$call, convInfo = object$fit$convInfo, control = object$fit$control, na.action = object$fit$na.action, coefficients = param, parameters = param) if (correlation && rdf > 0) { ans$correlation <- cov2cor(vcov(object)) } class(ans) <- c("summary.svynls","summary.nls") ans } survey/R/svykm.R0000644000176200001440000002525114423575670013326 0ustar liggesusers svykm<-function(formula, design, se=FALSE, ...) UseMethod("svykm",design) svykm.survey.design<-function(formula, design,se=FALSE, ...){ if (!inherits(formula,"formula")) stop("need a formula") if (length(formula)!=3) stop("need a two-sided formula") mf<-model.frame(formula, model.frame(design), na.action=na.pass) mf<-na.omit(mf) drop<-attr(mf,"na.action") if (!is.null(drop)) design<-design[-drop,] y<-model.response(mf) if (!is.Surv(y) || attr(y,"type")!="right") stop("response must be a right-censored Surv object") if (ncol(mf)==1) { if (se) s<-km.stderr(y,design) else s<-svykm_fit(y,weights(design)) } else { x<-mf[,-1] if (NCOL(x)>1) groups<-do.call(interaction,x) else groups<-as.factor(x) if (se){ lhs<-formula lhs[[3]]<-1 s<-lapply(levels(groups), function(g) svykm(lhs, subset(design,groups==g),se=TRUE)) }else{ s<-lapply(levels(groups), function(g) svykm_fit(y[groups==g],weights(design)[groups==g])) } names(s)<-levels(groups) class(s)<-"svykmlist" } call<-match.call() call[[1]]<-as.name(.Generic) attr(s,"call")<-call attr(s, "formula")<-formula attr(s, "na.action")<-drop return(s) } svykm.svyrep.design<-function(formula, design,se=FALSE, ...){ if (!inherits(formula,"formula")) stop("need a formula") if (length(formula)!=3) stop("need a two-sided formula") mf<-model.frame(formula, model.frame(design), na.action=na.pass) mf<-na.omit(mf) drop<-attr(mf,"na.action") if (!is.null(drop)) design<-design[-drop,] y<-model.response(mf) if (!is.Surv(y) || attr(y,"type")!="right") stop("response must be a right-censored Surv object") if (ncol(mf)==1) { if (se) stop("SE not yet available") else s<-svykm_fit(y,weights(design,"sampling")) } else { x<-mf[,-1] if (NCOL(x)>1) groups<-do.call(interaction,x) else groups<-as.factor(x) if (se){ lhs<-formula lhs[[3]]<-1 s<-lapply(levels(groups), function(g) svykm(lhs, subset(design,groups==g),se=TRUE)) }else{ s<-lapply(levels(groups), function(g) svykm_fit(y[groups==g],weights(design)[groups==g])) } names(s)<-levels(groups) class(s)<-"svykmlist" } call<-match.call() call[[1]]<-as.name(.Generic) attr(s,"call")<-call attr(s, "formula")<-formula attr(s, "na.action")<-drop return(s) } svykm_fit<-function(y,w){ t<-y[,"time"] s<-y[,"status"] nn<-rowsum(cbind(s,1)*w,t) tt<-sort(unique(t)) N<-c(sum(w),sum(w),sum(w)-cumsum(nn[-nrow(nn),2])) d<-c(0,nn[,1]) surv<-pmax(0,cumprod(1-d/N)) rval<-list(time=c(0,tt), surv=surv) class(rval)<-"svykm" rval } km.stderr<-function(survobj,design){ time<-survobj[,'time'] status<-survobj[,'status'] ## Brute force and ignorance: compute Y and dN as totals, use delta-method keep<-which((status==1) & (weights(design)!=0)) y<-outer(time,time[keep],">=") dN<-diag(status)[,keep,drop=FALSE] oo<-order(time[keep], -status[keep]) okeep<-keep[oo] ntimes<-length(oo) ttime<-time[okeep] sstatus<-status[okeep] totals<-svytotal(cbind(dN[,oo,drop=FALSE],y[,oo,drop=FALSE]), design) rm(dN) y<-coef(totals)[-(1:ntimes)] dNbar<-coef(totals)[1:ntimes] h<-cumsum(dNbar/y) dVn<- vcov(totals)[(1:ntimes),(1:ntimes)]/outer(y,y) dVy <- vcov(totals)[-(1:ntimes),-(1:ntimes)]*outer(dNbar/y^2,dNbar/y^2) dCVny<- -vcov(totals)[(1:ntimes),-(1:ntimes)]*outer(1/y,dNbar/y^2) dV<-dVn+dVy+dCVny+t(dCVny) V<-numeric(ntimes) if (ntimes>0) V[1]<-dV[1,1] if (ntimes>1) for(i in 2:ntimes) V[i]<-V[i-1]+sum(dV[1:(i-1),i])+sum(dV[i,1:i]) rval<-list(time=ttime,surv=exp(-h),varlog=V) class(rval)<-"svykm" rval } plot.svykm<-function(x,xlab="time",ylab="Proportion surviving",ylim=c(0,1),ci=NULL,lty=1,...){ if (is.null(ci)) ci<-!is.null(x$varlog) plot(x$time,x$surv,xlab=xlab,ylab=ylab, type="s",ylim=ylim,lty=lty,...) if (ci){ if (is.null(x$varlog)) warning("No standard errors available in object") else{ lines(x$time,exp(log(x$surv)-1.96*sqrt(x$varlog)),lty=2,type="s",...) lines(x$time,pmin(1,exp(log(x$surv)+1.96*sqrt(x$varlog))),lty=2,type="s",...) } } invisible(x) } lines.svykm<-function(x,xlab="time",type="s",ci=FALSE,lty=1,...){ lines(x$time,x$surv, type="s",lty=lty,...) if (ci){ if (is.null(x$varlog)) warning("no standard errors available in object") else { lines(x$time,exp(log(x$surv)-1.96*sqrt(x$varlog)),lty=2,type="s",...) lines(x$time,pmin(1,exp(log(x$surv)+1.96*sqrt(x$varlog))),lty=2,type="s",...) } } invisible(x) } plot.svykmlist<-function(x, pars=NULL, ci=FALSE,...){ if (!is.null(pars)) pars<-as.data.frame(pars,stringsAsFactors=FALSE) if(is.null(pars)) plot(x[[1]],ci=ci,...) else do.call(plot,c(list(x[[1]]),pars[1,,drop=FALSE],ci=ci,...)) m<-length(x) if(m==1) return() for(i in 2:m){ if(is.null(pars)) lines(x[[i]],ci=ci,...) else do.call(lines,c(list(x[[i]]),pars[i,,drop=FALSE],ci=ci,...)) } invisible(x) } print.svykm<-function(x, digits=3,...,header=TRUE){ if (header) {cat("Weighted survival curve: ") print(attr(x,"call"))} suppressWarnings({iq1<-min(which(x$surv<=0.75)) iq2<-min(which(x$surv<=0.5)) iq3<-min(which(x$surv<=0.25))}) if (is.finite(iq1)) q1<-x$time[iq1] else q1<-Inf if (is.finite(iq2)) q2<-x$time[iq2] else q2<-Inf if (is.finite(iq3)) q3<-x$time[iq3] else q3<-Inf cat("Q1 =",round(q1,digits)," median =",round(q2,digits)," Q3 =",round(q3,digits),"\n") invisible(x) } print.svykmlist<-function(x, digits=3,...){ cat("Weighted survival curves:\n") print(attr(x,"call")) for(i in 1:length(x)){ cat(names(x)[i],": ") print(x[[i]],digits=digits,header=FALSE) } invisible(x) } quantile.svykm<-function(x, probs=c(0.75,0.5,0.25),ci=FALSE,level=0.95,...){ iq<-sapply(probs, function(p) suppressWarnings(min(which(x$surv<=p)))) qq<-sapply(iq, function(i) if (is.finite(i)) x$time[i] else Inf) names(qq)<-probs if (ci){ if(is.null(x$varlog)){ warning("no confidence interval available.") } else { halfalpha<-(1-level)/2 z<-qnorm(halfalpha, lower.tail=FALSE) su<-exp(log(x$surv)+z*sqrt(x$varlog)) iu<-sapply(probs, function(p) suppressWarnings(min(which(su<=p)))) qu<-sapply(iu, function(i) if (is.finite(i)) x$time[i] else Inf) sl<-exp(log(x$surv)-z*sqrt(x$varlog)) il<-sapply(probs, function(p) suppressWarnings(min(which(sl<=p)))) ql<-sapply(il, function(i) if (is.finite(i)) x$time[i] else Inf) ci<-cbind(ql,qu) rownames(ci)<-probs colnames(ci)<-format(c(halfalpha,1-halfalpha),3) attr(qq,"ci")<-ci } } qq } confint.svykm<-function(object, parm, level=0.95,...){ if (is.null(object$varlog)) stop("no standard errors in object") parm<-as.numeric(parm) idx<-sapply(parm, function(t) max(which(object$time<=t))) z<-qnorm((1-level)/2) ci<-exp(log(object$surv[idx])+outer(sqrt(object$varlog[idx]),c(z,-z))) ci[,2]<-pmin(ci[,2],1) rownames(ci)<-parm colnames(ci)<-format( c((1-level)/2, 1-(1-level)/2),3) ci } predict.svycoxph<-function(object, newdata, se=FALSE, type=c("lp", "risk", "terms","curve"), ...){ type<-match.arg(type) if(type!="curve") return(NextMethod()) design<-object$survey.design response<-object$y if (!is.null(attr(terms(object), "specials")$strata)) stop("Stratified models are not supported yet") if (attr(response,"type")=="counting"){ time<-object$y[,2] status<-object$y[,'status'] entry<-object$y[,1] } else if (attr(response,'type')=="right"){ time<-object$y[,"time"] status<-object$y[,"status"] entry<-rep(-Inf,length(time)) } else stop("unsupported survival type") if(is.null(object$na.action)){ design<-object$survey.design } else { design<-object$survey.design[-object$na.action,] } ff<-delete.response(terms(formula(object))) zmf<-model.frame(ff, newdata) z.pred<-model.matrix(ff, zmf)[,-1,drop=FALSE] ## ## The simple case first ## risk<-getS3method("predict","coxph")(object,type="risk",se.fit=FALSE) if(se==FALSE){ tt<-c(time,entry) ss<-c(status,rep(0,length(entry))) ee<-c(rep(1,length(status)),rep(-1,length(entry))) oo<-order(tt,-ee,-ss) dN<-ss[oo] w<-rep(weights(design),2)[oo] risks<-rep(risk,2) Y<-rev(cumsum(rev(risks[oo]*w*ee[oo]))) keep<-dN>0 s<-vector("list",nrow(z.pred)) beta<-coef(object) h0<- cumsum( (w*dN/Y)[keep] ) for(i in 1:nrow(z.pred)){ zi<-z.pred[i,]-object$means s[[i]]<-list(time=time[oo][keep], surv=exp(-h0 * exp(sum(beta*zi))), call=sys.call()) class(s[[i]])<-c("svykmcox","svykm") } names(s)<-rownames(newdata) return(s) } ## ## The hard case: curves with standard errors ## if(!inherits(design,"survey.design")) stop("replicate-weight designs not supported yet") keep<-which((status==1) & (weights(design)!=0)) y<-outer(time,time[keep],">=")*risk*outer(entry,time[keep],"<=") dN<-diag(status)[,keep] oo<-order(time[keep], -status[keep]) okeep<-keep[oo] ntimes<-length(oo) ttime<-time[okeep] sstatus<-status[okeep] totals<-svytotal(cbind(dN[,oo],y[,oo]), design) rm(dN) y<-coef(totals)[-(1:ntimes)] dNbar<-coef(totals)[1:ntimes] vtotals<-vcov(totals) rm(totals) h<-cumsum(dNbar/y) dVn<- vtotals[(1:ntimes),(1:ntimes)]/outer(y,y) dVy <- vtotals[-(1:ntimes),-(1:ntimes)]*outer(dNbar/y^2,dNbar/y^2) dCVny<- -vtotals[(1:ntimes),-(1:ntimes)]*outer(1/y,dNbar/y^2) dV<-dVn+dVy+dCVny+t(dCVny) det<-suppressWarnings(coxph.detail(object)) ze<-sweep(as.matrix(det$means)[rep(1:length(det$time), det$nevent),,drop=FALSE], 2, object$means) rm(det) dH<-dNbar/y h.ze<-dH*ze varbeta<-vcov(object) Vh<-numeric(ntimes) Vh[1]<-dV[1,1] for(i in 2:ntimes) Vh[i]<-Vh[i-1]+sum(dV[1:(i-1),i])+sum(dV[i,1:i]) dVb<-numeric(ntimes) for(i in 1:ntimes) dVb[i]<-crossprod(h.ze[i,],varbeta%*%(h.ze[i,])) Vb<-cumsum(dVb) dCV<-matrix(nrow=ntimes,ncol=NCOL(ze)) for(i in 1:ntimes) dCV[i,] <- -varbeta%*%(h.ze[i,]) CV<-apply(dCV,2,cumsum) V0<-Vh+Vb s0<-exp(-h) s<-vector("list",nrow(z.pred)) for(i in 1:nrow(z.pred)){ zi<-z.pred[i,]-object$means riski<-exp(sum(zi*coef(object))) Vz<-drop(crossprod(zi,varbeta%*%zi))*riski^2*h^2 CVz<-colSums(t(dCV)*zi)*riski^2*h V<-V0*riski^2+Vz+CVz*2 s[[i]]<-list(time=ttime,surv=exp(-h*riski), varlog=V) class(s[[i]])<-c("svykm.cox","svykm") } names(s)<-rownames(newdata) scall<-sys.call() scall[[1]]<-as.name(.Generic) attr(s,"call")<-scall class(s)<-c("svykmlist.cox","svykmlist") return(s) } survey/R/twophase2.R0000644000176200001440000005612113706160766014070 0ustar liggesusers## ## Constructing cov(R_i,R_j)/pi^*_ij, or \check{\check{\Delta}}_ij in Sarndal's notation ## We use this form because it can be sparse and because it is easy to combine ## multistage and multiphase sampling. ## ## For (stratified, cluster) simple random sampling, ## Dcheck simplifies to (n/N-1)/(n-1) or -(1-p)/(n-1) ## Dcheck_strat<-function(strata, prob){ if (is.character(strata)) strata<-as.factor(strata) strata<-as.numeric(strata) ## for ave() n<-length(strata) rval<-matrix(0, n,n) sampsize<-ave(strata,strata,FUN=length) strats<-unique(strata) for(strat in strats){ these <- strata == strat rval[these,these]<- -(1-prob[these])/(sampsize[these]-1) } diag(rval)<-(1-prob) rval } Dcheck_multi<-function(id,strata,probs){ nstage<-NCOL(id) rval<-matrix(0,NROW(id),NROW(id)) for(stage in 1:nstage){ uid<-!duplicated(id[,stage]) idx<-match(id[,stage],id[uid,stage]) this_stage<-Dcheck_strat(strata[uid,stage],probs[uid,stage])[idx,idx] rval<- twophaseDcheck(rval, this_stage) } rval } ## subsetting now happens in Dcheck_multi_subset ## (no: need to know strata before subsetting to get sampsize. Dcheck_subset<-function(strata, prob,sampsize, withreplacement){ if (is.character(strata)) strata<-as.factor(strata) strata<-as.numeric(strata) ## for ave() N<-length(strata) n<-NROW(strata) rval<-matrix(0, n,n) #sampsize<-ave(strata,strata,FUN=length) strats<-unique(strata) if (!withreplacement){ for(strat in strats){ these <- strata == strat ithese<-which(these) rval[these,these]<- -(1-prob[ithese])/(sampsize[ithese]-1) } } diag(rval)<-(1-prob) rval } oldDcheck_subset<-function(strata, subset, prob, withreplacement){ if (is.character(strata)) strata<-as.factor(strata) strata<-as.numeric(strata) ## for ave() N<-length(strata) n<-sum(subset) rval<-matrix(0, n,n) sampsize<-ave(strata,strata,FUN=length) strats<-unique(strata) if (!withreplacement){ for(strat in strats){ these <- strata == strat ithese<-which(these) rval[these[subset],these[subset]]<- -(1-prob[ithese[subset]])/(sampsize[ithese[subset]]-1) } } diag(rval)<-(1-prob[subset]) rval } oldDcheck_multi_subset<-function(id,strata,subset,probs,withreplacement){ nstage<-NCOL(id) n<-sum(subset) rval<-matrix(0,n,n) if (all(probs==1) && withreplacement) return(as(diag(n),"sparseMatrix")) for(stage in 1:nstage){ uid<-!duplicated(id[,stage]) insubset<-rowsum(as.integer(subset),id[,stage],reorder=FALSE)>0 idx<-match(id[subset,stage],id[subset,stage][uid]) this_stage<-Dcheck_subset(strata[uid,stage],insubset,probs[uid,stage],withreplacement)[idx,idx] rval<- twophaseDcheck(rval, this_stage) } rval } Dcheck_multi_subset<-function(id,strata,subset,probs,withreplacement){ nstage<-NCOL(id) n<-sum(subset) rval<-matrix(0,n,n) if (all(probs==1) && withreplacement) return(as(diag(n),"sparseMatrix")) sampsize<-NULL for(stage in 1:nstage){ uid<-rep(FALSE,NROW(id)) uid[subset]<-!duplicated(id[subset,stage]) insubset<-rowsum(as.integer(subset),id[,stage],reorder=FALSE)>0 idx<-match(id[subset,stage],id[subset,stage][uid[subset]]) sampsize<-ave(as.numeric(id[,stage]),strata[,stage],FUN=function(i) length(unique(i))) this_stage<-Dcheck_subset(strata[uid,stage],probs[uid,stage],sampsize, withreplacement)[idx,idx] rval<- twophaseDcheck(rval, this_stage) } rval } twophaseDcheck<-function(Dcheck1,Dcheck2){ as(-Dcheck1*Dcheck2+Dcheck1+Dcheck2,"sparseMatrix") } make_covmat<-function(design1,design2,subset){ withreplacement<-is.null(design1$fpc$popsize) phase1<-Dcheck_multi_subset(design1$cluster, design1$strata, subset, design1$allprob, withreplacement) phase2<-Dcheck_multi(design2$cluster, design2$strata, design2$allprob) dcheck<-twophaseDcheck(phase1,phase2) list(phase1=phase1,phase2=phase2,full=dcheck) } ## ## Based on twophase(), so it computes some stuff that is no longer necessary. ## Will be pruned in the future. ## twophase2<-function(id,strata=NULL, probs=NULL, fpc=NULL, subset, data){ data<-detibble(data) d1<-svydesign(ids=id[[1]],strata=strata[[1]],weights=NULL, probs=probs[[1]],fpc=fpc[[1]],data=data) if(inherits(subset,"formula")) subset<-eval.parent(model.frame(subset,data=data,na.action=na.pass))[[1]] if(!is.logical(subset) && sort(unique(subset))==c(0,1)) subset<-as.logical(subset) if (any(is.na(subset))) stop("missing values in 'subset'") d1s<-svydesign(ids=id[[1]],strata=strata[[1]],weights=NULL, probs=probs[[1]],fpc=fpc[[1]],data=data[subset,]) d1s$prob<-d1$prob[subset] d1s$allprob<-d1$allprob[subset,,drop=FALSE] ## work out phase-two fpc if (is.null(fpc[[2]])){ complete.vars<-names(data)[apply(data, 2, function(v) all(!is.na(v)))] if (all(c(all.vars(id[[2]]), all.vars(strata[[2]])) %in% complete.vars)){ dfpc<-svydesign(ids=id[[2]], strata=strata[[2]], data=data, probs=NULL) popsize<-mapply(function(s,i) ave(!duplicated(i),s,FUN=sum), dfpc$strata, dfpc$cluster) rm(dfpc) } else { warning("Second-stage fpc not specified and not computable") popsize<-NULL } } else popsize<-NULL d2<-svydesign(ids=id[[2]], strata=strata[[2]], probs=probs[[2]], weights=NULL, fpc=fpc[[2]], data=data[subset,]) ## ugly hack to get nicer labels if(!is.null(fpc[[2]])){ d2call<-bquote(svydesign(ids=.(id[[2]]),strata=.(strata[[2]]), probs=.(probs[[2]]), fpc=.(fpc[[2]]))) } else{ d2call<-bquote(svydesign(ids=.(id[[2]]),strata=.(strata[[2]]), probs=.(probs[[2]]), fpc=`*phase1*`)) } for(i in names(d2call)[-1]) d2call[[i]]<-d2call[[i]] d2$call<-d2call d1call<-bquote(svydesign(ids=.(id[[1]]), strata=.(strata[[1]]), probs=.(probs[[1]]), fpc=.(fpc[[1]]))) for(i in names(d1call)[-1]) d1call[[i]]<-d1call[[i]] d1$call<-d1call ## Add phase 2 fpc and probs if they were computed rather than specified. if (!is.null(popsize)) d2$fpc<-as.fpc(popsize[subset,,drop=FALSE],d2$strata,d2$cluster) if(is.null(probs[[2]]) && !is.null(d2$fpc$popsize)){ d2$allprob<-1/weights(d2$fpc,final=FALSE) d2$prob<-apply(as.data.frame(d2$allprob),1,prod) } d2$variables<-NULL deltacheck<-make_covmat(d1,d2, subset) rval<-list(phase1=list(full=d1,sample=d1s), phase2=d2, subset=subset, dcheck=deltacheck) rval$prob<-rval$phase1$sample$prob ## Are phase 2 PSUs the same as Phase 1 USUs, or smaller? rval$samescale<- !any(duplicated(d1s$cluster[,NCOL(d1s$cluster)][!duplicated(d2$cluster[,1])])) ## For each phase 1 sampling unit, need probability of being represented ## at phase 2. nunique<-function(x) sum(!duplicated(x)) m<-NCOL(rval$phase1$sample$cluster) if(d2$has.strata){ if (inherits(strata[[2]],"formula")) sa<-eval(attr(terms(strata[[2]]),"variables")[[2]],d1$variables) else sa<-d1$strata[,1] cm<-rval$phase1$full$cluster[,m] if (nunique(sa)!=nunique(sa[subset])) stop("Some phase-2 strata have zero sampling fraction") rval$usu<-ave(as.numeric(cm[subset]),sa[subset],FUN=nunique)/ave(as.numeric(cm),sa,FUN=nunique)[subset] } else { rval$usu<-drop(with(rval$phase1$sample,ave(as.numeric(cluster[,m]), strata[,m], FUN=nunique))/rval$phase1$full$fpc$sampsize[rval$subset]) } if (length(rval$phase1$sample$prob)==length(d2$prob)) rval$prob<-rval$phase1$sample$prob*d2$prob else{ rval$prob<-rep(Inf,length(rval$phase1$sample$prob)) rval$prob[subset]<-rval$prob[subset]*d2$prob } rval$call<-sys.call() class(rval) <- c("twophase2","survey.design") rval } print.twophase2<-function(x,...){ cat("Two-phase sparse-matrix design:\n ") print(x$call) cat("Phase 1:\n") print(x$phase1$full) cat("Phase 2:\n") print(x$phase2) invisible(x) } summary.twophase2<-function(object,...){ class(object)<-"summary.twophase2" object } print.summary.twophase2<-function(x,...,varnames=TRUE){ cat("Two-phase sparse-matrix design:\n ") print(x$call) cat("Phase 1:\n") print(x$phase1$full,design.summaries=TRUE,varnames=FALSE) cat("Phase 2:\n") print(x$phase2,design.summaries=TRUE, varnames=FALSE) if (varnames){ cat("Data variables:\n") print(names(x$phase1$full$variables)) } invisible(x) } twophase2var<-function(x,design){ ## calibration is allowed at phase one or phase two, ## but not for clusters within a phase postStrata2<-design$phase2$postStrata postStrata1<-design$phase1$full$postStrata if (is.null(postStrata1) && is.null(postStrata2)){ rval<-htvar.matrix(x,design$dcheck$full) ph2<-htvar.matrix(x,design$dcheck$phase2) attr(rval,"phases")<-list(phase1=rval-ph2,phase2=ph2) return(rval) } if (!is.null(postStrata1)){ ##phase 1 calibration ## x is size of phase-2 sample,need to expand to allow calibration. y<-matrix(0,ncol=ncol(x),nrow=length(design$subset)) y[design$subset,]<-x for (psvar in postStrata1){ if (inherits(psvar, "greg_calibration")) { if (psvar$stage==0){ ## G-calibration at population level y<-qr.resid(psvar$qr,y/psvar$w)*psvar$w } else { ## G-calibration within clusters stop("calibration within clusters not allowed for two-phase designs") } } else { ## ordinary post-stratification psw<-attr(psvar, "weights") postStrata<-as.factor(psvar) psmeans<-rowsum(y/psw,psvar,reorder=TRUE)/as.vector(table(factor(psvar))) y<- y-psmeans[match(psvar,sort(unique(psvar))),]*psw x1<-y[design$subset,,drop=FALSE] } } } else x1<-x phase1var<-htvar.matrix(x1,design$dcheck$full)-htvar.matrix(x1,design$dcheck$phase2) if (!is.null(postStrata2)){ ##phase 2 calibration for (psvar in postStrata2){ if (inherits(psvar, "greg_calibration")) { if (psvar$stage==0){ ## G-calibration at population level x2<-qr.resid(psvar$qr,x/psvar$w)*psvar$w } else { ## G-calibration within clusters stop("calibration within clusters not allowed for two-phase designs") } } else { ## ordinary post-stratification psw<-attr(psvar, "weights") postStrata<-as.factor(psvar) psmeans<-rowsum(x/psw,psvar,reorder=TRUE)/as.vector(table(factor(psvar))) x2<- x-psmeans[match(psvar,sort(unique(psvar))),]*psw } } } else x2<-x phase2var<-htvar.matrix(x2,design$dcheck$phase2) rval<-phase1var+phase2var attr(rval,"phases")<-list(phase1=phase1var,phase2=phase2var) rval } svytotal.twophase2<-function(x,design, na.rm=FALSE, deff=FALSE,...){ if (inherits(x,"formula")){ ## do the right thing with factors mf<-model.frame(x,design$phase1$sample$variables, na.action=na.pass) xx<-lapply(attr(terms(x),"variables")[-1], function(tt) model.matrix(eval(bquote(~0+.(tt))),mf)) cols<-sapply(xx,NCOL) x<-matrix(nrow=NROW(xx[[1]]),ncol=sum(cols)) scols<-c(0,cumsum(cols)) for(i in 1:length(xx)){ x[,scols[i]+1:cols[i]]<-xx[[i]] } colnames(x)<-do.call("c",lapply(xx,colnames)) } else { if(typeof(x) %in% c("expression","symbol")) x<-eval(x, design$variables) else { if(is.data.frame(x) && any(sapply(x,is.factor))){ xx<-lapply(x, function(xi) {if (is.factor(xi)) 0+(outer(xi,levels(xi),"==")) else xi}) cols<-sapply(xx,NCOL) scols<-c(0,cumsum(cols)) cn<-character(sum(cols)) for(i in 1:length(xx)) cn[scols[i]+1:cols[i]]<-paste(names(x)[i],levels(x[[i]]),sep="") x<-matrix(nrow=NROW(xx[[1]]),ncol=sum(cols)) for(i in 1:length(xx)){ x[,scols[i]+1:cols[i]]<-xx[[i]] } colnames(x)<-cn } } } x<-as.matrix(x) if (na.rm){ nas<-rowSums(is.na(x)) design<-design[nas==0,] if(length(nas)>length(design$prob)) x<-x[nas==0,,drop=FALSE] else x[nas>0,]<-0 } N<-sum(1/design$prob) total <- colSums(x/as.vector(design$prob),na.rm=na.rm) class(total)<-"svystat" attr(total, "var")<-v<-twophase2var(x/design$prob,design) attr(total,"statistic")<-"total" if (is.character(deff) || deff){ nobs<-NROW(design$cluster) if (deff=="replace") vsrs<-svyvar(x,design,na.rm=na.rm)*sum(weights(design))^2*(N-nobs)/N else vsrs<-svyvar(x,design,na.rm=na.rm)*sum(weights(design))^2 attr(total, "deff")<-v/vsrs } return(total) } svymean.twophase2<-function(x,design, na.rm=FALSE,deff=FALSE,...){ if (inherits(x,"formula")){ ## do the right thing with factors mf<-model.frame(x,design$phase1$sample$variables ,na.action=na.pass) xx<-lapply(attr(terms(x),"variables")[-1], function(tt) model.matrix(eval(bquote(~0+.(tt))),mf)) cols<-sapply(xx,NCOL) x<-matrix(nrow=NROW(xx[[1]]),ncol=sum(cols)) scols<-c(0,cumsum(cols)) for(i in 1:length(xx)){ x[,scols[i]+1:cols[i]]<-xx[[i]] } colnames(x)<-do.call("c",lapply(xx,colnames)) } else { if(typeof(x) %in% c("expression","symbol")) x<-eval(x, design$variables) else { if(is.data.frame(x) && any(sapply(x,is.factor))){ xx<-lapply(x, function(xi) {if (is.factor(xi)) 0+(outer(xi,levels(xi),"==")) else xi}) cols<-sapply(xx,NCOL) scols<-c(0,cumsum(cols)) cn<-character(sum(cols)) for(i in 1:length(xx)) cn[scols[i]+1:cols[i]]<-paste(names(x)[i],levels(x[[i]]),sep="") x<-matrix(nrow=NROW(xx[[1]]),ncol=sum(cols)) for(i in 1:length(xx)){ x[,scols[i]+1:cols[i]]<-xx[[i]] } colnames(x)<-cn } } } x<-as.matrix(x) if (na.rm){ nas<-rowSums(is.na(x)) if (any(nas>0)) design<-design[nas==0,] x[nas>0,]<-0 } pweights<-1/design$prob psum<-sum(pweights) average<-colSums(x*pweights/psum) x<-sweep(x,2,average) v<-twophase2var(x*pweights/psum,design) attr(average,"var")<-v attr(average,"statistic")<-"mean" class(average)<-"svystat" if (is.character(deff) || deff){ nobs<-nrow(design) if(deff=="replace"){ vsrs<-svyvar(x,design,na.rm=na.rm)/(nobs) } else { if(psum1) stop("number of plausible values must be the same for all variables") nreps<-nreps[1] results<-vector("list",nreps) if(rewrite){ sublist<-vector("list",nvars) names(sublist)<-PVnames for(i in 1:nreps){ for(j in 1:nvars) sublist[[j]]<-as.name(names(PVframes[[j]])[i]) if (is.function(action)){ actioni<-action body(actioni) <- eval(bquote(substitute(.(body(actioni)), sublist))) results[[i]]<- action(data) } else { actioni <- eval(bquote(substitute(.(action), sublist))) results[[i]] <- eval(actioni) } } } else { .DESIGN<-data for(i in 1:nreps){ dfi<-lapply(PVframes, function(d) d[[i]]) names(dfi)<-PVnames .DESIGN$variables<-cbind(df, as.data.frame(dfi)) if (is.function(action)) results[[i]] <- action(.DESIGN) else results[[i]] <- eval(action) } } attr(results,"call")<-sys.call() results } survey/R/svykappa.R0000644000176200001440000000265513676517357014025 0ustar liggesusers svykappa<-function(formula, design,...) UseMethod("svykappa",design) svykappa.default<-function(formula, design,...) { if (ncol(attr(terms(formula), "factors")) != 2) stop("kappa is only computed for two variables") rows <- formula[[2]][[2]] cols <- formula[[2]][[3]] df <- model.frame(design) nrow <- length(unique(df[[as.character(rows)]])) ncol <- length(unique(df[[as.character(cols)]])) rnames<-paste(".",letters,"_",sep="") cnames<-paste(".",LETTERS,"_",sep="") if (nrow != ncol) stop("number of categories is different") probs <- eval(bquote(svymean(~.(rows) + .(cols) + interaction(.(rows), .(cols)), design, ...))) nms <- c(rnames[1:nrow], cnames[1:ncol], outer(1:nrow, 1:ncol, function(i, j) paste(rnames[i], cnames[j], sep = "."))) names(probs) <- nms v <- vcov(probs) dimnames(v) <- list(nms, nms) attr(probs, "var") <- v obs <- parse(text = paste(nms[nrow + ncol + 1+ (0:(nrow-1))*(ncol+1)], collapse = "+"))[[1]] expect <- parse(text = paste(nms[1:nrow], nms[nrow + 1:ncol], sep = "*", collapse = "+"))[[1]] svycontrast(probs, list(kappa = bquote((.(obs) - .(expect))/(1 - .(expect))))) } "names<-.svrepstat"<-function(x, value){ if (is.list(x) && !is.null(x$replicates)){ names(x[[1]])<-value colnames(x$replicates)<-value x } else NextMethod() } survey/R/paley.R0000644000176200001440000001307511457435612013263 0ustar liggesusers## Paley construction of Hadamard matrices ## Only implemented for GF(p), because it's ## not entirely straightforward to find ## representations of GF(p^m) paley<-function(n, nmax=2*n, prime=NULL, check=!is.null(prime)){ if(!is.null(prime) && missing(n)) n<-prime ## these are primes with p+1 a multiple of 4 small.primes<-c(3, 7, 11, 19, 23, 31, 43, 47, 59, 67, 71, 79, 83, 103, 107, 127, 131, 139, 151, 163, 167, 179, 191, 199, 211, 223, 227, 239, 251, 263, 271, 283, 307, 311, 331, 347, 359, 367, 379, 383, 419, 431, 439, 443, 463, 467, 479, 487, 491, 499, 503, 523, 547, 563, 571, 587, 599, 607, 619, 631, 643, 647, 659, 683, 691, 719, 727, 739, 743, 751, 787, 811, 823, 827, 839, 859, 863, 883, 887, 907, 911, 919, 947, 967, 971, 983, 991, 1019, 1031, 1039, 1051, 1063, 1087, 1091, 1103, 1123, 1151, 1163, 1171, 1187, 1223, 1231, 1259, 1279, 1283, 1291, 1303, 1307, 1319, 1327, 1367, 1399, 1423, 1427, 1439, 1447, 1451, 1459, 1471, 1483, 1487, 1499, 1511, 1523, 1531, 1543, 1559, 1567, 1571, 1579, 1583, 1607, 1619, 1627, 1663, 1667, 1699, 1723, 1747, 1759, 1783, 1787, 1811, 1823, 1831, 1847, 1867, 1871, 1879, 1907, 1931, 1951, 1979, 1987, 1999, 2003, 2011, 2027, 2039, 2063, 2083, 2087, 2099, 2111, 2131, 2143, 2179, 2203, 2207, 2239, 2243, 2251, 2267, 2287, 2311, 2339, 2347, 2351, 2371, 2383, 2399, 2411, 2423, 2447, 2459, 2467, 2503, 2531, 2539, 2543, 2551, 2579, 2591, 2647, 2659, 2663, 2671, 2683, 2687, 2699, 2707, 2711, 2719, 2731, 2767, 2791, 2803, 2819, 2843, 2851, 2879, 2887, 2903, 2927, 2939, 2963, 2971, 2999, 3011, 3019, 3023, 3067, 3079, 3083, 3119, 3163, 3167, 3187, 3191, 3203, 3251, 3259, 3271, 3299, 3307, 3319, 3323, 3331, 3343, 3347, 3359, 3371, 3391, 3407, 3463, 3467, 3491, 3499, 3511, 3527, 3539, 3547, 3559, 3571, 3583, 3607, 3623, 3631, 3643, 3659, 3671, 3691, 3719, 3727, 3739, 3767, 3779, 3803, 3823, 3847, 3851, 3863, 3907, 3911, 3919, 3923, 3931, 3943, 3947, 3967, 4003, 4007, 4019, 4027, 4051, 4079, 4091, 4099, 4111, 4127, 4139, 4159, 4211, 4219, 4231, 4243, 4259, 4271, 4283, 4327, 4339, 4363, 4391, 4423, 4447, 4451, 4463, 4483, 4507, 4519, 4523, 4547, 4567, 4583, 4591, 4603, 4639, 4643, 4651, 4663, 4679, 4691, 4703, 4723, 4751, 4759, 4783, 4787, 4799, 4831, 4871, 4903, 4919, 4931, 4943, 4951, 4967, 4987, 4999, 5003, 5011, 5023, 5039, 5051, 5059, 5087, 5099, 5107, 5119, 5147, 5167, 5171, 5179, 5227, 5231, 5279, 5303, 5323, 5347, 5351, 5387, 5399, 5407, 5419, 5431, 5443, 5471, 5479, 5483, 5503, 5507, 5519, 5527, 5531, 5563, 5591, 5623, 5639, 5647, 5651, 5659, 5683, 5711, 5743, 5779, 5783, 5791, 5807, 5827, 5839, 5843, 5851, 5867, 5879, 5903, 5923, 5927, 5939, 5987, 6007, 6011, 6043, 6047, 6067, 6079, 6091, 6131, 6143, 6151, 6163, 6199, 6203, 6211, 6247, 6263, 6271, 6287, 6299, 6311, 6323, 6343, 6359, 6367, 6379, 6427, 6451, 6491, 6547, 6551, 6563, 6571, 6599, 6607, 6619, 6659, 6679, 6691, 6703, 6719, 6763, 6779, 6791, 6803, 6823, 6827, 6863, 6871, 6883, 6899, 6907, 6911, 6947, 6959, 6967, 6971, 6983, 6991, 7019, 7027, 7039, 7043, 7079, 7103, 7127, 7151, 7159, 7187, 7207, 7211, 7219, 7243, 7247, 7283, 7307, 7331, 7351, 7411, 7451, 7459, 7487, 7499, 7507, 7523, 7547, 7559, 7583, 7591, 7603, 7607, 7639, 7643, 7687, 7691, 7699, 7703, 7723, 7727, 7759, 7823, 7867, 7879, 7883, 7907, 7919) if (is.null(prime)){ nceil<-nn <- n + 4 - (n %% 4) if ( (n %% 4) +4 == (n %% 8)) { while (!(nn %% 8)){ nn <- nn /2} if ((nn-1) %in% small.primes){ m<-paley(prime=nn-1,check=check) while(nnmax(small.primes)) return(NULL) p<-min(small.primes[small.primes>=n]) if ((p+1 > nceil+4) && (nceil+4 < nmax)) return(paley(nceil+3)) if (p>nmax) return(NULL) } else{ p<-prime if ((p+1) %% 4 !=0) { warning("'prime'+1 is not divisible by 4") return(NULL) } if (p0]<-1 rval<-cbind(1,rbind(1,m)) if(check) { if(!is.hadamard(rval)) warning("matrix is not Hadamard: is 'prime' really prime?") } rval } is.hadamard<-function(H, style=c("0/1","+-"), full.orthogonal.balance=TRUE){ if (is.matrix(H) && is.numeric(H) && (ncol(H)==nrow(H))){ H<-switch(match.arg(style), "0/1"= 2*H-1, "+-"=H) isTRUE(all.equal(crossprod(H), diag(ncol(H))*ncol(H))) && all.equal(max(abs(H)),1) && (!full.orthogonal.balance || sum(H[-1,])==0) } else FALSE } survey/R/svypredmeans.R0000644000176200001440000000207213737715525014673 0ustar liggesusers svypredmeans<-function(adjustmodel, groupfactor, predictat=NULL){ design<-eval(bquote(update(adjustmodel$survey.design, .groupfactor=.(groupfactor[[2]])))) if(is.null(predictat)){ groups<-unique(model.frame(design)$.groupfactor) groups<-groups[!is.na(groups)] } else { groups <- predictat } model<-update(adjustmodel, .~.+.groupfactor,design=design) w<-weights(design,"sampling") fits<-matrix(nrow=NROW(design),ncol=length(groups)) dg_deta<-matrix(nrow=length(coef(model)),ncol=length(groups)) for(i in 1:length(groups)){ mf<-model.frame(design) mf$.groupfactor<-groups[i] mu<-predict(model,newdata=mf,type="response",se.fit=FALSE) eta<-predict(model,newdata=mf,type="link",se.fit=FALSE) fits[,i]<-coef(mu) mm<-model.matrix(terms(model),mf) dg_deta[,i]<-t(colSums(w*model$family$mu.eta(eta)*mm))/sum(w) } colnames(fits)<-as.character(groups) cond<-svymean(fits,design) addvar<-t(dg_deta)%*%vcov(model)%*%dg_deta vv<-addvar+attr(cond,"var") attr(vv,"parts")<-list(addvar,attr(cond,"var")) attr(cond,"var")<-vv cond } survey/R/svysmooth.R0000644000176200001440000000744413363712117014223 0ustar liggesuserssvysmooth<-function(formula,design,...) UseMethod("svysmooth", design) svysmooth.default<-function(formula, design,method=c("locpoly","quantreg"),bandwidth=NULL,quantile,df=4,...){ switch(match.arg(method), locpoly=svylocpoly(formula,design,bandwidth=bandwidth,...), quantreg=svyrqss(formula,design,quantile=quantile,df=df,...) ) } fitted.rq<-function(object,...) object$x%*% object$coefficients/object$weights svyrqss<-function(formula,design,quantile=0.5,df=4,...){ mf<-model.frame(formula, model.frame(design), na.action=na.omit) naa<-attr(mf,"na.action") tt<-attr(terms(formula),"term.labels") df<-rep(df, length=length(tt)) quantile<-rep(quantile, length=length(tt)) if (length(formula)==3){ density<-FALSE } else { density<-TRUE stop("type='quantreg' does not do densities") } w<-weights(design,type="sampling") if (length(naa)) w<-w[-naa] environment(formula)<-environment() ll<-vector("list", length(tt)) for(i in 1:length(tt)){ termi<-as.name(tt[i]) ff<-eval(bquote(update(formula,.~splines::bs(.(termi),df=.(df[i]))))) rqfit<-quantreg::rq(ff, tau=quantile[i],weights=w,data=mf,...) xx<-mf[,i+1] oo<-order(xx) ll[[i]]<-list(x=xx[oo],y=fitted.rq(rqfit)[oo]) } names(ll)<-attr(terms(formula),"term.labels") attr(ll,"call")<-sys.call(-2) attr(ll,"density")<-density if(density) attr(ll,"ylab")<-"Density" else attr(ll,"ylab")<-paste(deparse(formula[[2]]),collapse="") class(ll)<-"svysmooth" ll } svylocpoly<-function(formula, design, ngrid=401, xlim=NULL, ylim=NULL, bandwidth=NULL,...){ mf<-model.frame(formula,model.frame(design)) mm<-model.matrix(terms(formula),mf) if(attr(terms(formula),"intercept")) mm<-mm[,-1,drop=FALSE] naa<-attr(mf,"na.action") if (length(formula)==3){ Y<-model.response(mf) density<-FALSE } else density<-TRUE if (is.null(xlim)){ xlim<-apply(mm,2,range) } if (!is.matrix(xlim)) xlim<-matrix(xlim,nrow=2) if (is.null(bandwidth)){ bandwidth<-numeric(ncol(mm)) for(i in 1:ncol(mm)){ bandwidth[i]<-if(density) KernSmooth::dpik(mm[,i],gridsize=ngrid) else KernSmooth::dpill(mm[,i],Y,gridsize=ngrid) } } else { bandwidth<-rep(bandwidth, length=ncol(mm)) } w<-weights(design,type="sampling") if (length(naa)) w<-w[-naa] ll<-vector("list", ncol(mm)) for(i in 1:NCOL(mm)){ gx<-seq(min(xlim[,i]), max(xlim[,i]), length=ngrid) nx<-rowsum(c(rep(0,ngrid),w), c(1:ngrid, findInterval(mm[,i],gx))) if (density){ ll[[i]]<-KernSmooth::locpoly(rep(1,ngrid),nx*ngrid/(diff(xlim[,i])*sum(w)), binned=TRUE, bandwidth=bandwidth[i], range.x=xlim[,i]) }else{ ny<-rowsum(c(rep(0,ngrid), Y*w), c(1:ngrid, findInterval(mm[,i],gx))) ll[[i]]<-KernSmooth::locpoly(nx, ny, binned=TRUE, bandwidth=bandwidth[i], range.x=xlim[,i]) } names(ll)<-attr(terms(formula),"term.labels") } attr(ll,"call")<-sys.call(-2) attr(ll,"density")<-density if(density) attr(ll,"ylab")<-"Density" else attr(ll,"ylab")<-paste(deparse(formula[[2]]),collapse="") class(ll)<-"svysmooth" ll } print.svysmooth<-function(x,...){ if(attr(x,"density")) cat("Density estimate: :") else cat("Scatterplot smoother :") print(attr(x,"call")) invisible(x) } plot.svysmooth<-function(x, which=NULL,type="l",xlabs=NULL,ylab=NULL,...){ if (is.null(which)) which<-seq(length=length(x)) if (is.character(which)) which<-match(which,names(x)) if(is.null(xlabs)) xlabs<-names(x)[which] if(is.null(ylab)) ylab<-attr(x,"ylab") for(i in seq(length=length(which))) plot(x[[which[i]]], type=type, xlab=xlabs[i], ylab=ylab, ...) invisible(NULL) } lines.svysmooth<-function(x,which=NULL,...){ for(i in names(x)) lines(x[[i]],...) } survey/R/svyhist.R0000644000176200001440000000223313357475060013656 0ustar liggesuserssvyhist<-function(formula, design, breaks = "Sturges", include.lowest = TRUE, right = TRUE, xlab=NULL, main=NULL, probability=TRUE, freq=!probability,...){ if (inherits(design,"DBIsvydesign") || inherits(design,"ODBCsvydesign")){ design$variables<-getvars(formula, design$db$connection, design$db$tablename, updates = design$updates) class(design)<-"survey.design2" } mf<-model.frame(formula,model.frame(design), na.action=na.pass) if (ncol(mf)>1) stop("Only one variable allowed.") variable<-mf[,1] varname<-names(mf) h <- hist(variable, plot=FALSE, breaks=breaks,right=right) props <- coef(svymean(~cut(variable, h$breaks,right=right, include.lowest=include.lowest), design, na.rm=TRUE)) h$density<-props/diff(h$breaks) h$counts <- props*sum(weights(design,"sampling")) if (is.null(xlab)) xlab<-varname if (is.null(main)) main<-paste("Histogram of",varname) plot(h, ..., freq=freq,xlab=xlab,main=main) if (freq){ h$count_scale <- mean(diff(h$breaks))*sum(weights(design, "sampling")) } invisible(h) } survey/R/surveyrep.R0000755000176200001440000017402614251505445014221 0ustar liggesusers hadamard.doubler<-function(H){ rbind(cbind(H,H),cbind(H,1-H)) } hadamard<- function(n){ m<-n-(n %% 4) ## hadamard.list, hadamard.sizes in sysdata.rda precooked<- which(m < hadamard.sizes & m+4 >=hadamard.sizes) if (length(precooked)) return(hadamard.list[[min(precooked)]]) if (all(m4) H<-paley(n,sizes[bestfit]) if (is.null(H)){ ndoubles<-ceiling(log(sizes/hadamard.sizes, 2))[bestfit] H<-hadamard.list[[bestfit]] for(i in seq(length=ndoubles)) H<-hadamard.doubler(H) } H } jk1weights<-function(psu, fpc=NULL, fpctype=c("population","fraction","correction"), compress=TRUE){ fpctype<-match.arg(fpctype) unq<-unique(psu) n<-length(unq) if (is.null(fpc)) fpc<-1 else { fpc<-unique(fpc) if (length(fpc)>1) stop("More than one fpc value given") if (fpc<0) stop("Negative finite population correction") if (fpctype=="population" && fpcnstrat) stop("More distinct fpc values than strata") fpc<-sapply(sunq, function(ss) fpc[match(ss,strata)]) names(fpc)<-as.character(sunq) } else if (length(fpc)==1) { fpc<-rep(fpc,nstrat) names(fpc)<-as.character(sunq) } else if (length(fpc)==nstrat){ nn<-names(fpc) if (is.null(nn)) names(fpc)<-as.character(sunq) if (!all(names(fpc) %in% as.character(sunq))) stop("fpc has names that do not match the stratum identifiers") } if (compress){ repweights<-matrix(1,ncol=length(unq),nrow=length(unq)) } else { repweights<-matrix(1,ncol=length(unq), nrow=length(psu)) } counter<-0 rscales<-numeric(length(unq)) for(ss in as.character(sunq)){ thisfpc<-fpc[match(ss,names(fpc))] theseweights<-jk1weights(psu[strata %in% ss], fpc=thisfpc, fpctype=fpctype,compress=compress) nc<-if (compress) NCOL(theseweights$repweights$weights) else NCOL(theseweights$repweights) if (nc==1 && thisfpc!=0){ ## lonely PSUs if (lonely.psu=="fail") stop("Stratum",ss,"has only one PSU") if (lonely.psu=="remove") next if (lonely.psu=="certainty") next if (lonely.psu=="average") next if (lonely.psu=="adjust"){ nc<-1 if (compress) repweights[, counter+nc]<-ifelse(strata[!duplicated(psu)] %in% ss, 0, nstrat/(nstrat-1)) else repweights[ counter+nc]<-ifelse(strata %in% ss, 0, nstrat/(nstrat-1)) rscales[counter+nc]<-(nstrat-1)/nstrat counter<-counter+nc next } } if (compress) repweights[strata[!duplicated(psu)] %in% ss,counter+seq(length=nc)]<-theseweights$repweights$weights else repweights[strata %in% ss, counter+seq(length=nc)]<-theseweights$repweights rscales[counter+seq(length=nc)]<-theseweights$scale counter<-counter+nc } if (counter==0) stop("All strata were exhaustively sampled: you have the whole population") scale<-1 if (counter2) && large=="fail") stop("Some strata have more than 2 PSUs") unq<-which(!duplicated(psu)) sunq<-strata[unq] psunq<-psu[unq] weights<-matrix(ncol=2,nrow=length(unq)) weightstrata<-numeric(length(unq)) if (length(match)==length(strata)) match<-match[unq] if (is.null(match)) match<-unq ## default is to match by dataset order oo<-order(sunq,match) upto <- 0 if(any(ssize==1)){ smallstrata<-names(ssize)[ssize==1] if(small=="split"){ weights[sunq %in% smallstrata,1]<- 0.5 weights[sunq %in% smallstrata,2]<- 0.5 weightstrata[sunq %in% smallstrata]<-1:length(smallstrata) upto<-length(smallstrata) } else { ##small=="merge" if (length(smallstrata) > 1){ weights[oo,][sunq[oo] %in% smallstrata, 1]<-rep(0:1,length.out=length(smallstrata)) weights[oo,][sunq[oo] %in% smallstrata, 2]<-rep(1:0,length.out=length(smallstrata)) if(length(smallstrata) %% 2==0) weightstrata[oo][sunq[oo] %in% smallstrata]<-rep(1:(length(smallstrata) %/%2), 2) else weightstrata[oo][sunq[oo] %in% smallstrata]<-c(1,rep(1:(length(smallstrata) %/%2), 2)) upto<-length(smallstrata) %/% 2 } else stop("Can't merge with a single small stratum") } } if (any(ssize>2)){ largestrata<-names(ssize)[ssize>2] if (large=="split"){ if (any(ssize[largestrata] %%2 ==1)) stop("Can't split with odd numbers of PSUs in a stratum") ## make substrata of size 2 for(ss in largestrata){ weights[oo,][sunq[oo] %in% ss, 1]<-rep(0:1,length.out=ssize[ss]) weights[oo,][sunq[oo] %in% ss, 2]<-rep(1:0,length.out=ssize[ss]) weightstrata[oo][sunq[oo] %in% ss]<-upto+rep(1:(ssize[ss] %/%2),each=2) upto<-upto+(ssize[ss] %/% 2) } } else { ## make two substrata. halfsize<-ssize[largestrata] %/%2 otherhalfsize<-ssize[largestrata] - halfsize reps<-as.vector(rbind(halfsize,otherhalfsize)) nlarge<-length(halfsize) weights[oo,][sunq[oo] %in% largestrata, 1]<-rep(rep(0:1,nlarge),reps) weights[oo,][sunq[oo] %in% largestrata, 2]<-rep(rep(1:0,nlarge),reps) weightstrata[oo][sunq[oo] %in% largestrata]<-upto+rep(1:length(largestrata),ssize[largestrata]) upto<-upto+length(largestrata) } } if(any(ssize==2)){ goodstrata<-names(ssize)[ssize==2] weights[oo,][sunq[oo] %in% goodstrata, 1]<-rep(0:1,length(goodstrata)) weights[oo,][sunq[oo] %in% goodstrata, 2]<-rep(1:0,length(goodstrata)) weightstrata[oo][sunq[oo] %in% goodstrata]<-upto+rep(1:length(goodstrata),each=2) upto<-upto+length(goodstrata) } if (is.null(hadamard.matrix)){ H<-hadamard(upto) } else { ## the user supplied hadamard.matrix ## Check that it is a binary matrix and satifies the ## Hadamard determinant property if (!is.matrix(hadamard.matrix) || nrow(hadamard.matrix)1 && type!="mrbbootstrap"){ fpc<-fpc[,1] warning("Finite population corrections after first stage have been dropped") } if (getOption("survey.drop.replicates")){ selfrep<-design$fpc$popsize[,1]==design$fpc$sampsize[,1] } } else{ fpc<-design$fpc[,2] names(fpc)<-design$fpc[,1] } } } else { if (type %in% c("Fay","BRR","subbootstrap")) stop(paste("fpc information cannot be used for type=",type)) if (is.null(fpctype)) stop("fpctype must be supplied if fpc is supplied") } if (type=="JK1"){ ##JK1 r<-jk1weights(design$cluster[,1], fpc=fpc,fpctype=fpctype, compress=compress) repweights<-r$repweights scale<-drop(r$scale) if (inherits(repweights,"repweights_compressed")) rscales<-rep(1, NCOL(repweights$weights)) else rscales<-rep(1, NCOL(repweights)) type<-"JK1" pweights<-1/design$prob } else if (type %in% c("BRR","Fay")){ ##BRR if (inherits(design,"survey.design2")) repweights<-brrweights(design$strata[,1], design$cluster[,1],...,fay.rho=fay.rho, compress=compress,only.weights=TRUE) else repweights<-brrweights(design$strata, design$cluster[,1],...,fay.rho=fay.rho, compress=compress,only.weights=TRUE) pweights<-1/design$prob if (length(pweights)==1) pweights<-rep(pweights, NROW(design$variables)) if (fay.rho==0) type<-"BRR" else type<-"Fay" rscales<-rep(1,ncol(repweights)) scale<-1/(ncol(repweights)*(1-fay.rho)^2) } else if (type=="JKn"){ ##JKn if (inherits(design,"survey.design2")) r<-jknweights(design$strata[,1],design$cluster[,1], fpc=fpc, fpctype=fpctype, compress=compress) else r<-jknweights(design$strata,design$cluster[,1], fpc=fpc, fpctype=fpctype, compress=compress) pweights<-1/design$prob repweights<-r$repweights scale<-r$scale rscales<-r$rscales } else if (type=="bootstrap"){ ##bootstrap if (inherits(design,"survey.design2")) r<-bootweights(design$strata[,1],design$cluster[,1], fpc=fpc, fpctype=fpctype, compress=compress,...) else r<-bootweights(design$strata,design$cluster[,1], fpc=fpc, fpctype=fpctype, compress=compress,...) pweights<-1/design$prob repweights<-r$repweights scale<-r$scale rscales<-r$rscales }else if (type=="subbootstrap"){ ##bootstrap if (inherits(design,"survey.design2")) r<-subbootweights(design$strata[,1],design$cluster[,1],compress=compress,...) else r<-subbootweights(design$strata,design$cluster[,1],compress=compress,...) pweights<-1/design$prob repweights<-r$repweights scale<-r$scale rscales<-r$rscales } else if (type=="mrbbootstrap"){ if (inherits(design,"survey.design2")) r<-mrbweights(design$cluster,design$strata,design$fpc,...) else stop("MRB bootstrap not available for obsolete svydesign objects") pweights<-1/design$prob repweights<-r$repweights scale<-r$scale rscales<-r$rscales } else stop("Can't happen") rval<-list(repweights=repweights, pweights=pweights, type=type, rho=fay.rho,scale=scale, rscales=rscales, call=sys.call(), combined.weights=FALSE, selfrep=selfrep,mse=mse) rval$variables <- design$variables class(rval)<-"svyrep.design" rval$degf<-degf(rval) rval } svrepdesign<-function(variables, repweights, weights,data=NULL,...) UseMethod("svrepdesign",data) svrepdesign.default<-function(variables=NULL,repweights=NULL, weights=NULL, data=NULL,type=c("BRR","Fay","JK1", "JKn","bootstrap", "ACS","successive-difference","JK2","other"), combined.weights=TRUE, rho=NULL, bootstrap.average=NULL, scale=NULL,rscales=NULL,fpc=NULL, fpctype=c("fraction","correction"), mse=getOption("survey.replicates.mse"),...) { type<-match.arg(type) if(type=="Fay" && is.null(rho)) stop("With type='Fay' you must supply the correct rho") if (type %in% c("JK1","JKn","ACS","successive-difference","JK2") && !is.null(rho)) warning("rho not relevant to JK1 design: ignored.") if (type %in% c("other") && !is.null(rho)) warning("rho ignored.") if(is.null(variables)) variables<-data if(inherits(variables,"formula")){ mf<-substitute(model.frame(variables, data=data,na.action=na.pass)) variables<-eval.parent(mf) } variables<-detibble(variables) if(inherits(repweights,"formula")){ mf<-substitute(model.frame(repweights, data=data)) repweights<-eval.parent(mf) } if(is.character(repweights)){##regular expression wtcols<-grep(repweights,names(data)) repweights<-data[,wtcols] } if (is.null(repweights)) stop("You must provide replication weights") if (anyNA(repweights)) stop("Missing values not allowed in 'repweights'") repweights<-detibble(repweights) if(inherits(weights,"formula")){ mf<-substitute(model.frame(weights, data=data)) weights<-eval.parent(mf) if (anyNA(weights)) stop("Missing values not allowed in 'weights'") weights<-drop(as.matrix(weights)) } if (is.null(weights)){ warning("No sampling weights provided: equal probability assumed") weights<-rep(1,NROW(repweights)) } repwtmn<-mean(apply(repweights,2,mean)) wtmn<-mean(weights) probably.combined.weights<-(repwtmn>5) & (wtmn/repwtmn<5) probably.not.combined.weights<-(repwtmn<5) & (wtmn/repwtmn>5) if (combined.weights & probably.not.combined.weights) warning(paste("Data do not look like combined weights: mean replication weight is", repwtmn," and mean sampling weight is",wtmn)) if (!combined.weights & probably.combined.weights) warning(paste("Data look like combined weights: mean replication weight is", repwtmn," and mean sampling weight is",wtmn)) if (!is.null(rscales) && !(length(rscales) %in% c(1, ncol(repweights)))){ stop(paste("rscales has length ",length(rscales),", should be ncol(repweights)",sep="")) } if (type %in% c("ACS", "successive-difference")){ if(!is.null(scale) | !is.null(rscales)) warning(paste("with type",type,"scale= and rscales= are not needed and will be ignored")) } if (type == "BRR"){ ## the default, so check it hasn't been accidentally defaulted to if (!is.null(scale)) warning("type='BRR' does not use 'scale=' argument") if (!is.null(rho)) warning("type='BRR' does not use 'rho=' argument, you may want type='Fay'") scale<-1/ncol(repweights) } if (type=="Fay") scale <-1/(ncol(repweights)*(1-rho)^2) if (type=="bootstrap"){ if(is.null(bootstrap.average)) bootstrap.average<-1 if (is.null(scale)) scale<-bootstrap.average/(ncol(repweights)-1) if (is.null(rscales)) rscales<-rep(1,ncol(repweights)) } if (type=="JK1" && is.null(scale)) { if(!combined.weights){ warning("scale (n-1)/n not provided: guessing from weights") scale<-1/max(repweights[,1]) } else { probably.n = ncol(repweights) scale<- (probably.n-1)/probably.n warning("scale (n-1)/n not provided: guessing n=number of replicates") } } if (type =="JKn" && is.null(rscales)) if (!combined.weights) { warning("rscales (n-1)/n not provided:guessing from weights") rscales<-1/apply(repweights,2,max) } else stop("Must provide rscales for combined JKn weights") if (type %in% c("ACS","successive-difference")){ rscales<-rep(1, ncol(repweights)) scale<-4/ncol(repweights) } if (type =="JK2"){ warning(paste("with type",type,"scale= and rscales= are not needed and will be ignored")) rscales<-rep(1, ncol(repweights)) scale<-1 } if (type=="other" && (is.null(rscales) || is.null(scale))){ if (is.null(rscales)) rscales<-rep(1,NCOL(repweights)) if (is.null(scale)) scale<-1 warning("scale or rscales not specified, set to 1") } if (is.null(rscales)) rscales<-rep(1,NCOL(repweights)) if (!is.null(fpc)){ if (missing(fpctype)) stop("Must specify fpctype") fpctype<-match.arg(fpctype) if (type %in% c("BRR","Fay","JK2","ACS","successive-difference")) stop("fpc not available for this type") if (type %in% "bootstrap") stop("Separate fpc not needed for bootstrap") if (length(fpc)!=length(rscales)) stop("fpc is wrong length") if (any(fpc>1) || any(fpc<0)) stop("Illegal fpc value") fpc<-switch(fpctype,correction=fpc,fraction=1-fpc) rscales<-rscales*fpc } if (is.null(scale)) scale<-1 rval<-list(type=type, scale=scale, rscales=rscales, rho=rho,call=sys.call(), combined.weights=combined.weights) rval$variables<-variables rval$pweights<-weights if (!inherits(repweights,"repweights")) class(rval)<-"repweights" rval$repweights<-repweights class(rval)<-"svyrep.design" rval$degf<-degf(rval) rval$mse<-mse rval } print.svyrep.design<-function(x,...){ cat("Call: ") print(x$call) if (x$type=="Fay") cat("Fay's variance method (rho=",x$rho,") ") if (x$type=="BRR") cat("Balanced Repeated Replicates ") if (x$type=="JK1") cat("Unstratified cluster jacknife (JK1) ") if (x$type=="JKn") cat("Stratified cluster jackknife (JKn) ") if (x$type=="bootstrap") cat("Survey bootstrap ") if (x$type=="mrbbootstrap") cat("Multistage rescaled bootstrap ") if (x$type=="subbootstrap") cat("(n-1) bootstrap ") nweights<-ncol(x$repweights) cat("with", nweights,"replicates") if (!is.null(x$mse) && x$mse) cat(" and MSE variances") cat(".\n") invisible(x) } summary.svyrep.design<-function(object,...){ class(object)<-c("summary.svyrep.design", class(object)) object } print.summary.svyrep.design<-function(x,...){ class(x)<-class(x)[-1] print(x) cat("Variables: \n") print(colnames(x)) } image.svyrep.design<-function(x, ..., col=grey(seq(.5,1,length=30)), type.=c("rep","total")){ type<-match.arg(type.) m<-as.matrix(x$repweights) if (type=="total"){ m<-m*x$pweights } image(1:NCOL(m), 1:NROW(m), t(m), col=col, xlab="Replicate", ylab="Observation",...) invisible(NULL) } "[.svyrep.design"<-function(x, i, j, drop=FALSE){ if (!missing(i)){ pwt<-x$pweights if (is.data.frame(pwt)) pwt<-pwt[[1]] x$pweights<-pwt[i] x$repweights<-x$repweights[i,,drop=FALSE] if(!is.null(x$selfrep)) x$selfrep<-x$selfrep[i] if (!missing(j)) x$variables<-x$variables[i,j, drop=FALSE] else x$variables<-x$variables[i,,drop=FALSE] x$degf<-NULL x$degf<-degf(x) } else { x$variables<-x$variables[,j,drop=FALSE] } x } subset.svyrep.design<-function(x,subset,...){ e <- substitute(subset) r <- eval(e, x$variables, parent.frame()) r <- r & !is.na(r) x<-x[r,] x$call<-sys.call(-1) x } update.svyrep.design<-function(object,...){ dots<-substitute(list(...))[-1] newnames<-names(dots) for(j in seq(along=dots)){ object$variables[,newnames[j]]<-eval(dots[[j]],object$variables, parent.frame()) } object$call<-sys.call(-1) object } weights.svyrep.design<-function(object,type=c("replication","sampling","analysis"),...){ type<-match.arg(type) switch(type, replication= as.matrix(object$repweights), sampling=object$pweights, analysis=if(object$combined.weights) as.matrix(object$repweights) else as.matrix(object$repweights)*object$pweights) } weights.survey.design<-function(object,...){ return(1/object$prob) } svrVar<-function(thetas, scale, rscales,na.action=getOption("na.action"),mse=getOption("survey.replicates.mse"),coef){ thetas<-get(na.action)(thetas) naa<-attr(thetas,"na.action") if (!is.null(naa)){ rscales<-rscales[-naa] if (length(rscales)) warning(length(naa), " replicates gave NA results and were discarded.") else stop("All replicates contained NAs") } if (is.null(mse)) mse<-FALSE if (length(dim(thetas))==2){ if (mse) { meantheta<-coef } else { meantheta<-colMeans(thetas[rscales>0,,drop=FALSE]) } v<-crossprod( sweep(thetas,2, meantheta,"-")*sqrt(rscales))*scale } else { if (mse){ meantheta<-coef } else { meantheta<-mean(thetas[rscales>0]) } v<- sum( (thetas-meantheta)^2*rscales)*scale } attr(v,"na.replicates")<-naa attr(v,"means")<-meantheta return(v) } svyvar.svyrep.design<-svrepvar<-function(x, design, na.rm=FALSE, rho=NULL, return.replicates=FALSE,...,estimate.only=FALSE){ if (!exists(".Generic",inherits=FALSE)) .Deprecated("svyvar") if (inherits(x,"formula")) x<-model.frame(x,design$variables,na.action=na.pass) else if(typeof(x) %in% c("expression","symbol")) x<-eval(x, design$variables) wts<-design$repweights scale<-design$scale rscales<-design$rscales if (!is.null(rho)) .NotYetUsed("rho") x<-as.matrix(x) if (na.rm){ nas<-rowSums(is.na(x)) if(any(nas>0)){ design<-design[nas==0,] x<-x[nas==0,,drop=FALSE] wts<-wts[nas==0,,drop=FALSE] } } if (design$combined.weights) pw<-1 else pw<-design$pweights n<-NROW(x) p<-NCOL(x) v<-function(w){ xbar<-colSums(as.vector(w)*pw*x)/sum(as.vector(w)*pw) xdev<-sweep(x,2,xbar,"-") x1<-matrix(rep(xdev,p),ncol=p*p) x2<-xdev[,rep(1:p,each=p),drop=FALSE] (n/(n-1))*colSums(x1*x2*as.vector(w)*pw)/sum(as.vector(w)*pw) } if (design$combined.weights) rval<-v(design$pweights) else rval<-v(rep(1,length(design$pweights))) rval<-matrix(rval, ncol=p) dimnames(rval)<-list(colnames(x),colnames(x)) if (estimate.only) return(rval) repvars<-apply(wts,2, v) repvars<-drop(t(repvars)) attr(rval,"var")<-svrVar(repvars, scale, rscales,mse=design$mse, coef=rval) attr(rval, "statistic")<-"variance" if (return.replicates){ attr(repvars,"scale")<-design$scale attr(repvars,"rscales")<-design$rscales attr(repvars,"mse")<-design$mse rval<-list(variance=rval, replicates=repvars) } class(rval)<-c("svrepvar","svrepstat") rval } print.svrepvar<-function (x, covariance=FALSE, ...) { if (is.list(x)) x<-x[[1]] vv <- as.matrix(attr(x, "var")) if (covariance){ nms<-outer(rownames(x),colnames(x),paste,sep=":") m<-cbind(as.vector(x), sqrt(diag(vv))) rownames(m)<-nms } else{ ii <- which(diag(sqrt(length(x)))>0) m <- cbind(x[ii], sqrt(diag(vv))[ii]) if(length(ii)==1) rownames(m)<-rownames(x) } colnames(m) <- c(attr(x, "statistic"), "SE") printCoefmat(m) } as.matrix.svrepvar<-function(x,...) if (is.list(x)) unclass(x[[1]]) else unclass(x) svymean.svyrep.design<-svrepmean<-function(x,design, na.rm=FALSE, rho=NULL, return.replicates=FALSE,deff=FALSE,...) { if (!exists(".Generic",inherits=FALSE)) .Deprecated("svymean") if (!inherits(design,"svyrep.design")) stop("design is not a replicate survey design") if (inherits(x,"formula")){ ## do the right thing with factors mf<-model.frame(x,design$variables,na.action=na.pass) xx<-lapply(attr(terms(x),"variables")[-1], function(tt) model.matrix(eval(bquote(~0+.(tt))),mf)) cols<-sapply(xx,NCOL) x<-matrix(nrow=NROW(xx[[1]]),ncol=sum(cols)) scols<-c(0,cumsum(cols)) for(i in 1:length(xx)){ x[,scols[i]+1:cols[i]]<-xx[[i]] } colnames(x)<-do.call("c",lapply(xx,colnames)) } else { if(typeof(x) %in% c("expression","symbol")) x<-eval(x, design$variables) else { if(is.data.frame(x) && any(sapply(x,is.factor))){ xx<-lapply(x, function(xi) {if (is.factor(xi)) 0+(outer(xi,levels(xi),"==")) else xi}) cols<-sapply(xx,NCOL) scols<-c(0,cumsum(cols)) cn<-character(sum(cols)) for(i in 1:length(xx)) cn[scols[i]+1:cols[i]]<-paste(names(x)[i],levels(x[[i]]),sep="") x<-matrix(nrow=NROW(xx[[1]]),ncol=sum(cols)) for(i in 1:length(xx)){ x[,scols[i]+1:cols[i]]<-xx[[i]] } colnames(x)<-cn } } } x<-as.matrix(x) if (na.rm){ nas<-rowSums(is.na(x)) design<-design[nas==0,] x<-x[nas==0,,drop=FALSE] } wts<-design$repweights scale<-design$scale rscales<-design$rscales if (!is.null(rho)) .NotYetUsed("rho") if (!design$combined.weights) pw<-design$pweights else pw<-1 rval<-colSums(design$pweights*x)/sum(design$pweights) if (getOption("survey.drop.replicates") && !is.null(design$selfrep) && all(design$selfrep)){ v<-matrix(0,length(rval),length(rval)) repmeans<-NULL } else { if (inherits(wts, "repweights_compressed")){ repmeans<-matrix(ncol=NCOL(x), nrow=ncol(wts$weights)) for(i in 1:ncol(wts$weights)){ wi<-wts$weights[wts$index,i] repmeans[i,]<-t(colSums(wi*x*pw)/sum(pw*wi)) } } else { repmeans<-matrix(ncol=NCOL(x), nrow=ncol(wts)) for(i in 1:ncol(wts)){ repmeans[i,]<-t(colSums(wts[,i]*x*pw)/sum(pw*wts[,i])) } } repmeans<-drop(repmeans) v <- svrVar(repmeans, scale, rscales,mse=design$mse, coef=rval) } attr(rval,"var") <-v attr(rval, "statistic")<-"mean" if (return.replicates){ attr(repmeans,"scale")<-design$scale attr(repmeans,"rscales")<-design$rscales attr(repmeans,"mse")<-design$mse rval<-list(mean=rval, replicates=repmeans) } if (is.character(deff) || deff){ nobs<-length(design$pweights) npop<-sum(design$pweights) vsrs<-unclass(svyvar(x,design,na.rm=na.rm, return.replicates=FALSE,estimate.only=TRUE))/length(design$pweights) if (deff!="replace") vsrs<-vsrs*(npop-nobs)/npop attr(rval,"deff") <- v/vsrs } class(rval)<-"svrepstat" rval } svytotal.svyrep.design<-svreptotal<-function(x,design, na.rm=FALSE, rho=NULL, return.replicates=FALSE, deff=FALSE,...) { if (!exists(".Generic",inherits=FALSE)) .Deprecated("svytotal") if (!inherits(design,"svyrep.design")) stop("design is not a replicate survey design") if (inherits(x,"formula")){ ## do the right thing with factors mf<-model.frame(x,design$variables,na.action=na.pass) xx<-lapply(attr(terms(x),"variables")[-1], function(tt) model.matrix(eval(bquote(~0+.(tt))),mf)) cols<-sapply(xx,NCOL) x<-matrix(nrow=NROW(xx[[1]]),ncol=sum(cols)) scols<-c(0,cumsum(cols)) for(i in 1:length(xx)){ x[,scols[i]+1:cols[i]]<-xx[[i]] } colnames(x)<-do.call("c",lapply(xx,colnames)) } else{ if(typeof(x) %in% c("expression","symbol")) x<-eval(x, design$variables) else { if(is.data.frame(x) && any(sapply(x,is.factor))){ xx<-lapply(x, function(xi) {if (is.factor(xi)) 0+(outer(xi,levels(xi),"==")) else xi}) cols<-sapply(xx,NCOL) scols<-c(0,cumsum(cols)) cn<-character(sum(cols)) for(i in 1:length(xx)) cn[scols[i]+1:cols[i]]<-paste(names(x)[i],levels(x[[i]]),sep="") x<-matrix(nrow=NROW(xx[[1]]),ncol=sum(cols)) for(i in 1:length(xx)){ x[,scols[i]+1:cols[i]]<-xx[[i]] } colnames(x)<-cn } } } x<-as.matrix(x) if (na.rm){ nas<-rowSums(is.na(x)) design<-design[nas==0,] x<-x[nas==0,,drop=FALSE] } wts<-design$repweights scale<-design$scale rscales<-design$rscales if (!is.null(rho)) .NotYetUsed("rho") if (!design$combined.weights) pw<-design$pweights else pw<-1 rval<-colSums(design$pweights*x) if (is.character(deff) || deff){ nobs<-length(design$pweights) npop<-sum(design$pweights) vsrs<-unclass(svyvar(x,design,na.rm=na.rm, return.replicates=FALSE,estimate.only=TRUE))*sum(design$pweights)^2/nobs if (deff!="replace") vsrs<-vsrs*(npop-nobs)/npop } if (getOption("survey.drop.replicates") && !is.null(design$selfrep) && all(design$selfrep)){ v<-matrix(0,nrow=NROW(rval),ncol=NROW(rval)) repmeans<-NULL } else { if (inherits(wts, "repweights_compressed")){ if (getOption("survey.drop.replicates") && !is.null(design$selfrep)){ wts$index<-wts$index[!design$selfrep] x<-x[!design$selfrep,,drop=FALSE] pw<-pw[!design$selfrep] } repmeans<-matrix(ncol=NCOL(x), nrow=ncol(wts$weights)) for(i in 1:ncol(wts$weights)){ wi<-wts$weights[wts$index,i] repmeans[i,]<-t(colSums(wi*x*pw)) } } else { if (getOption("survey.drop.replicates") && !is.null(design$selfrep)){ wts<-wts[!design$selfrep,,drop=FALSE] x<-x[!design$selfrep,,drop=FALSE] pw<-pw[!design$selfrep] } repmeans<-matrix(ncol=NCOL(x), nrow=ncol(wts)) for(i in 1:ncol(wts)){ repmeans[i,]<-t(colSums(wts[,i]*x*pw)) } } repmeans<-drop(repmeans) v <- svrVar(repmeans, scale, rscales,mse=design$mse,coef=rval) } attr(rval,"var") <- v attr(rval, "statistic")<-"total" if (return.replicates){ attr(repmeans,"scale")<-design$scale attr(repmeans,"rscales")<-design$rscales attr(repmeans,"mse")<-design$mse rval<-list(mean=rval, replicates=repmeans) } if (is.character(deff) || deff) attr(rval,"deff") <- v/vsrs class(rval)<-"svrepstat" rval } svycoxph.svyrep.design<-function(formula, design, subset=NULL,rescale=NULL,...,return.replicates=FALSE,na.action, multicore=getOption("survey.multicore")){ subset<-substitute(subset) subset<-eval(subset, design$variables, parent.frame()) if (!is.null(subset)) design<-design[subset,] if (multicore && !requireNamespace(parallel,quietly=TRUE)) multicore<-FALSE data<-design$variables g<-match.call() g$design<-NULL g$return.replicates<-NULL g$weights<-quote(.survey.prob.weights) g[[1]]<-quote(coxph) g$x<-TRUE scale<-design$scale rscales<-design$rscales if (is.null(rescale)) pwts<-design$pweights/mean(design$pweights) else if (rescale) pwts<-design$pweights/sum(design$pweights) if (is.data.frame(pwts)) pwts<-pwts[[1]] if (!all(all.vars(formula) %in% names(data))) stop("all variables must be in design= argument") .survey.prob.weights<-pwts full<-with(data,eval(g)) if (inherits(full, "coxph.penal")) warning("svycoxph does not support penalised terms") nas<-attr(full$model, "na.action") betas<-matrix(ncol=length(coef(full)),nrow=ncol(design$repweights)) wts<-design$repweights if (!design$combined.weights){ pw1<-pwts rwt<-pw1/mean(pw1) } else{ rwt<-1/mean(as.vector(wts[,1])) pw1<-rwt } if (length(nas)) wts<-wts[-nas,] beta0<-coef(full) ## coxph doesn't allow zero weights EPSILON<-1e-10 if(full$method %in% c("efron","breslow")){ if (attr(full$y,"type")=="right") fitter<-coxph.fit else if(attr(full$y,"type")=="counting") fitter<-survival::agreg.fit else stop("invalid survival type") } else fitter<-survival::agexact.fit ## g$init<-beta0 ## for(i in 1:ncol(wts)){ ## .survey.prob.weights<-as.vector(wts[,i])*pw1+EPSILON ## betas[i,]<-with(data,coef(eval(g))) ## } if (multicore){ betas<-do.call(rbind, parallel::mclapply(1:ncol(wts), function(i){ fitter(full$x, full$y, full$strata, full$offset, coef(full), coxph.control(), as.vector(wts[,i])*pw1+EPSILON, full$method, names(full$resid))$coef })) }else{ for(i in 1:ncol(wts)){ betas[i,]<-fitter(full$x, full$y, full$strata, full$offset, coef(full), coxph.control(), as.vector(wts[,i])*pw1+EPSILON, full$method, names(full$resid))$coef } } if (length(nas)) design<-design[-nas,] v<-svrVar(betas,scale, rscales, mse=design$mse, coef=beta0) full$var<-v if (return.replicates){ attr(betas,"scale")<-design$scale attr(betas,"rscales")<-design$rscales attr(betas,"mse")<-design$mse full$replicates<-betas } full$naive.var<-NULL full$wald.test<-coef(full)%*%solve(full$var,coef(full)) full$loglik<-c(NA,NA) full$rscore<-NULL full$score<-NA full$degf.residual<-degf(design)+1-length(coef(full)[!is.na(coef(full))]) class(full)<-c("svrepcoxph","svycoxph",class(full)) full$call<-match.call() full$printcall<-sys.call(-1) full$survey.design<-design full } svrepglm<-svyglm.svyrep.design<-function(formula, design, subset=NULL,family=stats::gaussian(),start=NULL, rescale=NULL, ..., rho=NULL, return.replicates=FALSE, na.action, multicore=getOption("survey.multicore")){ if (!exists(".Generic",inherits=FALSE)) .Deprecated("svyglm") subset<-substitute(subset) subset<-eval(subset, design$variables, parent.frame()) if (any(is.na(subset))) stop("subset must not contain NA values") if (!is.null(subset)) design<-design[subset,] if(multicore && !requireNamespace("parallel",quietly=TRUE)) multicore<-FALSE data<-design$variables g<-match.call() formula<-eval.parent(formula) environment(formula)<-environment() g$formula<-formula g$data<-quote(data) g$design<-NULL g$var<-g$rho<-g$return.replicates<-g$multicore<-NULL g$weights<-quote(.survey.prob.weights) g[[1]]<-quote(glm) g$model<-TRUE g$x<-TRUE g$y<-TRUE g$rescale<-NULL scale<-design$scale rscales<-design$rscales if (!is.null(rho)) .NotYetUsed(rho) if (is.null(rescale)) pwts<-design$pweights/mean(design$pweights) else if (rescale) ## old behaviour pwts<-design$pweights/sum(design$pweights) if (is.data.frame(pwts)) pwts<-pwts[[1]] if (!all(all.vars(formula) %in% names(data))) stop("all variables must be in design= argument") .survey.prob.weights<-pwts full<-with(data,eval(g)) full$naive.cov<-summary(full)$cov.unscaled nas<-attr(full$model, "na.action") if(getOption("survey.drop.replicates") && !is.null(design$selfrep) && all(design$selfrep)){ v<-matrix(0,ncol=length(coef(full)),nrow=length(coef(full))) betas<-NULL } else { betas<-matrix(ncol=length(coef(full)), nrow=ncol(design$repweights)) if (!design$combined.weights) pw1<-pwts else pw1<-rep(1,length(pwts)) wts<-design$repweights if (length(nas)){ wts<-wts[-nas,] pw1<-pw1[-nas] } XX<-full$x YY<-full$y beta0<-coef(full) if (!all(is.finite(beta0))) stop(paste("Infinite/NA values in estimate (",paste(beta0,collapse=","),")")) if(is.null(full$offset)) offs<-rep(0,nrow(XX)) else offs<-full$offset incpt<-as.logical(attr(terms(full),"intercept")) fam<-full$family contrl<-full$control if (multicore){ betas<-do.call(rbind,parallel::mclapply(1:ncol(wts), function(i){ wi<-as.vector(wts[,i])*pw1 glm.fit(XX, YY, weights = wi/sum(wi), start =beta0, offset = offs, family = fam, control = contrl, intercept = incpt)$coefficients })) } else { for(i in 1:ncol(wts)){ wi<-as.vector(wts[,i])*pw1 betas[i,]<-glm.fit(XX, YY, weights = wi/sum(wi), start =beta0, offset = offs, family = fam, control = contrl, intercept = incpt)$coefficients } } v<-svrVar(betas,scale, rscales,mse=design$mse,coef=beta0) } full$x<-NULL full$df.residual<-degf(design)+1-length(coef(full)[!is.na(coef(full))]) if (length(nas)) design<-design[-nas,] full$cov.unscaled<-v if (return.replicates){ attr(betas,"scale")<-design$scale attr(betas,"rscales")<-design$rscales attr(betas,"mse")<-design$mse full$replicates<-betas } class(full)<-c("svrepglm", "svyglm", class(full)) full$call<-sys.call(-1) if(!("formula" %in% names(full$call))) { if (is.null(names(full$call))) i<-1 else i<-min(which(names(full$call)[-1]=="")) names(full$call)[i+1]<-"formula" } full$survey.design<-design full } print.summary.svyglm<-function (x, digits = max(3, getOption("digits") - 3), symbolic.cor = x$symbolic.cor, signif.stars = getOption("show.signif.stars"), ...) { ##if (!exists("printCoefmat")) printCoefmat<-print.coefmat cat("\nCall:\n") cat(paste(deparse(x$call), sep = "\n", collapse = "\n"), "\n\n", sep = "") cat("Survey design:\n") print(x$survey.design$call) if (!is.null(df <- x$df) && (nsingular <- df[3] - df[1])) cat("\nCoefficients: (", nsingular, " not defined because of singularities)\n", sep = "") else cat("\nCoefficients:\n") coefs <- x$coefficients if (!is.null(aliased <- is.na(x$coefficients[,1])) && any(aliased)) { cn <- names(aliased) coefs <- matrix(NA, length(aliased), 4, dimnames = list(cn, colnames(coefs))) coefs[!aliased, ] <- x$coefficients } printCoefmat(coefs, digits = digits, signif.stars = signif.stars, na.print = "NA", ...) if (x$df.resid<=0) cat("\nZero or negative residual df; p-values not defined\n") cat("\n(Dispersion parameter for ", x$family$family, " family taken to be ", format(x$dispersion), ")\n\n", "Number of Fisher Scoring iterations: ", x$iter, "\n", sep = "") correl <- x$correlation if (!is.null(correl)) { p <- NCOL(correl) if (p > 1) { cat("\nCorrelation of Coefficients:\n") if (is.logical(symbolic.cor) && symbolic.cor) { print(symnum(correl, abbr.colnames = NULL)) } else { correl <- format(round(correl, 2), nsmall = 2, digits = digits) correl[!lower.tri(correl)] <- "" print(correl[-1, -p, drop = FALSE], quote = FALSE) } } } cat("\n") invisible(x) } predict.svrepglm <- function(object, newdata=NULL, total=NULL, type = c("link", "response","terms"), se.fit=(type!="terms"), vcov=FALSE, return.replicates=!is.null(object$replicates),...){ if(is.null(newdata)) newdata<-model.frame(object$survey.design) type<-match.arg(type) if (type=="terms") return(predterms(object,se=se.fit,...)) tt<-delete.response(terms(formula(object))) mf<-model.frame(tt,data=newdata) mm<-model.matrix(tt,mf) if (!is.null(total) && attr(tt,"intercept")){ mm[,attr(tt,"intercept")]<-mm[,attr(tt,"intercept")]*total } eta<-drop(mm %*% coef(object)) d<-drop(object$family$mu.eta(eta)) eta<-switch(type, link=eta, response=object$family$linkinv(eta)) if(se.fit){ if(vcov){ vv<-mm %*% vcov(object) %*% t(mm) attr(eta,"var")<-switch(type, link=vv, response=d*(t(vv*d))) } else { ## FIXME make this more efficient vv<-drop(rowSums((mm %*% vcov(object)) * mm)) attr(eta,"var")<-switch(type, link=vv, response=drop(d*(t(vv*d)))) } } attr(eta,"statistic")<-type if (return.replicates){ if (is.null(object$replicates)) { warning("replicates are not present in the fit") } else{ pred.replicates<-t(apply(object$replicates,1, function(beta){ etai<-drop(mm %*% beta) switch(type, link=etai, response=object$family$linkinv(etai)) })) attr(pred.replicates,"scale")<-attr(object$replicates,"scale") attr(pred.replicates,"rscales")<-attr(object$replicates,"rscales") attr(pred.replicates,"mse")<-attr(object$replicates,"mse") eta<-list(eta,replicates=pred.replicates) } } class(eta)<-"svrepstat" eta } svyratio.svyrep.design<-svrepratio<-function(numerator=formula,denominator, design, na.rm=FALSE,formula,covmat=FALSE, return.replicates=FALSE,deff=FALSE,...){ if (!exists(".Generic")) .Deprecated("svyratio") if (!inherits(design, "svyrep.design")) stop("design must be a svyrepdesign object") if (inherits(numerator,"formula")) numerator<-model.frame(numerator,design$variables, na.action=na.pass) else if(typeof(numerator) %in% c("expression","symbol")) numerator<-eval(numerator, design$variables) if (inherits(denominator,"formula")) denominator<-model.frame(denominator,design$variables, na.action=na.pass) else if(typeof(denominator) %in% c("expression","symbol")) denominator<-eval(denominator, design$variables) nn<-NCOL(numerator) nd<-NCOL(denominator) all<-cbind(numerator,denominator) nas<-!complete.cases(all) if (na.rm==TRUE){ design<-design[!nas,] all<-all[!nas,,drop=FALSE] numerator<-numerator[!nas,,drop=FALSE] denominator<-denominator[!nas,,drop=FALSE] } allstats<-svymean(all, design, return.replicates=TRUE) rval<-list(ratio=outer(allstats$mean[1:nn], allstats$mean[nn+1:nd], "/")) if (is.null(allstats$replicates)){ ##only self-representing strata. vars<-matrix(0,nrow=nn,ncol=nd) }else { vars<-matrix(nrow=nn,ncol=nd) if (deff) deffs<-matrix(nrow=nn,ncol=nd) for(i in 1:nn){ for(j in 1:nd){ vars[i,j]<-svrVar(allstats$replicates[,i]/allstats$replicates[,nn+j], design$scale, design$rscales,mse=design$mse,coef=rval$ratio[i,j]) if (deff=="replace" || deff) deffs[i,j]<-deff(svytotal(numerator[,i]-rval$ratio[i,j]*denominator[,j],design,deff=deff)) } } } if (covmat){ if (is.null(allstats$replicates)) vcovmat<-matrix(0,nn*nd,nn*nd) else vcovmat<-as.matrix(svrVar(allstats$replicates[,rep(1:nn,nd)]/allstats$replicates[,nn+rep(1:nd,each=nn)], design$scale, design$rscales,mse=design$mse,coef=as.vector(rval$ratio))) rownames(vcovmat)<-names(numerator)[rep(1:nn,nd)] colnames(vcovmat)<-names(denominator)[rep(1:nd,each=nn)] rval$vcov<-vcovmat } if (return.replicates) { reps<-allstats$replicates[, rep(1:nn, nd)]/allstats$replicates[, nn + rep(1:nd, each = nn)] attr(reps,"scale")<-design$scale attr(reps,"rscales")<-design$rscales attr(reps,"mse")<-design$mse rval$replicates<-reps } rval$var<-vars attr(rval,"call")<-sys.call() if (deff=="replace" || deff) attr(rval,"deff")<-deffs class(rval)<-"svyratio" rval } vcov.svyratio <- function(object, ...){ covmat<-object$vcov if (is.null(covmat)){ covmat<-matrix(NaN,length(object$var),length(object$var)) diag(covmat)<-as.vector(object$var) } nms<-as.vector(outer(rownames(object$ratio),colnames(object$ratio),paste,sep="/")) dimnames(covmat)<-list(nms,nms) covmat } residuals.svrepglm<-function(object,type = c("deviance", "pearson", "working", "response", "partial"),...){ type<-match.arg(type) if (type=="pearson"){ y <- object$y mu <- object$fitted.values wts <- object$prior.weights r<-(y - mu) * sqrt(wts)/(sqrt(object$family$variance(mu))*sqrt(object$survey.design$pweights/sum(object$survey.design$pweights))) if (is.null(object$na.action)) r else naresid(object$na.action, r) } else NextMethod() } logLik.svrepglm<-function(object,...){ stop("svrepglm not fitted by maximum likelihood.") } vcov.svyrep.design<-function (object, replicates, centre, ...) { if (object$mse) svrVar(replicates, scale = object$scale, rscales = object$rscales, mse = object$mse, coef=centre) else svrVar(replicates, scale = object$scale, rscales = object$rscales, mse = object$mse) } withReplicates<-function(design, theta, ..., return.replicates=FALSE){ UseMethod("withReplicates",design) } withReplicates.svrepvar<-function(design, theta, ...,return.replicates=FALSE){ if (is.null(reps<-design$replicates)) stop("object does not contain replicate estimates") p<-sqrt(NCOL(reps)) if (is.function(theta)){ full<-theta(design[[1]],...) thetas<-drop(t(apply(reps,1, function(rr) theta(matrix(rr,p,p), ...)))) } else{ full<-eval(theta, list(.replicate=design[[1]])) thetas<-drop(t(apply(reps,1, function(rr) eval(theta, list(.replicate=matrix(rr,p,p)))))) } v<-svrVar(thetas, attr(reps,"scale"), attr(reps,"rscales"), mse=attr(reps,"mse"), coef=full) attr(full,"var")<-v attr(full,"statistic")<-"theta" if (return.replicates){ attr(thetas,"scale")<-attr(reps,"scale") attr(thetas,"rscales")<-attr(reps,"rscales") attr(thetas,"mse")<-attr(reps,"mse") rval<-list(theta=full, replicates=thetas) } else { rval<-full } class(rval)<-"svrepstat" rval } withReplicates.svrepstat<-function(design, theta, ..., return.replicates=FALSE){ if (is.null(reps<-design$replicates)) stop("object does not contain replicate estimates") reps<-as.matrix(reps) if (is.function(theta)){ full<-theta(design[[1]],...) thetas<-drop(t(apply(reps,1,theta, ...))) } else{ full<-eval(theta, list(.replicate=design[[1]])) thetas<-drop(t(apply(reps,1, function(rr) eval(theta, list(.replicate=rr))))) } v<-svrVar(thetas, attr(reps,"scale"), attr(reps,"rscales"), mse=attr(reps,"mse"), coef=full) attr(full,"var")<-v attr(full,"statistic")<-"theta" if (return.replicates){ attr(thetas,"scale")<-attr(reps,"scale") attr(thetas,"rscales")<-attr(reps,"rscales") attr(thetas,"mse")<-attr(reps,"mse") rval<-list(theta=full, replicates=thetas) } else { rval<-full } class(rval)<-"svrepstat" rval } withReplicates.svyrep.design<-function(design, theta, rho=NULL,..., scale.weights=FALSE, return.replicates=FALSE){ wts<-design$repweights scale<-design$scale rscales<-design$rscales if (!is.null(rho)) .NotYetUsed("rho") if (scale.weights) pwts<-design$pweights/sum(design$pweights) else pwts<-design$pweights if (inherits(wts,"repweights_compressed")){ if (scale.weights) wts$weights<-sweep(wts$weights,2,drop(colSums(wts$weights)),"/") } else { if (scale.weights) wts<-sweep(wts,2, drop(colSums(wts)),"/") } rpwts<-if (design$combined.weights) 1 else pwts data<-design$variables if (is.function(theta)){ full<-theta(pwts,data,...) thetas<-drop(t(apply(wts,2, function(ww) theta(as.vector(ww)*rpwts, data, ...)))) } else{ .weights<-pwts full<-with(data, eval(theta)) thetas<-drop(t(apply(wts,2, function(.weights) {.weights<-as.vector(.weights)*rpwts with(data, eval(theta))}))) } v<-svrVar(thetas, scale, rscales,mse=design$mse, coef=full) attr(full,"var")<-v attr(full,"statistic")<-"theta" if (return.replicates) rval<-list(theta=full, replicates=thetas) else rval<-full class(rval)<-"svrepstat" rval } coef.svrepstat<-function(object,...){ if (is.list(object)) object<-object[[1]] attr(object,"statistic")<-NULL attr(object,"deff")<-NULL attr(object,"var")<-NULL unclass(object) } vcov.svrepstat<-function (object, ...) { nms <- names(coef(object)) if (is.list(object)) object <- object[[1]] v <- as.matrix(attr(object, "var")) if (length(object) == NCOL(v)) { dimnames(v) <- list(nms, nms) v } else if (length(object) == length(v)) { dnms <- dimnames(coef(object)) vmat <- matrix(NA, nrow = length(object), ncol = length(object)) diag(vmat) <- as.vector(v) nms <- as.vector(outer(dnms[[1]], dnms[[2]], paste, sep = ":")) dimnames(vmat) <- list(nms, nms) vmat } } as.data.frame.svrepstat<-function(x,...){ if (is.list(x)) { x<-x[[1]] class(x)<-"svrepstat" } rval<-data.frame(statistic=coef(x),SE=SE(x)) names(rval)[1]<-attr(x,"statistic") if (!is.null(attr(x,"deff"))) rval<-cbind(rval,deff=deff(x)) rval } SE<-function(object,...){ UseMethod("SE") } SE.default<-function(object,...){ sqrt(diag(vcov(object,...))) } SE.svrepstat<-function(object,...){ if (is.list(object)){ object<-object[[1]] } vv<-as.matrix(attr(object,"var")) if (!is.null(dim(object)) && length(object)==length(vv)) sqrt(vv) else sqrt(diag(vv)) } print.svrepstat<-function(x,...){ if (is.list(x)){ x<-x[[1]] } vv<-attr(x,"var") deff<-attr(x, "deff") if (!is.null(dim(x)) && length(x)==length(vv)){ cat("Statistic:\n") prmatrix(x) cat("SE:\n") print(sqrt(vv)) if (!is.null(deff)){ cat("Design Effect:\n") printCoefmat() } } else if(length(x)==NCOL(vv)){ m<-cbind(x,sqrt(diag(as.matrix(vv)))) if (is.null(deff)) colnames(m)<-c(attr(x,"statistic"),"SE") else { m<-cbind(m,deff(x)) colnames(m)<-c(attr(x,"statistic"),"SE","DEff") } printCoefmat(m) } else if (length(x)==length(vv)){ m<-cbind(x,sqrt((vv))) if (is.null(deff)) colnames(m)<-c(attr(x,"statistic"),"SE") else { m<-cbind(m,deff(x)) colnames(m)<-c(attr(x,"statistic"),"SE","DEff") } printCoefmat(m) } else { stop("incorrect structure of svrepstat object") } naa<-attr(vv,"na.replicates") if (!is.null(naa)) cat("Note: NA results discarded for",length(naa),"replicates (",naa,")\n") } summary.svrepglm<-function (object, correlation = FALSE, df.resid=NULL,...) { Qr <- object$qr est.disp <- TRUE if (is.null(df.resid)) df.r <- object$df.residual else df.r<-df.resid presid<-resid(object,"pearson") dispersion<- sum( object$survey.design$pweights*presid^2,na.rm=TRUE)/sum(object$survey.design$pweights) coef.p <- coef(object) covmat<-vcov(object) dimnames(covmat) <- list(names(coef.p), names(coef.p)) var.cf <- diag(covmat) s.err <- sqrt(var.cf) tvalue <- coef.p/s.err dn <- c("Estimate", "Std. Error") if (!est.disp) { pvalue <- 2 * pnorm(-abs(tvalue)) coef.table <- cbind(coef.p, s.err, tvalue, pvalue) dimnames(coef.table) <- list(names(coef.p), c(dn, "z value", "Pr(>|z|)")) } else if (df.r > 0) { pvalue <- 2 * pt(-abs(tvalue), df.r) coef.table <- cbind(coef.p, s.err, tvalue, pvalue) dimnames(coef.table) <- list(names(coef.p), c(dn, "t value", "Pr(>|t|)")) } else { coef.table <- cbind(coef.p, Inf) dimnames(coef.table) <- list(names(coef.p), dn) } ans <- c(object[c("call", "terms", "family", "deviance", "aic", "contrasts", "df.residual", "null.deviance", "df.null", "iter")], list(deviance.resid = residuals(object, type = "deviance"), aic = object$aic, coefficients = coef.table, dispersion = dispersion, df = c(object$rank, df.r,NCOL(Qr$qr)), cov.unscaled = covmat, cov.scaled = covmat)) if (correlation) { dd <- sqrt(diag(covmat)) ans$correlation <- covmat/outer(dd, dd) } ans$aliased<-is.na(ans$coef) ans$survey.design<-list(call=object$survey.design$call, type=object$survey.design$type) class(ans) <- c("summary.svyglm","summary.glm") return(ans) } svytable.svyrep.design<-svreptable<-function(formula, design, Ntotal=sum(weights(design, "sampling")), round=FALSE,...){ if (!exists(".Generic",inherits=FALSE)) .Deprecated("svytable") weights<-design$pweights if (is.data.frame(weights)) weights<-weights[[1]] ## unstratified or unadjusted. if (is.null(Ntotal) || length(Ntotal)==1){ ff<-eval(substitute(lhs~rhs,list(lhs=quote(weights), rhs=formula[[2]]))) tbl<-xtabs(ff, data=design$variables,...) if (!is.null(Ntotal)) { tbl<-tbl*(sum(as.numeric(Ntotal))/sum(tbl)) ## avoid integer overflow when Ntotal >sqrt(maxint) } if (round) tbl<-round(tbl) class(tbl) <- c("svytable", class(tbl)) attr(tbl, "call")<-match.call() return(tbl) } ## adjusted and stratified ff<-eval(substitute(lhs~strata+rhs,list(lhs=quote(weights), rhs=formula[[2]], strata=quote(design$strata)))) tbl<-xtabs(ff, data=design$variables,...) ss<-match(sort(unique(design$strata)), Ntotal[,1]) dm<-dim(tbl) layer<-prod(dm[-1]) tbl<-sweep(tbl,1,Ntotal[ss, 2]/apply(tbl,1,sum),"*") tbl<-apply(tbl, 2:length(dm), sum) if (round) tbl<-round(tbl) class(tbl)<-c("svytable", "xtabs","table") attr(tbl, "call")<-match.call() tbl } postStratify<-function(design,strata, population, partial=FALSE,...){ UseMethod("postStratify") } postStratify.svyrep.design<-function(design, strata, population, partial=FALSE,compress=NULL,...){ if(inherits(strata,"formula")){ mf<-substitute(model.frame(strata, data=design$variables,na.action=na.fail)) strata<-eval.parent(mf) } strata<-as.data.frame(strata) if (is.null(compress)) compress<-inherits(design$repweights, "repweights_compressed") sampletable<-xtabs(design$pweights~.,data=strata) sampletable<-as.data.frame(sampletable) if (inherits(population,"table")) population<-as.data.frame(population) else if (is.data.frame(population)) population$Freq <- as.vector(population$Freq) else stop("population must be a table or dataframe") if (!all(names(strata) %in% names(population))) stop("Stratifying variables don't match") nn<- names(population) %in% names(strata) if (sum(!nn)!=1) stop("stratifying variables don't match") names(population)[which(!nn)]<-"Pop.Freq" both<-merge(sampletable, population, by=names(strata), all=TRUE) samplezero <- both$Freq %in% c(0, NA) popzero <- both$Pop.Freq %in% c(0, NA) both<-both[!(samplezero & popzero),] if (any(onlysample<- popzero & !samplezero)){ print(both[onlysample,]) stop("Strata in sample absent from population. This Can't Happen") } if (any(onlypop <- samplezero & !popzero)){ if (partial){ both<-both[!onlypop,] warning("Some strata absent from sample: ignored") } else { print(both[onlypop,]) stop("Some strata absent from sample: use partial=TRUE to ignore them.") } } reweight<-both$Pop.Freq/both$Freq both$label <- do.call("interaction", list(both[,names(strata)])) designlabel <- do.call("interaction", strata) index<-match(designlabel, both$label) oldpw<-design$pweights design$pweights<-design$pweights*reweight[index] if (design$combined.weights){ replicateFreq<- rowsum(as.matrix(design$repweights), match(designlabel, both$label), reorder=TRUE) repreweight<- both$Pop.Freq/replicateFreq design$repweights <- as.matrix(design$repweights)*repreweight[index,] } else { replicateFreq<- rowsum(as.matrix(design$repweights)*oldpw, match(designlabel, both$label), reorder=TRUE) repreweight<- both$Pop.Freq/replicateFreq design$repweights <- as.matrix(design$repweights)* (repreweight/reweight)[index,] } if (compress) design$repweights<-compressWeights(design$repweights) design$call<-sys.call(-1) if(!is.null(design$degf)){ design$degf<-NULL design$degf<-degf(design) } design } rake<-function(design, sample.margins, population.margins, control=list(maxit=10, epsilon=1, verbose=FALSE), compress=NULL){ if (!missing(control)){ control.defaults<-formals(rake)$control for(n in names(control.defaults)) if(!(n %in% names(control))) control[[n]]<-control.defaults[[n]] } is.rep<-inherits(design,"svyrep.design") if (is.rep && is.null(compress)) compress<-inherits(design$repweights,"repweights_compressed") if (is.rep) design$degf<-NULL if (length(sample.margins)!=length(population.margins)) stop("sample.margins and population.margins do not match.") nmar<-length(sample.margins) if (control$epsilon<1) epsilon<-control$epsilon*sum(weights(design,"sampling")) else epsilon<-control$epsilon strata<-lapply(sample.margins, function(margin) if(inherits(margin,"formula")){ mf<-model.frame(margin, data=design$variables,na.action=na.fail) } ) allterms<-unlist(lapply(sample.margins,all.vars)) ff<-formula(paste("~", paste(allterms,collapse="+"),sep="")) oldtable<-svytable(ff, design) if (control$verbose) print(oldtable) oldpoststrata<-design$postStrata iter<-0 converged<-FALSE while(iter < control$maxit){ ## we don't want to accumulate more poststrata with each iteration design$postStrata<-NULL for(i in 1:nmar){ design<-postStratify(design, strata[[i]], population.margins[[i]], compress=FALSE) } newtable<-svytable(ff, design) if (control$verbose) print(newtable) delta<-max(abs(oldtable-newtable)) if (delta1 && method!="brewer") stop("Multistage PPS sampling not supported with this method") rval<-svydesign(ids=ids,strata=strata,weights=NULL, probs=probs,fpc=fpc,data=data,pps="other") deltacheck<-make_pps_covmat(rval, method) rval$dcheck=deltacheck rval$variance<-variance rval$call<-call class(rval) <- c("pps","survey.design") rval } ppsmat<-function(jointprob, tolerance=0.0001){ if ((!is.matrix(jointprob)) || !(NROW(jointprob)==NCOL(jointprob))) stop("jointprob must be a square matrix") rval<-list(pij=jointprob, tolerance=tolerance,call=sys.call()) class(rval)<-"ppsmat" rval } ppscov<-function(probcov, weighted=FALSE){ if ((!is.matrix(probcov)) && (!is(probcov,"Matrix")) || !(NROW(probcov)==NCOL(probcov))) stop("jointprob must be a square matrix") if (weighted){ rval<-list(dcheck=probcov,call=sys.call()) class(rval)<-"ppsdcheck" } else { rval<-list(delta=probcov,call=sys.call()) class(rval)<-"ppsdelta" } rval } print.ppsdcheck<-function(x,...) { cat("PPS: Weighted covariance matrix: ") print(x$call) invisible(x) } print.ppsdelta<-function(x,...) { cat("PPS: Sampling covariance matrix: ") print(x$call) invisible(x) } print.ppsmat<-function(x,...) { cat("PPS: Joint probability matrix: ") print(x$call) invisible(x) } pps_design.ppsmat<-function(method,ids,strata=NULL, probs=NULL, fpc=NULL,variables=NULL, subset, data,call=sys.call(),variance="HT",...){ if (length(ids[[2]])>1) stop("Multistage PPS sampling not supported") rval<-svydesign(ids=ids,strata=strata,weights=NULL,variables=variables, probs=probs,fpc=fpc,data=data,pps="other") deltacheck<-pi2Dcheck(method$pij,method$tolerance) rval$variance<-variance rval$dcheck<-list(list(id=1:nrow(method$pij), dcheck=deltacheck)) rval$call<-call class(rval) <- c("pps","survey.design") rval } pps_design.ppsdcheck<-function(method,ids,strata=NULL, probs=NULL, fpc=NULL,variables=NULL, subset, data,call=sys.call(),variance="HT",...){ if (length(ids[[2]])>1) stop("Multistage PPS sampling not supported") rval<-svydesign(ids=ids,strata=strata,weights=NULL,variables=variables, probs=probs,fpc=fpc,data=data,pps="other") deltacheck<-method$dcheck rval$variance<-variance rval$dcheck<-list(list(id=1:nrow(deltacheck), dcheck=deltacheck)) rval$call<-call class(rval) <- c("pps","survey.design") rval } pps_design.ppsdelta<-function(method,ids,strata=NULL, probs=NULL, fpc=NULL,variables=NULL, subset, data,call=sys.call(),variance="HT",...){ if (length(ids[[2]])>1) stop("Multistage PPS sampling not supported") rval<-svydesign(ids=ids,strata=strata,weights=NULL,variables=variables, probs=probs,fpc=fpc,data=data,pps="other") w<-weights(rval) deltacheck<-method$delta*tcrossprod(w) diag(deltacheck)<-diag(method$delta)*w rval$variance<-variance rval$dcheck<-list(list(id=1:nrow(method$deltacheck), dcheck=deltacheck)) rval$call<-call class(rval) <- c("pps","survey.design") rval } poisson_sampling<-function(p){ ppscov(Diagonal(x=1-p),weighted=TRUE) } HR<-function(psum=NULL, strata=NULL){ if (is.null(psum)) { ## estimate rval<-list(pbar=NULL,call=sys.call()) } else if (is.data.frame(strata) || is.matrix(strata)){ #redundant pbar<-lapply(1:NCOL(strata), function(i){ psum[!duplicated(strata[,i]),i]}) strata<-lapply(1:NCOL(strata), function(i){ strata[!duplicated(strata[,i]),i]}) rval<-list(pbar=pbar, strata=strata,call=sys.call()) } else if (is.null(strata) && is.numeric(psum) && length(psum)==1){ ## single number rval<-list(pbar=list(psum),strata=list(1), call=sys.call()) } else{ ## non-redundant list rval<-list(pbar=psum, strata=strata,call=sys.call()) } class(rval)<-"HR" rval } print.HR<-function(x,...) { cat("PPS: Hartley-Rao correction: ") print(x$call) invisible(x) } pps_design.HR<-function(method,ids,strata=NULL, probs=NULL, fpc=NULL,variables=NULL, subset, data,call=sys.call(),variance="HT",...){ if (length(ids[[2]])>1) stop("Multistage PPS sampling not supported with this method") rval<-svydesign(ids=ids,strata=strata,weights=NULL, probs=probs,fpc=fpc,data=data,pps="other") if (is.null(method$pbar)) ## sample estimate of sum(p^2/n) deltacheck<-multi.HR1Dcheck(rval$cluster,rval$strata,rval$allprob) else deltacheck<-multi.HRDcheck(rval$cluster,rval$strata,rval$allprob, method$pbar) rval$dcheck=deltacheck rval$variance<-variance rval$call<-call class(rval) <- c("pps","survey.design") rval } print.pps<-function(x,...){ cat("Sparse-matrix design object:\n ") print(x$call) } summary.pps<-function(object,...){ class(object)<-"summary.pps" object } print.summary.pps<-function(x,...,varnames=TRUE){ cat("Two-phase sparse-matrix design:\n ") print(x$call) cat("Sampling probabilities:\n") print(summary(x$prob)) if (varnames){ cat("Data variables:\n") print(names(x$variables)) } invisible(x) } ppsvar<-function(x,design){ postStrata<-design$postStrata est<-design$variance ##Yates-Grundy or Horvitz-Thompson if (!is.null(postStrata)){ for (psvar in postStrata){ if (inherits(psvar, "greg_calibration")) { if (psvar$stage==0){ ## G-calibration at population level y<-qr.resid(psvar$qr,x/psvar$w)*psvar$w } else { ## G-calibration within clusters stop("calibration within clusters not yet available for PPS designs") } } else { ## ordinary post-stratification psw<-attr(psvar, "weights") postStrata<-as.factor(psvar) psmeans<-rowsum(y/psw,psvar,reorder=TRUE)/as.vector(table(factor(psvar))) x<- y-psmeans[match(psvar,sort(unique(psvar))),]*psw } } } dcheck<-design$dcheck if (length(dcheck)!=1) stop("Multistage not implemented yet") rval<-switch(est,HT=htvar.matrix(rowsum(x,dcheck[[1]]$id,reorder=FALSE),dcheck[[1]]$dcheck), YG=ygvar.matrix(rowsum(x,dcheck[[1]]$id,reorder=FALSE),dcheck[[1]]$dcheck), stop("can't happen")) rval } svytotal.pps<-function(x,design, na.rm=FALSE, deff=FALSE,...){ if (inherits(x,"formula")){ ## do the right thing with factors mf<-model.frame(x,model.frame(design), na.action=na.pass) xx<-lapply(attr(terms(x),"variables")[-1], function(tt) model.matrix(eval(bquote(~0+.(tt))),mf)) cols<-sapply(xx,NCOL) x<-matrix(nrow=NROW(xx[[1]]),ncol=sum(cols)) scols<-c(0,cumsum(cols)) for(i in 1:length(xx)){ x[,scols[i]+1:cols[i]]<-xx[[i]] } colnames(x)<-do.call("c",lapply(xx,colnames)) } else { if(typeof(x) %in% c("expression","symbol")) x<-eval(x, design$variables) else { if(is.data.frame(x) && any(sapply(x,is.factor))){ xx<-lapply(x, function(xi) {if (is.factor(xi)) 0+(outer(xi,levels(xi),"==")) else xi}) cols<-sapply(xx,NCOL) scols<-c(0,cumsum(cols)) cn<-character(sum(cols)) for(i in 1:length(xx)) cn[scols[i]+1:cols[i]]<-paste(names(x)[i],levels(x[[i]]),sep="") x<-matrix(nrow=NROW(xx[[1]]),ncol=sum(cols)) for(i in 1:length(xx)){ x[,scols[i]+1:cols[i]]<-xx[[i]] } colnames(x)<-cn } } } x<-as.matrix(x) if (na.rm){ nas<-rowSums(is.na(x)) design<-design[nas==0,] if(length(nas)>length(design$prob)) x<-x[nas==0,,drop=FALSE] else x[nas>0,]<-0 } N<-sum(1/design$prob) total <- colSums(x/as.vector(design$prob),na.rm=na.rm) class(total)<-"svystat" attr(total, "var")<-v<-ppsvar(x/design$prob,design) attr(total,"statistic")<-"total" if (is.character(deff) || deff){ nobs<-NROW(design$cluster) if (deff=="replace") vsrs<-svyvar(x,design,na.rm=na.rm)*sum(weights(design))^2*(N-nobs)/N else vsrs<-svyvar(x,design,na.rm=na.rm)*sum(weights(design))^2 attr(total, "deff")<-v/vsrs } return(total) } svymean.pps<-function(x,design, na.rm=FALSE,deff=FALSE,...){ if (inherits(x,"formula")){ ## do the right thing with factors mf<-model.frame(x,model.frame(design) ,na.action=na.pass) xx<-lapply(attr(terms(x),"variables")[-1], function(tt) model.matrix(eval(bquote(~0+.(tt))),mf)) cols<-sapply(xx,NCOL) x<-matrix(nrow=NROW(xx[[1]]),ncol=sum(cols)) scols<-c(0,cumsum(cols)) for(i in 1:length(xx)){ x[,scols[i]+1:cols[i]]<-xx[[i]] } colnames(x)<-do.call("c",lapply(xx,colnames)) } else { if(typeof(x) %in% c("expression","symbol")) x<-eval(x, design$variables) else { if(is.data.frame(x) && any(sapply(x,is.factor))){ xx<-lapply(x, function(xi) {if (is.factor(xi)) 0+(outer(xi,levels(xi),"==")) else xi}) cols<-sapply(xx,NCOL) scols<-c(0,cumsum(cols)) cn<-character(sum(cols)) for(i in 1:length(xx)) cn[scols[i]+1:cols[i]]<-paste(names(x)[i],levels(x[[i]]),sep="") x<-matrix(nrow=NROW(xx[[1]]),ncol=sum(cols)) for(i in 1:length(xx)){ x[,scols[i]+1:cols[i]]<-xx[[i]] } colnames(x)<-cn } } } x<-as.matrix(x) if (na.rm){ nas<-rowSums(is.na(x)) if (any(nas>0)) design<-design[nas==0,] x[nas>0,]<-0 } pweights<-1/design$prob psum<-sum(pweights) average<-colSums(x*pweights/psum) x<-sweep(x,2,average) v<-ppsvar(x*pweights/psum,design) attr(average,"var")<-v attr(average,"statistic")<-"mean" class(average)<-"svystat" if (is.character(deff) || deff){ nobs<-nrow(design) if(deff=="replace"){ vsrs<-svyvar(x,design,na.rm=na.rm)/(nobs) } else { if(psumlength(design$prob)) x<-x[nas==0,,drop=FALSE] else x[nas>0,]<-0 } w<-weights(design) epsilon<-0.1*min(w[w>0])/sum(w) if (is.null(df)){ qcrit<-function(p, lower.tail=TRUE) qt(p, df=degf(design), lower.tail=lower.tail) } else if(df==Inf){ qcrit <- function(p,lower.tail=TRUE) qnorm(p,lower.tail=lower.tail) } else { qcrit <- function(p,lower.tail=TRUE) qt(p,df=df,lower.tail=lower.tail) } computeQuantiles<-function(xx,p=quantiles){ if (any(is.na(x))) return(NA*p) oo<-order(xx) cum.w<-cumsum(w[oo])/sum(w) cdf<-approxfun(cum.w,xx[oo],method=method,f=f, yleft=min(xx),yright=max(xx),ties=min) cdf(p) } computeQuantilesRounded<-function(xx,p=quantiles){ if (any(is.na(xx))) return(NA*p) ww<-rowsum(w,xx,reorder=TRUE) xx<-sort(unique(xx)) cum.w <- cumsum(ww)/sum(ww) cdf <- approxfun(cum.w, xx, method = method, f = f, yleft = min(xx), yright = max(xx),ties=min) cdf(p) } computeScoreCI<-function(xx,p){ if (any(is.na(xx))) return(c(NA,NA)) U<-function(theta){ ((xx>theta)-(1-p))} scoretest<-function(theta,qlimit){ umean<-svymean(U(theta),design) umean/sqrt(attr(umean,"var"))-qlimit } iqr<-IQR(xx) lower<-min(xx)+iqr/100 upper<-max(xx)-iqr/100 tol<-1/(100*sqrt(nrow(design))) c(uniroot(scoretest,interval=c(lower,upper), qlimit=qcrit(alpha/2,lower.tail=FALSE),tol=tol)$root, uniroot(scoretest,interval=c(lower,upper), qlimit=qcrit(alpha/2,lower.tail=TRUE),tol=tol)$root) } computePCI<-function(se,alpha,p){ if (interval.type=="Wald"){ p.up<-p+qcrit(alpha/2,lower.tail=FALSE)*se p.low<-p+qcrit(alpha/2,lower.tail=TRUE)*se c(p.low,p.up) } else if (interval.type=="betaWald"){ n.eff <- (p*(1-p))/(se^2) n.eff <- n.eff * ( qt(alpha/2, nrow(design)-1)/qt(alpha/2, degf(design)) )^2 p.up<-qbeta(1-alpha/2, n.eff*p+1, n.eff*(1-p)) p.low<-qbeta(alpha/2, n.eff*p, n.eff*(1-p)+1) c(p.low,p.up) } } computeWaldCI<-function(xx,p){ if (any(is.na(xx))) return(c(NA,NA)) theta0<-computeQuantiles(xx,p) U<- ((xx>theta0)-(1-p)) wtest<-svymean(U,design) p.ci<-computePCI(SE(wtest),alpha,p) p.low<-p.ci[1] p.up<-p.ci[2] oo<-order(xx) cum.w<-cumsum(w[oo])/sum(w) approx(cum.w,xx[oo],xout=c(p.low,p.up), method=method,f=f, yleft=min(xx),yright=max(xx),ties=min)$y } computeWaldCIRounded<-function(xx,p){ if(any(is.na(xx))) return(c(NA,NA)) theta0<-computeQuantilesRounded(xx,p) U<- ((xx>theta0)-(1-p)) ww<-rowsum(w,xx, reorder=TRUE) uxx <- sort(unique(xx)) wtest<-svymean(U,design) p.ci<-computePCI(SE(wtest),alpha,p) p.low<-p.ci[1] p.up<-p.ci[2] oo<-order(xx) cum.w<-cumsum(ww)/sum(ww) approx(cum.w,uxx,xout=c(p.low,p.up), method=method,f=f, yleft=min(xx),yright=max(xx),ties=min)$y } ties<-match.arg(ties) computeQ<-switch(ties, discrete=computeQuantiles,rounded=computeQuantilesRounded) if (!is.null(dim(x))) rval<-t(matrix(apply(x,2,computeQ),nrow=length(quantiles), dimnames=list(as.character(round(quantiles,2)),colnames(x)))) else rval<-computeQ(x) if (!ci & !se) return(rval) interval.type<-match.arg(interval.type) computeCI<-switch(paste(interval.type,ties,sep="."), score.discrete=computeScoreCI, score.rounded=stop("ties=\"rounded\" not available with interval.type=\"score\""), Wald.rounded=computeWaldCIRounded, betaWald.rounded=computeWaldCIRounded, Wald.discrete=computeWaldCI, betaWald.discrete=computeWaldCI) if (!is.null(dim(x))) cis<-array(apply(x,2,function(xx) sapply(quantiles,function(qq) computeCI(xx,qq))), dim=c(2,length(quantiles),ncol(x)), dimnames=list(c("(lower","upper)"), as.character(round(quantiles,2)), colnames(x))) else cis<-sapply(quantiles, function(qq) computeCI(x,qq)) if (ci) rval<-list(quantiles=rval,CIs=cis) else rval<-list(quantiles=rval) if (is.null(dim(x))) ses<-(cis[2,]-cis[1,])/(2*qcrit(alpha/2,lower.tail=FALSE)) else ses<-(cis[2,,]-cis[1,,])/(2*qcrit(alpha/2,lower.tail=FALSE)) attr(rval,"SE")<-ses class(rval)<-c("oldsvyquantile","svyquantile") rval } oldsvyquantile.svyrep.design<-function(x,design,quantiles,method="linear", interval.type=c("probability","quantile"),f=1, return.replicates=FALSE, ties=c("discrete","rounded"),na.rm=FALSE, alpha=0.05,df=NULL,...){ if (!exists(".Generic",inherits=FALSE)) .Deprecated("svyquantile") ties<-match.arg(ties) interval<-match.arg(interval.type) if (design$type %in% c("JK1","JKn") && interval=="quantile") warning("Jackknife replicate weights may not give valid standard errors for quantiles") if (design$type %in% "other" && interval=="quantile") warning("Not all replicate weight designs give valid standard errors for quantiles.") if (inherits(x,"formula")) x<-model.frame(x,design$variables,na.action=if(na.rm) na.pass else na.fail) else if(typeof(x) %in% c("expression","symbol")) x<-eval(x, design$variables) if (na.rm){ nas<-rowSums(is.na(x)) design<-design[nas==0,] if (length(nas)>length(design$prob)) x<-x[nas==0,,drop=FALSE] else x[nas>0,]<-0 } if (NROW(x)<=1){ rval<-matrix(rep(as.matrix(x),length(quantiles)),ncol=NCOL(x),nrow=length(quantiles),byrow=TRUE) dimnames(rval)<-list(paste("q",round(quantiles,2),sep=""), names(x)) if (getOption("survey.drop.replicates") && !is.null(design$selfrep) && all(design$selfrep)) vv<-matrix(0,ncol=NCOL(x),nrow=length(quantiles)) else vv<-matrix(NA,ncol=NCOL(x),nrow=length(quantiles)) dimnames(vv)<-list(paste("q",round(quantiles,2),sep=""), names(x)) attr(rval,"var")<-vv attr(rval,"statistic")<-quantiles if (return.replicates) rval<-list(mean=rval,replicates=NULL) class(rval)<-"svrepstat" return(rval) } if (is.null(df)) df<-degf(design) if (df==Inf) qcrit<-qnorm else qcrit <-function(...) qt(...,df=df) w<-weights(design,"analysis") if (interval=="quantile"){ ## interval on quantile scale if (ties=="discrete") computeQuantiles<-function(xx){ oo<-order(xx) ws<-weights(design,"sampling") epsilon<-0.1*min(ws[ws>0])/sum(ws) cum.ws<-cumsum(ws[oo])/sum(ws) rval<-approx(cum.ws,xx[oo],method=method,f=f, yleft=min(xx),yright=max(xx), xout=quantiles,ties=min)$y cum.w<-apply(w,2,function(wi) cumsum(wi[oo])/sum(wi)) qq<-apply(cum.w, 2, function(cum.wi){ approx(cum.wi,xx[oo],method=method,f=f, yleft=min(xx),yright=max(xx), xout=quantiles,ties=min)$y } ) if (length(quantiles)>1) qq<-t(qq) else qq<-as.matrix(qq) ##rval<-colMeans(qq) rval<-list(quantiles=rval, variances=diag(as.matrix(svrVar(qq,design$scale,design$rscales,mse=design$mse,coef=rval)))) if (return.replicates) rval<-c(rval, list(replicates=qq)) rval } else { ##ties="rounded" computeQuantiles<-function(xx){ ws<-weights(design,"sampling") epsilon<-0.1*min(ws[ws>0])/sum(ws) wws<-rowsum(ws,xx,reorder=TRUE) uxx<-sort(unique(xx)) cum.wws<-cumsum(wws)/sum(wws) rval<-approx(cum.wws,uxx,method=method,f=f, yleft=min(xx),yright=max(xx), xout=quantiles,ties=min)$y cum.w<-apply(rowsum(w,xx,reorder=TRUE),2,function(wi) cumsum(wi)/sum(wi)) qq<-apply(cum.w, 2, function(cum.wi){ approx(cum.wi,uxx,method=method,f=f, yleft=min(xx),yright=max(xx), xout=quantiles,ties=min)$y } ) if (length(quantiles)>1) qq<-t(qq) else qq<-as.matrix(qq) ##rval<-colMeans(qq) rval<-list(quantiles=rval, variances=diag(as.matrix(svrVar(qq,design$scale,design$rscales,mse=design$mse,coef=rval)))) if (return.replicates) rval<-c(rval, list(replicates=qq)) rval } } } else { ## interval on probability scale, backtransformed. if (ties=="discrete"){ computeQuantiles<-function(xx){ oo<-order(xx) w<-weights(design,"sampling") epsilon<-0.1*min(w[w>0])/sum(w) cum.w<- cumsum(w[oo])/sum(w) Qf<-approxfun(cum.w,xx[oo],method=method,f=f, yleft=min(xx),yright=max(xx), ties=min) point.estimates<-Qf(quantiles) if(length(quantiles)==1) estfun<-as.numeric(xx0])/sum(w) ww<-rowsum(w,xx,reorder=TRUE) uxx<-sort(unique(xx)) cum.w<- cumsum(ww)/sum(ww) Qf<-approxfun(cum.w,uxx,method=method,f=f, yleft=min(xx),yright=max(xx), ties=min) point.estimates<-Qf(quantiles) if(length(quantiles)==1) estfun<-as.numeric(xxnrweight | counts[expand]totalweight) i<-which(bad & !duplicated(as.vector(object$index))) if (length(i)==0) return(NULL) d<-dim(object$weights) nd<-length(d) dd<-cumprod(d) dn<-dimnames(object$weights) ii<-t(t(outer(i-1,dd,"%%")) %/% c(1,dd[-nd])) +1 keep<-!duplicated(i) ii<-ii[keep,,drop=FALSE] i<-i[keep] mm<-matrix("",ncol=NCOL(ii),nrow=NROW(ii)) colnames(mm)<-names(dimnames(object$index)) rownames(mm)<-i for(j in seq(length=length(d))){ mm[,j]<-dn[[j]][ii[,j]] } rval<-list(index=i, names=mm, totals=totals[expand][i],ratios=ratios[expand][i], counts=counts[expand][i],call=sys.call()) class(rval)<-"nonresponseSubset" rval } neighbours<-function(index,object){ d<-dim(object$index) if (length(index)==1) i<-object$index[index] else i<-sum(c(index-1,0)*cumprod(c(1,d)))+1 nd<-length(d) ## all the joins of that index ii<-which(object$index==object$index[i],arr.ind=TRUE) nii<-nrow(ii) diffs<-t(rbind(diag(rep(1,nd)),diag(rep(-1,nd)))) nbours<-matrix(nrow=2*nd*nii,ncol=nd) counter<-0 for(j in 1:nii){ nbours[counter+1:(2*nd),]<-t(ii[j,]+diffs) counter<-counter+2*nd } keep<-apply(nbours,1, function(x) all(x>0 & x<=d)) keep<- keep & !duplicated(nbours) nbours<-nbours[keep,,drop=FALSE] nbour.index<-apply(nbours,1, function(x) sum(c(x-1,0)*cumprod(c(1,d)))+1) nbour.index<-nbour.index[!(object$index[nbour.index] %in% object$index[index])] object[nbour.index] } weights.nonresponse<-function(object,...){ w<-rowsum(as.vector(object$population),as.vector(object$index))/rowsum(as.vector(object$weights),as.vector(object$index)) expand<-as.integer(as.factor(object$index)) array(w[expand],dim=dim(object$index),dimnames=dimnames(object$index)) } joinCells<-function(object,a,...){ if (!is.list(a)) a<-list(a,...) d<-dim(object$index) nd<-length(d) if (length(a[[1]])>1) a<-sapply(a,function(ai) sum(c(ai-1,0)*cumprod(c(1,d)))+1) else a<-do.call("c",a) nd<-length(d) if(length(a)<2){ warning("Can't join a single cell") return(invisible(object)) } indices<-object$index[a] if (length(unique(indices))<2){ warning("These cells are already joined") return(invisible(object)) } object$index[object$index %in% object$index[a]]<-min(object$index[a]) object$joins<-c(object$joins,list(which(object$index %in% object$index[a]))) object } survey/R/recalibrate.R0000644000176200001440000000024214233634027014412 0ustar liggesusers recalibrate<-function(design, formula, ...){ m<-model.matrix(formula, model.frame(design)) calibrate(design,formula, colSums(m*weights(design))) } survey/R/bootstrap.R0000644000176200001440000000567411457435612014174 0ustar liggesusers subbootstratum<-function(psu,replicates){ upsu<-sample(unique(psu)) n<-length(upsu) replicate(replicates, table(factor(sample(upsu, length(upsu)-1,replace=TRUE), levels=unique(psu))))*n/(n-1) } bootstratum<-function(psu, popsize, replicates){ upsu<-sample(unique(psu)) if (is.null(popsize)){ replicate(replicates, table(factor(sample(upsu,length(upsu),replace=TRUE), levels=unique(psu)))) } else { replicate(replicates, table(factor(sample(rep(upsu,length=popsize), length(upsu)), levels=unique(psu)))) } } bootweights<-function(strata, psu, replicates=50, fpc=NULL, fpctype=c("population","fraction","correction"), compress=TRUE){ fpctype<-match.arg(fpctype) index<-match(psu,psu[!duplicated(psu)]) upsu<-unique(psu) strata<-as.character(strata) weights<-matrix(nrow=length(upsu),ncol=replicates) ustrata<-strata[!duplicated(psu)] ufpc<-fpc[!duplicated(psu)] for(s in unique(ustrata)){ this.stratum<-ustrata==s npsu<-length(unique(upsu[this.stratum])) if (is.null(fpc)) weights[this.stratum,]<-bootstratum(upsu[this.stratum],NULL,replicates) else { this.fpc<-ufpc[this.stratum] if (length(unique(this.fpc))>1) stop("More than one fpc in stratum",s) this.fpc<-this.fpc[1] if (fpctype=="population" && this.fpc 100*npsu) warning("Sampling fraction <1% in stratum",s," treated as zero.") weights[this.stratum,]<-bootstratum(upsu[this.stratum], popsize=this.fpc,replicates=replicates) } } ## harmonic mean of stratum sizes psu.per.strata<-1/mean(1/table(ustrata)) if (compress){ rw<-list(weights=weights,index=index) class(rw)<-"repweights_compressed" } else { rw<-weights[index,] } list(repweights=rw, scale=psu.per.strata/((psu.per.strata-1)*(replicates-1)), rscales=rep(1,replicates)) } subbootweights<-function(strata, psu, replicates=50, compress=TRUE){ index<-match(psu,psu[!duplicated(psu)]) upsu<-unique(psu) strata<-as.character(strata) weights<-matrix(nrow=length(upsu),ncol=replicates) ustrata<-strata[!duplicated(psu)] for(s in unique(ustrata)){ this.stratum<-ustrata==s npsu<-length(unique(upsu[this.stratum])) weights[this.stratum,]<-subbootstratum(upsu[this.stratum],replicates) } if (compress){ rw<-list(weights=weights,index=index) class(rw)<-"repweights_compressed" } else { rw<-weights[index,] } list(repweights=rw, scale=1/(replicates-1), rscales=rep(1,replicates)) } survey/R/rsquared.R0000644000176200001440000000207213046201510013752 0ustar liggesusers psrsq<-function(object, method=c("Cox-Snell","Nagelkerke"),...){ UseMethod("psrsq",object) } psrsq.glm<-function(object, method=c("Cox-Snell","Nagelkerke"),...){ nullmodel<-update(object,.~1) method<-match.arg(method) ell0<-as.vector(logLik(nullmodel)) ell1<-as.vector(logLik(object)) n<-object$df.null+1 mutualinf<- -2*(ell1-ell0)/n r2cs<-1-exp(mutualinf) if (method == "Cox-Snell") return(r2cs) scaling<-1-exp(2*ell0/n) r2cs/scaling } psrsq.svyglm<-function(object, method=c("Cox-Snell", "Nagelkerke"),...){ method<-match.arg(method) if (!(object$family$family %in% c("binomial","quasibinomial","poisson","quasipoisson"))) stop("Only implemented for discrete data") w<-weights(object$survey.design,"sampling") N<-sum(w) n<-sum(object$prior.weights) minus2ell0<-object$null.deviance*(N/n) minus2ell1<-object$deviance*(N/n) mutualinf<-(minus2ell1-minus2ell0)/N r2cs<-1-exp(mutualinf) if (method =="Cox-Snell") return(r2cs) if (any(w<1)) warning("Weights appear to be scaled: rsquared may be wrong") scaling<-1-exp(-minus2ell0/N) r2cs/scaling }survey/R/surveyby.R0000755000176200001440000003776014360122515014042 0ustar liggesusers## ## tables of statistics. ## svyby<-function(formula, by, design,...) UseMethod("svyby",design) unwrap<-function(x,nvartype) UseMethod("unwrap",x) unwrap2<-function(x) UseMethod("unwrap2",x) unwrap2.default <- function(x){ if(!is.null(attr(x, "deff"))) c(statistic = unclass(x), DEff = deff(x)) else c(statistic = unclass(x)) } unwrap2.newsvyquantile <- function(x){ rval<-do.call(rbind,x) rownames(rval)<-names(x) rval } unwrap.default <-function(x,nvartype){ rval<-c(coef(x)) nvar<-length(rval) rval<-c(rval,c(se=SE(x), ci_l=confint(x)[,1], ci_u=confint(x)[,2], cv=cv(x,warn=FALSE), `cv%`=cv(x,warn=FALSE)*100, var=SE(x)^2)[rep((nvartype-1)*(nvar),each=nvar)+(1:nvar)]) if(!is.null(attr(x,"deff"))) rval<-c(rval,DEff=deff(x)) rval } strings_to_factors<-function(formula, design){ allv<-intersect(all.vars(formula), colnames(design)) vclass<-sapply(model.frame(design)[,allv,drop=FALSE], class) if (!any(vclass=="character")) return(design) vfix<-names(vclass)[vclass=="character"] l<-as.list(vfix) names(l)<-vfix fl<-lapply(l, function(li) bquote(factor(.(as.name(li))))) expr<-bquote(update(design, ..(fl)), splice=TRUE) eval(expr) } svyby.default<-function(formula, by, design, FUN,..., deff=FALSE, keep.var=TRUE, keep.names=TRUE, verbose=FALSE, vartype=c("se","ci","ci","cv","cvpct","var"), drop.empty.groups=TRUE, covmat=FALSE, return.replicates=FALSE, na.rm.by=FALSE, na.rm.all=FALSE, stringsAsFactors=TRUE, multicore=getOption("survey.multicore")){ if (inherits(by, "formula")) byfactors<-model.frame(by, model.frame(design), na.action=na.pass) else byfactors<-as.data.frame(by) if(return.replicates){ if (!inherits(design,"svyrep.design")) stop("return.replicates=TRUE not implemented for this design type") } if(stringsAsFactors){ design<-strings_to_factors(formula,design) } if (multicore && !requireNamespace("parallel",quietly=TRUE)) multicore<-FALSE ## some people insist on using vectors rather than formulas ## so I suppose we should be nice to them if (!inherits(formula, "formula")){ if (NROW(formula)!=NROW(byfactors)) stop("'formula' is the wrong length") if (!(is.data.frame(formula) || is.matrix(formula) || is.vector(formula))){ stop("invalid type for 'formula'") } } hasdeff<- is.character(deff) || deff ## all combinations that actually occur in this design byfactor<-do.call("interaction", byfactors) dropped<- weights(design,"sampling")==0 if (na.rm.by) dropped<-dropped | apply(byfactors, 1, function(x) any(is.na(x))) if (na.rm.all){ if (inherits(formula,"formula")) allx<-model.frame(formula,model.frame(design),na.action=na.pass) else allx<-formula dropped <- dropped | (!complete.cases(allx)) } uniquelevels<-sort(unique(byfactor[!dropped])) uniques <- match(uniquelevels, byfactor) if(missing(vartype)) vartype<-"se" vartype<-match.arg(vartype,several.ok=TRUE) nvartype<-base::which(eval(formals(sys.function())$vartype) %in% vartype) if(any(is.na(nvartype))) stop("invalid vartype") if (keep.var){ ## In dire need of refactoring (or rewriting) ## but it seems to work. results<-(if (multicore) parallel::mclapply else lapply)(uniques, function(i){ if(verbose && !multicore) print(as.character(byfactor[i])) if (inherits(formula,"formula")) data<-formula else data<-subset(formula, byfactor %in% byfactor[i]) if (covmat || return.replicates) { FUN(data, design[byfactor %in% byfactor[i],], deff=deff,...,return.replicates=TRUE) } else { FUN(data, design[byfactor %in% byfactor[i],], deff=deff,...) } }) rval<-t(sapply(results, unwrap,nvartype=nvartype)) if ((covmat && inherits(design, "svyrep.design")) || return.replicates) { replicates<-do.call(cbind,lapply(results,"[[","replicates")) attr(replicates,"scale")<-design$scale attr(replicates, "rscales")<-design$rscales attr(replicates, "mse")<-design$mse colnames(replicates)<-rep(as.character(uniquelevels), each=NCOL(replicates)/length(uniquelevels)) covmat.mat<-svrVar(replicates,design$scale,design$rscales, mse=design$mse,coef=as.vector(sapply(results,coef))) } else{ covmats<-lapply(results,vcov) ncovmat<-sum(sapply(covmats,ncol)) covmat.mat<-matrix(0,ncol=ncovmat,nrow=ncovmat) j<-0 for(i in 1:length(covmats)){ ni<-nrow(covmats[[i]]) covmat.mat[j+(1:ni),j+(1:ni)]<-covmats[[i]] j<-j+ni } } } else { rval<-sapply(uniques, function(i) { if(verbose) print(as.character(byfactor[i])) if (inherits(formula,"formula")) data<-formula else data<-subset(formula, byfactor %in% byfactor[i]) unwrap2(FUN(data, design[byfactor %in% byfactor[i],], deff=deff,...))} ) if (is.matrix(rval)) rval<-t(rval) } nr<-NCOL(rval) nstats<-nr/(1+ keep.var*(length(vartype)+ ("ci" %in% vartype)) + hasdeff) if (nr>1) rval<-cbind(byfactors[uniques,,drop=FALSE], rval) else rval <-cbind(byfactors[uniques,,drop=FALSE], statistic=rval) expand.index<-function(index,reps,x=FALSE){ ns<-max(index) if (x){ i<-matrix(1:(ns*reps),ncol=reps) rval<-t(i[index,]) } else{ i<-matrix(1:(ns*reps), ncol=reps, nrow=ns, byrow=TRUE) rval<- i[index,] } as.vector(rval) } if(drop.empty.groups){ if (keep.names) rownames(rval)<-paste(byfactor[uniques]) rval<-rval[order(byfactor[uniques]),] i<-expand.index(order(byfactor[uniques]),nstats) if (keep.var) covmat.mat<-covmat.mat[i,i] } else { a<-do.call("expand.grid", lapply(byfactors,function(f) levels(as.factor(f)))) a<-cbind(a,matrix(NA, ncol=nr, nrow=nrow(a))) names(a)<-names(rval) a[match(byfactor[uniques], levels(byfactor)),]<-rval rval<-a if (keep.names) rownames(rval)<-levels(byfactor) if (keep.var){ tmp<-matrix(ncol=nrow(a)*nstats,nrow=nrow(a)*nstats) i<-expand.index(match(byfactor[uniques], levels(byfactor)),nstats,TRUE) tmp[i,i]<-covmat.mat covmat.mat<-tmp } } attr(rval,"svyby")<-list(margins=1:NCOL(byfactors),nstats=nstats, vars=if(keep.var) length(vartype) else 0, deffs=deff, statistic=deparse(substitute(FUN)), variables= names(rval)[-(1:NCOL(byfactors))][1:nstats], vartype=vartype ) if (!keep.names) rownames(rval)<-1:NROW(rval) if(covmat) attr(rval,"var")<-covmat.mat if (return.replicates) attr(rval,"replicates")<-replicates attr(rval,"call")<-sys.call() class(rval)<-c("svyby","data.frame") rval } SE.svyby <-function(object,...){ aa<-attr(object,"svyby") if (!aa$vars) stop("Object does not contain variances") vartype<-attr(object,"svyby")$vartype vartype <- c("se","ci","ci","cv","cvpct","var")[c("se","ci","ci","cv","cvpct","var") %in% vartype] if (pos<-match("se",vartype,0)) object[,max(aa$margins)+aa$nstats*pos+(1:aa$nstats)] else if (pos<-match("var",vartype,0)) sqrt(object[,max(aa$margins)+aa$nstats*pos+(1:aa$nstats)]) else if (pos<-match("cv",vartype,0)) object[,max(aa$margins)+aa$nstats*pos+(1:aa$nstats)]*coef(object) else if (pos<-match("cvpct",vartype,0)) object[,max(aa$margins)+aa$nstats*pos+(1:aa$nstats)]*coef(object)/100 else stop("This can't happen") } coef.svyby<-function (object, ...) { aa <- attr(object, "svyby") rval <- object[, max(aa$margins) + (1:aa$nstats)] if (is.null(dim(rval))){ names(rval) <- row.names(object) } else { rval<-as.vector(as.matrix(rval)) names(rval)<-outer(rownames(object), gsub("statistics\\.","",aa$variables), paste, sep=":") } rval } deff.svyby<-function(object,...){ aa<-attr(object,"svyby") if (!aa$deffs) stop("object does not have design effect information") object[,max(aa$margins)+aa$nstats*(1+aa$vars)+(1:aa$nstats)] } vcov.svyby<-function(object,...){ rval<-attr(object,"var") if(is.null(rval)){ warning("Only diagonal elements of vcov() available") se<-SE(object) if (is.data.frame(se)) se<-as.vector(as.matrix(se)) if(length(se)>1) rval<-diag(se^2) else rval<-as.matrix(se^2) } nms<-names(coef(object)) dimnames(rval)<-list(nms,nms) rval } ## allows for influence functions. Does not allow for replicates svyby.survey.design2<-function(formula, by, design, FUN,..., deff=FALSE, keep.var=TRUE, keep.names=TRUE, verbose=FALSE, vartype=c("se","ci","ci","cv","cvpct","var"), drop.empty.groups=TRUE, covmat=FALSE, influence=covmat, na.rm.by=FALSE, na.rm.all=FALSE, stringsAsFactors=TRUE, multicore=getOption("survey.multicore")){ if (inherits(by, "formula")) byfactors<-model.frame(by, model.frame(design), na.action=na.pass) else byfactors<-as.data.frame(by) if (stringsAsFactors){ design<-strings_to_factors(formula, design) } if (multicore && !requireNamespace("parallel",quietly=TRUE)) multicore<-FALSE ## some people insist on using vectors rather than formulas ## so I suppose we should be nice to them if (!inherits(formula, "formula")){ if (NROW(formula)!=NROW(byfactors)) stop("'formula' is the wrong length") if (!(is.data.frame(formula) || is.matrix(formula) || is.vector(formula))){ stop("invalid type for 'formula'") } } hasdeff<- is.character(deff) || deff ## all combinations that actually occur in this design byfactor<-do.call("interaction", byfactors) dropped<- weights(design,"sampling")==0 if (na.rm.by) dropped<-dropped | apply(byfactors, 1, function(x) any(is.na(x))) if (na.rm.all){ if (inherits(formula,"formula")) allx<-model.frame(formula,model.frame(design),na.action=na.pass) else allx<-formula dropped <- dropped | (!complete.cases(allx)) } uniquelevels<-sort(unique(byfactor[!dropped])) uniques <- match(uniquelevels, byfactor) if(missing(vartype)) vartype<-"se" vartype<-match.arg(vartype,several.ok=TRUE) nvartype<-base::which(eval(formals(sys.function())$vartype) %in% vartype) if(any(is.na(nvartype))) stop("invalid vartype") if (keep.var){ ## In dire need of refactoring (or rewriting) ## but it seems to work. results<-(if (multicore) parallel::mclapply else lapply)(uniques, function(i){ idx<- byfactor %in% byfactor[i] ##save this for assembling influence functions if(verbose && !multicore) print(as.character(byfactor[i])) if (inherits(formula,"formula")) data<-formula else data<-subset(formula, byfactor %in% byfactor[i]) if (covmat||influence ) { r<-FUN(data, design[byfactor %in% byfactor[i],], deff=deff,...,influence=influence) } else { r<-FUN(data, design[byfactor %in% byfactor[i],], deff=deff,...) } attr(r,"index")<-idx r }) rval<-t(sapply(results, unwrap,nvartype=nvartype)) if (covmat || influence) { ## do the influence function thing here infs<-lapply(results,attr, "influence") idxs<-lapply(results,attr, "index") if (all(sapply(infs,is.null))) stop("FUN does not return influence functions") inflmats<-vector("list",length(infs)) for(i in seq_along(infs)){ inflmats[[i]]<-matrix(0, ncol=NCOL(infs[[i]]),nrow=length(idxs[[i]])) inflmats[[i]][idxs[[i]],]<-infs[[i]] } inflmat<-do.call(cbind,inflmats) covmat.mat<-svyrecvar(inflmat,design$cluster, design$strata, design$fpc, postStrata=design$postStrata) } else{ covmats<-lapply(results,vcov) ncovmat<-sum(sapply(covmats,ncol)) covmat.mat<-matrix(0,ncol=ncovmat,nrow=ncovmat) j<-0 for(i in 1:length(covmats)){ ni<-nrow(covmats[[i]]) covmat.mat[j+(1:ni),j+(1:ni)]<-covmats[[i]] j<-j+ni } } } else { rval<-sapply(uniques, function(i) { if(verbose) print(as.character(byfactor[i])) if (inherits(formula,"formula")) data<-formula else data<-subset(formula, byfactor %in% byfactor[i]) unwrap2(FUN(data, design[byfactor %in% byfactor[i],], deff=deff,...))} ) if (is.matrix(rval)) rval<-t(rval) } nr<-NCOL(rval) nstats<-nr/(1+ keep.var*(length(vartype)+ ("ci" %in% vartype)) + hasdeff) if (nr>1) rval<-cbind(byfactors[uniques,,drop=FALSE], rval) else rval <-cbind(byfactors[uniques,,drop=FALSE], statistic=rval) expand.index<-function(index,reps,x=FALSE){ ns<-max(index) if (x){ i<-matrix(1:(ns*reps),ncol=reps) rval<-t(i[index,]) } else{ i<-matrix(1:(ns*reps), ncol=reps, nrow=ns, byrow=TRUE) rval<- i[index,] } as.vector(rval) } if(drop.empty.groups){ if (keep.names) rownames(rval)<-paste(byfactor[uniques]) rval<-rval[order(byfactor[uniques]),] i<-expand.index(order(byfactor[uniques]),nstats) if (keep.var) covmat.mat<-covmat.mat[i,i] } else { a<-do.call("expand.grid", lapply(byfactors,function(f) levels(as.factor(f)))) a<-cbind(a,matrix(NA, ncol=nr, nrow=nrow(a))) names(a)<-names(rval) a[match(byfactor[uniques], levels(byfactor)),]<-rval rval<-a if (keep.names) rownames(rval)<-levels(byfactor) if (keep.var){ tmp<-matrix(ncol=nrow(a)*nstats,nrow=nrow(a)*nstats) i<-expand.index(match(byfactor[uniques], levels(byfactor)),nstats,TRUE) tmp[i,i]<-covmat.mat covmat.mat<-tmp } } attr(rval,"svyby")<-list(margins=1:NCOL(byfactors),nstats=nstats, vars=if(keep.var) length(vartype) else 0, deffs=deff, statistic=deparse(substitute(FUN)), variables= names(rval)[-(1:NCOL(byfactors))][1:nstats], vartype=vartype ) if (!keep.names) rownames(rval)<-1:NROW(rval) if(covmat) attr(rval,"var")<-covmat.mat if (influence) attr(rval,"influence")<-inflmat attr(rval,"call")<-sys.call() class(rval)<-c("svyby","data.frame") rval } svybys<-function(formula, bys, design, FUN, ...){ tms <- attr(terms(bys),"variables")[-1] lapply(tms, function(tm){ eval(bquote(svyby(.(formula),by=~.(tm), design=.(design), FUN=.(FUN), ...))) }) } survey/R/dAIC.R0000644000176200001440000000654414074123262012705 0ustar liggesusers logLik.svyglm<-function(object,...){ warning("svyglm not fitted by maximum likelihood.") object$deviance/-2 } AIC.svyglm<-function(object,...,k=2,null_has_intercept=TRUE){ if (length(list(...))){ do.call(rbind,lapply(list(object,...),extractAIC,k=k,null_has_intercept=null_has_intercept)) } else { extractAIC(object,k=k,null_has_intercept=null_has_intercept) } } extractAIC.svyglm<-function(fit,scale,k=2,...,null_has_intercept=TRUE){ if(is.svylm(fit)) return(extractAIC_svylm(fit,...)) if (length(attr(terms(fit),"factors"))){ ftest<-delete.response(formula(fit)) if (!null_has_intercept) ftest<-update(ftest,.~.+`1`) r<-regTermTest(fit, ftest, method="LRT") deltabar<-mean(r$lambda) } else { r<-list(lambda=0) deltabar<-NaN } d<-fit$deviance c(eff.p=sum(r$lambda), AIC=d+k*sum(r$lambda),deltabar=deltabar) } extractAIC.svrepglm<-extractAIC.svyglm BIC.svyglm<-function(object,...,maximal){ if (length(list(...))){ do.call(rbind,lapply(list(object,...),dBIC,modelM=maximal)) } else { dBIC(object,modelM=maximal) } } dBIC<-function(modela, modelM){ pm<-modela$rank pM<-modelM$rank if (any(!(names(coef(modela))%in% names(coef(modelM))))){ stop("coefficients in model but not in maximal model") } index<-!(names(coef(modelM))%in% names(coef(modela))) n<-1+modela$df.null if(any(index)){ wald<-coef(modelM)[index]%*%solve(vcov(modelM)[index,index],coef(modelM)[index]) detDelta<-det(solve(modelM$naive.cov[index,index,drop=FALSE],modelM$cov.unscaled[index,index,drop=FALSE])) dbar<-detDelta^(1/(pM-pm)) nstar<-n/dbar }else { wald<-0 detDelta<-1 dbar<-1 nstar=NaN } c(p=pm, BIC=wald+pm*log(n)+log(detDelta)+deviance(modelM),neff=nstar) } extractAIC.svrepcoxph<-function (fit, scale, k = 2, ...) .NotYetImplemented() extractAIC.svycoxph<-function (fit, scale, k = 2, ...) { Delta<-solve(fit$inv.info, fit$var) deltabar <- mean(diag(Delta)) d <- -2*fit$ll[1] c(eff.p = sum(diag(Delta)), AIC = d + k * sum(diag(Delta)), deltabar = deltabar) } AIC.svycoxph<-function (object, ..., k = 2) { if (length(list(...))) { do.call(rbind, lapply(list(object, ...), extractAIC, k = k)) } else { extractAIC(object, k = k) } } ## special-case the Gaussian ## dAIC=-2\max_{\beta,\sigma^2}\log\ell +2p= n\log\mathrm{RSS}-n\log n +n +n\log 2\pi +2p\bar\delta is.svylm<-function(it) {inherits(it,"svyglm") && isTRUE(all.equal(stats::family(it),gaussian()))} extractAIC_svylm<-function(fit,scale,k=2,...,null_has_intercept=TRUE){ sfit <- summary(fit) n<-sfit$df.null Nhat<-sum(w<-fit$prior.weights) sigma2hat<-coef(sfit$dispersion) minus2ellhat<- Nhat*log(sigma2hat) +Nhat +Nhat*log(2*pi) V0<-fit$naive.cov V<-vcov(fit) if (null_has_intercept){ V0<-V0[-1,-1,drop=FALSE] V<-V[-1,-1,drop=FALSE] } ## for mu Delta_mu<-solve(V0,V) ## Now for sigma2 y<-fit$y muhat<-fit$linear.predictors Isigma2<-Nhat/(2*sigma2hat^2) Usigma2<- -1/(2*sigma2hat)+ (y-muhat)^2/(2*sigma2hat^2) Hsigma2<- sum(w*Usigma2^2) Deltasigma2<-Hsigma2/Isigma2 ## combine deltabar<-mean(c(diag(Delta_mu), Deltasigma2)) eff.p<-sum(diag(Delta_mu))+Deltasigma2 aic <- minus2ellhat + k*eff.p c(eff.p=eff.p, AIC=aic,deltabar=deltabar)/sigma2hat } survey/MD50000644000176200001440000003544614424413332012133 0ustar liggesusersad5864c473144609b7cf0f25b5dd0c5b *DESCRIPTION cd81bd2df8011ba15fb4ed0851cbaf42 *INDEX 52a44edcb171d0c3fbf7d2b428bf2381 *NAMESPACE 0681a542278d5ae41797c62ee21bafdc *R/DBI.R 0e9c6348d61a1019a03298cd27577922 *R/anova.svyglm.R 5b81c3cd21b951d535a27679230eeda4 *R/bootstrap.R d04cfe15ddf5203320acac50557c8cdd *R/chisqsum.R b5cffd73326ccfbef1954d2ad032efa0 *R/compressweights.R db32c4f936329e79f2578749c87bcd81 *R/confint.R e4b7519f8c5cad157788d9ff0bebb9b5 *R/count.R 802485eb7241cb5daa3756f95c82346a *R/dAIC.R 87b020bfe7dff04863803840b57ab969 *R/dbiupdate.R c5f1dd01370e4c3d7f3d6d3558ca15ac *R/ftable.svystat.R f061049f41241e8baf7ebddeaa940e0d *R/gofchisq.R e0f78e6f847b7d1cfe589e1eb016a5dc *R/grake.R fc7f59f3476023bbbc977abedd40152d *R/greg.R 8abae944629ac267a54eb76119674a18 *R/ht.R 886e83bb9b283e4c5a3d721d4f0c9daa *R/loglin.R b346412969aca919c164466214c647af *R/logrank.R d16ac882592b056619f33b48dcb97498 *R/margins.R d5974389ea182dc31a4232bd81b3e7c8 *R/mrb.R 9ca0b28566332e9e3d5236293fda88f5 *R/mse.R 1ecb6ca4890a6c95cd5964eb1d0ff7da *R/multistage.R 7b6d54c119096397e472d504308cf749 *R/multivariate.R b476ee2dbcf229d6645099c0746b38d4 *R/naa.R cdd45608d012ea399ac2714c1a1c444b *R/newsvyquantile.R 9edb9bc4caa70ece6d92532244fd9b02 *R/olr.R 8169eb47021665ca2790739b12669641 *R/pFsum.R d7bde53f7898b0ed437962b894c9b798 *R/paley.R 36311851f1e84ace97b8ee12f3351908 *R/pps.R 0e587a24403d3073d79628a3a4af2fc2 *R/qrule.R 9d6bf2b384a489d158a1fedf6835e931 *R/recalibrate.R 49d04f038263b341db26c9f0f47ed533 *R/regtest.R 0ff4c8baea050c34a186be41372162ff *R/rsquared.R a0e254b92d5872704882f2133975012d *R/score.R 254b833eed43c2329c37ee6950ce72b7 *R/stdize.R 14aabec32aa01b0ba0783771cd12a355 *R/stratsample.R 1cb1ccbb9ed1ba1ad77cfa5f5f40f90b *R/survey.R 1e918b6eec91ae5eadbe1e8032529fa1 *R/surveyby.R 08a4082c50cb4566ee59a080ced58870 *R/surveychisq.R 6c14072ca284f40ae34d60a17ac9cc7d *R/surveygraph.R 5b2df6d43bc68e02ae7aa5785739c6ce *R/surveyrep.R 5bc03f84ff7bf31c74e055c9efe00678 *R/svycdf.R faa56ad693b9a8640405d834cd740d0f *R/svycralpha.R c3846a9a7d4cb10c069e57af505863f6 *R/svyhist.R 1a2218180bec03a003e47a28657538ad *R/svyivreg.R f93da4eb3dfce901e24adfef27619f2b *R/svykappa.R eeb8342e956d2c517075bd6f7e40167b *R/svykm.R 7dc1e30d567f3e1fc96d3cd117db451a *R/svymi.R 4a5331ff88f51ab2977fce04a107f546 *R/svynls.R 1db96e2c2908ed667bec1c68405a4c1d *R/svypredmeans.R 2d52fec7c7315546084e7e41ce9231bf *R/svyqq.R 152b532adf8e8c01c9a41df34be39b7b *R/svyquantile.R 28f3f42d5c997f75d10b0aa3a497b88a *R/svyranktest.R 09148c721d7b9fd492e25b82c64dfb75 *R/svysmooth.R fe04da44d7a50f474e3db433e3a982ad *R/svysurvreg.R 1dd7fe1fd68ad44b0b26643483416166 *R/svyttest.R 0df613a991dc676412a3a2368047c830 *R/sysdata.rda 3a2f19a9a7b6e5f206a6f8a5537fb2d4 *R/transform.R b4f972bf22071056d6b97c81fbb06044 *R/twophase.R 3379354392ea811f0cb32ce41ef050a4 *R/twophase2.R 6c069bda823793258fa7630e6c8138ab *R/weightconstruction.R ec9159b6d06e606f8d161c6d46a31c1d *R/withPV.R 13874fa8d08f4d3dc8d61367a0f33f92 *R/xdesign.R 0002ecfea3de5a8e088c059988a06ee7 *THANKS 72b41af2715bc7e0eeacfccb34a1eab0 *TODO 6e2ebf766714ec1806590ae672363ecb *build/vignette.rds ef5f96ecbaed4745ae9cb180def42b21 *data/api.rda a1b18a17128e95093b92418372d5690d *data/crowd.rda 31b8cedf99e0313a9a8c22ecf64db408 *data/election.rda 2de91acce6a210cef4568f8a8bfff08f *data/fpc.rda 276d7cbe90b7940c393f6dd646ba2075 *data/hospital.rda d294d54de9c5e5213d55cd4fccb1c8c7 *data/mu284.rda e5fb5d5c746d7cf09aaefc7999c6a029 *data/myco.rda 099614b1718d29492987f0ead2d2be98 *data/nhanes.rda a5dcffcfe11d0c06fe1549c487ddf724 *data/salamander.rda 0f2fef2f3adca5af6d25dc9ac722a6bf *data/scd.rda cfe9e8eff931a79de20ca63960d10bef *data/yrbs.rda 853b47b0c3796b5a596d02c946f2030f *inst/BUGS 85c5930b7c59934b45f7539d35066748 *inst/CITATION 9dbfcdd76553194b1513751a02042f91 *inst/COPYING 1099feabfb73bfc216e0d13bdf947b70 *inst/NEWS ad0ca60c6d7d1c64ed77618b40c5d1c5 *inst/api.db c17f45ff942d0d826c09c2c97e296249 *inst/disclaimer bd13d234657132da1a44e0a33bcfb456 *inst/doc/domain.R e549b9eba82a7a3db5543ec5be0b0bc6 *inst/doc/domain.Rnw 54bb65c63cb89dcdbd41e820519cead3 *inst/doc/domain.pdf a5142360787a98ec409e10229bbd6f00 *inst/doc/epi.R cf470caff322c36517ae4ac286e420ee *inst/doc/epi.Rnw f83dd307800015d7c792ed059c4cbcc2 *inst/doc/epi.pdf d82d7a650f7a3ed2b846c6280fab38b5 *inst/doc/nwtco-subcohort.rda d102892ef1145ee2e54b13b668714651 *inst/doc/nwts.rda e473dab0d0bdae45394af33e262ce816 *inst/doc/phase1.R 81ed17de82af7ebbec63620560898807 *inst/doc/phase1.pdf d0e73408df9033a260a40660f32e1b02 *inst/doc/pps.R 45d31ccd0e3bcb193a3cbce5c89824e7 *inst/doc/pps.Rnw bfa773a3cce55bc40c9372c2c2280a6d *inst/doc/pps.pdf 30b720c13df60735352742274fbbeb3f *inst/doc/precalibrated.R 25a889bd922911a9a826973969ba4751 *inst/doc/precalibrated.Rnw f16ca2e9449dcab3adcceda7e50b36a1 *inst/doc/precalibrated.pdf c32d6bb7b69fa9ba5f774af64d2f0ef6 *inst/doc/qrule.Rnw 04e80d9abe9f2770e28cfc1b692707c6 *inst/doc/qrule.pdf da0b23328004b9044b0f62f9341945b9 *inst/doc/survey.R dfdd268e5e85cdb9422e11b2c183aa79 *inst/doc/survey.Rnw a9a67978eca83aecbc911374719dc574 *inst/doc/survey.pdf 67fd0dff07ced7069e2ac813865dbf58 *inst/porting.to.S 0caeffbff77347fc2ab06f30534c3f46 *inst/twostage.pdf 4db9100417c9160c9271bd853cd93f86 *inst/ucla-examples.pdf 793d514796f2d79fd31a883ff41af1d3 *man/HR.Rd 234787faa3310c2325952029685b5272 *man/SE.Rd 2fa8a9c3b8c78f5494e15d8bf503df61 *man/anova.svyglm.Rd f15d33e77dbc7c73369831f107a09d43 *man/api.Rd 1df4e44a0124abadc68eeba8da160f7d *man/as.fpc.Rd a3d805b1013bb399a705f13ae2356fff *man/as.svrepdesign.Rd ca07d024bc8ad2920881be3a92416865 *man/as.svydesign2.Rd a2487bc8b605e35fa16fc160f7194055 *man/barplot.svystat.Rd c48b922c011640f2ab6585bf91f6d37f *man/bootweights.Rd b05701bb4ccac840031ff7f887bd55a7 *man/brrweights.Rd aaa020172ef8de6ac25ba2b61072cf03 *man/calibrate.Rd f98c7338d5ed2bf6930eaf66a5f0a1e7 *man/compressWeights.Rd f7aab0d38088617412ac45cdc2cb7588 *man/confint.svyglm.Rd b88cbcc5a0339e24aae8cac15abc6085 *man/crowd.Rd c32bb431ed452b4d1495953197db0427 *man/dimnames.DBIsvydesign.Rd 55e032d442b0447687400e28e4085d29 *man/election.Rd 7b7bec60c38e234bf63817c9f54df4d4 *man/estweights.Rd 61910fd70173387a35a7788b4aaffcb5 *man/fpc.Rd 1fc9004a0c1bb430f025861083e5b379 *man/ftable.svystat.Rd 809a5e046151f44cdc4288915f1be7a5 *man/hadamard.Rd c3f82951b153e67cce171164ccfdc19c *man/hospital.Rd c523dcc5d55b4f182bd406ea48d4e64a *man/make.calfun.Rd 493380df216b5c1b55bbdd05ec4cf22a *man/marginpred.Rd 3798db27ce3e376ea6711eafba258b1d *man/mu284.Rd e3e0fbc9fdd8c266bc6f7a2b8187cc47 *man/myco.Rd c7085a3734f01ba6c00cbb79480ac05d *man/nhanes.Rd 8447ae42f78e376968421ee46543a195 *man/nonresponse.Rd bd43fc6cd74a95f729e8099ee3d66a72 *man/oldsvyquantile.Rd ecb179d38dee1a930f80120be4d02375 *man/open.DBIsvydesign.Rd f5adf6d3a1f713fd087db1f4869f3091 *man/paley.Rd 5261a009c48bd256a64480a197dfc243 *man/pchisqsum.Rd 8abd82034ab612c0a12bfa2681fee4c0 *man/poisson_sampling.Rd e8fa2c17aa1230065ae000fdb0913157 *man/postStratify.Rd 47e775140012c61bde6cca8aaf0dc3d0 *man/psrsq.Rd 6e7610099924ec8ebda3bfc6dcc40015 *man/rake.Rd e7ba254bd22674a7636990ce99cd95b1 *man/regTermTest.Rd 5284116f54e1bb172e72eb163813620c *man/salamander.Rd c38155f62ea15df2c750a0ca1f2cf5ff *man/scd.Rd db845dc8216a7d04e1c224b93f764d5f *man/stratsample.Rd e2d5e837e99c491b1c02c0d135516aa3 *man/subset.survey.design.Rd 4d4f8685de34adf511eca14f1d25bcd1 *man/surveyoptions.Rd e6819c07b429350dcf941ee74f7072da *man/surveysummary.Rd 4c4993863452ec84eeb68d5ef07c7e6f *man/svrVar.Rd 8adc030a5bbb277b4cc88a2084426cfa *man/svrepdesign.Rd 939d043da650a1f44502ba376d12ec3d *man/svy.varcoef.Rd ae19a003c9f60058fa4cb749f23e1c68 *man/svyCprod.Rd 5c26c227b4ed0abc2a1f8b44cb8b4709 *man/svyby.Rd 533fe820a1e613b0c8a395b49af7444b *man/svycdf.Rd 87a0e4250d9cd4afe1fddb47e00da98c *man/svychisq.Rd 4be2574f626a95dc2dab3fa0bfd3e04e *man/svyciprop.Rd 1f7be4e5fd1a49d566f838d43277046c *man/svycontrast.Rd 76f1c76aaf479969dab8528d4958ef74 *man/svycoplot.Rd bd92c8158bb1a87906f6a3209be1a46b *man/svycoxph.Rd d3a668ef39f7c71fdabb476a0099a4ba *man/svycralpha.Rd a515515ae32f7fb2de779c5dbe549db0 *man/svydesign.Rd ce556903b7ec044cdbfccceb75395dfc *man/svyfactanal.Rd 14255d4805d6969a10e701beb501aa54 *man/svyglm.Rd 2c0ade30e854fba2febff7fad554da99 *man/svygofchisq.Rd 23cd1c1aa81a18a5cd728e74ca65ac78 *man/svyhist.Rd dc09806e2748f311d8c32fc8f8cd415e *man/svyivreg.Rd b23c0f61c02476829e9f5850f7da1be9 *man/svykappa.Rd 342cc57dfb19aabc36854c557774739b *man/svykm.Rd 930237e3c9e38a447e00b8390528a4af *man/svyloglin.Rd d45ebee332be3990548bb76794777171 *man/svylogrank.Rd e539db0193ec579f51b2ee927e92bd61 *man/svymle.Rd 87f974343399b3c444fb632353054d9f *man/svynls.Rd 9349af5a4293dfec88b36b03723ae4b8 *man/svyolr.Rd 3b9e8c67b5844eefd79765361bec81d5 *man/svyplot.Rd 44aa5fc0f7128f7f84b32e8fa55f7bc3 *man/svyprcomp.Rd 389375ea77c22206426323da606f51f0 *man/svypredmeans.Rd 35c1c678324addd81f628b0807030bc1 *man/svyqqplot.Rd fa78552adac660a7bf5a7c45017f3f82 *man/svyquantile.Rd 283097212cc64626aec865db87ab8451 *man/svyranktest.Rd 823ef92329cafe1951fd81821a7e2bf7 *man/svyratio.Rd 40e1f8bc28b3aacbb73efa5996b51f5f *man/svyrecvar.Rd 28b8adb800fa559985774702e88b1068 *man/svyscoretest.Rd 671fb4c053614fe861700f3d5f4d804f *man/svysmooth.Rd c3f531ef8116503c4dc314e463552f7c *man/svystandardize.Rd 4f58ed2c680c203fcef35daf14ed5cfc *man/svysurvreg.Rd 7be2a1fa3d8a6de927d78e67d95d048c *man/svyttest.Rd febaed1d0d48a76214b3cc1dbf0f85b9 *man/trimWeights.Rd 91161a15e1718f9141c8e196dd99752f *man/twophase.Rd 235915d70b5a349e96a7962fa40be8cf *man/update.survey.design.Rd 20ee2b3e3a8d1848105f1cee6d57aeab *man/weights.survey.design.Rd 0666e2b9553c96d8dc7420ee54a44ff5 *man/with.svyimputationList.Rd 075d275064dd0be36ad5414fd844e79c *man/withPV.survey.design.Rd 268d8dd131876cfee17c3d97768e6a1e *man/withReplicates.Rd 6ee7f8912708af0675eaadec01449f72 *man/xdesign.Rd 5b0595a3cca870575fd298e5645aa084 *man/yrbs.Rd 6cc4d0329eb80714fee45788490212d6 *tests/3stage2phase.R c91c9d0dd78c264236d5aeadbe6de4aa *tests/DBIcheck.R 98b1c028f1e33ac01b662fb56eaf0a35 *tests/README 1a1a86949b851430871e465a28511f90 *tests/anova-svycoxph.R 527e5ba782684ca6a459d09a52e4bb4b *tests/api.R eba420580d5712b2bdbee74f844e2c9e *tests/badcal.R fca32d6127f578fe7cacf6957c9bcb06 *tests/badcal.Rout.save 02afc0b2619b18dbd3fd4c11f7afbac2 *tests/bycovmat.R 7178e6025a01c697c3d122898e573698 *tests/caleg.R bb39e18b97ab5f91094f9ceb71d992f5 *tests/check.R d4e620440333904b7e057ee26984fe12 *tests/check.Rout.save 116d5b9f18d84486d0169c858dec06d8 *tests/cigsw.rda cb77bb97492e653965018032b217cbb9 *tests/contrast-replicates.R e81abd8a9fb22680fa8975667237694f *tests/coxph-termtest.R d59c6e9ef79624cc1c29fe9a2fa409fc *tests/datos_ejemplo.rds 9afd1c4ef859ba69520afe4825a3b1e2 *tests/deff.R 1c28ba9df80a9d65aee6d49bb767148d *tests/deff.Rout.save 56ecbd4b088346c57c3cef3f10ef4d17 *tests/defftest.R 430cd5207b02ef92d2d5a75e1bdf9074 *tests/domain.R 62c918ff711bd24cfa3d860df5556513 *tests/domain.Rout.save 85b0201ab5b022cf0e51b6badfc5c07b *tests/fpc.R dc7f9da8098092ee549185d738d9399e *tests/glm-scoping.R 32174d2a986af7276bdb7daa62670c77 *tests/kalton.R 9b30594ac4527d0ece5bab043f6c06f1 *tests/kalton.Rout.save 4b9b3cff84916f06f5e07207d610778a *tests/logranktest.R 3ab5b5b8d2fa053b62832df2585db7ee *tests/lonely.psu.R 0add96a76dd1182564771813281109f8 *tests/lonely.psu.Rout.save f1344d65b114f7183f2372f2aedd0ed7 *tests/mtcars-var.R 5c88d425cfb80a6b350763acff6c2b92 *tests/multistage.R 5acfa941d494a5c97288681e5406f7f1 *tests/na_action.R 6ce50050d55305eec749578f5f3a7c9f *tests/naa.rda 4a5af33260200b9e0b11e9bf4c50948a *tests/newquantile.R d82d7a650f7a3ed2b846c6280fab38b5 *tests/nwtco-subcohort.rda 9f37aa87c54f9e9585f6ed839da38a75 *tests/nwts-cch.R e7866681f0a2aa1487345e96e77fe49a *tests/nwts.R faf21da4f9469c0fd3ee743ee611a004 *tests/nwts.Rout.save f78a9ca2f7d82b635a9ac83c84f22721 *tests/nwts.rda 4cc42f37fa2cd358d0483f7e2e0b4b02 *tests/poisson.R 1f2c987cef798c0d6c8635a5be720c24 *tests/pps.R 8f57b338973720a043c3cc281a857337 *tests/quantile.R f16c0fe601c071e6ce51d25d14f6c5b1 *tests/quantile.Rout.save f80c37f905322aef5fa769353f0fac26 *tests/quantiles-chile.R bb6b47311c28af44e4386146bbb766cd *tests/rakecheck.R 227b1e5214e1f36393633ed5b926a154 *tests/rakecheck.Rout.save 23d3f3e5924ebac663762223b9073dc5 *tests/raowuboot.R 597d97f91f48834e3567ce60d55a56a3 *tests/raowuboot.Rout.save 462a7f4dfda5426594667867a7007edf *tests/regTermTest-missing.R 73d743b02cde34dea66b7a5a1e358a69 *tests/regpredict.R 17f986ce4a44a05026529890440f7e9e *tests/regpredict.Rout.save 5cec209951a03d5d5a81af1347ede8bd *tests/rss_scores.R 08e7b85dd0996a1afa68e8dfcb698a4d *tests/scoping.R 1e41f32fae86cbcd05262014cf6b75be *tests/simdata1.RData ce54c4edad7a3b9fd9c8aa995473a794 *tests/survcurve.R 3cb8a60c150867bbd537a9c0a2493f6d *tests/survcurve.Rout.save 3abe6234111e6b1270315ca3e6b4c271 *tests/svyby-strings.R 62bec47e231e8cab763e4f93a59c4771 *tests/svyby_bug.R 9f446168f9169ccffbe532fac1b42f09 *tests/svyby_se.R f0fa0a734c2764df5ae5af21cefb7260 *tests/svycontrast.R 2692edc4b1204fef6a4d46f428a3128f *tests/svyivreg-var.R 4071d97f56b9bb4f4caaad8fa90bed37 *tests/svyivreg.R 607b2dd253517df1d1553668aabf09df *tests/svyolr-rake-subset.R e65670f0c8e89b395faea9f8b8542543 *tests/svyolr.R 6bfd2cf7e1f355399615485d29f1618e *tests/testoutput/DBIcheck.R 86298835a37161ff56ec400a23525520 *tests/testoutput/DBIcheck.Rout.save 30aa47b8b87de939651aa5c13ba75f20 *tests/testoutput/README 527e5ba782684ca6a459d09a52e4bb4b *tests/testoutput/api.R 3ad53ef34903baaea1aabc5d8f4cd0f9 *tests/testoutput/api.Rout.saved 02afc0b2619b18dbd3fd4c11f7afbac2 *tests/testoutput/bycovmat.R 0d4380b36115f8543b2476ddac923676 *tests/testoutput/bycovmat.Rout.save 7178e6025a01c697c3d122898e573698 *tests/testoutput/caleg.R f920f94f18bee3ea62772d8d7fc1abf3 *tests/testoutput/caleg.Rout.save 85b0201ab5b022cf0e51b6badfc5c07b *tests/testoutput/fpc.R a9f2ac6a2481cb8100a634703fe5c0d1 *tests/testoutput/fpc.Rout.save 5c88d425cfb80a6b350763acff6c2b92 *tests/testoutput/multistage.R 188777251024d61793ab0fb393cc175c *tests/testoutput/multistage.Rout.save d82d7a650f7a3ed2b846c6280fab38b5 *tests/testoutput/nwtco-subcohort.rda 9f37aa87c54f9e9585f6ed839da38a75 *tests/testoutput/nwts-cch.R 18298f29aee3995d9e480d5058a09ca1 *tests/testoutput/nwts-cch.Rout.save f78a9ca2f7d82b635a9ac83c84f22721 *tests/testoutput/nwts.rda 1f2c987cef798c0d6c8635a5be720c24 *tests/testoutput/pps.R 73e8268a284580d4d32ff928262a88c8 *tests/testoutput/pps.Rout.save 2eed0529f30f190d41b24eaf0b1baa0c *tests/testoutput/quantile-new.R 5d59b70021116564a5e36bd26bf60ebb *tests/testoutput/quantile-new.Rout.save 08e7b85dd0996a1afa68e8dfcb698a4d *tests/testoutput/scoping.R c21c1abba50dae13b4eb2d4738f20461 *tests/testoutput/scoping.Rout.save b4b8f63f5d0e2b82607e611cf285d3d7 *tests/toy_example_for_postStratify.R 1f37c63d5a85505ced4815f455bc8dff *tests/twophase.R 6ddaf77afeb8a75a54f26be6154cc3b2 *tests/twophase.Rout.save e549b9eba82a7a3db5543ec5be0b0bc6 *vignettes/domain.Rnw cf470caff322c36517ae4ac286e420ee *vignettes/epi.Rnw 45d31ccd0e3bcb193a3cbce5c89824e7 *vignettes/pps.Rnw 25a889bd922911a9a826973969ba4751 *vignettes/precalibrated.Rnw c32d6bb7b69fa9ba5f774af64d2f0ef6 *vignettes/qrule.Rnw dfdd268e5e85cdb9422e11b2c183aa79 *vignettes/survey.Rnw survey/INDEX0000755000176200001440000001034214166647050012415 0ustar liggesuserssvydesign Specify a survey design twophase Specify two-phase designs svrepdesign Specify replication-weight designs as.svrepdesign Compute replication weights for a design svydesign.imputationList Designs for multiply-imputed data. subset.survey.design Subset of survey update.survey.design Add variables to a survey design postStratify Post-stratify a survey design rake Rake a survey design calibrate Calibration and generalised raking estWeight Estimated weights for two-phase designs trimWeights Trim sampling weights. ----- svyplot Survey-weighted graphics svycoplot Conditioning plots for survey data svyqqplot Quantile-quantile plots for survey data svyhist Survey-weighted histogram svysmooth Smoothers and density estimates svycdf Cumulative distribution functions svykm Survival curves svyboxplot Survey-weighted boxplots svyby Tables of statistics ftable.svystat Formatted tables of statistics ftable.svrepstat ftable.svyby cv extract coefficient of variation SE extract standard error deff extract design effect confint extract confidence intervals svycontrast linear combinations of estimates ----- svycoxph Survey-weighted Cox models svyglm Survey-weighted generalised linear models. svyolr Ordinal logistic regression svysurvreg Accelerated failure models regTermTest Test sets of terms in a regression model svyloglin Loglinear models svyquantile Summary statistics for sample surveys svytotal svymean svyvar svyratio svytable Contingency tables svychisq Tests for two-way tables svyttest Design-based t-test svyranktest Design-based two-sample rank tests svylogrank Design-based logrank tests svystandardize Direct standardisation svykappa Cohen's kappa for inter-rater agreement svycralpha Cronbach's alpha svyivreg Two-stage least-squares for instrumental variables svymle Maximum pseudolikelihood estimation in complex surveys svynls Design-weighted nonlinear least squares svyprcomp Principal component analysis and biplots svyfactanal Weighted maximum likelihood factor analysis ----- withReplicates Replicate variances for arbitrary statistics ---- hadamard Hadamard matrices is.hadamard paley Paley-type Hadamard matrices ---- stratsample Take a stratified sample ---- Utility functions: make.calfun Define calibration metrics cal.linear cal.raking cal.logit *svy.varcoef Sandwich variance estimator for glms *svyCprod Computations for survey variances *svyrecvar Computations for multistage samples *svrVar Computations for replication variances jk1weights create replication weights jknweights create replication weights bootweights create replication weights brrweights create replication weights mrbweights create replication weights grake Computations for generalised raking *regcalibrate Computations for regression calibration degf Degrees of freedom for replication weights *twophasevar Variances in two-phase designs as.svydesign2 Convert a old svydesign object to the new format. * not exported from NAMESPACE ----- Data: election US election data fpc Small artificial example scd Cardiac arrests example api California Academic Performance Index crowd Small example from VPLX manual mu284 Two-stage sample from MU284 population myco Stratified case-control sample: BCG and leprosy nhanes Subset of NHANES 2009-10 yrbs One variable from Youth Risk Behavior Survey survey/inst/0000755000176200001440000000000014423575767012610 5ustar liggesuserssurvey/inst/api.db0000644000176200001440000042600011457435607013662 0ustar liggesusersSQLite format 3@ F}xsnid_ZUPKFA< 7 2 - ( #  rD*r5*)+33541688746043491EBrisbane ElemenBrisbane Elementary\Brisbane ElementarySSan Mateo(bYesYesYesYesNob:@ d@23)*)''3441688746043509MLipman MiddleLipman Middle]Brisbane ElementarySSan Mateo(dNoNoNoNo No`#@=pR@231*)+33341688746043517EPanorama ElemenPanorama Elementary^Brisbane ElementarySSan Mateo(bXxNoNoNoNo!No O @33@d@237*)+/=255751846054837ETenaya ElementaTenaya Elementary[Big Oak Flat-Grvlnd Unif?Tuolumne6d7YesYesYesYes+No "b!%@Qd8@219*)+A5131667796031017EAlta-Dutch FlatAlta-Dutch Flat Elementary Alta-Dutch Flat ElemPlacerd5$YesYesYesYesNoY5@\ dx@21 xCx *)##)1006615980631259HColusa HighColusa High\Colusa UnifiedColusa`OI NoNoNoNo*No^@QdL/@23/ *)+/7920651936023907MWilson ElementaWilson Elementary Chowchilla ElementaryMaderad8M NoNoNoNoD"No[? ?GK@235*)+37820651936023931EFairmead ElemenFairmead Elementary Chowchilla ElementaryMaderadYesYesYesYesL"No . @\)V@23=*)+E7720651936023881EFuller (Merle LFuller (Merle L.) Elementary Chowchilla ElementaryMaderad(YesYesYesYesN&No d0 ?Q`@23:*)+11+640687266042998ECayucos ElementCayucos Elementary3Cayucos ElementaryuSan Luis Obispo'd+  YesYesYesYesNo] %@ z@^@21 OI O:*)+?=1537680566110696ECarmel Del Mar Carmel Del Mar ElementaryDel Mar Union ElementarySan Diego$diYesYesYesYesNoddd@24@*)+==1437680566088983EDel Mar Hills EDel Mar Hills ElementaryDel Mar Union ElementarySan Diego$czxYesYesYesYesNoc*)@\ dj.@24? *)+;=1337680566115620EAshley Falls ElAshley Falls ElementaryDel Mar Union ElementarySan Diego$dYesYesYesYesNoZ3,@d@245 *)+?)1206615986057152MEgling (George Egling (George T.) Middle^Colusa UnifiedColusaddG YesYesYesYes6NoX@Qa@234 *)+G)1106615986003495EBurchfield (JamBurchfield (James M.) Primary]Colusa UnifiedColusab * NoNoNoNo?*No] @=pd@23 W<W;*)+=3#2019644776108294MCole (Gifford CCole (Gifford C.) MiddleEastside Union ElemLos AngelescH9 YesNoNoNo5NoI$@\ ^ @248*)+33#1919644776012967EEastside ElemenEastside ElementaryEastside Union ElemLos AngelesF!AYesYesYesNoENob"@z@Y @24A*)+I3#1819644776114227ETierra Bonita STierra Bonita South ElementaryEastside Union ElemLos Angelesd9 YesNoNoNo;No^d@zR@24%*)##;1715634121531672HDelano HighDelano HighDelano Joint Union HighKerncNoNoNoNo/%NoJ2?\)D@21A*)+A=1637680566038111EDel Mar HeightsDel Mar Heights ElementaryDel Mar Union ElementarySan Diego$cYesYesYesNoNoQ*-@ =d^@24 G: GB*)+G52513631236008460EHedrick (MargarHedrick (Margaret) ElementaryHEl Centro ElementaryImperial aYesYesYesYes`No Q/@ `dx@@DGz117*)+152413631236008437EHarding ElementHarding ElementaryEEl Centro ElementaryImperial dngYesYesYesYes`8No!=@\)da@DGz116*)+152313631236008494MWilson Junior HWilson Junior HighKEl Centro ElementaryImperial db= %YesYesYesYes:+NoX  @z_ B@DGz118*)+352213631236008478EMcKinley ElemenMcKinley ElementaryIEl Centro ElementaryImperial bn^YesYesYesYes^BNo d"@G ]m3@DGz11C*)+I3#2119644776106421ETierra Bonita NTierra Bonita North ElementaryEastside Union ElemLos AngelesdY 9YesYesYesYes7NoY%@\)S7@24 mF!m1*)+713049753906109250EFoss Creek ElemFoss Creek Elementary]Healdsburg Unified'Sonoma0cNoNoNoNo Nod @\)d@25?*)+O32949707064932109HGeyserville EduGeyserville Educational Park HighGeyserville UnifiedSonoma0d|q YesYesYesYes#No` @pdpg@21**)+112815634616009492EFairfax ElementFairfax ElementaryFairfax ElementaryKern )YesNoNoNoVNo_.& ?K@223*)+A12715634616009500EVirginia AvenueVirginia Avenue ElementaryFairfax ElementaryKernAYesYesYesNoU%Noa;?p^@227*)+152613631236008411EDe Anza ElementDe Anza ElementaryCEl Centro ElementaryImperial cd* :YesYesYesYesa4No!M# @`@DGz11 fS(f?#*)+?93541689086043673ENorth HillsboroNorth Hillsborough (Elem)iHillsborough City Elem.San Mateo(dYesYesYesYesNo dB@pd@245"*)+713449753906051791EHealdsburg ElemHealdsburg Elementary[Healdsburg Unified'Sonoma0c YesYesYesYes&Nod @ @d*@258!*)+?13349753906051783EFitch Mountain Fitch Mountain ElementaryZHealdsburg Unified'Sonoma0_feYesYesYesYes1+Noc @(`@255 *)+913249753906060222MHealdsburg JuniHealdsburg Junior High\Healdsburg Unified'Sonoma0cYesYesYesYesNo J @z@dx@25**)++13149753904932554HHealdsburg HighHealdsburg HighYHealdsburg Unified'Sonoma0`NoNoNoNo No 4 @``@25 G>}G=(*)+;5#4043695266047526EDaves Avenue ElDaves Avenue ElementaryLos Gatos Union ElemSanta Clara*cyV#YesYesYesYesNo _2@zd\@25='*)+;5#3943695266047518EBlossom Hill ElBlossom Hill ElementaryLos Gatos Union ElemSanta Clara*di&YesYesYesYesNo W7@G ^Q@253&*)))93841689086043707MCrocker MiddleCrocker MiddlelHillsborough City Elem.San Mateo(d{ YesYesYesYesNoc=@ =a@24>%*)+=93741689086043699EWest HillsborouWest Hillsborough (Elem)kHillsborough City Elem.San Mateo(dYesYesYesYesNo_=@``@24?$*)+?93641689086043681ESouth HillsboroSouth Hillsborough (Elem)jHillsborough City Elem.San Mateo(dYesYesYesYesNo dB@\)d@24 g<yg%-*)+/)4515636776009807EMojave ElementaMojave ElementaryMojave UnifiedKern*_YesYesYesNoRNodA ?33@dq@24,,*)+9)4415636776111272MCalifornia CityCalifornia City MiddleMojave UnifiedKernb *YesYesYesNo-No ] $@z@SP@248+*)+55#4343695266047534ELexington ElemeLexington ElementaryLos Gatos Union ElemSanta Clara*dJIYesYesYesYesNo `)@ \ dqe@25@**)+A5#4243695266047567MFisher (RaymondFisher (Raymond J.) MiddleLos Gatos Union ElemSanta Clara*d]LYesYesYesYesNodc )@z@^n@25A)*)+C5#4143695266047542ELouise Van MeteLouise Van Meter ElementaryLos Gatos Union ElemSanta Clara*cjRYesYesYesYesNo Q/"@ff`dj3@25 u\3u;2*)+?+!5034752836100432EAmerican Lakes American Lakes Elementary)Natomas UnifiedSacramento!d\ *YesYesYesYes:Yesa!%@Gd@2581*)+;+!4934752836107981EBannon Creek ElBannon Creek Elementary+Natomas UnifiedSacramento!a7YesYesYesYes4Noc$ @ `a r@2570*)+334847704176050876EMontague ElemenMontague ElementaryMontague ElementarySiskiyou.d_ GYesYesYesYes@NoO-@zd@211/*)+G)4715636776009823EUlrich (Robert Ulrich (Robert P.) ElementaryMojave UnifiedKernY< YesNoNoNo4No ` 3 @Y@24!.*)'')4615636776009799MJoshua MiddleJoshua MiddleMojave UnifiedKern)>YesYesYesNoENo^2@`C@24 G2&7*)''35504615150435602HOroville HighOroville HighAOroville Union High Butte^6; NoNoNoNo' No_@z@b@22.6*)++35404615150434803HLas Plumas HighLas Plumas High@Oroville Union High Butte`nN YesYesYesYes& NoZ@^;@2255*)+5+!5334752836104731EJefferson ElemeJefferson Elementary*Natomas UnifiedSacramento!dQ aYesYesYesYes/Noc   @ a@25)4*)%%+!5234752833430584HNatomas HighNatomas High'Natomas UnifiedSacramento!awF 1YesYesYesYesNoT#@ =SW{@2563*)+=+!5134752836033328MGreene (Leroy FGreene (Leroy F.) Middle(Natomas UnifiedSacramento!av YesNoNoNo#Nob @\)M e @25 aC"a><*)+C16033671816032478EWhite (MargaretWhite (Margaret) Elementary Palo Verde UnifiedRiverside dmC *YesYesYesYes2No`= @\ VoE@25=;*)+G15933671816032460EAppleby (Felix Appleby (Felix J.) Elementary Palo Verde UnifiedRiverside d YesNoNoNoRNo`#+? =Vv@25-:*)++15833671813335759HPalo Verde HighPalo Verde High Palo Verde UnifiedRiverside b# NoNoNoNo'NoY@`Lg@25.9*)''15733671816061782MBlythe MiddleBlythe Middle Palo Verde UnifiedRiverside dTH YesYesYesYes5NoZ%@=pX @25:8*)+;15633671816032494EBrown (Ruth) ElBrown (Ruth) Elementary Palo Verde UnifiedRiverside dgP YesYesYesYes= Noa/ @QW J@25 uP.u6A*)+376501612756002307EWildwood ElemenWildwood ElementaryPiedmont City Unified%Alamedadm#YesYesYesYesNod !7@\ d@253@*)+-76401612756002281EBeach ElementarBeach ElementaryPiedmont City Unified%Alamedad1YesYesYesYesNo`A@=pZ@252?*)++76301612756066492MPiedmont MiddlePiedmont MiddlePiedmont City Unified%AlamedadYesYesYesYesNo`E@\ ^~@254>*)+/76201612756002299EHavens ElementaHavens ElementaryPiedmont City Unified%AlamedadYesYesYesYesNo_%>@\)dH.@25-=*)''76101612750136515HPiedmont HighPiedmont HighPiedmont City Unified%AlamedacYesYesYesYesNo^D@\)\@25 |K0|1F*)+3)#7019649071933175HGanesha Senior Ganesha Senior HighPomona Unified:Los AngelesbNoYesNoNoN7No ^@ ?QU`@aQ36+E*))))#6919649076058507MEmerson MiddleEmerson MiddlePomona Unified:Los Angeles` NoNoNoNoN&No K"! @ =Iyz@aQ36/D*)+1)#6819649071995901HDiamond Ranch HDiamond Ranch HighPomona Unified:Los AngelescNoNoNoNo No Y& @ Q8(@aQ368C*)+1?6716639906010557EPioneer ElementPioneer Elementary)Pioneer Union Elem (Char)(Kingsd#OYesYesYesYesNoc$@ _Z@222B*)))?6616639906110233MPioneer MiddlePioneer Middle*Pioneer Union Elem (Char)(KingsdYesYesYesYesNo d !@ GQW,@22 OC O7K*)+?'7537682966110886EHighland Ranch Highland Ranch Elementary^Poway Unified?San Diego$caZYesYesYesYesNod*$@\)d@Z~Q280J*)+/'7437682966039010EValley ElementaValley ElementaryMPoway Unified?San Diego$d.YesYesYesYes" No c% @d@Z~Q28MI*)+U;7323738666025241EPotter Valley EPotter Valley Elementary/Junior High ]Potter Valley Community>MendocinodYesYesYesYes)No ^   @ `d@214H*)+/)#7219649076113500EPueblo ElementaPueblo ElementaryPomona Unified:Los AngelesdYesYesYesYes]@Yes&?,?ff`='(@aQ36:G*)+;)#7119649076021935EPhiladelphia ElPhiladelphia ElementaryPomona Unified:Los Angelesc!"YesYesYesYesX3Yes[2?`JHp@aQ36 ]D]8P*)+1=8049708966085229EBinkley ElementBinkley Elementary Rincon Valley Union ElemTSonoma0d5SYesYesYesYesNoL& @ @_@:~Q7=O*)+;=7949708966052062ESpring Creek ElSpring Creek ElementaryRincon Valley Union ElemTSonoma0d2DYesYesYesYesNo `(  @ @d@:~Q73N*)+7'7837682966093223MBlack Mountain Black Mountain MiddleRPoway Unified?San Diego$cH2YesYesYesYesNo c)@Gd_@Z~Q283M*)+7'7737682966109326ETurtleback ElemTurtleback Elementary\Poway Unified?San Diego$cHAYesYesYesYes Noc&@33@dG@Z~Q289L*)+A'7637682966070841ELos PenasquitosLos Penasquitos ElementaryNPoway Unified?San Diego$c($YesYesYesYes%No _%@ =d`@Z~Q28 =E=GU*)+G;!8534674396034300EJefferson (ThomJefferson (Thomas) ElementarySacramento City UnifiedlSacramento!d' YesYesYesYes7No" I& @ \ d @qQ72=T*)+3;!8434674396034334EWoodbine ElemenWoodbine ElementarySacramento City UnifiedlSacramento!dD +YesYesYesYesd5No!-& @z@d @qQ72AS*)+C=8349708966052047EWhited (DouglasWhited (Douglas) ElementaryRincon Valley Union ElemTSonoma0c83YesYesYesYesNoN@ =pd0@:~Q77R*)+1=8249708966052054ESequoia ElementSequoia ElementaryRincon Valley Union ElemTSonoma0d|dYesYesYesYesNo W #@d|O@:~Q78Q*)+1=8149708966052070EVillage ElementVillage ElementaryRincon Valley Union ElemTSonoma0bdEYesYesYesYes Nod)@ @d@:~Q7 ZD} Z.Z*)+-39001613090137810HSan Lorenzo HigSan Lorenzo HighSan Lorenzo Unified~Alameda]" NoNoNoNo No (@€Z 5@J~Q145Y*)+138901613096002554EDel Rey ElementDel Rey ElementarySan Lorenzo Unified~AlamedadH 9YesYesYesYesNoE' @€aj@J~Q147X*)+-;!8834674396034110EMaple ElementarMaple ElementarySacramento City UnifiedlSacramento!d'YesNoNoNoc7No!'@d@qQ72DW*)+A;!8734674396034060ESloat (John D.)Sloat (John D.) ElementarySacramento City UnifiedlSacramento!`0YesYesYesYesb3No @@33@d@qQ729V*)+3;!8634674396059307MBacon (Fern) MiBacon (Fern) MiddleSacramento City UnifiedlSacramento!b% NoNoNoNoU.No7@`d9@qQ72 l_5lF_*)+G;!9544698076049852ESan Lorenzo ValSan Lorenzo Valley ElementaryhSan Lorenzo Valley UnifSanta Cruz+cYesYesYesYesNoJ )@ =`f<@:~Q77^*)+1;!9444698076109946ERedwood ElementRedwood ElementaryjSan Lorenzo Valley UnifSanta Cruz+cNoNoNoNoNoT ) @ pd"@:~Q72]*)+339301613096002620EHillside ElemenHillside ElementarySan Lorenzo Unified~AlamedadNoNoNoNo9!No#M@\ I@J~Q148\*)+?39201613096002521EColonial Acres Colonial Acres ElementarySan Lorenzo Unified~Alamedad" NoNoNoNo4!No @paK@J~Q14[*)##39101613090130849HArroyo HighArroyo HighSan Lorenzo Unified~AlamedabNoNoNoNo No G#Y @J~Q14 ?<y?9d*)+7710049709386052237EPine Crest ElemPine Crest Elementary9Sebastopol Union ElemSonoma0c YesYesYesYesNo Z @ =dN@229c*)+979949709386052211MBrook Haven EleBrook Haven Elementary8Sebastopol Union ElemSonoma0d YesYesYesYesNo _ "@ €ds@22?b*)+;;!9844698074436754HSan Lorenzo ValSan Lorenzo Valley HigheSan Lorenzo Valley UnifSanta Cruz+a YesYesYesYes No[ ,@ €\<@:~Q7@a*)+;;!9744698076049845EQuail Hollow ElQuail Hollow ElementarygSan Lorenzo Valley UnifSanta Cruz+cYesYesYesYesNo Z#!@ G dT@:~Q7A`*)+=;!9644698076049837EBoulder Creek EBoulder Creek ElementaryfSan Lorenzo Valley UnifSanta Cruz+dYesYesYesYesNo H &# @ d\5@:~Q7 SF7i*)++?10546701776089650MLoyalton MiddleLoyalton MiddleSierra-Plumas Jt. UnifiedSierra-bYesYesYesYesNo5^(@\ X @232h*)+3110441690624133716HMenlo-Atherton Menlo-Atherton HighSequoia Union HighSan Mateo(`sNoNoNoNoNoQ @ `^/@24*g*)''110341690624138053HWoodside HighWoodside HighSequoia Union HighSan Mateo(``h NoNoNoNoNo V@ff`]@24(f*)%%110241690624136693HSequoia HighSequoia HighSequoia Union HighSan Mateo(\+0 NoNoNoNo$No ]"@^_@24*e*)''110141690624130993HCarlmont HighCarlmont HighSequoia Union HighSan Mateo(_wq NoNoNoNo No Z#@ V+6@24 lL&l7n*)+1511027662256115182MBuena Vista MidBuena Vista Middle Spreckels Union ElemMonterey`YesYesYesYes No^#@ €^6@229m*)+5510912630326008163EPine Hill ElemePine Hill Elementary!South Bay ElementaryHumboldt d/YesYesYesYes:Nod' @33@d@228l*)+5510812630326008171ESouth Bay ElemeSouth Bay Elementary"South Bay ElementaryHumboldt d"YesYesYesYesBNob@`d~@22,k*)''?10746701774634259HLoyalton HighLoyalton HighSierra-Plumas Jt. UnifiedSierra-dNoNoNoNoNo V&@ \}p@231j*)+3?10646701776050629ELoyalton ElemenLoyalton ElementarySierra-Plumas Jt. UnifiedSierra-c YesNoNoNo(No 7' d@23 PD P9s*)++;!11550712906053094MSomerset MiddleSomerset MiddleSylvan Union ElementaryStanislaus1cYesYesYesYesNo [!# @ €^v@AQ9:r*)+3;!11450712906053086ESherwood ElemenSherwood ElementarySylvan Union ElementaryStanislaus1d*YesNoNoNo&No` @(] ;@AQ9Gq*)+E;!11350712906095517ECoffee (StockarCoffee (Stockard) ElementarySylvan Union ElementaryStanislaus1dMYesYesYesYesYesZ  @33@d@AQ9.p*)++711254721655434931HStrathmore HighStrathmore HighStrathmore Union HighTulare5cNoNoNoNo, NoR, @V*@219o*)+5511127662256026694ESpreckels ElemeSpreckels Elementary Spreckels Union ElemMontereya)YesYesYesYes No ^@ @ag@22 ?9~?Fx*)+E9#12019650786023345MShively (Dean LShively (Dean L.) Elementary DValle Lindo ElementaryLos AngelesdZ! 9YesYesYesYesKNo D @`8,)@227w*)+/9#11919650786023337ENew Temple (EleNew Temple (Elem) CValle Lindo ElementaryLos AngelesclD (YesNoNoNoJ!NoQ%!@33@N@229v*)+;;11854722076054423EThree Rivers ElThree Rivers Elementary Three Rivers Union ElemTulare5dNoNoNoNoNo [ $#@ z@R @218u*)+/;!11750712906053110ESylvan ElementaSylvan ElementarySylvan Union ElementaryStanislaus1crNoNoNoNo4 Yes^ 0@ a'@AQ9Dt*)+?;!11650712906111017MUstach (ElizabeUstach (Elizabeth) MiddleSylvan Union ElementaryStanislaus1c"YesYesYesYesYesZ" @G[ @AQ9 .9s.=}*)+1;%12507618126005185EMurwood ElementMurwood ElementaryWalnut Creek Elementary Contra Costac]XYesYesYesYes No `#'@ d@6\(6A|*)+9;%12407618126005169EBuena Vista EleBuena Vista ElementaryWalnut Creek Elementary Contra CostadSBYesYesYesYesNoc "@ z@d?@6\(6>{*)+3;%12307618126005193EParkmead ElemenParkmead ElementaryWalnut Creek Elementary Contra Costade[ YesYesYesYesNo d($@ =`_G@6\(6Cz*)+=;%12207618126005177EIndian Valley EIndian Valley ElementaryWalnut Creek Elementary Contra CostadLEYesYesYesYesNod&@d@6\(6Dy*)+?;%12107618126005243EWalnut Heights Walnut Heights ElementaryWalnut Creek Elementary Contra Costadv YesYesYesYesNo^ -@`d @6\(6 GG6~*)++712647704826050942EWeed ElementaryWeed ElementaryWeed Union ElementarySiskiyou.cg &YesYesYesYes>No!0V & @(dM @21$AD}wqke_YSMGAC4B/A*@%? >=<; :98}7x6s5n4i3d2_1Z0U/P.K-F,A+<*7)2(-'(&#%$#"!  PP--tableapiclus2apiclus2CREATE TABLE apiclus2 ( row_names TEXT, cds TEXT, stype TEXT, name TEXT, sname TEXT, snum REAL, dname TEXT, dnum INTEGER, cname TEXT, cnum INTEGER, flag INTEGER, pcttest INTEGER, api00 INTEGER, api99 INTEGER, target INTEGER, growth INTEGER, sch_wide TEXT, comp_imp TEXT, both TEXT, awards TEXT, meals INTEGER, ell INTEGER, yr_rnd TEXT, mobility INTEGER, acs_k3 INTEGER, acs_46 INTEGER, acs_core INTEGER, pct_resp INTEGER, not_hsg INTEGER, hsg INTEGER, some_col INTEGER, col_grad INTEGER, grad_sch INTEGER, avg_ed REAL, full__1 INTEGER, emer INTEGER, enroll INTEGER, api_stu INTEGER, pw REAL, fpc1 REAL, fpc2 TEXT ) ]] tableapiclus1apiclus1CREATE TABLE apiclus1 ( row_names TEXT, cds TEXT, stype TEXT, name TEXT, sname TEXT, snum REAL, dname TEXT, dnum INTEGER, cname TEXT, cnum INTEGER, flag INTEGER, pcttest INTEGER, api00 INTEGER, api99 INTEGER, target INTEGER, growth INTEGER, sch_wide TEXT, comp_imp TEXT, both TEXT, awards TEXT, meals INTEGER, ell INTEGER, yr_rnd TEXT, mobility INTEGER, acs_k3 INTEGER, acs_46 INTEGER, acs_core INTEGER, pct_resp INTEGER, not_hsg INTEGER, hsg INTEGER, some_col INTEGER, col_grad INTEGER, grad_sch INTEGER, avg_ed REAL, full__1 INTEGER, emer INTEGER, enroll INTEGER, api_stu INTEGER, fpc REAL, pw REAL ) vO+v2))+33501612916002422EMcKinley ElemenMcKinley ElementarySan Leandro Unified}AlamedacEYesYesYesYes+NoU %@d3@@j`5))+A3401612916002414EMadison (James)Madison (James) ElementarySan Leandro Unified}Alamedad)YesNoNoNoNo'\&@€Kn@@j`3))+53301612916002398EJefferson ElemeJefferson ElementarySan Leandro Unified}AlamedaddTYesYesYesYes'No_ (@H&@@j`3))+33201612916002372EGarfield ElemenGarfield ElementarySan Leandro Unified}Alamedad* YesYesYesYes'NoU&@(O @@j`.))+-3101612910137588HSan Leandro HigSan Leandro HighSan Leandro Unified}Alamedaa`2 .YesYesYesYesNoZ@pRN@@j` ~M0~/ ))++31001612916057111MBancroft MiddleBancroft MiddleSan Leandro Unified}AlamedadV BYesYesYesYesNoU  @Lv@@j`0 ))+/3901612916002463EWilson ElementaWilson ElementarySan Leandro Unified}Alamedadq@ 1YesYesYesYes0$No]  @`G@@j`1))+73801612916002455EWashington ElemWashington ElementarySan Leandro Unified}AlamedacI7 YesNoNoNo+!NoF!@ QN@@j`3))+53701612916002448ERoosevelt ElemeRoosevelt ElementarySan Leandro Unified}AlamedacBYesYesYesYes No_"@ \ Z j5@@j`0))+/3601612916002430EMonroe ElementaMonroe ElementarySan Leandro Unified}Alamedad)YesYesYesYes$Noa !@Y7 @@j` KG.))+7+1510751276006985EWashington ElemWashington ElementaryMendota UnifiedFresno XmYesYesYesNobHNo b??`Q@@j`,))+1+1410751276006977MMcCabe Junior HMcCabe Junior HighMendota UnifiedFresno cNYesYesYesYesbINobJ?G @@@j`, ))+/+1310751276006969EMcCabe ElementaMcCabe ElementaryMendota UnifiedFresno `/YesYesYesYes`FNo _9? =Z>@@j`# ))%%+1210751271030493HMendota HighMendota HighMendota UnifiedFresno ^YesYesYesYesT4Nob5B ?z6#f@@j`2 ))+131101612916066518MMuir (John) MidMuir (John) MiddleSan Leandro Unified}Alamedack 2YesYesYesYes%No^ #@G U@@j` kS*k<))+5;#2019644856013007EEvergreen ElemeEvergreen ElementaryEast Whittier City ElemLos Angelesc&VYesYesYesYesTCNo[(- ??w)@@j`8))+5;#1919644856012991MEast Whittier MEast Whittier MiddleEast Whittier City ElemLos AngelesbPY NoNoNoNo#No 7 @€L!@@j`8))+-;#1819644856012975ECeres ElementarCeres ElementaryEast Whittier City ElemLos Angeles`YesYesYesYes=&No`( @Q=$f&@@j`0))+331715638346010235EVineland ElemenVineland ElementaryVineland Elementary KerncZYesYesYesYesa5NoaB ? @>&4@@j`*))+/31615638346010227MSunset ElementaSunset ElementaryVineland Elementary KerndNoNoNoNoa*No ^??€Qt#@@j` \K\;))+3;#2519644856013072EMulberry ElemenMulberry ElementaryEast Whittier City ElemLos Angelesct5 ?YesYesYesYes2No c #$@61@@j`9))+/;#2419644856013049ELaurel ElementaLaurel ElementaryEast Whittier City ElemLos Angelesd` ,YesYesYesYes2Nod) @33@JT@@j`<))+5;#2319644856013031ELa Colima ElemeLa Colima ElementaryEast Whittier City ElemLos Angelesdt0 DYesYesYesYes5Nob ( @GOr6@@j`3))++;#2219644856013023MHillview MiddleHillview MiddleEast Whittier City ElemLos AngelescVR NoNoNoNoNo] %@`a#@@j`2))));#2119644856013015MGranada MiddleGranada MiddleEast Whittier City ElemLos Angelesd YesNoNoNo No \% @ OM@@j` CEC?))+;;#3019644856089148ELeffingwell EleLeffingwell Elementary. East Whittier City ElemLos AngelesdYesYesYesYesNo], @ A 8@@j`;))+;;#2919644856013114EScott Avenue ElScott Avenue ElementaryEast Whittier City ElemLos AngelescNoNoNoNo No c- @€T p@@j`?))+;;#2819644856013106EOrchard Dale ElOrchard Dale ElementaryEast Whittier City ElemLos Angelesd@YesYesYesYesNob) @(I@@j`=))+7;#2719644856013098EOcean View ElemOcean View ElementaryEast Whittier City ElemLos Angelesd &YesYesYesYes No_ $ @ K@@j`8))+;;#2619644856013080EMurphy Ranch ElMurphy Ranch ElementaryEast Whittier City ElemLos Angelesb@ 5YesYesYesYesNoR$#_@@j` sE{$s.#))+5+3523656236025290EBrookside ElemeBrookside Elementary [Willits Unified/Mendocinod4! YesNoNoNo7No P #@z@^@@j`/"))+7+3423656236025282MBaechtel Grove Baechtel Grove Middle ZWillits Unified/MendocinoawNoNoNoNo.No[ "@`d@@j`"!))%%+3323656232335487HWillits HighWillits High YWillits Unified/Mendocino]NoNoNoNoNo ^ @Ga^@@j`G ))+O7#3219647586020101ERancho Santa GeRancho Santa Gertrudes Elementary.Los Nietos ElementaryLos Angelesd+;YesYesYesYesNNo D% @zLC(@@j`8))+17#3119647586020085EAeolian ElementAeolian Elementary-Los Nietos ElementaryLos Angelesc15YesYesYesYesW'No F@@+h:@@j` KJ())%%'4024753666115216MDelhi MiddleDelhi Middle Delhi UnifiedMercedd#? NoNoNoNoK%No a6?€^W0@@j`-'))+3'3924753666025415ESchendel ElemenSchendel Elementary Delhi UnifiedMercedb8YesYesYesYesQ-YesZ,@z^3@@j`.&))+7'3824753666025407EEl Capitan ElemEl Capitan Elementary Delhi UnifiedMerceddDYesYesYesYesU&No]-? T @@j`%))!!'3724753662430114HDelhi HighDelhi High Delhi UnifiedMercedd))+1)6232669696031454EPioneer ElementPioneer Elementary Plumas Unified8PlumasdNoNoNoNo#No V1@33@d@@j`-=))+7)6132669696031421EGreenville ElemGreenville Elementary Plumas Unified8PlumasdY =YesYesYesYesDNo M ( @duj@@j` ZIZ1F))+597037680236037865EHalecrest ElemeHalecrest ElementaryChula Vista ElementarySan Diego$d%YesYesYesYesNoaa@@j`5E))+=96937680236037857ERogers (Greg) ERogers (Greg) ElementaryChula Vista ElementarySan Diego$ddYesYesYesYes No\/@@j`6D))+?96837680236037840ERohr (Fred H.) Rohr (Fred H.) ElementaryChula Vista ElementarySan Diego$dxYesYesYesYesA,Node@@j`GC))+W96737680236037832EAllen (Ella B.)Allen (Ella B.)/Daly (Ann) ElementaryChula Vista ElementarySan Diego$cYesNoNoNoNo (! @d5 @@j`4B))+996637680236037824ECastle Park EleCastle Park ElementaryChula Vista ElementarySan Diego$cna YesYesYesYesA Nod]r;@@j` YKY@@j`:c))+E99937680236115646ECasillas (JosepCasillas (Joseph) ElementaryChula Vista ElementarySan Diego$d'YesYesYesYesNo1d_ K@@j`2b))+999837680236113021EOlympicview EleOlympicview ElementaryChula Vista ElementarySan Diego$d<&YesYesYesYes No d+@@j`5a))+C99737680236111322EDiscovery ElemeDiscovery Elementary (Char)Chula Vista ElementarySan Diego$d&YesNoNoNo No_} @@j`9`))+E99637680236109771EClear View ElemClear View Elementary (Char)Chula Vista ElementarySan Diego$c  YesYesYesYesNode@@j` S91i))+-/10537735696038855ELibby ElementarLibby Elementary7Oceanside UnifiedSan Diego$dFFYesYesYesYesK'No >, @QS@@@j`2h))+//10437735696038848ELaurel ElementaLaurel Elementary6Oceanside UnifiedSan Diego$dIxYesYesYesYesS@No R6?(^@@j`-g))+-/10337735696038830MJefferson MiddlJefferson Middle5Oceanside UnifiedSan Diego$df_ NoNoNoNo7No*T"@(`@@j`2f))+//10237735696038822EDitmar ElementaDitmar Elementary4Oceanside UnifiedSan Diego$cYYesYesYesYesZHNo[B ?G ^<@@j`*e))))/10137735693739018HEl Camino HighEl Camino High3Oceanside UnifiedSan Diego$b YesNoNoNo No \  @Q^?@@j` tO+t4n))+;/11037735696038905ESan Luis Rey ElSan Luis Rey ElementaryOceanside UnifiedSan Diego$dYesYesYesYes0No G @`a @@j`;o))+A/11137735696038913ESanta MargaritaSanta Margarita Elementary=Oceanside UnifiedSan Diego$d}lYesYesYesYes4NobI@d"@@j` UJU7x))+9/12037735696115299EStuart Mesa EleStuart Mesa ElementaryFOceanside UnifiedSan Diego$cMYesYesYesYes3Nob()@(as@@j`@w))+K/11937735696111777MKing (Martin LuKing (Martin Luther Jr.) MiddleEOceanside UnifiedSan Diego$cg )YesYesYesYes-No S   @Qb%F@@j`3v))+7/11837735696109995EIvey Ranch ElemIvey Ranch ElementaryDOceanside UnifiedSan Diego$dYesNoNoNoNoN@Qb@@j`?u))+I/11737735696108211EMcAuliffe (ChriMcAuliffe (Christa) ElementaryCOceanside UnifiedSan Diego$d#YesYesYesYes*No U # @ =bT@@j`3t))+1/11637735696088991EDel Rio ElementDel Rio ElementaryBOceanside UnifiedSan Diego$dQ .YesYesYesYes:%NoX@de@@j` `H`8}))+/7#12539686766042519EAugust ElementaAugust ElementaryStockton City UnifiedSan Joaquin&`KEYesYesYesYesZ"NobQ?\)X}A@@j`7|))+-7#12439686766042501EAdams ElementarAdams ElementaryStockton City UnifiedSan Joaquin&cP, $YesYesYesYesP!No<@\@@j`4{))+/7#12339686763937406HStagg Senior HiStagg Senior HighStockton City UnifiedSan Joaquin&aF' YesNoNoNo$No ^"@GY :@@j`9z))+57#12239686763932654HFranklin SeniorFranklin Senior HighStockton City UnifiedSan Joaquin&Y#YesYesYesNo*No I$@ @W @@j`5y))+17#12139686763932100HEdison Senior HEdison Senior HighStockton City UnifiedSan Joaquin&_YesNoNoNo(NoB@€Y t@@j` TAT6))+37#13039686766042576EFillmore ElemenFillmore ElementaryStockton City UnifiedSan Joaquin&c NoNoNoNo[No/ @QV _@@j`6))++7#12939686766042568EKing ElementaryKing ElementaryStockton City UnifiedSan Joaquin&b6 YesYesYesYesd1No].?\ T @@j`6))+17#12839686766042550EElmwood ElementElmwood ElementaryStockton City UnifiedSan Joaquin&cYesNoNoNoNNo C ?]Z @@j`<))+57#12739686766042543EEl Dorado ElemeEl Dorado ElementaryStockton City UnifiedSan Joaquin&dSYesYesYesYesd#Yes!)  @z@HX@@j`<~))+57#12639686766042535ECleveland ElemeCleveland ElementaryStockton City UnifiedSan Joaquin&a)?YesYesYesYesd7Yes`>?Up#@@j` PJ P5))+/7#13539686766042634EHoover ElementaHoover ElementaryStockton City UnifiedSan Joaquin&c' YesNoNoNoDNo./?ff`J@@j`:))+37#13439686766042626EHazelton ElemenHazelton ElementaryStockton City UnifiedSan Joaquin&bW% 2YesYesYesYesP$No.@z@WH@@j`D))+G7#13339686766042618EHarrison (WilliHarrison (William) ElementaryStockton City UnifiedSan Joaquin&dbZYesYesYesYesT"No'@(R K@@j`7))+17#13239686766042600EGrunsky ElementGrunsky ElementaryStockton City UnifiedSan Joaquin&d//YesNoNoNod%Yes&$ @JF@@j`2))+37#13139686766042584EGarfield ElemenGarfield ElementaryStockton City UnifiedSan Joaquin&cVYesYesYesYesd'NoH@@j` XCX< ))+57#14039686766042717EMontezuma ElemeMontezuma Elementary Stockton City UnifiedSan Joaquin&c5YesYesYesYesZ.Yes! @\ SK@@j`4 ))+/7#13939686766042709EMonroe ElementaMonroe Elementary Stockton City UnifiedSan Joaquin&dNoNoNoNoc*No @z4@@j`6 ))+37#13839686766042691EMcKinley ElemenMcKinley Elementary Stockton City UnifiedSan Joaquin&cNoNoNoNoY+No! ( #@I@@j`5 ))+17#13739686766042683EMadison ElementMadison ElementaryStockton City UnifiedSan Joaquin&`1& NoNoNoNoGNo : @X1@@j`9))+17#13639686766042667EKennedy ElementKennedy ElementaryStockton City UnifiedSan Joaquin&b*)YesYesYesYesTNo=K ?S @@j` 4?4?))+;7#14539686766042782ETyler Skills ElTyler Skills ElementaryStockton City UnifiedSan Joaquin&cqB /YesYesYesYes;YesJ, @G]/@@j`G))+M7#14439686766042766ETaft (William HTaft (William Howard) ElementaryStockton City UnifiedSan Joaquin&d/YesYesYesYesSNoD@€P `;@@j`;))+57#14339686766042758ERoosevelt ElemeRoosevelt ElementaryStockton City UnifiedSan Joaquin&dYesYesYesYesZNo (@ @J@@j`:))+17#14239686766042741EPulliam ElementPulliam Elementary Stockton City UnifiedSan Joaquin&bsF -YesYesYesYesV#Yes)@=pP d'@@j`= ))+97#14139686766042725ENightingale EleNightingale Elementary Stockton City UnifiedSan Joaquin&b,YesYesYesYesVNo22@P,@@j` VDV4))++7#15039686766059935MMarshall MiddleMarshall MiddleStockton City UnifiedSan Joaquin&]YesYesYesNo:No 7@V D@@j`3))))7#14939686766059927MFremont MiddleFremont MiddleStockton City UnifiedSan Joaquin&a"YesYesYesYesANo 5 @\ Vq@@j`>))+C7#14839686766042824EWilson (WoodrowWilson (Woodrow) ElementaryStockton City UnifiedSan Joaquin&cNoNoNoNoPNo%=@Z@@j`9))+17#14739686766042808EVictory ElementVictory ElementaryStockton City UnifiedSan Joaquin&c YesYesYesYesLNo!c)* ?`\.@@j`8))+57#14639686766042790EVan Buren ElemeVan Buren ElementaryStockton City UnifiedSan Joaquin&cYesNoNoNod1No ( @=pPkH@@j` 1I1C))+I7#15539686766098677EKohl (Herbert) Kohl (Herbert) Open ElementaryStockton City UnifiedSan Joaquin&de 'YesYesYesYes% NoE$*@ \)dvv@@j`C))+C7#15439686766098651EStockton (CommoStockton (Commodore) SkillsStockton City UnifiedSan Joaquin&cYesYesYesYesNo5@`^2@@j`M))+]7#15339686766097794EValenzuela (RicValenzuela (Richard) Spanish Immersion MStockton City UnifiedSan Joaquin&dYesYesYesYes.No=,@ Rww@@j`5))++7#15239686766065874MHamilton MiddleHamilton MiddleStockton City UnifiedSan Joaquin&`YesYesYesYes5No @!@33@U@@@j`3))))7#15139686766062087MWebster MiddleWebster MiddleStockton City UnifiedSan Joaquin&d!YesYesYesYes:NoK@M@@j` c?c. ))+55#16043693776046387ENorthwood ElemeNorthwood Elementary6Berryessa Union Elem=Santa Clara*d(YesNoNoNo$No Q @@j`5))+-5#15943693776046379ENoble ElementarNoble Elementary5Berryessa Union Elem=Santa Clara*dYesYesYesYesNo 7@ff`]yz@@j`0))+35#15843693776046361ELaneview ElemenLaneview Elementary4Berryessa Union Elem=Santa Clara*b YesYesYesYes##No ZsY@@j`9))+=7#15739686766115422ERio Calaveras ERio Calaveras ElementaryStockton City UnifiedSan Joaquin&c:YesYesYesYes:Yes0F@@j`=))+I7#15639686766104665EWashington (GeoWashington (George) ElementaryStockton City UnifiedSan Joaquin&d"^YesYesYesYesd'NoG@@j` tS2t:%))+75#16543693776089288ECherrywood ElemCherrywood Elementary;Berryessa Union Elem=Santa Clara*d&YesYesYesYes"No !!@=pX @@j`+$))))5#16443693776068928MMorrill MiddleMorrill Middle:Berryessa Union Elem=Santa Clara*c*YesYesYesYesNo dX h@@j`5#))+/5#16343693776067177ERuskin ElementaRuskin Elementary9Berryessa Union Elem=Santa Clara*d;,YesYesYesYes No@ Q@@j`5"))+-5#16243693776046403EToyon ElementarToyon Elementary8Berryessa Union Elem=Santa Clara*dYesYesYesYesNo  &*@ QU P9@@j`)!))++5#16143693776046395MPiedmont MiddlePiedmont Middle7Berryessa Union Elem=Santa Clara*dNoNoNoNoNo ((])@@j` XJX:*))+75#17043693776095350ESummerdale ElemSummerdale Elementary@Berryessa Union Elem=Santa Clara*c{AYesYesYesYes7No-@G ] f@@j`<)))+;5#16943693776095343EMajestic Way ElMajestic Way Elementary?Berryessa Union Elem=Santa Clara*dYesYesYesYesNo(  @RX@@j`9())+55#16843693776095335EBrooktree ElemeBrooktree Elementary>Berryessa Union Elem=Santa Clara*bYesYesYesYes8No !!@T @@j`3'))+75#16743693776093041EVinci Park ElemVinci Park Elementary=Berryessa Union Elem=Santa Clara*dYesYesYesYes)No   2a @@j`2&))+/5#16643693776093033MSierramont MiddSierramont MiddleY4/))+1-#17543733876047609ECurtner ElementCurtner ElementaryBMilpitas UnifiedSanta Clara*dJ4YesYesYesYesNo Y )@ z@a@@j`8.))+G-#17443733876047591ESpangler (AnthoSpangler (Anthony) ElementaryAMilpitas UnifiedSanta Clara*ci aYesYesYesYesNo !N^q@@j`=-))+C-#17343733876047583ERose (AlexanderRose (Alexander) Elementary@Milpitas UnifiedSanta Clara*d YesYesYesYes.'No _@€T @@j`,,))''-#17243733874334470HMilpitas HighMilpitas High?Milpitas UnifiedSanta Clara*a#YesYesYesYesNo^ ' @ =pY c\@@j`>+))+?3#17143695426047575ELuther Burbank Luther Burbank ElementaryLuther Burbank ElemSanta Clara*d'1YesYesYesYesL&NoY' @33@40@@j` ABA=4))+C-#18043733876047674ERandall (RobertRandall (Robert) ElementaryGMilpitas UnifiedSanta Clara*dk dYesYesYesYes/0No #c%@`TL@@j`93))+C-#17943733876047666MRancho MilpitasRancho Milpitas Junior HighFMilpitas UnifiedSanta Clara*cYesNoNoNo!No b  @ff`QS@@j`?2))+G-#17843733876047641EPomeroy (MarshaPomeroy (Marshall) ElementaryEMilpitas UnifiedSanta Clara*cD3YesYesYesYesNo Z@ Q`v@@j`<1))+A-#17743733876047633EWeller (Joseph)Weller (Joseph) ElementaryDMilpitas UnifiedSanta Clara*cYesYesYesYes)No  T $@V G@@j`:0))+?-#17643733876047625ESinnott (John) Sinnott (John) ElementaryCMilpitas UnifiedSanta Clara*c8!YesYesYesYesNo \ $@ Q^@@j` >|;7))+?-#18343733876067219EZanker (Pearl) Zanker (Pearl) ElementaryJMilpitas UnifiedSanta Clara*d 0YesYesYesYesNo  [" @ I.@@j`>6))+E-#18243733876047690EBurnett (WilliaBurnett (William) ElementaryIMilpitas UnifiedSanta Clara*dIYesYesYesYesNo X! @GXr@@j`>5))+E-#18143733876047682MRussell (ThomasRussell (Thomas) Junior HighHMilpitas UnifiedSanta Clara*c1>YesYesYesYes No [&@ G R@@j`'/n}wqke_YSMGA;5/mCl>k9j4i/h*g%f edcb a`_}^x]s\n[iZdY_XZWUVPUKTFSAR<Q7P2O-N(M#LKJIH G ]]SO##UtableclusweightsclusweightsoCREATE TABLE clusweights ( row_names TEXT, snum REAL, wt1 REAL, wt2 REAL, wt3 REAL, wt4 REAL, wt5 REAL, wt6 REAL, wt7 REAL, wt8 REAL, wt9 REAL, wt10 REAL, wt11 REAL, wt12 REAL, wt13 REAL, wt14 REAL, wt15 REAL ) tableapistratapistratECREATE TABLE apistrat ( row_names TEXT, cds TEXT, stype TEXT, name TEXT, sname TEXT, snum REAL, dname TEXT, dnum INTEGER, cname TEXT, cnum INTEGER, flag INTEGER, pcttest INTEGER, api00 INTEGER, api99 INTEGER, target INTEGER, growth INTEGER, sch_wide TEXT, comp_imp TEXT, both TEXT, awards TEXT, meals INTEGER, ell INTEGER, yr_rnd TEXT, mobility INTEGER, acs_k3 INTEGER, acs_46 INTEGER, acs_core INTEGER, pct_resp INTEGER, not_hsg INTEGER, hsg INTEGER, some_col INTEGER, col_grad INTEGER, grad_sch INTEGER, avg_ed REAL, full__1 INTEGER, emer INTEGER, enroll INTEGER, api_stu INTEGER, pw REAL, fpc REAL ) V6{ V4))+=-556739406115430EWalnut Canyon EWalnut Canyon ElementaryMoorpark UnifiedVentura7d=YesYesYesYesNo@ \)Zb?@F@E9))+93#419647336019285ESoto Street EleSoto Street ElementaryLos Angeles UnifiedLos Angelesd,YesYesYesYesS?No ?`@* @F@E/))+3-#319648816021505EAltadena ElemenAltadena ElementaryPasadena UnifiedLos Angelesc NoNoNoNo@No@QQ@F@E8))+53#219647336016018EBelvedere ElemeBelvedere ElementaryVLos Angeles UnifiedLos Angelesd(YesYesYesYesbMYes?Q9(Iw@F@EG))+]3#119647336097927EOpen Magnet: CeOpen Magnet: Center for Individual (CharLos Angeles UnifiedLos AngelescH0YesNoNoNo!No @ \ d@F@E aJa8 ))+991037680236038020EValle Lindo EleValle Lindo ElementaryChula Vista ElementarySan Diego$d YesNoNoNo/No@\ `}B@F@E? ))+E5937683956098487ENicoloff (GeorgNicoloff (George) ElementarySouth Bay Union ElemSan Diego$dPTYesYesYesYesK:Yes @\)[@F@E8))+K7815633216109078EThorner (Dr. JuThorner (Dr. Juliet) ElementaryBakersfield City Elem)KernbNoNoNoNo-No@]G@F@E.))+33756726036055800ETownship ElemenTownship ElementarySimi Valley UnifiedVentura7c NoNoNoNo No @ ff``k@F@E3))+53656726036084917EAtherwood ElemeAtherwood ElementarySimi Valley UnifiedVentura7d% YesYesYesYesNo @ `_J;@F@E QT,))+//1533752423330552HRancho Verde HiRancho Verde HighVal Verde UnifiedRiverside _  NoNoNoNo#NoF@ @Pf@.33@!))%%+1401612596057020MFrick MiddleFrick MiddleOakland UnifiedAlameda_NoNoNoNo6No, 2 !@Q7@4\)" )))))1310621661035831HRoosevelt HighRoosevelt HighsFresno UnifiedFresno ]NoNoNoNoB+NoC1 @z]u:@.33@1 ))+7/1233752426111447MRivera (Tomas) Rivera (Tomas) MiddleVal Verde UnifiedRiverside cNoNoNoNo< No W" @`A%/@4\), ))))))1136678506059448MFrisbie MiddleFrisbie Middle Rialto UnifiedNSan Bernardino#cYesNoNoNoENo @T  @4\) d@$d=))+==2010623316007009EOrange Center EOrange Center ElementaryOrange Center ElementaryFresno d8YesYesYesYes]'Nod< ?`Z@F@E*))+?)1930736506071179MRancho San JoaqRancho San Joaquin Middle Irvine UnifiedNo ]7?Q[1@4\).?))+/+#6319734376012231EBursch ElementaBursch Elementary |Compton UnifiedLos AngelesX5'YesNoNoNoc#No*( @H+@F@E@>))+;;#6219734456014179EFairgrove AcadeFairgrove Academy (K-8) Hacienda la Puente UnifLos AngelesdC ?YesYesYesYesENo Z !@Wn@F@E6=))+/5#6143696906049159EVargas ElementaVargas Elementary)Sunnyvale ElementarySanta Clara*d%YesYesYesYes*%Noc @aC@F@E jNj2F))+/3#7019647336061535MMt. Vernon MiddMt. Vernon Middle Los Angeles UnifiedLos AngelesbNoNoNoNoO%Yes7 @@@4\)6E))+31%6907617546003966EBancroft ElemenBancroft ElementaryMt. Diablo UnifiedContra Costad}M0YesYesYesYesNoT'+@G]~8@F@E8D))+51%6807617546004105EHighlands ElemeHighlands ElementaryMt. Diablo UnifiedContra Costab>YesYesYesYes No/'@ =a@F@E8C))+?-!6734674476034672ELegette (Earl) Legette (Earl) ElementarySan Juan Unified|Sacramento!c_PYesYesYesYesNo.Z '@dc@F@E/B))+/56615737426009633EFaller ElementaFaller Elementary Sierra Sands UnifiedKernd%YesYesYesYes-No&a !@_V%@F@E tM4t=K))+;=7527660926026249EOlson (Ione) ElOlson (Ione) Elementary Monterey Peninsula Unif.Montereyd0YesYesYesYes No >" - @\ d@F@E*J))+/57410622656006829MNavelencia MiddNavelencia MiddleKings Canyon UnifiedSFresno d[ AYesYesYesYes3No dHS@4\)/I))+//7330666706111298EWalker ElementaWalker Elementary RSanta Ana UnifiedOranged'YesYesYesYes\PYes>8 ?GP[@F@E7H))+39#7243694506047245EMcKinley ElemenMcKinley Elementary}Franklin-McKinley ElemSanta Clara*cNoNoNoNoSFYes38?(Qp@F@E0G))+-5#7119651366111926MLa Mesa Jr. HigLa Mesa Jr. High qWilliam S. Hart High-Los AngelescNoNoNoNoNo U )@ \ \ A5@4\) pK%p2P))+=/8015635606009708EMyrtle Avenue EMyrtle Avenue ElementaryLamont ElementarylKernaCYesYesYesYes`&Noc@?`8,@F@E9O))+;97954722316054472EKohn (Frank) ElKohn (Frank) ElementaryTulare City ElementaryTulare5d3YesYesYesYes3No_, @GY @F@E/N))+//7830666706030241EEdison ElementaEdison Elementary 2Santa Ana UnifiedOranged=YesYesYesYes_IYes>3?P7@F@E5M))+I+7701611926066476MKing (Martin LuKing (Martin Luther Jr) MiddlerHayward Unified&AlamedadE3 YesNoNoNo4!No6@\ ^ j!@4\)2L))+5;7624753176025431EDos Palos ElemeDos Palos Elementary Dos Palos Oro Loma UnifMercedYD* YesNoNoNoJNo ` @ff`T |@F@E oK(o6U))+1=8549708966052021EMadrone ElementMadrone ElementaryRincon Valley Union ElemTSonoma0dD&YesYesYesYesNo`#@`dN @F@E1T))+9%#8439685856111983EMuir (John) EleMuir (John) ElementaryLodi UnifiedSan Joaquin&dYesNoNoNo Yes[ #@ pab@F@E4S))+5;8315633626096986EStockdale ElemeStockdale ElementaryPanama Buena Vista ElemKerncfTYesYesYesYesNod" @ p`Q@F@E5R))+798216638916010367EMark Twain ElemMark Twain ElementaryCorcoran Joint UnifiedKingsb3YesYesYesYesJ No]# @z@_@F@E2Q))+198112626871235209HMcKinleyville HMcKinleyville HighNorthern Humboldt HighHumboldt aYesNoNoNoNo_! @ d/@.33@ i0x#i7Z))+K)9010621666111256ELeavenworth (AnLeavenworth (Ann B.) ElementaryFresno UnifiedFresno cYesNoNoNod>Yes@1 ?pd U@F@E*Y))%%98930736353030061HEl Toro HighEl Toro High kSaddleback Valley UnifmOrangecYesYesYesYesNo[ -@ \)c@.33@%X)))))8821654176058614MSinaloa MiddleSinaloa Middle )Novato UnifiedMarincnjYesYesYesYesNob*@d@4\)5W))+1;!8744698076109946ERedwood ElementRedwood ElementaryjSan Lorenzo Valley UnifSanta Cruz+cNoNoNoNoNoT ) @ pd"@F@EMV))+]98637683383730371HSan Diego SchooSan Diego School of Creative & PerforminpSan Diego City UnifiedvSan Diego$dYesYesYesYes2NoI (@ z@c[K@.33@ Z@Z7_))+33#9519650946023493EMerlinda ElemenMerlinda Elementary JWest Covina UnifiedLos AngelescS 8YesYesYesYes8Noc% @QZ ~0@F@E6^))+11%9407617546004220MPine Hollow MidPine Hollow MiddleMt. Diablo UnifiedContra Costac9YesYesYesYesNo^" @ z@V=@4\)2]))+//9333672156032726EMonroe ElementaMonroe Elementary Riverside Unified]Riverside cx8 @YesYesYesYes3YesU! @\ [+@F@E;\))+79!9234674136033658EClarksburg ElemClarksburg ElementaryRiver Delta Joint UnifZSacramento!d^6 (YesYesYesYes0No&& @p\@F@E=[))+?3#9119647336015820EAnnalee Avenue Annalee Avenue ElementaryFLos Angeles UnifiedLos AngelesdL 2YesYesYesYes=No $0@ I@F@E `P`8d))+A+#10039685936108237EElliott (Brock)Elliott (Brock) ElementaryManteca UnifiedSan Joaquin&dNoNoNoNoNod( @]k@F@E4c))+?99915638426010268MJefferson (ThomJefferson (Thomas) MiddleWasco Union ElementaryKerna NoNoNoNoM NoM("?\)Y @4\)5b))+93#9819647331932888HDowntown BusineDowntown Business HighLos Angeles UnifiedLos AngelesbQS NoNoNoNoHNo H$@G Q}R@.33@Ca))+A5)9736676866035653ELewis (Mary B.)Lewis (Mary B.) ElementaryColton Joint UnifiedSan Bernardino#c)6YesYesYesYesP!YesY#/ ?=pC;@F@E-`))+179603739810330753HAmador County HAmador County HighAmador County UnifiedAmadoraNoNoNoNo No`$! @ =br@.33@ VBV7i))+1+)10536677106111173EHemlock ElementHemlock ElementaryFontana UnifiedSan Bernardino#cL 7YesYesYesYes6Yes$@ N@F@E6h))''9)10436678196036420MVernon MiddleVernon MiddleOntario-Montclair ElemSan Bernardino#`(YesYesYesYes@.Noa%# @ff`8(@4\)4g))+-5)10336676863631322HBloomington HigBloomington HighColton Joint UnifiedSan Bernardino#d NoNoNoNo'No M@\)O@.33@?f))+C9#10219648406021125MBenton (ReginalBenton (Reginald M.) MiddleNorwalk-La Mirada UnifLos Angelesd YesNoNoNo No&Y % @QL @4\);e))+1;%10107618126005185EMurwood ElementMurwood ElementaryWalnut Creek Elementary Contra Costac]XYesYesYesYes No `#'@ d@F@E ~N5~4n))+5511049708476051924EOld Adobe ElemeOld Adobe Elementary Old Adobe Union ElemSonoma0b3!YesYesYesYes No d  @ d@F@E;m))+5;!10934674396059356MBrannan (Sam) MBrannan (Sam) MiddleSacramento City UnifiedlSacramento!dy"YesYesYesYes-NoO  @d}@4\)-l))+5+10801612596002216EThornhill ElemeThornhill ElementaryOakland UnifiedAlameda`tcYesNoNoNoNo^ 7@ =d@F@E(k))))510721654822133692HTamalpais HighTamalpais High 9Tamalpais Union HighMarina1NoYesNoNoNo8 &-@]yl@.33@/j))+5)10654755316107650ERoosevelt ElemeRoosevelt ElementaryODinuba UnifiedTulare5cUFYesYesYesYesLNoU3@ `R@F@E SE*s))##911537682056038640MPalm MiddlePalm Middle6Lemon Grove ElementaryxSan Diego$dm YesNoNoNo/Noc '@\)ae@4\)'r))++)11410621666088546EKing ElementaryKing ElementaryFresno UnifiedFresno b YesNoNoNod(No!X+#?G ^ E @F@E4q))+-911355724135536750HSummerville HigSummerville HighXSummerville Union HighTuolumne6awRYesYesYesYesNo^(@ `dL>@.33@*p))++-11227754736026090MFairview MiddleFairview Middle Gonzales UnifiedMontereydNoNoNoNoH2NoL% @Z{@4\)*o))+/111130664643036001HSan Clemente HiSan Clemente High >Capistrano UnifiedlOrangeZNoNoNoNo NoX)@ ``@.33@ `?`,x))+-/12015739086106306MMcFarland MiddlMcFarland MiddleMcFarland UnifiedKernc7YesYesYesYesU!No70 ? I*@4\)Aw))+5=)11936678766068720MShandin Hills MShandin Hills MiddleLSan Bernardino City UnifsSan Bernardino#c't))+7=%11607618040736504HSan Ramon ValleSan Ramon Valley HighSan Ramon Valley UnifiedContra Costab0,YesYesYesYesNoE ,)@ @]@@.33@ {G/{1}))+-512552715226111629MEvergreen MiddlEvergreen MiddleEvergreen Union ElemTehama3a4YesYesYesYes4No W(@€df@4\)3|))+?112457726946056329ENorman (Alyce) Norman (Alyce) Elementary Washington UnifiedYolo8cTG YesNoNoNoS Nob! @GdL@@F@E:{))+9=12345699146050140EMeadow Lane EleMeadow Lane ElementaryCascade Union ElementaryrShasta,dH }YesYesYesYesMNo[) @€d$@F@E"z))))/12214632891434901HLone Pine HighLone Pine High`Lone Pine UnifiedInyo cNoNoNoNoNoa @(d wj@.33@6y))+5;12131668296111702ERidgeview ElemeRidgeview Elementary Eureka Union ElementaryPlacerc}zYesYesYesYesNod+)@ d@F@E nFn*))''513033670333330701HSantiago HighSantiago High $Corona-Norco UnifiedRiverside cNoNoNoNoNo7\$ @ ff`T-@.33@2))+7)12910739996007371ESun Empire ElemSun Empire ElementaryKerman UnifiedMFresno d YesYesYesYesd2Yes_/?\)RK@F@E6))+/3#12819647336017529EHaynes ElementaHaynes ElementaryLos Angeles UnifiedLos Angelesb}SYesYesYesYes'NoU # @ J @F@E7))+33#12743693936046601ELynhaven ElemenLynhaven ElementaryLCampbell Union ElemiSanta Clara*bYesYesYesYes&No_# @\ XC@F@E7~))+1912627738256026413EElkhorn ElementElkhorn Elementary North Monterey Co UnifMontereyda UYesYesYesYes*No=" @(R S-@F@E qA'q2))+9/13515636936108575EOlive Drive EleOlive Drive ElementaryNorris ElementaryKerncD@YesYesYesYes No_% @ d0@F@E2))+/1#13419647256015168EBryant ElementaBryant ElementaryLong Beach UnifiedLos AngelescwYesNoNoNoN!No P% @(U@F@E-))''9!13334673633433265HFoothill HighFoothill High^Grant Joint Union HighSacramento!abzNoNoNoNo" NoR!!@[s@.33@/))+1+#13219734376057590MWillowbrook MidWillowbrook Middle Compton UnifiedLos AngelesdNoNoNoNocNo"#1@(>` @4\);))+?1'13142692866060032MGoleta Valley JGoleta Valley Junior High*Santa Barbara HighSanta Barbara)dYesNoNoNoNo((@ff`\"@4\) [</ ))'';14024753176025423MBryant MiddleBryant Middle Dos Palos Oro Loma UnifMercedd'PYesYesYesYesB No R$@€F%@4\)2 ))+5)13933669776031553EMyra Linn ElemeMyra Linn Elementary Alvord UnifiedRiverside aB +YesYesYesYesE)Yes&`"$@\ Qx@F@E( ))!!9!13834674135731708HDelta HighDelta HighRiver Delta Joint UnifZSacramento!dj: 0YesNoNoNoNo:@G^@.33@9 ))+53#13719647336016877EEl Sereno ElemeEl Sereno ElementaryLos Angeles UnifiedLos Angeles_-YesYesYesYesbBNo 5@=pN ]@F@E!))''+#13639685696041925MSierra MiddleSierra MiddleLincoln Unified~San Joaquin&d,YesNoNoNo$No c " [ @4\) pK%p1))+--#14543696664338950HWillow Glen HigWillow Glen HighSan Jose Unified{Santa Clara*bbP YesYesYesYesNo [@`T@.33@*))))-!14434674473435930HMira Loma HighMira Loma HighSan Juan Unified|Sacramento!`YesNoNoNoNo#L%@ =pX |H@.33@6))+/514337680986066997EMiller ElementaMiller ElementaryEscondido Union ElemSan Diego$d YesYesYesYesYes ( @ d}@F@E:))+59)14236678196036289MWiltsey (Ray) MWiltsey (Ray) MiddleOntario-Montclair ElemSan Bernardino#b NoNoNoNoI6No _3?`T|@4\)1 ))+-1#14119647256015663ETwain ElementarTwain ElementaryLong Beach UnifiedLos Angelesc.YesNoNoNo No!N $@ G Vg(@F@E pC!p-))))+#15019734371932326HDominguez HighDominguez High {Compton UnifiedLos Angelesd#YesYesYesYesdNoH C/ ? @7*,{@.33@9))+E+14949753586052369ECali Calmecac (Cali Calmecac (Charter #162)WWindsor Unified3Sonoma0di2 7YesYesYesYes12No = @ =^#@F@E/))+;'14837684523730728HRancho Buena ViRancho Buena Vista HighVista Unified San Diego$dNoNoNoNoNo `  @ _@.33@.))))/#14719646591934611HLa Canada HighLa Canada HighLa Canada Unified\Los AngelesadZ YesYesYesYesNo]$7@`]@.33@9))+;714630666136029557ECollege View ElCollege View Elementary Ocean View ElementaryOranged0YesYesYesYes!Noa  @`dE@F@E aK"a=))+;3#15519647336016109EBroad Avenue ElBroad Avenue Elementary_Los Angeles UnifiedLos Angelesba DYesYesYesYesR!Yes)X.@T @F@E,))+++15456726526060388MCabrillo MiddleCabrillo MiddleVentura UnifiedVentura7c)YesYesYesYesNo \ !@ €\M@4\)=))+;3#15319648576106793EJoshua Hills ElJoshua Hills ElementaryPalmdale ElementaryLos Angelesc4YesYesYesYes. YescI % @pI@F@E4))+3-#15219645686013643EDunsmore ElemenDunsmore ElementaryNGlendale Unified Los AngelesdXVYesYesYesYesNoX (@Q`mF@F@E1))+5915157727106071278MDouglass JuniorDouglass Junior HighWoodland Joint Unified9Yolo8cYesNoNoNoNo R &@X '@4\) TGT@ ))+I-#16019645686013676EFranklin (BenjaFranklin (Benjamin) ElementaryPGlendale Unified Los Angelesdh ())+I3#16819647331933852HHamilton (AlexaHamilton (Alexander) Senior HiLos Angeles UnifiedLos Angeles`I^ NoNoNoNoNo ?@=pS @.33@<'))+==16741690704137279HSouth San FrancSouth San Francisco HighSouth San Francisco UnifSan Mateo(Z| YesNoNoNo No[@\ [@.33@0&))))516609618530930081HOak Ridge HighOak Ridge High'El Dorado Union HighEl Dorado`YesYesYesYesNo`,@pba@.33@ o?$o1/))+-3#17519647336068431MEl Sereno MiddlEl Sereno MiddleLos Angeles UnifiedLos Angelesd  NoNoNoNo["No +$@B{@4\)3.))++;!17434674393437555HSacramento HighSacramento HighSacramento City UnifiedlSacramento!ZXD YesNoNoNo$NoM@ff``mq@.33@/-))+/'17337684526059810MWashington MiddWashington Middle)Vista Unified San Diego$b^? YesYesYesYes9YesY@=p`@4\)-,))+3-17214632486008692EBig Pine ElemenBig Pine Elementary[Big Pine Unified@Inyo b_ YesNoNoNoNoV@pT!W@.33@ fB~f*9))+/+18501612596001994ELaurel ElementaLaurel ElementaryOakland UnifiedAlamedadwNoNoNoNoJ-No ; @ =Rl[@F@E,8))+1'18437682966038988MMeadowbrook MidMeadowbrook MiddleJPoway Unified?San Diego$c3YesNoNoNo No c$@ dN@4\)67))+3918330736356101059EDel Lago ElemenDel Lago Elementary Saddleback Valley UnifmOrangedM.YesYesYesYesNo R# @ G at@F@E@6))+K3#18219647331933381HGarfield (JamesGarfield (James A.) Senior HighLos Angeles UnifiedLos AngelesdNoNoNoNoV"YesT=? S T T@.33@:5))+9518133671736112692MWorkman (James)Workman (James) Middle Palm Springs UnifiedRiverside dY> YesYesYesYes&No! W!@ G:@4\) pCp&>))+/319056726035630322HSanta Susana HiSanta Susana HighSimi Valley UnifiedVentura7cNoNoNoNoNo 22X@.33@,=))''+#18939685696105738EPacific (K-8)Pacific (K-8)Lincoln Unified~San Joaquin&dY BYesYesYesYes&Noa @ 33@X p:@F@E9<))+35#18843696906049217EFairwood ElemenFairwood Elementary-Sunnyvale ElementarySanta Clara*d)YesYesYesYes'No X #@D@F@E8;))+;318756726036055776ESanta Susana ElSanta Susana ElementarySimi Valley UnifiedVentura7d*YesYesYesYes-No 22?`pL@F@E9:))+7=18630665636028948EEl Cerrito ElemEl Cerrito Elementary La Habra City Elementary]Oranged6YesYesYesYesH2Nob%$?[ @F@E pD&p2C))+3/19501612426001572EAlvarado ElemenAlvarado ElementaryNew Haven UnifiedAlamedacYesYesYesYes$'No X!! @ @de@F@E6B))+13#19419650526022933EEmperor ElementEmperor Elementary "Temple City UnifiedLos AngelesdO.!YesYesYesYes" No d @ QC`@F@E8A))+7/%19307617880735407HPittsburg SenioPittsburg Senior HighPittsburg Unified*Contra Costab" YesYesYesYes&No@\)A"B@.33@$@))##;19215634121531672HDelano HighDelano HighDelano Joint Union HighKerncNoNoNoNo/%NoJ2?\)D@.33@8?))+1719133751766032056EMachado ElementMachado Elementary Lake Elsinore UnifiedfRiverside c8@YesYesYesYesE"Yesc% @ =SY@F@E Z5|Z5H))+3920031669513134657HLincoln High (CLincoln High (Char) Western Placer Unified"Placerdpa YesYesYesYesNo] "@G aW@.33@:G))+A119956724626055016ELarsen (Ansgar)Larsen (Ansgar) ElementarybHueneme Elementary4Ventura7c YesYesYesYesXENo a):?`_@F@E'F))+++19804755076003164MSycamore MiddleSycamore MiddlePGridley UnifiedButtecsU YesNoNoNo8No $]"@33@N q@4\)5E))+1519733670333331600HCorona Senior HCorona Senior High %Corona-Norco UnifiedRiverside dl YesYesYesYes$No ` @G_@.33@GD))+W3#19619647336018568EOne Hundred TweOne Hundred Twelfth Street ElementaryBLos Angeles UnifiedLos Angeles_5YesNoNoNob8No 0 !@\)*'_@F@Ev|v7?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I6?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I5?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I4?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I3?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I2?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$6/(! ~wp~i}b|[{TzMyFx?w8v1u*t#srqp AweSA7?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I6?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I5?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I4?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I3?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I2?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I1?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I <wdP<14?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I 13?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I 12?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I 11?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I 10?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I 9?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I8?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I :vbN:21?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I20?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I19?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I18?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I17?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I16?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I15?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I :vbN:28?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I27?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I26?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I25?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I24?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I23?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I22?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I :vbN:#35 [?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I"34 Z?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I!33 Y?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I 32.?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I31-?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I30 ?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I29?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I :vbN:*42 ?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I)41 ?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I(40 ?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I'39 ?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I&38 ?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I%37 ?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I$36 \?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I :vbN:149 ?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I048 ?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I/47 ?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I.46 ?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I-45 ?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I,44 ?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I+43 ?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I :vbN:856 ?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I755 ?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I654 ?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I553 ?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I452 ?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I351 ?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I250 ?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I :vbN:?63 ?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I>62 ?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I=61 ?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I<60 ?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I;59 ?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I:58 ?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I957 ?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I :vbN:F70?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$IE69?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$ID68?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$IC67?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$IB66?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$IA65 ?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I@64 ?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I :vbN:M77?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$IL76?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$IK75?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$IJ74?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$II73?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$IH72?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$IG71?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I :vbN:T84?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$IS83?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$IR82?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$IQ81?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$IP80?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$IO79?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$IN78?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I :vbN:[91?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$IZ90?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$IY89?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$IX88?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$IW87?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$IV86?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$IU85?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I :vbN:b98?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$Ia97?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I`96?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I_95?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I^94?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I]93?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I\92?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I 4v`J4i1057?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$Ih1046?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$Ig1035?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$If1024?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$Ie1013?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$Id1002?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$Ic99?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I 3u_I3p112>?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$Io111=?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$In110?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I'167=?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I?$I$I&166> stream xڵXݓ۶Ԍ`:y'NIk8(I_],#%Zv2@`XowwR:Iatv{IS>F0Uv7usZ+Cm񟫟n|M&+r3=}h%6q Ox2Bbi"[."ZFɥJw`Z +AYM1^1y> D߇ZIyy\{]9+xIvC&ou@ nS]٥ ȏl~Mwuz~a9*ղ+INA ?*ޝR8F'}vᗷ\COzQ⇕CGWݱOD5yTfK2o>jX<*G3Lj* &>}^{OϸQF$1lgༀ0$AOQrX2B9 a@#8C'wK50 qvX04$#_Bn|e&Ulk1i6,"- ;dK`^,/ %^ c锘8e~BY w)1T_\;#S1=S#pHyXḈ+RIU[9_` H*iCԂO! ' DI7HxɼUBö*ìCa*5VTL6wdڢuΞA UB3lDj\JgP2TN2;87q uǬn=!.ICfmhUMEybL2x KL@imY(~ A/Ԁ_-揷7oPfLq3͆!͏?l 1 w腻?n^bC4LJx<2_*cRqNG$jg/}~U&M t$3w/o19tS3:{3Nqe^4N)9,VQ*iY,[Ȉ:,sLYQkYy)sjB&oQѹYt[糉ITbʴo*K|fEiR)f23Hk LZ{hz- r#tcd./\Wk@ d! >i%&Q5D%fi@L 3ؗ&#Yb!)[$b{llSWM1I4k?q> ` Oa2j!TOE_2ބ&k*bJNyU|U^_-^u[@a(UPI&01k( O8&BYR.y3Ȯһτa?6ů k MvVf> stream xZY#~_!A,76q|WWO}57H$ͣXWG*[iW7+!$sBWL*٭[DOU^l7bه?O6)aW}ϕ2T&1j#&?Ҵ %%گFZ&1lΨkci~H_bG]U^ur:Ut1mSzf0Rَ]o44odI sIӱjmd;Rj2C=ı'udKLq]meʈ,,~cF_JR^z,㖊)sJbT8$L$.X,l0>Իi5{=piѤ?$1?NNҤ/$0_AjĥjT3{KLj̃no=2J1 yr q \^LdAAvsj_g6~e Mv#(gCzu'wWJ}&8G,F*poe>ߢ^WOm^e5 pI="nIV\3LAMSiM-+",=ySS3/0  RKinئqyduȘ"ȁPƄQdUy$$JW.)dqႦGō|ҋD.7C`48b 8( 8 CC]#:G2I.K`B=ĢpFM!7&b0($ q.<چ"%\MZ<új 9gRS X{}vDBpǨoO|7A`/nXH 7Ώ8%FF)3p+*>/&vȁoӴn#~axh07l3AH&9:)Ɨ_F˪^l)"? 1N`=:G"ܑDOTYtQjEpqՅ lv[%E<[=lM^7]0X'.<KCO\t8m-9 j kw%:'m)!eF˶`elN_燼ɳx6AOǒQ5HH gubYk?1&&8HV*p kbd"C[7n]=lnyA8(;vmz h nyGδ !ŞI8B~7ニFiBg-I.|'Yb{joO%'CahF(0Gp {c/Kc>@C%atb):#?.مUGG@DgTNE:!Sߩ?.?sv؎1t{v)" *ۇqS,D%͒/FXT&j*r)&" RJXO}Zi͖t0@E(#ZM*F_}AYF‡!xD9a/>xyRArAWt|{MV#Um{x EKBE~lf#SQI.My)fq9`~xb]'!ӋpY#Џ?uV$"`~lzMqBoq!4bmuw=4-$J= %Pu{jזSa^XbL... \n)}*UHO*m-פH5z[e`@c^=QOO uu v3niM%wa/>$5=.T&v69+ gO; H@H&\~j#y2-pLˋdƫqyqf[dٮ+бDEht ^t9l;/F#O`GRv@^0Oi^=uNЗq\37{ؘ_3 (xzУt`I gYP<.jЊ~*B>>phA<)^54EDjʢ}~޽*\hWoO$A=iRK%P,H SZLے7ͱGl6rCFÁNI4$nɹ7TXrҘKжA~_~_?kJٳ!ñ896雾 yz=?2k|@IR0cq:(vS'W?Q&E.x>nbK~f0!zoi0>i!=tpfWx CiB283cZ*2#=N+N%q _w6Fsn;U"@&oLu[#^> stream xVo6_!&#WQXcoR,k@KT5>oQ2q?(@gw;x]#Pq0QC' I, o/Qs'燩+,հD]zΘ\ ͙*E#Ͷz/bFbM&|LQF)|a-~(WߴH]k,Q^vo}SzwUe1=޴G{n720Ul+딮U4?[v|˻3pXt}su+Ec=h_<}>rS돵 k!]@aע1lўvrt1׷lTۉ ƮlbwzV?#u%kr>?ڏH)!LjjWH0;gpGkXs#lO;V,5oQ+}&mg䷾#mO7pD*}q675IE eψK@W-yk-HKS1bjRɫMa3 ;EH'Y #eN"$1v=]p@-d6S볰SntA.p4})7*(5F)50ޫEIB+>^NG i2ZOCOI/Cp/1.vBӲ4 B$^(dL?.7 endstream endobj 23 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (/private/var/folders/rh/j88clqrj10l9s7lhw9v1rl14hm58nl/T/RtmphQaJNm/Rbuild12a844e0d4ca6/survey/vignettes/pps-003.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 28 0 R /BBox [0 0 432 432] /Resources << /ProcSet [ /PDF /Text ] /Font << /F2 29 0 R/F3 30 0 R>> /ExtGState << >>/ColorSpace << /sRGB 31 0 R >>>> /Length 6365 /Filter /FlateDecode >> stream xMo#ם>"4=I ,pHǟ:aċfX"yQŚ6_o_{7r/n<^~/_0wL-|<ô.e?67op ^msnz_yWm~mF웟>泟?׽q{9n.mwx?n~_9oۯ~?m2m}2w/z~|ۗҏroU*ҏ<,a^2]z+p+e{;ݯW׏V~He$~yOu$/i{Lo>x|$lԴevIx^>\!u~s+ÏWgf.*V-3noٞΧ?n|X&>u{=~2\>\q}sN?xa.8ϗu~H\zϿl\=uٟ\nr<Gk'|ŷG#*:"9˳o_'}eyw?IJ<Ʋ<Ȳ?m;_߯,BXE"u²e5igh:_l`[lkFѝu5:#?l/pNElKX%m a[Bؖ%,5Rz3iW P. ö°0l+ eaYᲮuw'=h~?ώϯl@X7 uºa6  (R҃gO?iޟmʲ?l?ee;1x2A~{}͟mʲ}ml}e>ضm_٨Q89hި5yRv, ¶.l[݅mwa]v,->~Ѓ:>ؼoGNl_͇ma|6/öm>l_òeQ1p6_l\+ߟ:FXg#l6a>}q-s9 ubO{~||ۘe`3 1m2fl[et::lYd_1aNlUɂm`,& *d6YMlU d6YMlUOVgh:?#nBe;,W+e< ^Y,w6xe ^Y+}sكT*los%lsֹ \u.:eX2sֹm.W \u.:eX2,sY -M/ycòmYmla[ƶ,c 6mY6c 6mYmla;뀎:=C~SղMuYmajئ,S T6հMuY:S T6հMuYmax>ozt^a_^CЗeaz؆m2 =lCЗe: =lCЗeaz؆/2e7jH]gelk&šf"-aDX3L=aDX3Lf"k&`DX3L}G_Fzny9^'`"S"[d`LY"[d` l)Kd"[d`LY"[d` l)Kd` l%2wpyOf:m˾%,-Q% D$ D(UD5Q% D$ D(UD([Ddg_N-+_{-pe l-p%p.-p%p8W-pe(4oQ:/˖Dz<–G[˒G[acY<–G[˒G[acY[a#ly,KÚGXX䍞rмQy'_Wָ5akX [\װ5q-+{\װ5q-akXָװ5q k\aװ5,q-{0/C4mz^o [˒f [aK3li.KaK3li-eIsX [aK3li.KaK3li-eI3li-Ͱ,ikaK3li%w܎isмQӰv[v[a {Yְv[v[a {Y[a ;la/Kv[a {y:qiިZxY <tAY,]P. e邲t][ e;,]P.(Kye邲tAY. e邲t]P.({OzмQ_:to2^VlU֪kU*ZUEX"U֪*VkU*ZUEX"U֪*ZaVlUWEX"U֪*Za°I8h=%+7Hٚ,M[$5 lMR&I`kؚ,M&I`kؚ,M[$5IY&I`k4IX&I`k4 lM[$w ejqy_-؊,E[V4 lESh7}z_R k)VJAʣ|_ +0 +KV`lV kV`lV`+0 <.VzмQ5Le뷲l[o[Y ~lOYa,: ΂TYHCl=T`!z,=`!z,=[CPYz*{ ~܃v@0ҮTYj `)j,5[MVSTYj*5[MVSTYj `l5[MVSel5[MVSe)j RS,5UB}3كve=bbam1Z,- k`kXX[,-[- k`kXX[,-[bam1ZleoXX[,-[bam1Z,- KYjXrA>yi.7u\Y:`8:,[qu\Y:.[qu\Y:`븲tl[qe鸰vl[qe8:qul[Ǖ{0tyőJ:.Uj+DZ)J,g3Oܮ42+vE9(JpDWW+Q$<䵽C|&C|6ɇ10&C90&Ø|Ø|{H|caL>ca̹XGG91&>ǘ('>ǘc⣜ccJ|ccL|rcL|1gVn:t%]cmt.c%t 7]M1n.K2&]Mp%o?t.KnIp%t 7]=Oʘ a%| (%| rgL 1SN 13&|ƄO93&|ƄOSN 13&| 13&|ƄϘ)'dS*lMdSlMfS94&dӘl*'dӘlMclMc)l*'dӘlMdӘlMciL6Mca"Lt/(5MtE(mt]ckLtrkLt15&ʉ15&rkLt1UNt15&DW95&ƜD@=&[dk={Ip-d 7$[nl&ۘd 7M6&Mp-dl&[nlc-d 7F!=Ș % (% roL 1WN 17&_97&_WN 17& 17&ߘ+'ߘ[|-D^D( J/ 1oʟO!vGc:Ę1C(i=J}#ܾQN71}1ocƘQN7􍽧}1"ԑ_u$JD#QHu:2#cG9cLS1T1216 ֆrjØ06 Ԇ1aLmSԆrjØ06 Ԇ1a̙<*9l"J2ֶXbLU*mcZE"VnUiᶊp[eV1U*mᶊ1"VnU*ƴp[E"oQV1U*mភc)yt`*pm`FQ]4ec1MըMc1MϘfL2kɘcLS14Z0ԋiEu-ti4bbQ]{4bVTTN1MQLS(9hFv9m#1\F0m#mT׶1MۘmL6kۘmL6iӴ6iӴ(mi4mcQ]4mc1MۘmT׶1MۘmDiյmL6iӴiFBo|8q/?/|n|t!2:j㩗GG]8EˇӴ~0S|klmw7w߿ٟ;tXVN˳~|~~s_8k9|t_?J;8 endstream endobj 33 0 obj << /Alternate /DeviceRGB /N 3 /Length 2596 /Filter /FlateDecode >> stream xwTSϽ7PkhRH H.*1 J"6DTpDQ2(C"QDqpId߼y͛~kg}ֺLX Xňg` lpBF|،l *?Y"1P\8=W%Oɘ4M0J"Y2Vs,[|e92<se'9`2&ctI@o|N6(.sSdl-c(2-yH_/XZ.$&\SM07#1ؙYrfYym";8980m-m(]v^DW~ emi]P`/u}q|^R,g+\Kk)/C_|Rax8t1C^7nfzDp 柇u$/ED˦L L[B@ٹЖX!@~(* {d+} G͋љς}WL$cGD2QZ4 E@@A(q`1D `'u46ptc48.`R0) @Rt CXCP%CBH@Rf[(t CQhz#0 Zl`O828.p|O×X ?:0FBx$ !i@ڐH[EE1PL ⢖V6QP>U(j MFkt,:.FW8c1L&ӎ9ƌaX: rbl1 {{{;}#tp8_\8"Ey.,X%%Gщ1-9ҀKl.oo/O$&'=JvMޞxǥ{=Vs\x ‰N柜>ucKz=s/ol|ϝ?y ^d]ps~:;/;]7|WpQoH!ɻVsnYs}ҽ~4] =>=:`;cܱ'?e~!ańD#G&}'/?^xI֓?+\wx20;5\ӯ_etWf^Qs-mw3+?~O~ endstream endobj 36 0 obj << /Length 613 /Filter /FlateDecode >> stream xڽTn0WdQ׾~fâ bv-BH3TЂP6}syYa6Qͳ/S8xJ=~s*OORn3)*3̮Uu5ē߻G`~q,Jv\&uO4΅~ oƟW~%U3B]Ɔm^MXP˜d2fB&ƻ"F*ԗBɘjaF?44>oc}?m@ IspC<0ZXZ  nbη|'\XVvi*ԇkn(ӐEğPQph;xD;h& IBIbRp6H T4r)Dc`q06IUwIfYoZ¶ضoHۦ B<SThN..V endstream endobj 24 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (/private/var/folders/rh/j88clqrj10l9s7lhw9v1rl14hm58nl/T/RtmphQaJNm/Rbuild12a844e0d4ca6/survey/vignettes/pps-004.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 37 0 R /BBox [0 0 432 432] /Resources << /ProcSet [ /PDF /Text ] /Font << /F2 38 0 R/F3 39 0 R>> /ExtGState << >>/ColorSpace << /sRGB 40 0 R >>>> /Length 7156 /Filter /FlateDecode >> stream xˎ+ǕEJSLCmlz x`A w2:yYXw[Kgb1כioxߗ޾~Ƿvm?Ƿ/~s_6~ y:]i3]?ǏǏ963?|ۯ?|^msnr~yyOaw?ȷs|ut^y{Gnu_'ؾf0o_/Ϳ޾f۴z۴woz?i{o~ϷimlyN)S~zx ??]֒+a@X<'x8/;RVEeWcLJ'TeOOO '3q3W8v۞:ğp>+|>OY+<>OYk<?Or~=t|e~l/W?=׺LW"3>XJhőKXFah.iѳ70i,a[>V%L&`symv<^2|DD_ٞ&4ERl](DV>`+Q Jq/%xy20^yY 6ߓ~vz8eDV˅-o`Z>Kg> k}% kÚ+ܓ̵h?ÛO &uR`+I$Jl%X:.:. leXʬXʬTc)kqz|nYH lz[G(@DV`Q.Qآeq(KDV`D5?Z+ K4/(#QGEVEZ$j,Zqb*DZEZ$Zqb M5pb_N;ۍC'"Jjq K:DDpE:DK:DDpN,8{nhTDIG?83je(3*"3*،82*̨̨`3jȨ% (3*̨̨#"ʌȌ X-91N~>+Rcű`k`fcs!X?4EDyyq 6o6657Ğ\o2! ]6x#Ei{y= 0IfbRl&GhȤ2"26h(khЈ2C# 66낳Vȭ;jʈڽ{ll~/~/~/lMX{E3 l>GND٢yll-:K.:eND٢yqD-:Y.-K.E'"]t>;l٢qdhz^}oKĀ-b1nO(xeȂl8 ( DY i,xY-xKAd-SK0yr(e}9<Ɩ@%@`K -r5fl7`Gc(7`|Xn&v36ͻŻ`Kѝ yNh2Wܓoծ`kakakaka+ZXZXZX 6.ZXZXZX 6VVVͮծծծ`ݮծŮݘ/YE/9}ECdg,Ady5}N4L4j,K#$ؖF`BEacYmix[5Qa]mib,4[-ZKmiؖF% lxln_wh=fG U4Nƒ%!KB4XqXjQXjIcI'%DbEbEbER+NK-K-Dk,q5K-K-Khl"IbE+ҳqFye-K6$?+-[XCp+i(.Q%(.Q ΢xQ\0KFq4Y(i([Dō%tWl4^KE5^Y(i>;07aly"Ijpm-wl-ߍF7"ow(K7,eq߈Fd n, QF-[$Y_8zDgKiDGe=,I֯XS} ͅ񾝎p Z$lv-`Q#;8䍳FE6"Qd#"E6"D6X"-Y HbpÈ,Y #n0,e1b8k8Es^a=ۛ(%`c18K6[6- m,ir87KB6,[6,[- FCcI–z-ؒ8Kf5tjl9Xr,9gy./c|5sgIxe+ [5'" Eb}+ E*" "QHEd `n, W@([жHpEd 4-lAIci$`k$l譌_2.},qy>[PS">SHOa>,(>% OSHOa>`>S(>,8>%S8>%κOSHغOa>S">Nûϰe-/4* Yj/7u!uQBu!DօօG]DaBu!DYBd]qԅe]u!u҅ޜgEY upYYgiuDYgAuDYKg[ggQYZ4,`!ST./O<_鸁 q"] _rA䕥1Bye p\xW(5Z:AF˨ faFA4a{>fYU5dzk1>1}zdʉʉ Dm+NTq^/3gu A(A(O:(mzξ"җ_≆''gKq7E0y;g0<$4=;(zd73Y_XY2ud W}2R)5Zt<5MFkBt˄(K.r[]pMĎf33zfnܙE0([ۼU\smnjG:0knq缈(y I$ e:mMSqMa&0Sd)R\Sd0킙+y犹`E F[03(mGV\mM DʰP2qR/8H/.]zkƴlLt-'ÔSkiSrrt9wβK$:=9&oSmB+UWB+ԕЮ+UW ԊajEqՊaj0b0+S+ Az;ZO&|}Emi).ElEl@pr[6NܖeGmّp2n۲6KܦdƉ\Q(3Zb%mmh6Xv$ f`@&3 c#&;KL d#c%Xd])#)xJ?96M9MDsl x{ql8-;ˎ+_6 ٷ,448-wKQs9瘶=b1m{isLW#ƈr\\1එ6ආ6aL ]p|?xa [p.aCWGV+]*hUѪpTW+ W\xpUካW+ wTpUU᎗ W\*\qUeo@[ BPl!ml}k%m!R\ƉqbH0;ִSƚ@0l6ll[Q`cec8ێsGіώD\09!EN%V"%WiOL9[D6rBN(INd$'#ّ ;er"9 =i ŕɉl+r^DP\7kԻGA_#B#BĈ ÄaB@qanc†12aliڮOPq04 c5e5X02~ۂ]?nwiK(vטtua%%%ew nw nw nw nw]]]iZ02c 0~m;0h0j4 +otmhmuVW\VId$#ّ;e"$ QǍMq+!FGSv$FO`e!5l&{ &U>3PKh'J.da0i0c1L&5Wj& ; W& yø[q0>6c XxSqy0;[ ƺ-GXW{l bhmheh+ɶyt6̯̟HIPdG">#*vʄJ6&$ @ 4:ʎD艰l &$q@\D/HdvFigmW""Z3qMh 2NN$g4Nhё:9#ur)wrF9iəƚ򚝑IC5Z0:HHa0ga4NHɑVLUwz$ qmbHG E!B8ep4a!B8'!ΎDgG" l p6BXDŠ+ itGќ@l{M9'mI`g$ё:{;y.uL7!?sѐBIndhŕѷ:wFG3BF+6L&w$w$wm n6r7+]ŕ]$a4dit:K5ld&Y,BFG,Qga֎I7B UB UUOaRqa0AiH4L)3L&w)@3L& h+ ] )ÄaHqőa0#Dqa0;D To!ѩb[=Y&ي(EXar)V0 t&âqvE켋)QN1H'f4ѱhQ4tMNcH2Nh 8;5;qvGOӹ/s_p~i=U WnC*ME4"M(]D4|D4DzZҥCdcCvjq;VsFQ!E.h h TSWOFQ-^:B6j1V;FQ :@4 V'FAm:l7WE"w.!.tюzt6J.D6qKdǩ.ag[]"Eul%DCPt %V?0Z=oX]^?c%b%6JlqH~ѐF+VGg@ggPoa/7_}C6zO/owsO6rEmƦkzOG;yKQ5wzpv<>nt~>トUwWU]O㣪c:ݟ;G8N<>ki::?4-o U+y|TwUD:?i>8?썻?2VhQu-2T弦&cղ{joP=Q#nyTM?W"~g6}p߰q[W?K Z1ϞocLeIvڗzkqS#)SKSSλzJ|}SS==Kr ]_fN͇mb|zwoK4-X},2J~}\s,??Mg\^k|to ҙA endstream endobj 42 0 obj << /Alternate /DeviceRGB /N 3 /Length 2596 /Filter /FlateDecode >> stream xwTSϽ7PkhRH H.*1 J"6DTpDQ2(C"QDqpId߼y͛~kg}ֺLX Xňg` lpBF|،l *?Y"1P\8=W%Oɘ4M0J"Y2Vs,[|e92<se'9`2&ctI@o|N6(.sSdl-c(2-yH_/XZ.$&\SM07#1ؙYrfYym";8980m-m(]v^DW~ emi]P`/u}q|^R,g+\Kk)/C_|Rax8t1C^7nfzDp 柇u$/ED˦L L[B@ٹЖX!@~(* {d+} G͋љς}WL$cGD2QZ4 E@@A(q`1D `'u46ptc48.`R0) @Rt CXCP%CBH@Rf[(t CQhz#0 Zl`O828.p|O×X ?:0FBx$ !i@ڐH[EE1PL ⢖V6QP>U(j MFkt,:.FW8c1L&ӎ9ƌaX: rbl1 {{{;}#tp8_\8"Ey.,X%%Gщ1-9ҀKl.oo/O$&'=JvMޞxǥ{=Vs\x ‰N柜>ucKz=s/ol|ϝ?y ^d]ps~:;/;]7|WpQoH!ɻVsnYs}ҽ~4] =>=:`;cܱ'?e~!ańD#G&}'/?^xI֓?+\wx20;5\ӯ_etWf^Qs-mw3+?~O~ endstream endobj 45 0 obj << /Length 332 /Filter /FlateDecode >> stream xڽN0>D%ƾP *JRuq !)j7sϧI9&5F1嫉jUMY*/8[owf}M>֋qy]wj^_jZ?/[I r@j)Mhzto2ŏ'KۧO dBiZ\ И]g 4K*C{O yJ)3J)]K퐞j}ܸ7e $#K}vlq 6vl$ؖsc > qmyc> stream xڍtT]6 RH!Jw0 0 C CH#%"t)J"- H*)!J>>>}kֺ>>{s]7' !B"5] @DDLHDD'4 |p0&Bu0=_P JɊDEDd&u +A|8^(y߯0/(##%; A@ @txy`(G yW$KVX_#G( HW8~ yB&D 0qÝ p!0_`"E9Pr~'`\P@_SG`N M>9~h@7z!}|fU5`NjpOO C?u(9wuaWP1|MaPo_M1 !"#*%) x `W_ A h/f H0rGAH/$?WD@ F!.Pѿ߄!o Xכœ0Կ鿯XXB@UU8@PTFRHIY$kÜ9{#?FϿn#"!yz*#M_8_yB=P7E@~cS!yWoT _ ф@ H_+nkPuED 1 s#?R;2$@PD7|7t2@XGޤn 8DTZ ~1EDBE n[#7z$&"j#[NUW>sg gdiU#g4x^7c>1l>l4L45LxSIDy5;, g4A!ՉV@]ϫ'V W$_L4M {1Y3Nώd& 5vx25D[b%hѤrQ; V؇GЪk&ѥ%sEclI^ZJG&aHwln Z}ǠPմ-UH G38\XMr5]L\6&hrR< Z!$b=%QϤzrhe| lU A(P~ŒM/nū=I`S> _?gݤ /O\&M/v+UJzX r8m9 IyZi WBGnJOR5u OBOf )̯[X a{SmBw$ znb}9cɎg{Wf?|QRb3@$WZE'4#۩g픅a5=sE*i#.-NCX# z^JQ7/m3`fcgTLnc4wk̢tSKCBV+xN֠%ق-a ZżNpvFVYTl4&FF(%g p"?x{̱H~E &&E|:yLJ:L*1&Wrm*x؎l=˾~]Q$Ŷ#OG}·V4'ʥJϨ6(6Nj%dW[݋b5aΝ&d-.:E*m([Q~zدǡSɍi#3+ʠ+ܷЊ-e=\@U *-_g~#<-+汛Iѵ5m}i\jݶ88Ο!FMV[S)-)g:u^;U츘L9ԧ.6/'"o?껷6xtnK+۷Y>-;ڳF'\})PX2'RC?KΪ$Yf4(9~ړ%> /4]Ǭ,]%c]hO{6uo%y|65DYm*ԿWBkdՋa[&V2Tr G<""J՘*gf;CxI !!{GIsYsXT_l26 5v/ZggJz5p.KT9͹eM . #z.h۪Oe.|xhH]+/LWOC]s 1a~韕a39X-+? oTWF=lu+"+| H^;r ~G͞?Ͷ겔AN/6Do0 WݗpTR$'СQ9ߦ&ҫ:ȭ*joԭ4eCצ2}.tqp|T:l (SwC2Ŭ~S㮬.܈Tkm#JPob]؄w1'-/l˒٠}EmUd5VOH3c*əoB} ;AKӊ#߶yMBڿ=c^*N $MH.3r'pHPƄjL u#%9dc2+=RSyf[p~~_<yGCKfHv@W ;ofz鹣,'h)>ePR&*ڶ%6"ʁ5m\`csrÒh4.@Qy+CxұO=ƅw՜FA6$|z{!dehQ.\g<2+#(I_Y8v1kқİږ" rs&ѽF/mb2jgpx@wPuO \# YqP LPW'j<<˺Hg>^!}0IbS[l݂ KRơ;4Pou0ȦiQ[.\FUmna ^n$`/4Op& Ҥ>]_姃cB2݆bA2Jc}熙< -D"m ۦ:BWIf^O7<..$2.iԏ%T$,%P ֘ {8Q:1HK3%(јșwdl§\ x;FN[AyP T;V${NaMoEطWI|r|)uuQ ҿxF`yиn/p4Eh9yJMVuiƀʮ)&w S~P oRL@L=/ JREժAc[T|}+Mzm^o~sZB?9 eX2G·~ *8#~UT׸5ufwl-(&W6sÙϑWG. N2,a jmLIX qbeopnAIFn'QQ6Ǚ(?Yf mYoIuz44jL֖i?\O7-Ux{jiӎJR%hŠQIdG]4'PP]g_ڀf}?37)BS&gSdERptR{P52V&+ڴ0l[@Si99nmwn$fGDD<҃Zg5B=c2ZRjGe*BƱG:E³SzVBTcp8evVꥈK:$n1Y.w 1#וpN&FG r TևƯCWOr"S;XE,h9m_̙7"ux5laq-hIj|Wϛa2=a<"){w,=}{_b, jPT~5s[di܆Luc8 tx8th9nY.v+VD*༉bh6Sޜф!'ϧ԰v(Yh gkD71\6kwaIS[ToM8rrs&—[eB?p_;`BEi7͊<} BBsMzmtRa{>&ꝛ]5ѷ*_S2MJ}"M,PNZ|E"8Y؞4KpaX=^Ƥl_3tIrJ4`G-Pj)\28YC󀆪xEV!H.۲ɇr8${t+L#TtW/]ڎNadlˆ ӄXwy{\_:u7^Ml-UӋਔm7BOSh/F=IdV42`nKSASYEyeefF~qXˀ8|U.fމػnq9FϚRԗqEi^{|6_hB3s1]wsP!-;/*>uMz%5^c}~.Sj/TWԈ j>Ny-rh㈐v^*Yr"Qh:T=nihONCCiCkY;{91ͨ~dM8-H$U _k]{-=z'B(m+nKL6ĭ];c"w涄a4.}JCxCy$d6N}~ \I4>>/ : ư_ (u) $J;^bpsZ05c$dlCQZ ~&qo[=Ȩy伏1-ɢ9G+ZIOXEZc[ttw3||aZ [ryLo$ ƲOE"t䌻wlNHb =kD5diŇŧJwE 1F_*_-jRy+* PkϥUM/R "XRL~2sdHϵK8>yq0i}ҌWp5);ݱ'~)Kjv b_I- |c$vjv1EjH]*:n [*%6cġe.Tw$ggKn\ZSH[7 ,ZWkwfx@8XO W*u 9KagP5> w7Ƙi7Fo,sYȱ~A n>#=1.]ydMI)u7XF=ԬU]1Q[\Se`HdhLcO/J5,5j4R CRU;=v5-Js@WQG|6=U7oI{E@w{"e!vh/+Kc\bav=xWob~`t{  Al199) Ebg5}uI\.be$c;&1{YdO&=-Jڣ 5/ZP6zLQΜkS8{bn} )mE328QY}b,"ΠЁTn <^1j8wڴrTeV> stream xڍT64"͠ "9  5ݩ "!))!(t|{{oZ;}ʬk-g (\Q|<@q P3_zVc Bu Q Pww Dā@?(/GBx0WUF@P}9|bb"\r. rhP`3BP]zzz\<04rC2@+`CyZ C\wW[` ЁC\rˁ x߉A`0r& v9#ax A;)PƇ#p uw1+*\\ ($}޼7/jk;QS"GgA"Bv7[ vhEy@(;? -l`bu%';Z KF@3+eKNmy#zoSn&-{&ę;)ggHZ0^3"0tbHel XI|Nd,SQo)դ3j4:~\%!t-<*C;dAg5Y/CwLG jㅗĿ J=v}mT(dwm,si:Z0v8X\0(3EѶLX)gH,ʯ Ns=+52عn*YyE`=I'[WzB˱o9o=|ڄL4ӡPՂXX[S2"hf1o㷁%>7/::ܪc\c}V_\~hg*xU{ZhJ+}]̒L;aq8uKOv #ĔuS-C'H]E8r/4I9%U:j8}c\+u]Gb=(Ro0t;9!]n帵 cn2`<otGRLfVL60?鍋/C6/4{C-㳪P2bN>\ ?R@nO1GS s{Ll8KjƊYxhUh*"[]ω㗞fiʑ0_F '$8rY$gn ZP/\]<#CgX?*^徉U4c0T:v}rEN$]t]y ;.Se6>[mbn |YdXBEHk҃X#saFOc}=An6|qjcl2Βص6Ip?|jubA%Z 9Hpi81ҵ0*S򜯍ốv;܈ +}4'wٞwu =[zry߸,-L1`Xy=*Nɘi= =ďjb簾BVڜ{2HС*lҿ|s"&B@ir\dcejh)k׽_8Šrp|7_*Ah軖~Bm{v@P[ F<=}]|_qJ  aRŜ-/Nz6(m<'umS)\[G9kH׵u쯾I 1)mFe%{0 lf1/_$^C`Dlo: K6igsxě\V-trdE˚^ >78RI+M;1?Lh:1dQsЊt4TtBa/F,Yt>Uli*d#xx0%&+2̫@3{]&"{zȈkaLwa: 8/-J`}|57St㫷U.1KVr7gMuqC]Ͱ*?~D>]Hur-۶C[zV5DrY|4~ +5~¤]rg⼄0'b3|$2$9r A?-A_O73*2ms I`s`1@quv ]U!cg=o&_j.P/(} g-7pORP)Ide8 K8e h3 ˉZ!K8RI#٥9~XLitJ?_sKm(*lv> ċ\Vډ9Rr;a~JV?xg>>+}#y a.7>]UkIa>nmL )Љ\K9K͒,tr9 9agTHl M2W1d֛J⼠5Ư%TI$/־mT4 nJW@hd 0˟m_-{"M#H쬛>3 O`kV#`D?ơ(7a~Ou o,MzFqb(fՎ&ZIsvXKKp.h/~%S^`WʾpSW}φ &8Y;`rW:NcUwj\qdxٴ|%`2m0 6 X\o _UC)HN?uvdX҆ildJ'|g? -2)Y2Ii,(]lj?9*B㳘z:0vp iĴ.D+SD`p= "SgRYW'G#IQTa_nil06 }Fv56? $9?A&'L)R;َ*U!)Rv"VϜC#6EU/ALpc@w+zɽq7lAoņe Iۂz4/OQ":_1U5\;W:Ao) ڂM2J~N=YuzXp,kPxNq{jMKϕ:a$(4~`Qs]Grץmd)8ن,[jZ1٢TZ ~5͝ iq0qPDcNCЗ[6iw ?a"V %1@"XNGe_eƀO@hwylS1J3Rt1o|jCcr ?]Hʫ'f+>'Փ:br#/ W-IbMZ~!(?&*.mCmFYbλ.&%Ān<9ԬWH*{ G=P`PNm[wS!]0-aɓ*Nqs=cj>NPkyOBO񵡶N&p 7oIU/Bc\ؿT)kL[}YP̟.3k&1wncR$l|ʆJ?^,ҳix*\{/y_2)HIx)+xs5dEka<+qG5Õ7JnL?&)vq!6YO f-%mtIʓg]ѝ;R-xl#"oD#eNw:eTAUw!KvǸ[ N*)?T,x2Htn>iEJybT M`dJP =.뙯 ,"U Lb _Z|#lX6g`p#D b]LU*iSBꚗ&kP&:?ytX?BSX1l/Big2 12 5irQk[9-Ұ!D1s&nb۞X]ܨi+q7HJ"ۯd8֧mX'`A[Dk:oz >^s*cаR/P!lYIa8Χj9' Y{7pKp]O =wh:hSr-: Y7д`uZeiRXr59 ̨VJOͧx2+ FP?mEqkw]r3M7&4χMvW/7s]vD݌y|On-_(,')fy4Ǭ(^CʁyDr=8J3R-9x Bċ}MNX+Iσ!Đ<ԋp7i|O},+ ឃJغQ!NG,]$k>b;bp D1Z!͗ՅGPG#6:ZxT3P7NyMM$"O'{9 Y,MWk ~9l[)2QWg8Fxtc.\ W5;6yU(Ҷ!&jE*h:{[mzWh|t>ez^-}͔d>A̲Q{w/QfeS>ٙO򼗥3 v?^=,eUFajNRP Vzo>{K)uo#78BK*ЭN]fd~bVqcL#GmxY S lH%(]~.6.$NdolWfw 7j~UK|yk_ i(~"1P۩eg,KXT^HK#>a{","mGכKsG^]~nab.ddsga5<}F.2&s6>`0eVa8J %}E.2ni(^怚&*yڮ=[bWvg初u*NgTy=6-\^[|k%kBV6mg-CLN[Zj֣`n'Ҳsc16rD4^?O/.~sB qQmEv]&ָ;4PdtS\[9{fg[u^bl`_esY *J1\GkL؉-aQƬmzsP5r`/g" ڭsvͩƄ%_$Ž8'm=޻6qd+98$ endstream endobj 65 0 obj << /Length1 1394 /Length2 6000 /Length3 0 /Length 6951 /Filter /FlateDecode >> stream xڍuT6 RJ4RFH %c 6 ]"  )A nDBx~9{v l65-EEH`hG~G$ /}$T@h,P?<$t m qv0 W n9(,#$.rB "<w 0 H7-j$\#( ;`CC(l+` 5oo? +#ApO`stմh~nrD! 7dPSFœ(AB?`Yn{Q$?S!!`{ ܧp;o1 PHCqa)IQ) C~60t ;z;#v5 0;rHW"00`IuC~G<X??y2w늅tM5T2-  "I`'Wnf{Pw1?Lc|*ODjܿGsR6+CM :wT A nPLPXRy@l`h07m~ !PlŰ*?žFPXnPXɡ]OտP?'".! Oc-q7+S[/v46`@hq3짏_uH$/B`m8L!+|7("Bw?g1Y6fЦ=kn{7V5{VcWp?{0$)!p#)ډl }VwNĻߡ)V|Ҭ^YuIւhYnSL d4vMS8 wo#.q)Ue{T+]dmQyۨS߿mf@G{?/a₃!#OIGޒZE'wI%gfm+7f07L{2y}oF`w%H`3Au;*^wu`GVWAJk1lx2^NƵ%斚] ЎgKӞd{eE2M(„څ!:(qV !}I74Me/K&KÃvKnT{ vGo~Oj2:V X n*>֌4&JՈq>j:|GR34b8)Ƕk&ʨاҕj74^a)w;z6{QVڈ/SYtKNy`eg~H[3I֢'ƛD~Qx-[MU/4TɲFsIr>UOݓתa<%g ~tRéLZԼ>LwĊ0A;qS/a`c\~R>le0أt'08&< JYPFU.@B7R$tT;>@\%a3hgiBt J2VhU.NL[ڞ cbPsaԷT|5^O}L3h#)!>Z] cG)E6U+y"Gi{_;`;ֻA܊N)E#bCk\^h|{:]9{LiS!`lIepU{ )Tz(b8);Lm :&ꠤR5ȎPJKJ B#Wqkwun'td:9d\ЄNNƤj}_&&t 'vW_2LXƼNP7u@,-Cb#zD'zhQi˥)`?VyGЮJ5kFTqJE#wiKϢ '<7&(2AC;7GiĽtWb~I-'}aE#MJƕc/=52{媻PyUmMlOy^ O:NDؐ I[-EXFav? R[kÿ%{jiXB@<{s8% \,F/ kA7"^]^$b4٩&^c0*P)3%W4xjsP^{Ba<[KSDTI|%5G7ܩ~asƩIXH\~xWP[k՘u23sqݼv9r%(J^WSgCL\Pӷi8!x٣8oJi"s`hÙ,PàᣦpCs6h Mh47B>@{:_S~ݻWmsnZZ#U $܂Q M(|{Y8^}(›핍~_jD-u-0{pRvK,SC*gUOk;!< dsc)[/-ɻoѳ}c1cAYLWhw7<7` Iw}NYݠvx!Z2qק[fS8k^Ѭ2wg1'哥Ό>dߣ9(wRكU+xI3_sJʁr1b`=ED5oB㤖'U፲Tk2q%Ώqȵݳ))%3[=Cl틨ɕ"ţ ,)C,5=ۺ x x3W4n`ښq}N176(@@bU9CnGH*NMS;S2½bkHm%KkVK^WRGM<`Q 7|7(#i6{sҠY}u KQr{$5tp\q^ʼnNm>Ԛ&ׇ1nN VXAɑ.#{{}Hwg`Ш`)$S_Bk#GBƗWoO&N>.ͨx NPȻ"gs'V{:ˀR3EXHuN1=N幆BmEC^8 %CDhphqS^VdX].զr1cPR׬`Lܲ4gp0}Mc_wJ^ %;a+ĝo<@\z{UfYR+'qހ~Z|/%fܣ..%z-RqC 6񑀳 | 6 n孪J Hi}Yꥨ9{CBԟ~TrG(L NGU8"!Y:n[& -DKOĖԆZ& ffKaz157n݂z]?x]OF7Gry6grļ7fK:e|DF} պt.ArO2[2X=_3A@]rJ`FJ)aE(2{ uKzVUAS|ws쾊rt0?oD{lyfs[#-;+&mmӼ+,>g &/QNV^)-oaE㒬VYTW&[kJױ <258\*[{ |& wJ2;SUQ|AorE/WA?c0XiW'cEV>KlI{|,s1; 1yJaY@"yžнVx C~@ETdd[aTzRMGkw4 "0 N׸hV)=U.}\g~S|.rm^oV1vO+C\N, /_!1$|: "V-D.sOr-r /FzW9#Q*d^ ӫ윭86=y=: cLqJHQ<;-U;{E{p!g{<^~,?4Iv3~q*\TzϛB-'O>yX#3BnDE[Kþ9zoi8OTkC^RRO[ԁut5/6=3;ze*lLAѩ]~Ķ|ytcsM.9R2%A7F2)Zjq1O?>ٳx3w:\<^dcş1V@B-m"6u>w~((m;#+}^n){PAi^Yӵu)/.f "W!o D>g=Q ;8گI#cr4쮬 F̵d{>K٥`GKرpP͈GpTDˮO{qfcTtƆIi4+*0sau#ͪfף`9b$", NsW!ڵU0BMs-VYzcL`A6v }tVb롔~3LT ÈuI{fJW^0=u# endstream endobj 67 0 obj << /Length1 1518 /Length2 8355 /Length3 0 /Length 9375 /Filter /FlateDecode >> stream xڍT[6L "!%Cww7=  1")%҈4ćzsZ߷fgu׾{PiHX8e0VvA<F eF;@ m@cjp r 8,A,ʬ(Fbe {?K=! ; avP2f h: `J [`ll@{Vg+Qf;f _*@{fh4-k% < 01jv?PKn?%b*;;,) U&mHC< x+q?C W| գY8Yٹ!.#?v_f\ ޖ,v=pyq`?ӿ,~'/ D{GxP oeX#g3گk~۫_?&lZ ߈=>-<6A^A>?Qxl_@Ώk @BA65AmWU$,GWz,y&~ix̌%>YNI/g[u,_.g/I)簚>&K,tS#|Tª_5]MB;-n,BpJGWUQ>|Hk眐.{>6p3(7 ()v6Q[s]/J[3!8KuItc:-@$i"0A*}Jp*ħ:|26;5(*8N [~1la/py|[\p)}0iI=7W ;2ҜuZXgʇ,m{ѷ3>P#jQdpyjQ_=!X8IsedS'pDdTn#hXgŬmNhhk0OTxX?>Eщځ)6͑rS.Q8څPcmuRߝW0gY]߅)ZLV[:nԚz5z堓N2 i \#1GYͮJBt˜z"s`!Rl4D)<'|TG/#pLxCi'z6bU ?Z Uc`,Y{RhxYm. H%wD/Wϼ%aȉJ 9 Ms9- D/;s*9y)\^1m6";3IcA|&^;&n igHbXl1M0bz=r< :Ŋ]TIVb~[1`8!bHO9'ؖ}R@gDbk-Kh/_aLc#P3˜7g&ATPZNRԌ|wWč:yM>ʷdTmBHOjj$^7]s&LOmEQ UUVpI evEyusF9Y.ӅȂѰܛ”hl*-a̩Bǒj"#f%ؿ`si ^lADEj>WsSg!pP>`_-ѳ5seGd'6b`0)ks|e (~0<hKpU ̓}OiR1o:V3j8rWUF@(rgOY"ؤ,;#%p?bN9Ov^XOfkb&"M9_I[ms^F߭s7jD&RNcxQ{tVq%0QI,`kfA*\<ܢ޿]֭%WΧNf@"ۗx#x:wQKl15[lD'2?Xɩ4؃ t.7O %k>簌Ua-~R  Eo@[ Ti7DV\A6/UR^ w %ke.m%f|+RDw-=1$abQ{FށҲ K˼Snog\C  "b5c}6fܓI&âhL] /e-'i:j#JvEZ(GnU>;; 8-c;IFU4^o^W[.m:\&biݾ59?C:x 1%qb)Vt&nU]MQB7$TM%dӒMG,̵XR.+`$]+aެ:~̴Tl["&Fomx 츟ax k4-K Z- AӾnvTt'"k"1V;$s a\`}%ѱ06O"KcoWN&f75=p;oj3}θNgw8JyhH_V`*#UN?bQ?VS5cJ/V-Ol2oC1@YE?֫)qn/%Mi.j["fzy?҇RJRҷ!j+R=[c'7awYFjZF>t-<ߞ2cG+x]Ȥ.9y_NP(p=>l'?/7݈ϺhR] 8yJ z7qNrǗG^Z;zfOїCvxA5l)7a] Ժkպ$4%[aj;DkK~Zr{T`+@;uQ[ù7|;g̻(Cgvyf[=$Hv ٺُiMs} j+(գh?;1ś5JLm! GB \cTRi,͘f0[^f{+K3h0_mѰW`k}5QW^Erz2̠tĨ1S͎F(Qo甼PIБVKTbk-MbH5o*5bsMN״zgD.g䖬Z_Y ZFxMײ4F/|hާԃD.#}iGaᘏ-+>iSCy[CCOЛgdR=iw*T2[ ~B  /u^ϙv a2f@~?6b@U\'aPMh h(6~)Yӭ➆D1E[`'׷厘[ }6OUz]Ӛ~dWP(( 'ڬ!p3-ULZ'X,B}S3a>;'5k7[ԞdKL N?>o'Q>g)'Ͻuo]q&c@"%Üwr0Lld:asfܮ3k-’@k:hRE.h=.V ٩eC 3O9OY8R@~m 򈤶4xwdn :_(nv명_bnUitRmTi[;mhv&׭ [BTEc8)E*3W˅6}ldx0dI %mұ_Ku(.P3rܵ,`sO]e$Jyſ8blћzGϢ4,+7xD}Ief㨏"=E^Hel`Yݰ9iϹ:x87liMO'墟Ab%SNe?Y ȐG3j0Rπn1{CY>Q"(糓=vXMSѮ͖+gc0AjZ#-m=aJ.zX؃MNb^5b )E~y}=?;Aԕf|*ߎR݁,{.\Sl;w1gꂹYd_7JPGa?_wksCiWPϏy)^(xMu\Mg\ è,MI!`^U9-SѨ+;no+c/<%$<x0{bõAʕ9Bs*|D9Xl\AeడXetEORH -^<}T>=H!7SKבmv5SbK ͇ yBQuʉمpJs^z Z:1 # O)n.3odѨNE0U({{S3R5[d#Ю]姌c׼[$Ḽ_Em,5 kuW=/\¬ÙFu$G().M h;b`%zkPpA>vi IApcN J!>([dNAbFrJ5% s@^}|xT/ RرܜE.4t? 옙*UZg*݊^W}{MFPqae/0PFlhһ{̏BBx8 KԂXmv.9g/bH@eU$}dlpE^ٓ]I:qOf 8*F65}Χ%iC~V ZWW/9`xbnwQi/i{x4RgV%j͐9Z)MXTeSBO&’>)15T=(wÝG9Jw?8nw{\.mLF }"v&O;EJii34HJ+3E,ͱpf[ೳ Ov~IíNM'|h [tL8Qa4YǤ%Fo跞~z;觃0q`>]qh,3YLiNyn~5l$R2hA`XF'5?i?mL,ڧE c_NRe|AOSi5]T5t!j5w)2o_ʞ"EQ\MlJ}ZSU=hH}nL*v04>>},|x[Ɏ=u}1cfZࡲ& 6m)ζ_a:oUe`\u;}+ذ3×Uj;L"[ui(ֈ9?rS#}&&|ȞV͍\ъrB͑;Q@ԣqtΩΙoKnN3Ht])ùUN d2{l/F[=fߦA%tm&"2E$zԔ=)y3K 0fZ_;wkjꀊ"f Bw}"7w/nh;`Y&8MBki3(T=m4Xc'l J(ػf~q鎖sS5 &*}%Z,ښ-d '@2T"b<·'`!=)h|dpK4#T7[u73F$2}] h\BP%˳ٷܙ$ʔ9(2T Zc^,0C!D"A\]΄DskHWI-ہNFs. eqG?h+#+]Sɤ -Pcމ>RT2_Šs- u VᦋGF jkC0~TPg%It]_<bZAL>35me g#auOhS*m;"{~Ԋ 6aǁK4 YIWa++djhT}L+Bͳ. Tawת?"U >hRGo!o{$6شf0~; 7MԌ5 GlWq?b# *; lA&5Z7q#=Њ@ bgkA;ߗ~ ŇqifZHܟOV1[Tӿmѹ[ wfn/ж_p&_2tp|Kłը3y 3w08;lrξxhA]8OHY[K "kZh14vUqE{[@fҍ'G|3 )t8H4Sd g.i]qDsd)T.Q4Rv*XQ ÌհB1 0LH`l-ME5 =fcF@@/d B_^{NS1]͋~tj5fH”XWt_$ۆۄMzh" )&Flu \s.ZsVl u6jEQxPs$sd@Q ̊nQ&~]bBEb-V]B+MqʮC>mM!h̦Z鍻G{b:T,zDujHfRWiى.|.DqYb=,P0 H1Mx\BY5q'٤j [Xk:1I*n y|,2]jbhw\FîZxw<ѕk7OW? ,*b2m`-qQq5Ex:gԒ-pm|p5R'~ypmpҢT]M=":#9A/N*#ywDe^\ѧR !ᇤeŊ}ofSrqvސƷN0UK>u*xWI^]8c^?^wZ6\+~P ~#qB\.#J 0BM" H2c RﲁGBqωi/XeHǟxKY(SfhY1pSV#skF Q!- endstream endobj 69 0 obj << /Length1 1401 /Length2 6312 /Length3 0 /Length 7276 /Filter /FlateDecode >> stream xڍt4D$6^g0z{6 c3z% HIDA['{׺wZ|{gww?ʤ+k)^0H * @ "VV8&b5(ȻàO4QH" @.Pz|5&bG1c Dx~d]`p[( 8\'B}-G IG UˋC;HqG s~ ЂLG 0pQ/; u 0$ၴU5ڮ0|;jkrq"}H=h+ia1<(@PO(~w(ub|h8׈`oYi'rq!1h_)akYg$ װ# aoyTB.`$*"(*`޶~ \Q{0= G䇆zw"vp[ G: cc<a~f ~Lu L+ `0 rU(]=eϿ N?i8rsd};F_U_,<a# u#|`Pcj.U@JE:`  Jpoc3#a:(4W +0[g%U0ه"eKxaC]=ւXSχDa){;ѯ5A?) wm[wwlف_o`0[ DƓjYZ/ޕO'& -ob:Ggͨ)M,N'kk}xmN\]K;c }g* ^ށCCB(mСJǩ$/;J"jZM-եYČ~,at@s\Cƚ?N`Vl:%J"[%oo V Ya+Jt)T߾)AgL)O_3I[>?6)cwjߊQAiPѴ1Hh?;9%w#T □,#NJҽ>YJ[3^>\e^;-28M;p/)\p,@\X#mǚF<)/*gNkG~<"OXc ݯe '҈)NOrDΔUiE't#8|pG}J͒ W Ӡ~;l!If # /rcÔ;/X,5|1:}+ Dt3n#yio_ɓ?90B0ͬ?=:/҂˨7f녉*8}??uJڦI;pNDG+%8IYtN#ϊxRjTe߆] Venj=lRkg_~=P)|ޓXl Q'g Lߢ+҄4=9gz :kR `ߓ@L]o|k锞u>{CnȊ;s4"c5(M3Ll z;Qnՠ} 1lQImhQݺ6I:s>HN0ꥦɕN[Nͭ7v7zc|9MfuQ8N2조̒IÛ൷nOJwԃ5sqs woWpsAs"p5۾7i_IQUYxufuN׬jGUx^ vɏVJ&.i*-t|.[}ⳟw:Ͼ, 뾡fgMJ9g ܙl>j9"U+jV~1={jgxClg 7|g9V+[:-۬BB蹫ĥTu ]-(~0xYٚ[/kh $8F+=TS7曑e2 }rEFDvurLB`atpX1oA=y<=hʟ<աokT87GC'67h};5=Ct8:ʋ&S=˯js[[>@PWR 3cT5@i#ӷن͟UtҐGeJӖR{CeխI1r:SGI9ɴ %eyY~3Jm~INUrH`#XіB=W2|r9׋bCCz ´K;~҆X&iu. ϧfdJ[rh''ZdQ9yȇv'8tDWhm.غСgSGOL}dOܓM8J[h0eIļd[qFvL2,>ΧuMWc*#"V1ߧ噅<dK)tbblFuV#6Q8qܺIs4=zw9֩pUV1Q^Xo W3 #YܰIN I6rq 6!3wBK2d6m㙴Ri .x`K%FksD sb#Bkʞ)"n~g||]]:~wsfm?,?j5zQ X8g5S~Q&9xy wu~_ G &nS&ޅBT۬~T Sw0\Od7ل\~vz CAt~ sؿ`]3uypF~RWbѶ43\ ׿lXW0vd<]wv!Sq>f"o"hgW S8VJj%:u#I#gt%syX^rY*.'zL{ByKwʍO5L8EyvԭtɂmOlEBw&xwIp/\@dM@+o,f^ R)k̿r1Kڱ#ۖJkZמ `"]rdkR7TX1ApU?N!c8hQ`U=Ot)w2_#lꆜ`e䤞Vah"ASwvcU'ߓԳ#ݝ].9Jb y}/v* I^̬\F CbWR`/>ZULr~Ơ~>7دtm9e`(Q=f}V$@KHO gEJƙ.VZQݻs<Ѱ? $jWH0eAk[V:5f_3ţw@&]~Q|'~ge,l_{'Nmj5)^HưGLFn߆.0?Dm\/0,,SZ Fn+ōS: VQ`S5sDՀ |vX fhp#o2hJ{bKv?u'g`+<?^I8(5!Lvؠ73*VF{swMĆlmb~ jŗWm#2ŬhUskkYxST~X >Q4~}g9H䯡h'X⎹{G,mz`'8P< $ī5Jh;8C1qH^Г2΅5tTJ/W"!_eKO]_ld=*OeGh {Gd])=Ī .R~9.!}w'ϒ˩;Ka4NV[c_P&C `GЩx6z*~lLyr}$~t?k,j3OIm4QOf bBmKh&,@NGF0\Q5aqL*|o$z`hO쐜"ޏt|Fߗ-(daN}G5BŭD- lrG%^%hw 5% mȡ"$ OX)ׄZyZ٥,w- |q~yGH| KwVޞ PH4BPR2M.V#uI[tUej!і{]#P1M1j2*qX;沝qPw< "gGh೷k߮V 9!Wt1.:טM72GYrǦFGHUZ A76طNL,0,2 ;}!M,,}H[G(? xs$֧T^ڗ! 5q&S}XҌ(D&ōpwt~<)ހ@D+Er-YpE2[Li;v—vi3S? 3{\CUlYBw8d?Wu٨fFiy\$G)?Ed_F*L}t䓜08kXs .d5`2 㻡vZ_?rĖ t*zf-- }oqjU")tR2QHfh"M2e?,p%Or^ VC14İGtfZy(j2>CjR!CeVcbS8=|߶tkY˭K=i*>@kxq[*l&WNy_ՇuH%}Wmuc~&LwRS}r +R|nNNE!W~bE?GAgä&%> ?ʬ.] m&,RLW=&i̓d%~}ϙMљ +"U{=EXϼ_;dϔ&V"ε[Z-+FGZ!H߼*`n*w9:Jl?|_QW7)g[s0홂zlCYHqZ;|,g]Y}jAi}I`$N;>-@pg)[O(1NlpLfpǗ uɁζ>KY0g1C•pw[nkۖr y݄ĉA ?u>fKy|2u"$o.L RŸmp2䪛:\nc5p<gm-ҙK_R8-zq n"՝ F/Aە/ɪ#1DkQ IWRc=.Eg _S!<2|G&sQu@B4 ;k&r: ;^,Ufh[zSIa ;eo/gA ?Roq@![KKfhhHjT^b22>s7*ńʜcʏjj]Xe x-if?̪".$RT3`.DiZ%Iȫ+[{wHq%a_J=cʑ>3?{6cTƾaje{)ڼna.n٨[PPރ nq]ɠ c? FkCSO {6"Ŗ>[Fb!ϵbW"Vo}x{%LFҦ__&L-d0[j)ϞIKdJlK}^vkMO uA XxBMeULk~c9-:t৭BDh9&$-V ș<.tr UQSo6|0yd#Iԅוj_0No 5ވ8wԿlgMڎpt}7#(>izɝ&nz$F7W\|F'92" xΤ@ܸ)ix¥wRwT>YXrk?%N!Ycn6/_q};8l+Ћo٫IS<>|~BӰ̓YSӔ]ZG=ԴEqk,k$^Cf " endstream endobj 71 0 obj << /Length1 1519 /Length2 7319 /Length3 0 /Length 8340 /Filter /FlateDecode >> stream xڍtT_.- JĀt]ݍ00 "!4ݡt|{{׺wZ9qvZ(_[ C07+[[.0_z1 ĬM-VpoY%6aPC-p_[!Hwدg(0yy:1b6?TC@VLD\F>̐18EoH4)/D~MR_o@D(0Ha B<0 aeL(W낀C?pLBh/o?Jx0ߤozC!1$D6aUX[^w9V-^M2m4;*6:>|8%5p䖥fP]ylO/Nzj?/X(t*0:yx՜geҘ^pZ,ZTdSϥ.r~!?@Ky۱{wij< (o^!{Q<пbo/YT.=;;MI\1Z6kL%9ՠ6i dGv?6OD%N``$N^l^?L+Fr/` ^}[]{:>76_-4z;ɔMb,|RކrbQM)[u(7Wf*XW4՚貪#:汫fy 놆511OV4c*.?AbJO^[ {I%YqPz^=M0j#8CV㳎8J徲Ffg$Z+]@xE!;;Yi@U '椋^wS)پ7X>XTw#15+rD7:n ]K/WI}8^sz.T(Z~:qx 0jJZkdrзVK28P̷fِrcuZ|xd.ۭ|WlU82{ʾ}:xQqkqnQ}Xn{c#[eGVDB8@X#q25dRUF7,~[{R(n7W weօYߊ%W2ByͦݥCb4.eƞCx%>ݫIIB?3Mj"2J<&ʺBkr4;*Jpr/-w&# c^bIO [;LiWl-p앮uzĶc/,nm\KdU4љ,l ,,E}.CH5:_ZẔ^7ĪQOKڴˡxʌH/mm;ΙQj-J,u7=fV\of#L}F޷ nfZʡ݌$فoOb>[{X7=H{`gd<%!gPۃ;^z`HH=,D)K?aFY:w Gm>V?& ?~-pUvXFv1-MN0b\7r5TͿ8/4tpP%# :Cً5 6JKoݏs[.c8Ovٕ\ˢHz3݆b6SD̋K>"bKY5i@:wk}fUE$[=o[<3aUaxMCLȝZ2 PV䧣^3?g(~ 1ͶnEipY6v}EҮLZX!%{ %Ez9Uۧ}y\w?CQ+%B-e^E/ػ;t`>IԕsGQG _8ZjL#=cOg(ˢmo" #8GJяR#霼&YoO$WՉ,}L<'TVDĒ*|QrsvlHmlxb-EE%%ɢ5p (?u""]*/"A]w'a7? Zު|I/Iý.XŘ]gԙO9>ڳö#ce&ce0;۬q *q iO?,<z90gi]2ft@s`WH=*8iCqA]J!=Bj6XF+ BļP vJyI)^6Ύvrܞ} KEB@>y5!$'p%}iMP z6?eVxڕSy U,@=m+)W^&l3ۈ`4\Wt(05?Xa%fb˜kj 1#-Nћcc*/#mq iGk-ܯ3 ٱ~XH@ebb|;)jkz HZEy]^L@; $VFŖ!MPW>`qF,4^!ZK,pE!nIzFv#?0aI3*bi.g`T0K_޶PL* z.JU DG|#- PXw~D8Lv \ZJÆms*^woO8o<µ˨I[v=9Y&3ÎO=xp 3Ly"HgܦwsB'DsʻNo56+4uť8g8NGb D=+|՗6ʦuMJi}q~b⠤ϧTMijL2%Io~rB"KήS7A珤&:.]\QNUB-}eW{Deʒq-&ίJ7J֢> 3E?{]³ʄԒɝirb; iX\G[c|4ԥWy 6BuEnx=GαK}TЊ7E^oM(?䑳p[k~]6Wp4`@Mɴ[{ؑenba,~4pӬZ3uc$\&\bT@U뎐[#F/2De=e=`1)~hO=QN!$9z' e>Fm=A<֚AS\qd3z,>g!%(ںRߨUk_spETf[qB}v]ɽYJR cMbꪵӂLqxlL^QԨU+-5m#G{_'WWvmӼ[Bq2c%tEi(Ih[_۞ȏf&5cE=w2/|ggQR!fg^<{N_FdɯrE莼%PՐ_f+7Y+>[u 6Η r,ui,hSݍ3!K0fΡv"B;z s> dk.ԟ !hS:*eW۳_h:|ܳg逗iFaV3srfdB |G DfMĥ#NB[agus08bc_dIH0]"(=ࡎMZgE[GpҢ^*9hܶ <bKZ^F1ЏZ䛬+kpvt̜Ѿګ+21i(J[mb#P{O$aB~͒qs+U1eqq`3i4|JѕWEDC}mk:=P2Y0L˴Ģ%(@wNgy[1}7ĘKy=e86w!HSugDEQuS{jBsWQx@Z{}Cѕ-.͛5bNDSyʊf!a\]nX$?4-zH|^Zp<647u{?uat}d7;V4W,.<ԋ̓Y? |"$7M9wT$^e+Ƶq^SQ 1?K!8trR Uj~ZO "(HU=Ox}QRj 8fjBlv#OJ cL`FH۷*w}HEר.vbqԪO.]ʹJ|;[Dv ̾>*h Nj).~;el U,mĕ_ hGE> 8e81UcB7I{fK?*6L>":>}UUظ>@BԻKyUpSH'㐤J*vu6:/9X  .*^^qF&J~t44Iw ;}7lD6(o.9;f6[=Lplb_P61߈P-qʿOrc͝3f a狘P~BHUIVS,Wb77JJ/vWq*~/0׀\rd> w'jtK|w-{vȾohvvr"SRegrxq+wx.CIܵ[ ,n7n4?`:ʧפCEu4~7jo3JUK ;(^¤4Nڱ͍JWbl d_~Gq^ Ս\(*GYبć" )(wFKVǂn@?N endstream endobj 73 0 obj << /Length1 1391 /Length2 6186 /Length3 0 /Length 7136 /Filter /FlateDecode >> stream xڍvTl7%1:I(;0`$$$QH(!!-"HN~sq~יeS q57+\ŠC$@ #s9 ,%K-X-@GQˮC&Kp3B>@"S`E&44Qp7 ! rbÁjH8FP'I-0B=X_E(((H@c<ŀA'݀C߃I?j ;6  ' 6Bh Gq6 k5@tEJ@`h/@y>p6+~9B}фxh u%8n V3B 5? K#|~Md-_i"0pa!Bp|AV(_\O/ ʀ`909FrAFjۤ%2` ") # ?z(w4PO-n_/bM@,(2` !7t*XHO_v^ @ ]n[PP>/ᯍ"0?PE0 nGzP0lV ?Mpi]R Cb,@C+&H2@@C7xoA(4$tGcS['k CL * ` B_hص[^o>U _T\MbZ(2Fa2:>-i N_kJ3k>;qN5 f}3x]C-nvfMM_/@δ ['_9.v|l婬IVIQeȱ<"L;{#LCR%8yñЙjKIv{v=w2>KfGJ>9D/R]A?S%s%_3xTf/ x/&n9_c9..&D_TRڻλ3ȫ<ū#r,׌VE%R#wQё0aVP;U rv*q~^/Y1BeojXڊJwg}K|i(14ἴ̱;휃ˤ Pg/ Oh4Xb'(9-Ciʃ;K^?OLp}X,]ΐcy,u>r0quzpEE=szuFLiCkރt ףӹsO<զjߑ+2]fYVSĝxpZڅ=SPȝHi uFU\c۠fD-5C>\Ob(zSy HҺMBs;&& Lɒ`vل fɆrGӆL <+9u8V? ش}Fҷk"1EјrFgeۺ{ۗ GLtL x/-&^ zRdYd|tN2Xks ().kJBMvݨ('j,qtZWTGO .N][  I)iLyլH=3 jR9#xm?EA,B%djQŇrGpioNH%WG e;ɯ[;Z YOD^pewzW .l'zǢ%yPUS ) 5(@NpF6}un']J!QwiR_ΨX Uvo8(<-8.8{bvS1:;潇g,39wRKeۊsnc f(畾BW8=5u~VŌV nwr/V8 .QL{lԉ*>:ef+!DmY,0MuӜldyk2!RQ/*M4Nd *!3}t<{y'U煸Riɚd/Mr?#s=2$*ie)^vY:M.7XH<.Gk?~Cb<i,="BĜG ltPIږ?EQ|{9 Co+qegP笧/-;*74TIdna1fklS'8FuZK:Cwq#l+e\QGܮ&Y7 3n>yM1fK2ޜ}^#w_!GWz[&FOq4ZU ,J_z$r>RV ACHtU>A˶k2[7yEu4"<3f p\FrdaU-6ӢJ̺6RÎI ||%Vnr [9zoXmgHb[jm nj5((~>U2<&x7 wﶎѼYĨRi=vo|i8af戼Ҿ,) dlIs<IlsS#vFF 4Hm%P?Yux0KHZ8BorP9Ki}{|vhV GY քm߹˖D-򵜳5'$h ~1:pں_ Yv3Zfv'$P ~1I\|ygOe+{vM2Gk /qz-$B.F?GkوUTjW?T*~gX ph8'D eY^C& k?#e':i8Xff?C2f7Qb],9FbIp@d_s2l^nܭdZK~/ÄyPV惌yhr櫘:ocх)Wa{/yf>qAX+t?JKMvsp9tyN@*auɽZbo=>-$_~7ݎ:62}+Ph9DuONeun6Icޝ@;ĎDU +(@ J^i]bi 9I'mq;Հ`9Z2&yVoUOhl^̛HRf:G{}'R}gXS;ZD&{%=宜,;\b͞Ljuʒݳ1&c*>|~B5xJ;NW(5'կ/*UyA@GЖ˛Fӄ\|P1//PxQ~Aet9r?bf21PМ+Hskd#gxN,T[wMɶJb!w]ef[..4dR5/Z-_9Wi Ė3kG~g.\p/^X^Ā$LJs_ Osr YKۧ+mtJ 밈K.OF.zh$rzw;_@U3(RPpiسLg0s6xg\ׄM-ciŊ }){|mV[fdA d9z\Yawsg_KNwRV<3Y [ iSK7 6ʫDҫ_xTptn+]n ȥuVloMZf119NxH[C..)+opy:~I֗q#PA;L hcS}i9WD~xq-k: v ):{iY&QܢӻԂ6?LM}@6c(:3Of)MY| ɫ QƬdn&&]3^i+s|E V۸!T=ǁ`?*;2Qj,u+=0_ja՞Ovlw,*8Q"RV"W;%S:jP(=K@]WAg]M];J@t"*~ڨ,Ps2=*n#uPѠڗNw/gć@ڇkggܯ K̶uh'MfmiuK$]enpG=XGͮz{,dV/hҢ]qDWD@w<fXؐW=(Q5PӑUWiNYMpʢTk!-زIЭ]=)8LwK6]B1q?sh+h prIxr@fv90ӿ`Uò$v2Rbt`+\]XVSDBEkEZiz *j;mBdK"G W /@M]4)..L}.\}O7F]З*WDHalP%*ea4Qc\vrRN-r2='9z4: ҖNKYۊUz%[~V^] sZzVBPVhZN3F)~=^| KBDqٮC5{z̐^K L{QwWK36?[)vxp|u@\-u^q1)TyM`p)<5`޸٪ge9Z-yzmW+h#Β6^nF&]m- N9!"$qBZ"l׽5vrFnj\=1gg z4;@ Ik(9Fè*&Hg߳rku`~nӮñܺwe@EӌmPs6>\\*ZZDy(SL^rsoOn<v&nb5"XI%a]* U=T*?w"P$n.Q0繑Hk 4"=9^Jd0{ԩ&붠:@[Æкӷ6REɌW1 |K([um fPܫ۹B6sLI6&wU)RڷGr) 7h1jxn|zv?nbLʐSުGd.fxv2"{πkY oӆL(;6;Ќ}b8 ywCFq] ަD4UⓃ$Sy%&Q#t+D}-s}ϑR}vOE43d"fvM7umԙ6'#p)* {co/~q$>kP}t c×4=휦FVJ4uNH(gzYɒ~߂S-;+&nKk 2Y(eA'\+O|gS:\}"9:n0I.%W@wnv+ gu endstream endobj 75 0 obj << /Length1 1379 /Length2 5902 /Length3 0 /Length 6848 /Filter /FlateDecode >> stream xڍxTT6"̀t "90 % H()] JZ߷f=繮=6;1#Re]cK! M(o;> EGm*(4PhyB"!1)!q)  J DxHT콠]F+#}=N(to\ n8p tQ`7tE= `A(qFܥݐ'9n>7 0#^`Gzn? Lȿ @`PDxtu@ gsBBJ'W"(w=psBN|P|{/= @{Cahj{C<( 54mV;*#pW*P0ツ@᎐_c8z ¡<*0hmN`@()&&*?}@΂ ;3#@(G{(Op:8BA( wv k> ;k4p῏XPLr*)!|’~I1 @HHH .. g{>#VA$jO\ g.=`׿( /BgWݑ' ۻAahz*Eo9/nD٣ՠwB3__v(R v4@//p AGC ~ 5Ϻp؄EFDBhU:}~ (G!nP'Ahߚ} 9H:exe"71յ$hQ3glGJv54#O *"y/} Y(@ao(};}frD9M? =J6d$¶L5z @r(='aɠG+wa>da[C [>$I 44|MPꈣa5܁"'Eڽb5~Z,#)ɹZ-H %s$VH,;3EEyT++Ŧb4t-ԝA_X`.5>1_Iӱhb鱸yZe ?n}1u`;dIMn=Gjƣ*מGtr''cR~ 0ɚh&B\hB:owR*B1xR3Vt`[*$w {ݶIr8Ƴ.zlWǩmKV9[)PadK^a${׭ ņ 磌2_Ovroh4]c; K Eە? PƘZ tyBϾY]H qn;r^HI@F̹!)Q!MmBU~)Tx. i߄k/QY=i%mRw?>e@^ 5* Ue [_EDw-kG*m8іWN#[I,gG, Tun7lִU 4}i)v9;ðһN%|qQ)=5 ,Kf+?ۇ) OS{ҘreGlUu=d֜M=etpH9};PhF/j$ӕ*RԼ4l^&/us]|Ob 765lkW!",k; $NX}_`ja/TL%Y1Lz><7lZ+ְ'3.E4O-l P'NU(K9I1 iFs7Vg>OE W'(J1{N~z 񏚴!Uq~&Y䟕>;xz`1) T>]Y|1B$ZFv}W}YU s0'+ԟ]1e=²Zbٿj_؞yxj3ĚTقl#nÝb/؞spqa*ӘP:q;8_Q$KLIt eWX?1uQAn-3=50P0!Jtd?Zh8_IWq̎Vsh_+ Tm9>m_m}-?Gyp*f:%ԏ-1mL2`_yD!vFAv+/iUF4 Յ@(wR(ܺC<+{hC7v}ƘXH66︇:T-l8rV~ok&x+!H`Mm$5]_xib:6GG]|̯yAcJ rn+4pn9r''+PCĎ-(ɹ,".\̛,_-l+6d6,p-N/1o_ač3o+~j /#HM\b&;}T\ԗJxr+Ew`o^朑juΎ\4Pn;bU $('<-ȷn*TNzUǵf6e5V& 7[(=Yy$BPMӛ^yD'yoZAx@[-րͱtZOעޮ.*nD5n 0LB|E1m5GeNôɧG ۳oI~$Zy%H=?3vd܀ĬBK9Ka>K^_z5s`*:GDB. ሳNNIU0%Q\xH轧Q_ ʕrl?9LFCmG z.=s/*^1c=w)j#b0_*aQRP񜯳)GMOHvFE(ܵXLVo03m7A3望ɡVQ~=#tHٺ!NccIբv$Y'<۵Ģ"%jN3 󔲶7s˫:8!f^}2u 7)8iPݝS9 <ˬ?HT=;Bg}x@`aѴr]jcYiPY7[<#8[8}1F\ OA znO?<`y20"2:m}'Εz6e'}nIyg@&J/&UQ:Z8ٸOˌEx]h<NV,G9M`25Hx暣e(@fuEAJ4QMpLc_N}LN;mfaMRƣۙrDc]"rZ~*z:,X%xt \"c/1Oc46zU. :(P>Y]"`4[rCY߫>AZ jI^)cg(~; 3}j9+aRV3G]jSض?fIS{pi'sIvㄸlXAG'r䡺ydlr ~s=ēv]ڨc_')c0dr W} [JUճOTWPSKN ٮ^R} ϕuTqXTe2bj0eK+;>_˼=I['DrSFJG @29/֕fscpȵe&-⮟j)iێNhvByFd2} /^ME铧j_M/ X_iGFVuL[vU\xPGzlFi'W\7d\Iq0_f)>+NiH5xf ڴJcп;lr*Z 3:y\ߩm+jB{p յ 5ZbkF+PLClݑHew*4q.q(R`u=aWH)SK\$/dkm,H{?WwfED~>1B94sRImuJ)wb, 4 XLw[TX֛/Rd,bܽIm|󕭍qPzlC؉W/q6__zxvP0ĠVh!Bc{Ik;_:gnfizo9r|Uq|V+5V1S:{mÙp -LՔ^ABzmeZL@`H(qHEo5iIKukFSdh߭O}&qʢN8}$lQO8cP\KXXi˅U 2Qrc=no9jNLF$đ΋%f$efo;NKjA9żO6,^*th3Ҿp9)x[CJͲFzv }a!V35],|ˋIpý[V9~)l`eYѧFv\ I}序7宒k|>l3]JWCzq, ^cIl?P(߱{ss!Fg̠ NJexގ6/hg[箄I{}n1Gy+9M&w߼a8Igj>Tfd7ݣUEGHz&w8e|񹏝1{[hreu%+p'~*8EoYk-h×tgu0s@--Jcvrmz[T|`3iRY]j97hc4TܐPTVnCga7_}oҪ,9W/,L'Yd5_=SkŦ _fZ#x^7$~5˚0M}dv[0U;zQyAշ̧Cc[޳?|-ӎwg\(\#mbf+i'0C/t7G1mvRa4ud'y3"\V{\,Tnƾ CFo}f0¸"k d#*j{oVUK5M,KR|3);"мYO0> stream xmzcpnmc';۶m۶m۶c6wl}9;[9G=zԪ^@Yބ$*HOe&!r41p6p6L  $!;{G 3sgſUkc  G9ՕɅхIJ&&gs @HN^CBV @.&35q4ȻZ[-LlL(v FvDo&3uȈ( *D蔅i:;q612t 7o?-4`hbfa M/$lMIOBN! \ cglh 6; g5GA,D-M-W3f ϾZ{߆,EũkEl-lJ(jhĿPOXEO/Hܽh4L Vf#khboYm'w#e;#`˴ _?`Ts3*T +=7ZHCzWXXn<;̈́q&ǓS:X%D|k uAU1mdAo"3)rk$x;Wm(t~gj~ÚSU#Ι^ څ!3/? 4@;` dhϞ. ߑ]̃V #e!H_zhL'Ƣ;*]=#PB=MЖtZ&ږr/`p S025 IaJ(uge<=ީb̏k(ljQflܦl+YAŀXVj8cB ]vVX$QY]_cҧTib:-xxxM35<]P8kmPOk@ 4繯JZ,)v:8rސb,QA,YUg>&ﲉKN":_+CQpAeLdQjF6J=j߿m<4,âr.q&_^&Con˅vx)StDZhP|!;a~R /{Oe)c:h?hn`̿qu&MbD^U5f::+OPۇ1:cZ",شG=&JQk[: Nwqvp+^$Pچ_wpDBKxZ!-"}ۜfқ_:a ъ 0{Iz\#rT!@! cgm8k /se,o N|Nr r0)(lFO:Rjex9vphҥ4|'~O+bZ3LXSf 2rv*AczQQ}%4@'E|Kk5d(ݒe>&,8LJL9$u :>4KҜJ'/-r|18=)$G" _Lq7NR^Il- qB*6Z hHa8t3TXcJnϵ%mRi/UF u}Ȑ} L$ϟ0VWSEKXs[ S/K 6u_?C߲GGM_$Ȗ8EiNB!BO1ϠI7nF\5M+![*.P󿃞nmq̟"+ .*4o CuNcfkUK'q7iTZW:h`ZWEۺp3VHltaTQ SZkyl`)?XD9υZAj-1")N85W52[H|vQAE?'3 8A BYb@iYeu<^3fp(ɒ]HGe^ѐ )$zλnvK | -J3?7|-#ԯ+(2,~轀YW_e6~1Nd2B ^!sH]nr])Ν"w1[\o9G0MiClRpTb] 52a[귦T@%v!y>Q*=MI f3d9D3:9TTya;5p iʓ\TEJe9g=9;N}fa4~n6}iާ8P)~Ejt F؄dŝ@$`N:$KsB&M#ֽQ scۍQ͢MuD|waui %*Yn ݮujߺ zPˌllB7)=5GAV]%7v-x#]c79.7aKLIkw/xuu:?u;xcd1CVRe~VVY%ߪUMs<0k>Z,f,)QM6z`/),]kN*fx N{ӏCYFQʐ>D:zz'*~',M!A]9.X>EHqW|Uث;ݏ)MCtƴjIImNUWTr$xFQ± ҂Sx_Ԃk)%+}>O҄79\tE@:O)5"QIzE$/՘PTzjW ]?͔ Tz>%#BwK0iLªj,Hܦx \_#C*'q|l!Ȩ^b!¼_'BQ}U eJfטK"`@^Wz:ЯyߜO*KiTZD$w.қRNvĻ{Q6N6U{U@20av%vf-2o_ѬtTtٽ4e \(`g XN_l-;9^*lpGA_aѧ$ӈreO3%/~O>N˱ _!J/Q!|Pd\R_@RD$e}]WLɔMޒ! fc[ŸN IetuU;& T*Z*n~<0t`Xp(6昼&( MJk) N'dFL#'c*MJ"ui)~Xߎ\O(7r"9 )̚X2vƺXɃ+Hp-:ɥձ\9#䭭v pC[p.x7wp{"stR٧ub4MWܙF^l*h=or4q{iChmjĹ2aKt&3Rc1nP1|c/~ r߄x #Ȋ$>]-ld<>4 T|ٲY ]%GwVGwhZ!%)}^j{E]P|r`yo6.z͏G@*d4GƈԄӱüŤYJ3ݰӘ6wO լgHyp%+/a^tII7&Qvx4WH%*DSu%L#ȇͤĆ-vr^.KI|0,3~eF9?3A`>&B=.ǝ'uM~ ;"ĕ2xC>wsAKcp"]B&y~^6 _DvЫtJYo~zw9w i *9T&>[k&~$uշc(a|[* qLt-;E'G;9y;v е'dfŲH]? anA֔LD_\"GEr9,OnrX }w a xJa^ FLk0b@3bm<@u P {f;|vg٭g:ﹳM[iY&]nv#ޚcE5[n~lp;rV[ÕL֬* * |#|4-$[s]Qv5$Pe9{@۔C9ܙdxP پC"ӃTXò*#OH /UHG{ƀxYl#Tvjd(o}~aut7W{u7dեad6 !hŢdA%`YSI&yget!ebAN*=lJ?rHQoEoV->]TwoE"Xu:}_ w[b"Y$2Xd MOxE/ mLS7_#}S-t"jQM7]qYwHW1g봢oܚWT\c0wR+Shś0^6l=xUM:0"UF ppV \2~̂fQJen'+J(&,UD)#\NpDs==eD/˜C|$Yv2$ Hafu2s0)&?V.SL$',uf7Eu<:s4rgh*b(e{yǐBɯv(cм;W(yM+Xأo$Ld&%EnQ-$dh,<^ }$$(~#ۻc1113B`v.o/Z2&6mV0nUA};l|vy6pMYSS_Qg%(=6y0\Q1,[n`R.mdH׭ ӾZ&ĥ^k0A֔Q:ԇfZ֪ :/_QEOi6yXu ^)dSt'< O~Rш{ I~:&ٜr3%ϕ-%!G2݊/2Aי Wgr;'[oyvXE[0 -^))w!/39!W p+٥!ތ>.`*`pO#Xav偫j$XǒgpV ZxU~;O! P?&ExE jIhV?'h$#Vs"E cU~YG!Mė4m M~2d8]:ix8s8rHYzAJ8PLMD,c%EaT鰼ԆPڃ_C6pL U JGeMc@0L(;2~cY=$!ȯ`%jl~&J<'m0(xiikr2*[zt~1O(1,nkG2#r7Ҡq;\DbJ^u!GaQ)Rb8 q:{uu@^ dL_ "Iܥ3{I42~BMQYܓ̍7jz[8Ub9Z@"C0I ^R4^}+_$^@5WQ9"Јˍ0Vr;5Mz$Z4~no=nT@?tM{4@]$ɟkA&=L,6GiNN6oz Ԭ!H?YQ՘OL>Cb|iD5n;E~Kp_ہi|4 *iI]6v 7Y[w zG?ґ-1]IcJĥ/ kLj0D /xB}wVK+0 \n ŗ'O'p (qQC" !Y_R{cshƙPBJ&sz5" ܑ&#]0d.mo4}PA>M}\I$oX{(2zNL$ofɋ b; bsa!#A2+.mhb^۰Y9}µ4ې٘s?&ͺ~@u:ld<5 _,`jpPI'6BUy}Y@$Hmּ6e85xQ5Դ8x$X2!Ұv=p(B҅q3@gR[zV?f/;xS9eFuD~ cvu + }oeqN Ck҅W={TMqsZSld} {a/~z w M6s@8T k 85*bcƯVJJaIg<Q^ Ƴ^o_ѦIM>XB[bp_8v~a8"ffjMt=SP}^ߺ@'y.za/y!cP m/B&>P'ԤarzrFn}+teH%/lL̘P# îqua!-j"Za-?Ri$@`)PGg@o wY_~UYćX髋/nٱt7YyA]Z8~yò-b5<$}YԶC̙4!+OStY;`&q?@"C_R>GlRg'Wfmh>'\:WnĽ4x{X&*NWk5,&]| k֑U*_e婝o3I|H<}V7QrZ※I8{f^J0FzLzڬ*Xw L`Sff_1CPX۩$tA܃(ʘA{[+Bq}3?U|6oȊ4-˽N,1'Ѵ`_X|i([a\s :eSx 7 Asj|f9z&iٛ: =sY qɧ<QcB[l_knAM۔BrQHe2F# 7*36wRFZ8-OSnlg4)Av˲gMurRkw ==x^)ҰTsBXEzq] }Ј$]TX-B`8 u=&OO wt߻F{GųP e~ qF Y],ť&܃01vKNn &vڲSF3N_W .QC2U(yL ^JYÞ <ɩϙ%g4˝?t"RTCKT3G(oԤZRV҅}X@*3ndE@TOJ!l@/^0Q8Hʩv2kƈ}l6)$b`v ]!ʉ#%DT4ok- b$MO ޛo!Lq)C+M,+`̤muHX=Yƽ=,MԱۓ魲]-6ܘi:Ko@oɾjgڜzhzDdѼO'v|me9kVcqG6J O9#2U(#CFEéz$PRρSDoPO-b"0|%,aB l=_م&j(rcb߫[f۹үݹ.y~gu+L6Ko͂?V'h&j=~]6,o5!`(G,`q7j8*>S&uc]gUXu+?DZHBW#dUdȹ[g>zU99m,1D{bDNR8l04HG$h`PC+p|qO \mh5[!ʖ z0tC)ߑHSwC@#d+r`̽0]K9 HSP@ \ppIj#^Mڸ0œgޔwv2#t<˧.JА2.RT$|w/zN,u[VVs>>/" ""3p[6AX!@` ƮP(ˌt:w !,n'wQomDJUL]9x!MpT5<äV%+|_Ep!$( q`X\$q ]͗H~QfQ=KKi|\pNxgA`s0tmcUMol5 +?1ڋ.׿!Ql(%GsM/~.5[l!@,7Q35xY5AUĹȠ(9^Ebpn+S4$ë-hWՓ^(&"KoS.1WIiU C6x&|e7~7u5ю:qQ į  choډ`: _?Xsj*Csiiz5Х^['sn6K(ėV^uq1gYY%l Ps5x 42mqRfqn?9/Ōf `;d2kbȽc݌ќK}B\^wW4| BRA@,֧Z]0dgWO T8Z >B|t!W4;5'|i('_Ցo٨(dEJqK[5r9I KCHrB*T[kuER5Ҁ?J}vz,<Uv$_ vL=iN.>elIo^]x`3k~ajpƙ uX uh7 7CL$b| jΧy+N/^9gF 1ʸKPDd+)'jh~y̒GPe.NJNpXVc< "la?Гpb-r1Ouk آ(EfW ԛd-īvCT"& F`=Z]0#sO"4fk(+͟wNAw>$& f14jI*sX8 &f<*_1n)W[{aah׎6F9X3Munl͓2C9[ص}DdVBm$,)c5Jʑz[>*/8O-XnF̕/ZcҖ5,[Eڧzz:99?:ogQtXO%]qtҤ|qgWTI6"MTd1T2.!'}+FjVE{_ f S&a 9ƅ x2Aak{b߾+ tV1dbc*އx}]D ϩ]xyeWVTT9y[@/̐=}<:~B;a:`GGY?U|p PPD=4| Vv2B+ڪOmf `&}/- q*ŵf)r^vuD>qQupOVe@PR)[+PRy`%Xtlh HԸ;IZLn84 *Dyq9r\dEj!!$ ǣ7Q!Z[$kLUQ9t-AgN03&& vh(-yFT`)Tڙs}HfXH'jKOIG$c)-^s"*pKEW#pMErulzV`0 "uM0':h)Ģ+*?<\'DAt=3kXRF bHJGd R"v p%gm~C b\U# {kqm=f׼A?:.`Yq1[Κꚋ뗜'?'(5CD4?$aq}P~RD@XqR_W3 <'ʑV rw~B7gKɕk[juɕݶrp;03˞>]`L_ϧDutڿ[H1f<+ʹ}B@ۓ2W#VK2y3a&:uX_KCpzTrU2^kn2qo:^L;N?%OzXBr)%Vx HV>BW(UUI] zѷⱰېv!}. ~ӺQ]]s߬ǯްkm +9#8q\o7|ՃZy9%UfKr M4C R Rv$e$3Trd+mTL 4aϸ %2RHӣpΙ=7VTV4 f}bۊ! ƾhd<:&|`a5WlɳeE*ȩG(+ӗUCA#a#Ύ@]vo>!g@A^%/_rcsId[͛’=a;P#IEkAM^.4:G,[.;$<0Uk^Ӳ俑 |2K \WѸc&C:hWĠ.LD]2ˌ9EwHb >:,v5WIeFWaŦ`;h<Hw1"d$- (9 J̈?z?Ǵa{s;HuJñ6;Jb࠯F,wՓ:ה[a@@vNKzgM:w;1kYT T=F7*w^@fk&u'YW 9/ TbByTO~VD&9dT|=`Jm5N l;tț=|+ sqV>'g}Sy4rW\Yq?xpWSgDyE ,+eעWyp #iҍ &.g%7VI83scޡ3^z soapiʷљr=}ԒApN<"7< $ 7L"񏘿ӌJ5(\%xz843T.  Gj-9ĖXzGX5ێu@!wh,JQLцl%)]",ؖhݞ=RزՓx*E\}(&nT#⋊'&#, %;˵@7G V8;+0P]\?"crnXUomÔGt$IC%PuU-S8;|襆OspB[BVYc$U.t:"K@C'ս}>GThM]t!XLPka#fJڤ$1H3v5g7hWl0;snC=˼l׽X_!cLwN; ?掬%$՞k#MH~JO!(/MSnQpp-S{ .uxo+$N_qdݴHp`hm"LT-_h]Ntž[ǃKj0w| {I}Q@ꌤ}qkZQ(#<}㲑A KC73ŻA.:FkpfG5%KqT՚EqT'":A5 }9;C xhxE^U ;>ɁV ̲Dn)7]Wp!x,W^&lyX6Κl*l 0&> stream xlct&-vضmc'wlvǶݱm;N:w;3Ψ? s՚k^FUQH:ػ{9YXyj ,fF68 1g+ 4,Vff8 +ڔ_A3@.&Op̭l1%emE)ll Pv32[]4sgpra{w?̝ "J 1&u1@^r{W@Sg_f=m1±̬L]&@ +{8MﰙRr if@nv@+`t:elge?:[CV.V@3e+67G5>ݿω9zL ʒbt]%M̬-jhilVޞ6XW0vu23z0KQ> ,<6V ;'Gh/? ­8ZWKUA[a]E43<»W+@ 2ػܕo!5N"ONŒDབUYnm43UsXVb;u*@b5DI\[|ѧBBB +6z_(C5, r<оb5uYȒ=>=)BI)&X]e?tyVA'zę^FҵV5D~S zkczL'aӽKH9-EQR)__BuMfmKI2R7$*QpZ^dFg7p!虢IeUBU[pdALAy =FvAL1[8f#sD>3#' =ˠ&b C\WIpҳxĊPUwT#MZ5;2yOoe/g_yoc/dt3#֔H4 Έ| W0ǩtQ@dW9lM9ˀIOO 8m4@I v2z"}~Tܸfuş?*j:@*Sފzݓ[AL˥V|m-ew'7X4Ry n9љp2$GJHф;X0M)/+:Νiv[ᠧF%g3;ČF @<+3ۜh0Pt;VNWݒ)Q,cM9@ől;AǛsƇaKw˂Aϵ Ow&[ph_oj[Q@_9'2"&5";tW,7it-ڱ; }xLšṀ%;̠| AxZ(܆p\B5%ZX\ m5-ߕ^r`x? xK$ iX9qҢ5ǿ$=lk<(:ō=7^#ma+<_28NoAP)6 dnmtotf77LJ@fS[EXE4Gjc̳12<]o8<Ё}rśz }KY^qJ8>H 8I}4R($D!0zRfa ϑ=` 9e}&,Ocuj 0wi#R QUeܼ4 ^:Éכ&6>HX\_7Z"k6$j|9>ZaN'tlLk_Ib`YIil<,(o|ٜxy+.Rjch&$oapoXLz&(6wXxOD~uX|oU?Aw V1& T2=n079\jeg[X40wgh.\Ǭ1sӝxFJ/pD>Sj7Ufħ'B/*uq i!7*>?Cust|?ܲ G!,􂞅XK=ÓvcWJbȘþ,6q*/P6Z91A)̈́mvzp[C)_>N]B{Sf۹DmWMMY [׎fqa2T/&Ѭ,$ <%Gҗ9$`7K9a7B-pVxw!ci no8&TިOP!O:L=٤zs7`ecEo ^@m1[3Nb;P eW  AMO]Pٻ]rGpg@4ipTCBqԚRaҽ6wyֱi?їc=뿱=-S9s%tA5c 5( 0 CNf#Zi>UTPA{7`u/)>f ?4S?WhEÚZj@$)q@3W޿-MoۘҦXv~ ڣ:7 kz#z!3hkg?xһ7! Vfsڹ/')VWw['uA$<#KI?V\%\ Z.=璣њ"֛ExZqqlG][y<qyTMx~X'kD!4g0Uwe0U2ГGmenqt|oq3?!7wS$ T4OA Muh5mMe_9+*GFR8^*h?uN}rk|'&')Nd?fy?&g_-\%pA@)vȑUm`n?}2Yvý%݂tԆxxe}צi2nDN 4MI_nXA!ش _u{;'oK (іۃJAbմ,Q`x[LӃy:{9zu?Ӓ`3drLSqvƃܭXfeM=aD)h>9-ЏR܃#qné1#C x1QX\pne^Agy@˫Fm"aBCmK4C Zш̣y/٫=EȢ"NdR{Ue󷫣d*)p̧p"Cpފ /*ɀ:d Z*YU%ZW΂iQRh)CQaXTA5#ft:8$PƲibtćGЯzԬ˷Wby`vgnd+km1'ks{}hPێOf^+gi)ktT% >7SxiM* 5xe~"bjT(:Kѣ[sE$YT~niy"xڐ}TWt)@y0F}5?IojT0yk!n nR_c:fyȲm!p|j,cϚ"Н¼&S#-WW`W'[! &$bRiiB<TƖ00fVLdZChJ հZ˟I#Nk9Fpr3"uK0Ib9xc [OS\IKJ<0՟J?/*A-\?mɾ4IbRR-^h4Rc4jyeS=!<+ SXMZ1Ns|7.d_şl& 6Qi]JYY-PJP\ةsf ?Vٻ:a*cIح/EiԆޛ0$= `._a+s舷)QWl6f}|nJo<=jr0/E, 84ೞ櫴Ø :TʲP  ۦ6W3fXM {xC~)NO~u9"?q{7u"@G=zR)WLq쵅Zt *%&PD!$+(a³û }'fbi/r8!o ^FSHU7G)p+&eˑ%|x{hmdՇ6I˖QzƃDo%I,$[ H;w-{/},Z_;p\Ym񰨔z~+.±p触0sb3V&dw^ #eC!D|}).!YOD[UQtŸ:+̽y *$(A. |-鐟m^=i s8ƨ|\]V Dj,V =hj=c*p[4ۿj`4V^qZtmPt_Of[ Wh1 6Nk'Cp5_YwƂ3Y(@4^[Ef<4KKp_ȠoEaCvt?x+9<_*Ym_iOsvASo ~H] w| &XAhPH-M*\TAQ?uEջmigLB1Xt_Գm$Ԛ`T#_4GUg(~,xo3ƼQa2+3@ <7lSJrǑ"N!bOȲ[t ++:ܕIn<1E߰(6` "/Rl| $'_JގGx/S!n8F-EˆP0l(p"Q7|\o_ʲVk28DJeDV6oXHҿ4i!v˼-4wI{6XޕGꕞ=F.o+{0-mDPqJe.tıӵ-$MJ']!:=2* >HnoKv=覇?&,~W~9AQѾ:74}I$HYZ|)E[+Gƴ? QSN(C,~EY,Nfc_>dܺT8'IAD 7,/J7}o+>>aVGi e82- &sn>`JBGaoi`ϣ2sZlIHLv~"e`|5CFOЅnW{pl.bUwVc#UݟF{oU6瘋Ƨ<սVbU:H)?KBaEw&_u pb43e9XGa+t)wd=QN_@e ֞t!H 15Zg_0M^ ʡ'OAж'TfY֞ eWřB*紫R!W,KRQ4G(aJ#E,e^a]3bg"43 Ŗ2~k1 JvHN-yB4v)F!<+0+am( Q,FI;}},sfbT<!ઍϺpwEL+ !C[Ԙ؜ :lPHxsZ ޾l[cj&50278Bx=>cQ۷wDgyЇnB*#amXT0j[`ٜ8Yq}y(; IȾ'jBMPO#{5H 2s$!gAӕQ_͖ZUN>n4Q"ж v>~: 50Xe V0LeZd1R (f}|I.b &@}81$کlUWĘ:V"`C@*},+U4V9핈cӞj:xM ք^c3X(VM!OYt\膧S 3,oNk]PRV1nazWw }Xփ_m3,T &轿/w_dLސjj/U=7ұRJ~zH0t̩v4Zh&\\rNuyͬ^ؤe4JdIe8|YuA\،])]-$pB2O(O\*8GE69+va{ѡNpð;sR cu # :;pǪ\Xrf[IpTx @^:qŻ<)e[+ZSn3/qPBg6&AD\cn~X$逍T4R#֜vVK(7tEaqmBM\W:)<]o OeP_#vO ]TG$u.ZM":e+TM_%\+>K/әCzܠxbBl"ޮu8]S蒙DE.-z+5|޺{,) ]~&N UF5ƅ唖Qr+.|Dsқh4\A;fQ$ yFc&O5'IdzF"6k/+hjr|ȪuUu=t<4'ZUYrOgߥga;?>R2$ טtn+34VLFcV,ɤMcG5xԀ_߷1s\ SH:->D*k x0I w[޶8s|:Vrbwg$uGxSBP"V4geeƏKTV=Sfcw0:! 䛠*A񌤰?sFX 9P6ۂp[AL;31@=7/kguDqWYYY1d)I@"T+< VX.m$sY0nss@ܡaVUSM ,kaΌJ( ch^>l v|([2y 1.Ø{q0`Sl=iE}ތN<Q1iG"Im%]. *敾e6x#>9{oP G(Xg~pe;7%Jgg|4sC .Bhx:harMG%@5 y `#q{&C8jhz+e HZBY5[9p_yGLcz@*Dtp#2 \R@v>z u~jFzszH]YE Eo}p4k3Bψ08=}Ynm"O,asYa ,: kGPվg椴$ g3ONtE(?4J+(&L%^o*#1cuӴ=sjV͉V % ߄;Y[9 [ V@CU~ޫmxrDu0KS5eǺ0o $c vSYq2rX[fu;2x**Cխre(R1x>2RH1N.EK7p`?p! W{L 9O;g/v~-jl ?{&M.P0;Y;]:Ęj&PtJZ Wy)nCN&`n.ISKfCm^m2Y3"HYX1oD w27#g4ÉC[k=AW||chGo.|)8y;jzdBt[7gRT.Ɗ 0W <&xŧT<{=ۭ-O{$W (@iEU=ްi'3OSM~ 2s!5R>6cd Y>HB ;$t*TN]zmZvr)n]&/q {!rVm+ 6%1WBbL <U@7M^:\]Щ/٩NHNaI+:ͣ\Hx1%Cdpgnnec`QM>٥]t?u͵c)@IqUN~Xsq52˫.e ;n ?c2f32XЃ9jۼ%qcaOqt;h8wnfMOgّf#8UF9*2.XrX!Z=0qνs6+glI䕵zߦ  )-m)5ɨMS0KET,nirɛU<gV2[7|{S,dnP^5!U Ӟ:/pJհ]=]o2kуfi[ υoόoX&%G?\9n"Xcv 1>ZbiU}6]I괱 -k,cl\M+z#AҶj Ž_8ݏk:S \mGe ?N! ƒM7]8%ks&0CmtjtG-϶l jě+MqEȄ3N\D犣Q\QI7HӢ$%v_͔Fػ -k榔iGö' )W0cTِr8k.U20t' ӣdN qwvvq~7{D,qkͣt!Ƕ,Ѭ3:gz.W\-L{ͧ7W7E7OK izz'':%D:1 #y%AF{Mˣ$ ޸uos 6!)ݙ'6*'-)O}ʮ>Us39m&JX)R5 DL^qzÎX*&C0i2y]M؅yM:Q̒M`K0INn\R蛹1f xJB׃QlJ42[,q 5d֮N];.'M+0gU56|eqp^|*l67w=Cw+T2W}9k?`)|KU y)АHwh?RUAA=pӼ~t3\u1Eo' X+*_qDvCPT z_ ij@B"~BdPߴDZKbWR/kF ~\VF$-WD+~A5{=(@$:Ҧzʼ*̴plR~8I*i{3 u{`Zq\<|aA,I;N"*f b۵)mŖ2"̥\p']t %zO`20& e˯-Q,{˃[(hre-!9ih/G=#5ܦ-xWxl%q "Jci_ﰶFso #Ԏ v®IP' N8%Wuon :"Nh/o*)|>I78:rf4+AɜC^_dPeY;H&b)_4ﴎ"TM32Vqe.`6_Bo,RnCǾPⶻrOnHtp51 dTG$=&Lj4>6?E;Ϭ/,^D"`]`V=y!(GQ偯 3="V#`W1lIɆ OMmXђu$]sLh^(9_K`:*'uF.IHL^ցջ89VBQt|&F+Ɇ IC0nR!fmyZe:),ڻ)(Cw} h 0Gh BYmH#+[m mZ挜 Xۨ uİ%Tyi1Kl?߂|Xa^ ѪFFktkAGטrooa"0Krzx*n vzrSE7vo+|Wꔗqp18 +oy/3BK<FJS,J U%L;\nIuU?C ͷ>Ej 5`P?΀Ύej\ZtpFhaDӱ &t&lmpoK  hCywӥ_g6`=я1Jx>?Vzv`zّ]F |'F)G+=΄;x\?r7Q,)X*2% j\ ,C AK(04il#H_sě\ߜIA6H5pX5dx| 5hz;7*SWHœ ;h6s/8$rm_r ~~/t)pT711bIEilJ.F|'c$(ok1mzdP"(K,$'h-{S64' ߔ:)-'٩ [[i,xY@?7+I+ gȍQǩ$؟$ɂJ嵵KtÁ5;(r|Ѣ-4WVsHwr(s A֯jI^MݱtR\W6oetEm18'[i86wfz1?\5l⅒*eV%{a|O+ER;aXLF}ٲ(]b,4q԰^:)0}_?N;J|e'͈PD=ҷꃌ \Dg#'jb%3L;ġQ&z{ɑ.(o^Wj_[ lTtfKlM93ю:.nǸ_̇ƜX\ô s՞nd]U'$!6E XԻ}k~/o m]c:pE,J3wq;WV~VMG_iz5+H M@ [xq  Mj&&$\ 흟%F1a7Ex5l[zوZ{CX>HTT!RwP,CSe`A1ŕhE E䆼2YnS[Ȼ<3M'vwLcNDm2[?b`/ʖ}˃Awrq4^8bOs%֒,Wj=@ PpVY(~{|cnU+83˶oETYX"D1eZW'おtT-ܰp*h1kÚD^e˼nmg(|?1o"r}AܹEg>!>U IAV%cYH vYzdй\,}Vfh?-,Ulzp}CHoMp9#P@4ӥj7GA 籸0[{??^AOJ0ئˉ_drbL[dۇW) Ph?0ѤlH׹zM<&u@,Ts@ϋ_../WЉ g~%rг_~{Ԗ&8ZҖ?1M_~]2@ *fiXxSƇDkd& P|S=D'׎%ZtT&_jTf b&wu;)QTƳM!;Q Dt䒸9dm=l"1$}yQϞmEh2<؊?ҋYK?H(jk|bI[.炄8k<;[8;9Z>INB5izN! [OiC<Ju9L0RRlC$ X޴Y)f|'G-4=S?F@NOKC.N6. 6!}=5l~61\לžQV19ʪOg0,GHw_P-&%k@J]Ǩp +sρ b{y,r3Sh,Ǘ܉D [󓍚mC9-MPw$"Єs41h+%OmN؆D]{aw+%#0.1 ^eʀm͡b0w'|34F6qu0d4cY~^qڐ} :sLͼ6O7&)ݧ|>B_tbg\w0֮,BDOQ5-yBS@6^ 㰺`尜=$&R\Cr.Ɯߏ8J>VwBD1SuS i/LnJ۪SbMnKN$x{FR[ҿ`V%=wIfe!IĖMsGטOUIdMIlNFs(MӔvJBw |-?Jߢ ٱ5\H BYLkRqo&}1 &dML6̬uoGpwT?ɯ *e_)ka҂c*ė8"j&Tw r\v+:q.{Jd!i{q.p Ȭ[7`KbF {%ɯ &IПX,|;gF*1ȋ$/Xn]DRtQ~3#{#f^"Im=2 وBw7˧/ʗQEGн7)Fl ˣg->PBQ;homZ n*$lUu5›#?- _QS Kc,/Z{iHGХaH 7%0zɭY?7ttpNǖiUYt3N4jXl vLq<|7)1LE=SRu͓RN;l6']c@Cv^ܭFI"ރASyM:u&Q%+c s,jԬt$Ը u84EOS`{6p';qɪ_(0/%\I&3/o}Vpݙ+ Є:Zp6KL{'M;\:)^!\ 3?TɶS pL}Wʾ!BMq8]N0GM8Z)˪-*0^u29G/E`x!isw~1V2\c [3 Pk!I@ٗd4MZO.|)+ J|}N%dJJ|djŭ2%!Bt1zc%aɱ6}])ndeVh&;ښ01,\Q}a#[p }\oZkihGW9_bk,F 90dQ_hQ<Έ?qFP؜P76u%>4]ݞ6WBLsw&ٝ8&LGE4 AOŋgw4 o4wOxgEs~'eۆŋ%\-$_=o)8b>0' yz8&e*V]W!`S[o2Q1L~9JXڽud_T> stream xmxpeݶul9:v:}ÎmFض}zU]csYkUm*2I{93;++Jh7v147;!lT1{O' ֔ @ hthڻMnnn_ݜ]\\@[s7%mE):@ddl Pr5䁦 gs:d'g̝\p(HH~STHAfy /Nv_fED\LQa[>JT*%}m5P~33FֱT]-ʨm+ne$EOdP6c\pi" c Ъ< To{Z֮Ь,H{_mMxJ&xGlȑɨ処su'DL#E{,\`,}>ڈL¥y0lr+ۈtu+F-1FDڰjJ%Af-SdAD 29 w[60_ ''OjUbפB'bilm \MqyCzMGFʷ\?!WĈ_3NM?q{?Ĭ$Yʫ\~}~$[ת#$/1F}B ߽@7@e.$ BY=ڊo\gY4)Cfۃk:gr84fa%ʱClX3SwAP,܂+wwGԻ6ׂ/Ȕ:h KJa>!\WnMߊ*?doO3M> ȋX@jO3i iwr̙ 4OiPjo:iy)IFin{)_F4 "2SO] Ju@ݮv\xguܼh{LtUy"ípM^,e7maL>"1xD,|Mk* S6Pn Ԇꞵ>O23@@S+aw=lfw4$yK"ջ źŴSٻ֦W ۀA٘^ LOYb(!1Ռv9s whzq«ՉX#A؟j+bcN%."]֏U"wu8e![rr rq~eD~6~Y{aaYW96 3]+G`&z)0z[H AQsPN/ ESu &EU< VhIMxmMcycVlͦfhˑfb̺LU0j6Gj;!l*qjjaaLSL(I[g,3R(3򕠓O}Gw&0xdJ8/YY )PwTӲtZ1Ԓ"XJ? @z=8s8i(9RQ!)b2qmװA{8ǰ#t\m^"VhEF`78{^Qm6L–؁čc(gey6V BݯIgGch^ܰ)9359 *} \@+e _|֒%էW,՗=&qF 5pa &#_~op!W^ۘq"C4 -Y}*G'2#WJQrPUMlS4;Gc~HuĊ3͸*řʹ, XauZ 3 a( 0S_= y&` c6xawD&~=1̞EŁ`k>!6cskUP Gm՜[QqdV&O"4c?~_yOH36,s@UHs^tGǽ,#v4SzU,HֺU|,○t4M2uQcS΋\kqD~bJ $I~Ar'JbM D8Q1/eg ΄..ϟՉ`ֆ_"04ux̡6 :j~K}sZ[rma12 J߀+ʓҕ S|y=՞so.=..&j #X i)S׌8آ!˜Ӗ1u$|ӣ5} ^Ѐ,ow+`[Gmj"KjmRIt Ha.wsv&/8JI N63ٜƙz1w%›8 ;~2eUU;US 0dTP^zsCM`PיNS+v ficbFu2oX%E{k%i#m^dk7)KPH>A )v -LhMr,kZx:E#~G6uMd`Brϟd# @lVK<3LчI_Iqe\[,}FelǮrm\N=:I@܉.A2N׏AF]P7(g,^)mvM')6[ηqWUr;8ݣVU| xt{+pL xKuvR?b(qf%5_{ƨK8DqG9֮]Q*,Bk s-&W<ЩGtf(yg6P`(͈kZ4]e5Küp?*F)쮭6cް$tۧtQKIO#WI؜}6EInd֮huԑ*`-\F}`oXumێ.SD'PF\)$5KSBe%>1?o0P,#5'϶ ٭[ƪI}7(=@Q;p2CZP9M/bo(#O{Ɣ歵hgʒ@Iu^B\C,yC=fYj[kvugȮO.  ?!q)F*!8t#!"ER`AbYҧU0z^2}9:dre'=zkWk wUSgֈ]E;+\F UI}QA]5"+4b]^F_lRrT4+٬1q$m4-X>.Dr:tpJ> b[{VhEU NrYbY[N~j4XaM^59ܴUbȧۗ3!l 巌r9G;Ҫ1MmcV.q@ǘz!fM&$PQ;h=]HfIjvxm1>]Ȋ-( hL~HUe^55WE]uQ*o5WkR#*+F-¾쏄~UU&w.C3x# w_X bϲϺNa5D+'`;-ZU ZJK.5J6آw$*&qob^ziz$M܁?ď!Sxk2XJ?<_EnFh~*]137i;JY<;z;.&:Y5`LPk8pߏ󞱺ŒЭd:He::YJIt(\Y &TUϒ,Z}UF*AH̘Xħs<**[ƺnYGB\ԟ", 87Cׄaxל2ܮP: r-яCY^w:g;0h*"Ƕ:R,RI0Y 6ȷi9tyCڛ]~'_~y1S'[U[ Jsd.ةq[ +i|.Wz'3LD>TIvr~CpWTϖVCnME:}͇nSqkO[GgH!kr_| 4 D׸aG~(YD]p|g:%J̄w7ip~p~tjT H}&\۝]'!; ۢ#Y^-ǏE%Ot ,'t8e#'_!tpXqΠ r0YhD)2[GDTna=+{{@ ]5k/!UBu\ttLQ~җx]TH[K)BNIm˼4Ѥ4e j G]fy'nn \ê<m;afo:^^ky<0GRvWh ZwsO}kB3MS L5m~1kQw 65Eo :\kAHm0}hd 4qK:W! 5f0B=Yc),nntl?A _4Jg1`Z{j[|kۻGGV=Lb|L1nHpn29%M&QZ`+@x(Ѵg鸾E笲@=]} 1B二@eCacQT4;k@dil5<]D׿60=CO\3x6tGoUo*wbo~{Õi*͵)y] H$%n8'Hc@07$BДFKZyw315D|ИjW$n&}>jW5JeQ6]M,[;,K]Xd#‡@qؓ+@ar3n6 K:kWЏQ@/,ґ+U z,ξ⨺Wmw\ 9 U7:t@z* AȀy>êe^DVOJگuoE;7(.`cvb0OϨL/7#(h̚EZToAh8ic8d*Jpky8ՀƬ6kO膾k31N\|}/hq%k-傝[rҐm(FQW`5!tJW::[X`] Z tXȣ'mm~(V]|Go~0eߐBw=`tsS|L I>/9q;6 P7[^[(Qr Ӷa͞xxhVD:d0:OQāqP*Iݻ*/Ey \2jާcq`bQ? H/#=]#JuݳR%n}6 c҂xc[g?a5TONЗ e}c̚+vR[~fbL@xDb*8 h~S{0)SJU%u?bfؓ'S >' SF8#"b)}BE.Q:*`fNKd?#dIG#6¡= ﺙyyMŵ(Hw@ ޞ a wTRTV#/p@BAM5$ҝ)oڜa찒_f굽)g)ų kQo- 9=omw~5eėVڎ 9).$@\y|`'mB-9% ?@᠆d+=K?ep)h^dbRp{X|5dje}T_Tϟ#UئІn<.[o1 6׃# N)Z >N^:*o p#{ϸc%և՟3HCPn^>ֺ#2 ſ.C~؏MoxV;sa3 M-UnE nG{4I-\`&*hϱW)<(xJSP'0 .xIfPn90b\jI`ifhާc7Jѭ+m,?EcS =$ڦ1=isw,B,UW3(5m렣+˗z ^qMMYݥՠ0@ERXʃ< +2QBV(utKG+;V"1 mCCuwge_/xBeܠa-MЗ ֈNaLj$"0)n0tuiqHE,w>8f~QlԐBxn gg$ݤj8nkay,2q:V8;ŏ6l3OrjCl>ګO-  ^ ./ ?\ٺ菂mHl B)Y|$|)?rR`nÕքa؄$$hCG,+'ա/z._G٩jRu *T;F*Lyl VV%P61#{2XC2\0*3[,#w"͡A)3Ip1MAC'C>C$̌@+ni_vGwKy^bz&+|\> =mh)^EKU 0ٖe*ꭘRi@@2ꌆ=KmǻM |:>ۆdL Ͱz*s_Iݘ3R7-}GoeF)ܒ!dͽ9!(44βl^̴1Y6k@Hi z(2[- E1e\3(zDciS.M>#X<;CԦCz M@gT;?/#]itS_^$H,ft0tChΙtTt9+cۿHU:F1< NڠgWkP;`S2|Z h5.t(,}VZ?3ZniSP"3$&&5֒9i@!Mj׽ =4RN(;sjsxɔ/[,ԕ.YFF;.Ъm A0%}O· 3:|g#6%Kg{S.'8W޾"Řz cj>E!q՟L{fHSN F2U&|6yiwX22iF4OvW3%/>|gK-9S;E_հ0+E";|b$qvIsY*(-;r%g# b8B' øc[Io5W0I=PC<^_M{GZ5[1L.uڬ%'Ր6᣹vg$T:0X޲JHg+!#^9k ڮaK( Srq$#g5,Gz8:\bHl91qjSfb+ rm'L2rGg Lyb I u E u<* ζWNI)Y|Mˋ-2Fpg͌ut4y(,d<TWV?ZR^IVazsqmY2sa%F4?UU#mK~]rHetiul`LV#D "F5aj$|ETu^EL8G̝}:/5X6_QO5N1_6B^ Xq8̝UMsYUЕH>nEqw)| a/$gxYIC/cjk3ά 4ŀR&rhJ"+՞c_׵$UbY#gÕ }0%o?9gBQ="Q۫F􀽥T|fhC #Ej {X~>F11o$upb*|S>a'*js꥾W1dE xEM' PA}tlpNҰ9S Qhx=Gu&QhRrHA6yO+/0wrL~T!  Ũ][;H% 1jRP~.qHə?X*͘`n9^^Rc{Oˈ4)0Gcp-b9L0a{x{~,Ьq?[1KLo]|vb`S]>(ߺpЯF `ˇ!\JT>Nf r]%ӏwARCܭ,?8am؆bko̡o"8'c#+svci>su}B=V͝/pA鄨Pqk$J\刭XΈ E"-nJusZ.k i&Y:đ \~%;MWK3rjցXƜ-KO q3 ~P1tSKЙ*wck-7XzDHc.>Aj1B>ZmEiTdd(i%9lHEa!¹b[ ÌI0.&`Zl םl.a 2fAٞ],Z]PS &`k I[$tBՓJ[zbC|Aud n ֟?Ό2jl-b,xӤ--l1jU]x!Pr锞BiI#XVJdɬ[_UlQS/Y"=u;+E='C:7Sc%ƽ q'ѪvYl憒! VoB."^lmb:( -qUQ-j˿&܍pH6y CRr%M6Do)-m.` 1 `ʧxPsa6Jێ")\/6赣YS ^Iv ֺЬ_YǃE@&Y>&9|?:J>XA5TmSdwQwn*4܁>0 )ds? PiW<PʸX!sPUdiNԶaޟ2 h=1)D^:^;eL{,o^1kY^u70 ,@_"bM2$Tq/&My}Z D8kFe b}QOm'!bEp?8OMb0>ZJW:fy1 'ik$08j*e |y-5{zSה!k0 e{F-]Z}=}zrpV٬!nƞE|=]K gN>.Th#=ud ɆO"nہPJxV_ɻcjhJbު1&cHyz#> stream xmwePݲ5 n,@pwa2$@.y=֭ӽzukRA vfv6%v^> '-beo'e  @fuƎF wpM`c3+[+'= *"I@,As+0 #, UȂ@N` he s1'S{;3irfG+ W-@I(. HK%vfEvglc@7o ;;0YX١7y;s{Ͽa3 r@C/ V6%m\ '?,c[+? y_,:oYdjk1EZߋ~Q3{;wdT&,mgjofegP?eUcog+Cl,Z}%!a`dsr}\S''EAhKɍ%yF c8V}fg$@l7  *8h4eKo0a2 =V/1m,_Uf+[ BCˉy ٦qc~0d-\OVKDK̬d,*WCܝBlh>`LʊCܫ^l0sT|5WQZNJMk@<;?řw <:#CڪyN.9)iNG.4(SX9*iLVGD(!_I.` )u|dpG`U8o"X7ɰ|'}KԝxCG2o벍_CV˗F2PhME)?|JS:ٿ=?Ǧsժmy{.,K\eoli?wEZqG%r˪ —cll^i$f"i>x^eo62}hi+Grw6(Hɻ`)IǍR:y"KDI;nZƂf: oR\Uzr4|oQˇ3DI:5 ]2zpe6Rs]J@^yC ( 9(jo(CP^XRKw*?XFbNI Gka,7fN\kŹ*s{,'3bDQpЙ&` ')* Y#Psm7vN,m6_γYomt 7XptW/' O圢iUSǁǬtv rNcfH+E[lUsSE_hYc8DإByCh{cZcG$Fc I@^o049f2IE(BbUjq[\-v,#QЭ,ǣ%hLN&pտFOŀTʖGDW/EJ%uUD.M"|ߊM9m9#[ +R_3$;OqoSG\AjOcaxgT:/e]f;A>y~7o#B}_j2^,~5-™>QgࡼPm|Y}|Ep# ՓV7,[+Eo>u{Li=3'L0OCpwTv:R%2?dDsIrN (Unk;3PieAFfs`5y~Dk um0܁|^Љ{@hTVtEW>A Ktub*hy8<f!j7KtGyvnn'q*c{FJ.F7͐J})$Z= s#~̛@wdpVMD"݃5`f`ӝk5MXl:y0\aVpr)ٜ>J9]S!wqYMmuO-i 0.Bp[bLP煡VwGq|lj(sdYXc^BQBu/:;>CZzP*JN`#@bZ0FωQ>M[ҏn\O2{B *)%ݯk@J5JcQS4]߸/Ϣ2 X A,faq`P."(\YYw"毄/ /8o_PݸjYH=B<"!Hb:N mc~fiN%"~Y m#yOd_Wslbl|@s\&z\ȵ~_;rr-&\6&An͕=sӖOYA=>"Zavrv%ވ3/Z)֍` *Uo0p1or!>*fZM@|ClBa)&ܒ5F ޭy`hڨ {TN0fAUv!I8{\c]5\h,h( r/+mwo\CG |0r9`LWlOA>RGش <;VU]+. V3鳲 l}mO>Q^nz RGi;[/|f5Ƅ40W5qN^7m\ c{jz"OYk 7D/0zy}Yպ0Hɓ#L+YS0W=,8h׉B |P"RNPX܉YMO~+(K+݉QI:]20oo 8D="ι#Ս6EuiH>(7yu"uSQisE3ƍ|`dgOd/;~r~d\ 6dnԝK(fZŠJKHr!džZ/@:av4,XlbbG0hFamRdӥ)l6;l/d 9aE9:./d|rT{JJ_>N$7|z`o)G49#dI"KI&X'->Uy]̜+6~ cF_?ƷI ys MHzz~h_)ҹs3V!:.Nn}nךu؞gݍhڕνè|OL7ܰA韶p]$ʸF&{?m*{w{Ch +rTDAM[ J &R͢N,zQ<1$0B&#<!j~D'Ѷ)S\b%NXQx8;Y_!e\rGdY2~ёL%wjrhR9Zq#Dhc[ѡ萘pu~"q&y/-6_-Q_E{fpX.?d]3rAw .Lgtfs~_b)!Αz~`C2TWk5̜lBƳkaeO˼4?λ]ZKb\֏åAzOqAtު"߼ oCcJEԢMo!e lt7,WUSq»)e2j]\:T_k=?.rƲ?m| j冖mdP,o6&vNgڷ o2(;_Z p1?2`3mkɥFʇ[d{'A 6[˽F83R'F9IYduﱆ֢/3t0^IU:uԲ߮LJߦKD6GKe5'%Ci[Fk[o4#TmLa#Zsڔ^.Qp![ML+<;ߒi;ü5@-OkM [FU\sɃu0B@!M^Wqcf۳.0R)" ~@sYG~(-lcp;-fO9! Pr q@Z]C9*/nln@鑼]CQEXL`ࠦD*q5d7[FxM( [|`/0/`z '?>S SPkȇ_,DlqC0~&T:X6ːAs2fwiS ;~TGe-0 t)ퟥaEĹIC{[ OS?r;l~A%Vh)-|O2R"•?>Uַ:t$Z5v4E7k~j/$z~хi^fWwxIYLdm6d#6$8VTltV4! 0W[l)ḯ{\աrY+{M B:NnkkP =I`z7H@L}$ɜ<;:6ZEq9hWB%NKt|ּ+! n&»p-yġ!n^qʭDj5{)YؠA(uv*ߋbeJ7 h0rx,*PX8(fP<՘fM}e*߾c::Kec])%Fq Y1ŏm^" $ViLLe~ b/3)4$^r@k<\-W^&p[ҌֆfJ&cxUtU|e%0#Pe{guΰp4zgU[>!o{t?9{[B53nUaqyC"e C"~+E xݨwqWR@0yjDM6JF'~ -G@sd;~r\QƦOrXCNnd5 vθtN4Ƥ1ػ]OjFkvք0є٦? `tI)DC]S{jzb ]QsMygW9>jҿ7Dfij+Z5Q$|;ʐ_\HLK#-f^io4^b r:vTᅪZ; ăGI ~ޕX !^~ _Mlj![x11-} _yU^!VÇ؍{E,{d) -|N Xɟnndؒp@D) = x}XoaxH]A='r1E8N\^ןF {<PPh!1v(Tⵚw֒#αߙ!eY}`[<39 pd_?q.2W`URXԒ n h3nwR۽%uZuQsb9Dk!?"yNk|)f- rm /J5Y23 zϰBaxPAO(}Gab/Z~*S0f'F_ 8Xo"@QϏ~Qi^xhܡ[ vۼ j4̚F=tבWm~0;\}]eNUyyXݭ"N;4"M|~rqd>s!Szm"ro^Cxvob ng+D6RJiǍ3{H6+.\r=_MkAK#Eʫ]ĺsd6W v+OQ?|R{O@ǧu߈9P{[fS@l/ JKb0K- }DoV>FS$|s(ۀ {خʂH F’a }l\G\ 'g\Kz-]Yp)Uez. endstream endobj 85 0 obj << /Length1 737 /Length2 28231 /Length3 0 /Length 28741 /Filter /FlateDecode >> stream xl&ݲ6ڶ~۶m۶m6m۶gڶm~{s;FET$We>U+=#7@E\EHCF&lfj`/jj 039̌L0dG/g+ KW տu[#S+;+g%]ōٍ'33 %%/WHٛ9݌mLV&f.fTsgտbrwfήf`SWW0MۻpcmfhGei=C01LL\fV0 M `H053V @)`j s05s {gITl]lBP-?b+q+O3SE+wuv3X?u33rfOMmg2Jki+_C[-fo`jeoPq[#g[hdn03?^HvavcbgбscbdppW&nf.?/2343Y[v0 h +6TYf^A458¹W)ß 2۽ܑo%6J0;7(Ro絔¿n]1RLD&Z"_:ir>d XÊApՅG{ *= ,o8}ZY˰kc׽5]2lˢ +k-9I|llѭpm`+=MCݧy"^@9|[nȜOj^脭'>֪ni ] @i my1b`vACq=u%WY AI߫(VdzI1)gE.|;dʙE`A'p"p,@  I 7f\ݭ.li"V,Y->BlB)+M`d ~tȒ 4QgUc5|_^U#)`urk@e #SNve4 gX2-_8]XG˹w[v:U$2JQK:\ћu*Cx#V4O]A'uUmzrli)Nl!F"٪ 4RR2u`sWθNm#yd",&$#jH趚i8\eB.\.n#ĔN&ћB?kg}8A.4D30Er.Sj^ws)%~\E-!-/YŭT_'MƵPN2~i@lbV8ɴu9>շQ}+hq'$ UvWSh~;Vna $Y_!'S`H xls0ˍr(XLcXU2 ҋdǂftw9Ch)^jpH_Tؘ T`> ˭'Nvܭm ^o38bB?,Q$Z۔hȉ( wih霪2N@2=`;i?5,ةh\wzVg -M ob*uC[9|ndݶGb1z)v5pǾe}pPmYrôZD`V΀C>1ޏɼ$pKcyd/U`VCO4lTbQ(ә" P Pl$՗*m)1/2(I=|ɦ|wŖ.v,@D=Gb׻19(3JD r+ra,JE#| 7h=|{c$g>:% J//wUO;}7܊ hGX%@9q!gRvKz9`ysR:>W$`J:w3?<e!!GFhQgeKI# +R gK$$a!d. 7d3=}ęr]?CMCI)OlYx#a veW4g@sFB񪶦{|B-),[_W޼]s¯PP#`ٹϷ h+Dx7L.ĉCTEf>ZX*z]o L ԰%!{9 ~rXkE>/(qb‘B =㒍X${ "OU|ͤ>CT\:XQBn)Bn3ORo@9à^[ lqF ծYUwhpx;d|!MY-Ab ~b~dRX̜ɈCnw~`n&3Uh"$BQL2ڨckXaS%wۋ, ^ˣ$cUEv {i՛.3W<67?mBUOgymGe'clG1kњQ\ld"*"Á۷=^1JhxK U#q<6R/M)ӱt4>R4Gho'XT4Kۛz.Xs?g렲Q"aEh& }xzP;5a rG\1&f M~N׸sg>寂]]zà1gpR˱"b'N0Qa `u8`01GɮW)2&+ ;ug+|m ΐF,| ,d芾ir09.1|]iA_uR7cfDU[=ս[1Ms%o pH -0RDjv e&G2"g*@ໞݴwcPъ;틔rz 1rf+7o"HX9~=x&&w>F`|l[eQxe>R븂[N!;80% Ҍ \3LͰC'3|:acu)%@6ƇkvƲ'{'C]3&h[uC?w0AT=/0es.0fLc׍x4g$6r';+G- _рQa;y$2QXQ;QqpJ)8`3٤֔ [?LB']D)i1>lM zJN;V]nw쀬j}Vj̽pUǕ.P ‹[4<7CKQ$EN T7:brxol a IC/Өw>d/yrEawMzBKKyC,Rϥm"&Mbun7Enٴ?$餫q[BLszo B34m D"-\84ZFmb,5w^4*QN`M䤞RGϩ)bp:cZWJ&5 5Rc園z{ x ]( xmz0_t/|)eXwnf:]Eg̪+{ 7:_?(%(%28{CY? 9]0jI (]j4f߫%;X$Ʊ|" ܨ=4S`"USqⷙs5W15,Պ$ tv~V=ks 2bk'( @`luwA{+Bkp\QJcwXVS[#)$(rz , }JdbRɒ?˕zOu6DV+5zgrdr֤4|rLw|~4*wj;@4E#,SӳW@l &@- @"dAOwtb/P'' {a<- ]le_\Y%rx1bBPXR<C$@3^2iKY=qr4=^DѥM}G[lξ&EsMv쳑V UcJmQǙwU~/ ;ȒXCsmq2 b-3ξ< +L2nCXĚe'0ĞfIʾb$پt+= ƻ7]Vm N<>-~:͎x[ ̆S#5ﱿWR';- Qrکd<" iqNaDW$:7_T)qS/ yoE@Xc(4`4 }AC֧[acȇ 3+oN(%.YH3ϮѬ_"rW1K*qrrQB?hLZL)E&4~1&?n]{ȁgKԼuuHN" rAZ(Z!4yq*TR Áڛe2=pYWw+T4]aKWAsJChm>ͨ) `@J$4|>c<[SQW^TN *^d* ˼d=*R򬄤®b@/yؚCPįbv0ܼ5/V߀+EU+j(/\?\8bϾ\ hG \ IޛVhZo#?{bz Q~# p(OEP2OxWC) aXMS߽0Sލj+6B[MwCl;m ]J >;j)w%=`;JŶ)BڎΝFzsVHF >Kl wZñ n9%6A?̀|~&h*gq|OKޮJ-44m:Tyg[))wL93&$)T:VGAziVo.ZhD\, X]c-Q 6ȒEb;wN(E06tsrPqzSFmlᨠa$nkPyr,|cs||GlcJD_/85cƋ@Kr!sP)j)l{ȵD 'B:N mys j-E(¶?GPNp΃@;ߌFXK ^]up6\;Q_9p/T71,DHvm)+ 'TRg|=E}ax@'FZ%qhB&3GOL2r-~,eFT6ʂ!l$faYac61a(*ea2-8#U&hy]\Iq~C$;D#( xbLw(8,yi^<[' $٣hЇQ \V)43.1)(\=SB!3P0@SOxEPKOյ |[ >ccϠv7rO#S$!+Z0;SwBSaE75gmhph&7%Igʼ!Ng_Y^fy`wmm/Xg*A9lo[ =љ~FJ vM6N.bd! Z ,-6o Wė=q;JrIWҶΰCVp\?=4؏=~<98i̿4U 50Ȅb]L_#p$ZkQa<%~/Mm[5DFGҿj߇zlƉD^5uk B!#]l MuК!a( ?3} ,D ,IYI~p~[Ϙ>\9 oy"O DHB>9=eγxQ > ,£57MۡR}'cL*GmÔLO:nHɔmbWtS%{(Ljŕ' J`*NAHrQ]qY . !TTHp'҂2_l2j[ü䣩3<|PaǮ[U㡑΃D ! u+P*u׆5 Yuu֢}z|$^!wC:lϰ%˹ TAB1`ƃ%!2ڲdpLjwtk u׏\bhF-~O'+.VɦM"jW^JzJѵ+ ~N;p b1-3a5 I'/wfZEl||x9lq[lt>E;'q : 9W=Jli\F둤j\ Љ_/18wy8C+Sc$.8L*= m2<'+)ߧ 䳚Æu~ϑ@_LwPLcsPqdH0-I9nS5]F.&㫋C)׻Ak,\Uba8TkK0o9<&Hs PtM3f na kbWQË3+j{~국5ې .ԒRϭ஝c\/6N*Uu4)k jψ >hp!'ˈ;2dR _*!yZtPp>C~Rw5 !X#.<+Qk\_YJV>/_CQW9&um/vNlQ '$Nj^Fk%<^6d6ed"cPVȃ D1uWN*Kɰ|Xxaqb JxXKjj`j2I Tfܘ|!'|c*?`~kShɴ v[NiT3KgTQRwPډ)Z^vU*JnzHuj4 ALz4UwWWb . g E5򴕇E_JA>Qlmol#[/zipΕAT0k2Ѧרff.D.ǘnj3??5ZsH'a9|Yb~M+Â⟇]NQ߾_ qkH!e_/6a 6/Z:mӧ h9 ( rSZKЏƯX=!YrQKc٠mEn U [+2MLj}Oԉ1!/z 3R@a-襏52PCo0A QuaD')#7צlՑ xs*\3<e@҇ӖT;zP(" Ħr0~5\s'FPb:דy6@pZ4h IK6ؙܝڕXswR1,WL&.\tjUxFj|9y/o}zf9| )5xx8hiTw0mm!|iKvWJ2O|ֵk(Kno5No%g 眚98ZE`~ƯrwWppAe+_bl>FihŘ)#l+.M{)\CS#X3ftY˗NeQ:( S ӷ$JkXB <)Wd%~Kwx2g:4L?we@._M$tlX:6 s:͗՟zy#,z<~'̅D^,[,tHALvv/ԟO" #Wfƃ=X1em􇱮XwҗtИYk=Q=TƏXr1JF'l@z9&o (>}fafR?,~;Cz~1R| kw h@Qk&s\%Ȗ>H?&2>7Xn8d+j˳nQ3 67m~N)Q@w ~/'|;R)p ]DkxxkYd L.M>#ۮ;̅FI6gY88-yCVw5 CyT -3J-9'$.> t$y-~I]?y1 1'0Vcyde&5+xhI6!},7?x(n9|:!e(^K"\iIA*8351$*u 4ƨ p<$%NDDbBd.#J_|&~_oWO.JLupX\%<΂ͺ >}S"8ŞSsgIlt-#r,ɕBmTI\?=y-+u 0 "$zQgz\IsxV'fxz^d()6Al{cm ':+~np|; wR;߀&{oiUIQ`@j@GG},(٢uWhJNM 7 s58dT*ƜF%/&xcIrD<% vnrjy:O+Q;G9T%Hmk0gZo$YM)= 94̑;6"]n$F㮐vӨZޓ!e!-fP-;宨,څggggw _gGX _X]+!~LK2+7wjs}<?v5NefȀ|#2kF9Tv#AƿQg1j }VÐ$Sm,!3nĄ/}0ZD4([hד8p7o5GrZʞ rgG#' +>~+,tmi&^m}kPk/LDۘȀ̗^\{u,&z`{Ƕn"ԃ^gIT|&J3G]JChUVf euu&S9F3JAdte۠MJNxqM7bCĮ4.}qE(Ct<^: J .QFTwAZw٨y@rqGdɖȡ0?mnYAA=BUB-n^_ʧ0ZBw0[qΗ؇\laDbԹ>Ŋ]u>qm Vk> -TQo ^SN17N-<3.pqBTy#?Gr˚ P%gD3njDމ>ns--ZF56H־{/r: @=^ 1S Bύ 6-vz\Ws,`6Fa l{@ߟ`؝%icYk0`uWݘ\ŎWYY+\p+YI.Mjsr۲C}D/ůF 7gۋosލmf`%7>u&0K#Y6|'Pl8 )ze#_m=?=PE5k.È ̳vTXh2 Od+8g] 7湈ia]Mh?"8\]"YwmP11}"V7^_2:\rAcQoAHw+v;idy?keX GtQ/xb YmeX [?%%7cSawD6XG#lǚU%'yddX^Ϊ7_KJ"2\;CvOqT($G`++ܛf`trbP zPVu3Tyw8Ư(CեDMqׯNn_5'|ƪ)R;^PPv=h)y {O!+)qɁF Ǐ:rwN&uyZC4%PڼL1ΘgY_&5Zz ,g_R-#y)@X'/)4>AA,=@ !%6sTsy,Ru1t W9l bSsBo\|pGX!ʏk0:M7ˋ?NV/'JH0R{[i^qBp`Kp_4!m~Lq zkR19Rifr}$ =N*Jo$EɈrD (]ƿJJO8iު jsS,".: |D4EWk4F=bqB4 `PSߍւ /$yqaeb@QtPkN ZP֢5CRCs/@W%\3a]ɕDȳG|wOL[f:+,7suʿfXq} X=.꿏Qt]j% Ztx#lT<~9uX6V_m9$6"p4d(6![RO{aV+ZnG;zՙx@e-EUۓw7YEP L-K$U(IRպ93AON{Jt^  Έi1oIbc< Tc}Tj\]]ÂDqJa)ƫR P՞h" #NY4mNWSP*r}Lrԅh2dFG3|SqYL_ӺX}󈋬֑i :K\1Ʃ}aß-% qۍ>(Y$44s]7ͬLE3[if'saUs@8AH T˫]C7QƼ ڞx d\>&:1.|8."!xH#>SV/P$!YMK-gFZT8B~{OanpE~}&ujHXuTg&RU4+朝7?0\ sԓFgʕA3{ %^ºj"v:!p~֊-qnCCS]ˉ鬮؊/+y7%&&<2}➘nkOn047k+Atk2|c.fW]AĒ}%ݪ7\MYm0Fvr9B*N iqElnL +.Pr$%%՟n?0.{_=\>|Ls C6T_~3 B=;~Tb,:sT~,ͪ/É25Yw-pƔYac'uXf542CAٹMna%zLEA lZ VPlbӾ9iyʼnޞ`"Op*`+m1>"UY5Tm'NAnΪt? HNyV ) fAc\U^ .T3 o mĖ.[CuR17mP<^ZX*yt,&25@m50l}qOVʵXJmo :s8K+Qe_k2X[+= wπzT|Kffjrp_$Zc,(.hfIԗ>Vk ­F+(N:O| MZgkЎcx 礩TR J,<"15@}/J]Z_hLzJ=LsP,uhq/l*>WP6lL fyteX>;!N+>*ݎfqHZG?.§& lL~2(e&[ tzq~sqV`) _,7Kbobsc5-9)6JGgӞ~MՌ,:Sd{mҗ_4 ybudxzb.[fAhWox bs=evK9} 5g0]v(Dc۶m۶m۶m۶mɋmӳ: y.|XyWju كqkPI\tA_GMו6HVN-n#@i8" "v>nf?!]!a#^Ր #lIWk.Av̦<ǻ/7'ZVH!O ޯGi|iNK ;n`|~[yN=Uy%WS ۂrD֓N>^B ҈Q#`ſ Z|v!t5O駟[TߴxPplFBrVn6а Bk_zxͽKV1I]gzWN\~0s?@SUߪ ՃW U0%bY/aUZ]nfTXg w|> -)9RZ]s}~TوR78P#؁_Z"LɄ"Fۈ*x6S(e^/`a7Jȫ*)L s" $7iOa7M*>EHd?)QzQjS.bhU H6F_^e4`~z`r93rŪ링oW'5u~tulyxȭ٧Q(lsH`?~RaIU$g@G\t3v:$JXOar,3V0>q{`pw$ǫ:u(cGtIҴ (*rD6Q#Ӗ(TIA)mr2}sI=-5䩤,v|K1@Yd3hEWG" u=@-bq˨~sǪ09]@:v:me׺Lj2zcB \W@Dݨh(kЄd=g}skA^lcDJ}Cf VJ-ףjRTBxˤS~lN pbNE\ "LH[XPha01)s/ eN< D>|xm3 Hx`"6vgAP+DR| O^x*% =rp#[^Q5KhşhT|WaS>v@^ A|\Ap '-с T1:UK0 9%ẀـÑ*(jm>!{ar<[h;~_r@'fUozXp`Ȕ=QM26;ˤ=tE)~sw7}>;DAgzȀ07o&t$"Y&z S贯>.L(J|8ql"%O\< Q 9HQJnA@zCx rh+=9{7g*!zTuٚ.d 1XpIC -XhuGPRкxY6z;4PrߌRn;amq9ME:!=ߘ6l#G'hcSll_L(4ҁN+ROIGFQA[!4ڇT.ꎾڞCƇ=G-\+9#8Z_jBޡ#8<<&y5w89Iy.5G|,{uǖ 1J4Eb- cY>p ;Ol@m@Z8k H>lN,'|7y(\ӄwQ4%w:ĝېy u\ju|4i[bvDY|=[4plFN-PܿZ^Վ _HcMIy޸. ~wζ6vst0u4Y:]1!sTr-k1I Gj$u&m-wkrѺ}pAsVI GI uC9 ڋ|%<`s J:cbԾw9⼡1 0%=7@O̳N4ofgbP)8W[ITVhw\8-رX+HO < mM*q4PXeTǵwB|.{UUd`Ltѻ5 pAT'- 2.t01}BL%N,t{;D,sgwX"L[Pč"̩fzf n[)4ޖ C]s%o@*kX 7γDF4Xŭ)ئJG+~iZF6^1gTj1x߁Fa. tl&fADGy[7!Qpx )&?/ ⯺6isQ\09bcXse|Rp .aj5[2 ;==-w2(Ŷ[ 殞kƶ {<0 "MLKb"4fU;OFۅ_hԦz7\1Dc{_,)J񚂋`\`!?OnπRLd!d{t3?;s+}tyfqUOu6^f ׇmɷA\,Y.1#ëÛg]7rq2fň,ǯ跳B (5ooTK0W'ɇpXfd࡫4x1 Al*E? 'wONЇl`{ow?ܨcxvRhaT3l#=,iu3[:o(,ã6NcQI 1'T3!iQ 5 ,fPq;9.,84\Yiv`h)i  mWw;:e_3_Hjvy@6+DF1{6?*l٭Z!LO({oϛYbZ&:|~aڀ$TvΕed(,k_+XE7x>ce<gʎ2)g7SЂʉrFUx읭,R07I"ι-޹[4+H-/-1ݴaT| 11׵}/M K=i*Tl]tE~}&}q8c=̻yj[4ˈJ*8/, lHa'7 x,KaZKgYPA>["&x4#ht\R'R]}"}*@ibqҍjYB(?M0y:|O1?=;Pxw}}o8I軖("I~.6^ΗÊ fhnv[epLJHjhH$[Q4إѺmyw.?'L@kߗR%Z`QG&oM5/8A=FуxߕLP@pWJL( ;&V)P&?j<۪:cy3ןC.%O4Mk(VӀJ\sW>y0b3& ƛ'-s"%n6T x ðb(Ō&aC6^p&ZJ72FLF+d1ݴK`^o|CC:hS,^Nɾ'Z8h~NJT|^v] }@dp!yTNM|cܚfNYYf_:I2.9l#8RbnN/p?[j'9+=YjpV`)L4F!&Tf4 SJg("#.͉nNnK= 88wS?͹Z7C<"4>14vм<'3mrNAU&[u;.,(dLR|bK` 'f3SH5|rJ@*)((Ip nlJ>buvg8Bķ7$֛3Pp&0se_ gj'#d bZߓg2:kv$Ȫ a5X jp%tL'LT2HrPbY<+1N™ U2SrH>y^G՘ar=A esN>dY>pWAPOYlclHR]!D1n"H qYGr-7p<[Fqܠ̒ګ\VV Fշ*ӥ|ccJ?{Br0P|n!k?K?xc?3|ݍO7be0ZC6V؄n_ۿWǐ^.&]As[>.ʯi޻9r HI 5ٻ \<(W:ʳӾxXA"(4ʰYCYLC40|Px_[5hA&1z8d4 ?-Nk?%770**K$)E;yfc(MPaHS*ɬuRW IL.\ki{wX_GL{l.HSJ(Eت ;ԸyMX6Jv^@"4!)KǪsDV,C{`00 n\u |w[3M( w,ɶ6|4f`}OrЗ Y1I TgثpE* T`6jNBq;@f?YxeA8]1&J^,9fXOn`?Vo]p녤,eKvڗڛ3r6\5+ ."sv8#aLgq'W݊_{$$LU'G!%#cq] 4P[t! 3h zūp:r6Kss J}  \Y CU8K^wO㽺됹U~[mlx9M(ibD5Yt7Q svMh`".AƛBy ΄tZ#&qKMQhI"l`?ĩd=#yJBwHCF %'m+s}j#zšikV˜}{3#Xn5s~uUf No @Z.ݚGECQíȵ8ŌKnY?A9>Z6(++}ǹ!E_a*e, tQ0BA[I꫟ە;!WRJw}-#f :2CnG?lJMlSVzf+\2 _⾽s[\$#,#7=)KYG`IYø$yt _@7 'L4P;Z*s&8~yB#\@$k@ 5]Ϸ_)#D2>e/Lo &t#v&odE/H;,G+\/.`~O%15S۲l=Z:}v.nMPNH)@sD]k ")cߝ(3l3_n=e >& xP gH"_ZHLx8Sdf,o'u@'?jX,@Nj9|G45~\"A#M(nヲz^C'BP",A W>dzs_?cQԈ6{q&h=0R =4!S#ѩxk fZ%#44MTނ_+Wk+- /YS4_|uiQ7Fu%AǟKQ/}$2!rjX Q{2hx)wj|¼ӻ8)95KR4eS<Ħ!xPH1~}FN*`s4'IP}̦+=94ΤW􊂵Vf WjpJ|}!Oɛ|durg]>Dpj-G3vUC/É'/ dnǕuh Թ`aGٞ(jg5fu`@I"#C#?-2ePf M#D&U4%[qeߣߧ00PBa>y ]g8bXt"e骠v#ŋ0e[c]&Ax1U^ Ms..ziP4>F{'{1el7.5#|l*#ܽ'^6?h0A2+0@I &`3*@_O­!{LdhY1jB _zF߸R<8w/| "ӂvCJ #7xۼk102~AnU,} M\i 7 8rХnn(F-+5b{[dr$W*wdy{IZF̹W}]* Ž1c! %@3{n䛙[Gn<~#bP~alf}M9Ŷ\KhNq#.13&<,xZ0lH)B;=s 8 Qe2N'aw*i˩(!vC%:Yϑ(|˯a7 fb"A}R]N$s8δȌK:(CE.H`]£ ( c!o9&Xfx6l&u{?D7j >b9|E9T}"ҵc-K7xNl dr{^uDmH|R-rTX cHԂ%vo]PրA:k-אU%W ꌮ/TDɮ7AΠ$fd{֠orXNj^2K 2tY I7옛M:%&= N#Dp6/m GŸl[7j2۔;Ea-Dmwv5@J-*>cer .¨/7MJm=ڢil{UWXmQ(>5?ΉQCY QpFGw5[U a2o*asbr+Ko,q;ʗ]U 0@Q.}$pLDIT9q!e%LRT`B&Cd;UkY$nukX=pgg%s+ + x/7ѻUђ{%ILl(IC980*=Fr@;_fXyPYhlpo f 6s~]WޜtڋSAe:S="G7kFhܴԪ c(o7}3B[[S*$0ѷg+[v*ԗ㨎nF^_U5I})lЧCsLGXN P sFjl$znsBE.[!?݁RكKR-x}mJ3_ʿW c=V_\"TX?Yl 8YWM a7,s!'AdkDqm6>0Ex{&M( {۩T܁jn^}6;a+4#(.ks4NipdGQ2r7W4"w~d1mi8/>nᴍ삺IozĖ•k" biW- 6 q{QĜ+w ݤΈ{+Is% a[Xذrf5/(䳜uAE{'u8^0vQsɯkȚ h(w 8ox!f[.!Aڛ/qQ qS'R7f< 7I.9W^$+(#A)< 2WfLw~: W[4'>&g0PPݥI!7.dDcR bتL'_9|g({Q:xL}3J tY+1V  c MEo+>q_TFkD=@rnvٓUNxb^zId! bkᕻBurvԹ&xZ ژ+ԍ|rg,|FgnHdtSHZez+n󓇳RfLX`9Ǿ>,6Nr"(bA4ܹf6LJ'}/TUm&xܕP^nٴ !۔^5`P`DhD>/Rڹ-̹To{xBzHq!/䮟cg(1&-s`6WqOW+|c8O'+JަJ8hh#:^ϙkBU\I bDvи=!ٛ)U͈7?ʔrPc=P_`FuŀPR4ǹ<bGvP pPMLl SM5!D ?DI;fVH I JwG8af<+1&xG8hȶS-3jM!$k[*nuB?˩V,Ue*.z.Y?[c^fy/٘154ZV}~v5lʻIĢ1.M PH_@ e1E}kd}ri% 6o;r`2Cbz9[%]WӨr9tU_Yͻ&/fδ9kh&$!$g+f= y?Ub˘AP{zЀLK @j&/6~"L%Zqצ 2(b WR>D 6-7CuP\xrV_AQڮ endstream endobj 87 0 obj << /Length1 725 /Length2 32756 /Length3 0 /Length 33284 /Filter /FlateDecode >> stream xl{cpͶmlyc۶mY۶۶m۶:U?c52"q{;UO3&:&zFn*###LNŌaf P1s01`"NV.J6FVVNu{{7+K++??I*ffK3@DAQKJ^@)!03s2(XdLͨN({;Sar7;73';TUb" "#;S?v.D:ZH6F#?^'H0LLS+ ÿx3l_?C*?Ѯ66FfJ{[W3'_ܻ;Yco7FHC?1d,nafh.Nf1kgoL\mn'쪩]R4bv&Vv4r2ÿ݊FVboG.gdaW0=9t,&V' ߤS7 ڲ OujsHXl8촡2Tՠν*N;1}QdQ2k1IOֻR[]5:MҬepHh^. eAav~ݕS$f6V[WfDڦS2a4 S P; \8YVrwGBQ}FXXKxi(&gd Q+Ƙ/!6sUz02?tȒ 4)gnŚ}y_uu#K ;1ݸSPUK +(ʞ|v$\x^}ri,Rnq6@׿=pLdh47=d,5JM!%B-hnPijC8Z>4?ߢ. R/Vh85dEvR8#jnPmz76nn"5t?tĘϳZK i[]=Ikrdwn\J++aJkW\Y3`QSD&|zd<-&( gc#yj D0x(Љ؛QvIUTXлIF<7~_e 冉 7lNyhz B=|);_U\/6́' >p>t?wu!^2naE@K%JgǭjSZW[fՀ!ƃ!R s˽6g4V`ƄIqw/Gǩz'Y ,CM!uS~gƒI󀖤;{ٿ"u~m'uK--fgwUV? W$Kܺ/ $,e$,nUkGe 5բV;s{1oRg嫎2Ӄ3D%IH9َ{\w0 ҆YAxU*JULd)<[j5_BCoDUꩃ}}{[aj 5hBv pF M2Ehױ]hE+s6 4̥Uc_k)RMv~#N8]Ǝ''fPnnJN.Gjq3ÆZϢ wS' 'Gc9 v2/c#6r#< wNҠ~78:AO_5c +&uD&Fi7VLhI+P/?#R c2W޾o ;r{;uǗ =~9̬v X 6a@>CD}ZB,+왑~2UP5`2J5\PZڇ=EccdTN(>=%{q= eK4A8LB= h8lS=/KB7qiP@q¨RKJŝVH&0Rrڂ4O|& :ztĽ#t&?r5mN4<"ha\RGqc#nKs2d.2)_ٍ&Awģct]!)S'*>2@422Ix_ D͡äDI&!+繛dsؒX$7`,T*9y:}T 9RvZެiLCvlx[변;TӉd0Rr]cE'Esw^Z*ˁK!JQ]}ùy\:ZyIm[}6 r@a Yl-'< ap4H%omݰVP.gJ_]‡;ž:R彅X8?`L OrZg ozvb>Tc\ Ep öt7iPG:ϩj@V1?e]-oIuI{\^Yv@ĸ U:s鉱=/X&{n! ~,"~2ZKG>`XgJ`SRc+hw׎OI_Nm,)]'Wz&Q{(MNyv0'Ёϳ /$ C[ftG, U$WHҒ&[pS+Bې+)Wt M]sq?tl[nnqk]DS&TAKkؿyr(-$ܮxCg7?9oLRz0LJ]Zތ32h&ʯA-^eNz!=ZSVL z0PG@n~ G*_Xon\[5 U.U؁2*[z,_?2= gLoke]d~:yqagkWidMC_ lahBu>ݫkV1r{wS=ㇴq5fٗJthTMљ~o4qXݰmFkqq3z<(QnNOvAti8 hsQ_CAi41K|ld?IGR=6?fsJdDhT0f[_(Jdjs1tD~ FFOu:TRʊDvPx򱸬oݍB6Ōn !HSdu#,Z@O_j,`4\OE$/AY #r8FqKJy!LHF&{ @ ࢴΜ6ƩVNAlb\ahM6㡭]Emirr7*8hgQ L0D8^ ;fŚW`k5@x-1 StElOSB* ڟwJ9fJn(-^s\[j]39ר\v66]bv]a͑H+sO3.( rLzi^q qv]-c<KE%HpX.?WGaϏ(iTUQ,ӂ-gu¦@*ɶՀ56w~"ey܀k3~ ;i,Q"SmtwfCeB"l$b[͝} f()P5۩md&n+ CUD_XbQmfC$wQ]~*ʥ8fZyjx>nӔ)ҎC%@FYmj1[lJKX/e8/5x-,;da5 h*eơ0{lE'B χRU#B($JA ܰbX#C%}YV+wkqΓ{YLG&Tm^FPu&P?{eKJxࣃ^v` P -{1<F;5v5@Y4t{zGQki D=:ܞ8<8`b}G,X܂i| < \ nrT/A,ٮ(Rtʰ6[6V=ϛG^vHF{:Ou]~ho +80Z]./;h)9)/ 2-剏LT$wJd٬- r(:"˅wo拮e£hXRnX>BrdTʫN4˺76K0Ĵ"'ܣނ8XNqc#-n`1ǁ;=c!(M UH#l˹l_epov$`i>w̏uz}8gaG) ® ꫯ 챯a|?0}?|ϛhGNwZ/92LafΧ۞I 5'E6`oӪeO Iģ\?GeݏɸyD?QdH߉y1Ơtq׮epWM}o6ɼzeQZϗDMN̐;`CaԖbM8,FcTohA+|TZ]9`2 %  WApRRɛRbf)r#vp!׆<.swz^_}`h"xI.d#v]65QCf~N{d0nۋ(Jg!4YK(č=pSW"Ұcbu#v΍;UbJORߔ)x= CF).<<}yFʥ_z[ E(nёZpF :Y$jPQS4WsA16T ӟȏٙoy.o#d'@)SbEozQ Y'T y'j#ɖ0h]hVc^&v!ֆϮ%[TA]&M|.L;;6lKVîwA $-B;X4ݐ] x1D L^T q&G낰-t!J0tyRu Xi &B[|qhSg bVigqn3e^?;?7j s1iu}r.{rݱ֒mz !$ tiWϱ'd8ԥ.U^T'|`(\9ZNuYC*fIkj7CeЩb4dzqّ7ѯb8Ax?^e.qfC ?u2h,4YLBjD$~!%ji٘-=p$QL߆kF꽂HF!_\^qhǝFz{óD/FP#3 -!kfiO٫>f:#op"fS9&(('mT*ha6-`cp[) 80rC AɔL/wY7| erkUұ2BxPBD…2Z{o!pu3|5g+֛1S#y( dsy($b c)n!2ۀvM{{mlf̌@͚^&d]R¢e38 )` iQ%%&zHޭNQaaB%gˠnT5xPԎ;{=[uG-7T2CNJ(N~Ym?d7rzF4iѪ4NcU^ k÷ןp<)U[gX0hr+Pfx#7l*&xcSCqKm:vKC@ڇM)@.;mj  avkҷc;ТȱT#șNu6^e 9)oA$^Ш4uv $/~g'L˟!Z툔ldc#$ &*b@T}+ԉԇLIԐ99P9 BRC }׃&/A.Jԁ!" K6, m;H!f?N#L3z6CyWMK3/pZMIx\&_C<뒃M⸴P"_ʍi+3l#߁=ts#1Πun:4!lWgΎGOU: h3f/O:a:~I(M= QHn9K}^L!C0"bIGڬs7gD1'!/#bm1TCgJ/D[9MuD657.yeE s4.֚ PslsK9 TyvAd;!&Z'ҋ7{|&yK :dp+QZ'@ h}^X<׹.=aItnyN #Ju8vYɀ%g 4Ib]dk|C.P6t-oGhC_:*f"K58!y D_̀/oGje kBuSAf $b\[?9-yڰIJxD;u3.>M ݕݥ9g뢌`f,Tnqؘ]0nAoo"q@^O`@sAsPlﬓ(Ϫ{ @Up6 pqcGXBCkt: E5IPʧ61C;jy[3Zؠ)pYijrCXף#{u B%ՅߛL4 { (G# :T7%IW"b-kl )S+Ko不Id#J[+w!v $̪3\Uq!eZR9HךLKnp-G>O&h!L6&lRƯ˽Ѭn(zu j#א,[4 IKX5%ᗜrWƳ \#CBX#u$ Wmv"O[i6i#Lpt'$52y13/`ZI'.WV?p3 tG{94@AǸtJ kXhq2m"k({"J'Z\ ]Gկcwl ]Q}awlF[Q+@t5d0ڀ-Q-9|G܄ yOIW@i/#΂Q-:-^GiJvm"5Q&{_~ed{' 's|i.qfu_9jaGJk:śc\Y"5OSmjn-/Ѕe8CH" nj&[82ڵ!{jV<UZ^H@N&L*x86m\k8'3~~ 9lKP!=-8 gy*^0ZXx]|mv<^~>?u-Ê{$zWȉ ^eɀCq64p`l MD9XGlk]EHIУb)5;C6R5%{kL/<%hDn I;V|ҳX{҂l8\?eo'+`~@s 쟃ZgˣN%P,-t[.i!YnG= xt9/WAP3L|#ߋ׮Һ:G^ &nAGsEՕgףX4k Qt <\Aۗ '6UMD"& ^@|;]uj 9Jv4Y"K}T7-ZF'9qnwU"cMr;PT~) K_uDvyYLR8pO)ܩ¦Ā:KS: ٗDc*~,gr9"b~'-F*%y8v/ kNQnsWAY~ũ@YKCf{^cì2UXPIϾ"{q-H.N<_dӳ/IOj90@Q9$>˿pʺB +\Vβ֮J9E^/,- %|? n.ؘi :ؑ]>r?s+ڣe1gL40a!'8hj!zT+L)` Ɋ4#"13qR\Vx coxsxX[JjK*CԽo3nULOxIk-z]n(A<i6R|&I7CE(kMJMZTVK ./Hbyp <z8RM5ԭAA<ܖ4oӖvAjM]x!}SʡQopITx {op;iJE4˕-W_ p<Nm!UTac9jFrUJRC^͸,S} 2e +fF[ #Ũ;7uI8MaG(I[ ⶱ8JαX0}lnTdEpaZ!ɃIv<ҟa"(7L,ˡ+ss{ *d-q % ܧ($xlcj*;:\!5{xLoYr۱:qw@rx 6jH2ऋJ@ݼ,RDG0t̤urq4ȼ9a0s,is*o.bn PF'R["OV-Fs88]Rck"d ǴD~zv;ԨNKn؉}7ϙh@2'7 \4g؝IDQ !6(HvN9)jKAhփ $7a6l?8iȝ&“nrkG TLgu %L$Q{L;.~`k FXQC4JOmȬμAe g#s F /slb`}fx]%:ϩ_/sn<?CJ^eYAEh ;#(OvPugӺoo2B̞M@]s7e, ;bizBPň̵Q-xYDlVE,4wb/oRCO7l83Њk=:,4Z,, ( A0.&i#ii/ۉT0`!Q(ȉʻ\k ^IjC~1 9uO+HM<(fހz ) @zV@Ob4hFfIUĝeP/q,ȄZ&[Hg!K H/xw|z'4`He+: J "L/O]Wʓ3 5{L 8"pml ,JDlL.K[>^hx'ipVTNt١_.8ؿ2?31ީuIځ1LZGc֞_TƯo$HDX߾qLq<GA|%[{8)Oh ߣP&WꁼGQ4fLX?x? ߯Ac#;OuMTEwT$xFy|.rZ%4i$ң 0Ū%{!uGzn [Q/Aw!i T1lv_<h2"~X}8xXv G:#MwG8Fy1%N꺄+$W $Mgt(O+-ꩿكFo12F+i=ydУHei\N'5 4.w ¶ $M*9 !bZG,L(ӌw__snn> ^oi|fg0HN]fgypVu`>Z n#s .+A5a#z' OYBU~gVțXDG3 rD6;hlpTق,Wm3'IiTalL/|N1t`h. b-ye~=oO71vh)\-4K^Չ,yTى-* [q_'9>mRyB_I"}t=4j2WKŁ7lC= .+}* ]"jBcoHg2GI>}/e~DnFdIeORdjfV+ϔP68t9!7WY> tGfvhӪ~h!V6n0-+25>i)fzW_j]k *]&TQXf)~ZŏV)z**JB7XK_)e" o7C<20BYr ֍rWI8B" ^͙C~Y^}nv?TX2qq܀VIq8KQL!"B+8[u !ԃq8!:.bфbFN L24N4tsYʳG{ [ MꙖ\G&QV0u Z2?";(p‡V6t͘E=XGYX'2^C"ݴ:7P=Զ4= i?u<FaIĻDK*tϪs=>:P|TPg7Rwrw:m:i:2O9kt"{#|V@- X{RG^J Y)yv~e^BAhULq*$ߓ=Wf뤤)׀IEsI=Hf-]Q1-)lMHf v]CC}7ebWc0-ܣ2Efw/c 6a}Ǻ=pw30SUiy^7ڽT~"4 <11g$'@cfB8z :4@]:u85;\4, Юz2kX{kF6i }9+0 }{-Xa*h[$xFم&SRd1uqb*oh$LiC׆q5}j(3- )[9Pt|CYY`@." Q>wsU]y/+ CAfv0w盪CZ-<-Mk%w 'ՈR`ڲ類{uS*Bz\ֶky4Lhgy mو/`1,>c1g.p4H;^|dÝ>m6-F:8xkl)"~Ĺx!ҽs>-a98(pfƵ[ #eƛF2U(}um0KS}i5܏B\=1%[5';ѫjWt y_pI]czOK+rp@" r :bD.(䖶W Ƭ:JD*CvL5֘R ӔrD`d p%B!0$T9ګS#So<+x u! @IOj!aPVsG2Z"Z:U[s2d:o#CH֕s;^h%ͱ@q#!Kek4p"΁9%EV^/'3jjK4B'(K!.Up۾=}~bE&6og0K҄ Ms ,}˴Z9<8}͊r+~Yz@/,mk<:lRFRGTAm="sCDc`MwߌԻۂ Zc)17c TAmz֟i_&Cܦdd>G "2ɉMK9N÷y >u^"r}k _q+D#cY~*X@H#3K {yoz""uvxUARk<$ ќX es4w{@&̶م1R z^/x4Ni>n?;Im DehVh\=&C"WMzWZ5OX\lkpxuk&'W# ٶm۶mo۶m۶m۶mL=k*)ieAbG=YNnj׫ܯ-Qoq]2 :ߛ#L-X<ݢlBkMKAXQ3Wf%: cSi~٧F2gZ1r^˧ӍjUv*zT} !3mg^Cp.4m|; {;9e_$qP1X| ӓ8)~En ]~CpJmUzTlj6;ʿ>OG5Krx.>6CpIkVr3G/繌En8|`uv%6j1]*L8 >"s rj@l7FT̽vЀ" λ/ ~Sl6z@Jo=`={߸a-WR3p P_Y$[ 'fpqÉs9U&akTrQ58*0P:ZM+^ݙޓ^Pm,^6+O$ BAC4Ĕn> 6Cn!zت}*%E+Lɗ3GO3[6q{ͅ`w|@$b.Gy͹% cw~cXqzegOƾt^.\ MgƿoH+zcdIT;@]WӗTf4ѭhNHhx  gi(;I1k5l)EM4:,]5agC)y <$Q? &|qFF{$?~Ƣ 5L*ĥ4jraJ6A8##OydK܀ xu[%\N0x P] 3pQhY`0ĊY0Vs7ؒ\)[z?(gPR[_Oz xΐ!9yq7J94Mp1Ȯ Tz|=M nR4tHubDTv#EUm0)9]fl"~f?(Bn"t ;_ nO/Ў#s[cQi_H2!G0x`Q`{CAd(ъ[\xt' /HJ櫋gIѥC>Ψi߽&ir-Kz7 rR"3['*AEmDYhm^Tf:`qD-Lo-Uzf休z4k)2ke|:vqdL̡RÂm}v4^5CKsм-GnZY$<4Sԡ&Ġ*ک8w]gAXS꡼?ǫom+anG8 xƏY:IqK9#Z>c)Hkb|gT\goEG]%!^&)'Hto HـLZшBCaߠtŰٖf~$E!0ptRn_{ŕ̏.N* ڭp_"$IuaIEj | !-k/[~D{Xɚ^fvPAq!fcƘJ\$c'P/Ŝ,щMKXyj  ~pB$g#DoiRhcJ%e?r{&/\17ey {4! 4gc!Ї}X|ɉ9#PK uvT $ߦVVCKTt[ 3YĚbn=| Zx|Ϸ7EJiݬJmo$-U'jQYAVltۯ}Ī_k)!MeJҴoXG_c֔YU]s9MdKhdwϭxꐮys?]/kK?u楃tX$b^Վ( KÖHP/ PPĦ;[y~~hw{>y<[?D,K Nyz(V^5S./)^0@ĸ["$I{EՓ}Mlt B.(w3^ڈ8o\Qa SEtbE.ElD챋bRa8 I=x˔%pO:7ܱRc2O7;vyn12R4&L^G18Ȟi\+.x":sm"}{J2] eq:w}(iܝQ,9x kukin259Tہ-5h>,< 2ǻ~SB]eSqOMLJ_]敭 2h],I:}9WW+IfaO1CDsTӦpsW?dĖ_eNj{ۃ0Š> D*䮵G:?K(iڨH+kZ ŃgC'>.jGtigY. W%%]$5a8o~2# XxD|rY OeO<ET$T9 w+)"I̸ SS<ˣ_끰XC0:K9|#eqܘ\°V 㵷&+D۹ueB:EgR1bV5hOH7zdޭZ x-2Z@y5ܗM%e(7BuJv 4=C4f#l^PN!>i`bm7WɛtrsM R憌n>E fXA)ll)yeM(:D5յǾg΋ҺmEo lIwbqQ)u'Ruj K9e^Xi2HfF+] 2Ȱ +ZG*xh_mTwE-//!qO;$ p&S !J?{WGE38iT8S umFh5A)jT-e K  C/|YU/ar̘/HS`:+>+755k 2̃f"El.>bOlRD/@,t+e>knB6m1h//"t NeWޗcFQa8KEs$[5bRJt?xIYxm8L{u50$( G}C0KGw l_km[OٮAܨWHga+|; z 賓ՠC}Պޙ;Sd}weλ-BTBSm Tf7tM':Ѯ0 ߊZ`B;gnu2ԉP#6O(5y l' /EX2Kxf7JY(zӀڠq^qtjos'ɯ뙘 | )X֛Aˈ~v["#l3Z2Ph skLWR}בӂpį>㼛|0ofA<WgR>u>0 k\P.4|CTm$tWh*w~M &;M iP<;3l.'[j&~ѹ H^ˇ3gԈKlK70?soڻ]"R<(&> p@9(Ad%V1hDd,'@R*Jak:.]l:x}xGD3[l*.WCkz> nڎ'r $Pg.TB4Tb4FH4ˢEMZ>PZ_V)N1$M5|Ak'h|WQ׭5Te E.S,8`2ĥ4yZMѲ\!t|*쌠vx 9!É] 1Bd"xJs.Q 7&Uk:8UWϲ >2?NffM`)w+3Uog''RH3ܷ_5{.,VD*svraoE51V(G-1(+U` Kvoq=Ex kŽlݷdjmd.ɄsYy:7Ҏ͝#;9jO5y`,`Ú LMc&T`)TX48Xg fA mGŹH#%`7DĽDnE~_ <+c(= o0VS0nnQя$r%XR|CuY^pUfB^8 z?* 'Nzuoωǃم(䤎E`-7}^kЁ*3#9Ȇ: Kho74x]߱yYBAkK*`Xb$$hX j$j` Co;7Kk1.9$q[cJ<5Z{ZoR+إB6B]Ё5B*G}d,ے,j,;o8U:2KZ&:o\[[ aPf C=:!O!Ĭ bELSљ-U&*:ymh؝UcUcC_`>j FMǍ00ު>GS ##ymAn/nc *lr:-Hf_z8UXdd Em+Ďcw  mX"\9Z eYR0EfS0f=̋Q񹄑S_)ĺJg.;|rS,'9._E  @@4apef% 'R\'y[^N}Msɐ1sj@4pEȕ2)a2擣ۑQOw`֓2D }=7-{\<;{pi.h>$q%=->ޕss-M͊[˅;\J_4KU{7 NDad^G^T?jiMy5QI?)?" &&װ@_.8yWCyZkTSRbt%gֺKu 9-$XmW3H,. mf@)#KG e5ȉM:38l ݾ8'ut :@oN?KݥȘSO)7xIG`SõrYS:3LgcQq_J81d(ʘZ tє29Ղ%JBNPu-L 5'F@dc4ڷ^i8FKBoYIXL_cOڔFoxjvrId:?>XAP(#)9MB_Txy6%'۷+Nd +%xREyFB G]xb&cq m4JK z{&\!sPG,0Y9#4ۜ?¦$_ q #la_;75=‰^fnǓD$x$֑V$pv,:c--x ?*eץ._ׂÅwFHko1,Zр^Wz"L}6o׌"&;˄(W#@]RPz4,=AYWI"Wi ˮBOjFª-k>c.K[歆Lá\;C/6eUWIiҦ}A0F<+oߌ}EH,raG*x5ܿq򕕷4c .rI>{Iy>/T37Qtvpm8]\rNT[CEے{؄~0r0|@H Xd[ 2֑f Up 4/hsvU{ ƴ b4nLm%Wy |3붸#A,҂e{R'ٹDkEXI^-l7b8x ]LPGu(Ei&O(.wh et !}T)|ߝS)Q6Cz(_'[cʤ擯PdiRP_y!0Ґ\oϑ>zW)sG?5RaPPZ,ɶ|>QuvlPO x([=nA_`!!tS.t4#Yng%Qa&j<É.i?D@K%/@qɬSVo8%ҚBk>./+;>`bLmn)>B@ %u_: qqQ^dfsKVD{-x svuш- K-WL-d\us8c.skY/w禍#? l腛~"xW@ r]M&GuXDu@ك#Ϲ_TX >Xn0^| w6MaQ-ȣ>e-3PX,= XqoҔ;MdJ8r$|XEY5Ri9\ v^Gyģ#[ 6 "/:{5XTErҔ%PlUNHT԰z{p|o%joPo 6uP>Ě^nYI%>n lҼ墕߽u $lk+W>j"kT)eh_mk/UC䡉Q!a|n,Q4c% z "I$m)LqZHZSIwy!H|9ԁNXt-HWRk.Hz} d]T׭1| Lm#Ap&VLpJ J@zc@w%c K!\~_ްa Qェ,Ki~#7 .g::-0XXh,iMBD/V)=d_ v-z3!ćo۴pΔTStC_7ņjfN0a A0MaZ&ZeqqhO  vq 5KUY9g~ fqdiw{t3,Hj%|5}|CX6]!ܖ>'y 029"RL5"(P喲MOJkB.@ʖ99aZf9]Ba2KϨ'zEQ̠@.;% |)Uݕ-_C צMC`cxS u 0my-+-t֐z(;:yWzTojVĈ Pya!8m)gfw78Ebu#?Qd4t1 KVrZI[Z!YfoPM{Ĵ[e!L:ϟ*8*8WSԾ@Zhd5u7$0~Y;ṉoO0s`Dp̉1*yR0;Hӽ)zc1H>m|?jHc x1(K}'\GjRwOjO]=h?/|l4?SIsREv0Y0Dfe $ :m6?Db(Ԣ鱛t *Pfڢ78|ǙQn]fMdU>ؘ|};q LPFo^rx>ڵ@}~::$JD'*ck`ڛ@i>rV[KՇdҟX/]+3??dkVzM#uFĴhףؿV&;8o ,]/5xV~aNa>8ot\驿RllZIfn7Q 8V2s(973E RJ;K4brp70猑 :WV{T\)V-m;UҵU0 {JXѤ3tŠ Iә*b#}}ߛ/19&~~w#@ѸW'%ml[9nUHot\ [TUPyr>cW-23Ji,h{;{^idK B$h0`KE}/)pG}ċ":*$j+_{~:z"qÄ * ;=4sDKi|Y!0REeN&4E uAT\[3ɣ @OIƿz()CV f@, ~A]sI?P1$mt`o1xyeta㣘}Y̟.dPrULd6PAe;%cU 5imW`@S L,d3]7N)rxPY4@؀0ƍ`XXt*#>vX :gcPELЌ&W0C7}Y9#i76z?G,a݁bhYJ"x?Vn.F5 i6 ljK"ucX<'m/U}}=̈ȜeVvzЙV.IeaQL0X0_q_ <,R a0?5?"uWp\-n*@+\ QƊ6毱]/PQQk-wm'^ft5y~;5osM/k HUpsGNmKͤ˿ia#)2sh#eqg2x*Aou^J!74Ȧho:5)*@<:=8OMI7'5UlS(rdL)t<7k=[e)Sb iȕ=G %Q̢0U&ť(@tW)/B4:k&bE|R` E2hd/(jqPo&߭ur2˃[BȰpFf Hcm0/BmJ:Os72yQ3 s}ns[Gk bH~7XV#\&l&;,~x`|n{g%C9UIwn0W͜{nve-Sm76_"}}7gVġ|YQSY lm'ߤFx2m.6VJAj+jx$oC&O6ˑֹ.:)5&ǿ~ؾZ& 3-r0>o3pߝ l/39<rR5OeX JyYU,3<&BF"н3> qmyWzcFބĩ;kr$d)`i yEm%bbhY)D |=p42]u#tfܟW`ӧ.:J̷I呷pH#I %c8e/CWBG$}ţ{gQv"a2mёnݬ He5^5aR87z]_v sz28黴- ץ`ߘ}@I^36a=jWŲ_Rt9P&x[R2  J6+xNm7[7{|>.f<1c"r@Uƶ&ɓ pt<)>^{|GM^I(O+xß|F)Kdijɽ;q-u$hR7jG7%54s`T,#%MPT}4y)բ=w9s*Pע㷌<<]9xqh-Kb OcظPVPlUjXM)ٿ*@^Jr'7x_YqByGTW铱pÍ`tV6{ "d qLE! GKibYAlP^YlZbj?JfP;+`t/̚HOFCW` ަqO8o)+DJ-i3Ss4rPa9X}| PѷNӷѹGG],)`O0+¹CeW2 5:ˤbXS4 Td˚J0jAQ,ײ PM釿Yz>"/ueᎨa@U L"!|7/L'~֢< YUHSb>TxJ%ڋ+HUyx nϫ* |ńAZC!)܁Ѡ!yq"iBCVt w,޻>M+˵/KeVK *N& l=S%}^fb:.VeSC2=]Y1 (ar",.P;aZkC &wSxGą&a̠:FmG';D'b>zap|oF:MX͒F%ZDGa,6 #T ++(H  `+ 9-JŀYnw1;]unuVs"?:VNnoTCY"|}:qG k$R'`+XQ+ pM̈ח"7q'Gu⠭1>_kW^>~m?Vk=5\:gnV8SA"s ӳۇA˜zZ2Jܵz^ej!r;Y&sYzft.H?#N*\#K$EJ|p *\@XD"3Ii"wA l۱ MIR<+hr(S` 5$l` `Cj\~C_K&:[¦`0Cˮ^C4QSg mNFpa@ZcML  }'lu.1wV?yrՁw>q`=<&#hc7]p&,,3)G!?l=7#Ҿz}gRzT,DJm6b]-ע#KBn_@X.KZ 5]nͰ;ZzG-F'hbN~íTWڄzkH ⊙Mq?yˉB]N-fCՕ|c,@Qgjȟ:vǶ1N:bǥahz8SSlQFV~^PmY$Z} S;d9ģ=+Y)otUj 6r\X{*ǝ{p, 'O%.۬gTNd8UrJz1#>Z?7i (r6;{"T]o1J&H~ 4"--LZoc]|o9V{t [QjBs$uSIn`]:kPlBܞp}%bݱ<>) LY78ր.`v$h Z6ܼʧ /EgUsQ5wVCj ޞdnr< 0d :Rrv|l\d4:-ETh#HY̼UXDnaĺlRt?jQ<_h*fwZEuIבI?3"dkȯ%]h|3xgH |vR#7ި|as V(6x&7VDX>*anvTEm=n4 p[/~GhxFb}37I+3(ΏfU Ue0Gm y1ZˁĴϷ}v0[Ԧ!6#g{חLqʪHUI1/lgb|Og^ {#x96ȯD„,pP57.4cn0幟6YB􈯬9К]a US_<>)q|Y7>7$M YWkG endstream endobj 89 0 obj << /Length 494 /Filter /FlateDecode >> stream xmMo0 !Rz|UAa۪V&$E 6~=HUAgɯ~uo$ƛLD- t @ZcNt=YNk`T=Ro æeCڕ(>Պ AiZsn[6uc^0Xah\je?0bprOY[AKS|dۙoF)MZ}4W@{YmG;<9`;K (EytbabisbgEjq(po$}Idon-p!J m-O[L endstream endobj 90 0 obj << /Length 696 /Filter /FlateDecode >> stream xmTMo0Wx$ ! 8l[jWHL7IPV=M̼ su;Uٛ=w]yil;<[[j<=?׾+v`&ߴț<^*;~&Q>MS >_P{=s@dkx;`VY`s4JaQܡn.Uu9\Y6><ٴ.Z.4>Dӗ}~r:-d0VWk,8yLһʮӮђ[*mLr?q 5F8@=@)& 8Rx uD\j2HV0CzL] bctI g$`htы0\F0s jd< I6zg W qȐ+#k .bsrbmXK7ǵH7Gnb>&jؐu1VljOu$՟qWS/%1{\xB!K(hHTЖ枃Jρϯv=k2UKς_:~$/ ~E+7ˢ/ l(/} -+ZXukoԝE?ZKq endstream endobj 91 0 obj << /Length 696 /Filter /FlateDecode >> stream xmTMo0Wx$ ! 8l[jWHL7IPV=M̼ su;Uٛ=w]yil;<[[j<=?׾+v`&ߴț<^*;~&Q>MS 9_P{=s@dkx;`VY`s4JaQܡn.Uu9\Y6><ٴ.Z.4>Dӗ}~r:-d0VWk,8yLһʮӮђ[*mLr?q 5F8@=@)& 8Rx uD\j2HV0CzL] bctI g$`htы0\F0s jd< I6zg W qȐ+#k .bsrbmXK7ǵH7Gnb>&jؐu1VljOu$՟qWS/%1{\xB!K(hHTЖ枃Jρϯv=k2UKς_:~$/ ~E+7ˢ/ l(/} -+ZXukoԝE?ZK endstream endobj 92 0 obj << /Length 695 /Filter /FlateDecode >> stream xmTMo0Wx$ ! 8l[jWHL7IPV=M̼ su;Uٛ=w]yil;<[[j<=?׾+v`&ߴț<^*;~&Q>MS>u;q~:fc_0F)lGιmu f8Gӫ6b"!YUe.`M{My?IC4}+̝l/Bj*{pϻƲO('$ *{>J-9_eQ"V$)MP:^9 ^` br @ {@(\,RH&ti m+3ԅ ,;F$БzFFieD(0A1a8yΠFpnù[w6p@ )9r9b_ia|F-(:(nQHY^`nA|n(戥K}s\}sԑoA&vqc⠦ YK^ʛ!_my_)=^ ^{TGRw1RDž'xJzImi9j'pͽܳ/-_Z,N_: ~iyY2q,nЪ5QN Y58.] endstream endobj 93 0 obj << /Length 695 /Filter /FlateDecode >> stream xmTMo0Wx$ ! 8l[jWHL7IPV=M̼ su;Uٛ=w]yil;<[[j<=?׾+v`&ߴț<^*;~&Q>MS'K}v}tƾ`R\ws*pWl:*;m_Ű=EB.=]6E%‡hWvE;^N ƣՊU ٟweӟQ?OIz^UU|ڕߵ6ZrbˢXEIS:.trA&TH>4"PX H BM@5*08WfH AX v.2I## .zӘˈ0Qa8tcpN0A2 @݆s>^l>^wo_j4Rrtsľ x[%QLuQ.ݢT ܂PKߗp#}߂pMAM37CB2>*R{@8񩎤3 }c$f O#z  ) spW)9N{=g-_Z ~YK/t:/~e}Y%៍-t:UEk nmGkp\x{)ނ endstream endobj 94 0 obj << /Length 739 /Filter /FlateDecode >> stream xmUMo0WxvHUdCmU^!1H#x?gx]OTm$|͜s_Iss :L;<Sz==׾f`*_`ɫڟk3'iѴ}=M;7rfnj-eSӵOLg~8 )ok A8 $`I\3`Af<Z]! xNky"7 _㓧q H`nḱRONH=CpB:# =%888QA~!*zƜАT?!~> tw8y*sύ }nFE>7*QύR>7G];~<6OIyktg>O:yұϓN|I/|yIg>O:y҅ϓ.}2 L> stream xmUMo0WxvH UdC۪TBb B8߯{ .@=/ۙڽs{K;K.k6/k+[M'ҷ>dyӔKe'$cS`vfSfK}fƁVGGf\bu<19w|擬CTAW $rG]IyMsh$aW7y̟u? sK-`θtJ!'c83?NaO<Dg!;IX 0z)rЃ@kpBQ]^Z7! / U <ɉ#W m/%]cX! gȀhID8QN~ACT/sQQRs 穅ύ>7: F+}n4eE=zG~<6OɈy2kLd>O&y2ϓQ>OfdV>OF<dR'<>O)yJS*}𗏿tx>z{O->tՍ]*3>cC~ endstream endobj 96 0 obj << /Length 900 /Filter /FlateDecode >> stream xmUMo:W5?$R. d9M eCkmCp;;w~>|3E_?O]5߶w]Occ]=~?}Oyh9%?۹׬B|Ɯ>);vw%g43>\ 6 EJ78 1{~`W(-;]%=xe_,b+-O;q\L}UI--=BKE1p[! Mߊyu>.N5K)Wb٬8i[_uʕMzQ)V(Txޢjy!Z2P="Zd0\ÃGR\).2*Шa!U,H`+j.5Nα@VK-x%3%AYӀzΚ>kP#5m0Woþj.ZT$X/)n)#Wo(oRZ $Kp4Z-b\1ܰJ P"GXQi/8k^Zq:Zs9dB )sL-7xJ`aɽ)f$1 dъcCZC<73JgznHȰYɚTa,_-O87}KԴܗLloK+gJ.GZyVc48Wt]:P~`rZq.n1] S/Pu7Ue:?&?!d&1yHn5)yғBx#1ޞ]Go׏M?X endstream endobj 97 0 obj << /Length 867 /Filter /FlateDecode >> stream x}UMk0WhFCۖ,{Mlh$73nw҃ͳ,]}{\Olo$ɝиI}s \wwu8{SC߬Y]j7KF½ Q5&z& h<ϯK)ٔ?pݝ2ZkXvm)85];B7gѻ9x~;a`>W'?y:o&> ݋L'/㫃Bnz_7_t|~;:ذƦoiܰ^\0zu\7g"NFsu_E07H6!L@@B@q\s *Tg ]8 i/nTvc-+>c_ZZ~Z83z3[:ޭ ߬Lg3t3-g B|B|\3gg|2?z)BXIAup*^+&#sU-'H8qɼe5A78{Y-7^=!U endstream endobj 98 0 obj << /Length 866 /Filter /FlateDecode >> stream x}UMo0+J! ᫊"Rj.RI73W3njNelܬ;WW\?pu4{SlY]jwOusR^u5sx0ZYs.G7fԝ_= S)E~ 2~}[4v "N'oGQ70j,#z7o;l,j'Ouc׿zr<:Q:XTߙOoGB ;ww ZԲWL)\]W|, MHS"#p #>y| #:##0)%V 55)FњSjR@J]!5w+>7+>S} u B|)W|FL| ,B/^ &+jRP׊C8ƒI\U E'j\2wAsGMMD>Nwq8"妋:9 endstream endobj 99 0 obj << /Length 866 /Filter /FlateDecode >> stream x}UMo0+J! ᫊"Rj.RI73W3njNelܬ;WW\?pu4{SlY]jwOusR^u5sx0ֳ0;]nL#;z,gS t;en>r8S0qj>w};B U5gѻ9x};a`TG?y:o&ߏE]&AjZu/?v_t|z;:ذfhkܸ_\zu \7g"NyOܵڿB`ilB =@ )U 9yI(J5<T` M55֜RhR 1ڟS(yq( buX& &q,1+N978Nsk`q8 ^8% FMq.5Sh@kO ׏p$q1/]}/ĩ»p^`D3F?x[a 1ec!/1g)cd?4dK^| МQV1Կ'1t?ƺ9Y?ГrYs֟'g)437YgD3\ib-z3zs ,>G|ZV|ƾ3ֵ33qgng3tZ[Yog,g[3 =L3z/gd ,gz)R؇O5_TTV *M2GZN(:pTy 8kn":qw{Y-7]%# endstream endobj 100 0 obj << /Length 867 /Filter /FlateDecode >> stream x}Un0CƆ"Rjn"73iwWU񛇱='$I}s=}}N=C'u]U;o_ϝ>'eP~&&O''3Hyڝ^ S)E~;en!jأc4qjz( 3F&Vݮ=Ɉ>8~;D>i|#7~_ga}>^=(-P7cjȨW1 kl֏Gsj4s&텻 \݄Wb MLS!"q #u!`Nȩ(( LFUjp49cIMh ,hPE4pbvŢ !\΀Ѹ 8!\=#2:x 1v9/8vӺuSqk4 "nXCI8'ľ&p 2<Wcǘ,_8Ϳ1bxb Ài',ymƌ&Q/kC^،1ۜ1q, Vu 3/d Ͷb l͘S&Ş c,Xu ֟_~CO` ?'>ψ:sh.Xgo\΄rYgBЏ>;gX|&}ggg݉gt3zw3|s3߉YX/gKzJrg^od ,gz)R؇O5_qTԼV j M2GFN(:pTy 8kn":qz~Y[rbtDn endstream endobj 101 0 obj << /Length 866 /Filter /FlateDecode >> stream x}UMo0+J! ᫊"Rjn" W3nj<4nV~ߝoGM?k]{7[7rSmtɛy=TCA:fzgdf)OS`)?>RTC)s}`ݵeDcc0qj~?t 3&TdDBmq`TG?9N CC? F`RޗS/~g> ilXcӷn<7,^e]׵͙Ssu_U4H6!L@@B@q\s *Cn!>_33/>?㓁EK!c?RMO #SZ1|8Gxp4aj9DQK.h ljeuOȢnE}MA endstream endobj 102 0 obj << /Length 866 /Filter /FlateDecode >> stream x}UMo0+J! ᫊"Rjn"B73W3njehܬ;WWU\8׺v=ߩonTtƓ7]ziTCA:fzg 4R㫧~R~J}6O7}w̭uזSIе(TPfw۷莛n˥?8ޛ`~?n8t/3NbV+պ};:5wɩƆ56}Χ]]₥+U9q~=W(_KdR$| 4hd52HHNsL FU*q8cMMh QEk%RWp gn~ȋCam `42W0A/c9^'-pʹ)pq[[i])9^W5js7 Gb_#xb~ ' ˏ1}cLu'No ޅ0&1Ie76Z cx-~`& y%Q?K'!/h],KV0d 1էM=Ռ3g1Y ~i?'?!>L9g)q:#eNC?lыѣc`83ֲ3#>w+>Cӊ݊͊T_|~+>Cg!>cB|/g)g{!>_|&~'a9K!B>,TGbPq> endobj 16 0 obj << /Type /ObjStm /N 65 /First 519 /Length 3650 /Filter /FlateDecode >> stream x[Ys~㥦Zt*…@&C`N3{[ݎCL*"ZERѢJ$(>0^ WV$U"j# W0Z$z >uAA(aTʂ\rA K(` KVX_BX#Rg|FA V I8e\ʁz 8X*DiXT8` I a$< >6h-`%EhU0HDS^":`(1 btxP"ZRaDB@H$eh6 Q$< iW gH3t zB02@zBY0*B-ޣG=yQdj'dX/0e (d4Qlog !alx-UYtW%XMAX'bIQyV'@lVɋis)żj:X\/r^4-a L`\9`Y5;|X)-Qx_Q1ɸ](ovo sx7z٫OJ mw[8{#6svrosv88u]g^͊g8oWvC_\v~eiٱx dEvozfl,a03ᓛ\;-H-rzEH.4s-Q2=z'f8ij(#}z7)OiRu.kz"N #  ;bՎ.Fsk "NU7E]$THPtW̌.a ʃSJbFyHA=Z$` Y@X iD$#a7\սyAe! pKe )!@4*ClH|h^G8pp(b-cq=bKԑav*[t{} Lv GHBZ"Z Qg F, :ݢW@RØ,Ȯ)C邒K:?2^ߊ^.V,E9 fH.itDQS| .H!xR ʠx+ ֣]~NQh [r*iU,HΠnu Y%$DE h(e`8JcEK`=2G.)P#m7HK+JP .ng^e62XA5/ܞ $C!s<:Bo#۽E'rLyLlw"UiՓ{ò `C8JyT /F%vWo!Y=.S|9[\]уa56 >PG*7<'{>G6CMFKO6`*a>Tv 4@J嵼.d(+9gK wO3FZban#mdɻ&܌e EDSy(_S^&`rKo :q#@sxpks)lt"*~9r?Ky?M\y=ZIB*=>;|~,lX6Рb*y{^߸9$T7 ʻӃß^)]lBT GRHjCJŝ r@}y,_7|VB^B0^0ag]nS )ȿi۠[ã=$ mHlj5$<>AmӴ=h+(>/ ɾ:NS-$ܾ󏿟dQM9xlUyJҿϥ<,Dr\q;7fY a~9-)B~YʿMU} 6l4/_]1u w*o_wvC|b2kpp~qCɊBtdק҇)~cTPtx!Nt6To\-88솓Ѩ?M|ibK9]8|nqΪ77c -C3L[/n3:x".~q;Im#/uRD-5Vh%jLע %uaΏVu-,LY[h 0)7mKk#Q"+fV7n/؃>So] yY 7_L$CjEX"̲ k>dvw8ZzژzxšwOZ1a+Gt6Go/@W 3|FNތ+ptwmW6v66خ:^-UƯiצsM(ʸs2n̚6z{m:ڶ6j ߨ1۫ӹvYsc).zM.aG5ZbӚ.n{]6k.w2jM.6k>l{o^]]^vcjkZY0~[økWЌ\ߑ׏ "VjR/!/U\?wT\ &Qц;~Q1~C,;x/$(y5#+h~ssoIQxrcqm endstream endobj 105 0 obj << /Type /XRef /Index [0 106] /Size 106 /W [1 3 1] /Root 103 0 R /Info 104 0 R /ID [ ] /Length 310 /Filter /FlateDecode >> stream xͻ/a{߶ڢ(uE^պW$BbhBB" EFPS1b]$l6<|=I#"gA">aH,%!s$Mf ]0T endstream endobj startxref 227799 %%EOF survey/inst/doc/pps.Rnw0000644000176200001440000001455111541475406014640 0ustar liggesusers\documentclass{article} \usepackage{url} \addtolength{\topmargin}{-0.5in} \addtolength{\textheight}{0.75in} \addtolength{\oddsidemargin}{-0.5in} \addtolength{\textwidth}{1in} %\VignetteIndexEntry{Analysing PPS designs} \usepackage{Sweave} \author{Thomas Lumley} \title{Describing PPS designs to R} \begin{document} \maketitle The survey package has always supported PPS (ie, arbitrary unequal probability) sampling with replacement, or using the with-replacement single-stage approximation to a multistage design. No special notation is required: just specify the correct sampling weights. Version 3.11 added an another approximation for PPS sampling without replacement, and version 3.16 added more support. There are two broad classes of estimators for PPS sampling without replacement: approximations to the Horvitz--Thompson and Yates--Grundy estimators based on approximating the pairwise sampling probabilities, and estimators of H\'ajek type that attempt to recover the extra precision of a without-replacement design by conditioning on the estimated population size. \subsection*{Direct approximations} Using the standard recursive algorithm for stratified multistage sampling when one or more stages are actually PPS gives an approximation due to Brewer. This is simple to compute, always non-negative, and appears to be fairly efficient. \subsection*{Approximating $\pi_{ij}$} Given the pairwise sampling probabilities $\pi_{ij}$ we can define the weighted covariance of sampling indicators $$\check{\Delta}_{ij} = 1-\frac{\pi_i\pi_j}{\pi_{ij}}$$ and the weighted observations $$\check{x}_i=\frac{1}{\pi_i}x_i.$$ Two unbiased estimators of the variance of the total of $x$ are the Horvitz--Thompson estimator $$\hat V_{HT}= \sum_{i,j=1}^n \check{\Delta}\check{x}_i\check{x}_j$$ and the Yates--Grundy(--Sen) estimator $$\hat V_{YG}= \frac{1}{2}\sum_{i,j=1}^n \check{\Delta}(\check{x}_i-\check{x}_j)^2$$ The Yates--Grundy estimator appears to be preferred in most comparisons. It is always non-negative (up to rounding error, at least). In principle, $\pi_{ij}$ might not be available and various approximations have been proposed. The (truncated) Hartley--Rao approximation is $$\check{\Delta}_{ij}=1-\frac{n-\pi_i-\pi_j+\sum_{k=1}^N\pi^2_k/n}{n-1}$$ which requires knowing $\pi_i$ for all units in the population. The population sum can be estimated from the sample, giving a further approximation $$\check{\Delta}_{ij}=1-\frac{n-\pi_i-\pi_j+\sum_{k=1}^n\pi_k/n}{n-1}.$$ that requires only the sample $\pi_i$. Overton's approximation is $$\check{\Delta}_{ij}=1-\frac{n-(\pi_i+\pi_j)/2}{n-1}$$ which also requires only the sample $\pi_i$. In practice, given modern computing power, $\pi_{ij}$ should be available either explicitly or by simulation, so the Hartley--Rao and Overton approximations are not particularly useful. \subsection{Using the PPS estimators} At the moment, only Brewer's approximation can be used as a component of multistage sampling, though for any sampling design it is possible to work out the joint sampling probabilities and use the other approaches. The other approaches can be used for cluster sampling or for sampling of individual units. This is likely to change in the future. To specify a PPS design, the sampling probabilities must be given in the \texttt{prob} argument of \texttt{svydesign}, or in the \texttt{fpc} argument, with \texttt{prob} and \texttt{weight} unspecified. In addition, it is necessary to specify which PPS computation should be used, with the \texttt{pps} argument. The optional \texttt{variance} argument specifies the Horvitz--Thompson (\texttt{variance="HT"}) or Yates--Grundy (\texttt{variance="YG"}) estimator, with the default being \texttt{"HT"}. Some estimators require information in addition to the sampling probabilities for units in the sample. This information is supplied to the \texttt{pps=} argument of \texttt{svydesign} using wrapper functions that create objects with appropriate classes. To specify the population sum $\sum pi_i^2/n$ needed for the Hartley--Rao approximation, use \texttt{HR()}, and to specify a matrix of pairwise sampling probabilities use \texttt{ppsmat()}. The function \texttt{HR()} without an argument will use the Hartley--Rao approximation and estimate the population sum from the sample. The data set \texttt{election} contains county-level voting data from the 2004 US presidential elections, with a PPS sample of size 40 taken using Till\'e's splitting method, from the \texttt{sampling} package. The sampling probabilities vary widely, with Los Angeles County having a probability of 0.9 and many small counties having probabilities less than 0.0005. <<>>= library(survey) data(election) summary(election$p) summary(election_pps$p) @ Some possible survey design specifications for these data are: <<>>= ## Hajek type dpps_br<- svydesign(id=~1, fpc=~p, data=election_pps, pps="brewer") ## Horvitz-Thompson type dpps_ov<- svydesign(id=~1, fpc=~p, data=election_pps, pps="overton") dpps_hr<- svydesign(id=~1, fpc=~p, data=election_pps, pps=HR(sum(election$p^2)/40)) dpps_hr1<- svydesign(id=~1, fpc=~p, data=election_pps, pps=HR()) dpps_ht<- svydesign(id=~1, fpc=~p, data=election_pps, pps=ppsmat(election_jointprob)) ## Yates-Grundy type dpps_yg<- svydesign(id=~1, fpc=~p, data=election_pps, pps=ppsmat(election_jointprob),variance="YG") dpps_hryg<- svydesign(id=~1, fpc=~p, data=election_pps, pps=HR(sum(election$p^2)/40),variance="YG") ## The with-replacement approximation dppswr <-svydesign(id=~1, probs=~p, data=election_pps) @ All the without-replacement design objects except for Brewer's method include a matrix $\check{\Delta}$. These can be visualized with the \texttt{image()} method. These plots use the \texttt{lattice} package and so need \texttt{show()} to display them inside a program: <>= show(image(dpps_ht)) @ <>= show(image(dpps_ov)) @ In this example there are more negative entries in $\check{\Delta}$ with the approximate methods than when the full pairwise sampling matrix is supplied. The estimated totals are the same with all the methods, but the standard errors are not. <<>>= svytotal(~Bush+Kerry+Nader, dpps_ht) svytotal(~Bush+Kerry+Nader, dpps_yg) svytotal(~Bush+Kerry+Nader, dpps_hr) svytotal(~Bush+Kerry+Nader, dpps_hryg) svytotal(~Bush+Kerry+Nader, dpps_hr1) svytotal(~Bush+Kerry+Nader, dpps_br) svytotal(~Bush+Kerry+Nader, dpps_ov) svytotal(~Bush+Kerry+Nader, dppswr) @ \end{document} survey/inst/doc/precalibrated.pdf0000644000176200001440000037644714424312432016651 0ustar liggesusers%PDF-1.5 % 1 0 obj << /Length 250 >> stream concordance:precalibrated.tex:precalibrated.Rnw:1 14 1 1 2 1 0 2 1 3 0 1 2 2 1 1 2 6 0 1 1 5 0 2 1 7 0 1 2 3 1 1 2 1 0 1 1 7 0 1 2 1 1 1 2 8 0 1 2 1 1 1 3 2 0 1 1 1 2 7 0 1 2 2 1 1 2 7 0 1 1 6 0 1 1 6 0 1 1 6 0 1 2 6 0 1 1 6 0 1 1 6 0 1 1 7 0 1 2 3 1 endstream endobj 4 0 obj << /Length 1512 /Filter /FlateDecode >> stream xڝWA6 Wgɲ퀵h 0ʋZ6$Y.#E9b'QEO݋_ާrŋXLvXnW9,Vzqy*_s䥈a焈45Mv 3~9=.6eKV#KdvGbBޙv\;Y2alz ]+R˵ CgO͊L[^ aѠe*s! '͡sHu|ekݐC`IIYΔ5 đ0z7T(A"nVyeG'ϹR44 ]@#>GGfz3J~#%l7-D7JyR$Mq@h%1F^HO Hǰ!9I1O0ܚxr8ʴXCL/uI &K=Q-uBCn/V%](z"9JյtV;jmmgxj,o>(2B(%h2ao^".x5Teq!d\r6=x$sL>RR2IJі`}ψ.ik7oO1A &>+ȘT{AB鋧{a鹮7?BzU1=05-{ݎ gmI¸[׋ 뇾{勓R ;z|?p} Hyi8NH}b8 &0?pZZoC7 X)F21Kk6aCڜ23 'h5lQ}ƽ3A9Hgï@o>'> 龩)A砈gdiR?pȴ}Vc4 ߴ;ܕ= Zmj8`!E%~$=xJnEbBA9|Re _5ੌH/^^) endstream endobj 14 0 obj << /Length 1032 /Filter /FlateDecode >> stream xڭVɎFWz$!|1.LJT"V[U^[6d,7 )Ih"!1}:< Q5 \@}ۻC;Un4ptna*4ߛ|X[#b3 ?ovs)Ʉsu<11q?aƲV.@;ʊz I3N5C”S Tnr1˪HMdU}S$"XIC6[ȫ_:κݵL$JaP:ȫiov0ipocS^FvWaQ˧81>dF.K7/T|ik$-CZiŔpF]XTN,t13NyD+@x6~ptP!v8?I[+0B!=5H$`76?aNZ3&Eo_o%T.55lHN*!.tQ*lrAn4ZyA4,{Bfd¯/qQi]x.m5.E\vvD7.TkK^*oΕ3Q֬sFlxY2cDe QH$ ǐ^Vh2^Y@:ʼnuS:R4S(TcME(ԨGCFrbsc`| BoJd,Ö1Ttwro;J 7w;^׽+)dz$J+HeFpwFRxˍn7m endstream endobj 17 0 obj << /Length 679 /Filter /FlateDecode >> stream xڵTKo0Wp RCTJ[[E^`" ʥ3,jU{e^vNLn4B䕮 3{f+PEӍ4 ]Ғ=b殱m 'W;үPOՓU^hdMYQ2͸}CIƕ4QA'd!,PWƔ*V;gWl ~uѪf|&8*/M zC~ _RCK#;5>|<5`eiؿq(i̽[() S@y\q qBڄB9-n$KwGHsJlzMل? EYiVLrH%.Z#yqPV vy:zp]*CQC1Q gޑՒѝ$O~ ,?) }kIۋ kh`wch4&.a/:R[<+B4RsGM.[lt^@ endstream endobj 26 0 obj << /Length1 721 /Length2 17799 /Length3 0 /Length 18402 /Filter /FlateDecode >> stream xlcpM-vNvض۶m۶m۶̙9U}uz]W߿HQΘ ( `g!#7w4w4LfFF&2#ҐE=@ ,DoG"Ecc1 $+..# Q[ R6T[{89?LmEde6F)8:p66tEV k `dn0065an6&_)9!(ѐ `dlJF@)dkmhl52(ZomnqGt1G9D]D]W5ϹH;Yg?zsF6Vnw B43l mmLhoo¿rqMK;ڛ4e}o[W:&N 3C߂3fm֐;"9Ol98촞22T&νN }~1d$Q2kIwֻ|[]5 M؝c$kFy^dQH>pՅGQ*m to8}*Yk׽5܀]2l]2?{oXyt K#죐0os)EUCr['u%($G9%+M 0r.]' H[KV]ǟp6ˮmjlzq%uQ_b{LGVVҮ/>Z+CrK*մy:'[I7 T8R. vbcوڡ+ .[WWn>a6:N=d1M<$cI=06uLQ~׵ QϮ- ssb+~҂#?Խ c=b'|{3v5?hL7F` oV31]D"U#W}pVr._|;򈭭ȯ޿-I!ZH'IE<ވP9$&wlҟ4 :&2e(޲J^k?O%SSLk"?|x' ~.jHNINi5ŏܓyՔ6BX:0 p#ns>s4y9;T,<c+IVtE8)fIdy^׻*tTN#qinU\}̇.:cW{6W: 35ZLgm&lԁ%.Ʊׯ.cHf/x|6FW9AS, ƛ{|seih 1,g"Ndw@A!K3z\w,JvtaDojb-E2"o]%% bD(ml= |Q1t4LhxuI_S$2\ޓ' oܤkujM.#ϴI {g~^! Ā ۠1Iz-u 9 }K᪯g-A%ė8~4U<ҺQ2\cfJ9͢ޚBB0$bqgw+H'䄎-M|6M/ԏ@q `V̖N&@&ؾc1ڔnZGO` xy=e=GuŞ#4.mq'o!sثIftl/E餪 vH{UfYC./*sMSK^<%д_$k;%Q NZǂ'>Ifzi¼ P; 0x/9pEpe !;$C9dLHmO8k%4WF)vϑ%T$%8@RUW?hٚ$glA~AW ~Zb:]z "GO21z&۷ q. TS U E}pBfmݪY7)t˸8|mE12VzVr6-TDv 56ɦ,_b^RՐUw% +^>P7pnȎi7J zLQ-0K4Ľ_}\V$7}xxt,KQf_ѕknv3A&;q׷B#*tukٺp# ȫjcNlbn,ړKBVuC&qmbڰPZQvKJ,ڋ僞{;\}C>-1W)Ep2$G(Ƣ%`d:r- 7D^$j0,:mC[/;ZR).)brO֋-~/43rf >i3&GLUס笌&sԢ/׸gLɸx冀DwDKհ5B:>I兡LNSDuv ԻP&Wz kUK6$N~?yhZWHJrގ\Kgwn:ՠA*)n!QFV#lN4f Nl07P̻rBkm7-VRewwп$"y!ngA`рEkz۝^ϩDHwoshL{TXYVYQrLbPzB=<˔9^|'d؞|9$k:rg1ga(ZR!ֹ#S&#Vk&;A2I ?}50ueI )2NL'Y~l tJGedc/;JD%s ei!|vn\+KLhuYHFSȞ]a:ҽ"U,E65cybiOgY j*e v~;[AE'z(8%@9,?~ʾ +:M,iz2 p5h*AQMdUK_1elC wadDqVF$ Goɋ,ǾKa$G"ONzIr1P# & itdŲ`%Y}z FPo I4vy({jM䝡~S &wfȦu6`bÎ"$yO6UyU'gUxE3TŲT*N)Th/VŽnRaC:*:2[ݦkdyC; ;w!@`(}LQ(S:l'm݁W'23 /ʼn1˸1F][Xv x<ɰsT|=0HLJegnvAwJ0)Zκ Z4 VN RXkJV%gHo1cG58Mj9%gVAv'X'mʞT\W*pgodQ[pqDobC!9BLVaVᤶXF&:)îyy0+aT3*iԔgTY!r ix*0:WYq yb&{ɚNոlm)?D;!80\ķ"nyňv#*"0&WdIvee%6TGdDWI7Klr$豨ܝt2]0t$/}F=e;  }#4PZOcҒdcןZW[|B8$>em_| 1@㗡f/˚>w6͜9ɖWlQ?_+^aP ?VcyCɅC|?a5$ztgOaЗCB2&.ԹO €uԛXټDЃg(T) Ty0߹<+3g`OP{үD+ )8}ڏ'4{jc n81~YvݡF6 bL_DG -Ng,:{ i#vqbU R5E 7Z3XLusvs>:#'ľڧeUI;CJff6~c^Sp@BeI|6k^9ON}(::[˰A%7vg5i˖2)o-5*]x_OzSʈL;Q/L.HATK'q%Rzhzt'}Agųcdo%~H@Sȅ*9~0 /rvNNh;9^x!^ït2Ƿi>%gMNl)ge Fr,:sT9 (UYܧx'͍χV[Fcx iQ&zdk]F`" P!>̖[1vʼiG,s^9:E^u,+>VA?*z9?kW˶tnO6Z mmSz |v @b4KY0]WFA44mT 8eCqL0Jr=%57hAB4([g>c_>RSFQ9Hfs=4 MLͣ6U+~XcT-oO3IɲX4ՙjYh݊[L;<qW PșO [2C!- ͶF#p*o%6}U*;"KԢ' AV0N!k2xi-fzd:iM.1U> ] YfQ SrhJIu\ 2m)#d>L Tt_ՄKi41]2w3_%w𤉺 WDw ] ^q"֋K[|V cf:/;>O?RVS]8!GCwj<6D'oTMnqm 4|k+$Q\e:!$Vțl-ML$D->΅0c)(G3MCTKDuKYQ3lL[!O;__0Q],x^B&_PT'C6'$_ffLFmp~,D3"wF\y<\ZDkN%F.[GK};C\-%A]sm~qR<_&4lk5qLi\ dQiy…`㧬hAFjfI["DPmr֑Mt!p)a_!Gݣ+2m0{0z-]Eig#ByCrvF5q>]pdw'P@D4Jp/mќTzUq4"X{K [XZC^j0+Bم$Q{W$C6N\kU/è+5 3=ИQ,6)FX:ĐCzLv(@> Z7 )a(&s&o'%j2\U/$_Hop4@dbz#p=NVzüzgji ǝV^8/R'*YP0f4y\G +4xޘ[ TwA`q҆Մ'~*L}Ue';HakUMt >Ȁ} }cSە d\̞qy}+-` Gh?= Qθ3Phy84+YƄYT 6X4`aE ѓk$:h#Qbm64E#z _ר fѦoK_qLF<xs#=FZ9R*e v2O 78@ϐ|<|քOTB!_Mx5ޘ Aq zGC<vP71K9ö#|mK"ňu؝ڈޮ?~V~e&% !q&(֓=ЗN$G&8dZJ t 3Lv #kA*%MbY,>3&=XE #Z.;$ ۂCPpviZg%'Q:e''00#iCqCw_bU0քIIHts$d5&ןh]( SEjpGR8_Y~UqqRE{/3]y"wM ~_ fx)§g_Kه ]z4A[3!; 4˾{%(.j$׃Z_✀{7Yt/yQl1f rmN$\ԟ̃/+ $T) Y9K"ٚI,ͥWoh=ULF9 v<,)Xkӎ&U7w+! 02'#24d)dO+a4Z J]"V4G =k:urÑ2EKv>Pi=-h*dڜ$Olu##uolQڄaQ;Ϧzr,$<%/] ȳZYɵ6s7?RIw [mZF)lkp}S]!_GZ9[I5Y3ɥ&3AR &`g͡n'S;l="n%XwH'X(M^ΣɭQlXX@v!{U>ދ&y𹆦eEwfbb'obzPmwt> *%lI59=oxJ6`U~Oo5-\,MB= Ԣ&b?w=1!_ ^/<_co^r81 ǭCqnjTJ:-X0_!N6a}jܗcUI " ɮooUHp@i*"vRc2:p|ݳOޜN؊v!wQS_uobr-5\@$ csٝ;Kxܰnv=X@lg\Yl, m 6~/"$\S-+a}:T> Cwp-vzW]ڤś'ǓquX1SȀBebxG&{T'[ֳ: ob*. \gʼn|+Xf"asmq@, hV^2#O|8&N5I~B<%7^9dӞg`^'ͬXdws4O\~ʹ[FގO +GGe^9ǠIݛy'? gG׊Hl*ܫuzۮٟ^H yΪyô;7UL}bdxI0"x{ n̴ˮl'85bw$BEjXQ3}=99gw-lI΍&`#L{ ju(S~Di״Z4X`a?`J,]2H$]m >_<7{MF v7^0( }i0y( _ Uf$R5dݷ\%\9dtт5a [O"EaxlmG%N} FE7aܪl4=/!E/}Jc46IX!S7TBZ"2>l^CX \nfr:#*[@v%X?N4MfotiImaG9ˆ8;ܾ6!*y>_ W%'%xD +Qb)7Sn˞vmLLUː),lHkOBы ʒfB+wcڴ:M5ţ2K#nIzUg)ٷ&zb[P[a Mp l:i5T=KĊ yLwbiR3sVrJ pwtI~>C}ͧ2Wrh|a?qP?Rl駇ݣt\. YJ40p$+bpwu*ʅ5;CQ k׉Y8ima!r=|딳313 \heF T ҆GH+OIYѣʵtBz=fyJnMZE^hҪ{ f~eg󡷗]7p(.H*jIb){'䰎ڬʒBlGa٨9ٲ@K*?./$ڜDj xYTչ, EpY<46! Podh&-[vY7϶:Y¤YQe|ݶŒw=GE όVs5'myJadNpd3 YILKKr_ct}b~i)SHlb퓄GaV5&"A>=Ա*~ mI u@K6i#ECfew_B%3 B@ZpW2m"7CWp to] v>lTl9> _Vph `Lv3Tƍ7^8+/)!j`I?˿aHdkB在m ZfVDKX{Tx|άX/&yy/Υ5PN"WA4BrZ6&ѭkVTArBZ_F? S@4U6yCSGC[K 2r(y[b] pƄ6Ńo΁U>H_f8~6=]j]bhSS_hRADG7g2ؒ9/ySɯń[ŋqn)5Nǖam5EV\(`">ɷoP'u)@^q0tYSV2 dvx ?5'g2ol]J h qNǜ@`Sѧsj`u<4|&Ij]~R:?E7?DԊXbc&o]n؞2& ^Wʱ%2f^ c5:s-D9LXg"w/M) %NA= bej=aVK>~ċ+#Cba'P}MUAs`[mъgW1!#3kp\$ӔݔU3W>i^*f*/4ؼ)SRߪ$uY$H1r#y$ZL r<;vve_`z*h-c[36x =G؛dM~ 7cfvߐi{.G*#%2#I(Îo^&ByG~ h5b`CҸ."RdElbty-漣Kf:DAZIt)0dw%W˚8ߋ!tTmپp]8U^,4ۉ׭;4wZNtY&3P@Wg/F%%2 Y{TpB6.#@R_igخD>3{ϲlwf:7 ]#SȖŌG*5@Fg8cA*us&\9k s'SmHDRG<kՑ\¨;%l)>b}_\Q ;Gi̕f(́ G~'sdvoō=3wgk|ϟ &[V~C4J0$_-0Fr-31)9ۄijmecr:?O*~L8&<3{}D]BE*4ǩB8y-vJ.ȿ~{?Խвͪ|]IGN;_-@"UrިZcmp+M>-~3ħԂHJxp2 w5G`glFKOC8r2 ?}\Csz]`{GZ_uj) : |4LIC0~ @yp963û}upv9 wmPʖMWER 1ioҘsx**"1jz;"< XQfY@,8Io8uR̜@Z#H*d12+BJe:s{~S$|/9dIq O!$wش9aYՁx#~10(=q>ִ}^X"4r+*UcoY̥(o%!]+N9zO~9"Nyr.o/-ojKKn~v,l;˴.ޢBN73&E3KϺl! nu[hi;Й'2V?#Km۪w:„$XEAXEIA8>崹\y) 8, \`qo3s+ϩW-x鿽xf \ M 6~\?61{χP,@aeJ0ٜL9zrr if QhԪ[vVTڌQK"EBCF(piԦu^)U|2DbomxqKsN鰖$~ZP(O;R|o ,!sӇs]W4j)]@*br]Z& ~j "Xi[:pN Pj$NS2far"ZXU⋰oNP6b4O}#ݴ#1ܗI!4`Q nVy{i]@7HEY9 ڬ"MY{rzu m @Jl(ϞwUuWdC5, $W>V",ӛVŶ)&{KrCiQ4.e HjCzhOhxT)3`ehuN_۶i*<%r]}OmL'fI+oA*-Ǔ%Tp9+od39qLh ޢ)5Nڰ ĐV^I e. ep6$ߝiο>3Θltĵ9?2"&sƕ6kmW#zx -LY°"F8ծ.e;PMjY@Z'~I94!p:x"I2 h"E!Rp jtlE-0eACt+ps2yG񉧌 Fhԑ9}|K0jMFDfabWG, <~/ɦJzq^B^_x@N% 9!2 ?,=N#vJK.lٍA92Ŧ-Q"K:=jvi>Uv`@1)N%n-LŸ́KPu 3LDu(+^MG9ՁCa)hM#`,zv[-;hXKPHJs1SN.Һ`T=vռªsJJiq 1k40bcpܵҜ}{#gS" vhv;vVJ $ OqrqTZ$4k_:45ɉFKqOQEi?O CM@ Vj:`_0AlhpԩGHn7fqӹo JDyl}6dt4U1,/Y!oe:ק.!bz{a_ VLe VN$iX)X䙘֟%\h֠ݰh;8z]o #zdwi<{0&l/Ł+QޝUۯox(W^>)зI6>T2fn֍AYV$%/c%n F 3[sRzcP$e-b_2 >)+TMqby, ؾ*g((Nf=LfR!_ʢB\% n,M`5і)g4 !|TeTyHǿh6Q;\mʳf^GJ55v'b>bJ&zK|nZ,@"#4{Ȯg!ynWaAjN8G0@d5чN3 ndtƵe t*}]dOp;'JP)uq'+Q@>{FMC{/v4N9Tm= ._N+s؝@";cGfٿ@x l&ķ-eM%Pf`h$ h !Kx)"Bp1:^'ȊI8k-vgNq횞EEy;mo`ܯ0@7G2+ :~$p}xfHAD2Rh+N  )fV$ {'4[VQ*Vj9+.|r`490oJM2ad&OY"Ds ?HF4XSɸԓo`Q!e!|Y3wb}ܢсrRn}+jilфkD H&!:<mQ'Ɲ_w$dq5V=#|L\[t~iB@^ҼShSGJ\WP/Lm>y[gj011j:8õTc"^/Ȇ m'1">W#vA!Ǿ \](v.t}oҙ"ϫ-CK endstream endobj 28 0 obj << /Length1 721 /Length2 10597 /Length3 0 /Length 11183 /Filter /FlateDecode >> stream xmuL5ݭ[q9;-R8ݡP}w/$;3kdY{B``ehh(spYhh$]fn GPh$ @olof r>;;z,lBb."4@ `$UUd*Y bfPs7Y@@+`wp[ɕ`_aV.ei-qU-$$ l PvsZ8k:f#{F[uwĊÝ 0ۿ|[9x [;W_}2,V*f@h t4a9aȻAl9C WR j+3.@Kÿ`{\Ȧ-, pn4s/OY lse37_?$$|Y8>X8~nN#v'g@/ڲWELӦL+SAKK;-Oҙ`s;wMf@e_%T5[/~G_|&tPu\_ Qc;Qp.Ɣ1-oNX]x2ae鿣1fmB EA|rMChbS= \gFΡЬ.Lop#XmK|N!rOjԙŴ勎Я(;Nvx YWxwOtў+鰦l&Vn-Cc]SS>qBɜt̵oL*i6i.xaܒ$k<"Ʋ7MݧkD>n-CLpM8(]v(e_[b#6x#`34kHMH~pVrϠ.x2ݓ)atB76cO]șY8CD"Ð-p~ZRca:q=ϵF)-}( aܦ!؇T@fOȱ3eywjAu\SYkZ_&ܡ]3BZ2B4fdT޺R[6^[]uRA7 kU{ו zI;'T7U.alR1uOZ^z< qu e=9jøm3c$ .N?ʻ,gwDz|S~͸=ȣY6a6 Z8>G)Rn$l9)č&%}V */QZ7jWozj25L]GM ȥOYK;ՖFrv;86Pg"oP¨]"-s!y=/0(f Ui<լBCu+ҟ[3ftz%nfcCwE} i>Y-! ,⛻$L$.U]4%sek>Zg'_o2RArܿKpRcg ߩYY*U9"d̓O[H[9f9f>ҕ IywhI~Joоk:6m SY,.p4ԵY5U&ZI~8D~32{8(;P!#Y~b)vK?dQB..\#B``Cky5̦+B>4Ȫ"8~bSk!=JTZl6ڏSf8KZ!h6N RΏǙ=<14}xfkZ 1+&IK)23k3f+^Sx7V$SL=";r' BtI:-W9ǛƝggڍjF1J0FJҪ&pQ.)=ՉakԀN6rENB;|X+Rtu"ӬrYoЄ*᫒WdJcNr3NsQ b?i w\ʎd9smytB7(Dܙ<fM41~G-V4B<UI(\/A)x\rf[3NȵpKJh7ΖPOS" *#w*On*$ ҰEo=z>U1}`~B-_l`ŷ:& [^` ]= ]6 nإzW<)tmAЦ5!M k]vKȏ*a!Hq%|BYO*4'ԮoǞ"R)%w_P$;V;H!Mٖgp*E|92yr ?%1jᣍ@[Y!l% o # ts b\P_LoDfh,9{-Y/ F.DE(x5LfaW[ ΢U8 nq}X' l% ~M7Sۡ/hR/n+BǶE8M>+WHsWwէ:*aW{ϣqSIuw3תW5aH;JH`4s O@<0/g:Hy'e<>tiF0Oqp9Chz[W**rE _,w)"zؙJ/K!.0IBQ&iw`äЕha(RQ?^_D-l'Ȗ\p8&N|6^]$fT#&Rʺo{,cMlԎgʲc|-\/#`'@3$ ,>d' ?/L}tf[2i xA8Uy&csDo(񐏤 mfGɂ 5*⸮ KT4 JDfEK~Z9TO]b#(gޤI0$$R2iI`^DIirqt;"e}иyUݪ9:'Fh ˧9 r6_{&Ȏ`1~Gm H 'o7(]r]?ɕTe R& fy>5aZ,} ě馽 'k-t1~ϔ#42rDE{A1qjqm/ &;-]^glF:]rhi*5lJSk׶ve=,1gQN" CTzOPu'#fkWkoUSGΨCE ;B4N ]EsQYM3*'<j]^Έ 2Ȩ|JfL"'ղ1y4c<#"xT=A.OR|+W%jH4fE lőK 8>SvbM.r#ݼ@ag}BXOSUخTY\9E< j䉆lltu]zv@otrX zU)4er!CyNq)@ȺAJȢpjqyi?w]^z\? m~ԹuF };P AP`TaVCՀw}=& \ks7RN>(;Ùt_VZ>sľ1Hr0!|jK+VGC.`ž~UNYSɮGzWv`@½Wm Ҥ GMۋ$0qw؀>R珥ޒJr  gjbWnU$Omle\\X Ԗk0I78@5/wf o^p{ vQ!TNia@]A.@h+-[GPy]d|:uTW21bY[Yf9lȮ|l)aSh2( 6Yj+VHٮvc [ +u8F65=\&şx>8 B|m$XOVӨ+/*PV1 &1n?&C6PhMXb#;T`PT:S }}*xޞ CŽ'9VWw(]z.^t@㖼e@܀MH# :YDDgel/{p<~>tKR*P=!{nʮYr >E'SJǜ1GQ֮M p^ī4+1,~6"ZJrc]1 J!ם[ we0Q:7C!]#@/4RB`qsnɫ2  PRq@Ihc=0C#Zu/qBEj&\:*=|ۧ@rBC~|?AE0y"`ƸuIMWtÝN/,並Q$&՜MhIAxW{0%_F$&rR1;rZΗS^4=*j9}JC1Y6&xvNWl?+lEs|S{pDoM3?Fw¢nA"DGn ' Cth9.fpy5FUT@0J%f,l%+rKw!&,ihPf浽%G )Ż0g p=FPJYJ01xnnRU:"yt^xrZ)(_zi[3m^;4Si}2fv7_ Iom|:xܣё!lJ0=$U_䂛;1Y%8̙ǩzWNnJ.gQ~CsX0 S%YJ1 =ib05At50V%gxdM_b|b Y|$ ,ÜBr5] \#5jH'Oy^JD[uM=~#K)zZ#&2}S*C1#E Ƨ[ tQb;\叺[dHL|/!Ȍ.EQR1)K- m䩶и;V6.ٌGM )eRe"(x;߹%UX[9 7REJz:$uEOzK\A)QpGkLQ00"{);!*j(mwHwS} Rkt B>\mO!3)[vdU Iџ_ r!RJ=QQ?-M U3 _[eP$cAVh9#8qG\y[]ڢwaϗoU:3&T]E Oew^%6BX:-EE afLD]MaK᫄P,RQ:ÇC<]0a1r"aAG8e 0VpR/Xϼs#rҊWS24&D66zHS?ݘMBr4?q?$ ǣC!]m]Mk0Z"p3 } RlI?vs,I!P=ɾyX3J 8Gl,G66F{pѪD}Wx1tsfpIB>m̖hTWs=B)R;bt9?aRYXOO׫+fWHt%dtNkӵC-8?sk]̠U޲PN?˺LLԩz xHR9𧯻i`։ؾᔫ'we-Ḷ3wů266GB[UO'7!}2ny?tO~#a>]*upWէZk" CV2+.ہ8ZkьU|2k{H\slUelRegAŭ:6ؖ@" +瞸k#sNx^Tmf+NNG$NF͒٧&FKό=fd BaGI Z&;olgZW"h1טNgVZ5jΘQFQEKf2+ZߤoF|)Y!En!GG䗚7NKtA0ε^y6 xAT}ҫpˇm\TWTxzp#m@dBneDw52hB$>`vzKz:pxYA o% nstl3i>sy/D8}ol̇F؅lB_Vk!TaoSl$`Q,jq,XiA4 /$ Ɓ kh5Y2D[/ ur$Z xgUYe& x?!~4nhMT/~g}g^knk&aqw0LJp7 -|IU9:? TkVc;Ƭ04s>M`oR-vxة. 6B՘=쿑t45I$PMjmd߰_xrOx#R͆JȦ*DK1A:vՇ ño3>{Zê85)Vޫf(b{Ьo;$5auT[0+BI*cc|K7 YP-ϊעoWovWϗHaAw0;^,!᣻3QkN[0jbp?<э7 ILmO4s'U{,?&1\xݑV"$0%[g*ohNut6=ghϞ{B? / R#TCΉͮ-E)Xaue5h }^cX2R}\"H&ՈĚ;2,d"|ӏ#HYTyoo>x0WJ Y@ 1Yow04 !>t(_9&lq3`'Gy8@~.X}oY"GzK\CM .D@MMM@P*$Q‘hFx$׋2`IQ a%e.v njK2Y3/1Tq2 y^{A^A0T]=5V5gZf΍3( «iݜSWѝfʵf6x 7gL6@;{7{t&L$[p߲:Ǩ?pBaNL,tfy5}/cFWoCjf!1yPTlUQ{\ZN~s7p2&DŸŦ P2@fD,5 eJi=c 0^f}++: C>Tuc۝ҏ̦aHI: TS~\-9B7/1uh L1?2sC[LX{ӼTL':&wPocy,e}90,_QäUbPqEj؏bw O*`f5֚ wŁi}Jl"ޚwZ .rFԿʆ]tLơ -FΫpE ?, x%SUd%>fț$&X6p`xB|ݏþ@<*NlJm5Y&\!@0صVuMI_tVKD e^e'Dz1΢p&{eXE4nΥcv$n$VGﻃcz_,O> stream xmweP]ݲ-eCpww 4!wwnw9^ի{蚣kRK;]5<AlLl̬ui5E6v^+33,i h, G; lce 5hٙZ8ḽnnnn._ 3mR  +$QȀ gS;W3;sv,vN` iraG W=@QJCLZYI %!0[. sgMpodg63 _Ɂ--:W_}ڿ,@_LAZ {ǯ g Ps7ejoc/Cb`αqYظEڠߋ"A{`;=Ȣ,+,6w[]zil_Ϳ?bMM]m<Z} %. ``qp8|_A` ; #,9 ئ *e2dXb\qi3`maAxAXB2h&}%wJaB9!0\"|.\eWZat E`osy㚹B?wZ'T.)cR k,CgHP1cZti&^rEE`l]TWnSes$|vĪ]~-lGNUL4i`W;}7. OH{k"S86 'K4{q%L[8NܽPYK[1sB-r#!]VN Ƀ )fݤ<B}n:yxѬuɏ#<~\~"иt}7<BlwEރ?R Ӄ?h6Luڃ5lB!Aa#/՚>,j]Vuz %5GO8aa5<ƬX.iL˷3 1fgX!gn/&(Pb2"% LCWO [-PV<4$~(ԙ> M#cB4͟NըG4bf"r)Pඐru{t!W{]a/oԳ?5#i`mWC0bJCTLC^W0Y<BsEhFLF9HFF-$j^C!jܡxn\t8Qa‰n0w'j}N8u ٕ[6lvxpmkz:ݨ~ 6BX=:Y\scO94A2pO# [('_koXN |XɮR/暓`#N#T2ѪndD4&p,~LƤhxy7cI?ET".n-,L4DoX9d ܅yuD`o9QAoQd*'9g̩q32 Q> \}I0Ȧpr}HWGhRHTMА4c6y,jbAZךheGVPDwGb:4[ClCPmdpj϶W>{Ћ,|GH.8wnbs>z(SE]74)[gzIBK5!4—nKAG3YMs Ɛ*JI6c-cv3* Ln8d'SF)^CZyM<@߸IuɲDJK58ޱϏJbG<g|G-"!" 32]5Q!qn >x_m=(j(̴+G &d LiKVjSx)ɐ}-[h q̹3wb*B:&Nmn||q$.xeI5 $Ix1D\m O? Y..;;V#&꼝P힄shnRvʼnRFLVQ)fzWd2uN"[»l%L%]1 ܔ+֮f:¹l1Xo>v%GG3BOJ+c3fLD>M;3sY bkn郘UKT"k+m|PzS*uJ { OdCr]E ^?vue9 8 , U[HO`WK;nY7H:;Rzqp: loOQڞet?Q?E_d_E'91}->%"}\lpa`қl"sF_%4fJL^6<+vZL%R,F9)8#娼@eX[Z>-iv@5AS SSv qǘ?0֑y 9#;_$<\/%HOsX'2pXXBU-ͭrEE'ʈLn%ؐA%z'i\X/n̠T9$Bvum-D*QIxbM hZl!8RJzF[5x? p-׶Oְ pl! hZJYɭ@oc>|? R;͏+[c8M:iuLj+vjC7cjKh({~BZ,@LjzƵKqA\DrF9bn~8eӕ?Xfȝ. rIAnclZ 0d2ݧ  Fo=(2% FDZ0?UC(mѮANԜ׷b+!]$<}DA{~fߧ D M~޴%I_:]@ˏ3 zeWFBFoǭz4cRvR R> >_7_65$F si]Jyjv$Ogٹp*do:I0f"d 7H/,yCUtSe22>#6B ?(Z䧿V6Y]kQX)C?WO˚A3TH,NGHdBI޳hx7Yn7N7݉9tڒ(\k|6i0Sڒ31OAZP O8Qt~@jD%RLjKpT& KFS&`VGl͒vʠw=|x R% .*/GmlxfF8y1ħu La@4d;0󜘳[!L& \P LxpwY}A)K/>mMr"y,qa&'?'pcPpvїL7NʹArp})T Ȟ7-L9^cr~ޮ(JV vpgj]"2!̚(eGEax d;zԓ1U@@ nd>ʛFn>vNJvԟ- kGg]*'͛nbV)207kya'^]6DGLWd˯bDCA덝`<,(ud lbA$=rpg Z7^,HІBJ}"VI?slɊAufDt%]9A;Pn/srۦGtTumFh'/*˕tn D=|ǻ;)הJCI  4P|~ӂ(-&OAњu,`K>V5;꒼C 8zS:}@`NV~88zXCvgD.:4b[_2ݝ_q{yveh3\=DfvmiVNBAAj,;W-JfsÞ(jX(!3]:yUͳkTz},MĹAU=7y(b`C5-;Ujƺü2>F׋ JLA3jidUBI(D?OY] /:Sg'[x0zƥ}AdZ>Y؆KB,u_,!3?ҕ`E(^TDM: Mro!OuŚ* Ul=ML$@wfxPu)2`lT>D]5Lp/E06=`9!Iki5/U'1lBTE|8$DI$#F\&Cv8UR2;mULf>(LGnT4ЁNFRa&߂=|ֻHL*]].TG}:ہ+HԭHi,o\̍pnv8Pp)R.$=Va'yu$%f%b(45Θ%#QY2Hrzkh;#'_7}!s?0/J#K/uFL+y3쵴*y/$0ufnr;4~],<4GIf 쑻]0 v_&$jˏ[sb(0/urW-v 3Od^m5^f(#ʳz/U`fFnM𼞬څDQ^ e ð bvO,:126툠JJG/նj-m d &Y։w}&ak(·7'g1ѥBj/_:9<{ߜ)،&OfiŤ3>ɲ(ƈ9\ (MyrM;%U͉n[_vf% 0"kq)(cRI4K*uzPG IEYI#{i.'!qg]JFO0պ?rረ4 ॸ[Lܝv[ ww* eAd"*蚎Qe=|*!{!Xۋ/ERf^iwx%*JxY"Aljm%$PjbwQ̮XPc7=9!EY3qÀ#ُDn}1[^3]wGQ/o[iR@{,zk"wwC-+$I_w`YTp8g .>lVRl(o3y^|SĔ:54cP=i4s@N: 4yu=mqAv ;$l 6ЭJFFiFW؂{Uq/7O)Zװ~+n{~w~͍]oJz_P!*^ti^1{weРg|ќO2T =3oM.q=SoKnօsnn<0ژӈ,r;;X9%B^SKDNOmDJN }?x"Qs>0ZT 6xKUnxra=C'v蘳O<"fo7er+ I"Xqw ;\wG:7MHYKt `+c9er7cx{ ¶Rj=&vA/l&Ϲ4"CT6e)rlz3aQxr_Pb= :H9mk(zqӎ*70j&u42LwzMK,u~1FJXib&6‘D18ok`Ev d0_aO/i[ӿuP|@9P7ɵ |@)b9/z~x ^1Kl$6!ӿYRN3y3hZdGL2sٗ WlI ~CT8QG||6"<>[:虸%yϢ=Ͷ'j{!|1pv #_Lǩ_"a,=޿y6͎gjW:|u;8ԥAVt=V>wer#UʼQJLkt3)Bф~bD~HI{Xkɋ0Wgx-АH^C<9 Ws `ݟ"4LFō"=9׳MQʷ8AoÈI׻<lq;p _$pR1Y},Yltauڞ8b vO2˞hɇs]a-)?E~Ƶooږ`X>`G=D n1-yKSny~}a/!1SM9E;-~k%[|h"L@E%x̉%- vea $1E!BjA,}(AHoZ5ŤSdFwu0J$yTGm>Y4:N#QwA2rbU]t<\, kxޣRb][+6 #ulE&r-'m19 ^d#c_G#[C]Йkwu26?rv1 0&#Rd>[D&ƀ 9fXvq [kb ]37@(U%|I߽?f73IjI^tr IڂitHܕ5PU]g\5Z+,vQ(gW f](dL;TD7iQK?Tp]??;#J;ݕ)t!dGSvZf7?g zȬ-y-S%#DQ֗2bWH㤦5}!~VRx' R}CŭU $Ḭ(KȄ*!'[A3]svSةWB '~D+"Ԕ@r!|mc\ygP?LMcIʮ0XQ]x2<$Q⬤(#0Aq/0W7尘B$gBh.5 enCl!3ĂYvKF9f?^Cmɠ^O%)'- 3 >;Zvm5 r'Qc_?ͧPaf⋊ʾZd'wv9asx;Zk=iiܡ)ȔqP8 1ʤ.Aic3gGkYY0 zlcZ,UDTqn;$*ʮ6ml[`bO?/а$lXkvJNŁI^8ŎQ&.8X/ ,|Rj%} E\ T4#W'I.-TKg~[R8<9ȋ]Uh5,EZTs'It:r',(I$/zD5Dforo ;C? }fQ \dܶ$/e Sjc [jECϫ= _ayXblUO_{9*BSsf# v:n wr,''^5Au@4x m;> N6T&7=4lQWg2g{+?/.Vp 9-YӨvg[yz endstream endobj 32 0 obj << /Length1 737 /Length2 24794 /Length3 0 /Length 25314 /Filter /FlateDecode >> stream xlpo/vIvl;m۶c֎m۶m{9}o[_U͙EJ$jgaoHHPURfd``01Ð ;8[6p6LL&FR3ˆB#@*BG `jamאPɪLlM .Fi #['J#? _19;[WG3uȈ( *D镅im61rrWv4 2_`FC3 [&akj`TO|0cbm-k`cwq6q8ſ$Jd?.6NBPm?b 'Q wcy wvt1X?$cblb!L6?ֿ礗RMo@l Wo 7ygG wݿʅ_P:JH݋@ϋ _8::{ڲwejshHl8촾 2#TŠν2NL!}A d4Q2k1IoֻB[}5*,MĝsZ<$KfyC)/c~Y{8v£9J7>u5ҬyH!HX^. )yAyaf~c8f6Pm׊?W{inˇOy73/jj:ے"0l^#6{\9RK^cj(TdzzĕQ׎gNؼ;BiƲl`ƹ'p§У p@f  7&nMNbYWϕM_Ю"_SDUW=&]US7=J*W osyԊJ㺓 'Nu9cڏᄏ^&zg/,ˑ+ Af81t^n,kә%Mag:c'YwHzjtf}Ň7 ϾWVC*- z0Y v7xw9<|>G|Աq ,i*x!:-z=tC>پkPǷ$记>$VHUq3&yej2Q$ iC-xpڟ%1mm~r%T![*I:{*;GUN+yIuzb la!٪](?E#hEpfۮTaFhHT9HGCBem%bq Lm̆1T'Ņn)t@L,fq ?] &?*-=~ 1AwXS)~LY5>5i٭jDwu`V;#2D?6NFrx/ېd6Y4\)kU>$N):x}hHs rqkxމTm$0ބu UAv93qR*^NJځpL/R.|nPb k|ul$5үnVF9%UR 9)WK+[V,l>cy=YAڟm1Gk?t$4vhq(]i wh)R|@R`;?UvIhw:gunAD@kXxk]! e9t'.Sn-**32T  E Ո,~Q"]9N܏܃ZJd4}/YXIu{~EU(܌IŽ;A@Еջ Uly؀yV%[iݹr|9hl,o8z"G_Ş>Wa> %mxU*3c璟dj5 iYDW_:aADC*z~q9oaȡʣ$"7 { :TL!ii'+ӆ@M:.|`yA$\`:KB'ڪj0 ż5ECdpLl\i؅Oy{!p1ރ=_a+/Y?>(ϔŽӿ' joJ/=fE ?8 Q%o$pJghiKi ЯKbeJgQ:4LGX;m靁r&)}&F޽V+)cqۥd":^2D{NvxPOI4EQe] ̦qy{\i5|IљٖޓIF!  CKfW (t`@᝶gFST=I[vS'*^pamiJݶ.4]JP}vd- \*xm؇lUO Bwi[S~U$p]EQ_ekݎή*V%'+T̑K8 bpZB541,n7 eXrfJ5tQ1XB!Q˞vjЉG=<iTg**%H| G(߉#;Mu|A7ayӫbEo2=&L{)s}atZ ke?jA[[nJE*pjY]z\ xe Zv ^ͣF;\v(~r·oG>Fm~E>3ݔƠw)X{pKN\mq 3хq_h'ɖm[Nr$'rE\)(f&9+\ y +9nܱl#_D%DpCkNU{fȬJybU\s+CZ!|l^!,%kۓ5:ߘ^HbBODeAtxU GtR$Zԋ5i[ r:tj#̔*J* {$F|7mpWͦtBY[)4"uuu~_o>$* #۲w(ȥ0d0bI8&UOuJ0]^ !rh@Kt0c2)s1q#ϣǵ];\LJy g Ke۩~N6JQIѳ85ApJ101FmLGq+yI;p~?RPy9 /ZwIt%g|DX e&3R"<'>1ߟy,S+kqfΖR})JRh1i u>t>7mK y:H|>`r|s"Ԓ'FϨ+0s1iR<:-ֳYutL4]KoLA@krĎ|7eܢ).\ΛNaMZK~fO@oHFShhv8q[պ .災^1MH|!oYz}Jm%{lf~х,bV uze^;S97rrqR+ yS]n09M+kk* ;’s Pt--v:Qcv&ُ >ZKh c`d[hc9_GjXF~ IS 6`:^`bFdMr{:b<!یs`!%G|uE"^HGw4.*Tɚ>d;{|׎--Q]u^S0-<<subVusҋ5\LKSru s&o$WU^ZX#nlOˆi?Z1|+$&!7GA92XcxӟJkY:GWGiv;Ʋ8 Fr)8U#RF43/[VE=c`(D䭮6rgraixAgj Q4(hnN#jk XZug!JGogj m4$76Ũ=AΆ?נXP6".x7+n$S]m-n#D:</h6Ƀ=z ~e'N~P -rohf%KH+"&d"/?:"PLms C槙Tp\[+bufJc}% _ ( w`TQ#A3Lkn2/4^(7˄옽# Íxa<3$4']BG , sൗOup*2`lR5ްQ{ HvnSBBy/p.G.u s;'ժl\4ήBƗֺNi牒o!0$)e}" Tb'pIk>;vB"A-8cfc>S4MpX}N;lud컰pۖ55U<Ā  PPMNZ50i4Ybۭhǵ; R3X-ɏI-[Д"kaLwyW+; u{z=;!,|-{w0V~ⓔ-7Ge|0H(Xڷ&"hLD3H G3f[4#6olQ# u]GI}͂edǥT[ nﳿQtAFWldR:-x.)]{xQ= */3qZ?'s| kÚsѷN"2+U}Ft^etÚ=tcU}AKJtWɡWw0L?*a) =B wje nN* >1{: ~ f8+̢b0 <2oeOCPjÍ;Qr;gdTI'XpV}"PØ:IAPAUT킛Be  9am%% 7NPV:/rAH.ԟm*m^58S59(F1df~`b2֑9-{u =q |wș80VSJ,"3TUۜnWqD^@=+2a"S!qTcۡmv[ Ejh3\WHVNG䠌َuWnɧN'!uM20T|ɖa˽L]G^ [ ͌ efݙ?_.jlQցV48(.Q{n\6\aV^#~DFtRsd̖0?̑ YtA>e\ۙ>z_Mv~nE< 4ۚؒmxD: 6[Y I(Q@ZY7͉yd?!j5v0K@ e_+iCfڶDߜ&UX!laV?6$"7*#VoZ0lQ2Hj.b°6@ƌ?8}OZ/E>G | <#\(~OozUv[ Jmn1*Nrr)?6wrz[Ae J / DNCu!F,?*A9iߖdd6`6wy\+6}s\gqqZ*w<{ f>ڇZ`62*Db_kUh\~O?`r03U4Dzd픿A47^jʹcO3zRM+ VdMCkyB~6sx ͻo`rk5ԵQ[6xw Řq٩FIz 6#laUmrܼhUfěJ٥!J%.8xh[.)v@ܶQ->C+)k#А!6޷Wj68HV&qN _ވqc%B?HWw:XZg?吙4#D ò+y}29 T6獮?@ Mge( f+oE,3C0;@HAy5&J>;Egr%5(wۜ14yeEe$̚pT@mIM wе'W*0BoT3u噄W=+ WeviƓ$K)w&>*Dl=ojbZ7l c ;{ڕұ3Xn~\ۡUywʑ;6UtQm߃p lJO q I \YEk!,>@23HOKNUL Nqdͫ3a~{|e< ٫U2t-nk+A&fd>8p|TՉ,#ᦠłK=wը?ŗncOOTvb[T"8}aKyGZs5%hg NY 6ĹNxb>f7َ:2$iw]Q'cenޜG[#EAO<ҮkP%M,ڰ U8v%/(p{}g^#&nuto2̂*DD )\R6BۢQ(rD6g9WBe< {ix2z̰|=^mufqn`y'${d*˙ >[Xv $$CRۇd&?Q:CҞBF MG`Ll.Ler:G %Ҟ@ݟHwmjp['h DTꑔ< Srؕ*v<3pwolJQ3/akစ7d!qGl ㅎU""ڂmѦl~lQsW>l6^,se&T7pq48]V6`5v2u_YC(Z 5LC=ŷp͠#|-# d:LJu@HZ޽ط6i>JlS̘dD4rfL{r$ &GMCy:*sR^"ϙ Gs&őT21K I烞 hhMe^ZR>}fKn?Xh< ~wW =y2fH۶ary4׶ l8FR=z-aΖ'ob"ǽGJ&X#p/_yq…e:,[ڏBXdčvj4>!6D F)w9e³3% `DR3BCgؤV{xBM2oNה +p$h5?:3ֶgԥhdgx!)By)lFzWl_6pSv z2晖/37aՇhR }OgK j>壙t GVY^?$#0CaMImWaYs;*78|-rQ}b먳Tΰ>-}fKqhYeK1yg{U~Xn-a?ޮUi--şJ&}/3A95q`VE blD6рxkRx(׋q+UW>/ϊL9Jqo5kn4,K'ToxM@ 0OI^F|MI Y(TJ`U# 4/ܑ/Z<j*ͨht_0B؇##L`G34Km-[l1 se=-"Q-"I΢m]k̛< 6'edLhD*u/#-! P&GR33S)5h`!#2Ɋ`ap+W0q$m$YVRNc%=(_@D R!ֶV dmr4 1C%ja+/@CVέ~v>Ġ-p΍]! 5XH}{}:_c1 "2~7k uoYjB7z|9-ԌO'*r{DJrQM{Z'ЕO6 )i_k;Ghb׹6I_~Bs 0&oMwK%D G"z֧1524Z\dŭwԬ('O)U N"⛿K{ HDK瓩0Foc; |}\R anJ~GRq2ô+j]N Iz)ԹBC4&n\9ݣq1$Aђ-PLKJvoU 񂟥87unl%zrb_=y=[7nq{=f޵u!un^s004^ 7yb-Yjf)D҉RCx`8 lt յBڮ5u{[LP̄rp| rH?xk< |oh_t9|d{\i鲖D jw``؎ˬؖD/ fkc2\6oȫ:YG7x:{M+!BFY\$OB ̃OVk?#XJ%G`AĚt/@!?؄і:7XQE.?$1o'EK̋t ?䘻b+>{IZ`} Չacz N `OR&֢y.>_]I`F*.q: =M J7|͉5uehZl^y`z!^aY<-eO2:.#A+iӹm݄ޭ_B02|}92ݐ[$<0.g I7fnsu9Z{ׂiGeWY,u=;<)BΎތ/5֟&+? glK}%Tq/ I_-$c!(ǝmPvu@Sׄ44=C⍋D9dZQ0I 1T5r>O(&Bgτq͜F:s4(XU$`J $#.%,R2TUa1.c0;GӗJKŎҎxEx,zXh A[cǑ1*k"Ӡf/8<+ GV >R ]2sbQyx G,ɍdPWqE Z 6`;h`Q3uXeJRkXQHvEm1N]"5zoΌ!0 eW(<ž&nI~ Ip]n;PN@-F6 66fؙ]5O \qRX"٤h"Ue}N0;B=rVrA@s~k8C-ÌMK:46 [ kNƙկ;5Aˊq ϲn|otפAN(9dEs 2 v7Ry9kx(kuذpJpt)]Us8G4vUjy25gm/ΰ 6>k%uvqXʝ6)u줞|~ 4kR3b>]ɹ'eJn:,0wt?\ki)'FftEuT z1`$mxYY Sb5Mt]Gtu좩W d,#‡|twXa c"A0xYibp>E?2-!ke>[״>Px2 !1xE6ɬi1jTgke>J΄ܜx2kEQC={oc isjWu+ F'˵@޵6*2{칐pcr¹`;0MmRET]zFcطzwi#:xΝ I "0>,1豼e$|l9P2$iܔc^ #${Ϝ[p홬a~-Pav=i/A- s @ iPՁV,&`\-sEn#&r#6ga`u}\T2—š f@WbDE](2 49*K$6Gi}|Lv. |$s*,Pw8!oAˑۥihl=I31|c$Kʍzo€}dynDaj:pRKK坮7Ɓ`Ay \*$18^mDYwap 4v/Zcܰ5{-UVo/u"Ej<#=a<)ċZڊ}ɨ 8PW/ ";-3jLߦY#D_=)gaۉ JuD1H0=OYjb@w4)/_بWSk?=,γ3q9k +>j*cǸ?W,ڦ#̳wBNL, \mon*-KZ]8,MF-Hvd_w\~s"T,zp^+%cle̿GzumG8yrɡ&74i5~a ѽٹ,[*Ͻp,ZsM_:LPE98Ӧ;ƹ:c3-O#$-F<* pY9L {ۣ\5;U]Ai?QB$pW75~+*p|2rAyI$w9 aL$wP!l~~X0"lp9ˇrCXؔZٛm؉aH r8 n8Dx<?ݰ"8j5b?A05G?b5`j[QpQCʱ.k LJ\r`5JY#YC)2F-A^7 u,FN9H;<%edSepD?0٩S'%v&)-N1ep lq0&^1I~]c/1a8a0ulSK=e F1HNE.8׏Yf_.x;tA-QTOX*{))΋g9/|/^ }?ށ +[nWj|j! b3 W{2M?ㅘe4q8;`p_Y@VZtje)Hٿ9 m* &R`D*W撮wq6 +Tѝ2ɽh\R4]SDD-D* >8L򈖰&xprrwkpLؔ0RpP5,u:IFZuQˉ. cx'2ʃ M`ΈZzt PdE!϶+JStBL^DlKO)QjRH{r*I)5rz S^v]6wº|Q'>`\s_K`1$N_q &XNXK yl<_y1\TȺaOjK76KfS@{nl.I N3+ԵnnMbv.v6#nMu4 е:7źC5_ۭgMXѠ0H%٨H^Ļ(=,`ӵeH)>}z4Sshf1֥,Rٛ1o73#u7CR[ؾP;ujvKx5w=s.E ϵEgf0~3ZF+1ۉ JuMr7R_yAN3Xi(WRc] |hH()NxlcZa[yITM$pxp#&D2mhf? ~@/QBqj`@-cм8[1E><ϙ[U> 匬{v&Ų8|4BMςL=I3>0!}b} RMmH7 .'} U2GN3O̝631( 6i]d mq?wT0>.f.8ވJ m. ٷ O؝@4mEV%OwB`"2qjcY:Nʽ`sh^Qo{_RQnD9   N9P~庋 \˷/<(~ QDǮҝ7Acμ4+GqZȬy.(&[Ȥ?۔JnK ;bmf0Tpm@VeCLS-,lnPv+ ys~t2%vE>]rT m3B>ZRǑY$Ouk `D:x*8 pE-º5NCf #QIeapqQ.Z+ajB 2h_|$i%߰xN [0ZZQanTKWϔu;~"8$UY߄ޘmY[5{Ry9| /M'+wBN|"9 z͒ ~?UWK7A1{Y}V,u<1* wxODgYgģ ILRmԫУDN&a^T36$b}^\U&ϚUy 5,MhS,pflsY93\ 8D?5ڒ &yuf %Ӹea$rC`H gFp58Ȓ唧F$m_GwN]UA38 AGOz^?'{6V߿U.'zr=lŢbJRBS uw4! MY YG8ឭ n\+_^ؽ1I^()_^fV{t`tQ/1lS !NiEuR׼iP<}W @: sILh; *7 eoWP3.^o[OR6pn ϺNL*. WEhٳR{+)?5JG&m ,E8HI!2.VCldi?*!*Xp_+ ٘t \&A1Ѣ#<2wS'07'ל5H!l]H&&0#/=g?>ar]bDÇ[vvy=UÉOJAEY`:o;m mtI= $F211nV,7^Z=M:Bxcߦ}D;|"2a . t J-A(59D_҆~P1 tn\|#cW^ J"= vR~qTQRX{Vؘ='@/WRXߎ:9묾Lf0/I%I=K=Y;%w"MO}7"YP),i՜:GA>zujУ@A9Jϑ(\ ?ؕ&EӖm!1S Ո(]Cžnt?dtKf⼸ ,: Wľ4H`qsI!&_zb*oBM}do`*z˶eI؟19yE3/dzE۪ (ҒäYօY C6ˤHuCuZc`21lI_wbLDpZ EaS\4Mޖ_ բmX j?VgYT)r].W*TkI@k* tIPv:m|V _̱P9(t(kIJۘ$4GeܰZkSYaLoP*cߤ5J^}O*7qRd%+BN'&/KZ簠ۜ K#m$6,d1&,#Wo\fڬCgBN(Oq'@N p/f?Xy༨}=E!;4)Hbxq\u2F7m '4_Gb<6!kC'x`S?^#E; JfMϗKrNs)L_o_NN- Mm@T(==;OS5–\t7/,5p}Y">N> :9̆g.^Ȏڳ.<>ޱ˙ar]M#^r cސگ?bd#<`o[&H2(B(IYF*WllQX„dC1(̼SeoqxmCϡ;B @NCb`0Q٬UK+qP0H]J(Nh<3 {nD¹Ҏ=BsՉ#p`l`o&1CpJC蚤FզBb$8E~gojz7s.pFh9>(s]Bm>td݂K'$|ХfE^0Wf,jv!Wq ٳ4r`nutvVSQ en,Z.j {qdnHv1:D= #htޣuFU&(ZLڜ9V&@/㜴wb-i÷i-^{Rڞu<`A%ˉSLr$&/]|)o]'.'7z2>3.fn9%DRw 8JNhO>;@NH[g)mK Iy1EDH?JaKhX۫wc0a>–W7Ooqjs ti"Dr# Rfָӻլ ܆lS2;5d 2*' !LDc9p`JvFf0z2Q-`W"Mw1\Ri SkLd! ⻒;8"#X6 aT SEQ,L5xrctXjAsg'<1 \AL }= 0Iqyb^M\U"$m+jdީ`2-{kF`l\k pxC 'H37YܚpZ}nOHuV-,^3'kiP }|7L>euk*i~^a߁*fcJHF242\SGms1U&K+_6 kT#ǿD`$Vm'")m97zy:.%U6C=,|.1Ikr큠#1~[eZVkzT":2i56noKS{)ZnC5v5N0gT 3t'TTn,hPQYADÌah88$~v 9 3ρVM[Vaib㉁:w"\#_EwA6pqdxY鯦pe&vطH) VĄ!C~ :PY`PS8~H<"?9ZxpPOhE(|˞׎dKVyX^N1#Gzq!=|-C}9h!)f> stream xlzc(͖m۶yڶmݧm۶m۶m۶mo}s'ŋ2s2"PIΘ@ITY DXFXɘ@؈@؎@̉ܐ_FU+}#sksU[+[sC3n~GgZg^)8[kHȊɪ;[;XH8S:X[!012i?8ZȈ( *) HɑeGMJ?x-B10:@o6&69럀)MA;[Y[ Z9;;;H8ͭ7\him7w5w367wp}]߳#cldlNay5r̿FPRO-bchkdncJF1-o"3.`FEO_EB_K:u`!abd ``f`!`b_:;88Ro_dlflbkdR#R8WJ57B:sh>df{t ;ow+Lk s29EVL\aS^DP6)}c=@r93FҾQ!Ja'nmFB )Ca,ƀm(4/pS׬(T^cRЙĔ.z&2)c4HtIMr_ih n V}coe6&X%!s; ~AF{N|7e+ZX.NrV_wb0X8ߙ"DmzЯ>.~X/jhXBIYp6C@zR`8&Q_ҁ'"G7,ckL¸7=&A8A="J d6= IL՞]dYk2}t\ߐL:8~!021\޺s4 2 kT,v|>g3Sv”@h 6#t^ ^UYz$ ` u`Y(OD *tCSoLLWEw )~,PodÃz8fׄjea $OzF^DO!|^5͉_X| |;v$XAk|+fP"Oz]dkNV9‾sk7)*W1W'Lۤ 6GDws4r{]+H4yKv6㛇MZ['0)KakaBYn(ԁ>D9{H4UZͰNBe2`$=@]:2'ɛCN$)PBO1-^K -zDmDd_C$#խp+cU(eSѨ4h8WiZVz]%fp\] JytS fVk 2:5؋ _^տ*/8z&E"(گAi jr⼦2|kр /!9Xp]R u`iШ8RI慈aC1u)4EXs<, 9^x N* jo^+9;kǁϹ(!& [lxuNߵ(Wg_G?P8-5,+|l]RczJ&Z߹ 5 zg}t{cHo$méKdd.,,i]t$^Yw~e`XaiRb6B/fw4G8swT rIblE!! s6Wh'LH3:ej87֔Y$0ڡ@n獆(Z&D3A#;Xf9!X HAuUr=$.UYA]:ZOs-isl~zc>MOs$(N,N 9%o~9ޔNGдYMq]^dGEJ rU裊;u),2n qOk=6ili= Юn ;l=y41GCdȲEuaI}ح^K slNf^f~nC\虥N}qREbPsz]/ t9Qqo5ՙ2eM8XAb~uP{ڨnH-&ɝۈ19ְiaO;O1 ڂK,Y6vJ]NtH^hZ.)}q톤 wZO0eC.pv墌]g[&\p%A{PJ23Ж \_`f*'#VV.ZEm9ޑߠY u> )FezcTϞ5HSs^,[J&[c5Dڲ4J |JY$'kpTIA >uY|_pHnaa3m湤BnGjhOK󷄣_eЈI32ЫuBr'֏>zˢTkɠ!cchwFUA:}; XH\jhTS+k\TbgsU SQUUxvrz#-Ƃ\Vq ! tRɕDQGYDjN3[X!ANG(7ޝjȊfMfLL!H J;%Zpl0ok?uXe,P~Vz{r#%dSP0ky@ekU_k΀R%$#&fPbjϒY"}yh ̭|!%uI?~tK4,c@eϏk w_Y!爾Z̿}VQ~ۢFrx/4 jZ;>f7*WзW\ ?##" &ᵷ,!yKF`6rRKdsʞAcJ;|}('hSh/nY0@\jNVP592x&"R|k&71rҬ߁G9&2]G%q\C8GDcT_NJ+S_S^ 2_;c?LexV52̩,J2A^[ oR)>'~4ѣ_niH]0q` aYF[R*dFf08ˠ9g{h`yK u3_#&_wӭO:np9müXE\;M92KM_1gyS%cn'pRMkCw܄y@Y# C޺lڦawO{lΜL2-~+>RKߞ5V7ϯ)d~K\P2p`hA#~ZI!$RڊʏP TrMߑDz"r>d#wִOF\/k_fƗQw)){P(՝cz?#5(8B]+W10Ҹ?s9ZBq͵0 1AKܟ 걁V[.ץBL8Pti ([9 k7whxΩv g]5]Iw5I[u\a8;& e ?r:I+NKXmp ܺ;8w~jyYF--0M=R 5'mPk-Ɨ:-Js! Bي#n{&"V2AƢ T\jQdUAq9잀 hS^| 3fyQ+;O󡔾,=;d\՜&ۭ tNo8$;|ϝHاA$WWr%:C|tiGB /7jf w#GQkɊ=㦶~]3sMSE >!Rj2a\ɫx8)T,Fn " g-}k);&a9lSrwzcG?;;S,-]'A"RR&Ěq0">O|vw5b ^~,! ~# \3dK@ѨGo>LӫsBzQ1ܻ2# %ҋ?ԳEˣ?jjbǫ # Al{:19Yb)`MuWpMfk*tP'_ X lh}" <ѺW :rF]b&G띾`k(@}A.r˫8%LvR0.b3٩8F!ԙRf?1!KZ(S3AJIR0vd<+f {e81ɆM?WZÈOv NYT/b1Pv?ުS$ ?]+HRbwe;R &?-5*I{0i0Biˎ_:o2<6Jq>_lJċ3u}c8gΩ5$BgA8;lC_%泱*loI1L؅,uuE.o$uZΉٶnd<=4뜙h!FsvJZ.;j@Ks| 懹ǬVu㴂W&BcPl;rK!eb}DXGw1.y+Nn~੯G^gGj sn_ۄA-GaQQU{`=w(L?'N!ʅxMOT&;'GWIcV %K^u~S40)npó Na,m#&mIv(U+$q~r˘ϱ1;RkCPخBPC8AZ} ]a2 IW=pbC"qI 'ȉQa&E˪ iu! =~4^<\QC[Ÿ7)j"z݀&hTB7ϩj>Q_F6|{(>{ UnjO oYل)9C+2J TՌXt_L5]C;!~nؙJi$DJ`N7 O#/3r[)҇g^G<攌3ŴI,ѯN%ӕjFtv1d;IVϘ&k=$Z@fWou|f3µb&y1iA*F&|Fh TTυC4a4ޔeǦFD9/+RL,B~0PW!i&B?=EdUl3zacY?>1iث@=3*m8(`]9$jX5:i[T/ݏ}$ıjwhW_];ۊmK3 i,^<ǟ#-NˉʙVuu#̈́]N@ ɿ爐S3)p,K]r"8tiASA>a0b3 f#sV}2**? >[c^k2\jj $$+S_W;G d#fxl#K3SyRB8N2)jdz ng{~4H {aw[A9ٛ;tjcdU(RT~tx^~q<~;{ҵӦca!{4#Nw.ku%anf(H֮F\H!ыh=O;wA*pC) [(.'s1rP uځyَ!\>iʹ?(uI2 XzwEHڙ7X[rw>XQV0q=EV)#=wk)[ n jI۔B oکiMqUKlI<{Pc++D3x蘠4?ա>U92d9T ^'i?qS`{!ZK4!) "C=/tmR|/$MTzaF9[OcK? W}ߐNo\ ݕ, :m?-vU,Є@r{qJI\B$QQK|.-ݶ]UӋ;':N {9Y } sW RVWs{_M0@cv,>F}sG-A>$_bq|=?O"~_%n(*" 5@p ™濻uݤN\|}Q&rbe /=fQ_P< phZ"sGs3p 1o\ .%Q.][2h 1k:%mM7@+dXSIBFy,M:e@u(=ͮKߞXp?=lcünN 廗qf6CҌWs S^OܠTfAF[k#x)K Ws- bOM"܅|Ѳ&;&2,G@&&Sp*`#%()`i+Fp K~F|uL'Ie[Ƹr̹;G[Rq`NM* ՠ=!A|.>&9aPgFH& 8 YΖj gk@@> k!SH m1VRAuX ]ؙӇY >50Wc*"cT=RUvmuo~ Η/3lSFs\$R9}aȗ3MB5vkTJ1x8sQSPI𜵭)5%n=-C^݊Pj#y%.}{OLnbo@7G"I&ʏ(%B*[y n喳TO߇`ns?%GgI ,W`V[ȻB!0s[!~`3%RG /U0 rRr( ֪Aj:Iw-y{ou gPÈGRW|ȡaLf;ÉwһsC.hWE@ I;})g^)uiLD#E|pc٥?%X"?IZmc2,vI&,Ҳ:Ls|LyEb?S爼wPj N o Q/8Fi-=)YWbine$?BP)gQuv84w8mҫ F_!^N4P\I\j> uu~q"Y[x:{( %b 3o2ufCѩ/uY3ֻ^ #G,7۝mFthqqk[M Wj6;x0)qXs} QKNFyJF^ѪؕfY )&kxLi\Ⓖ/(Zj]Ɵ?N3ey'1n`F@te[b= s&sK_rQ[(yC̮]hyje2ɾ=SJWv|m\pY#E,BL"RVwg{.&b0̟IϴÁgĹo}T?7_ dcZ/c<'J-)&6|#y:8//<ʽwDi)SQMGsp e̲M&;@{-mQFoSsUxMV`Kt:i ^?elx:@|ynZ[tXwhb>ׅnUGrC,N"; u-|ޢ{ӏr+11Q.ׇ#HR` ʗ_W,ءsN? 6V,:A')2x-Õ:oI5/FӣYxC='g M]򙔴^Rxʏ9;_j vnՒVcњ/i6*c;;0UL="ok2fir:l1C5{Ro9*0;&Q_h! ym1ʯڶ [i aF3@<ܘZ7:%lT+qr#zܒERUf( wIX/DAQ1mFs'ӧ bxk 6-yO5W7 `O.j]dS@0IٻgܤXRɰ>Щ=0d-)Y'ss[a.@;`@[>Di{R:Cb_q.$OC;F67\ Шvl8sxmt+ 3c[& ɞ1ߔ$)!-Y;ǭ@JC z5#\LG G7AM9ޕ}|/\[ (WokO\]"86)h7ʀϭ-$x4q쒾_h<~/}9LpUjRYAxJe.ޖd&6^kp7O-vԾ9EpmF3Ǐ`总3SuYdCm?$Uޘ:}>PBZT*Z({8W~Ee"WEmٺ?at 2_L. 1PB%nkٴRWtr9"9io`6S^sf]dž~p5d3]j9 kgΌKC9gxN2.hRx]%Z~]^̑_YsB v~UyP '":n(N }HioX(J"k<$GC y^#0vAP5M2%A;b_dn!ԁuvvSE/0m? FVU=cH _ J`yބ]A &з(\[A9NACtyRV,ăs(Y3B)N-?MUygPuG( E1fSZE)XzGAwi;xЊK(@m)Rxc^cV -`s̓ߝ32łiC+Ӡ!eVvU]S.qvV4F/$ _ uk|B/AJ4|Hͻ YGee!v% θ׺"3IF_Z)a<_VjA$;lʊ@?;0`tQ+k'NR -Uc3Q1]G\UM13Q)xtsMO2)}n*[„_4qߦt^mA&yQ(z5aR)~3p;5R }vVo wq5cj:˜ .`[d܂FDȴ.@S;qһWLgǍ ZRJ%;_|v.'_..JѠH:>ؚ&6 75pX:s#_lːW}GcouyqymW@i 2mf=*-xJ|qݒ`ۑ ~QΝX`|@\5rm{"tdWsϑt 4R闾eFIqV8B\&4BlhH\|f wg`Z3¤v P$DEc "ɒ FdqJs'FcgOި E`j쳳3pΥ;cĶp%GE3Uketw0n< 'KU\iܡy_2w{y,uuVSy!w߂ڪ7q!P[23&w3$VVI94!"&+\qK6(%~D s܌!9&Fj(^4;Ss6hMkgaH%Qͫ㇌5ȼZ `p+>FGϖG5&C4%);X\(| z?#[3^E&p=fwMj!>~J]>x- z xR.iN t],t+G%bh$6AY^:/ͰzF$gw@w,Fd먞:~W88N[^MOAxy>dvrpK~dL4Mý怔K}8qs IgX mJbdc:M4>:8> ymcͶK- =ZjGXJK˜IՙPV_o(oE^4 ӄYp֢媻MM$}~:ùK?70 l&6k\w)0çϧ}S6 f>|VEYڗ6zĮMav\'\hsl6i:Gj#kȉ>g"B=)ِ])G+HK#A`0a`8&[ksu ]Lff)cIVu@ {Qu ]Ji=`w}̫G~Бiex}T/TZWku,eu8`=qRT#k,,UVpO"/6kO +cXhef0w.-u?po&!kOR &]dtq0|߫zawڌ &ϧaɭvۑj5jR-kNӵDb'9~Kr~JdqY%C m%nu,wxG"a7`V6*4PW&+M y/U+1rFpn#ig!wo늭,/bO|`_"@YuHvz83/N nX@+ml\gW:@ˮ?V$5#\7)d%xԬMeh-&`)uh߫]$yu{v~jCwM"_cy>j*ΟA愹$AF7~tE/!Kbh0'y~9ŗ~t5,[ Im fj4xW[@RQk=dP39Aע0߿@Y`.HI%EV*U%9ZH@GZ%&r b`V7N}1": ,p;[BܔPp2ٚ-\=Ցإ,54ԣ| M!5Qֱ|r#F \+lBm#Z?5A(gLfE׌)y.|;UH/{ZJ2jDa(i-{xxaEx:* 1Q;OH}VR$7'"Yfa7x9+3mq ihp!Y/qn F=f(ƊX-J0CuJ7iYV_"(0G~ȚWUK0H^A@O;=;^SoM ݜDThzdɘϓ7VF≠X0H^[:06JX",w',̵./չ"aM,Ο>R\UuuD6.C;?f6uH cz]υON#DJ!Cd˵jP!vo@cTKn.O{k@j 9 Y]QE~ەbp {Wۨ.:xV?p%Ed=3ylCT%5鸂Ogl|?XibMmL)i½LиYC$+V+5%(8\:3I s?rL?FAVVρu|-4!F&hNLh4ad)|)Z۽P1:VYW8ղs?Ż0o ԎZ|=V jH_%̛g9 ;9c +M3h9#roz7R KIf˲aK7r6hr=HCgM,#;UGV]9 TT]j^)Le-}a$2kH~,u2lN+v$z57CכArk q\@y-L̗Ƈw= !Yz`CmC<#IMV IU SJM[[ymdݥlٌ.:u˞Fsggð<+V˦~1–ZwRַ2@rXGR{!c}RlJ,7{@=[T{ dT׀Ox,jTRzj:#K _f';LoFd8>="X L /7w-R9gӪFOҖlUMPе'0t'ZƂHu ƙv`^;3u# M{Kd*N YhWkzԊ0Ǹu_CZtw[ѦZp2;+C;|p'[&̊] .a@?OCq M:J6!aM4޾qNh8!joVmaĿX(A)2q2`KT8TFz4Kn9 V6%pR6ʿ4 ߾,o\o:XSRi9#mL|n+O rU+VMgeRJ/^S<4 1J5],ס=(h1kۥN5xHOs> F=: Z?aUKȩ$cY}znMZ@.6B#tI kep@U8 ]"Y9M8I0I*w >r&0kʌɌR&ҹ5N#[9E{SpQy 7rPFTx9|}Uܥ%zpIJRoJBn,%+:ޤh9"- 7[y@ѓG.~3-4г{hP.Ǔ{0sV%e1.y~>GuFV묆Eⵆu( +]pp8gnjIQnVj{7(p Ƌ$/n7^|izRy1BUMDb.XGӫ2srE:%Y+9P۱j7M@7oBAA+4͠Z q{i<>N-QXOuq4jcD Jrwu]jS!` D ř^De_Imr$Re{<ا&"1&>3# ziΞ9p"i$,/.Q0VV|>9J9&a4q-^~xǿ2wcnA|<_j<&lOX/=xsJ80kҔ5ڸqd1 "aoF9hIJQ5w =Nc$ 48k|u Ţ%KS0Zn{>#> VAɦ}=Tb`ct~Ǽg.>f뢔w;NZ4 l|KUg_l&Ӣǃtc&b.e]dN>/Bq=gOocșf8(H;Ŏh0Ffzw5ANԚzp)wKR<|;[)3G&<3R[]s\֮WsҼҏL{"Fn7-#ʩ48櫏Hf"SZXƂ"VqjD|V'V;B&ɚP-U{?uv{ D*pm[_)M S].\_r=c },ѦD%ʝ  H!}|w%FCQ7. ӌ}ۋ"'Ep1Koû<F2! |(@ لFbe)#Rݚl#Wf8mB;-CVo7t[rm'Qjdbj4P'LKئBIu/-Z҈!ۙp7(i7i+)Mk:p0;R ̧*nWTǂ2~qg@ִu t)hzdRykAJ*#aXSH]6SGf;gt+th5ɺa͵1-ge"1Z}+/Qom goHU277<*h .;ᚙfXCבX|j6eTyT[+Z#(ghM_( O/4.v 7+ x&GEֿcOAj덓k\fZ9BȖ̊O 1 zn#A߰W>@;qv*~ 7U:޼nǵytbuWGā9d˥.?Tfٓ}ѻ;B.G1 Z4C{e)>Zo4ĵX7s/܃ zh'f0V=ķ J3t5 zpZQq çUD_äeږ(G[z8bqhg{XMDezG̔{ŸL(T㇦Rl{%Pse~8t[dl0TOkTKp?L/uL6&6^%D8F~%FѲ$%qCimw 1Xv/L qEg-Hv"Rɡ,vRQ'Xh*ўTko[X)ϿT9LΞfTN! }̩G&Z 2kJVZxb1@`T+yaA/ݵY endstream endobj 36 0 obj << /Length1 725 /Length2 29853 /Length3 0 /Length 30293 /Filter /FlateDecode >> stream xlzspfnlyc۶m;olۘp&m۶=s:U?]{m IG7uo'  #3/@MR]GA!4qvt7q5GstvrP[ д31vh:9zXY=<<=\] RnV@ #(RH.&vewS;k3Hptg0st0&Wp ."cR8 wpshn+ٙdZ]#1±̭@Kk8&`Lri@Mj1G{'w7 @.h=dL!Cv+[÷;?j-Fhnnp?vwR|LZZ"t[6K89[;X6+XTL\ž*=#?/QQG/_Vfn'3_p]\n&\gbfpf|a6iEtt,k37zVFGWxwxs{veZHM~NcI~⽔UZ60ĵ7S떱L;͞{Q+\&*k\9҃Ze*Te,2?tȪ"(RFLOGy[;OW|'Ggv>Tc>"Tt! !B[^*~;]QG{sZZTAnTe%HB8|ys7V䝷}'y&ֵh +OHbڣ] \qv)DUӡܶ/9  N"`e*@-C ~Z % -g=bxZ\9RŬ2|E8D8.-!(.Q/*R+Fi[%޸eI|"ķyMZťzOD x:O~;3#EVNH7rJVe(Ʊ .7mlq]Qa6gؒe&u * +1FGԑك HsخJh@Z\sƏڝϭ`Y.%!qήȦ?Nүɚ%<4rN5HUv-(>Rq1h/o_cQ>* v/x7&-uZ&,ش[Qǹ$D\4j{əvU0*EjGBI1*aBvCiGzi_gR%`fқ]m :IxǙwgWĚL2w纎񖞭)LEşv{11fv1rȩxi&Ж_ cOALVp#8Kv}I1/&;ֆt8owX _#e{ق[=ڽ}5F_l4|QU)Mɸu Qݭ!7ɞ5o7kg`_P?H[JȾ.iMcb!kȊo8x$izsGUD t@mޏ+$ƇszwܥcVa]]TobAg0B8[ gD_["a3pS*HFPrD53 걖t   5]c,78. ImgM@w:t.Z.&=YN x$֚}f9|" _r4 M p؜TZ4V܊g5EٸCX)wqyMoͱm,!8I?.DPPUoƣ,O-yŋ8`]tu~]<}(p48g zws̃UjXfP@!sk@!W캭z0Ss;'g:%krme+z/oê6yZ_Gk)Lis=d 8LڪihQ iB4Ve̩SUQ0 "pFIUcO-ݖ-1JX80h:ŝUN-!i?{XI!|ήRlWIgg9Y(##:/99unM=uW|I&ΣGJ\8xE":h͉7z[f68:%8tk$wײSOݟPZ ukS_3;F<~W'<ZAH.ճ'J#ZEyN9rvy&Iu7}GΒtHf6& y vݪ5buPm|f+jwb9Zo@t BI5;;R0p%Yd)4zLPI}|SI=SDkK%cOkzE,vˇ& ݞDaƃlxoFU]X)&5B hk ̧ňIV& J 1L* 6~3mg-bM[͗YȟKIH!*RuASr؛nǵbM#c4)tTcة( `&? PY,%2edP ֖BφPeF+46zzevRw3N9r74U=0G* UT YjD %">J`!p;7QY ip<-cu#WUg" ?o fj&̥:#Ew;`%ex5#(UDw=cWݴR m1sf >ƬK,pu3xBb n;jm"r~!a}ᄼ X+Qj!ΰ6bl%&$cAv#Iݖ) KtJa38"+IB# vTX[%D? *;Gwb{^#Eo #ځ4!WŚ#SJvV lpѵS|>wL?cp$QtE#DHA F85rҒJ;53mpTN$ݬgh [O(b/hïq_aLv:0\Y9U£G^yqEP{aL-)Er\%jv0KM{0 Q@idAs|B7C:nBLj2ũ>Ni.*_V޹U? (>Ⅺű2_pl8X9|v[,iUhzWpⲗCb9jQŲHvFo-J, EW; r!c̡9Z6 &# rԔ+dQ!\m?NG 9'Cd[:XsQy)o/@l3MXS.bD"`|ʭ4dgai%Ӧxo |6}#sNy`'ehϸfa"rDj$䛽k ' MnϨ& &ʟ,be-fcz^@ > !SJaiQ/.& o\X{ZBھiS8r<@V d"z:y{2 .?A-0^] ^kB iN8Op~w.,PX^?[Ep Hio@nqRgݪcT0F-shҴEh8*pq;wzX#nOɨ4w2Rː7 bU" *qҲpi̓WJZ?EIc! +[݉1ˆ&J]5f1bĵ0Ov#йOXɄ0l6!%?$&n-dkW2<a?cx( EaAa]ȝ-[->&.( 'FZ~e: o:Q'ZXIt^R"1JHO/G=דB*K5oZ2=@DeԲa+"R: 1ZAEvZV:.R_&xe< xw철W`^pOJ _wrJ#+}g;L$QGFd':ܓƾ;)yO=Hf{ 8N(pI݇͠R- BƟB};I'`V+|*գ*fk7MF6#MǕ&5.~Z8yV ̮t2+R# Yvצ&Pƨ{HWyB;+`PU&6,y(& §?ܶ8n!*9_دchED΅iVW~:(_ `T.™HR?fd7z;@.{>Q/I[o8≂A!wA3ބKQ^w{cct36JBM b>7I{;3Azz~M|v59Rz"!M,<7>-Ue_X0=oJJ dcoK,O+&q4!MZ(Ԧћ+H 733냕?2ڴ -iEXyȶDĖ*b<}gLͦhG11`$ meѽ1[wC3 -}r+^)Q>'@QaNDr2;-խM)ө24IXBrCnl*u ՗Y92ί$6Tpg@D~uzVƅ:(2v5$W&+Tg7tgJeɥwOCa֝f@^ DD-,/m7YQo<5.ƥVJh^5^@D&)9KjW}4'lAb 8GCb)b/|ҩ#Açi^# %V9&7?N{ dKX>z)s宱 e]F2b*Y ^^ ,CIoQI,x4Y жyq]@Xb=SEM] uK*X߮ V@?i=X8:;aW!?}z,ôlH6]"=^:Y3;4I3bp4_lU2 oLӷQ>hYfsޖ֖Kico _z1(AprԹ+ʟ71,c=nAe19@궇ewu"Vڰ8&ݵg-S yLRm%%]dU<$gPWykPT{dlZYr4`*r?]LnK`NJS o}QM_f*jGg+)৅k=0y]hit)#1BbOaw||m|̓WV6( Uy CHJ+xr wx|],>`pS,ݸe]=L9|eP챾pF K]g֎o-łY`8C0n$% z @Mg B8f4#*7%3$(J|șUaGѿ!g46hv~՟=ljONc`*լ@)K%G`VpL[XfY!!Wa<~p9ѧz(),WiL'lFt]9KSXU"`Hfu#=yuErE BT蚏鸻0M2>af5y @3dJ/u+pyEmF0To8w 8]eСwbW|V־x*`9w(bnʏ62L`ɿp?ˋ+')Dܖ>fYF.!7c`-RƍiOpy!yrMlZ0,]ޕ/ tpX8x9c$A5z ^ᖰ5fl0N7чsepc Noڠ{T { Cz.ZO}*͑پH+Fz[ Vt#-n2vքHKt7mZ]F4A91߂ zX\e(*V 4BvF@hd2ץnK(vYD.'5P.p'{̲Ka# D$/tAz$CΨQPzb孭_4ԝ<@zk±j0Gm5/@܉nzQNQk p~('+| VNn17DC(oq<CXGCWQ'z$QVO ]q!:п{.}eDsFŚ를_h/-ረH|o()hU;b5S1nG$Qf !6LNp5ay=] zTz}]ʄ#"GI㱁?΃S]IOs*{@uSQ吘VDR\R|es5aM/]oTFΆplw屈E 򩐟=wlj36F-!prόߗEԨC'PONKbHA6f vVGc0ַg=/ l8Ց`͍bײElhhaHı[)$ncY l( f.USroq_zS;~ؙg=dke:[B.3*+0vVm\>#tg!|ٚ/?0"O=LYjHwgtQ|jLnmԇjRʨ\u!+Q[&7 [HO=IJd3g+5JaF?Gkꂁ0omkU^j'}FC<\WĞ4].Zя2MRȐ_?NkVˏ 13r%) ZB<,cZ-h8=9*Qw|$t6W mNA>?|@pЇ2~ijx3G,=YSy:RBd7씯 o{ 9ziQӥ@QypO W3')LbJ})󘿸3N&kOC7y$_Rzܾ.Dr$g2QE4j^ܰwP?Oջ.zsI_eHKcv;\BER YK2PU@CGRؾ=hJː4nR~ [Į)?#&H_Ul1%D_\'W}GZ0[n@<+te]w̉MnPBXώZF?bQh$ڤh3Zp,~n)!~T J[cK)# \=30FOE>ܐa[Jl׌=,ӕ)N_yu\vK ašї_71ֈqݟl|dzNK'=G\#ZOŐϋjaW"Ds}xλJ@0WtS^XB^l”ܢ)߷hn&,JL|(W5=&+?_D:E3bsT:L]\Lr42nhEwT`p"et#꽷m/HG0%Ome bK59);^8Wiaq0DPW)#gD\(Isuo#AD$@[՘# B'+܋+2y2A-тwv% jz1}a!RibM`Z2_@O&yZ˰{BDw؊r&jmٮ;CY3MK%(ɨwrGBe/m˥~8x6eca|2i̺ UD=4ꍫD ¯}?k-H>ː{Agئ*a9WZa q[|T#sloQԇIq8wʮKڨVJkv9L4p6ػHE^~>ی#<9}b?G:b*T @H0)6B-Ih:oh\)BL "%PztDyG cU ekcvXꖥbvfxښ^Fsuh53AAJ }}6hiF]2U&6۬<.|@Fd0T/i+Տu`,.XH/HW=(ϵۊ4#l? bgxvxN=$Ux_{um/wTdPiwWVd={4r/oUE_^W}yo*&0(7V / zVI ˽s mbEYPpCKF[&"[R? DO\n Gi:9[WCvzԾ*_ة&V(PY' aBy&PwLH#¿ܞ$yU|; 85833P(B+E昽Oi[x2{Almf)D3UNc5{Ā_gýr L_1hS]C8~T;=%B-̜ʗO {h( XȚjSRvL\@Ӛ5SK2×ƙO U,yB\ C|8|~ZMtviy`y6n YQ~(s>.GZɉmBWaS+ >cW\ CkXN(v Ndp*H>;R}Auvy6ʇ^_;n4(}NweZrY%ztP1!aIuP\ }u~nbR4^*co6! tlwӇwa\| i@:k0k᭰И,V*7 v$컸L47ܴK쟨,aiGVؓgA/#ie,/|i`2:ˮq|/H~>|=Jw`BQ^ dʹ%w↣a:`kC+ƁSMq2=-r-߉ tG{]<,fU6 Ÿ_jdW$4k99aopg.Td2%;[2U|xɛ[g2ƣCTxVK9\W{nЕ* C<9 !QA P'_ٶt5{9nږP k$ _6Jw؆|&3}kiO&2IfK&T_G\DG\5(?Qrڪ^F$x:Lhߩ=9ء$鳨n']=q\9ې5[|o)TK=t_Ю`6P d|qƥșa^E;ルydZ"pSD}5baG %+%ۄާM0xq4[Iwj'5rv4u2Ucm%$XΌo[y\0wWO8ֱTWܷG3rw{mx,TZU"䮤4Gn4ۭP QѭY%WWKnkՉ3Bp.v%)ط/j;k]YՅ&wEеeimbEv2t =L [Dף(>8fXuռNƎU${Rr$Jc$ˌ5x]sbf)z=J.MPѿ\9 |̛7>mFNДcDž^HKHs~Ĝ7"Bo7Оg뽩]eXb@oI{z7њKuM&b E:6 >m1 Ѿ.i扴M>?k"8LmɆ۶mvǶ7m۶m۶͹wf+z*aޏ xGg,*_÷ν̹|4vߚWu Ƣ|Kn1}Lof,0)mϕ;'ȇYu)$ '?yNbCo;\t(O".a C4 e7m5+&cVɥ!yV9y~xQ:LJ-rM5!(@_1T²[;|.RrQDrew%TEGL^B9}K?7h'V'!sf~34$9nMubG|aQm=1&Prܷ&bm\;y ƬFuC729̹ 5|YE|s HWNe_z}'?Kr=Qr(l o^ug"5F{HM1%S~nN7u*ڕ3ajmKXC8ÐL#$zjeͮߓ]d=1n:g誝6Vɢճ[4>R '!JM g3zJtrQ>̈fZqC,3gIF;{ oqx|AVqAj- a/g=$\حǼ}L1g޵ygJofr9LR+t`u5?F%B]wC_ U%[W' 5d w)<m̸Iɸ` eV沶ʭ\ H}<{MlHVS BBHCӭ#a5 :9DŦQU#\S#;w;}>} yټ2n1tM,gSid?95 i6M@ĠW:dJ4{-%T1Gi/X3`^mOMjPQolU' qF"rWLj2R9#49;'c.YF]@?;M.aT#v qoY8Sz`C;UcvI̶{un#K]/6j/τU8ڬ,b ~&!"O|\> y(i$Rds5I~Z 77{,rғR#Z҆F+*͟U7]·≏Nc'0iVD}0W7R\eG8VAe92G.*/׏kZCuw\2XhvO7LJm+@?Kg:]Cqe K\ܬUPƤ~]['Z`맩 GiDDE{nic.ީ\uMweawĪthz8Z0@g'Retl|=&+iy*|*p>S ]D+~,NׁWw|20EdlSfQiwp!is)ds #>oG܅,>m5$-|0=׋%HJ,>䚗r2w` رG/@3g-<l 8%PUJLhEI̡"t*S҅K* !0?݌t1_|s.GRCܡhfY\~sWuQ z1b]E\:LPܹjˡRGL*q$̺BY̙} Nƣ Y4\ɳ/NKI#$;7q"DRm –aޭ+A8me ݍ.Nyr^߰UgzALJʻ}֙S5kr.y zlӘo'A8O0SW{lVG^2ھ6&:Tӹ 6+a`iĀLoq*8&MouI`y3פjIErlҞ?'A^laWI#7mK]<%o w^wB=r/ty tc\uqd+0lfې*VDwACjG+]lIK`_\rMfq?qVq'46H1M*@0;$= FBA]9 9p1њtJyGoj|=%׿\R0V}u9&ٜnԪ|%OWn>;?@ssGf+bKc `, U:p"7>t$g[3t" ࣬9f4:}?TN߯>K zD_^3^6tRg`߫»DBP(hfd]Y FbAp \(z{{p U?SIMWyQ+ ^mtשU UL˭x !%ok}jIjw3;k#A}7"fb<ۑuzr~GHx̅ z`3A6cd6Z 0dፉpd"5)ՈLzdURtv>| *r!D^z z]x.ӜX_SsA067) X/PIAʭ<+'CLlSVC+B( dS O }#9M{:2UԲfLUJ3V /Fia|ټ!; !zg&t'rZƉ(8,n`B&t`^V&t.\O|-<*jg(>}*mL[6ؠ#KaDwٱn;Pѳnz3!` ،)A1a|l:*]]hA$EV1e"_f}PV( z<^>ߛ^-]7$kr׵gi;tK A o+S}Ei;(v$L~JGF0& a($a,QYdY^,CoHG퀅<ƒ''=NHYi>TQl?]1p٢FP"l#.lFVL: CC~`#2m|w" < Sq?+t@O/_~Qx`]&j0ϥymu[x~h$ v'O@GZ<ŅI2޾AFexO H]cI̷7ri<bC5 iq|D}N~_1H3Ӿv~uN|JUXS:xS4 2Iȅ)rٙG+U%8fږz0es@th;9W-Aw%R [׻cTtΠ]5}Ϡ>x)]ZP!&%,%^^ߠJ?̞?Dx>Q|k!=Mxo aO+]GpezyPM}&J JKm)Y$ Kaz~U>A%)ǡK9T 'b{NOBuQ1m<UOEa#2GGs!Rri"B xoQ֑njך  ;t"`/5;MВPW)x/c׍gis# = v#,5cO $:Eć.uPcn#YB- 1ziLQ3J /#N3z_Mܘ#]>B~YZkB"{}e P" vc'1Yj:/dv,zwrȑ<*]:\O-!,[Tsxf؈Zdbq NVJ|޺,6)v˦ع$Rz\B>|=-:swnujz _d@'Lc4 PMb!܌_ztS\­I"vF5 M{jJahL 6pܔiuiqhCoóYh}*u}Ro"Kw Ź )q.]/@Jj3Gq]gcf:8泦p~sFoy"R(M.N()#nxb鋸Pu" pEurt"wc䞓E³!c+@Y1W2ȋMy%{iRo]~af77 dm?#* |\ .qцbw\qۯjoꊒᓲfau Q[w@kKrHwfe"cDbCюj\2ƼU96y$|w`+CPw 9>Nzm~<CUna-1bL\+Б@Y j!*ROߊ)ER HmDWRJFXA Oka03{,xS?jzE|3|c (uB, ߩIv Nó».մcwCyֳڧ n,g0D/=!%՝T9-VBfnO&-#ۅW=Zv!^^ƦL&rSͬl0GЅ)6B!2zךa~]dH7CS.+ނ.M/ Pgű q`mN޵rtBn H>;ݳ,h2H,o%C%g>-%M&;mÚ @\Cç:*&d()}ae]0 hii.N^d;lp^/k)L讽;(b 70>֕F W6;1j8B6j*mmndHT94QA}Y3mE#1BiT9xCyNoHQaʼn% "}Dr˜:"6֯.I}w\_WT6]2U/y=CWGV:B%ILrp^=)F{- Xp1TpR i͌!@PE"Eg .!a!B. +CW^)IA4'V%^ҘH7|ҕwՒNd6sh0Ô^? `>T2/huE,,UA+]b!Zf")yZоhߺ`9X.y5FZ93DaL9yc4tMUa"s`8Oi[D|N5]DUķ$9 C/:|%y_G0o0xՔB7LKO2--]v0M ^Q.ᏴRRD /leW`*Ƭz4X2hrQ=͎ЛRۃOtdPb5KpiS0ʣn?gؔ9A>&~~$B}/֞(iEZ Ғo|9mnsM '$Cc+/<_-шK8dš8+|_CЋ-%7wm/Hre( !oX1!SW3HRMYwu3}RxYγ-ƖZ1ƽ$ B򓋆;ZS;Ux!Hd5$\~'x `uq yO7?x ! p#RO~__څǑX|rNBj])PW]OtxQ 1#d[ί9 }S2a!Q(M U ν-ON l.EBcK;)L>N@5vEyUAQ0' O:Y::,'dS^ɣ́vꡖxU7i+N)6<ځ^ugCyg sR TXH) Ԟ:}|шXA.Az^N-Ӊ֟6aq_Dzm֝X;kg6u:'ؙತݹ5G]LֈV['2cG@nYEL!(49YjtYCh771LG7nYZYrL Csm*΍Z*C/Ij$CB!o60aR1fK?+'B!ֆT :.ȡZH:.xk\lU@b2VٹpK1+9.^ce~$b!pX**I*.k) hDr~7#،USNL#Eo23:mäx,54R"qٵ_`<-0{E`7L\yb=)tWr w 4>˿o/z*$'G<03'yH_֊pao4 $ ?̉RZgH .!.k[ HHH0~;}#d 67l~ 2i:d)þCC?Tp'ku|{\ &v)9e2)>bء5`nút_-wBkMi:3߼fi+B=$, 35DSFM;HkKEjL)B'y.5Sg 2PDӁUFha2aCZ D1{ /KN kgJ AgZgu1[IPouɋ j+#g}a[FHsyW0h4yu* f4nR!1u ˆ 꼲I.:3}gR't_aNFi;KCWB P v&]7}*w]c+7Ã#ݰO}6ryH W%ը#j c)̰dw=,H)d_ǝuH \†PӈǻJHb'X~ay&φe9#kރ #$Sk/XߪO][R1&LL3\kbϗ$gO)%M7<yRݱ5%3Chq.cܤǞQ Lf"ÆoM'#\AB,zEdhӢnsG+l㞊|~)6.tRNff&ځ{:%S=,&oBXo)ý=y؉5rUhh2Lk=nyG/(74"eא'__[9cae'yͩi^KUr<d  q>hZVxԦZ3es[羽 @МYơYRiG]?A+<Z[77Z^IXm< \\ ,EQ5X\k>i|yur5w.oanWK9ksaE,I} 8nH&(VTEI,N~s;,MJQ}Y:e ,eδ&,3nPI^UWH/٭}B@k2I62<;dŏ@!iln=3hxga@ǽT~Jɻiȣs,#'BMP<;{,_IO 9T_DY@vBӮhR4YFQR5a1Ň>\)g얡I?6f]ϟH$Gq@#gv>xKK&!@>u2E)kx㇃nr>ڥF M'sk4һH*1,DMMyPJ%a-oZDQ<_AGEsdy.',d ;6_-|Qz9qء82?rKQx5u3D@dv!z3n9D|7E8@-K{ͤN37D3YJV.%J>ѨGO,MG^C;_[zN֙sdY,36Dz+M!EortMsf WI88C֊#DX<{ 2 ¹J@wvIä*xRd2cqӡHCI-f.ND֮=OWm3e2J|VaWfi! vI""f[]h^c+^]JV;l ExqT ,E?x9 # H7LFUN\4cB}f0+D*eƘ`*c}_#ofI(EJ6VЗ4GCI)T }D[A֘p,JXgL ]^)ЇB{\ XxIX Ÿl9>Lj-r">u*E71I~8☯Ҵs[+nQNVaOHnR^tJm*&b@t/A0i_3LA=MM?$zH?I?ڪ:͙* +ק ~X#p[= jJE/ji1DVtSv1J2q̏Εa-,/S*6DCnf"l R7E/tk(I2å WokttCI^Т{ U5vmJ BʄEnMr)*{1qb2 8mp:Q\S좷*䢒鮁 >$z4FVq}6rcfW96e d[ߔE9֩:5iR@E~V++lMʽ7mCy?.-nVG3 (Mh}wG.Ƙ"5n 痫 W΋H"gpX*N=- Aybֺ;rxa(c}T%}O\])JH1Yqr7C l > stream x}UMo0+J! ᫊"Rj.RI73W3njNelܬ;WW\?pu4{SlY]jwOusR^u5sx0ZYs.G7fԝ_= S)E~ 2~}[4v "N'oGQ70j,#z7o;l,j'Ouc׿zr<:Q:XTߙOoGB ;ww ZԲWL)\]W|, MHS"#p #>y| #:##0)%V 55)FњSjR@J]!5w+>7+>S} u B|)W|FL| ,B/^ &+jRP׊C8ƒI\U E'j\2wAsGMMD>Nwq8"妋:9 endstream endobj 39 0 obj << /Length 866 /Filter /FlateDecode >> stream x}UMo0+J! ᫊"Rj.RI73W3njNelܬ;WW\?pu4{SlY]jwOusR^u5sx0ֳ0;]nL#;z,gS t;en>r8S0qj>w};B U5gѻ9x};a`TG?y:o&ߏE]&AjZu/?v_t|z;:ذfhkܸ_\zu \7g"NyOܵڿB`ilB =@ )U 9yI(J5<T` M55֜RhR 1ڟS(yq( buX& &q,1+N978Nsk`q8 ^8% FMq.5Sh@kO ׏p$q1/]}/ĩ»p^`D3F?x[a 1ec!/1g)cd?4dK^| МQV1Կ'1t?ƺ9Y?ГrYs֟'g)437YgD3\ib-z3zs ,>G|ZV|ƾ3ֵ33qgng3tZ[Yog,g[3 =L3z/gd ,gz)R؇O5_TTV *M2GZN(:pTy 8kn":qw{Y-7]%# endstream endobj 40 0 obj << /Length 867 /Filter /FlateDecode >> stream x}Un0CƆ"Rjn"73iwWU񛇱='$I}s=}}N=C'u]U;o_ϝ>'eP~&&O''3Hyڝ^ S)E~;en!jأc4qjz( 3F&Vݮ=Ɉ>8~;D>i|#7~_ga}>^=(-P7cjȨW1 kl֏Gsj4s&텻 \݄Wb MLS!"q #u!`Nȩ(( LFUjp49cIMh ,hPE4pbvŢ !\΀Ѹ 8!\=#2:x 1v9/8vӺuSqk4 "nXCI8'ľ&p 2<Wcǘ,_8Ϳ1bxb Ài',ymƌ&Q/kC^،1ۜ1q, Vu 3/d Ͷb l͘S&Ş c,Xu ֟_~CO` ?'>ψ:sh.Xgo\΄rYgBЏ>;gX|&}ggg݉gt3zw3|s3߉YX/gKzJrg^od ,gz)R؇O5_qTԼV j M2GFN(:pTy 8kn":qz~Y[rbtDn endstream endobj 41 0 obj << /Length 866 /Filter /FlateDecode >> stream x}UMo0+J! ᫊"Rjn" W3nj<4nV~ߝoGM?k]{7[7rSmtɛy=TCA:fzgdf)OS`)?>RTC)s}`ݵeDcc0qj~?t 3&TdDBmq`TG?9N CC? F`RޗS/~g> ilXcӷn<7,^e]׵͙Ssu_U4H6!L@@B@q\s *Cn!>_33/>?㓁EK!c?RMO #SZ1|8Gxp4aj9DQK.h ljeuOȢnE}MA endstream endobj 42 0 obj << /Length 866 /Filter /FlateDecode >> stream x}UMo0+J! ᫊"Rj.R!W3njNylܬ;WWМ~8׺2{SlݤMƓ7}zn݅9p/]A:fzfэ4RS`)?>RTO)s}`ݷp@c`."w( 3&TmL2ws!yva`TG?y7{֍]? F`RޗS/~g> ilXc3t5n/.XjR˺^o3L9g)q:#eNC?lыѣc`83ֲ3#>w+>Cӊ݊͊T_|~+>Cg!>cB|/g)g{!>_|&~'a9K!B>,TGbPq> stream x}UMo0+J! ᫊"Rjn"B73W3njehܬ;WWU\8׺v=ߩonTtƓ7]ziTCA:fzg 4R㫧~R~J}6O7}w̭uזSIе(TPfw۷莛n˥?8ޛ`~?n8t/3NbV+պ};:5wɩƆ56}Χ]]₥+U9q~=W(_KdR$| 4hd52HHNsL FU*q8cMMh QEk%RWp gn~ȋCam `42W0A/c9^'-pʹ)pq[[i])9^W5js7 Gb_#xb~ ' ˏ1}cLu'No ޅ0&1Ie76Z cx-~`& y%Q?K'!/h],KV0d 1էM=Ռ3g1Y ~i?'?!>L9g)q:#eNC?lыѣc`83ֲ3#>w+>Cӊ݊͊T_|~+>Cg!>cB|/g)g{!>_|&~'a9K!B>,TGbPq> endobj 10 0 obj << /Type /ObjStm /N 27 /First 198 /Length 1780 /Filter /FlateDecode >> stream xY[o8~.1Ż$idM <6hDZ<)ے4}c;WRbgL(&rDŽdy&,SF3a֖Ɍ:ädBx$VXFRC SNC1%cCx`ULg Pi L\1MYfLŒ9 rf,gV. Q5~x1/&qhâmy#~꾞FYQyy5H?C|m O.04xB SWӋв@IܲB;3ny5>xG4[hǾgٱqs+cw1VEid|#㼲XfcEٍYi蟝 h{԰TNB:7 Q68!:+^E49PΨ?$3h{MzMvriޡS+:f Z#I"ES,ʹ‡ NSʐI.RIVE!wWKJvea0uk{IFy:F:cdL%FBI'6:4IYAQ#P8ƒ4JbO(LLL&ew|Hk;ݒjtR ,).HO*IFX"0b ӹ# u\nmO>(d%QUiܟ%(RR Ji3f3iғSG5'jM"Pa"V9 yT1:\<,:9iHn*#E걷p˞/8,u;]oYvy,HZ0k ٗƛhUL֗岭t )aj^U$=;Px«6S~],ʛv-pq3 /poوڭ ǷEM7C~ď ?o9K^|ʧռZ|w%>~[=6,xs~|Q.xKuF5PՌq_!qj[!SG_tR4ioOon7vPjtܜ1&Xc_{=IV:?bӰ/IBekdf  QoO}U`ٛ,b`9=-R-?`+~fZm9}1jJ%tSUwМCWK}fNK_BL:b2pѧ 9zrY/{с +ZՖz{//_:|%d$VMyu?d)Vwr(|D2~'o5,@[~VrqmK{)3t? o$OK8%zf?nIu3J VŧP| @Գ ?m endstream endobj 46 0 obj << /Type /XRef /Index [0 47] /Size 47 /W [1 3 1] /Root 44 0 R /Info 45 0 R /ID [ ] /Length 156 /Filter /FlateDecode >> stream x=Ps'DR1&c ؈4ZB0PХy=~# " \EOtP~G""[MT w9P4DSDŎ[jb&K89 ̭:y?zk3ΞNggy endstream endobj startxref 129936 %%EOF survey/inst/doc/survey.R0000644000176200001440000000437214424312435015021 0ustar liggesusers### R code from vignette source 'survey.Rnw' ################################################### ### code chunk number 1: survey.Rnw:26-29 ################################################### library(survey) data(api) dclus1 <- svydesign(id = ~dnum, weights = ~pw, data = apiclus1, fpc = ~fpc) ################################################### ### code chunk number 2: survey.Rnw:33-34 ################################################### summary(dclus1) ################################################### ### code chunk number 3: survey.Rnw:43-48 ################################################### svymean(~api00, dclus1) svyquantile(~api00, dclus1, quantile=c(0.25,0.5,0.75), ci=TRUE) svytotal(~stype, dclus1) svytotal(~enroll, dclus1) svyratio(~api.stu,~enroll, dclus1) ################################################### ### code chunk number 4: survey.Rnw:55-56 ################################################### svyratio(~api.stu, ~enroll, design=subset(dclus1, stype=="H")) ################################################### ### code chunk number 5: survey.Rnw:64-66 ################################################### vars<-names(apiclus1)[c(12:13,16:23,27:37)] svymean(make.formula(vars),dclus1,na.rm=TRUE) ################################################### ### code chunk number 6: survey.Rnw:73-74 ################################################### svyby(~ell+meals, ~stype, design=dclus1, svymean) ################################################### ### code chunk number 7: survey.Rnw:79-83 ################################################### regmodel <- svyglm(api00~ell+meals,design=dclus1) logitmodel <- svyglm(I(sch.wide=="Yes")~ell+meals, design=dclus1, family=quasibinomial()) summary(regmodel) summary(logitmodel) ################################################### ### code chunk number 8: survey.Rnw:87-88 ################################################### gclus1 <- calibrate(dclus1, formula=~api99, population=c(6194, 3914069)) ################################################### ### code chunk number 9: survey.Rnw:91-96 ################################################### svymean(~api00, gclus1) svyquantile(~api00, gclus1, quantile=c(0.25,0.5,0.75), ci=TRUE) svytotal(~stype, gclus1) svytotal(~enroll, gclus1) svyratio(~api.stu,~enroll, gclus1) survey/inst/doc/epi.pdf0000644000176200001440000061237014424312427014615 0ustar liggesusers%PDF-1.5 % 3 0 obj << /Length 2075 /Filter /FlateDecode >> stream xڅXIFW c $6 1`Lc>9Rb.YHRtb-o{6oB~(h-D"II,|M,;.k[˵W<7=~H4<)umڪ}>-<~!Ȅbf~ež&?uB%L#>_ Sg0%'a"~i bl W n0*ewh֑?lˣjTu"3WA%cPvv0gZA;k+ۡ4 GiTK_qg z5RF^Q89+G2Bö2^o龚{eЎė D0 Mt$cđ/BTVLzsKԡ?e{KoCӇ i!볩eyC QG ZN| ex&J$ I&Ej 7Zt;s_MP]0Te+G԰ ǫD E"N6v9 %mgRgʵq#`I`k'#1uvg&5g]UIB=0K 0ٍlzpxYVS`ްe=Y>tA@:GNڦd`-,XZd@/L0W\ڥXes5d@ >%MyE)?    잸-tꀛy+[!&I5̪,٧e\5CdkAvG ?df)Xe(s-#3##0s&*n",/2N[5T#pf]߹5H.hYE2ǐIx̺ i4%Mz$iQ5 -傑o*4%hJ#h}FZ:!hh$IF8\ < < Mz{.m+Bl+ wng]i&R1`\4Vn5ءWˣhMdTːUb^E)V=Iw@ !pOyfl5a䕡w[0qfθ 9;LS"hXqTZ/+^0z\ qC9!SrF&ڷA ~PA[XΜm -A߻v\qܨ]ѻmjeQcA]GiPE۹M%jB`4[y l+"6l;.Zӧ _8d<ߪzkg*,P9Bѕa/¯sRC/7ۧ5w³0.Ƶ{¿4.DoPOj>كzk(z xX ~?}D +{ܡCԽoΌ PQwi4OkUOՊM 6"%0!Iߐ\bEUJ5ZCA]țgoC= KٯF%`zEcM)=y' k3Bk]ͭk9P@_P7WhͅVW5v( .ߝ|yjSC&AEAUnK{3cd2Iߐt͛ endstream endobj 14 0 obj << /Length 1478 /Filter /FlateDecode >> stream xڕWmo6_/CbIz˚[XO6Ӌ! 㑒(/>yEoWo>p4l1dA8[nfyﳢ8ܻ.os5~(C.hqOm.k kANmWa^9(*2ϊ3Y*/KCwucZ]wgQw2muյfW ֑ꧪZ:r'U*Jʇ#2K(r`qSD,j ;a>xYCJ$8Y (Fb# ՠIϧ `*!Si|$,((O `OqCG.xa(x2 ٣[*zKϏSM]@$ղ2 !ie_rX@Ӿ?to$8TE><#&^؜hFZRS1P^6%B1O _/koCw7Y^e宰5nӒ ]3Y\ƞrw7Wl._Mrv)iD +m zv}c4.]nx $@QL>58 3|HO跋 1 neW@ R<d~jKu(ܷnڮ~҆.i=0nһ"[xؼE4z|P@k]Dp'kj*ݨbA?ea8}qc$6bY$nVb8ĕ6/h^9o. \W.b6s?Ie`['X,U}, <>XǓĂronxyW\JkD&~G4H^F&zd~/P{.\P?g8I&t ^fx֣իnceamV&~t? 'FD!8120΄L%6R}[rggS9:4%**T ӥ/5)s` FI*Nw$dHBZ,A<@X .Pxd4А8AP6 B<|!Ѓxr@E Hl)%xLiI7x74+ot+Rpe ^q8 {Hb\X8\K3QOѹ02_p"늝C^#zkJ+ , ~[q%% 5Ë96&+DŽ=(Fm(w(W ('ZM^]ӏZwIz$a2( ӫn12 endstream endobj 17 0 obj << /Length 1302 /Filter /FlateDecode >> stream xWMo6Wrjq% {6X, $Emm*KD'bDIӠ9Ԑ7ofuBIJҘǓ|' 8hrP:k4<Z43n4^`չ߽kֺٻʶvF/fWdJɃ^ޕ+7]LCuj/6^AkLk2SU_8 $02FRmeQg,XP7~p䠤hq}kͫ[J@'Nh:_f^cVeO/*3[ׅ#mV`eB̵ >Bv !#M4doTHJU7nܵ테SBQ-2+n {"JN#P<⣡+xlu0䂒1q0QZ.[.4iEXˢ58+V3ݢf~WT4T)SYϠ'TdKSԕZSFcl,Y0n _(,֎EV8Q;3Klgylve6h7 vd7u(w9(QAbg#EQ՛"+g.sc3%FCVgcls$0b[8uGIDv[.K8f`24͓?EpvgYl^?Feߥ5wI=GҦ'ۦ^e+r.jQ-(xjŲЕiX b~97Ǫ4X0 ޴m?hflՎ>ZqèL bS 4;O@#BU#sBYwzz:ّLJTP(&YGL8(cQ"; FDCx>a8w0FzFha\abBDIa0GFJ=$ 't3i@ D4M_ vY bX=j5STY|n%MMiTc$҃Bf10 ė 9q].Kʾ@޸)^5þȋH/bn}<~nuBgd,Fg'ޟ vը+20ڟǖn $>.gfaG4,ė@ۆ? l7@ٔh3=_'x^Kk /=F>=xFk|s'X&Գkzj}}M{X5=E&WӓGɡJ=r nI(8ka2|r~ub endstream endobj 20 0 obj << /Length 2288 /Filter /FlateDecode >> stream xڍَ}b] a`C5b $5{"Ei9}b躺q6)2<+nڤ7wۛFBK&P;~ȕZXSF$Nlnjk`M1.JeVMrV*.繚?J''.̞*my Y+eLLˤ,ΪfF0Uɴdz^Bl:l]9Z8q~ 5a i9t WEnHHh}t]C˄Ǫ`71 ƷF7Ok>9?!vTIKz@<B\:"YM/>s0:O~Kb,J.$Vpv5'_"H_S1j8hN c2 Z2+s܅)F% Qa56zǀdLWPBgs/jXOP5uz[K#SvH|eOiă8y\E؄#b8KLHX}LXPU'^ /L<5;e%,~>5irưR&[< ojt %ڃD`-$,e xcC}ȝNz%_<d뚅[Q~q q 72Ѷ*FQreQdUĤǪF>0; HΞ#2"]ōӁ?|3[ۺ9m@ A7a+>XupVfr˵Ƙs vzbr2 PDQⲑVElʂ7t`tzi2g?`h^؄q Xoא.{7&`|tv8'. ~_rY5<%1SRR9pHpBó}{eҸz,]L,<Ч MwMlat<*NԋCBzMBRcyђt 0.zF>hpϣ"/ߜqbn|@}4EǸ+tlwK3 ZsLx1$Aɡ" 6\1e7H|P\R+ؤűg!q&--bZSZiؖ29qb:)v4W܌hc33^I h<(v$)MnUː.ī-Y[_Vw)F\N"+'B2 mZB˖S?OA8Ja[ >6хlkO SC/iGe`G> [ɿNbB&.O^i"a$@c R@-t(6JPzgA٩> stream xڝWmF_aEQsf.,ֹR5RST)WUU|w0zfvޟ~~Sgכ X3_Lrv>ZQ}ߥ\V;]ZM5-O RmDrݤ\J+j ~TmԤv-韒D;0ĭr_:sn:f`ZG C?_:sf6LIAN SV ^5lnKGXd1MY M Pi}kbd$߹Qqϣِ0g:7)E4j@MBH5BRiiNvszrPuW2 l޿##`pAdcr:n8"vlqOfv?3P 8?k@5]rZN}q p&զki*x2@!m/qHK㍳Ʈ227?6HH+?GnTUuڣ-ŴTLG]'Gȸܖ56I`X8!⣖BonJ 7,YYLJ&(^,9Cxjs[wSK1W0 uhWob⮍&%"%wM3^zـ]=R1oKdBSreVS1u$W@k4lx1\2? . ,h*Kф.i$vH_ HyW$iOA?@.@|vղʣ8ճç ~AfDދԁ&K xsq4y`Kܱ 32 a5vD+xiP_Nh8 u=Un L_1j&:!qDKamYkVF7]h[99x5W\v(.j›(ϗg ۇ-}+ECK"mK9i,.# =IJS0]1 B>$&,G]qndz_ippBϗ1Mo誘)=e} 5hq(`Oi!+&;L)xB@#ø/E< )3G#9a=X<a,eHha{e4p&95]X!8XCҖڐG-%Lk"FƸt,G!V;0+.)?R+~y=KO+\DĎsI(ή5*;ͳmYR=DDiӮHaIw l!W` RK\߭Sk][% d;fK1΋z4\  zBMvZo Tҫ6q A۔#]|j:^s.a:uhie-[ 1"ɾ+! v[&;?uR<ܿ"ʿ@M,_R@-ˇo{}&Q=gp=j?q2!-#QM>Is e5#=aEařn{ˉdCc~~/,g endstream endobj 30 0 obj << /Length 1800 /Filter /FlateDecode >> stream xڵXo߿"XZ(ah=>( %Uᐿf8#YNp~1Eg~M훷urEJ4JT$Uru[\+g^*ԩMo~ bR"24f&2Hf A"H’BFq.)(LIc8NRmbYBaVAS W ,,d$fJE :1FZHy]Mv8Nc<%lVL\ͨaYL!aC9XUTKzQR*aMzH#+"k%^ZLP@]լ P 84AFm״0Aӻ:>%|n:7Mu98fKb82EC0\w#lB\5=Î瑆y?;Z>z޳ŏ]^?8aNx;t(>L60b]wGsς)"^ 0qXUX!8t~ͦ 7quSftCY^,3(+ѵPI[ua7kx Q彫z, BlLr+6sXt7\hglhn%3>h$ۻ=RB ߕ-5BpDe),47N{^҈7'e 7qC>h) ] l%SO@C>Ӈ{ups]Bȩ$ALpW[hRuvwUz#υ?k?~.Nc@/6Ͻ_\Bo|\bbpH w3/ ;y,=ϟK %>yߗm3< \LSǧ7H{<~:tcɻamyUE }vMWWK1i397~_yUxN{3Lzz%G3ߎaާG|W$ g 0 YgJM,@06UxO8 ;Xl )BeeToxMHUb')*=6Ic^ëf#(cLJԊl4T/bz$+yQmW5Lu$@@:ɖxd5'D@<=$B'bw5/7Nfׂd`H7 0% _$TL5BhQv]GZ^/+H2gQS_W쯈\7,ah͒5'V Ӯ>-U1v_)2Yd% |o>ܾ- endstream endobj 33 0 obj << /Length 1685 /Filter /FlateDecode >> stream xڥW[o6~0=Ȩ.Cd( }XAب"z'Ð߾Ë$U{0D;/RfFE)3L̮eX1ɓM^%,Sm ٭zgnX,1C۝ 4(66,-orF$.Lo>93ϫ_g+‘)}j}5q!CUeoDnj-VΒu'E^jM B3o;jmp1e85i.k^yMc63]L3/?b|2m4,hI,ٺm:Zr NY4Xb%yY'(O^YޢP{7yS>z~m |ٛ׮ CH0缪^}$NTM~,u0M A#h([2ۡnwv|D(Ca[W7vZ_;];ɣ{Ц-9ˁu_:0]jh_;Q%!u&U4U; }Ud_4B9IHz߽16>8cL$7bH:$d};^g%? q&g+@wva&qwaP1JQ oJ!&ؗ\齧\%Ld v" E8KH( qDyWXLetB JU4'8T%Fc ~r28$i _`^Q ,Oj!J \$0z2qN;&;uT ZT[9+07SB^O1w,c )i\PnIW1eNn[СOQE-bQokX&bV'65# ?'FvƆ", A{ H{hj¬zcPS>/>AXρd~ K%~"F^~^Wx4chƗvW+hnk 0*BV߽[>܋?ԭYUbK'{JGrAR8WݼSr#b%|<&1Zȋ B'p,,8jIHLt)T'H ԝdw1ﯹ\;!6/8㒺q2IRI'/A J Ѿe ^s'4sП1De:hꛡ4ˠ<͒dC2#9SY$HNqɥ2avtAGEN<R|v ,Ri< !Ι`%*zO<,11鞢G\ՋxH endstream endobj 38 0 obj << /Length 1642 /Filter /FlateDecode >> stream xڍWY6~ϯ𣌵&$ml$ mSMȢ!IP>6Jp87Gr7n3\̌LH=]~̝=сWɘU5yօKL]_ޥi٬҄(*X/1+eYWX k.E\af9H};ϵޕ͋)*&ȷ.l mnγp%a.>UӇ\Ultt} bph/8sμ>7pvz~1 -ŭ؋#mSu}/ $c.}1Ͻ)pp:EhA0@ܑe]_N ?(E_/u }7],_b@. %<}e 0qyehSLHSfư# hMn) \qPI-V[V π=! ƕ02)f#K32 c"A^$]0.'K{IiIgJf?5$3a 5%6Bh6\G͚Ǥ8EM=??3i+?Ŝb\0t*x2Fɼ1VB0`Ay!Si9y^aYR9d5iއĸJ ?RB믒jFY/gw5eJfl~lK8V҇]bvlIv $)W Іf:b>9l8.5gm93B% {5|xr/hj@R؋ D}/[*߆{:J|E}IYCjE>^x,WTͲkZy LH(h_iqoT4kﻜ l0lJy{?Rm endstream endobj 52 0 obj << /Length1 1411 /Length2 6115 /Length3 0 /Length 7078 /Filter /FlateDecode >> stream xڍwT6ҋHD'{GEJBIB ޤ"RD Eҋ˹k}ZɞgfhGxL-xe?G@/Ir׋8p;i4j 9[!sWQͽ RML/-1."5?nyKu,4)p)b8LFxev?6C3qES z,K~fé%K, * +zUr\~??;W\}@{"i1iSv:d}\'CQl4'qNFu`o%En95~s?zeiE)"Rv;y$!m3= *]/Hq/UQܑCwsVJN6-+ͬ6|D~5̚X&`φwɢ7X_22x}iZ][~K"ppM>[.Ihb .3_,z7rpęA^mҥ>ݾn݄'f鵇+SSMAwv/̬&Lp.'&1g\]gi ׯNeNxgVl J i]zYhOA}̛ӿ.XSu: MuIqٹkWQɋ M yL',.K@Z|Lrz "\ߟVS'WT7u=3=o[\mtf$vXȔsx$gYhp! #6t{B3]CĦ*&z;(gS9\]m\-ɍ ݼ-ыC#ѭ̛326Ҵ8z |`dp3vߠ;*ҶdL p&H{& h"@|)B)ޔdߢ+O7;f _?ou3=sSc8K0JUk/0pIzKUZg$fE5p|=Tٜ7 1K5= [I7ӌ%)vV 36Xlx'b{QpBC̮[Td }'ج}=1/\D nr흷}Zofcͽ7iVf,1ZeY1&'F=५K)#y~)[cRn̗~uaUDAT,|.X etG\S!i-SA6Bʃ|^=FWQm-s(WP>I*3sj䍏0AI~Yqx2zT!*|rυ0dtPgJo= 5\uP;:7oX˭}b|8/,]LQ_(}w*Cc(^DiNphPsP([fM]Q| 1M2R|骹L&\Pmy-,qKl NguEzJUeo&x *[WKTiO^B7HiW6f G&ej> f)IoYic'N`Zm1@ȮP*$W],8=а^9Kgp,Zոg5Nzvz|A:76Ѳ.&T`{QXoGOzgXrFZ4%2s.g5Eͱdh]+K$5hPm}H=E3 fYJ8v39`UlⶤGOv/0l[r* N6X%wp4k={*O%42Nb:Q< >ș"xp:脦:B8n'TnpqRX%+^P6yk+ܯ&M-7_=XYvxu#I62X-Q6f"L_꙯(Tcr;Cj&DESFAWEn=T3LI'Vipj9]Z;г6/)5:k$7M+>"N%ZE`9f^n0fK^#l5ߕcH5}V(GӎSXe^Nck`r!3vÒU~)Li>5xI{QmH*L\e=T+9tu)*"FdcyIQokBٟol~17 Ly96/&97ƠfGKS#uU=`^; I ^dbcB3NIU5AvM/KH2:y7^޻#oY"$ ݾ)u^Q (j<[ureA0U UEu4+n?Jr{>?IѤOr_! 1@ʸ,opڎUqyߒ*?.ljyLגeʹw% cm麝/g+OOtbnBORsۮ3FQfj>z#I-aFqsFV\!m*͈FJA{wȞIq!9VJ{3iλvZ=Kf_$U_G3CfO2?f@j-\eok*9/ؗ̈?^|"n@<"iMy^"ejtE$h 2ϓFvA1/sMQD׽_|a8 $&NCcǘ)(RG$w43=0m!Wf]މŜiׅػX$ܽeؗ(s<" h.sr /"OnVڊc+Q9`U7X_{ȓ2.VnV︢{*)dГ8~2%:EG/U9dEjlYbыc!f+̀;5lg FKaoSӥ& o4%0HCsɢ{.1YR{8_9n1kK{$TdK]$97shu>k)}YZw ]cƲ؍'h@-;1x'|ՙBv{fNh BK5WP=J>@_V|HMH8/neV*^;4LZBBa[kD 8>|?TP9(Aop3h Sjmd.=@lKcʔS{ieS8zfkW7[^toGf"`űI^>6*_$RL݃&ҒO8n.),NCf-+dIϞ{ 5Yc2.h?Ԡh]Jf8x ;@vBnr]4./=%/<(,Ա%$𥭑aT0FF͛B1Cl]oK"nl{V\=҅0CM|&e L^ Bo= ޝ\WaTes7 ]oB*Ζ;b>p^\ʑtw@@cި)Z;H#6O0RVS^MY5a j:̤m>K"~.W+y3wN;S9jHYk0:YK%@4[IKXr|9K9/yO> stream xڍt 4o76KKuƾe7}:L !"Y"55.{Y#k<={9;_}}>77 Eo`,6C`j@u0,Ot|DHA`@ ##|.FAjh /#@de~*p aXw3 pl?R)cr~~~"0o4M_C`7 w~ <&qf?zS+x Gy#|P.p /jpg?B߻ "+;(7P=?V\~9h|<@œ;Pcx'[54[@=<(7W 6{C\(_Cx^>pm.x?:78Ҳ ;Jo mR' D{!!W8 X<$) n?j| ~>F!{7͠&&MU Ka1I02i!i`mXm+-ձ_%?\h4_&}_qwԂߞiZm%it]qG&K~}k*oYɯ )/z[&%|Ý#s(ЯMM;nȒr. pC9NL$XaV2mA}:A!A7 N2nbbJG=8TX0a̿V9)+"be8Tuko;b j: !}YC-\6utþE뭧&d?9(j~VzMw} |piaWDž˗JJ 6SrOq؞ Mpm+BOdNaQ Aw@2ĭ6%? )6x77D=828wzt{;]\1_NF^c xPNt{AD(]/i^r{WfhiW݀[Gy"%yq=UᝪQm.Ū_G%~1]IGg0US%‹Vrf Tf7z^ չy u*Dۍ2SfW&VhxGp)CI]XT^#hܳi`+YbR|J|1;{Akl͌JĵItZ@~oƌ^ Hr֭Lc޶3t{ Q7l fՕb̿/H=y_3Q|5-yQ=8ct'FXnFc k]2U82a^Ί&F9rԼsg*uD*tz t8 iDrpɻqE/CG8pzWzRP 8y+ت>˘rߞɎ-FVUuRҮtCw6͓w2F aؾC- *Jyښ4s5bDCb`0d?m3Vm]ݲ/MÁv]7e'X;:Gϭ|f0Ͻ8řo=4l+2YQn,FfV#5`r.V1CR)m#..ϯǯjlֆ=]q,d̺ݣ.\EYX>T\xl<8?n+y?Ee拘: :*iYQ؄0UA.uHmXLz(I?"eYߘnt&-u6hW-A|=U/x:9׿y)W[+a/r?#8vL[#mIMukD6riȱY.+6%iqjY*yHҠOM|ƬQP$N8g2A&c$63FE N*gh} ڑԳg5R,ꯞKg7YdʆLwoخ.8SkTQa{/9t32gziwr)) 1ӧ"}ȝXZ@2m*Z A";6XO .JD阘cAg[igar]1MΙvgX^P6ϟz^d?-Q3LOsTmfa|l*մ)]ͅq]Emnl6۟.H'3%߷9tp;x_oW5A=iw=ӗ;͔`TesѣjJ mXBCq  %#á|$c vc_})p9{s0ɬ@C‡9Oi#iqDM/d4(4,5vq'B Fm\Fq#Q޲ф %l #9ރ{ٕI\#.eسZNGI!),h+>:-qxNDzUJc7-1<뱭񓖫PŒ{␧ϔAtBIȺ zv P>vRAuP/\#w}nD0ފ*E›ʽTsX&B~6w'K_y&a-oZZaBfSEQ'D:z9 d|)ʠOi* ]htԷ; zeyvd|-٩\g\M't-vwP7gRo|F9)=  PSc bt& v}m̈sr6z%<`_;Σ"M RpJc_*TK?F?CLw·݆V+BX p(e2oDv(%V0=Ԓ#$ZudrL_ju,KӳǛE0FaZQH-O*'5FXr=Y>e9XlCrIMp48y*IԫVymƾuQOo,thS:/ӓ^.n%k'EsPʏbze߲0ND՞D|!{:SBReIXRڇ%TUWC ʏkq|cy-8blUE5r_@9,2n}r:j*VŀXXTa!jҍ.NÇxG3RSej@W=c) o6`G4^Ԕ}"N-oto"4{'.<,x|یv;|BUآO8Ij${Xy}.WZ 6]3aw]0/Iџ}e$i +Mhy ojݬ,7y޶bd6ِRsf]Uu7Tǻ@뻃um㬅1Ŝ$}#k͢~y6ً. 0Z0E)K%M3)RdFTwk݊νM?ZiQ)+t&ϓRv]ae"smšr1_FdEkݴN0k"`\gf`6_VSڜRN!x+baTKy*1ܵ/vZީ/oX oBz}82I:!ވڛvUo4}$4I!/~RaE Qwo$CJP1?CY>d+LȊmfE0+E?䷆6zuD\K9ouER%Nɹ*$؝Q֣P(ވ 7+ͳ9{њ"֋]ک^d{^U$~IK?x_qQ!F|4܆pӺ:+jNf*L%=6 'l,2v~(B>) nvRgHܸoxr[N5XGs 73X13-vkI緞7Wم!3$جC"bm wz~7)m(AW )HM ,GH%\k "co.ۛEBN(bnh(;7!W o7|nYtL`qHo 2 JꈎT2"Ma˞2x"eB Ymp`-g=ٖD]> W=12TwO 2Khc?{ ͹ܺ^P[6ENAQUNiJ',pG_X/7w Wȅ=^o%lR`~4bƥz,D'v [ɵ #`Ow UV0gMg:-B;Q}O,f3@Nҍ#+mf̛];1,=WNaP?j*){0 a<.u-۪׆E{"v2I .ɫU~ QtV{<*.jWEcC@·B@O ] p]ai%R&oDC1[bcZF͌el֋]h)9 w G+5%#VI(K??qa:~pVSvX`y#r#/_DJ(AtKt˺ril{j'ڪSKm > t$ntoZ%љ[%DT:.SV ؅%R\=ȿboI_?eYO L;^~CbQOFs5=,fG"N@yqInDt\^A- -\B &%bR>S92g\ [ݣ̰ͦ0i:pjٲ+-ȿ~]&A&iyTV勬ZסL[W ;(@3i""7HțT^4<{ΥF܇  endstream endobj 56 0 obj << /Length1 727 /Length2 12215 /Length3 0 /Length 12797 /Filter /FlateDecode >> stream xmxstuhxjfc;юm۶Icjl5sc|ga暿5Q8,LL&V 0F Pvf_3@ laf6'PXX[j [g cs؉o2p4L-@@ZBN  A'#11H0@vƶ6&g /1S5@VLEH\^N &¨"01[n 46rt@k7 vŀ 00v,l-a'r@WC / 3El` l\6&@ -@n_  !dcWA,-\& %75ꟸ:F \Mlm@n0cҠ151(;Ul?iCg:-\L Z]t%,lA ge0s|g|ga?t`???Vmy-S˼ a' T!&~]h[] NmmJ]7#IBuͼ?+=ՆQõ6rL[]Wg>)m_‡.iPiЮk]59⏝;MǢ/Q⇻v/ ڍd'6},x1W0!h8E";|)6$$ਰidV:ˏe Fkv(h$:@+O24%B֓L:_IaL?O/[Rdd$M$fMI?Gܫiȹ|5)YkVa?pje?lhB3*/OI^*ۧz]fE:U`~qm*̉g]>~GV\CR)~U";=tk-c &LЮʂa~O5&x|@hNvQ6WgJfh؏"DiZ!zS!ВW8dftɈ'7K3|+%j 6lM*t(崙 2£!>fKZ ݱ;Ңcզaex/-Z\;T^pc[^\\s1/Ӗ4wrvVRm?ރc(_+ݲN ^&y<3#);_[f[HH[w2EŠc,^7Z TFl+2tjV?TGn@pwМ;xh])UgSާr@h 6l?@M5~iC=p`wt 8\a@ n   @)gε´G 2:.wM6.|Y30Td%ᅖ3>RP_U"VqDJk 4K\d>o~`%!4,fqǻgf⨻ ~/ڼà1P~][LMdY`2[Ӟz}p-#=@KiDrw jA¡`->1h_敨[(<]R8,\e,`{KDJ$;Ǝ9yOj)9,USFkAB~g-<qٯ-\Jw'3 ]醂PQB%@QEn4mCmJGDg7jW3]0߽U6y-6leJt=0'R@k}5!A۞l*LP2TM%$#upȧOaJEv0( 7ȁ.U/ yDɫ\5_, S߲7t M..1 {?ͺd.j7 6(=.|e%%ah2AM8?w_ΦQ깾6YX0ɨ1CYܝtEq~15~b9 u~` s+!]3H[eAGGVeM?]T[[{шC_),6 +̄@t.Pr>1BF1eo0Kfhh+7>_^}"3f#Zݒƿ_s}8jnSʹ=/'4kv޺Ѓx(hJ9]Z(DeLhۡuU90WIiߕ}H4;"ZCUAe*>M1ttx,%E4㬻AR{r@S~Ƅ5DF3nY(I't~Z)Э<7z}S|r֖>}ҁ7O!rMfo.q,sϢ~)-K41JCOCB֧ciN%oQ>rfth˧JԂHċN !o3Q,7h˰WJAm4aLѣ"G+ݶơgPd[ה;f)./뱈}$ʃ/wF ]8X K% ZUf.IoOLdQ&e\E |+(M%ӃHv!l I-Ӕ*X8"ṧdӢZ,`.3j>Zl%ޮ :HڀL{2j_DApT87!R^h_s`RڤttS+_Ѫ^Jog[{j<_fΖ30qnp}8\ҝ[\:B:O~Ω4ѧ-=9.jdڪe|50Wk9V};Tw j-lV.;臝Vʜ4O(U=ґ/S $G%Yˬ(Q.ucp$׵PHEE$./S90׻.mm G· }|Qh\ u mȭH{ qL*?X- XS0fW_ 1,;a.Ť;=-p'VjF/!79 >wusz|",Š5}Csi|RcRQT8JwzqG^[-:0MʶEw̧m-x s9x uc:Q6F-i;Zy"F;eI2fr1KcK*Y@I= ?߸YpZEGelx9賧8ac;7.>f*vw<DV彜CzJG:kBa^4q/drlH0U bߤOC>A3|yú.Zd?'(TopkIsz*%1ՠ*EP=#>U4׻5.-2Wr`y9RkBjotc`NwX6Uv_0g11)RrE_BW0qQ9J!$>xn{ۊzU&Ici)nH#ʞۚfB@O FV Ay vˎY(uncKڛq؟?xvZOUSK6v4z~Ew0(wkZ( Y[S[%l~{u ] C1ʆ^|LgaTN4(kĢE;/tLȗ8 )!o>s= J?d_) W&g=NzIn_b"LMgX 3{} ЧsF~ލD¨hN} !t_3?sU O+Sx;v 5:o Gڗ3mgXnGifȄSLL,H;!j=Epܾ񭫛䁼h@|R}$"2NOlMbx'REw+rpn#0B%]*gZN OBQSN"i~9xҚh 1xWx9yEq.tÖ H[ /z Ƹ,r:p$%uI Ru.>VQ1V%n]dv#0;kb<dtE'R-NFõ}_ nN4өW/ʚ>)y9>R͡G"Yc뚎y|:,ob&cލ\FNc!|%"3R,yx hn1yX  )8y;96 ׁji3,UQ&Q7"0/5̋ܐyx>Z>3'SYs$܊ EHVp4-EVA-Ija5KnMV(8v6r&g:3E̐wYQs"'2Ea:,pg}f/`kyբRǠଶ?-:Źt<CEj:,'m5+̗ E}8;OTv‚Kx<~&ADES1ժZlwjɚ9@@|7h% Sr2 \nq1[>+n-k['ylLQ..0Sjs写_p;B&4uYhsD:Re9tgwMlV߆x%)#AZϔy;U3N]Tꆧ_;Idl3X}" zZPNXAmns/ qQx!vFd>q_ij^ ?E[|cxe;h] Dʲܚ4^tyJo n+j^%5lj}#jbƨ:[qɎ 7 R2*P8 N!x~d<34&)+E>:xY ]I]߱{y$+~ܪN&8u`x% ঄̕%R|Sa?hQN)R4y`> aW)睵(^V3yvn61u緌> ҐnJgzcD_{P+y0L:Ǥ +ϒ(-Vc,OD>+?cM1HIct7tĎȼȅw/~{ӊgX;_ⴣ&Wc`do B0ws/Q'3܊T*Nl @ j#j'i!>|o=MMŒ0Z7א/^:W%ԢK7R4$ށw Q?MH>$nf +m eH)!`.My Ϸ´3gC"/rH^yU,Z[&KG2TtݷbVY?̖hX$ob^3߫>^a,Mh\L YLhW|RdI{GbLɅV DeڗeLfL#FZ 1TN UzjvVNX:f`*1Oo;# ĥႌ{Q^k;1>#n Uzrìw s{za}u^rI*Xq"[}pυLYjUNL[E)Io"vaRh8eCЬìA@^TO0kъ2հcȻ[{'B kjYw.|rw)jzDW}BJ ȝmX^Vt %lI./8 īxwU~Fa[dS5kĨ荼oetLxz 65_c дP_<-iJ&u \V[rp Lr|G9<;SJ=:r*^Ie㠾KMJ~3H/b{6B[6 !>A4T 3֭U--0zH$zp {^mMg8poFx$yB-fu5/sD~VLcE9rosdPȊ[[gjGu#GuD/Ap8`j$ΜIݸ|}ɨޛU)]X!aF*#Q5/<6bԗ١++EgόM^G2TيA IG2cyRJӤu7}`*7yj`dZP> !>vD{Y<5I {uawUԕhxl54xA'?I@'/ _LۢBB>\F,lّ$]1Y;N^ڽqePSBç.^{o> ZM:xhgg2 ȍ&j-|r}CԐEn&-?r3\Úɾ͂U[NIj{PHK~: 5|+(vZ*;bIIiw?i ҼN <1%E{fBOX eYp#լ>̝Z|Sc z! -v━TԩDD4OOo(O QvVՋ6y)J$OHo1g2Ll'^Cx >4 {#@~_~ﵽAmؐש^S-0ߦ `GpڬUӚ*T0 rju%lTϼ < W`:#AP~-HclqMcRX{{%PV-#Y YNB>KFd^s*!m6;*db@zS^`=Ԯn5ҝ^QYTY=^â\3L= &7H:{KfjuhTl3BP ϋ)!ҺqAAkR!&+ [ƾ5b;P6]?nEMOQ`6A("Fj3Ft5]"4.RUt\@)kIM44bf^0aI^\ qwHmE" 9t=:#ܕLK.L =fa'&X-UqVP2~lK2~#^Lo|mcW!RM]\,t? 0K&RΘ433%VjtHVoVO 큏PxZR{˯ZD [n1/W檠=66(lOLU7J d\e8|dޜ D^!4Iim7D_Oe 8*-].ey[Lknj1VQ7T֙ '! {"<4s Q9}ؚ>s7ly;"7:d(,U* 2!d7nk(OӴsq#E{MNƅCw.i 6c NLCLZݧY’O.bX7=4J%< #.'} _iS04 NlT _^eE*\iVK^!!"Aݻ堼(=>$ͫ^,%{G ͆JbW;M.2m 2G['t+a;J#Oxaլ0hRwWw/kǸ`)0f\9pLfGb #Qx,Muq돴LAlGc\EߎZt%ıM|R;&<녍?]kg Yߖe_ Q7C\c޷L@3T;veA{ar?k"Q+-$ ~jkcbKye뮳8k{u=W,r >9/*9?㝿out7Ԩ+Az9/A[CNͦ(8_?+ B(HlE噠ٗ=\~׊ ]U2}y`ޚzpXhށm*6

nviduZ9`EW~-Ik8hW/qQM xZ[&MMvGLR jS84WPqݽČpKFڬA!v!Z(73c+,)5lb,:A YUpJ5LJ!k<j^Fw&ET W#A_F;I$6ġ$Ǫ&lϊ%͏/w`ӂ{_X Cg1N@gz 3nJ_zJb.?}DoBv<7#s)qʨՂsEpf% 6!PpNl{wqX"m|QǞ*4"ǜl&QZ#:pm̰?NW+8fSw+夤ңሼ!{`жYu" d)4Q8/:ߟ8PržGq aG;?>Bx`;tGadGrE}=Υ%soWA!7Ꝥaryo~^XZV:ceyGHAr|~;1ɢ`k̇%1ݬqK[UĎ膗lY?+S2oAm&+mxi%$E8V:h/Ξ0m`٭5XGZ5dVvfȺm_)4XZhdzdh]Pu)IV>kԼOQxV cdX4/Z3<1Ч uO}0#Vn'k~jah'Hde&h\ۺ8:w/{$<7LමSLLrn۱ ڛ&v>m8>(w֝9P5@֩n $,@]qy$E8wpQq;$;jCuk{KS&˸]s!K,'@5$ p>Z4֋Jc-N,rCgo'Q2/*U;ovpE$3:GR3qEm%qxGn&ͽb61'ͪ{SfQ{cK&Oc K8Z0ǯ::',=Bs.0850!i16!z N(z{KftmPἾMSd7^}ifeH^sDkDGWm*3;b5qJt=쁹VVU VXZ8MXsx3a;4)]phM/4Lstr`*ޜw>6ޡڢGF yemTpP R (ɉ-(nYx+\3vEwTfN֞ v428i|Yu;{J^ݰGq^60 ۣU/dԍΗ3S!_:_,D#Iܫɲь/9{=2t)B93y5;A2i5S- *Ӎ )9B,v 5 T]qLj4j}g ,ڎY"iO̡&c2{ + ҥ DLRѮ^]uEpeXo +au `%A'ZkY2肾/ q2ՎI?7sd 6.{ygdGB,]XP@AȌk37%J}.,SփiN׵PB<^_+xSIw>MQhSd ZlC $vZ=*mK_p\f-3[MaBOHrSg-Uʎ=!B~7vq((ח^(Dpb6U|g}l:pӖ"E*= i}r"rO3=AQa::QWOk?) "֤Pw 3VԻޘ4BК4$*wgfd]IHT\ endstream endobj 58 0 obj << /Length1 727 /Length2 11360 /Length3 0 /Length 11944 /Filter /FlateDecode >> stream xmxeP\-`!Cpw> \;- -hp9޺^tT2`7-o'  +@SFBʅBG'4s9܀@K& dg@H::ym- t,A  !.HV { @RUMO^EQVE ]j v2]v`Kп8CtqK,%.dӒ-Jrn@ sM peo_.^XQ88 79Fan`+GÖNI%_ @hw{{3 ࣤh t$-^n@%?h3?y7z*UTT?}>j꿭l? O;6yMEu%?ii%l t@ޡPN8W6ssy Y$zc/JB˗ Znw@YYt l ]<] 4=iʹ4sa nciwFG|*\xjD xU"C)Mu@ƓzcC9 Edu%Dq;Is0,GiEG? Q9l}6kGD;LE鼍T׾pʝvr#iie.~iD7330S w%0KTruu4eza,Lސ#IPJnTK z6X5̸}>QC7ѹBnrYڸ!T V(PZ'`)&jnMtfv@푐as@p0Z/sIJ/g[#?]6`{ǁXW4 }:˵ain2ٺEFHXeluץqcwy h隙F{KQCǾEnekTR`zB [s\+F6+"Ө5נ(SQsDt[এ%7)gDT&ǃ~'•ٓgM ހs](N7뗠&9>)9gbI.י2_Ik pWSu~ TW̍05U:Qvm:Lh7T01EN`t73p!B`#9~UCٻHL䎢C21jM]ʺY~LU|eC&Aonp&f~ag]!j%Mt=iL ۰qѮk%Uj*x{ެR } >D3w)ջ?KwH"}3YJXS2/#Q8NYk*E.(?-R!M~h NJC} g`I-9(ln8BrXARV3z+)p1'Ka-Mfpfgڝ*GQ+Y~TS#^4&)OlWph)s cOi XBG{OH*9šR2˧k)Ż] s%5o[q@^SӤxA]o:y^\cL%c0$(6iZXZ āwVd>P\_W|*Dp?ֶQ19Ӎ,.yS( ~=|WHJ8R.mk xӟ2hpQJu iuSO5?GBL|!QssO;%>!ڢDYFp }8"tL@"s\_V}zHm͒.V NrE`LJk pbK".~b}#.F򩹷$ů5vfbwrU̵+Zŋp#Pʽe~A"etZU^sMϙS<~ E˽yݲQ胅y*&2bdI^n$f|wدfοS$ xaY3wnP]aɒHke$0TV䖿$.u+f-/_k6}ݰn©KCZ9[Wn;Bdad*vaLhH""TW%k SxM<}EMGNJ)$RcrW[q>Cޤw0EEN~yo8bV۫^7{z5o'dOurH9NK&GܹUR?3J *nA"X=yz $_O'9gaی-&}m>AmU+zC}1 LSagqE P鄨}7:lQҮ3=f d^Q0rj Ɉ3 Z[QEA_{ R{/+iUhf)Yܵ1;>P;:Xrw>%ĔJ1@䄩y}̀ȱU ig|mS:_8V$$]+n?@>T$y#Y3 WEgc&%h_~RA-@2k"=/\O0 &u$wAЎM+W 2g*MzJyز^Yࠚ@X|bGU|Xa]$5X"%H@& 7:N!j. R$v[0kte /*f&\J XcN\mcOlJ,@$25яg]9&Nd%iMv"h==m@lgхc"Bw]޽zꏩ:|ܟP+Om` 4J=NuĆvow/ރ='BC^u( wCay3ҬV팭a5rC^a=sC*Z0I8ˡqY7A|(Z.B+_kkj"8V(^û5^E֣~z\Ii C iR\z[IlA\Js%HrcE}c;;\n/I~}فui%fLŵ,? 1\4U5IcCnh%NohtLёLY~q{Rք̀{wzȏx\4;e&pЪ6 A3Х$\{O,dN Ҥg{e/Bf:CC$N_5۶"CVSjS7\nl`6l-:쏌 e|7Y>7n)氿y +C8{'<prv7i`p˃K94FA2*ro4$UH9"Wdi;Dͷ|l7$}R:OٔsPyaIq }ǙGFZ̩^=xJN9= p79dz6Հy3K\<#YvcYu,tfDvd1w7C'wlV<Ӆ ku |V30RGzMCb./GVmQ{!_RpG P6Փ*M*>b`+2~0KG$sJ"z$jIP #vᱢjDAґ\'vܒ<|{DSÇd?μ)| Qr'J ?hR%P7 ,QIX:f P҂s?' [0Vt۠guPc΋vâC -Cq |T9G7wG`WеlCTGW{eDE4(y!嫮QΒrv HtI0pSgfy_datk:7L [5jgN%-6/C c= S`^nPIN2+z1PFWnCêE}Cׯ}}NU@KmZTTH_YGETcZ9Njr4¿Rg9- NU oݖ`i#ǀz~WmT] ڞ[zcWa;+aQ^WeԭnЪr_d}[|$ (t-66?<#XX[ᮨDbY۟7;-+$Ѭ к*QtgBW7&1}7L'jUwFƽөDQ+?dLq)0a\eE2( T:P1Ygk,KU8n.13f=+-[XLDOSۖW߮w0V~imlB9x`6W1Bh0 } j0Z*,4azE}45C d6R^oQOzz\5ղ5 ` sehBrީ0]Q ?k5fTfR;\.[5*pW& $!_B2#`֥ 1'\7s|{ 9|52K-R,QGboP) pRmCwHx*o [+/?z,R_]rz9g KkBF mRaaߘ$XC 1.bs9A6~1"6˺XgfɀE ["ψ)Vd=̮aVjpfw":*e\A7B {_|O%-ky-w$ډ6x'?y.Cj~%c Z{$VB36M9|:BE>9 ]&峗;u  s48Gi&#ڬfy}iK}$xOUDRIlUx+aDgaטY!G@A8fG~T;]|}Hsy3 oI.O`6ɪ㠾hlW]kxd=qg pf&UvsVeG0wԄ܂K?9*"Ӽ oq A!cMk܈l^k\ m8u4#1s= C-b}1Sttbu= <}!γ{TBMEjniM+c\SmdH1+ȒvkXU\lߏk _L%]mTdy~f(O߆PXE=DMŜ5@ǁF?mD097c-:K}.0?Y 5%ƢTJ#4W5gP/n{߸!deV+-aa RfBq-[Bd= sw./ Rw:A8 $G;b޻P\]5ī M~o;\$3.%{304z~u$7]H>qu]ᐻޡSu4hN. Nhves B Wq-˕+kǣܾ"K<o¦w?VYk?>2lct4-4ϲx(/(zކAm׵w"[IbZѿhWo<FUmsLj_Ykʠc׷}zOݫgISEF34˵fp_IqN/oGy2CQiG|e_O29`" |τ V I5XeKW0Ay{V,t'ՇiVz*J" :]쪍i !FS^4r~2b'C' ۫Tފڃ4#1d&"$u}1Y FuUdey10ܔ:"hW(n[bJF/H׏vѓ2#4^~3U.D]C_ϦHSw,5+a.7zut DSuٍ>ߓs-U0Tі98JcN5eV${ Qg"77ϐfbY}]ciq:m.amc&m qIy8:b(N|?4dq}1Ը=j`N;`K/!7č Z[QLC :;nZH)OTHV><,B/* ѫR-.'OQi}TUuWR})l$9N#i "eZE5@( /O՗vJy Goj tsvwrh!Uڳutz]Ko/,,1Cn {CK*ۤ' ll. 7E-XvĿ ->B!t~G1A1&mu*ȚQ("N|\H/걢DgbŻl/5:&|dynsj',,;KrNO%H@n])"nRR%?v 40\%,NY6> EmKb58V H6,=腜&|%<mަ9 BiJh[^83%ƕe ݉7W>~e̘w(嵣ck`(|U_V=9Ӯ7l> stream xlc(]-Xm۶m۶eۮ[m۶mu~1gc8kdd&))#-#,#3)) ##) 1心j6&Nj6nىS#ejPW#Yܒb[8i>0C:/gJYQcEp? $ZNl,s-β9D~)$`%e>1[i#%l@ԯQLZEA ܤB Fd&䅊SrTQ |`hc^r< >2Qşjxdp$|펰--s.6ZJMG~Xx, n&X`v_pE8xs0(c2l48PH-KoSlSTIK#*A02slj~)TfhLw+?ޜ"`FfCb&` H\|9pk9$e1Qc5B;A<KC`fU=EH,j%5̰@3HI٨"+Ϊ,11/ pbE;՛&4hޗ'f<Ib}jƼB?bL&\a_}B^R?jAO޺Ī3IY$=W?6# 1Jy}3G%"hi"a 3rnN:XI~ 5H^(QsGX* Vpӟ{%a ^-)㋰|P7>B%XS^O0$ W$ N[{`*;.)-1mp?v4] (Q=B}+p}n:CXA+E9l>xq4;p== `Ugw-μkx г _"lSez=AGoX#-8:hVupgM+"أ6S?8i))tEVnn䟔@Q! 3FE0\YHC$kF?Q6[cЌzw܁1CQ(J&ӓ #f'tx$FPԛ99mI- >;,Ad`b)ڳ ghmVWZ/]K<F9؊^51iq R=ݬ@5reEH^ bE88DgD+(- T4ЬbxX+`9Zs /=B՟`'Y;-*H4)tگLAlbYk{ YU7%s;nqu>??g^?@@!X} x}V\ o,j\\!X wV־p:[%kx*o %16b*mN׀RZ9i=B_IBf}hdbONui9[kU{bB &z 3ٹyڃCaq[BY҇01oqIkE*1Yu`crHI4{e胼q utG\^jN:%)%\EDrA24TY0(זe*гV6xS̍qm˺EuWvɡ_1; ik^*=yZȰBq| 1T]!ǟVt752}!OPt?]澰8r`Q^u_"/Pxs@8UAq%NSEg|_lG[{ƼzjPHHga+ yiy^uSl<ٶء'<=u nPk/[VoԱ D$Y!uL78>s44B C#Ug[z.CRwv1e7c%dIyL4^?j$WhēM8 h k>pm*lz6sT`u~9 ;N՗TO F<80w;zmua "!k~]q|hVqUBtE P_pߐC ljcp涮۳|4B' @5{TtBΆmqJrz% },Uklc?2?:Ȥi_z̍̚!ϝ7r_E|ρxn=J^l?y2T#Myo.WZ(C !2avbCO'-#Nd8NÚY[%忟'h  +ɉ("%~Y3`PΟ7`;Gvp)a&6%aΦXR+E7/T4Bmm$_fF>篖_"ggP,[bȈJ&yU wNחq3 8H%$  ݮvJ1 N.UJh5TOOԨB<%QVaQUJSCm%+pȆ DÿAhRŰ{v=%o?-(QhM`!Y@ʵߦ6ЖmDeֲ ~"3H :u01Eܭ*}dмМXHsU;+O}ՙ|@AWBIDxܽy1Q!J"dRxgy)]3M8^-ZۣK԰ܻ鷙Yʙ׊KȔn}MDµF᥍A͆*rUcMg-hQlРަkX[WIщ*R`0W߈6*23=yUW\pF{kU5gTmr"𥨝r)[Mk \ 3RO@VxhE2ۀiwv[FG*NoUlRωQ v](nix%V\*J7|E[aY≶FlG >/^S8amQ;L BGb+ܲ֞aף鏑>c'Y+kQ?rc?_5;D2}9r}h*N}&#?_ϿiBf;0s0t9mx}A`Qi.Y8]o( 4gPf #y75Ex=vn1%Oy.hFCfX%#bF=L#8VҀ#5_7vTFZH:N1` z{t<|8Grb -g,*B-jȂo=eօn"mWEnC[wUƔ0]&2<2ĈxI҃F5@LipYV`X?$ 5Lp+5E[3^%&pH·"H۶ظhҵ̒1[ ."fΉ7&2]MIjRϻl%m!F(&~0e&<=K>Yg"@,[>"XP W\$QܪbXwn⒒pW6c3Tsiw9sogo uOeΥ(|7KYr!]#&]WX?ɞZ(4tđ%uP4yiW8R%RZiE\.پEݗ4;v8Ъzw=ECvWa3\KoSpfzRSϭF_c0PNq6s ]<_Ьs E5V-헴Af e i :#\b+7cZ\΄4ЀtVO. bL ֫D|G3z>Rj] oIePOMyl4`X}QN>S-6G=ރ&K h2D*فBa^ O>R9ѳo :@B']P8s1ߘ!f6I>$^qc?3W%`,d+U 'Ҥn`Q6w.Ay;CyR_49#cpcR-'Rpr Z;PG},=aILu kU3Wrly<5^Xq;UlN]`-+pW@O%Kj1&uJ6 , w?%ۨznfQ/i]4dBiż5r׋/d-?WmyeV J&ϱ==x ) p"lZ\2vIr=~ W/q뎟HnwPUiב Ly55<(bj붓vHk窦d ZisΠܯ\[^T%eEQm;ѫG]4^q-tLNJ?nɨ0p`%z1FמxSUdEKgXD 9Z= ? @:pl6{Yzb>wEx\-Vg&][h-"g jPH: c'3Xt-/AJja>F%jIj,/++m F4>XY>JvvZ^Drִq 绻0!wV3fXy>V65KL^w^0y)|f oLoe,xM]bv^^`1cPj'Ƭњѓ:&_ $i- ]bM!R *k}+":Eɗ+100_GB`hެ*EPbH|g ͝VGizs@QUęh1O $v&dd!V]#rи[H=¹QݛMKAc>#9 yLC6TF>Y7Ef}P+7Ϟ.R!T`IDz3*-nbw{M=T~zS,oiٙS|q+Gm&" KafJtQX#qXQt7Sc8r ?lZ 3[_  {}ThHxQ5ٜ4+ \D,+Yk&RZQ5!"rk8KMeضX[ŝjTi:01NZW$|!mxo樅fVa}e4g6Di>1Be{Q~kICxc6܉ : L]* s1TJ]x-Q{ |lE,R/FT@7aZ^(D0t%1<ٹ?ʼnk8 4v@C|e#$22(6j^kckf@UHHyhSw8pa'&Vqܝ[k)=Db|RGWH@I <Ӊ3*t^E. 髒>7Baa*Pv!5$k(r.3mI,hnb֜hvѢ?bueZkev XNoWKm\4P>U7c5>'aH^2f}%%Cr@2O2FGkֳ1ߔ"o.4]{:ΌKr0|wQ!qI:4m%DE! <% 2Ċ a6;!Cwq,_*eŖ= cE˹hY_G SSZzP۹tdI![XO**K]M*E ٙm[>'qR) $gol).ݐ()S4@*V%aؘ)({naamR-Sb*3In4] ؞Lڸv#F#BCjAƒo&^%/r(?CQk!}렖^ .F#˞P8Y׊镽XQ  MZkXsiP)ULJ{gءyJQ2u}SLEWS',)sn/Nfǩ_qu^j^X,\Y4@C>  V<-(HH\[lU=*Ze^3rՈnJU'͗SMG^Dž7kTp[KkY"G'"_6YxK(3b9~Nf&0JB3LcT"#+i*#􁬥mάL$%'7R]H}3 3 uam|et@ˠ\MaO1B00|U'/bjܒCͱK^u*_ H<>rǑ&rI?(:D6u|R*k6KA+2'}{i2!n>!Á, sݥY,r)I$E]\xAW簏2n]>5ٚ vObLZ 3<wR9a(WX{B>rRq!BWYHC zŷUTwLܦ+"]*ǵ&ZF؈F)>Q=R5Q`oE7]J'POs1/jk5I1,o|Ґa-N TF;r0'`6jaׁi3rȲ3gzC5׮H ;k.ԍ4vg|a *X7/+Bߐjm_*aAjNK}rvHq4a6 3c+obU-~j!w}}qplv:O):,Njl]kj Q22Ut^F2ˇ+*ځ j^5f>%;H%dـX>br ݯy}5uyu]P/rv20 ғըi5:S0~sKUƶ|RyF8 j[[K2b:ɰģ* $ZTbxE3w|',-;' dG~L_+Hk ⥱Enݗ};<ϊ^tU7bL8xXw|x@-$ e#\^I;D34T벣*?2M6GaW'¡lP7q#G^G j0QXtw[*CJ3 Ÿs(_b T-O;>Β }9JNۘJS;֟ӛ ^1J3,Un1ig.MÛ5_R3 3b-Rf+M,)"ѥ:,,oE/?rOڞ݊6%xvT5!z.҃ +h $=1^=Wlf]k3ݸEZu?@0|@1ؔ #NmuݰgI;򅘹8|/V#fa Oyԙɿku-pHVX> P *c.dA ܴ FQnN Usl حCݍZ†,8HUy,)µDCf{!_y-i6MkW$="(>nq޵eZ3vg(rA;!8٭Z] j 3( (֥!+(K$dY$8ht$%PKv ƌcl":k25{i ҡvB^n#n}Drj 3>CN aP-gJfP{xg%!~`x57&ʀm),J;]eGS{ iv6}mEgƋZcgx!]Yb97 :{9E a6jĚ$.˵H[ȇ%u, Uڳ7 ogҶK7 C8@em@t>)He~wc!_ڋk| 1}ڻ"'B[K,?Eh"*j615V;(F6C}_.Ѫ X'3Ʀ-}BۥgVʘݑă.ʑ0X("i7ʍ\j`ăyug . L0|۵BV~ Hi?4 ї]o;Sd^ L T*04lCK|cp< T|{]]2$ގdn;zĞ}s ^IDY4b0ī)enw&Yn ,߉!g*C=y&{Bv"GfpԔv0(]HUb$z+FUa݇cHfg) 5dK?i,|\D=2Ĉ4);\ό=*pCTa@>~2t3p\Aނ|qE6 QUShfަ1A|vk~IyIn$^I\ F5^hc`f,IP۞?2IF!(megIkz븡sK %T9_ab:FZb=] o <B,Y NEzŨ R-f~ kLXpp ;r tƏo];amo(=lss jUwS}yfwzXm5=mM>@Qi"f_3 ,9Mp[10cY1Z8 >,Uޫ!ҔQtS{ 4LSrV9OXE,k[9LȨ 37) R}$[&RRS%Gd(D<+wFfl iE=t -.J7BbZ%'[PM.Ԕ|II N& 'Wo q'mA5cWu#)tj{$+hL)3,c t Ԏ.*u̘TS/Kq69>M$EY-Q,EfA6IRp#5(4Fі% c#E65Qmj'>G_(I \=!|[h.[\O1qyyى5%-} rn4U&#<.݉O~U4l}/F W;pBaOYG+@t  ĩj>ATCK6i;W]U&Z 36OD@sFg}&o(-@Oov#j/<[rÂ˫83#@jL&WMtx;\уfۿbdWߡNI~¥w.~)L+py 3xr~4yZuW5Y?$1P:sHw:'JhP0M6C|G ؕ%ZX39u;rn(bbEP?5 An`$.OA,gh?ySnf`EV":=*$yuA3@nMfնq _LzY9ܯ&лzBJS8b 5~m|ǥظ>Swd؀یq: p7i7ۜ pGNP3m6fBFFox9g^v,M~maTot8~ Ś i熕)O]ГhYŔѱyך E@6ιi 69!Ógh-T|f2[9Hځ dR/TY՝%g kΙDފx[8@.wVYLNV@vd)$P^rd^*g55(]' }}mMѢXMaa[-7$;!N5['u YyU.(ʂm4m";I48 I%T5i~wafY+Sp={lkA]Vy3\󞑞QlW]}q!546Ɍ4 gqj _fQ K(Od"@l(' =en"G*/?2(Azp&+G]Q3[>C8<W. bEIkɶˡ$T# 4r&4'8+{?7E{]sBZj,c APK 6.vWwQ]u;ܷKSNt3!V c V|L*lᣑ dHAklK3~:MCնI}&i ^x0_ô?uw%oBND۵JyaEITÅ`wW Os bh\O6>xBDZXaӚ^ڠJ ۩eDvocRp09C,Askw,rP(xB_y @ǧRu|6X®q _sUUk">DG2"j1д ?h&n3_!43W2]prs{oo%ul_ DY/ A#h3췥 9kxI$PQ5tj k )Pb~妪}VӒ>Z[ h'{u- e&AmW=.2\!Ә,r E3@;X<gxR[ VIz똛V0XOQd\|+ƺی%yզIGV[~tg.1eMs,Jq;Ȝ Z9Vˎm9?+VYQёMnt=vZ W =mvzjf)Wz=O!L/+|{MmӮ/ո(v4_a"C/ب 2l|A{Aoo!ȱ? =tgb5䦈,ӧ),)o=NSa_&ﻛw >1imfjR.`,H)f%ְJ Maf44h;e:~Uf&~X>;qYed4> o".25-O G#.s' +s+T{HJ}[M{ LF03 ao.M$2vgcN~5`vx^%W4H;$'&ǏO"!H&*jEQ`t/Z[i##U Z!)1|b#+ ײPܐ"zAdń6CSy[NbL:n}5G..jR5^VjOql5> &+nSqX "[9~-1`r+G {:&36v\iH*_EU /-M:.̢Poݠ1ZeVW ]\_z $fؓ{4^N0;Ž-υ?RC$G2g|9_kH"ԁmgȁs p(PJg[Re*?#~ ͡o%W/U9"n+e,ttԑMl9 ߼oȷ#<[8V Nu8:3+R90OZclka=PϪpp̣ Ejlܚ YKXKLahG1)O2ӵi{ F,C} #娇b'^ _ET*&{wZg^ꈨe/AS7v/ k^pL@<;O<,_h:Iirl'1 ㊀I|~Z3YT7@C^ӗQAکI^|s.gn#@PJ'hz'21b1d@ E;fG2S:2%;тz]ͽđf" oBXZzh ϫ7!ތЗbSvu8Q ֠( IGeVk o3a3~ff~ wͥ4d Eiqe\)[I,'l/+&'*0XU.=xHd|̏K?`kUd^pX#5)9+xloU =%x'gU5` -fi%)Y ]{'9RFnJ9"C٬_Xy7cHub'0Q~_1.9؊>v@\9 x \U8".sFA,.:*b]z>fڅk!9 W駽UUu0tr,kSO)]`IqQM~W3ɫ2AoJLaM&܂;+ 12]]U1=EFO,^,&Nj8RChׯg9h OB.!RHFp=kw8܅ĥDUdfm^nDg,QdAEkv8eLE6 (괱Nx^ .ݣ̋nأ!+ފ4JЦA:y=XΩD헄T,[,UGA+d֑nT_kQ z`5HB("JTtܪwK@tFϴK Da@ 9;qɖ [ɈL8EY,V-OYAW\&{Pdcm4I`m1/QȈ6܀'{3`2F|.L촧8 NJ<SM [5x oHMaMB9MN{ʲt2_)ᆬH$R -VTuO JAqQ.-e93-kaXX&&w)bUG-}6-+ YO |>['LЦ0,'ti-Qǒ@ uEFenƜ^I?M':ѝ\CT! '}@#Yxo ]j,Q 8){O;˾d⻦I':ԯXxhNnx*ܱDw>f ^5{>i>E$ } Oq>|}nΫ^&PFj޵&q XWXoVsDtW 510;7Rd)_qg1}w_782Dz3]bF$#\[F w!b,( (rto^`R_}بBȃmj\UE7yJ@`$rd}0_}f@BTʤ֖P%8Etؤmѷ[?ܳDņ/3z_ az&B q_u7ӥC*"2:0&kg"BjP2k?{R;D3eÞ ")*Uz & 0s^[fUI eQaHmO[B貞١ԁ0Tbn ,Ee!h>7T؜G%b(b*kя` (+mRVv[K žY5 uo - Q$۹mJ:gC%'x=0{,8>=2-GS):/rh /]gL5aڷw+ɱlBϺL#E-J\eqa.FC;DCZxAtN7R6 b{^k& F=8@B(A6.RҹRP| O [rhY{MrF/]ang70'ua=j/jNŒ'[7/(}]ꌟ^cL^/!Bra$ZtP#;-F@A9z̅IםHxwm9X37r33G˰ݞagcs@o; r:m.i3N{ <?$Ψ*bi]mÀQaR.3.F=^4#By&D7\'z0/vVn>_]2$ߎYܺtƾ[|cb2 4:F)qHH~??HߚݩRc5(o'Fb *vJUTKn,Y@y>eLkX(Xb j%ܒ ,%MmNm6EA`]LO[kHI>M*=^G#_:f?Gf}#5|ϣxz]j~t R?cѢ-F/RxяFrme@ $AzsyL[`mF] oLN2 B *p1= gT#Nq:IZ6Mi:<^|Z~R-}$Ee-hdfElbͻƕQ INU3ڬuR},hx dEՆ8[Nao=2'Cނ.FgЂ0H6?[+TibYؑUUDXDS,X#@*am ?yX ib ;X?e#㷗Ieu/|Ss_PPWG_[26d?]P{ua Þ}Z)(| %ՍnngBF1[qIZ䭲2ݲsxfkY.KN }AT&q0^TMxN$,@w/[F:BZ1F#;T|W35ZK5/D ow`rWGZz͒P=>&llAhR=Aq]֊5T=Xj(ZU8Aj-1mOSUai+ύ )J!HH ,B\f6o'%JfgF:ɨJR0 \41|;GÅ5ߑʱQ!ȹsXRV wg *o"0A8r`c37wƠ xv%0x;zTT߯OT.•Ab_&yܕzfjK@-[j0)Ķ ] OveB # բl!Aφ*i,@*tot%f%0TN@\g}+Kz޻FJ>҉!5¬lƜެZߟDQqlIiS5]٨%Ho&;Ȑɑ{vMh)m0kϥu#ka(˵^6` f=X٭@mWvO +{sP~pиM6؜J $} SMBsﮕcFѬV?Z[cA5Pn9)Xm^A`6H>}wPy4ݻKyD_۰mb@YW-'M.7!̀t|Ra}T(?6³6eK]ofVyϐI<ܿ?c( FC ˇ<Ih'D؟IPO瑑  P>?V1_->9Xl>x>w5ҥ>"as+{00%Yg[1.ḴGtꜘʘr@_|S $}r;~S/%HG="w عoғ*,Zkw%e47sVO|\D.e(/>>f,N:, 0c.n澡([}Ũx *@&v6Ho;b\嬾 bn׏b=r 3@\1爅L}{66U\-hxc-hsY6 Eܼ] 4Aސ1*}j,ĂIO\Q te \` X΋=I!pE1#BBno~YfgɢS/"TfYq7/  h](W6H1fR;D0PߥWw [,YyDq0%k53>ѩ4k_xW|/b >9%f'-нsRdpC`*BV<Ԓץ!Ôepm2WkϮN؊ q<`X6Pa>04Kސ)~PTw)jGR|[9(1`etط)5ێ8bbiQz9W^sI7{UX*68vxa gR(*a`؆푥 hd6aTU3 bxgNDcU+ 8VǚwA 9VX Pc[l endstream endobj 62 0 obj << /Length1 721 /Length2 11982 /Length3 0 /Length 12559 /Filter /FlateDecode >> stream xmxpeݶul9:v:}ÎmFض}zU]csYkUm*2I{93;++Jh7v147;!lT1{O' ֔ @ hthڻMnnn_ݜ]\\@[s7%mE):@ddl Pr5䁦 gs:d'g̝\p(HH~STHAfy /Nv_fED\LQa[>JT*%}m5P~33FֱT]-ʨm+ne$EOdP6c\pi" c Ъ< To{Z֮Ь,H{_mMxJ&xGlȑɨ処su'DL#E{,\`,}>ڈL¥y0lr+ۈtu+F-1FDڰjJ%Af-SdAD 29 w[60_ ''OjUbפB'bilm \MqyCzMGFʷ\?!WĈ_3NM?q{?Ĭ$Yʫ\~}~$[ת#$/1F}B ߽@7@e.$ BY=ڊo\gY4)Cfۃk:gr84fa%ʱClX3SwAP,܂+wwGԻ6ׂ/Ȕ:h KJa>!\WnMߊ*?doO3M> ȋX@jO3i iwr̙ 4OiPjo:iy)IFin{)_F4 "2SO] Ju@ݮv\xguܼh{LtUy"ípM^,e7maL>"1xD,|Mk* S6Pn Ԇꞵ>O23@@S+aw=lfw4$yK"ջ źŴSٻ֦W ۀA٘^ LOYb(!1Ռv9s whzq«ՉX#A؟j+bcN%."]֏U"wu8e![rr rq~eD~6~Y{aaYW96 3]+G`&z)0z[H AQsPN/ ESu &EU< VhIMxmMcycVlͦfhˑfb̺LU0j6Gj;!l*qjjaaLSL(I[g,3R(3򕠓O}Gw&0xdJ8/YY )PwTӲtZ1Ԓ"XJ? @z=8s8i(9RQ!)b2qmװA{8ǰ#t\m^"VhEF`78{^Qm6L–؁čc(gey6V BݯIgGch^ܰ)9359 *} \@+e _|֒%էW,՗=&qF 5pa &#_~op!W^ۘq"C4 -Y}*G'2#WJQrPUMlS4;Gc~HuĊ3͸*řʹ, XauZ 3 a( 0S_= y&` c6xawD&~=1̞EŁ`k>!6cskUP Gm՜[QqdV&O"4c?~_yOH36,s@UHs^tGǽ,#v4SzU,HֺU|,○t4M2uQcS΋\kqD~bJ $I~Ar'JbM D8Q1/eg ΄..ϟՉ`ֆ_"04ux̡6 :j~K}sZ[rma12 J߀+ʓҕ S|y=՞so.=..&j #X i)S׌8آ!˜Ӗ1u$|ӣ5} ^Ѐ,ow+`[Gmj"KjmRIt Ha.wsv&/8JI N63ٜƙz1w%›8 ;~2eUU;US 0dTP^zsCM`PיNS+v ficbFu2oX%E{k%i#m^dk7)KPH>A )v -LhMr,kZx:E#~G6uMd`Brϟd# @lVK<3LчI_Iqe\[,}FelǮrm\N=:I@܉.A2N׏AF]P7(g,^)mvM')6[ηqWUr;8ݣVU| xt{+pL xKuvR?b(qf%5_{ƨK8DqG9֮]Q*,Bk s-&W<ЩGtf(yg6P`(͈kZ4]e5Küp?*F)쮭6cް$tۧtQKIO#WI؜}6EInd֮huԑ*`-\F}`oXumێ.SD'PF\)$5KSBe%>1?o0P,#5'϶ ٭[ƪI}7(=@Q;p2CZP9M/bo(#O{Ɣ歵hgʒ@Iu^B\C,yC=fYj[kvugȮO.  ?!q)F*!8t#!"ER`AbYҧU0z^2}9:dre'=zkWk wUSgֈ]E;+\F UI}QA]5"+4b]^F_lRrT4+٬1q$m4-X>.Dr:tpJ> b[{VhEU NrYbY[N~j4XaM^59ܴUbȧۗ3!l 巌r9G;Ҫ1MmcV.q@ǘz!fM&$PQ;h=]HfIjvxm1>]Ȋ-( hL~HUe^55WE]uQ*o5WkR#*+F-¾쏄~UU&w.C3x# w_X bϲϺNa5D+'`;-ZU ZJK.5J6آw$*&qob^ziz$M܁?ď!Sxk2XJ?<_EnFh~*]137i;JY<;z;.&:Y5`LPk8pߏ󞱺ŒЭd:He::YJIt(\Y &TUϒ,Z}UF*AH̘Xħs<**[ƺnYGB\ԟ", 87Cׄaxל2ܮP: r-яCY^w:g;0h*"Ƕ:R,RI0Y 6ȷi9tyCڛ]~'_~y1S'[U[ Jsd.ةq[ +i|.Wz'3LD>TIvr~CpWTϖVCnME:}͇nSqkO[GgH!kr_| 4 D׸aG~(YD]p|g:%J̄w7ip~p~tjT H}&\۝]'!; ۢ#Y^-ǏE%Ot ,'t8e#'_!tpXqΠ r0YhD)2[GDTna=+{{@ ]5k/!UBu\ttLQ~җx]TH[K)BNIm˼4Ѥ4e j G]fy'nn \ê<m;afo:^^ky<0GRvWh ZwsO}kB3MS L5m~1kQw 65Eo :\kAHm0}hd 4qK:W! 5f0B=Yc),nntl?A _4Jg1`Z{j[|kۻGGV=Lb|L1nHpn29%M&QZ`+@x(Ѵg鸾E笲@=]} 1B二@eCacQT4;k@dil5<]D׿60=CO\3x6tGoUo*wbo~{Õi*͵)y] H$%n8'Hc@07$BДFKZyw315D|ИjW$n&}>jW5JeQ6]M,[;,K]Xd#‡@qؓ+@ar3n6 K:kWЏQ@/,ґ+U z,ξ⨺Wmw\ 9 U7:t@z* AȀy>êe^DVOJگuoE;7(.`cvb0OϨL/7#(h̚EZToAh8ic8d*Jpky8ՀƬ6kO膾k31N\|}/hq%k-傝[rҐm(FQW`5!tJW::[X`] Z tXȣ'mm~(V]|Go~0eߐBw=`tsS|L I>/9q;6 P7[^[(Qr Ӷa͞xxhVD:d0:OQāqP*Iݻ*/Ey \2jާcq`bQ? H/#=]#JuݳR%n}6 c҂xc[g?a5TONЗ e}c̚+vR[~fbL@xDb*8 h~S{0)SJU%u?bfؓ'S >' SF8#"b)}BE.Q:*`fNKd?#dIG#6¡= ﺙyyMŵ(Hw@ ޞ a wTRTV#/p@BAM5$ҝ)oڜa찒_f굽)g)ų kQo- 9=omw~5eėVڎ 9).$@\y|`'mB-9% ?@᠆d+=K?ep)h^dbRp{X|5dje}T_Tϟ#UئІn<.[o1 6׃# N)Z >N^:*o p#{ϸc%և՟3HCPn^>ֺ#2 ſ.C~؏MoxV;sa3 M-UnE nG{4I-\`&*hϱW)<(xJSP'0 .xIfPn90b\jI`ifhާc7Jѭ+m,?EcS =$ڦ1=isw,B,UW3(5m렣+˗z ^qMMYݥՠ0@ERXʃ< +2QBV(utKG+;V"1 mCCuwge_/xBeܠa-MЗ ֈNaLj$"0)n0tuiqHE,w>8f~QlԐBxn gg$ݤj8nkay,2q:V8;ŏ6l3OrjCl>ګO-  ^ ./ ?\ٺ菂mHl B)Y|$|)?rR`nÕքa؄$$hCG,+'ա/z._G٩jRu *T;F*Lyl VV%P61#{2XC2\0*3[,#w"͡A)3Ip1MAC'C>C$̌@+ni_vGwKy^bz&+|\> =mh)^EKU 0ٖe*ꭘRi@@2ꌆ=KmǻM |:>ۆdL Ͱz*s_Iݘ3R7-}GoeF)ܒ!dͽ9!(44βl^̴1Y6k@Hi z(2[- E1e\3(zDciS.M>#X<;CԦCz M@gT;?/#]itS_^$H,ft0tChΙtTt9+cۿHU:F1< NڠgWkP;`S2|Z h5.t(,}VZ?3ZniSP"3$&&5֒9i@!Mj׽ =4RN(;sjsxɔ/[,ԕ.YFF;.Ъm A0%}O· 3:|g#6%Kg{S.'8W޾"Řz cj>E!q՟L{fHSN F2U&|6yiwX22iF4OvW3%/>|gK-9S;E_հ0+E";|b$qvIsY*(-;r%g# b8B' øc[Io5W0I=PC<^_M{GZ5[1L.uڬ%'Ր6᣹vg$T:0X޲JHg+!#^9k ڮaK( Srq$#g5,Gz8:\bHl91qjSfb+ rm'L2rGg Lyb I u E u<* ζWNI)Y|Mˋ-2Fpg͌ut4y(,d<TWV?ZR^IVazsqmY2sa%F4?UU#mK~]rHetiul`LV#D "F5aj$|ETu^EL8G̝}:/5X6_QO5N1_6B^ Xq8̝UMsYUЕH>nEqw)| a/$gxYIC/cjk3ά 4ŀR&rhJ"+՞c_׵$UbY#gÕ }0%o?9gBQ="Q۫F􀽥T|fhC #Ej {X~>F11o$upb*|S>a'*js꥾W1dE xEM' PA}tlpNҰ9S Qhx=Gu&QhRrHA6yO+/0wrL~T!  Ũ][;H% 1jRP~.qHə?X*͘`n9^^Rc{Oˈ4)0Gcp-b9L0a{x{~,Ьq?[1KLo]|vb`S]>(ߺpЯF `ˇ!\JT>Nf r]%ӏwARCܭ,?8am؆bko̡o"8'c#+svci>su}B=V͝/pA鄨Pqk$J\刭XΈ E"-nJusZ.k i&Y:đ \~%;MWK3rjցXƜ-KO q3 ~P1tSKЙ*wck-7XzDHc.>Aj1B>ZmEiTdd(i%9lHEa!¹b[ ÌI0.&`Zl םl.a 2fAٞ],Z]PS &`k I[$tBՓJ[zbC|Aud n ֟?Ό2jl-b,xӤ--l1jU]x!Pr锞BiI#XVJdɬ[_UlQS/Y"=u;+E='C:7Sc%ƽ q'ѪvYl憒! VoB."^lmb:( -qUQ-j˿&܍pH6y CRr%M6Do)-m.` 1 `ʧxPsa6Jێ")\/6赣YS ^Iv ֺЬ_YǃE@&Y>&9|?:J>XA5TmSdwQwn*4܁>0 )ds? PiW<PʸX!sPUdiNԶaޟ2 h=1)D^:^;eL{,o^1kY^u70 ,@_"bM2$Tq/&My}Z D8kFe b}QOm'!bEp?8OMb0>ZJW:fy1 'ik$08j*e |y-5{zSה!k0 e{F-]Z}=}zrpV٬!nƞE|=]K gN>.Th#=ud ɆO"nہPJxV_ɻcjhJbު1&cHyz#> stream xmxePݲ5 0fupw y=֭ӽzukwծzh(]4<,@";/ʉBC#X9K`3:Qh+ K)? @ rup29B\?mR.`- +$ VHc[)@l f;@NfV{700s@QRCTJYI )Φ!07(mwqB53忑#FB<̬L]&` +{&ko7l_Az0e*ہv.`@ 9elgeCrXEߋ"~Q3{[9Ȧ%,io`feoPw1?ecog+@<@_/sfap9x\G+w'g`)_BZ*$+ᙦ'4~C/NcY Z]i廣Nm^Pǁƣ)""z(]}R-xliڙ*tX8Ε{T+T&%mTa-~i^ vxôehᙉo sBCŠ@ǝp|^ у#v|A;jrvtHK_%Gk_wop{KKb ޓ-iU ˖# -q ^'nhFj! uff34V9&u)[g+|'c3SfF=\EYsĊrcRu c 8"F#}ouSC=tHHF:?4So! P>П?4}vb,Xkk;K?UgԱcRYtJ֔L< 2u$6FԌDhS0.u,Qdp.X @Orj-#0L7jz4y5MHt74>#E֩y!Rļ$ZH! RjJjY0)景bh#%mzJj6vd[6Y9i[і,Z*m?CND#a e% 99W_?+F{dihbU7B<5ΟBBU~S/__pVoU -1: %sK VallN_5i=C*zkD>8Ǧ.!DEWϋ҈=C`Q*j\Vc\ DwWG44.G*iMW+q=.P`>^/o??_T̘_PU=i64anF|efQLo"o zb)2ii ! 0SQ/wMusޔPdx[Y isbh%F{uuJ*YP֖$"E;SsWPj3"ΕM,eq^ZqӡJ4{AaI駴;m,Ro&\F}!=9L,IDo_Epm}Bè** üZGOO۪7 } ;V6s˕L=exƩA<L.,hOmO~a snv[;nU΍wSfQħX+P:`0IwP~q^b̅rɏyq+%\ 7Dmt./BHP͠ J+S-|2(;}"+],ō^KOƕ[hj`yk!i{4}Hl{?>cnvY?)$'H o$)"f9S=e  k 0^,>lNHc3Л_ώlUz2Sg WL;5A`Q8^1 (Ѡdg .9j'_=_애PnA 1?sTW7O%Nd@F-Cvİ n6Px嘶[Ȇp2'C] /8t[vحfH;c䅳׳؈-[@EF1yhG$y}n-$SL61KHϺyHX0” a3z?Z|Y+/t5^lPx+e5, =><ISK7#:=0~U-'6 0RqZD#V)hⶎU|D5 )X5XODD?x~nw,B4VW->_.̢\q~Oj"^P\džݿMvW5t'A~5xU  *5U䐩lĹlָbɠNd)ox|/W mUAz壟!'/eѩNV]L꩐A8잇,w}*Ax¥U 3-ցĺ%0NݔCo+kzT̀cI_P|Q: , pL;F=N779VDu°H}yoMƆe=BZ$sYBSR\F+W@_wp'eRGy'bqYV+\M,JS@FH&(A ^|4hyDJ%GYYAYiM^LQ$WsT̗Q+"g/xh#1e甧ϝy{ZVlbdM6Asg Om5ܖ|VDgC*zв5ׂ^n3y_)iZW٪l -a!V%i_'5qA\ #SS/e9ُˌG3"1̏ 4w7XP }%D%c"qAHbs g/kr#Twl 7!M68MH<^ Rͤ+<)x!+ tj7f  {H\\o`_a)}Ed[MylgxXqo1t>׶C[]}d S8}6YX> (gckƃf=ľ ?pk (۵fpӀhvhk(Ozݔ,MIlZQ1dro^ nP=;*oj/,/4|3~ϯ Tw%(Iwh~F= 0ƃי Dmo7tSPfA3ۄ3ί _*¤ۭh(ehmn6[V㿡9,(;^}d֠װȼ +,]c ~',ayzV@OC$[Ҕ\{]3~ g|Ю 3o x\@ K%hSO+ڵ|2dLa O H B[lM? f8%}u}V 6;DG&/Z& uC5!,%6zW\B2g>U|cC(g,=B5\q`͒hi 1T}Unv(hTAXv{$#?7MrzW a2{#лjU^"l0+*-پ@ks6 TZB%5s2htKRyZw}1BzQsba!GA͗wq$1zgJWjx86cuf-MӘq{\ Jz+.NlcC&]vRShHM`* O$! ψ.wu{\h..+|ܷKA),x./Mi鄋ltY1= !mbKsgx9ӹ&+Qq֤~n$ ٹހKn`. t&I+3.MQ3s.apx֍e6 ,#4i(7R*Z'h'ܞQ(Q/`Uk,gfdE&V+kV^F@7.+GjT*ӏG[5HȞ\C^+ׇI鎨wG)y^f!Șȁ^_{{Ûȕm"+".sJ`^qJ+NI{c_V\N<.hx?rB+ `.Je09afk(fUșZvሞބ,xIMe}v)5ے@#I>:x'p}Gvo;NJ=&;Fp]A% :+Õά]2H@hzStsUÒGܮB̝p["=\Y{SP D(pY]Xoϟ-80:|\J^F| N棜 AE8"ӨAI/MxBl0p]^u]Rc.9Y@ǭ5ֆ8k3 Ճ*GC):2ÔWm ~́}ED&^pz@r҆v٣ҳ)Z$Y^d<aɼU,' c Qv"𠒘Ny 42~Qޚ/e&:nǵn'i4Aw՟\a 13gƭ#b8m_o15i=1 gx' osU}>vψq[.)Oms^Z \ &R\)cyh;.+vw u\%ڛPVfE;›3vas(YqwTwbXb\k5<M)kSaś8~x[P#Lmz|vڝs0$z* ޟ(8kn2"CfJK(JHDMT˔e:i6*s{}^fTMBծ`v2WqgNƑ%Aƿ?'ͳ PgZٚvJۃ`s?[\cO:iA:X[w=*+bݚp*#EE/TE?Op{IG;Y?ءmjIbB:"ΰ]U^Z|ip;+4{N{?tݯ&E)dwFUNB.<$ =sor|; K4a&0g GWw-eI,";@+G/:޹:`@*+!ZuooS] Rl| [A}2(,O 5qa|j}/rSZJ9ߴmgF.,*6;/QLL96ZM{C8N[4;~x;aVCS>'>p+Xs) zG51؄WBQljf Oq=,\6:D|wIDzxy&U `Q',I|p[/b1m}mDqE.Uv97LDhIt{l,6m>6l8tQLc"ضCcz8BH0GW5/(Zh̆x_> "~f5A o@i:UTQKy6VN["ߠUÿЈ]BL-NUR+))cT9KƇR5'kŅ9 >f"OL[9&Bvo:\ZHjB)ް#VBtvz׊:bOцJgH͢ʒN$w7:A D߶8N{ ު:,1C[ٸPj6Y<.%G^JpFbX)'&K>QYxȠ2͍qî͠x݋|h pɱ=W=!Tl9tZ5y`>x"̼hsnXCuYH q"|sao#bV%(Jmzc%huO)PΡGx(lf˅תԢvD`;CD:7k> stream xlpfݲ?Ll[Ol۶m5m۶51&m;{9{ovծ굻kWXELPPUcfbb01’:]Ō]<M@`f011ÒD=,,]T4lͬ쬜nV>777!7gW'WT@%`ne **iK+H$@{-@ ge wRafVəػ\q /&,eTۛ1wqg4_\5_:ybefYLVMqT`H 03Vustu:̀Nad/?!b(HL]\kN@3+WLV}MFyy9 uMM̬-.`kdM<.NV]& ӿo7=33+5uurڻ{'4][v0 NkU'^4[ A;;mN Fj ^ 7`&ЄrG8<9MZBZiW\np cg~q璱D3Ŗ{^+E9ڨsy;~u^Z5S O[RAMScaw㻯)aA e3&쐑;Sc ʢ<ܘg8/7u,^u<mUamb Pro(##xBٌu &/S8YA.g3]Ҁ>ݺY a UЪyNDw+>,v 0>ـ$d/x_3ϣ~diz zBcxﱒ=$E W-֞ tƞt4|S.W Φ^8nda1ᡫTcHGyѱ!*ӲN|KdH]"Y,9/MyqfG 6yB//)lf>]N@Mbto5}ra*(΢vח&ڕ :)WmgBƐɃǡi[Ko> %SoW!x4"[LՄ1qxC~h@ ]p~\,zZՈx3pvUrR3!$ guf)**tAʻdk\4f/DbKтFgY#ӄKµf:%?}+ 86Ȗ7*̋B+MY6[9RpS6=D!CO_m9Pi9U)"fDRcl_tiBIyXBmM;mRfXkQXWk~ֺKpٷ@ᚓ)á104}Ïa! nXb1d='(ٛF2(Y05åX|r9j Y1.6ͬ`d$O6"` !%/\DhwD6F;|]^m5j2jn0C3{"KLl8 S~=go{$J=vH=W5]x[Dj "`D7EqXd{/ibZ t_U*ȸ-.^2\4S5/s(%ClM'.0GaI7xk% ł6̶Phd+GgiD~;5-Z.D6CC>\U5hFC +?"JdHO-}N/&+LV3 DP cccIW'FhwE+|"Q,_ٛ!`x0}07t m]-JLś|_)O~ y3R1vhڏnvBf9*9shϡiy/KOJm@Ӳkbk7D<8P_W3R'*6ad<̐v%lީ"&H#sFt򼵱)X /;':v˝V|٭8-: W %R\F8_kP{:41h$&Gl̕E`. ~rG$(Mp͏MicO]|'wGfD8'r*tA/b[rw׃2@=8T^EKߒp(4ܟ鯊=K ~>=sI߻:6k7^DxXj?鎫++ʽ7Udk\:ɩwTϊZ6~2SdGk",e& 58ābicyΚ9jJ޸S.QRC[=dol$JN*dz_}2pEnL~emUaՃ#+6rxpbs.O+X=rE1*<#?0od7.(u5 UwѴucxwMݮ2O tRGgWg GZߣcf񔼖eL_۞91[arkXo>u=о\gAXYM$HC9( YD@XYf&݁>Ɣ5t 'x0 zDbaOΗ}4=U1B'pWQZlK0uk=w>Gř_ь\TtC21ǼWn%c[Jp99L~˷v5Ul6-d8NaIyB/GnAnK(п4q8fۥ}ZhioYӊ*{ ǻrPD>=ouYE²Z>E@5pior}=qz| umUi P=C} ϳ:,˴_>Z |ƪz6ӀU xMa`^|߂LU~68tnikJcS3B8ۺp[#ƅ#^tșR9t^SPX[!!Ɖ徧gÎӰغ|"\"D`CSG,J,tӴ'k rkTAoY sR1ZeywV1j^ gĀFbkRpkTUE͵ +G_pj!YR"l~z5Wg;D.%ƀ|b_$)o !rM9r.o5DoOdc4y8/Z(N1,Ԩ%cXÓRl/4鶪*ӗW=[ۃF(î¾ʶ/A15F7}dnl oOd3I&^vآ]1efu/ur"V0e'Iu>Qy+o!;=ʬV-1# o泧D'\&x7nV VF}e*P(v7RP樛P*[w=liee8\0C7q#4, TYP?,XtMSg~{IAJ$# )ZrF|L\ޱ^ToĹWCLjw#QԜ n>4kO`r_ ~ۙ"Yh-x\ MHFMpNۆ{#dVn6Etk4;): u1mU&HNnٶFp[L>\$jORJʝK..p?64} Y?  5Q[ ƯLJa90ah?E4_=n-M|".qlr~>qb*Uihxl*,Sb*]_]M#Vf.Y)6b!ؗ7~A8HEXrlad 8xPe,^?5ĔS blgm߮U}|YGN9/gT`E:55vRZOLm9gCg. IM$ƼL$6s`ӣ Om{s,B :a˿ QD찦FB8*N j+':ebBԢ&g&,syd3+d=>(PՓx^G(_-!h-j}g$QP=mΫ57v6M!V%>¯%k1.^MSد)H6C WؼMh4l!9'^|i_g%>|~%Ԝ6Gvm&l,}V4X睼 p"m T^<VlEttxL~!M؊_(5ƕ\L [3:Y H,8T4cnaU< C#?.chg Y|z5XPpfOt'qZNXahkLE~c=D$Jp{Đ6[մ5\mt+Qӱ=n;\RDb?/M.CFCqTG xGqN@sw?_@zIDy]Ra''19&zPإ{6+%!3i[^ryR%6]f%|L3lX p7nؤg[! ٬)U- $q[\!Ck2D" +?,\+1R25r/a"-3)ZLv"E3malPVD_)n/_lv(AmDh?KTY0\q/GO!LUVUoY;?z5'l"Y[T`t'SV[ne(SMG\;7$^0w\tpY2]bcp̵ PɎUӘdE۔QٗDQ=i%ȒňDu_~cU2}yn]CB, 2@[?25e2nKTatx n91,x6Qʞs7u{f]26RhZro4r2coL)'MYœ)x"}ؒ?hk9Fh uK܀6Chb2zhJc'm#wAe,aZ r}08\?)#YVjl>ЄA.4Uka?8x"CHyp"C./[BEr}mq4vB<[tCqp8Ciͣv5 ሐ1*X˩] LW)B} גU?o[H\+į1ɶA-! oN=_eyP)F^F%={g <$84!,"6Ű׌Qɟ>emÄ.Litq&5JȈd@(/bp^_@dOt64K 'fnǜ#;k1`t귅Jpȭ||mpI"g8"ʥeSht-/SPEubU^Yd[^,S`G .N_iB PH E0VOIpױF)W!8!_,>͑}ހa].ZV@2wQjb_ Swdq4v Y2aWpύԎU[})jLG!s})z<>{6?zÔVjhHIFJw՚jnZ#g1hl2cuPК!PZF^l]9dW|V@]ڄay6LY[d`kcpT[27keH?׼dV#0ձ4lh쨽0Ћ5NE֝Eq=}F1ʃTF|c? ȅXΝk꒕+鰔^}RenC53k9dJ:BP! Հ8"..oT#yx'D6fP:8,XlrMf'Fփ @Jzp]3.o2t@!`8 N̓(dEGyKPkw0cIS/.Zݍ`go wdB2ZkҙM߅U'©2"ZYR@Q4$v5E!wy+ ܘ;"o!fotnTڲgc"h3Er&|<Ю@Gh>֓st;+pQ>3nSޥz~/[<ѵ@?uϊh pX `EYe%W,^L`3TxV:~;޳yCo>*"CGs),N!/4-肀-*RtwR cO54j8+f޷)$ۅ ~SW"WT]/N9Mq ^a~]+3dIƜ3Sǂx$[t@EFssjiu_~ev ?'58(L94gEUyR\pRPɑl ԮٻYM];zeY_&oK{rKr~{`, +8$`_PգI>ڲ}W)tGroƅXYGE$qU*dH >XϟJ6p±Ǣb5Γ'n|SF9i.=}Q7p>om dx&W9ZoH]6FbI.$P(-ts+fႚ1Sq5-4L1ͫK>jMB5_:XwOB j C.rO"ԋ"s mvDj&=ͯeY7 w!!8ffAOzȱ7ĠQ7P'3j:]A%-5@[[M=4|ms0n#GKmDm.X?+rdп_Bmai2,slrw#3pB!PSy= d}6EH&ªYteg6i9󱛊-h|oЦ-wK_M;}ש/PXcfO@ *,%W&,R ]9779Ie^; sq K%Z15+Ìx^J/x/3j@>g,_g2;>_ɈqkӾt!yWM1 ֥(|x }:sB4g+`;I YʩVNb `ȃ&7ju"{*5N{j5렇 :<>SI-Ԓ#eďKu^&>FVVLYT09z?\;fKCJv&y# 9Se/ x6yˏH|`q8F YXwـHǢWBD}]ʠj uXB`CϊNV!a 3 :T!UJ<;BL!xk-g=;KdK@$Ua< kcBeÑ˥Oy?!uH%OQ4NTd0Bvo\ehk[Y8_s4>)gnjhzY%-P9Xl vUQ?Á.b4{&yIG* 4awG[cf()MXq#-JXo2rHo1ADh] Z9лuA(Y2[_)Y0S>zr~ z.L?}}|CJR-ji "$} cWJ0A EJw΃sg|=~Gq\x}z)?ƶE L<8__9IYg Ft!8R@쿭 .$79/n633;B'<a`('J{͞*XBxdC85]Xdykl5&\$I G]Mni-mY pݼ&,q;$q7B005֪dr ھ?lfq߻&7 ¼׆]7uٰZ\QʌQ&pfW8X"' ]%(F).A^"b!bqa\uu+zI!%٨ v4f0Qiqe6ۯӵ,|(s1Fb)X<Qm]n1g 1I}kQfPwnfHeɍpw]MwyfTwhnnᰲ% tzV<2 t L'jYSPz  M.kYn/m>y2 i©%0Z/'/Љ lj 3ubI=~Ǒ5cQlzKJ]]ESA%< }ncz(/U 312Яh5XUs0EtX[{+:Ʒ%.'~Bg!&!\ۅBwZF8z<  B׫PAu&D56fXX7íTO573ݫ9"jn-;en.ǵ)֞^~N+B9e 7j׈2zv8S߾Oj8L(^לּe5M͝wǒa^_(4 +=Nէ' FR[ UR;<pbr'gy"lnjڛ6󳷓ɘonN6 P/j5hM^4<_`yVti!vMY5|,ZhWq[ ,ˇkZruFA:6 Obc(j…}3(fwϠ Ȋ ږ*Yv=b\{)HDcNS.' 0[c8A<=࿓P uGJ{JЫK}.0Lc5_)W2Q`Xty̘-%N׼2W}|[/³Nw1y}hv ei b'<ۛI|p?~̧YWBe2+~wb릃iՐ-wxS˘u:!1@ޏ0tCM%]ju0U\>LeYT+?>_A:+"{T$ם_s֯27r~udjeYE $Hw=2+,5ȲR(E]ĆoOg `{0p(F/#5j>:y]3y -;1̵"b'؛? (ә6Zm$=FhXXb{MӸ49|!}p?Qb??Si>NmT'g\u cJ̳I%+c5~@'0Z;/ _d.ABhĮT6aʫ&{xUkQѪM"ȝ'?"q%'aG4 F&P/wl>53ST`vԈucuQZ4tT\v܆g_?C̚blnIЧ~%ktUp}ZkiwJ"gy ,tu:12FN |~t{*/,ZJ53<}#'I )D2=dCvᆁֺ:( gr-߇ >Shu`6X*%४\w&~8 dO݄n0jw`"hPK=2)X;##*vB)?tkCe#AKhwNIh%W~ ~(eLd- bh|=b$M>HCm֋e‰o$N]˿-JB+@e(t"rµ*)PuO( "NJ ;B'_#hP}%t06YIwPwb,,iT# ToBO:ym(SVGXWgs-/S5/1U;+@;Q"Onؽ qټ4kry {W$ {tȤyΊi%~BeS06j6B8PZ4ʐ }f3w4Tr3o/7 *0蘛:h-(F HQlh"wE@0$y /vU֑1ZZh8nqɤk,,9+p@W281$?yH = E}K% IbvS[ %^zKihTaVv7nF):(%N95M7 stWF5@1i$>Ɖ 'hc:!}b} RM5&yr/4rӰ\ͼsZe!)f>zE]$}~>VnHDVh8Ǹ,k@x vd| -%]nh霭u}Fg?djJ zt5~oֻv9.q40^-0C?,^SEe8=I]` I縗K_~7zWK*jTCg $e,[*dyMrCJZ E{~Ķ5u}QL;z!p U,~ 3/pYqQ4`'cdcNe[AXvb8]C"uXEWJ#r(9Gx/7P?BtDRY70׫HVb⧂'0T;݋vBQo1yS}N 5 'F $+vp:FN2XZ͢<2s c͓JHH &(`/ܚy ¢:v`cogZ#)ǷK fլEbd0'X#kijΣ1(8 wsߧ+hԘjsO 8| ְLX5^ ~pz Unۡ9]4oE;uSrw6RKk9Ӿ7غ(.k2q`MOiQ8y<<T:ak=. wS*P*J+id mrV᝸skB>fʂ.ȚM9hšs|_F{i`c~Ǯ#C;>=bW`5g+Fbڮ,1 ]xBno5 `232.IK?t fU ޟv4p0=G46FcӢl~T{g<b~5%r{^mKt%8^ |k_*l-f`T# 44DtyETBvSp@86%,H9z-e Gׁ9z<\懝Z= 6uyR .K)/?9l7P4V7mFhh ~uNu=ʩ튰yζ#6 pfofr*&fD[F= ,aDqixX86M yESrJjrtD%#`!VGcZbyQ LGDԧ,D- [;V(RezjWo P:ad \ˏ~,l686h?c)H>g2usw֬)1È☌tqwWW'>_~_z'C! :Cz0&SU 6ՂC6*O)']:J CΞ/eOm˶:_<**OT9]S1@P@Ϟч!=O{Pln|d\ |-~Ag;fi= \j"ceU#PJF3ז\=*FρF*j>vTa'""e>~T}@a>~Z^2ĥY[+Hnday,,;_Xi]d"Zڲ b3Wb[hرI񻽂RF[XДA@#(珳vK#;CWڱ DOs'FAc,xPy[ ttUǧσ1?ASsOu{1/N|/~,fk sti|')ץ" "ߐmMGLיQְͯc/צrzDm_0"Յ[~5HZ%! `WP2bӫ]; ?os'QlS@LNnÚkCY!CUH /!Ҝ>6#gCI˝6 0aCV}L*?Ș[FLG0C]n͊gKb^o;i3Jg-+$w6:MCrQcBG?'<v۞"kV7N'V5i<‰@ bV'>蟕fAW*L8mh*hxBC1;@%(R_7N\g9z~b ˇ7a5'3Ӊ,q|%b}FF'uGpuZ s6 DT&2] =w8drHDWx7q:F+|ki.5l7C5c0n51vmps9I˻%7BQl{A1 sH"~̺$827+/o=LREOdjY`1cP#̫ EEPIնn z16ZͲ`W]?KE%C5(M@ Cڕrfc~;PJK)ky@ {z%sz=oT ᳋-uCH,=}>IS*aK;p:5"mwh٭5)gwL.01>dQKrř?ͻ0F/y!@Gu%L"E/xFTmc(mikU9P$N?m4!-ۑW')ɗ{74(.9PCjjOB3n-v$_QB iKsqrFuB! %ic#xo$EEڽAXSh|(WV]ݷ( *q Bo6l榽'U~V6~x0tvS_!*̛PiFn6dY&ωi[Lr16&=TKD[}`C: b, V)cas8Mn2%2kn# ob VG˝zo@"+ jr:q3 gPyZ /3@JuTtQp &\ qd]ݩR{ v[y=;iksYBFG FY*kcLmHt%_9tq}k9~9&%ʓh-t- M{2xw ؔBhdtxU(c(H-Y;!zNNO; xbOy /B +@r+!S_mPNhO;ʶ-y>66`-Hp+1Ί_hDDl/`ʛmm$_%6V_(RMx x{0 =+f˯&o).ٿq9wRI8xB;;^|˛L&5l!h6OO?{R\I VmSsd נdF}]A@9רxT6!QF $Y Cy=7-q~.̫r>ĝu&ʣT*oNZzLl-]1Pyt<<顫C/EB71&"_$;;qQdzIK pJ찂3!ߤtN3f[1NR9Z/G\}L,b9fuGs&6駐U,^ <3-F:--:gN8\w21wȆbrEO*7e4#x,Jbi0}³Vq:/&Kvw>8sy66${x<3.UizP 95R k *@tq-z 7H\eT {b|>+D.I;+VESJmX^Wo3B "י Z 3IC b<7#907j-t_<4:N9%$6?hAqO]`7ώ56 lƵ:܉9T<]%$Kп(iӊOל`1DQev;k ls)X0ǐnvsn#277'`#OeUG*Cڈ$_v>ش)S`e u}G(XV<&9<~Hp']>[ .[(~!EԑhrO$@Γt KE~|tC]Jzz.t)^b-X:a^pS*n*xAt2m3"2rWc7z7`Ma#;n1G&e8;M#چT #amDƳ*ؤ2-0z=+;6;::>+'WJ` 8RL[7- DW"7ʐ4uM[J]+Gf$[M #? aw]֊)AtQRM4ߊH(93LՈfs?X78QF^?kߓ=ڻ#Zķƈ,q#3ȓ5; d|m?mK։< f ~սr־KJ#1?6&YZx_(C/73WpK+DR0>}G|TJ&aXO`[2g@;G¢5I݇դP¯GEy6ў`O^wsxi"\-ͥ{bg jBPϘh `ǔ9n ,%Ŕx*mfXWUT܅MHi๙Ȱ.6+}X?F}@j5:_9 Q6-*TI 5/zOL|&X3> 213g6qNlc":(Zrӗ' œX nNg=wRFs3 /qNC<Oئ(}^,_j8")&j9驠򷢁pA -C5Q87}&G?;ʷpZ}l^W9η7Yyذ h SuM2hWwe14RG0aYuWRk er+{ (-i!A(`|'? GD ) Q8 `{Y(p(R22x鷪k0km-K䴮apfcrgKZ,=bnž~ٓ4vI? ߹ܧvB@4-d<ً׷Vhs88,,5Rs"\ mlJ%|^bG(LzhU\ ,8j_̏%pй%vC-"u'=b|:4u%c SS|VиܦNt?߾4({Qɇ"R^`O;E{Θ<B()V= ݱGGܸ>=!9(E7/-+z슨&ruï[}Шj~~xOj/bY GEL8$ +C#uրH”EbƉ3LRp'{1L]H.-NDG7#p񪢞Z%[^T H)5hַTa)-\[`Qq Cٔg?)%jQ["bF<'ͧ}HmV[_r^ҾAH:>6dxߚJ=%cZib&MqOAk-CT!mHo/wǩ S *%Kw[e~/I/>ּ U͢Z_0,Xp;cɶSy_:0D:Q08ܲ%ek/K45[K`ݕB9eCn̆iK :#kRg2罪)ZL)? =ሞڍ!BfH=bpCY֕Xc,QP\uӆf_~KYn]y|˱E.qAѮ?)kvF@,,Edf>nb/~_K? W{91Mq\S< O\Z]΀9n-(5%imB;h&87͖cⲬgj_"iN7M 5o "f^7$p:}=ϰTs!nM_Sl, R7}pK} 4@q5(J oL^Iϖ'7(wh$CqRiu6'abD"0T[7iN~iboկ҆Mўe?0)5 m-W&? MW/zzh4v?4%ğP,*ӄ ۇE 6&<78rY0aD+:,y aąʷ4ã7,w^dp . 5P߿$#7}WWGMcv- |ݫ1dJXC&n.A^JO%5v[sǺTs3amtivmcYZD%+g4ej׫LK9@L_ZF5lUx73ۯ@]GJIj UiH&œ%V5F0?7 dX:%mRǬѥ FiGE雛)E-/RW9ҟƋ3&~ySU9gU2? `e(z2'&+lj =J=.%Uw˴A/&*5Bn `͸-y#߰<0XC:gXHcݑp?CBrpr ĵ]B:xS/o2>T%2p!\?9XByޏKPGFSe'\HMƅgqO 5ђECn@M?tOm] 45vҾfkU덱Lc 1dB4վ P'4 +C|Ҩssb LYߚhr@E .ޱ1?˚B0G䴃13"]bsڢ]gC-+:֓x9vMe)*qP" 4‰ =@$N65kI[ QФ5q#dLC`oz:ZhC,A&R7M1TK;ߢDbcKsi(~yla\ 50^|2&_M .k$d P\' ]j+::ٙh7K#HHώv5*ܥ&ŀXCKVGtu;f[촾Q졆`>5JOh@.&aLo^Y8/lPZr_n560Wބ[Y%%lq6rB+1=kRQ: "YPnHn1SHhLbVZ.Ž ҡz-)x(=bRdpωn`(*ف•pPDLqg_xzK$ȰT%rrH MCCT]CsG5流:U2=ٔ5^[Q&?&Jd *vubi9?Xkvmk-\ea6d]ԜB>z%Y4@5[aږP9a%_t&A(,n U}y#gꞐ[~\^ȧ:Ѭ b_}ض I* qVOh3}Nc`4]v_" y}ZFN]LKƳȉ誏p&zѳ2|P8BKQ_6x6 C:jpN7z*vۃnXZ!9aTyT/߹q;;4 gTC /l™)Yݧſc 8 %:ME]sxVJV"B|QQrpUSpyg014CpZo⽴ַ|jK#tepTcr{¯+j cT-so [KEeP(X9F^wSgfA2GpvƔ?b1MY1Tx aŸ9A6QR;A.N/+c0̸'Iɤ?^g rF0AVa,od4:3\PeE#wJl oB6;.ķ,c!W(nÛ=m`SE< Wwa`s^ :l&2zZibEM%;} }}G}p !dOq*ar>6DZ@F"yIN|9%BALQ=co U6;6].zT,d1mƌl4s- %g~va:Oi6"ԟk$#E*JsxAƆ.d#n`4Yf)Lv=FW.w+`,(gω0p<^ c&RV fkΉBÕ[@8:/<`ސf];wV]>F"K@=z~0 iqS&ꉇp0JT "ͨ)t'fC8C%uD&qso?46DҪITC+]Q$aǼrq[>VvV nJTƩ,ُr/3[(a04Jm|@5 ~LCe޶> hS6N*HlP1T^ 4,7gCb?J>'[)v#(Ax1H@QH5wl\^]=psG"Z}Z<6>ƀe/fg!-$؀8Zk[6'KO!VYAZu q|}3Ɯ (e룁IRF >5o)*WkK闠3̥6XJ#|qzzm6rC>lo Y8Pě9*QVq2<I[̱ +H(c) ϩ#,tƉ f]WPk!|HT)P~,6=*G2p7x~$~-fNV= &9௅"8DHv5gKdGl#|: H Æpw咿r=5*{g`Soͫ~B;{7 {Ag?l5\" >P;h [f}Pl`.XdM1]2|2֟c%m4w*l)bЂƋV<mxy'y[8H! 4\[{:;uN j4<Q3L$;TFK+{_͠Q`9Y=rTJ*{^xBR]Zu>`KY;tS :0 zthze3 UyWxh?`àoׂx'o7"PXXײ&Ak5hԹ W1Nh{^.$L{ ƇʿAZ˰ӡ+Kt#_ja ŀ<{Hic[ Ib nΫ7kcYr\Ų:αE֠XviWzU@wˈ-eG?OPĠơh'zEcdKZ>ghVoe5U\%0U2$6RPaYM1Db-ڰ?]훨4]]Q G)25d(^VhqY O>| 2w+{ǫ endstream endobj 68 0 obj << /Length1 726 /Length2 17919 /Length3 0 /Length 18487 /Filter /FlateDecode >> stream xlxs'ͶevuWmFm۶mvuٶmۚ;ykvD㬌$!qRv3fa(*K0iIHmm9jF%c;# dk`nj 7WjodnmPu174p8::83Hdf 012kHȊdUb6Vyg+sC1`o`hkcd_iEb&eQ9Ye@ -p'GƆNU5?,X:ۢf`: MmK7 [Fv?hH026le%om sv2v;$aV_E.`ct4 ̴;ɛ;#?B+fݑ162w$ϾXu)_ )H+S 1521(9J3ݿ|eiIoKPn4,&F3 5tvp0qzm֐+"%GpjvZOjxe$A3#+{epՅG1 m2 oX}jYk׽5м],]rP; A`g_Ǧt[\|M'A{2$N/G\UpoF$/|31 [8JjCu+V{]r,tu[7*=#yδ!=e&jSk~qHwz)$UTTC%h@J3::- !qM#kEnȩYGWXqLZ4A&(l$系.-F+uQ`g1p}C2E(  2pE{-,ְhYT|f )k m@F= }=6+l(뿂+A/f4E?E컋+0 M߾xڟN3]e(\hjt,XC* 쁾I]u3I%<p{$6Spf_\ӊCe")0D;`#}MKTp'6ײht\ů2ՌΝO` #땏iÇ> 9IޏEhϞB8OCzTV,# av-'744Zm(C[aÉj1QA͝[sHxt;hȢ[ciz?>qj Qޙ$sL~;5=qMIiS,P$[dS6UH/t\UtC(MG;r$cE eqĉC+.+@ad_X_.{cvDıɥ:hQ rL,bK8LvRZ+whN=!JQ1n6mN97Ѕږ!\ϻh_/3wCJ'|Qkx,RI=>)(5ZN 9K^$;cbz9Nq([<}j K.ZXmlJWኆ[ 0@9mZ hdL+Q<T&( E=a#iNu';q>Ό^!RZ] 7H4[ "ox/SKNU%btDx "* @x,RƜR|aRPYWs7o5:? $ |]ze\$?hEֺ0^/sܪ[w`R31Z7yrv#ww8 ArA a]dB)F8нK-w}*?n+i0%Z ;Giu{f+` N2 kiMQc`]L<(r4!]WS'}D7mTKVr~A76+{|x\0}8*Ƙi7w'ͩC:\xM86A[vl;LO 6]Ȩ~0Erg cz`9Ѽ+ ` c|5JL#ktpO7ZEB#֠IO{%SnL"JdrKlwr w};|=Sjk`LRdAhmW~&^ᫍx=hqY1qWǡ]& 4 EPvJMł7[9 MV&_BjKªOvju&1S0i$fbC qsΟyr$.E04]̈/ _cJ'm292 R, "{RBB)pwdtiten7K9v WUZsh0?RF5cݠ5S,ep*DM 99碋_/J&P,[[Q-5tl F=S@ÏNELM10|4=6VVߧ5oRsgz5ؘzIޥdake-82cڜMߺ8ųUfDWC0Fie_-A:L)W<H^6=Z,Z>6݁-1$ IiN}z"hnWo3=>6ljPU 2ե]ZA鲣m4i?[ ?]ժ׼\&#!{k<;eяT@xjܢm^%0C+ r+pUʯd8ªxf''kaDUZk={/2^3Ghb4`ŒW7'޴gyjG^E(C@Ox}9^1l։g8|Len4ϔUURRn( '0q,6|FRt(޷,τ^fQْ=Ap.ߴ'쇬DZĊr. ֦PDۯݰF4Rʏ]M"KCsW MrDo〴rY"0^PեDaar%ķ(vQx5r ILbϨ"?xS}7̕{_<1Iy-+^Xk[P88O*Z#[Y| o~d$V8^N_RyŽ;.`z{ +A,#^sx5-$^׃zD}tN{I}9 Ic5Pt}]X(?7 +! )ZMYzWOo.6Ҝ%0Mn'a>/mn.RGd?ز2l40J!cRILסU-~]2?A~24P0Rh:Μ4^h4YeΪR#ᒉzq|Uߚ_Fp@Д W <,A GȢ-L.Ch6/caH(u4 UsSd`\lª9eg'IʉŸwLSkk.}Atg#a[Z/p`{A_p1ݬ:-ݢՃ^iV] >_ʼn45Uk_\|LE =.M`n.Z )sѼ9 iڇ arM7X&k'n(\,2#=Z2RLA;I:8#E4^DE~x^~;NPm:8޻۪ky( 4#n׀e`)栜u-xvYJ٠;uy È%/VI}:$=dI+T1]+9V tHk:C rt'ZCp9Ҁ{;DD`H[#a%WlrFB {7oNsg6"hAC4HI[;L=FK5#a V0AFS!oo)n_W{p]ij%ML.!K :'"JS*D꤭m?ӑ鞰w5'~S_IUKYkEzǟP鯡 SsBݳq]`V.ol8 LѰ)Bp F߂0'$䋔Od$}H|ÿIJ.r&tH*PGWӳI)DyߛmOVF UcFxϾ`uA3vDUGa"mj v3E] 9nT:8Δ֮z 5OcJ'c$KE18B 9GܬYݛtR_mM|_zpCAA26hG8)ؓ :v,n?hpNN_2T֐w|#rgg8 Z09Di 4Ԟ @7J'_nمGOTՁTa85:GY%%U1 '&+ ?=\TݡoSw<ׄy%-,%`^Pu68P97X-UC6(2Jo,?"Qk C+p2x II;~']B=WZZnwqv-[ #(K~,x{Izx=7/ř[?Fx펴e'- (=Ί pFŕ|]UeUgBm1庫 UyQ{k 93 >ҵ >b \-G-K{?!HRЎ|TMUm#qd-ikHij$72u`_:҄=;]^e[wj5 Eaapiu))J^|<昉=}&= j_˟'(Ek")m㻊Nj~u%QI!g-d7 d\QWQbX5'30nYtT=/C|ؤzj b?1Z VPv9QEE{.V!4Y?0;$jTW (OQv ':umvy[5?t:_m'>8(w[ˆ FU\ h3xMF{n)QiʵЮZ ȱ7}ym1[̘Pns YzGl{j4{qI%Ñ6큺3]Qk Pnjh6u0}!FcۜmV>L9zvA324 c`>^HGeeoOc˶:uQ3t =B"h|aG,Lֿ$}0ao':O<9S`؅Y#CE?eP88A2~MzF/w# Nk+dW N="P{njO$5dn x* +b;!=7V0asSM ʪkMdJNMP:Rki!'jD\hE%~PQG6y} R|H%Q\㠾OE_W/(sU UN) H\+rM*+e_&A#tEfR {h?nd՚حk*9AUzKĒ(e"m/Y YaG]v`DIzY/h7"E8e\(K-컼 *W w D|>A|[JLA3`x@ 0 ī50!_-@A| "g]h1D,I[ΫƇSt ֑ 0$Q *ԂYgY BX Jr6-|XrDoS;"ևXk3RÍ0GqQZ\@~Š8Jk7K@)Qd nnۨIݯn}ĺDHj8˯`zdΈB ;޲`, ,)l 4b 5ɏXVh$8po| p[ ٯDlFztզɥ+mwwĺ$r6N.WMG,t[_!u-'T `$#ϫ5@;S^\b֮ 7D7E[ߦbBaTv&Ì]x8˔p{)ǀMIk kXjv`_?qxqh5q#h9KpYiy%qH MmICtZnc^ lPꀓj~ΦMavL'\pl28Vf=ϡ}2P)}VE`0i,+3I-0a.U'x5 tcl#jlVN3 5&6Yk3]8-CqDF6su0ңS6;-vX5 O05RwٍN#qIJ4 Ȗ.VQa$%GeNҿ㳰c#ͪCdک 3zo%_Ng0rѹSH鎣)s/ TPnFj)s_e#XB2s?: NS̉eTZ|}~ Mա\iv[Cˣ?xdIW'/r|ܢ8 6 (Ѷjg/SzZ@)|'R>؁vw!NEL)RVFnxD^<MP3d-gs8ճy^R=ͬ5M`ݞ*Ptø}%dfFgqԽ[WXۃ:8dձ!i ZCM*W_*O pzc"@n|!K#jL0WÅa&$28%*<=9|k5v:AUI9\tQ]>T85baWJ9MNzV,B94~v#?[`kLBgQ V4'+q[؅1s!7> ? lj/:z F Zs +ÂeΚthm֔Z'ĩD(nqߥ@ gX3U+d8)3 USJ*_XMvΎf´Z AM&q*A+S^|ݮ)íBz/En16Kjav?yaxK vhZ^^U⬦GYsEqI2I>iQ̘fEn ~]E1F/E@2T@Ia X>嶲9W$]2·'NrWܖO*,&CY.7`dj`Vjٛb5Rv!4U=xG0*|Jʂb]| c3b.Ն]S^@GΑsKŴ_=}aoAŷ-u9tj+]ֲS_Q(qzJ{K Ʊ}5ε47w3A,J)7#)BYq}>(?bi"CBu۝P^WA6` ~A~hvc1頙W>V 5,)fֳ-&8bA;6X4qhS@'xU$:=eE鈎C? xg̳ ɘc$Q >NɆˈ| qY!DfKHLHO:q#n+@xu'?G,$ RZCK$L vO=Ĭ0+Gk5 )W @ ٤k;9~P ]0~Af(A'F #.%mҐ}pTˆvO ;) vIk#1tI^?-X {oWu#1F3d uEáTzテGȗ "RtT Gͨ3f#˹}vAg69(ƅ+jlw@BH0ʼ3 x*x&p(Lg7_^k%I=,Kk+aBY!?,/`|+SFdb/j3ɩ1PB'Homΰ&w|J*xD:Ʀt}#&ȇ$o "~sF8_D<~VW)lKH[9L!t`ƈO_-F87 P ڌDB;~YoL~p#yL=85hV3S~OnM[)Y6k敢B6WߘRpv62^L4IPfɢ#+r|,[ PN<׿f!pUH|+<~ IG`gn#M=/-Fyei(bG,1ht*Yda3TQF∪Q PݶL/"8tĮi҇Bap>^&)<-2ƇO .s*F:[RC_ \6ٕy:̣MS&”,J5#X^ֿAzNvii1<|Bx͛EFF"룔mV3}/ N B+zcRi&oiУ웘]Ns:vz_wVʳ!M t=z"-h<4.54 /c&R*…󋗺gu(kNu"zҬU[&VH=62uQ.yv1ף:eMGج[TLr4 ' ?ՐһNOUL p.!o>V |:4d? DwBrcBOz+)Q"cw5+p wgt<w&롒7KY 9R2ktÃ6i` oi^ʤ8C/kNE++#CX>HYc6S0^n7['rwl+c\($] NGMʛUgټJqExA7ix1g =v̾aYku59cF{h_KGY.]@H}*," l$vDH,IWaT$&9Nm<,|#3%O7wUCP]cuLHfR+ yz.eҘ i@cAs.сV9h1 m]~mL8oJ{{zFQ~} ORQ~` ݝ7陒ފa\0lhUyUݝלx+b-tkb*%Q>HTBe%l: '4sRNELDQw큻Du9.xMG%|,@u%tc`~ <&32?kŁ|R,. z Qdb>d.͂7ys1^-@UxXfg@q.apdj,~:٭ gwTK(Q ti%xC3`㙯2d~ 6#q]/~$V z>kkb wϢWجaV(yeJ|9Ԗ˜/UH¸QlI[џGDmKzt[J!%>cnJ $%3e8T$JjGEFG K.i% #D :1Az%o =v6TZ*~U[[hM<>fŔhʀBJ 5rm?]우zWY4ڌ;$ԑnļjtHNJvǘQu~k"{hX;׭55-wLO]VmG΁{/_Y č]##WwqNlڔXcT%Q*|16PXag I,_sZԀsܿCVͦ)P|hTZqc&.T;Aoɹ (Z/'{ZuŐFp {s$h`6ōmΟEM ^c M-ь֡3 5("jOoQ C3JDX% ?%Zp|q/??ϡ>!;#gM9{XZRWt ϘMlGe6۝^쫂UIӾu.Y $3Ƣi,d3RpȗҷΑʩiLXG+|Ԣ]'fpxST̓i͵(Hg{(Y gTf+r% A)Z"tDW0,>ˤw2G(hά mRfvil@2uDޭT0a[Uu%?_=[I[ЈyIhO]9Fp-@ "cuf @',!̪/5!|d )fwڮ! aSQ K) 4CY9)LۉHOόdw ?nϱX+{;%" #LIdDKD6ÛΦު@ۿ"FJrs٥uxB:3R\T-Rr!GƕVa|vJҐ}0&2&Ҡ7;Ѿ@HS/xZ6XI JCa 0EA -5}J endstream endobj 70 0 obj << /Length1 725 /Length2 36328 /Length3 0 /Length 36847 /Filter /FlateDecode >> stream xlsp.v~mm6Vضm۶m8}}jQ}5]wMϐ۹z:213rTUU,0dd"N.v. SCwt4pPSK P14tػY[xݜ]\ R15X,mL" RJ y5 @ kiljlJ0w{03L`f03'{[*@LAU`hg'řoSc?X<-01L,]Fv0 Û=jW5|8jc#ohk upu1uٛ:{w'4jhki<\ !Ct05Qto'W5L7r&7vdcV%A&YN&Qˬhh_,Q3tqh3O0cfб3X8X,_SL0+e*yբ⶟X+:}#fhhP8FPH/ ysl,:n zOpmiP[%oaWFE%-8;c +Al_ځmڝɊAI'•=2 1Y$ ,ޚθpu6;PHXd4z %\51\ҭ!K^*ӔFzWT=%l&/ϫJZS%m<(*IԀ~曥`]!0GKT 5`zc 4-^NW͓2ܨ3 <BRi^Qn18v+v`=EFGӾ&?FSxJNZe>],{#wKɏ_; (<gt ΐmc35Wg&+HͪTq/[udѰ|H8q8:s+(tyKv㛇KrlHYm g~ESuhYVKoB94͑.'̗.?\]\w؝hYH8Dց|1.%C֯TquZi*(0Xݣqiq 4͝KC=ʽF%6D#_߰pCj(#S#YZe-Rm;9Od " @rI?B2 q<1Ӱ$O˷(ay'h7Auh=EBuXֈKVE{ՉC% ^^sŁݽIAU_[ˑ5DF4{mrv@6ELtHJpQ :.L~84iAcnH"qm#侥ss>-a8(Ͻ,xu}𑣾/9OWF?6P:o=b=RtfOI<Lj]GDj Av ݕvs %yuFLeh~tY ZyI~NI̻> jc_rwj"(Œy]i?ƅ3jAΆ<[܋SkNvd^OiLpZBE[ūݏ@ܸ<4>Gsg-6*#WGƲD6o\m+ iիN`:F*UPEn27+T5='Cn-U3ZJE!DRwsx84SK_خ`v$z3x A|Y$/14GGW2p+u$_R&^dNY 32jk D8ӺTk[ȦUrW@aō؂䶊H0])g xSC K꾷}?W>һE狡u߉Wp"E ¶y.No\ 3=0?!9/c335긯llڞ$[%Z~^U15mU-5o6r++oEFQqɮmed..;(InziI ,=ο$K?l*ʍ^Q޶ g ګ@N'=<͂cm`iYt<yU ~K;I6KQM΃V sJ14}%7|{Kio |㺍;*8P Z^6Q f)\(*is9ZPG7LA@>yTʤ!R?0o=a 1P/=dfY(/rsUfm$MZXxP:W&g< Gi#4.1+[e|&K>2RSrÚ}^ =+e Zy%}cP,a»80o\d" ϕF|M=Ky )d\et5PsFQ[(B{G[4 w^?aM} Ji[)tA[ TJbPպ|[Xi3RT $%#)Pex :r4aftѭ *UŲbghn˟Zy^gㅺt` 0a^^[w]>C 1l16H7^:9z "mi(}Y1)[M.yuFtu,qY~r;ܖ8V`[쩫jVɯ7?hY⏠v&3 v]ځS=QǠ> "TFMDd4v}qciSr|qSy/>ܛ"ƗZY VT'3> 89dkfvZ[L>Jz`(E!a, ~o9(96hZ.s| iAK~%y0鼢nRWC puoLf,+0Dw)?w*{T_?!ĸWȍdڟQ"|%N-"ѵz|_(rULG md,zh~ )2?ݫ!|W- j5`v1e|BSug,t-cmXlcwwU&@QU҂'pBWE^v9e\'[B *i>Է%SALJ;%Âx\qӺ FBl0cmOBi rckx18]+e$Q|!+R=lB؟m>cYbHItܩ^S49RGE4)N{zjGz/!Yen Z"MtSK.h4^~?ҁDyy{̃!2[Cn[r[G@DH8b%ƥգjOh-oERʊ_߿ɛ¶!rwU[LBߡ2 >rca7p"3$lG{Cjvg#r9L)O@@EIx|1sZVq_7e|!"M̒ H ,{e6;`Ԏx{d'yxcL.8.ܩmߖq{撱XHb|y>I)ǘ!{!D=&e9I1 |4hYt)n~-iByT%ɰ o<"URxݗz`Y+'Vcѯ3q?fmX};*S>7Wױ `^sQPt@^49;gd?wM jăld]` SO~sO0L\Ҁ+_\^/wTv` z^/i(0*耕VwH= `{w8Yu?6~j"M$ ; l64fe~8H\&FvօƯ4n.4ȡ`́)C#'ę)My3GdÂ`CmA2d}'z*T:~ TS"S^% !UZ7beW RET\0aS{k0bnJ*_Th!w v:a*W 0Zeu"،1%^8Z~0|pi:j,,5R%1!9y"bh!| BエFyc0 IiI&G:.u۔YiKs >wp4mgFgMg♝~Fmܝz8e0c ֞Ntz ejB$}]Ma@{!42/1'"##y[,y*Ą-q._vE)'LpZP|-q }ԅ|왩}S+'  /$m_ ?ѭbdxYb"BfԦ*Gw4;kPfc:ťk3pH'm a ĊH,b?ɵt" 5(ت-W:EwaX_ڔ܉Q xؙ&vÐKemMERdqiґ77eҋxS_Ѳ_ z$sHZwþr1/`z4(# 0\ ~B6YqXNEt Nlj-+c5_K@I鐄lYv\7#O: Q_OQƇ9w`2ƛ0d9.kCY2c[&+4F]duZMȊ:ʃ4Y= UkmAӧ7YfkDsGۄ_WPNX$- $%\La@ǸY-**l9Xro#;T}όZ*&tB29HԵ`( [Ae\B|k>6.^F O9I@F MbӨd`/덎)\5kIˡ_fZS&JL}'4ShhF {lEg3PcO)VGKҌ9LjW{l+VժdU3C-nz-MgV:$qG{c;1S7KFyʼnL.$w8w-_6ġX!Ǖ IĤ!mz@ ^~Z|V0Wa@c D8.',feQ1!g+ĪZSOECWZ{,m 6Izc< 'nN6a>B]s^X_ ٗva eYBX88z`(X_(H(_in3[& VVB= a tiRŷuA{j^#聋!ի xƻy0*y]:#Z>0eaE9e *7N~i/Q.<5~hVt(No_Gx w% fZ Y7R.fK{:,# Sw_>rv]AdS_U=i8y` 'upwJyEôhPw\u5]4!j}|-œj*yH碗֡؏GExث0dh l?9M4AЕ13:lH?]Չ:]qTZ_;cciŚCp1N<*lk̈́bY \R_r=zlJF,<<[YEMTh񯏒s1imsAң}el1>5} #%om%O K2^~e1T'Sv{FѓГFYov)ߌ6,D"Gm[`qNyH1y(Fs~V+/ʺ8Eƚ\`3mfLp|heUǪ!`g@Igx73dggtgǛ(Io?v$y^>nU1z P7#~v,^fHlUE":dE )s^M`>ďPP?Ku4cBhM;i!ySn=m2V f=  a* -3%A4ZTY G\es][9Q=miXV}/rqÑMx^8C0MD˵Vd+w;QV@xW TLe¸[aoM7`fcA $##$Hd۽%Sˍ*YȂ;`**c6+N@WZ)V4ϵ~5Bcoh97hX92OgY<7xiKϻ{F@c|8z~osuFvsC2y*1aNH;МX+π=PH.G =$S"ig0burOggr_^\v NUh\$taX-+gRoTXThVydѤ Y~V1f}if]PlxlE=-o3ą<+ޑ'v ,i. էU.ijAM1euڹ;xf$Z 梉ٿO^HF,^^x- ()JBU.T{s<1+ݒVO*Q\݇V &" 3?&uM;-hv; j(A^mϰQ8#,zծWzB3d.@wH5HLKrMIo-B(U& X x24S/u+BfL)x bN"0U Zϖ,r0LGZ$M]\d@Ɍ^ LnEYq/LD1bf }ZXp B\EALI"7[/2[*5x%d&Q+sCSwNiݽ^֠ZI{ts!5+i`[=响}MRpY9d5.e77t.ux2Fưf x1X%k3۩GtjVJe}W }|??o0JQ%mW͂#r\|] -gVGF|}DA؉&Ra?zĔ s,A6Fi & = Tq'a?sN>2? SLxrA5އuyb d]TDGm2kLFnVM3AJ gLY] ض#\Imf`TngõZD$iـyix,㔻,bzFE=a:;FsNI|;*2Y9 {ڎ$+,eT-@"͵Ѹ~ϦL!,vTyl# *{G s bۊg 3;@Yω]Sۏ4q^cӓ vp@j*wt ׊ݰe!zXB L'Je2Q)Rb$~fuv<3VKڢe4Gt/_IL944st_G(*ʄɇd+k }gpY2 {UsVӭ `'/WHJw[>n !k;ѭl>&0)Ñf YP%6 1C%OYIןyK*_PRu[uKbnZ vcA#ZvC*k 6ƻ5\zWe `w6Kw(fWs]11jZ?+kYqYRq;G5rgͫA"~!APNw]}7t?čDrIkZ'VJJO]ɭ 4.hCHB/* 5H{?FaC(M^ċ) 40i1E05shk(->1~p1mʚ};p- \\TVDmbf7.Gxt 8Z͘Zop[ZE -䱣Sl4 T\k5s4Dv/ [$e)c1`\dl|c7W E 4+f|P?-A,G4"_v-GTznUT@ ^u^ dԊvWህ½ +=W_- 23tOvOղq?*pI4%M[ pt]xoGߕT?s@s0W3do.n }FӈO6C@ZVKq[,?̞@{'eEEɤqRd⵲SN셚cEN:djY#dR!x<?y[,3!Æstmy@ ^jxf u_k׾ >PWuB!"rhEcY(v-kw[+V3H mp =[҆R ?ܛN39_W6"ŽvrɼTiΛ _ S&2tWDWMRi1aGh#-o0umxb^Գl@DYvYzMc'9Z[4͐RɱhgL'IPfwE7؊zF_~!!ҙO3"a7V,|gNf{2\C Ј jul|RPm?;VM{Mآ UTDlG^}Uݰh HJՐ09%]_/fsa1țu >Vn̚)s}HǪL(cC ;:S݁Ie_gB)diV < IM|mR" S}HDO6rL5 eU,9#Ld"_#)vņE cq=xʄo\_fBFlX7vV("s{כ +I<`5H)3Qua/WJB$iy9/mƷʓUQE3#$-l1\t\vJZ6V_ wZvo a|BYd挷߅:?lڭE%ף~`]`̫w 8`rPD|k|Ay\-Lf:M u{PطOfPӘ mbUq* 축_&mؕZU@UKo8٣d/;BSP'*Hq3[33zc{r7H8 aWٮ_XEZ- 1aGVRUͤ4>efP nJJUvLAz)ܵB<9Q K/|̚pHx$Ncm5'0Of++1$ʿXTdsՈuТ9w޷>9]*\nhpR1'q&q{/o_B2?Tl&3TUT%W=>֍b+sUޡ#p_\*Zgφ"cPbP e>e5tao(Y/n ipIf 5ad{M\ifJu,YyPǑޅ@eMi q_Fvhe ¶Ņ,~v]s%d:mb 6`|a=+Ydv+ߘ*U×fy9?PB{ n \JA&fR!~e ꁭo;5d/gơ$QVlQuZVq ~[BȠǭ"Ph]ra}Әtq 8<'z9kDAJ^g$e Dg_nl=BsdgpFF)?E3S@!˚50AKR|aSMMュ2㐀tƵ1cR=BZDiN{p#ֆ'aFk$;6%P5U8@jRt8`\Y|Ѫa0gZ]Fa"iwW&#k|ܽ^?>(s}dDlrgL <('AK\]?|MKa˫ҵ)a^q`jV Ue'yOHfq)Ӭ7`e$Lkw`Pn^e - ]8ur1t:H!mbȎs ]tj >Ѝh=CCv20yђM(IWp}L㎘2v^UQyE*'bL6Uh7 gOMp̟SUo9`k4,۴ՈB8q36J.UzL Br%IM"KFL(O p?O@\?W=0y/vU ZPM]#ؓnO@PDi=}-hf1_{"؏+SA58ڙ\br3w$R4@DSj;01M Ms'cV {-ttA8tC:Q`4TTU Ǿt땆4@jÐY_;ɝul"6JzDh|em YuK0Jˮ{xϟaqM)8 gL KtㆧQ"hi6 P9Uq\Yhr\I_˖܂mQ_ G@o52B+=}bPwD6z^bFIռv]mefBc+e\CqK {ZLLOb ==c6O'@^$g $X9)x1%Vlw#SAIwțO-?_+mZP:9'4xȴGYW5+|Z4pܶ.Nzܨ%o&a5y;BpaQw8xd, PU[Ў;|$܁ V\].9E0ؠ,{f`J[qZI9mWhY4۩IŶm'm۶m۶m۶޷Ǟ@ gcD`8`vlW@(m>l'ba}i,ˆPum2fɚKջApΌ .(Dj L{DAl:d/;qNs iu*Ze>BMfyMSC~wB\͐X|K*cMJ "s9vrt{9ΐuiұH#[fS6lW[o(5SiBfoESփZS"&Dz5UYg\;pIПŽ 4#Lx$Qu(J"r:Yղ]]LcYg=t)H'δ*ZbðДg:g3dCFc^7iMJ(7u$e$bYJBhR&M9_U"ئR܃9#Yep}bԑr _n#JT]PqkVwo簭s,ARHGb'đLN*EvvBx _zɽzyBy4-6!;& 'Td"I+-6d>yKB3ڦrx7L8†xB;7cgyʣ %,'^g۽VI؀ dYCuS!%6= L/5ݒLKD7jYW%ޙ1ΠigOI:40Q=OIxbRFD?Ŕ.tG8ߍg6Cz&i.CLa;b$Ӕlt$[r *j62:$=ei&]GT]i#G}% gY#m{/ڊb`nC:ޛ. p/~7Fn̴.s L#I ޓgNTFb^tFFG…bS։p5*G֩ppm2ϴl-lKe=^(wAmm\,LjkTW9"Tn<_-f> kPўߵC+o}TSBJkfKw =+..0MƮ ;ky! fT+T7۶zeOW^{pᄴWrr|spv$T/? d%5Ny "K"sLݬ R0=ob<^7)B}\Mb70:ؑldvuM/4q=M{ >-RVfKJH"UrTuf(/$>Y'7fNw/YLh/{,$C08-2f=O_dMS"a~|-Ox_\M)i{u=ӬPOp>n.]j,W3B[tBgߜ{7"x@vssr5\0TXjZq^>^%3y kOF Ef+&IScM֟$$ o lG_ T-cJ\(L1WIMg0^cb7N }ޚtS~ݑ!5_A߭E\o"qVkJw߲cq"Zxgo^ EI5-%zuı_b. @Xu܋] a e=@m<|t '>o ݅ԯZ.eeKPIYkU}s#Xxh/Lӯm@/=mrW䣦! '8%|$i6”$8ߎbwBRpPb] 14a۲,Ʌr g^S JkES^##I}n%Tk2H1jHĆ=2Z |2+33H v  s٤ЬSUfPU)(eܹWOI4ZZ )uA]bgP/qaP9}OVO;<4V[DTmHe۸&MNҠu!}n~q6=zqݏ 3ɣ wV&;$]1m!!XS-zE rSEZH'om?Q3W$o8}]?_+=0t K+#f\wH{z%G1lݭ&wm(IMQ$KTp;ç5"P%:ʑ_ɚ.}U cU6:_lg^>xxH\,JL_?ݦDËj%?2 t]]3-p c9-_ }{7ܘ0\ 6+er/\M˴[NnzC2>vxK=n$P fC0x?B39tƈr֐$g nloXQt2.[yT5yRt7ZBJb2?~4?/9i8iVN^|#47%#ggj[qK6WZx([!\ +7v4Mw;,Rrۏa6-_IsdzjrT_M\w&[z,fBȔɷ˞3dN@%(LJy$HyXFYxR=;؎wRDŽ4 Ob1v.ZSȘ *ToLjW.qന,uz5tCKTpzt%Bzbu'#" Egg)xk%v7Φi]DHfV%Z,v Xl8eMz r& [~)d궁ZrwK:t(q@`陲;gɋ0͆W M! :K7oPҸAVex8*ΪVAL~/o9ң }a&<Tķ)ן=]$H9g$Cqt*Khs9W)[rqMqy&aYɑs2' g ?CwGo)=0#J&ꕠjh`Du/Isouf ,{4k64[>b1*4/*pgZcebY[Y/,1if^VPE^{6倭swʧ~wjjߢ+dH|ml{$C􄷊&d߿81:sJ[Uah?@Cş`mA } (G霢R!f ,v] @6`g6%|ݟ6s5+||7T@R8:Pu=!8|H%WD|fm0U;HȚ|WēRE)]aboZ1l[L.  S ~PrG:~0b'g{S4.#R}8Fb:=,Eׅ_t(%K.>3TVeej9O>A oD%*sZL/dqƯGl' `vjYH0o6Wjp@f&z\L~r=O:"đ|N}d{]߯93t" D͋@C2m 4LX0g΂I,1ig5 l3TFJu\h1DNLO< '7|Abq˱ aV(H; _SwA5bYj&e @{"fLK]e<>*+lvi˾zPBeZ"53O'TeB|4΢6䆋1|(P17{R՗]QMJu0!6JGQ*_GC,+"UIʷ҂A^[Hc1cA|\]8ƠX.r Q|WP]ї1wUsOCwpmNPBD,0-kη 2Df4\Z]k({+j_YP eZ\{ n,Ot0/Cc8+۳;>{wz.>Ϩn)b9bٵe"5™6.ׄMf[wsP6j֛KxXs ԩ`{nd?!e9jL7 ]L3K /|/0a ^}`i}H_LXP9%n+B 3ӌ^B 5ONh[FIOP!w3.M)ch'7DpaڀTy]i/܋\Nw{#3L>d.=`тfLQ~QE ٦zȟ/j9ʔ>"+ ~U\z+udKY%@,BD-)J T6XoO_n,~`p'reiA䋮HOdŕ ˾t3 LUC $Wq̟QT?pB&5} <Í:/ 2]O&{5Dj :2H}̋<+D wY$,g#P7^;G%Ue:d^:-{RVs䷝ܦ0vE!k:4 _ߟxQБ1h;0h vyvn"4\|hB|}&'Y4 Bҵ$'3yTlDDP9J_6;m_ե/m6ClAezy,vj+ĦMRnM2>$7I^ݣ= n 6 J Ԛb́ׯ7x=ÿ1{Z I_ +ݪޮVᬺKNdy$A~=K +Z&Xi[m5Qr ?:Y; )2m`PJBkT>gG y5(:PR;p[ܠr wP\~ 7bϺ@YjߣCgF-}ȖEN Ng@ZQN-YQ\{4Tc &@cG[bN7B_|N+F`DvP}8ۑb-q-|`orD/,wA-fɕ7qH`\7켥ցnM)<-s\6f0XsܛWr c .#*q{ R:(msxR'W/)q+Lflh|ѯtC8@–Hmk1db3@pNdwTc}g3NMSzSC1O=RզL-V"IJjEZ(}]a)Zx//(3p!gU׬˳%>]D~'ZBQ7vY>g{ *w+ M5@]@bg$Rl=4ϼcenaZ%qW|qvjMdX |]L2,LTb"e 5N]h:hze$[۠1&B T@a@nR(=BZWsRy߸1daHgKzqVTe]-Nd^\L<!Pet?+g]̐a a?֍MVEK += !g+LOOqf-Y w7N xy Vꈉ'@˪z>zc0A)X\/JO7k%Iw' +4S,̬p&],$z֍9c(r('ҿO^iP#2 `߉00b{%%&Q[!O?*5}fT!i(TGqsz}<dW?i$dJ:[?3dG_/Pe  lр:8-z.rjd8]v%¾t6gqzۃSdȯZm~ X2F0͑J3I \u 5L  nO~? aKz1/v^X8F]Gab]A<~K İ$Q{6قsHcZ4,(Bt-{./^zJAɯB~RKcdV6]uKPw<͜숦8DKtxةpu D{k6 JkG+;fj~lh Ll c0~s$~}-0biKT џRs?f$Gߥ'f_ vV@}0Eko L++NKKZ㎁D?ƠRDADmmBꗃ Zy|fY[Aacd%R/s uZі,XBjcd=2D:[؉\In Qk?a*(*W̰vac߉I\푌41u]2*PR e Ii6|bTrhmU,~䲢2u2@yK Ȗ`_L Mg)PCѭ@oG̜v S/ϥBW hwѳ93KB\S6@ gU=<Ƴ#` z),œ2rT)ca[{i;YnElIUՌBE1K=ZhL4-2oRظ]8> :jk6$bf~2wC@yrJ c;k7:vqjzVn%էflv^uoDvOXY!b87>WZȅѹ&.Kp8e)Y^ICa7dC>5\Ite綫~EFhgj]P`]NͿX]NO:u0imdbd@5c 7E%{ c3zl'~!'Pr9 S0[ ׆rzR܍3;OôX+gdֲa.riςiҊʝhl%IcWNk Q(F?#fYJƲ_~>fkV!*ۼcrGFc6aݡhfF{bi$Ƙ*ƃt/V {N zfMOi}8@g Dz&!k|*t>84FFWpkR G__'oަՁv]D5k `3lY$zck_*.(,xt7W~TA:tC5Y;g«W!pCީ?nr{E}{]$Dlc%~Ԇ 6zRy$a]S~[ID|ZG&QX>tC^˰x\9~c2zl9Õ~:s P. 2w[/@,[uhxjC[EgUXAXZ澑V|ȕ|>xwS+]4I @"˼ ݀'+Y76qs{%ɮ@:8k2qsɹ+ = -f ? [D_T20Oʎ\K",VܮVdq(ߵL7Jj>7Ob%tus=8`[[u0_G8֌\CeۿH `-r4Iub)#},Kj)$uIp#NQȅ<^׫59Vj,>[yn1)3 DEI"ʫ~a|?rKRCx w0^T\5u Wpkqw@j-#miCZ~FJ>|oP&)S9#/ZgvkS@TB'IyηkbJd $CĘQ蕆M E _xؚb˳(LW]4IΠA.Ԛ Tx #j4xg>/Xq8N̕Sbst 㦼!zd nˡ(fUk;%ij;}%n8PcG f.SN[Ye{zdnB*Rg\-idwvB6QZo4*:d>?)v @F1ŁZEBjȓ=a}!|7E6GgWƱҌ/}i|q{+>: +kGcneMDv~8N5]RF8 K_Չ=]EY٭$ѥc\[{ӛg'JirYːꚷ,d50.x$ %|5ƺ.UAN8 쟠cInU8>4oɕKpU", y[xi*\,ѩ#lpF~{0txys0܈bi$^e W)܂ ] s*Sbn%<Eq[Mx9>A2ݣ)~Cn]q?6*E#" FNLtEFjlJzrRԸkEQ㨰nP%$fKh"Sťsb"bW\ܭd,S~%[&/љ-FBuŰ.[-H@<*RlDzb>%ifZ,_lydna%8cRhAڶ쬕1ڠt 5ͪX(g\|듋!PD[dt.(-"C7Ɲ;?gJ5[/}&{!e/0'[vIFr6oִ*a$N?Sd A4ֳ0l3|8 [-= g@5<Ұ$Aj}qV'2 IZ݂};f dT徢a~?:A롌Fy%*Qs s$^(@j؍"Ih[{-[SR۸p'dZ\K*lCb[d]().9|kWO$6/G'm[QwjIU5hLSedu'bhM>j\ M֮TV¼s I9VmhX=/U dڿg1g9)&lY;zH]<\fPˮ'bpOON%^=qfUE23FN6%n۽M&Nߤc+9i0J60l`ceoN TO@YX XKB7|iyc%q\|+92M^~!v8}S[#`W2T8E1Unj$Jl 3]CY";Bj-~;vC!5ke.ÞňS i+j1V\|UJTDj g>8y{ TPt,Bpzu%t\Rybó2θD7 k.3oDp9{o{ oςb9-4ˮtau[Q 1[sEg|kܝ.:1o-6ᆭ!3A c#JMﵰ; 0o0[>3jnN7]AX( zSȓ{,B6#vɗ(N1m#>yh=BU8ڴ@D}iǖGvU1dا3(@)inF_xz]O̱ tp]Cpɀ1 TʫxB*#7aZr%%v*d> J䔌#OS^o<xn?7xEgf諼XfF |DEjύvT^ WmQ܀0ro,sz-f/{UȔVV| kJ<ӮQ ם HYjNS~}m-6=#N@Q0jшÊ`ˮԼ%kyrB9O1)8T/6)$LF- LE6n}"Z/O" ջjWBF a%"C gv#S<&/Uv9JXjU/X0tu!۰Va'"xd%XVO `&~gY-\ 0 m$*εCN)MXjro@ 6 4DHKѴc}j^B}sLӂ!;rV0 @+-F}l9v21~Gz%k6K1/:2kbJg*ivc hv8?ȴ8 4Zp e7x938+ 7gȏr5zCÃ>HKn_$㿇/͇49z;ÄUD3{w Â^1%; !ߔ=2UOE- x[NXnM2(dp_;a2N Wp8&:7wjhE^[jhh>W}U `y5иHӭ.SlX^bYI|7dBSwDtdٔ|TV jO, NQ,Ӡ֒dYSh(]Xe=Hp\ϯcG#[FDKBsaNf̃ d~Dnsya<ٺO ֠%꣕F 7!0]Aqk{Jכ< k /Oοg!4e }''f (`כ MO9A߽C_pg~8 +F/1:?IZo#InТN "D>UM[]1Ig4*9*؄@jU=Y xnU qy IBZ}t]Y)qTAVm氱b/Dʀ|d]IφXlS e-L VZТG戛BcJP&sX,6t\{3{c_6/}d;IC]cz Xὼ uVnrssFn>OyȢ8q.Br BUvDEJ{.#K2K."3?՜Hfn'D3="7e]y58C,ORЦ?~MY _1:wH̭it+ ?z|G{jfHF!Oa)L`(.n#|?$#b Q20Hc1OK@}(MeU $9iTJv<( ~AalT>9+~!=rϒ' 7g7) Z#wƊ78!!́o͂Ģ*9{c¢\k9͒<=Ud\5u7_DUzP;%{F2<_@ >oQY M]t4`(`B!4 X˔ nivʓ4RTrA5$82&B}eTu5_8\(*S򦌓jW(F. @m&aNcø0=ZQѴ1RbLYF)4NJswh,H=hHXg^JPӀ 1cYD >ӹnM$<!h{C}Z*KG49)a|Z]7u!g¯Yn)Ԇˉ2Cd>ކ{SPG3L_!^izk4,qZL0^P<UB=jλQ6sgxkNE; .'6w }a*Ac]f++"pԷŹ=*Ra]18?AٿjjϜϋBg~9C{d=ρJ aQ~+ĞkKFK <'27KA9+1.zsjHI_7Pe(Jִ l3,=lk WV* [_s4>`]͚8#6}7w̄ dqv06۬k. մN2J<]m^$B*:@Z<07 /)Ȋhza5˱_btt΋칈R0?k̺\' 8泞tj2V`vh2ڀM}5itdSaWF4kZ"l3:uV~HhC&9جitd.~acjl3gpjMI08+MS=TAcOWM2]12H!_FI>5qדr,n݄?LJbѹuD=G Y?\4IX]ڬ؃Ҷ$T !ߙQk.l6sx$?SW)CE-\P(sI"nT4VCW $eI}=6lI` 7& YuSSBu"9cd'_G*.p\k(MqN 5ط?j(ѝ.ւ(3讕笒=.<I8>cXy&P8]#kkz/LP%T#Zz[#Ub4+ף" mFDa(=6NKtt<%O#pGt C瘺P6DU$8;˟shϫˌ.2PJ?ڶI(o!sk=ˌ?h+Z꾱"W4wUpJnOXZ:v{ V;f88_,7lpHDh .W5}λ @zbTy*uݝۻ *[tY2JL@?_Ftc(c:'mq3]p,FzӾ|tZJ_3Cumjeu0%,P( &\&1~-;ut% iꋎxWkyUgc`]BÏkp5}>8D:r= `9BB2=5>>.]DW3j`qSrysAz; o6,-?H;CtLSuQ,sCT{jc>L#Ĝ񚊔Em|w,ܱ -4>*v}7պdc:y_9E%Ω)4n҈u1),'oAg@AC6? ,U&D®Vcq'}>z5ƙB 2}»!蕈b1+?ƉW`a~lYF7X@d{N͠WNT,vv^Fn('2H; s$d@ɠL<׆w jCX1-x)p?FL[U'?|`g$m#sL(–`25QDQ Z4Ɠ帡Ua-GUrmY,ah"̽{l!Hd޴× 3< |keă |Sڽe\pG[e։pN \אyr9Ds%ju01O QGyG7q2Z Ht{.r|J3nƋVYF/jkT'09]oL">ڨG@ո3[mu! 7em EDd%Vb6`9,0Յڎtz;&W 4%cз,BTЙtšf A(|z7u:!zrAcldtIa'幘͑kU2(ojyOj$$DWzz. כZ1(0/N\Plj~Wj~afjZZu߶lYg$g!ɆGE02ij68έlL]H;Ϸ`P꽁ThTGgdiԬEx(p( 5c*ըXjFvPQﴇ]ǟ6'9h,ݏ)pgJlX=WSZp:]MZ$?t]C7 *bqͦ)xpbKwo)kW6 @-~^MfyʯhAr2TPsG0 = ql/eH!kQF39>Z Z7:ݻ|fۑt7{r*@ &t}G^ /6}@= prVhE׃p }WDlK"nz=TYobOΫH`2 LB*XT5Ԃo9NZ-m_H:TL&my9 a9&DWʔOj%,>W@k.Zѭ돇 PwMgٞmf*̈aVټt67Xro,zT,g,ǠQ*6_woը${+M}S+Zwu>Dъ&O]x)5V{=Z٩H+lЍU:)A3^J#:bN> K3gi+h4t]~ǛC5˖Y{ XԇϹ*`)}fݣ7 Xd,BI*%OTJۚ endstream endobj 72 0 obj << /Length 696 /Filter /FlateDecode >> stream xmTMo0Wx$ ! 8l[jWHL7IPV=M̼ su;Uٛ=w]yil;<[[j<=?׾+v`&ߴț<^*;~&Q>MS >_P{=s@dkx;`VY`s4JaQܡn.Uu9\Y6><ٴ.Z.4>Dӗ}~r:-d0VWk,8yLһʮӮђ[*mLr?q 5F8@=@)& 8Rx uD\j2HV0CzL] bctI g$`htы0\F0s jd< I6zg W qȐ+#k .bsrbmXK7ǵH7Gnb>&jؐu1VljOu$՟qWS/%1{\xB!K(hHTЖ枃Jρϯv=k2UKς_:~$/ ~E+7ˢ/ l(/} -+ZXukoԝE?ZKq endstream endobj 73 0 obj << /Length 739 /Filter /FlateDecode >> stream xmUMo0WxvHUdCmU^!1H#x?gx]OTm$|͜s_Iss :L;<Sz==׾f`*_`ɫڟk3'iѴ}=M;7rfnj-eSӵOLg~8 )ok A8 $`I\3`Af<Z]! xNky"7 _㓧q H`nḱRONH=CpB:# =%888QA~!*zƜАT?!~> tw8y*sύ }nFE>7*QύR>7G];~<6OIyktg>O:yұϓN|I/|yIg>O:y҅ϓ.}2 L> stream x}UMk0WhFCۖ,{Mlh$73nw҃ͳ,]}{\Olo$ɝиI}s \wwu8{SC߬Y]j7KF½ Q5&z& h<ϯK)ٔ?pݝ2ZkXvm)85];B7gѻ9x~;a`>W'?y:o&> ݋L'/㫃Bnz_7_t|~;:ذƦoiܰ^\0zu\7g"NFsu_E07H6!L@@B@q\s *Tg ]8 i/nTvc-+>c_ZZ~Z83z3[:ޭ ߬Lg3t3-g B|B|\3gg|2?z)BXIAup*^+&#sU-'H8qɼe5A78{Y-7^=!U endstream endobj 75 0 obj << /Length 868 /Filter /FlateDecode >> stream x}UMk0WhFCۖ,{Mlh$73nw҃ͳ,]}{\Olo$ɝиI}s \wwu8{SC߬Y]j7KF½ Q5f6ӓ09]nD#y~/XOϦӾZkNTĩ(wA-&T9ˈ;n>yx#7ahݰ^g=a}9_(,u;_r985wѩƆ56}NMM₹ 5E9qv7rk u/A )`JbD>`2$`TY'``9&*8W`TR&4`(ZsJ5RH+h3}76Xš60aG+gıXF888sέ-.x]/+5MĹPN<1\?ǘt1:˿#7^YH{upQF^odž1BЖEQ?1^׆ƨqА.yaf%+CsV2GYŘS&ƞjЙ??grCOe zYJ|֟uМ8gΈrY}Ŋъ1LkYҊX׊ӊѻߊigngfg/>Cn!>_33/>?㓁EK!c?RMO #SZ1|8Gxp4aj9DQK.h. ljeuȢn( endstream endobj 76 0 obj << /Length 866 /Filter /FlateDecode >> stream x}UMo0+J! ᫊"Rj.RI73W3njNelܬ;WW\?pu4{SlY]jwOusR^u5sx0ZYs.G7fԝ_= S)E~ 2~}[4v "N'oGQ70j,#z7o;l,j'Ouc׿zr<:Q:XTߙOoGB ;ww ZԲWL)\]W|, MHS"#p #>y| #:##0)%V 55)FњSjR@J]!5w+>7+>S} u B|)W|FL| ,B/^ &+jRP׊C8ƒI\U E'j\2wAsGMMD>Nwq8"妋:9 endstream endobj 77 0 obj << /Length 866 /Filter /FlateDecode >> stream x}UMo0+J! ᫊"Rj.RI73W3njNelܬ;WW\?pu4{SlY]jwOusR^u5sx0ֳ0;]nL#;z,gS t;en>r8S0qj>w};B U5gѻ9x};a`TG?y:o&ߏE]&AjZu/?v_t|z;:ذfhkܸ_\zu \7g"NyOܵڿB`ilB =@ )U 9yI(J5<T` M55֜RhR 1ڟS(yq( buX& &q,1+N978Nsk`q8 ^8% FMq.5Sh@kO ׏p$q1/]}/ĩ»p^`D3F?x[a 1ec!/1g)cd?4dK^| МQV1Կ'1t?ƺ9Y?ГrYs֟'g)437YgD3\ib-z3zs ,>G|ZV|ƾ3ֵ33qgng3tZ[Yog,g[3 =L3z/gd ,gz)R؇O5_TTV *M2GZN(:pTy 8kn":qw{Y-7]%# endstream endobj 78 0 obj << /Length 867 /Filter /FlateDecode >> stream x}Un0CƆ"Rjn"73iwWU񛇱='$I}s=}}N=C'u]U;o_ϝ>'eP~&&O''3Hyڝ^ S)E~;en!jأc4qjz( 3F&Vݮ=Ɉ>8~;D>i|#7~_ga}>^=(-P7cjȨW1 kl֏Gsj4s&텻 \݄Wb MLS!"q #u!`Nȩ(( LFUjp49cIMh ,hPE4pbvŢ !\΀Ѹ 8!\=#2:x 1v9/8vӺuSqk4 "nXCI8'ľ&p 2<Wcǘ,_8Ϳ1bxb Ài',ymƌ&Q/kC^،1ۜ1q, Vu 3/d Ͷb l͘S&Ş c,Xu ֟_~CO` ?'>ψ:sh.Xgo\΄rYgBЏ>;gX|&}ggg݉gt3zw3|s3߉YX/gKzJrg^od ,gz)R؇O5_qTԼV j M2GFN(:pTy 8kn":qz~Y[rbtDn endstream endobj 79 0 obj << /Length 866 /Filter /FlateDecode >> stream x}UMo0+J! ᫊"Rjn" W3nj<4nV~ߝoGM?k]{7[7rSmtɛy=TCA:fzgdf)OS`)?>RTC)s}`ݵeDcc0qj~?t 3&TdDBmq`TG?9N CC? F`RޗS/~g> ilXcӷn<7,^e]׵͙Ssu_U4H6!L@@B@q\s *Cn!>_33/>?㓁EK!c?RMO #SZ1|8Gxp4aj9DQK.h ljeuOȢnE}MA endstream endobj 80 0 obj << /Length 866 /Filter /FlateDecode >> stream x}UMo0+J! ᫊"Rj.R!W3njNylܬ;WWМ~8׺2{SlݤMƓ7}zn݅9p/]A:fzfэ4RS`)?>RTO)s}`ݷp@c`."w( 3&TmL2ws!yva`TG?y7{֍]? F`RޗS/~g> ilXc3t5n/.XjR˺^o3L9g)q:#eNC?lыѣc`83ֲ3#>w+>Cӊ݊͊T_|~+>Cg!>cB|/g)g{!>_|&~'a9K!B>,TGbPq> stream x}UMo0+J! ᫊"Rjn"B73W3njehܬ;WWU\8׺v=ߩonTtƓ7]ziTCA:fzg 4R㫧~R~J}6O7}w̭uזSIе(TPfw۷莛n˥?8ޛ`~?n8t/3NbV+պ};:5wɩƆ56}Χ]]₥+U9q~=W(_KdR$| 4hd52HHNsL FU*q8cMMh QEk%RWp gn~ȋCam `42W0A/c9^'-pʹ)pq[[i])9^W5js7 Gb_#xb~ ' ˏ1}cLu'No ޅ0&1Ie76Z cx-~`& y%Q?K'!/h],KV0d 1էM=Ռ3g1Y ~i?'?!>L9g)q:#eNC?lыѣc`83ֲ3#>w+>Cӊ݊͊T_|~+>Cg!>cB|/g)g{!>_|&~'a9K!B>,TGbPq> stream x}TMo0+J6*ħöUSEj9߯ IVcf͏睟ݛ{)^؝}]u:vzyu|CW$nmmΑmq5)M{`qjS5MJJWG> endobj 10 0 obj << /Type /ObjStm /N 54 /First 424 /Length 3088 /Filter /FlateDecode >> stream xZ[o~ׯ9(b.$ukb;iʒ#i_߹p%ֲ9877RZ-*DbJQ(-4>ya  gPQxmv"X/M$hXZ pZ0J(0Z`o+aa Z: |+zXY7pƁNfKJUV8%\o`wK§l4*`DI"$`⃈ $ЩDL, $TXhf5=|Vh**A_@D Ć *@Ǐ{u-EݓO'y=τa=LOX:p;,W!,:JӾ87{l.q0 Mk&0/ӣz.ރ"v%5g=l-l㔁m50?ɀk<:RW2j>w0M-f*s䄇 v-35d))(GЂp`?4z̄Tp#!Sm3± w)z<[`59.ߔǗ%ܫjU@>$Y]έ"ZиyԃYfжh?E htL ʷSYcx/h>wPLCQgXFDs3sm,#yD[=2namg(*c(F3ؗbuq͒ rFkm'ŷvڳzv:^'S F^=o{ Fx>̧%yef|8:12`*?LsZ hf0 #i==J `,h(E|xnT;ogdZ^{7wrMV2?uQ>u|뫕O~󺊍V.u]bN9'>;קTnslj,k}0> `y O r)0{5٠Yט䦆/3Rp-G2I5% ƅGf$=1YlVvH+RDȶ}"&r"B2heT\i8 ㅁ>}`p'2vK?fɛszNVYM/tt. қ"{l Ů'!Š_gKH$1Xk wIr1\ƭ cc!MKaLG0[݊ <679B112F81EF4FFAD85F40A5A546C741>] /Length 259 /Filter /FlateDecode >> stream x.QU[]ںML 0'i$bj wO H$BI8kO~}.dZ+&EUgv%^8"yjH閍"Am\kbI$Ql)`A1@bŦȈ4`^ 9bDbؾ_&)˪H\ZMV3df5K[͑u]Դ*햬*tO{n^n'j1й  ݾ (.h( endstream endobj startxref 201466 %%EOF survey/inst/doc/epi.Rnw0000644000176200001440000002362211457435610014611 0ustar liggesusers\documentclass{article} \usepackage{url} \addtolength{\topmargin}{-0.5in} \addtolength{\textheight}{0.75in} \addtolength{\oddsidemargin}{-0.5in} \addtolength{\textwidth}{1in} %\VignetteIndexEntry{Two-phase designs in epidemiology} \usepackage{Sweave} \author{Thomas Lumley} \title{Two-phase designs in epidemiology} \begin{document} \maketitle This document explains how to analyse case--cohort and two-phase case--control studies with the ``survey'' package, using examples from \url{http://faculty.washington.edu/norm/software.html}. Some of the examples were published by Breslow \& Chatterjee (1999). The data are relapse rates from the National Wilm's Tumor Study (NWTS). Wilm's Tumour is a rare cancer of the kidney in children. Intensive treatment cures the majority of cases, but prognosis is poor when the disease is advanced at diagnosis and for some histological subtypes. The histological characterisation of the tumour is difficult, and histological group as determined by the NWTS central pathologist predicts much better than determinations by local institution pathologists. In fact, local institution histology can be regarded statistically as a pure surrogate for the central lab histology. In these examples we will pretend that the (binary) local institution histology determination (\texttt{instit}) is avavailable for all children in the study and that the central lab histology (\texttt{histol}) is obtained for a probability sample of specimens in a two-phase design. We treat the initial sampling of the study as simple random sampling from an infinite superpopulation. We also have data on disease stage, a four-level variable; on relapse; and on time to relapse. \section*{Case--control designs} Breslow \& Chatterjee (1999) use the NWTS data to illustrate two-phase case--control designs. The data are available at \url{http://faculty.washington.edu/norm/software.html} in compressed form; we first expand to one record per patient. <<>>= library(survey) load(system.file("doc","nwts.rda",package="survey")) nwtsnb<-nwts nwtsnb$case<-nwts$case-nwtsb$case nwtsnb$control<-nwts$control-nwtsb$control a<-rbind(nwtsb,nwtsnb) a$in.ccs<-rep(c(TRUE,FALSE),each=16) b<-rbind(a,a) b$rel<-rep(c(1,0),each=32) b$n<-ifelse(b$rel,b$case,b$control) index<-rep(1:64,b$n) nwt.exp<-b[index,c(1:3,6,7)] nwt.exp$id<-1:4088 @ As we actually do know \texttt{histol} for all patients we can fit the logistic regression model with full sampling to compare with the two-phase analyses <<>>= glm(rel~factor(stage)*factor(histol), family=binomial, data=nwt.exp) @ The second phase sample consists of all patients with unfavorable histology as determined by local institution pathologists, all cases, and a 20\% sample of the remainder. Phase two is thus a stratified random sample without replacement, with strata defined by the interaction of \texttt{instit} and \texttt{rel}. <<>>= dccs2<-twophase(id=list(~id,~id),subset=~in.ccs, strata=list(NULL,~interaction(instit,rel)),data=nwt.exp) summary(svyglm(rel~factor(stage)*factor(histol),family=binomial,design=dccs2)) @ Disease stage at the time of surgery is also recorded. It could be used to further stratify the sampling, or, as in this example, to post-stratify. We can analyze the data either pretending that the sampling was stratified or using \texttt{calibrate} to post-stratify the design. <<>>= dccs8<-twophase(id=list(~id,~id),subset=~in.ccs, strata=list(NULL,~interaction(instit,stage,rel)),data=nwt.exp) gccs8<-calibrate(dccs2,phase=2,formula=~interaction(instit,stage,rel)) summary(svyglm(rel~factor(stage)*factor(histol),family=binomial,design=dccs8)) summary(svyglm(rel~factor(stage)*factor(histol),family=binomial,design=gccs8)) @ \section*{Case--cohort designs} In the case--cohort design for survival analysis, a $P$\% sample of a cohort is taken at recruitment for the second phase, and all participants who experience the event (cases) are later added to the phase-two sample. Viewing the sampling design as progressing through time in this way, as originally proposed, gives a double sampling design at phase two. It is simpler to view the process \emph{sub specie aeternitatis}, and to note that cases are sampled with probability 1, and controls with probability $P/100$. The subcohort will often be determined retrospectively rather than at recruitment, giving stratified random sampling without replacement, stratified on case status. If the subcohort is determined prospectively we can use the same analysis, post-stratifying rather than stratifying. There have been many analyses proposed for the case--cohort design (Therneau \& Li, 1999). We consider only those that can be expressed as a Horvitz--Thompson estimator for the Cox model. First we load the data and the necessary packages. The version of the NWTS data that includes survival times is not identical to the data set used for case--control analyses above. <<>>= library(survey) library(survival) data(nwtco) ntwco<-subset(nwtco, !is.na(edrel)) @ Again, we fit a model that uses \texttt{histol} for all patients, to compare with the two-phase design <<>>= coxph(Surv(edrel, rel)~factor(stage)+factor(histol)+I(age/12),data=nwtco) @ We define a two-phase survey design using simple random superpopulation sampling for the first phase, and sampling without replacement stratified on \texttt{rel} for the second phase. The \texttt{subset} argument specifies that observations are in the phase-two sample if they are in the subcohort or are cases. As before, the data structure is rectangular, but variables measured at phase two may be \texttt{NA} for participants not included at phase two. We compare the result to that given by \texttt{survival::cch} for Lin \& Ying's (1993) approach to the case--cohort design. <<>>= (dcch<-twophase(id=list(~seqno,~seqno), strata=list(NULL,~rel), subset=~I(in.subcohort | rel), data=nwtco)) svycoxph(Surv(edrel,rel)~factor(stage)+factor(histol)+I(age/12), design=dcch) subcoh <- nwtco$in.subcohort selccoh <- with(nwtco, rel==1|subcoh==1) ccoh.data <- nwtco[selccoh,] ccoh.data$subcohort <- subcoh[selccoh] cch(Surv(edrel, rel) ~ factor(stage) + factor(histol) + I(age/12), data =ccoh.data, subcoh = ~subcohort, id=~seqno, cohort.size=4028, method="LinYing") @ Barlow (1994) proposes an analysis that ignores the finite population correction at the second phase. This simplifies the standard error estimation, as the design can be expressed as one-phase stratified superpopulation sampling. The standard errors will be somewhat conservative. More data preparation is needed for this analysis as the weights change over time. <<>>= nwtco$eventrec<-rep(0,nrow(nwtco)) nwtco.extra<-subset(nwtco, rel==1) nwtco.extra$eventrec<-1 nwtco.expd<-rbind(subset(nwtco,in.subcohort==1),nwtco.extra) nwtco.expd$stop<-with(nwtco.expd, ifelse(rel & !eventrec, edrel-0.001,edrel)) nwtco.expd$start<-with(nwtco.expd, ifelse(rel & eventrec, edrel-0.001, 0)) nwtco.expd$event<-with(nwtco.expd, ifelse(rel & eventrec, 1, 0)) nwtco.expd$pwts<-ifelse(nwtco.expd$event, 1, 1/with(nwtco,mean(in.subcohort | rel))) @ The analysis corresponds to a cluster-sampled design in which individuals are sampled stratified by subcohort membership and then time periods are sampled stratified by event status. Having individual as the primary sampling unit is necessary for correct standard error calculation. <<>>= (dBarlow<-svydesign(id=~seqno+eventrec, strata=~in.subcohort+rel, data=nwtco.expd, weight=~pwts)) svycoxph(Surv(start,stop,event)~factor(stage)+factor(histol)+I(age/12), design=dBarlow) @ In fact, as the finite population correction is not being used the second stage of the cluster sampling could be ignored. We can also produce the stratified bootstrap standard errors of Wacholder et al (1989), using a replicate weights analysis <<>>= (dWacholder <- as.svrepdesign(dBarlow,type="bootstrap",replicates=500)) svycoxph(Surv(start,stop,event)~factor(stage)+factor(histol)+I(age/12), design=dWacholder) @ \subsection*{Exposure-stratified designs} Borgan et al (2000) propose designs stratified or post-stratified on phase-one variables. The examples at \url{http://faculty.washington.edu/norm/software.html} use a different subcohort sample for this stratified design, so we load the new \texttt{subcohort} variable <<>>= load(system.file("doc","nwtco-subcohort.rda",package="survey")) nwtco$subcohort<-subcohort d_BorganII <- twophase(id=list(~seqno,~seqno), strata=list(NULL,~interaction(instit,rel)), data=nwtco, subset=~I(rel |subcohort)) (b2<-svycoxph(Surv(edrel,rel)~factor(stage)+factor(histol)+I(age/12), design=d_BorganII)) @ We can further post-stratify the design on disease stage and age with \texttt{calibrate} <<>>= d_BorganIIps <- calibrate(d_BorganII, phase=2, formula=~age+interaction(instit,rel,stage)) svycoxph(Surv(edrel,rel)~factor(stage)+factor(histol)+I(age/12), design=d_BorganIIps) @ \section*{References} Barlow WE (1994). Robust variance estimation for the case-cohort design. \emph{Biometrics} 50: 1064-1072 Borgan \O, Langholz B, Samuelson SO, Goldstein L and Pogoda J (2000). Exposure stratified case-cohort designs, \emph{Lifetime Data Analysis} 6:39-58 Breslow NW and Chatterjee N. (1999) Design and analysis of two-phase studies with binary outcome applied to Wilms tumour prognosis. \emph{Applied Statistics} 48:457-68. Lin DY, and Ying Z (1993). Cox regression with incomplete covariate measurements. \emph{Journal of the American Statistical Association} 88: 1341-1349. Therneau TM and Li H., Computing the Cox model for case-cohort designs. \emph{Lifetime Data Analysis} 5:99-112, 1999 Wacholder S, Gail MH, Pee D, and Brookmeyer R (1989) Alternate variance and efficiency calculations for the case-cohort design \emph{Biometrika}, 76, 117-123 \end{document} survey/inst/doc/phase1.pdf0000644000176200001440000036142612242737227015231 0ustar liggesusers%PDF-1.5 % 3 0 obj << /Length 3341 /Filter /FlateDecode >> stream xZI#ŭ<A'F`[ZZ3UTjlA*o#業+*n+heMS5T7k=n9S[=cvum;lxT˟{lxmf {? ~-lݜ/߼ԱZE ZնBL;tC#!Oz%p8^5m-ʶmsmTΩ|^O355,b9WS끗1o!/w{hBZe@Y DIoam ,J OTpd=QLyj56F'-wwGE ~nT4gRxGnla_;k& {Kʨ0M]2X76N@O-OV6ae5FxH/ *iN"@0jb'fE2Z>YT['wOC)upqHՊx?~BrχX:]zcpcl,E~95,iw`ydV}Tߘ.= ۝͖l*FGT~Uކ>B8g.%|3;nER\{ ଐ B\{bc//eeqAVd!QSxVTt z3\XRȻf3$4v{a qB=,԰wCa)1PD=" ~Mp2A}OA v06͛4%`*GAaq=No{͚XEDwCj{U!!]B[! fi"vXTRQ7`lIGзZ7ɻ,IZ8ݥ8p~8Ɛp:{l@3NPI&e S&#A$wef:@_HXP"ὓȳ`T7OuT6H2NRa-b`|S<551xZ VQ둬DS x6`V/u5J`1TtUE^,E~,UeJ>uQ'$A: "n˙r+ P˒CA#c/LxqVHVZ`Szd mo(QQ #H6N|eMm1|[6~;Hkaz72 ᓸPB`emsj$[=6Zm{;MϜɆr6y9aF!%%޻^x:5;2}o{ƺ#XUq94m0\X 5g"Fvs ՂNF,)o} jpu)שy,I'1d8 eE"\ '3:i@Z=E~sx7g,%@`YGоg~Z$@a͗}*4( c7>?L*O#3V9n&'"]є26xz` ݚ2nM?ïi0itIl^vx8f5VRQ<?>~Cm$Ib·`V0="9F !iJ8.H6`H?B>>XHgw h񩋄5**Ϟ||ښO8OߝyP2x)~LM8P*aj ЮF@ͱxH106Խcn`=sqʀwA?^5(sx )^pӣ~5>W꘿95_.A}VFCscL=ӰZ <>Vi4+*N>k3-A(D})}ҥxjt~ۀb#Y[h#\@tMSN 13q\{3#4ZXljU0~p}J ׾ ͷ#G54Cx1̭t)=Bm[eOƺhâty8ڔ^Nͳ}u;Cؘp.K@y7ǒ3ys^gysgN2:iz,S5P!PD]g2xczB'=..~}HP/Di|B YY%8[7rg:RG;]k{)QH<33z[,z+ .KN6V1v," *ں [t4 W};W|5NIAљ%SkQ>$ER{@r~r/%K*mS4&I2QgfǹChI!؋UfD1wIJ2CJutȷ飷\b#Ib]m r׏;.>S VuP>f"K=tPvC%Kn7R;Ѕ4 ,U}@B:؄hF Cj/Pw)[ȯS9bf{6YbW}U!9x2q47ZNoߛj4%BMM endstream endobj 18 0 obj << /Length 1324 /Filter /FlateDecode >> stream xڽYo6_a`g"R؆(Ccx~G$Kv~`Lw<: Ng;Y'K$N;q2:ûSOt00~;>0h hI?K`04ڄl ſ w'EdeJQ"|u$7MH3KS#bwa#hp .$pa.6pTw<1\`|,^/0>5<@rhB9ASO xvؖ?ZNV!87tء>|6 ܖʍCT'EL#1mɱCA<6MΉ:΅[DkӾmVm>Qݮ$ ZoR֔ gJ$AޓIwa(\wsT6nR iwer+v}`jjѬKC̡T)W4 ^juM{Cfsb>3UZn~)$:5,J2/GaJ!Pl@vn]m[[M~lYI$6[+E] etI] aA,c꾲g{أ|@[ 0#Ԅ;#&:kJ VAʿDeR_vWZP6WLۂKٶjKyQ-Sxfx2]eMmdjk2 4LQyk((ȉ%+G(:f):^+D4?3#tw1NZ4Hj`Pį@,Qqx]{Y C੡9iX{ 7fw$!0v}K&6_mc$|gv^G9%zA{=:ڔ4lðGf>rm^fg35Gbvd L)ƕýv·R]B8a9ra AWsUmjU/L tg€1{KKɿR_fc=Ya_ᅊo=j',::vSrX|u=OjlH|_; 1ȱ Y:]^-vN12ځhh'L勻<*5&w?Qwr)YJ4g-ݛ\P'}Ԋֈ+|WLN\e0-ƩXҐAq@|_ endstream endobj 31 0 obj << /Length1 1492 /Length2 6277 /Length3 0 /Length 7280 /Filter /FlateDecode >> stream xڍT6L (%H^w#! JI#M:*AiD@H/Js=<3=3;\ƂJPL2]5  "$\\&po;  #2PAk*sME" QHB$)D@鿉H @ tKᇂ;9c @ҒJ0FtguF `ax BH<q07 %v&D0q0 6!0 Z:}/_@+ =?8 wu0E`o0 pMu0@]VG{`Bh/¿\tw!0h_S`sS\W:6E=`Z8&؜`8PZDRB|!¿y~_k AH Xv" @a W$  `0'8?ѯ0ǿG}l; D:zj$*+#}"bAi $&.;?GV0+ KOk^3!OŁvk_Q;RrsE`wuC{aCy="h]|=$J'V p > uA@`cqW )$K(؏+q@zN0 B 1.kyAG$WMA@1 q]_e/Lw!ߗP8 _ k/z7׵׿/!BBd#]#Njn}Z1+0jIA[4 H)crvIPEfK#a̫4ֳ)Fc+$ӣoo*53 (^x`w0(9m+.zjpFB|\04&t!g#BG{cu+{)$A[%V "Is&"LYpߍ P^˼1dh=JC$ [^>l-T<3CiȆ}ۼuX &dƍcci]I>h#P|?\Ժ$dh_/[e{0*Kn꯱8(]xUpW<,yKP:}tg*|_\oD6rAl-*Jx*)@0z!t{%=Mtu݃“/8+nmy%ieӷtLѩ^KTnjglǞeicBmB.6έr':) ˮa;k77sq2]$lJeCbkOǖk/^?9Z1 nQ)bOW{.9^ I`0ЪL9`:N r(zY ivd"ޣƦL(e֮mU[%+b$ oǍ2W1>nQ4ll~Zgehώ; ܀]cp@6hebr8"B S 9Y#AȔw8:+F3} eW.EWWޞ e'*kuL8+;gؼ;]X5^ihC d?~a&uy~(9g'8Ni )'[˖Ԩf(}+s lhYnfËU\[yof9k~ i 3DP4_6b"yw/2Sa?x5F|#]BŠ-'.\2өSnꙚ!;tp)7^3dhZ.\Dр dLlQFii e;E77v` 3&Nd&?afSHs+` &ZR˓&I<'o8\&^ψI̠8P%҃~jzP)^Tu;1ӦV>OVtq+ hiC=B׃&:)FVEgOaKͭ/GB5p8o~PLQDRi*nn8!wX~䄽Օf}qՠt!hdź+_0J#E I=Qԩae?#7.JXSӇ֩3L3i=ߩ3X[~F'TүVs;ʰYyթզM'2kEsx9ZQ~$Ԏϧ;gP(Kx(BȡзAbkPʀf}S0i.|*Hc &D\˲{AklM磰z&mua# Mɛ .dO͂2EHVHx-5~~#SaۖݭOuP x7PĆ-dK>(|}S@"Kx[gzOf5Li8`RegQD fףvF,uF)qP3_ɫ/'9l^T{ #{V '-.Ŝc0m#r0LT.-ȅVM=OTF CN94-`aMi}G]"cƟ/MI2bڨmJsJo* v7,sdAk8nY,W@Ὄaj5Wޜ>ނ%wOiyaЖ_shgh*ʒiV7Ѩp<F}֎M/ M{KByhw 6 nqe*y>} MQxϧ&-'ۻc]WǸ?:}" ӤQYux4(Y>y¨j7Yِ;~NgHi!vS7`F.rr#%uϾ^?Q+TO.$ڶ Yk[,^uUW/.C x_tgO2=n)IGvaC¨sӄg8vx_B{)[VSC.6Abg^@<ʦCbs[ލ|TT\`ts|y&7g$[B~e矐b yY6?3y^M?xfufG$.:7<.":n5աJbCh;rQ*>9[kusa%GtpeJp RpXpuZ&>VT XWVWǨl: Y@G:e16;U{Wm\҇z9SVeڒþ;?կ<&J>OHǯlf5mW {ZаXͼmTUL)dB 4FUɜݞ @WfW:t>U+F("닓'.|3yO=?|rn9r<&GHw۲ VqIQI6&=,~l0/;-Ev0.[w:~UW68B `Cf̱VD`֡u/wi4O+nBxǣ!,s,}ՖYYSC_\7OT=w]>G\}b2`f^nY>3NyV lnFڶ+%ucVF+rV<$Ƀ<c:霪5 jz*RH53bn#L 14oiL%uQZdz$1P/)/C:X2kg÷gu aj`٥Zic;^Rq8$(_ ΛthSMV:Hh>z/H~_ҵգ4Bbzd㈘~Q2SrY(~p4h78x0<]qӔ@ ldB^NL_r?&&FLpJOjxZKrމ؊C2ަCLrpZm6ʝ)n:P&ɩ8Ӧǁ)-`ly bY@w LBٮދ r߾<-Xm3S26kf*[MU<qok#ظ//hc} yч؂+' lyI6Kݬ&<_Fx&7)>oO Reom,y9 g:H} Wܽ==^cXGB2#"ȯVЬ7+w|/ 6J\mďT$V*}WE>sQQ7zCYMKiAQ#爃*@,愣%JRP9:qNQ 23wp.dh͎+"%O]N&>HY99ru hq{qbEbs.0.@\yG`D]楅~tمF`HΈŗ3 ÏJ_QazˏW #9˜/O3ľܗ_yGZL/N=[^ZZ}7lQёKi/Ej\$nyЙDS >vPۤ0BgٶT;J˔ ݷ}Zb#JHq8H$$֑[zUt 4e99D>DKخVop'3lI:/ 穋,#a#܀]B-:hEN$f4vk~-JbT]8ҒãxDQCPL#m>rbX0T @0vT-cD:ۋ{j>\ !#X 8쑒]|̶v}ZчS'6ܞy$*} QnjZ0^a?q3J\;qNHe)*_]gq~LO3[+~͜cnflYif6[mh l:doE9*yG/r~ WA>g{o [S)GVŋZq  endstream endobj 33 0 obj << /Length1 1563 /Length2 8528 /Length3 0 /Length 9559 /Filter /FlateDecode >> stream xڍTm50H3Cwwt 5H( tJH(Ok}ߚ{H!c+B]<ܢ@9uun 77'77/Qtm0E?"`&BC]ܜ<|@AQ!Qnn /7߁P(PsA]#dfN8k P;w9u0J0#0Q..N3 daz@@0 wQjQ0!?P[ `} UQj.k8@Nw2 xA\쀶'0PSQd\l~|;}tPQFg?5C"8_~D~O[݋utzl!.6hظ] n`bMmv`$P[XOXv=~5;y~90= |A@$ F  A\V7mxM^a6P'_1s lQ)+ p9x<@f۪ub jf4Ѐ  dWxwUOgr8yq/h7rCWC n:^$~Id\Pxm Hk?mpȯ}7w傸?] ""_/ _>5N Ap8 p/{$_^o8]=g?-uт"@._Hiy\:"~ ޿He/3+?}?WA{@A{BUk78~5z?w ,BBC;d(<8'1΍x9&̱ S Y <9s?}hO9hwhfN$QⵢRQ{lu|O`".Sz֡SWFB)bjDo[OίB6cL_jdЩw]SZ\vSMU1y?̮ q[ů36-6,}?ې!SC^4=ɒe@#>G\MxeZtv%^oX(ʿ1 6* .$]ގp,yZ:)QJIvҫ(pFɐ?A * }'JB1"n4s~gmBV&lW; Y856NIRqZ7gUV]xkzMjyxIф9PpvwQ"5A Gnq\`VpfYnY|#WB S ۩A9Ԍ WX}71vw Tq5Qj>O;G8])SLzea2YQ0> _3`Yw[ЊF S2yG}pN.TIJTQќl=]󨰽~X/k_{A=?4;|K,LC3jbqy*՞cfgB{J`ç<@7唺R1jgyw sVdr~&2@UzgZD49 X؉BmGQ9 `~sXXZ; `n怛A:X@YC;).yYK؊1G !.9Xuh?L9ЪnZ< ) L~_b(QC劊,*Kr]c Tșq6CX}3_箕2} pxӖ3Xq|F9zEzբH揝=X :`ly؞X/p0eneN>gtimbN&u:NS)<L[r`W ~̰V(S nKY/)L6l$.Ƌok0{A"AQ9ejFrMgH{#.(b㍟ڤU}Ɣ$+Yk3 VJwXxgϣ9n*-w|x: !YD&5͛:Z;@_`Eﬡ*GXFոg 1":P)ICw.5tZ'lm¤Ͳ(7ul!),|#fAĈL >6>ryPGN+?xIP{ (y3Y]sԍj_ GuFZb<{x6`?ô+$$ XH^Ca)-M5VK饚 qywA{/Ρ0I}gi[`7K򋪧+_[ d)Uu^I9Hqx$C^uxCh.3dxwQk|aFl~x.?0kḠ7apӏh&HDtpl*Fvi&(U:}^7Uzp .ha`^=1#uh99)AWyzpK+{<&C5ݲ#Y2S 묗rn&&ܺE*>;c.s y^ss [''.8^qmaM&A3'B_BR,H6`EtMnmEBN;wrԧE0ڔf-yiza1܀ƻt\: ;A+Rsb-;~*'־B^+R{ٖvBBVBRL{8 m6 Jlwq g-B6JѪ4Vsq'.ʠ7~2ٮHぇڬi2ۭT|j婘ɉ^0~xOn߫Ru.ǃu^{b38P/Q7૯+d5#oMRnu4|a5g9ȼ:_ɚ;#E>8yqf#3{C0 |k=4\p[׌W %e:^&4X c>Z 7{IXb u-k *b+FpwQC3spBMr/d6w%Vq)GYN̼f+`l$/RS08iGXjHI)\Rdf25|Q7ef0u|2ϯr hbẼdpq0.#S'R+imb:1.9 /xއג.4QUݛW5 &߈I)vyfL(X$WK(}6lmj^ڀ'$}=V2~uoɳbàbQWt{/Օ[E1qaG-k3Dz\Cƫ-*F'c ?siюd GiݼKg8,wʦ~ISR,c)fE7Eߒ|Oa7%CaWEt+%CKʷ>WR|#hBqR)nuKF-&(]i) [_Hc gxxNz$-ٗ~{vlU:!<;u4~&5˚m|d$vf.jg}q FAD)Mpq|S /s*tBbW|ACNgz0:i/ί$01P{R\88?OIX[k#4B4,9~H1B\(|bhvҙđ8rDVzOWg:}= sZFʦ]t[kn&E=?|kL^rEIV%l2OT g@,B-*'Cx8&^diTWR^9EI8iujǍz߼GP(.Åf؞Ƽ^ޗhbeOZvJyLS?j쪥7!jDCn=M8rX!nR53tOJJ,( *2R\`Sx5O<9TZt)ݸqsQR%XQDR*nU![VzS95=<vq K`Ϧ-Q_Q=ZÃuDܥ“!Cs+^ ̅oS`;k3R'|Ѷ>|͢=(,Zy2h0Fԇ Luěa: K)>BKшYC^3!O/0-VJNtwĘ35pCfկsl-Ғ`NEh[92<@QáIS2' E5[] j(`ضa$@iRIFj:8 7$&i-6 `}ooEg'LH}H=H7љޖU~lmHZn)3Ok7:Vu:=t_1}J ~'\y*ulJ k~5?qh?~ KqRA&0ol?4dLJNYcu\Hl\(~?EuD:{X`/K* aR5kˀ0-y B)//欱yV5?t2d!>rFT+/ͤة6lgZUXj$a鲆EP_OIu/_/$T~ס4lO1%Rw(0F=m;&+=4Н[z^hd s醟 4f`23|[*[Y%wicnIg4,?.D ̻sD8NUdViD&0IlDU 9 +0QQ N*S .PAͫu#s 3ìuhMto2޼4De,0رXFK$e%ZHz* miGI+<[r#' i2ڇ$ \_SmvVаvP@:{>GvAs_ X܊Z} hnF/qϤ95?莃ࡲ[#Z +G[+N1,2MJ]&~ XK:.ȩ?KӽXO N-i_1y>\&Mpҷ_@&3W}F\AKPÚ$gm ([W"yC|}IJEF\|y$NNw[N]9O3 ]=G1jâ#"؎sRѴG#m~]~5} 3֑B<.kC^|Ie@ 5'Fժ&Z:4O_ ^Lʧ=aG<6E}%ئ_t-3|=rq|sA{X*=+]Cwa1a(3ngghmeOQ{nG4)y9 .T]:*nW$9hߣ)PX bHɞ^}QJT!v+YHKb谶\sI+EQ Tk߈.Xd4&<ƻ~c: /?" g޻Qǻ &3O"kȌK͢"o-.p 5Psza9> 3S*߼F$cK)r1If,Ji uݔr?STr9?AA Bx3)nW9`C .᫼si39 Kڝ#]^vjWϷ)i)E?S@PDhܣAku۫ʢA}o_Q7QϬ#(8l\YGbvÉ--B'O>@CRnXHcVRӅv,NN"Ȥ$-#WT}*U(uVy y&s-|7:,3Cۇ'(l; +ʂLk`n9{HJC1E^} qݎ18fӔKm|?=,O0*#sm4qբ{?|*2`KjVj xa]2 $栤Ex]&p tt7I)MX`V)3yչ!{V-LOsayB67eåز?bͤ#yVRB5Bjzuefd:g1}GcaEoSǕt X̳(ܖlA )He/siPi(yT׌0RcIRlfntu6ا5Hί XL\,a\ 88nJP9LYIλodN1,m]WM!= }mFce#@S"LZs`r2`tJC&e2G#o$:Vf-%Őe4Rq`MUc')7S1w_:xb`]%g;GaU*D)RtEmXXy z\j4qJų_J˜K0>7\bc*|nӪ'dƲmҎ$ͭVj}([J6΂U"~)y2o0gŦߌ!x endstream endobj 35 0 obj << /Length1 1422 /Length2 6376 /Length3 0 /Length 7344 /Filter /FlateDecode >> stream xڍtTk/)HJ 0C4Hw*5  1C -"RJKHIwt4(ҠHz{޻ֽkϳ{-#@@I aHg_j<6c _P0S#Q~Z8@D%Ab@ @. P{lZuǦpu; Qe>8!\p Z`Uv 0(_)8HWIooo~?^ C:Pw/-`6?GoCzݡ=Pp[;U` q8kqu7?? @.`/ n9C:*H$/ v@^`3s0@E^F 9(+ ꖕᶊ(?%;v_?u# v0/Fp'TM/ =  nAWzC_Wo#  C젨?<toÿ%<` 6P{(5;E/[P7~hml ?'(@b ,7Z]0ހ$T!  _ke.@q @ /eQRtvmm?`_(*{"Qk@-]MVY j toZy=| a~=CՅ!!,P5ap.AEeCm x&@ pPԒe8akED`ww/(IB-7p@a!~~( *twGP77H8քUyIc隆 Y"'V 25JTzA* ng_fj|OU3NߞO&g&nD6IR/Yއu󮬭}ov"1VΪtMJz U}d̀ 5G֪K/#0kH{W[X$e R ^?`}$QWƩ4^!*yCoLAWBQzZV`Xƫ \g;%WCD]ӭFޯ>ZT?a S!t y7HH_[J0Z`pI;g$T63T>ЏK"ϾgdiT}窉dG7Tu WNd}Thi6߱zE$ !|h[wbkLtz\٨#Sό;?FF{(A!f}IiT- M[ā~Z{0VgGA{IX!5.w{}geI=/Y\$ɠ=8nwᐎ*i5R7|[VC嘒=׺xһM6)"JgVE\TF Gz^n7b3M,sl@Hk6Kh2DMiçZ&\bja֙v2uk)@r3!j,"/XZ׺XLz(vOf*rh-:XĞ_k؎Wy!?I}S!8a 6#gI.2U?8W,/nX N Մ̺ ɾgH&ݍBy _}n&=bYiWH3gHF8TJ9S5qb0Ry|vSNXğ_`6|vOCL\*B۔ԭ+bHa>D'l?CUaX%2o漫 C'Q4ytq>:#pB^ ,.CW41rVvtyϨ%57ڷˮ'j*^k fnx¨=gP#h-3)I,Jy{ P!&lɎdp-ki`#2g5 ]~ˍ/x) :o+lɉ l4S{/@E+$F>ɦNyy?oikP"$/<Uk xIۂ(fHGbђ NY3{- B2fI\>٦NsGtTajoLihxws 2g q=檝yU\yp稇窹#\V8㍈bﴏYN tWMgk,eٔ|0^Y+j V/8ҕ]채BUqV7ʼnX~IݜJ{9n"U1A]ӑ'|>1K_erlFwR:%l]ei,x$NQ<5%3W%?Yts :ۉO^WyR7oMQFO*ƴVxQ~%Ze R3#Q}>&jv܉n"^3)a~TYBR|XZEl&Dj;3<.Kcgq-sfntQӍF6#Xkhsc T:{oRQ̳,΂rHTzq:t(r;[|IA{*}#8I=Ϲ"-U4}c#^'~Ubp PtիűKi"+^~sW솕:Y)w_kIQFlDtx_ވ۝I-.c8rr'aFL+`NN kyc%]Gd^|U $ .atS[?^6{g/iFkO6rOTo-\=" #^ -(}*L]N|i_Ӽ3(94s@ =v#;MSRys{?BiT4S|O6_jWhgS]±) 4OYKO:$‰ZVsa=b)wޖ00eO2j>aHێ\lV\ KbmzE44uڔ:|,TTjdӗWy|yÀz`Ͼc5E}2uf&.u6$oxa5V_b(.xl7Əŏ3mȴ؂V{iaxA1[,zƧ9?l8Ee Vc9x mSr9-K^2JZ*t]g7Y_<9;'f$xtηJ12JM/8yiu[kfLA}Rҁ(&LudO&T#Zs_OF5"AA;X'=\ ҕm`3й]nOfjs޵rѾ/z2v'$?h knՑMz1a:Ơqvm&PdY#jNidQ$(pR]0pI'1 pK.xD.q*C;_oZQp8?aK/~/\o2K(ro=p-SMzs4\~C.~˒f~bd$h"Kpa/V#9<稴Ղm8c5&.挏RRd OnJtCmRF'Cd` :XfI$5Њ; >urch,ܭfwKV3R+ʔ=.O"5MWm!)d5*793_So(˜w1Jt`RZVF*) aώک<M_wMgjӼO>Zx^)YP<ʙ|h(B31,9œ֝酳 te)צllqn ϾG>ucš!nnty" ec4Yηg+;:Wό0Ǝm&JA{sa؇/O)'Kc s[dž gad5pd^hW.M%CW z 腌iN!),Eu{];A=qؒ;{@);{wn,xQ_-%\L Ќ+֟a;u=8os>!VگV䤧:Mfܺwl8d#Xe> eax!'1jٞXl!Y=b_f ƋG`ؔh9Y4I/:&%:u Z!0Qd7=$H(RMUzC~Y[&ͶM.XXuIk.JV#Y2VBOhq|{NM$] 7&l̪wCxAp5X̂u 2#6`P%r*||n1󙜉K%!I(]JĎyv1k\8~c!Q`)-52z#?+%:mzMn|_. S|Yu]A2]q{NXN]א0)`\Q+BY6T ެ(¿fb8wR{ѽi>jj>WsUQ+xٶ6%t0d/\NZ$x (jA1gORnN7$AXDPBS-Yk%Z?:XY \4cb si).JITE'XlĤ HͯFDe(&\&vίjpmS!ZV ;^1i1"fbرY`cbt.9D%GߪG=h .r+ð"6쳆^D2l0>xk܃5W =lIx8 l=)q|&"IsB@ endstream endobj 37 0 obj << /Length1 2242 /Length2 17544 /Length3 0 /Length 18896 /Filter /FlateDecode >> stream xڌP CРA44NACpw%efΙսU )!PH@K Qd33‘*;Z##U;ۀ8e d4p| 8؀NV&+''==㿆6agsc -@t#u775s|濏 #J@{s#@ h~@?ftt...6sG3"h 40@Wdpe3sJ6&.@rx?2/(IHl2'7Zs"sП lm @n S '*MH 0ah``~O  !Ae5@UYK ?dlGNt* s;'LEpLzzz6&t52^{^6 ^&/8g o"8#hj] 4 E{ ?>?鼷 ?K'/.JWm\4FzM4')70sb8=y?mA񟑡 6 P,F?G,ouSMGm`mnVvr| _S5_,46wZ GZFsQsW_=*[6,{},{T1x,{{7ҿ#]lm-=5@WҼWEM`C 8 Z2%ǒ}wtu;CݟVE(n _<`BZ~|֋U 8?w,PۇFSC4ΉI>W̵de4x~WaU d&J%Rۯp40cڑ++ ꏉ7BX*8(| oskeʌ$ؚXSdXBP#G.j\zA^;ロRA]CNjrPola튾?:R">o|4r,Ld=YB]"!LJ$'u⹤(߃]ˏvX&@ii FWA\%凜/`= cD#S$Vڅ̽M.X2muW_*.uxiQH/0mL'‼b_To[OM<5oJy;5IօBU>N=~1*(M 1$O$Zf\rCIikt =G>Xx&$MHYB:)$\I [#$9&XFZ Ougxn^|7:xItԅX%!R)ijF{|< ~J߻;6y]b!_Y凾UUi|C|lǘzYPZۯ]幙y'XS쥜~Ab։;Lxݹa̿zj۝j11;iKTV>cEЯ^H>Р/v`]J~|a7J̄s͗5-벷HQ菨V%ݒ@EUh5A<}UUsls_犨Mm?E J3hڤ!|] UCQ>\(dU"*˿:d=l_q}⟚0/c#$%1mSLL 'Q!'j '3 &jkAd.V{$jh5.kA'ror?Іz軕D*T JVލ+d\2@Wpg+D\+"] K2eF&mڄlV~D;ԛ@e2>V@W#^1#yuBH:A.;\5\J ۮG ~7%ˠRl?&f8?4&#?h<Ȼ2eax=q̣@#faY~{&)Ղ~`HO95b}(ed)r]@q`JqS슡@ȫU>/IH¡ÊNdVAi^(_zA+qޙ\QUER!.X ]Mp V 89>3 WtQ\0Jͷ;G讥"b\-+ v$X*7_d~䎱-89ZI 1īXpbzv"&:rz CJ%e[Q\ԓvmeY^ប=+ 74g*T:z{nUSD#Of%`g5vf~`KT6N\Uf|iA1CR6+ѠVu3`kMrp@F@O}Ìg[[{H haﺚGͻ<9_Y=aTlEX{9 Ci2#Ꞧ8ȗ-aƯ$Nw teioV0] ns^Pg^@%Nȼ·mҙx1' l'8Lx=76iG.Z Gȉ}#{l:ݒlrFYGSB.dǒt?+cAY/ zQx𡕍x U4=XcIŊ>g r jݺhsq[]xEc9KƳmۇ'rv'UĵNp&^Fv=T,]nD/k:sO'H*Y{WYrA+z@9C|QWIhL2^1^̠4qMmhSN0Im](7R_Y学& VktɸL{|q?&EgrkZT1n៣KVnτXl9B}և bN,zbi0K "g_7F.6êAzylLJL9HueuŤXJ\BH۝ 1k;v\MLj:㌎Z6&Q̇X 8 ӔPSn mMph:*cqHa*K츘7hm}puH|k"]X"iTiFI.2S#Ls|w"/g ؉;c~5._w.m귾E6j bVx'Qn.\l=+iϨ^UCsw|\`RvA!ߒA_<*4ݯ#F6HO 8v'札u 98~10Y$khD+0ӆcRVk#1o1NuYS)=hOnkM%e~4{cSga.OI[J횴Ԥ'^{#MP]b2? z+r1: <:P3-NzxMT.rRihsRA%,Թ ">$U^hGOXeTD]V%e /+XIog|i`w'=>UŤ穩10^6t隊z "5 i?dy-(wdZCyr޼7’sI--^SBჟM^>$%{qAϴJ|UjDyםǁJyGwe}S{L&P`4rPitQ2w8[,^_7NU3t+/z_GOZٓ\eɊ̋õe$gn& ;9OE?˾(wWsQ4Pkc6in4^]U@5ECrzՔm׀Rֻw]0Nk5,:jlGKs P W GV*Mz9\W z/̙zmbE s&e!tѥ[aJPvdg'ʊ S Y c/͕f0v64qpRbl !JvWA^suJh&%s֭LJ<رZƍϒګxWF'XϏȞ# SiSأR&IK~NSZŭҥΉ鿼gDuGQT窠 GC@W-xTI&q|ozaڎaZ, EW@ t%Fxdv.,}y{>w~0g$.c !\}P?/8 8Kx31?)5|] 1^էϵӣ"猋l]+ N5vԆhjDPEdbtRö~\2r+4myAnlT|Y0.u 32?"小Sx*\mb+Zme l^XKh7qtq*>KW 5r:SjRBjB #X ~1#{VB0)4-ڊyclh'.(ΤڅݡE2"C5΁E Ǵ#>CF*]48Q㠵Ys.g~ܛ%9̔ɦGƮn\3B2b}<ͩPPY7"PpʅH~݅7NxKs&}y0Vc$sYɀï2T Lg=EV؂̀ú)+$ܛ 渪wgV8Z0uPW’g'p~(dNO:s) lorI^g=u]b_p}u cNɗϛ*hnVt@rxJ]_!NsĤ=uov((c ?]/6`p6>0 k`Eunϻc?%od cxVcLsЗj4+ CдV փw,ȭ>"ـP!2"U >|O՗ JY~+0gYW9 K|aD3PKc?+=PܿzӱޭB'HڠF@tXnBeR${۽_7oݨM:'/!j3T^O/Uug߻$I 6NwJɺGU9ۮ:-Rn N)*Rf b?7#{'Q[ ?sIЙy#UJsxZ1: wb~lsyS+f+2q% `1ϧm{ )_OazkHTi: ݘts|eEM[[>e5>Jư<<1,#_(n9)A32/p8td2X1_{Z\: YQkTK6_I`^/dz+M|arbwݣ#% w. NSry½%Q@srxh e1ͦJК@Gt#X:xI_Rz7=˞" qmEn_6C1G_O<ty, iNl@bv#HZD9b9#7vq\m;HvljM=HUKD&n {1Z#W)}XX:9wyIvrxZKi牥^ʉ !K{I9Pmјĵ: 'oyLW<0% 5EB{'8,Ev7y۷^b03hd ORdq 3-$G ?-[,M@hS=l*+,A6D@iŕE]ujcnǩB^4%,j 5!^dku<' K,Xӵ'oPXYf^HȩW3(3c`ԽqF{$k f5 A`WOW[q11Ck";!t˴b%4}L[) yq&$9EPP rK~-H]dzO"h67~* VG#!琎%ϱȓgk12o|b6?<:'g)7{[B({%sZQ{7pT|*.=%[ޝh1άe!j#S $R e\I{g^ /3o*nYe,^ M7PO&]} JDrcIv׻}=Rhl~r}l܂gٹ{qވS^:,&[2ݖ2 Cx,;o Z^v.=КGݘ{D5+bTy[Α6~[8>q&0?A:,ُj Қen~E 1,hV5jb I4ϩ'/6 ca~5](GqOhɥNm}XVAq|hB[tTTU9Ͼe FI}i㵙-7yy6L!S-uz9/#A=r8چTH]dSPӧ/JZ#_Ԥ7j7ʢS}YbJzu= SxyvI.05#N &PEHwo14F !~ls䨕%Og@$_?(uPi ߟ*zb<9~M}lxӘF~XҼIYj|SZ],qn0M;GF;Y2F@cPR:Cd8)?~Q82COp+ ܇ CA-:o[.ji^7ĞG:!TG ws]PRF0ź>-b&뇝y_v,@@uRoG' o^&-hrrX4K엢u  ]H·dgL."yόd'>΁I&WU;M+a=H +k{H @BR%rE,Z2x&Dh.檏HT1T2 DItz NCh NFn??62.SQv{_!/<8ߣѱ纒ܸ~u7ȋ>$<MlˀWX"4 \d#Y3]8.(y_8|SOLl6x%޼|SJ.S7% qcR}ݢ -x~xԙ|V…%dy !Цme)f`lcIGYeG8:ir/SeCE @.EIaDVUV+%ZMC< #20 *Ϥ!仉CG|B9aPV?ĝM8!g( G9: )Y L#Dr]rNY E|]<ݷEٗ{ ,MpJC吁ZJ(ꌂ0/_H]{aXaU{#\0|]\̾J[ƈ| '=,zq]Fu ns;=4⿑:66H[Z|vG>1ݬagH7 >~Upr?e"Yxv4]m֡q'T=Lś| B~[F3ɏUZwlpe*s[IyEOսZ}W/ = (!?FvbT s8 ZWB{gr |2TܵQ1tǢ@0/2g1u5ZYAu(_ٰuM|i̠(+?cnjȃf*ݰQث!sA_1K eT{3b6 !;B~%qǒ_-BU][[1"KWkyIwG\e,۹hgOZ?sZ+QRX#WFgjw480th3p0͙cH>u[tvݖ.ڽrt{:}6ƌ]HQY diDٶ{5A \")_$<[ 8#^yGٶ(4ݳK4,̅Sq.z9d8ѭ>gE#a^(|<RRw!Xa>n iam=Cڠv'##2{zkiiʡ.vYa >gAƿ.B(nҩ&ͮx==cX:j84Bi.UKC̾RIM6H1lH߲C<|56Dz°[eM&1yK?,1^+finù. ֫KM7_$76圛/ |)Y۝tHpG5Pu =lC9$:ȜHZ2X.,lAY3/X:̞ Ђd0%;PVo:!ư5ϖ{p[_0<PuV$Gr I} L*L49F*\k:0tYjT0&AT NaGs6N 鏞,dhQgHL <M ( -Yӎo$-!od}vͯ$yj! NbjPQQGs{&ա3MN4Wumlohq;b5Ŗ}o5%iF:D)ԖPEcAgg۷NIA9ۃxmSU Z VX‘#[T{»>QQ1\]kJAq3~p `wm4E2\:mwzn2t)BMgX!rblGPZ@wv2`*tVm[kvS2 ^NU'hy=o;&35!~#T%x7@?YZ roD_e60g9=S4v F#IR5-hmbS6!LV:&d}m?SYUy$ݫ=HUc[ Z`N ہpeE6xjJdnt/9*`Y+*N's! /ˎnD Dm(WbLSZ>WJaìZ)J/.9U {Z2!iü#'Fhi7ށIJ*%:c~؈ʓؚt -} Fh-}jn>^[Nawyq//AjLq~F 6eګʫQN_p]#(\@ \scw`u1XfuCռA*&ǧm-I]>Khv^_O4I? k1ԭxJ%D~VK|6ITw1 ֥wvzcBurW7P~^KfgݒO̗a=DCxQ[f MqjՠlQe}:?nLsaǑ{2D{igdp+{h٘j|TJX1߯cg.վq7+T/u$:oتfy&UβD4!X}K6&w$Y_A4ÂMp>>F 9=eEeUh/@ʚA-&{SCqq+L+^a-ec=}ȓ#}t0497@+X;)Yp=Hm:g3'_+pM_+DmS~T3 iXRz+I)"LXbskU[BJj)pMWYb'>8ӄnhff ˠrUYX%km^{":\f{%.T%FkNiCNu09YY*zi)UUr >#UNFMycOǕ|`/?|NPK6/xUvuRzV+lq?mr6O/z٦Wu%XwS@h_ߣeM=}kG`T+1W6cŌT`CBI* }s9D|Uz=3T(nNtU!2KX IusPo|7LVQ{M>UǦB0^tUW FWY|H4[44_қ$SO9©1mt֐HG9[x;v1H97<̧3Pnd*b/ra\M#(DWd@1 T܆ZVY)^(-a|hU'6M\-YQw JDbbV/$#8)uwa0aOؿJ4w?&bvڍ3{oLլPtxGՖ$7,j^^SyoYV?2zK2)EBݬ5ݭJQ9m0Zp5X+"%$Y~`_BçzW>Յ* O9.Zso12蔗OKٲϠOӴۮ=aY&jv]^Sqo(qͿv &$+X>ׅ0h%u0b/R_ ꟈn!R2k9~CTڒ#FňL4#l}Sd~BV{y\I|IoPPU}22]Zto[lfR?P~f ]Z[,%jKN kɎh,FaF'O,KLehc$)p[Ԇ'Wk/)S:Q>C5Z3}3Fъ9bGeQENU2W'Fr@~Vx/WU~]lr{%^ĕ*JJ=hpޅtZyvkS;ʫ0Kn`"kk->hO* qruɗĒށpl{:E(dU.bd5O%3 CF˒QW fy=3ϘNEZ7wlQ  D<~5$х)Lۋ薠$D8#@lq+rvl38}v'ָ4& i-a>Y's?;k+MoS'i}./~M8D d[S'U jyOHkԯ.!)ܚ=Z(5vFAɩ (d"”LϦ~b`^j9Dž_aa`ReDto;$T`lbk96BzkZcdDuǐAh!{Qo=՜cbb8#'WS3=xA]Jʐ [ܹ`vC8Sk=`bֽ]9kE鿻P@P+߈}+AD:'W߇ iRsPGCBkO{Ž$ d7pUv%6IBQ5hp7ݰKmY}1rC/1vA]V@bͱ54 JK$=vt(sqidOc`ހGʤY?h*T Ȓ?7jBвǧS#9dLj֒&y3voRf.2#1rbt"?{FӈS-l$/]Nc߻4YmA-*uV؂%j-5:.Wv45 տvinK" $?H8@ȃª'57N$N@Y'i@>k@z' )hNbƗ~ t΋C> stream xڍT.S KqARES8E@q3sg_뽕|{{m9RΖ@yg0K AA73X_d>TewG7/[@[P %3D kr@7tzgot‚lj:=hevI uprp؊3YxP;ߎFk` dyf?v;zC2* XTOZ ` oUݸIq)vT01̀>Ai&ߘyYowwtp9zExdwV:??7Yh rw_i;&ZkVvj8~5vn.=훕{ԫ?\u#Vֿ_`Xxs=??iA^L6 } <8CwTPO$T 8uF‚No|zs?M0'_a//( t>m ?ɟOO NӈqB Oz:+I]<xxj}lM\;mNg׈ܩL#ɹUPބ)|*}ss˃|Y V7DHdq9Yf& oٵQ_w*t+~IVCSDIiEܞp'R-"Qt_lٱI1;G46[|2GwH1GEI G5.mv/Srk' nTXYs ,9!xF á߄ V ::c՞&ynS@ҕE=y'#w[𙩚GqKlN@6ǻd";\7)Tb?<4fhŸh`n:Flw,WY׿R O;iT2{1$0,aG_Mā=؞RVNwTaRKe{dXJT02>Jhf0e! 1?c%v`^RD.1 LPpeݰ~^7>L#y.1l[fr,U0mZap!LqJe U)W6u_kv&Pz{KC]a `ڼKf*;WD;dVb/7vb&3*#А;(t_> yǑ_=i׽j0Q˜ƾA?uKʋenz͖J D1HEVܑVw j8i[|Upϩ@fv͂4=KA/y/Ee9{ֲ_v\?e_V5EXs)3vYHFh<˛͟) Sҕ먮SCu˗h2Fc$rN-CD1 o.WSu`s:T HJH!\O`sp)qM;|H?CjAr63?F[ANr9-k~}g$˼DTY =yX\n7,5%nZ'?B¨mV=N)~j|B˫:ޚ[ mv`TV3irpϮ^v͠5R?Y%]ݭpD)4ߎPV*aSoE`*!ݞu,jFdmL]'UJj`ڤgqMr% !&Q4{B&~3Ȳ"6_s`;QA Pe'׫`N`XTaku0k8k")[ ˰vZd!G[Y`yz5A%54z][uGNr3f9q:쬡o8Lmh]+wzo] džV2_j^K1 2&Gq+ga0c⿝}9s߶p-1Ɍo⃿ZfqS 7Cx\rCP|R*%"0NX=-% I? {m%d5~w.V{-0^W^9nxJo7H؆6QRqf! %֘;l)3?MXZcdV}/ƾ`c^9$3&N\\Jr Vy…p@7i"hJƢ8fOĜ=qTH)V)O0nY fidsP†KuWޒ}QM=0~JZ @54>d]7KQ$x8W"WU+5.Ki";n5OBM=eCh!Z&YMl`7^{V[걉+_c8@$f--z*(w7,f Y#MY<' qV',Q T?Wɸh6E|`>uv"5/m_zM3!y7 Zɓ [ /(ˎMΈ*N$E@ 1o'MZq~Zq <|àOGWjy@Y3gzzswwP#9'f^NmrY{\Sy2*Z L v429ɨ/T*'K8(ƌ. Cb(Pr6l -A]Vv+hM<Q B  u-w`8La` ^S-~["w&;#bxNH!a@h8B tdVotu3DW˱pbFPǰnSv|@AwԽw(ygmѤy9@W .J,~9ִ6ᴱHLqߙ8C`RRC?~͌gmxơ(^Ap1D):KӦ#-掊t8;Hŏ'>EhB"0WB>19!5k|YQM٪̋MUS[WmL# yeq\~2^C=% I5ɌoW67<u> H/b'J }j= )wyΕt?zv[6ieV=njL}2`]IkJMɩDLa+z¥jC滔|'Kv:Bv}ka.4Z̶9wb  [:Q[T0Vm^$٦G5Sg=[㗭3޴SkòY&ejfT,=GƒݳusWT - Q / FUUm` /  B5{@{6}NjzNFu}\TO#cvNf1!kV2'bbdaMG%Eun@/ψ/q+OVg[y(u ΍Br)ƣ\Fh}l?,saCS!IJKk%OKjFw.[%L~I9H~*Nb{'3u U鋻"6wƓxA= Xj9`Ag۵DnӪ0wQ7WrF;R9~ps(w2? 6{Tɟd?ώ_XOv5!4Tɹڻ" 'FVϜ:߳u!//X3BW>,Nd-85ϰ1~`^9\awY+xKR>"M~ȏ s]),B0Ws݉@*؞=$Cy7unKU^T`Oo06gk{QO&_sdr=SZXb]έW  d ܩ0)-yTa,M֪PAX/X;]nv;8#bPr{anc2Hm򹉎;Wϖj˺309:YCM@*p. n`JxA>wɡbCijoPo,^~ٝõ[ZxKyxRE{:{zQqlf}W'7֓3ع_1tSJGĆ [k`(0l`~yh4G:El~:+MnyJ[hŘ8n+E/u&f*G]c+d \ECV&Z>2 {[:4K`!lqËPӆR-6чi׶R)^b;%3l0% ezzN/UDž (VxoxXB|@H6:.5TS %OeGB[Gw/?󆃟IepV%"{^p)7Tm]o/Ъ(qcS&N$QSY]Uz;㎘99.>F\6%avl*P+w+|K^ASݝEm*&7^\pGW:wSE?.grkg!K2`w$LZoRm,ZJIrLXw΢a6@DN(pas5q,ޅK: 2LH$K$*ڪ }$51ܬõj{G5'#FhZA cN."BnZ@/hKXϴ͎[Xo@6ETCQS!=QkF@J8]61ހVziH+T ۳Hyg=OxqDcc"wN=iTՔے*G̰u65̞J8 :IiQVb5j%Qjcrc.l*ПEMfPXo_Q-8Z͒t E%ne?;UlF։]gx4sT.?Sۅ'LMb]$+򕐗#N3K{]hH@XBrXme'ZQNB7oI{WqUwljc_  R;[őS'GROn.rll6yaaݽFh+STFq-\}GO=zW;"}Z(dz*hrqW*]#կuȼ3s#hY\lj? sQ0㾔1҈nu.rf*QjL $'ftjAVi:K/*?f݇+dR :XF ީ7[yH<&H [/s<SG6P79eB T\x[U֪S׫n{Y(8'B 2ْgw\QK$BصDc*ӦŐaTie=_73j+()PCrqD%QTPP&iAsuͽ Vu Srd?,CwR6 h;}cC<.sYG 7?bUJic kG 4n$" {0KZ *`@) O6P1Ma塉[mzF$b5mCWy\u$/-6dl47%AFR_+bpsC)QOs1ڴ!-O:3Sd:6ܬ ke/:I7P ˋ/,=~{ [MHX5l8)P_8ALc<1,3vJT4.;{mM qsE#m"'ړfEqAsOE%l W>XV=p#,mԞ7_apLjPlBPCXSԳ=>BV)ΛIKEd b~ƍ8?߽~)0 ]8kh(F*I$Q4}Qt|`FRl9P8uζcNsL[Nó`R5}lW}9Bo=+(4?m@+̪lj/w/8*G\UPv>Qbj iaHqE3_q i]e W6:{N_dj©^c8#Jrv!Q+/׈hli7¼$6^qôOMXTL>fMm(z-F}ez> %N.a_a{S0_:r]K¬Y1ɥjarԷ˻ 矻6jw~4eg]*dצ݇3_ȚnD  `ۭ*G2_)h542X6C_}zѤZWI8nЈUI,4n>4k⧃.vҏG/h |ߞ"J^3?!NHtG|Q3W>29$2T,v}汽>}D-1mjz%@R;&m$4)8f2(0bgrIZ \%FqP+* D'I+{$E\jepO!`XwWIrY%t* w-|9홼6qo$72% SqLbyd{@rDq.P6M >O7gjл=Pb$~mj``wō.BBok&~I,:U"ǯNU$?0(3vG6fݟ2F 'Y|I±l~`/ [u9p^ַc'|?bbk9% ,u@7fqVzבx>لMr!',>%W5;'t x2 % Ҝ6k}LP#[[ 12Tn'! _ 4m5$R/ #V{hksu"oBre 6{XodC&G n-UgoMV7%ƺ/бR}>tdbα l;{H&yjUѝ1 dӇqb=3 8ޟ~fY{K= ;YN7@7t;SƩCxK"Qz[d ?o9?^%;]8*xX yԹ56igx5nơr +ێ ȟ0՛ۙO6Dk1jIs,[G߬iLm1ۇSB„OhԠ nvj K0U7%yx轏B6=!]RTD4ۢq-x$Au>󔪞*s]:W9A|&c0iA"Y$-q\!*!ٹ}O.U# endstream endobj 41 0 obj << /Length1 1670 /Length2 9287 /Length3 0 /Length 10356 /Filter /FlateDecode >> stream xڍP\-Nt%H C Hpww Np {N{L]c1WmjrU &1K9PvebcfH(XY9YYQ5A(@gG3&il6n~6~VV;++!I3w%@ ]P% ^ k6yZx 30@]#?  3Zr]@K/e3_̘Q6 +W3g `]3@gss"@+XF{`cfٿ ,, f`/`T]=]f`_f.|3w3sfb rtuav.K-% @ ʯIځ!`li#;ل bee@O _5l 8BV$o@V?3w O#66%`QlZ 0`}7gyYB^>_9q 5-ix|88L\>N.'W^V_?4VCʐg)*ߐ)U]o7om;YnSy d%%rf!gA. O*/ ۃ@U ]`bceY='.g|n)X;v.n 볼ع>lj l 3x`qFu<|_߈b/#-Al e,V@N?Y,6^6˿6ÿGT@ϽϽύ\?3c?2 k-ܜ/c|"o> h8 i#`IcYtnw@L ZsK҃%E{)Ds\N$A}rea@IStW;S:ɍC5ƣWƳH܎n%CSVa` uy,+ ='4v|ʛX"u+.]T$#}Ŀǟ)<̞(et ONkvLQj='0}x: ҩtDRNgP1$ f ,NߛY#tdz2!UPmcTros>ôZG7hDV2k`؏X.'Jfz(S}I :.hbVѨ5uBȜ(g yRYtv)f& U&bHfF[Ʊvoj}. &q+n' 9A#$/?>H6rdʆ¿"p5µp4Ti20+#~uPP5ģXGOg?x+̘ؕ "=Wu #U[FTMjjohu崊K璻?>O@Zljݓ:mNxuL31Kn^!ICcJH+{ЮId˿An)>d* Ki.L /kl a gU8]5֤/s-̇Фo8Q8ꄎ6+/0;7L/;.}$VfGOT=:I_nDiiWgqEeҎ_Huw34J unu(ᨱUíj_π7N l=Q!7~XBu/O*B |8}T̔'+N4J*)oP/3㉯6(K^y}t/&bWmciHt櫓%+B?ZVxkv(znr[-pq<ۙ i` ֡ ;79s/iŪm{R PʹD1Ik櫆nr{颩`#WOjd# b2.ZgAU[:|ƴqo5"S*asG=9BH*VO{!NEVV(PRb(])=jʢA} G[^"^Ό#gP3=S7lI*dNů;;IϪ^*/V`8d +xDwbWJi(t NmϋQ IZK dۇ$l,7 ;O9MJẊ[]SW`YA# J\&zANIdP[qܔ27Fd/C< 4hٽrNpO_Gw\l~k՝QWK|^!F+.RàF!}ۻNZ^r |[񈖩=P2ک1WCW1m!vpb -idS/シo Vx2+7 <ŽZ28pÃr{d*Nzɋ˦72xMؕt_+SN0. CeWC\y_ m;Z;^,\D }*5hr8d.vaM0M &. )߸~흐jfayRa=>r=ZAu'Ļ?K~hQc_+qR]-OvRP|T?lKM(ޤ-l|SK~ÿ#UsDY38Ba[TC>Gm6Dk $Mr@~HHU+\U;h?'N7 ֌+WMl(A9: >(ToTXJ5t+g٭ ط\yd /v(>3m-WaSDDbd (F%JJ]iզQV5λo.-F$Zđ X$mUD3 8]pN>?W P$'#ZxɩZاw^.{ By ,c7bpaE_\ul' <.asfel_ b l2z]K>I;į|lKrPY61=]vB :8{Ǡs7Z2i&Ӑz5>QzQYd  l;nDȚ^8e7pt B4ծBNT1 nޒxұѱ~șHH@ b]回IP og&ո:/);Mԑeks,SFϐM/l]ʎlU\PR ݈T9 Փ( 6)E#mET|) rLIZҟG4(?pϘMg.`6MsIHSvƍni}kar&!N9c[E}wC){G2IZIOR?qеz#~[:Vy"[yԲBE#p!x^]SƒRNڡ9X'c͌z϶V?&zT4lNJ# $쬩= ϼ{|َW=Qt 9j:r%bu,f3O@.ܯtg\Zxazl|1sf1}}Vknm,/DWKA3/^G| + I8hIۊkCpЩM 0⢈~tr_܉%^9ĒmhKk'K8sȐeW`E8Dt]DՉ7H R~kt2qv8dtZ,*R`!+h6̫K{ qզ߭1Jk'=18^if5hQ6پIj+ ?[m=Z+Ip+IPYQ.AQA<:0L}8@ 4jM6l S%*d 9D2oϴ /;e-NMJ%u<HT8zՐq"ᐤS)J9S?[W .,gߨ#pqݧx98felDv0'5F~T7*"=r$,[ޭԌۥ$K2('aGceax!= . ׯS,*xuzPO^%ZH+^ >6ߟpUx恻@B)=i`ѷުrҒ QM6$RaÐ/{5ҰK?l*ϓ( D9cOQˀG3mNfm^U6IV̨=F=xrIdt肽9ދjZںj{%N52`56qYQGK~Ԕʹ΋pq$eARn eq-߻ =S͇p\nI*mJ& }L Mr UEό ̧P{C7軠/;sJg50b8{j 7]Wr:UJ /a+ ڑY-1\OFVJd'IRF%p^ 95<` F5NjB[G17fjR g A+ك4uZw7xrC JŒ ي9C:KͲ׊#4YM"+1ؤޫh:ZNA@5aq o3ؑLli4|[ ݼTЊ]Ʀd?B;dl mԏUKe1QgWRƊǫQG1Gd$u^a%s_}ȁT6F :]:]DH8ȳT/dw? wItZ>j)$MqEW|L/?V p*T7Fc!la]aF9lǍ=-&v/#:S{ٟv)|(Y=)tS86 ”L~\%-L͚scą ecmggPFE \-јOwXl"@aEPܐOYS/rzyS#{){%G&2Q+dT ˢl3Xڹ$O14 ffuKH-Fi'[BJd?IORz/-%Ta9wՓHw繭W~f>VHGg1fO'L^mg̏ɵّ! @F,VL#s,~rZ\jyyA)خׅg̰,a4j^ ( FtK3OłءL/<鐨+;wNx]<:k9>"WEIly22 :r˷KNzekMEv," LuCl]لH(,M/{}zxڽgsba}Yq"% ¿w2˥ "Nn4Hsٱ|u!g,[V:գpSk#Mhc^q̞'ZYU D̮|0G6IJޒ1*d]dЄ@~ZC·s#:XJߩQ<'7V2Y|9HE}r*Ipoagaoփi͌3"d}[ns}U1n5zN[Q_ZFq57DުF\4]m46r#RI'C0M &U3܀-&tм=פa~;cbF{ō5o ^2 DO~es'FzX59Ah,-!E>WZ=V6pEiw]S, ô;uBXbr2>\vw̄2a獨Ay:Hmtz);խHJGYqTg PACHN;3ǫnRy2SGabS>S=?, Ū(/JlR$)S`'?y&G0G!((pstIꆯ~³Fk..9oK1+99 Ek):@2P*Mk䈭W|S!ҙ[*># ,ǾSJ-KmG!GӍ 6$>tu)¯|*LeimjWN ~E&/-UݬpW4MHNU5'DrY\]x>V՟^KndMܗH7-pf37Tx|ĈL?$x2z^1gpǏ/ӫe}pwBi'MlsY޼M;->BJIǑ7M/}CaO]^%ZegwE5ڀbK]1' ^"yw ==RmViTpvpM5ѽGrG,3Noa=.l툽E{}Aw!=1Fq2fr:Jdd(X.m8ʎ'?Ta*\|}5 kK ӭhs]|iFEU6XimQ_\n,7|M%6~ i4q9OR ӈ2i=6&/Փ, $6%ڑ7\Db0;>bQ"O3-:RHKqlLcM)N endstream endobj 43 0 obj << /Length1 1413 /Length2 6186 /Length3 0 /Length 7141 /Filter /FlateDecode >> stream xڍVT컧$F42 Ѡtwl1rR"4" 4 %$%Ti=޳s>=lj!vkQXqXad.$`I%C chk`P,A ܌(~"*B`$#Ԅ"܀F@}4 @`XB@!0 ';c0( hz‘0 C!J!tU$H 4CYX zpL .&Zz"P[ݱAP HP `p?!  z@_8g?Ā^ ";ݟѿ!P0 E P@whm( Ɗ(_P4!E@] ̀P?0_?BЯ4KBiH8 ՟&n={(t rs-dB4 >B E"|BX%ltFp7D?zX(a3P>_"_ w3E`a PpS?3a#̛&'ҿKj`h_;')# b0aI @ % h  WN_6[y*k@}RAUCT٨`1v>r8N0S9~( |T ~^2p,tRҿCÞt+8L}QOD:TrCTzI/x,hnGLe>^9YK"zɰdjxvXNŃ 9`L*OȬ 5զ3zw!/q"]FTt "ei'TnibNU8vllD׋{{Vx| "Y_<_Jetp&>M8/-s/s; i)]̕ ͻO^w~ܳ`Pɨ' l@nqyځ֚#n5I k26iJc\:NmtҞSߡUe%ZoCn~c1ƴ2iY` ھM7 d3,u{ iҦƇ \ m3Fr^) rL\^|p.\qQ@OpoSКu ]g0~Cut.g)%Oڹw m)hY0}&qg!ַvafT=,r'R;hp$~yxخ6biЬ1O)J&$Tnodnl|&rýy$e6ᥥ!xsѴF^|QKPyᇦ!trៜ\[=GյHNN>B~<*a8(\~ݪB:"%hco{T+}JB . Pp=l88MGq[w }R%cyv]cԗ3VB$t:3Ž2 6#|ˠ?( "޶TΎy" iAnNR+ۘgʟyPU0%a9tz A쩟E1)/CaK^8?)'ufNJz=Qqn{ *DLDS4$Yxچ{TԋJ-S=izJkH茶F'O^ ry!`#ًi\⢮2|lJZY]VjS+xͫ}+ڏߐ7FKs4yϭ12TO,8h%rak$/(n`7Cf8Лʇb\9KJ U[zZ#-[ QwG_kҪf䬡о=>q&JxE*IoŒ[O^SْLi7wȿ]WFdU^2Vīzѓn\/*V)ED,/K upBg3n`#$]fsUu-隃L@ E^QHϵE#7쳑YjXU|䴨Rmu7.Mc_0_sIjVֶyؖo[1c !" _Oշ ^9ݻc4o1lڿ9C!o_}xgج#ŭ9"/KscG~E[@D9~mmԥȇ Gk!|y ϽE{{zodVf8ЛrNiRZ9ڻUѭ+n5aw.IJ%Q|-l a=e`1ȧh\.u@H%]cYGF=ĉ!#Վ4~BDEy5MRYh*>$G)TĖfU V[?WFX3\Js$$/wmG$u'AEB}@YTK3/rX5OkvML#` T;ZQݓ5ǢEVzRe;C1~g1㧍*׿0#U*n=\l<ibks|3riG>6v-?tLNaS:?{;?ijKA-ok\:i寅_?eqD='d2Sq1:zhT_gFո(%_#^x\Dq˥,n@FcwPSmdx𼋋?S Wߓ.Gq@Dƕ">G[TJ| u!JЩԻ!q\L qCNRֶb^VW}?|:bխ5%m:Q DvOF:RP8r\na 43W++*^T% Oz 4,f]4PcKhE\L(e^S'm=\ O ;X7n~C Fmf^U '50,,qQŒ VmSx@5MwfrgD'gS9qW-Gʧˆ2X {|eȖXq+Z˩zQPpD8dfMWeIWgei$ezHI\us 2G1#Wm!q{a*Yh-l-p-wB}R= wN09FʥI.&Rim/i6X[oǸpl,=]* P!j#4ADzT(œͽ$`4UUz\tK+`'W}O'5B\[AR_8-ܔqyt33,-0v)fJ&|:v[,v h2/㖳zp]*w(0ڒk}.ϸgh-LաE E,\yCYvO;$ov鹽 y=T~iyK dB=v6ܤW;WG(V?!Q|>ʔy$"\ӪߡX3}em)k/xX pzU~ϝrIgKyn)þHOWn̞+/vP e|s0`R}]kJ)1푨\ab >z ݏ=2唻.93^Hw^3`sy۴!1o M74c_9=Br-@PѪcdFzWpGo)Q|{ MTlySh?L~'Yah]2un3N+wcyƍwӤ@d$!KurN(G[~_VAץ\. E+}t6N5(ЊWu7.+qq0Wc'81M2I]V,} lI]i-]-*F?3z?]*Ry%2V`)3KN_cUaڙqKB3F{%1j@O聃I*6^ysiG7>oY=W ):}J ۋųo0MM}3)zPope2W-MS_ 1!-O$-d yuveoj^V'voo=$Θ[p}\uBRZgjTnFmz2жe9ّHg:,]]v4ni_UwiN")x!I8ͽӓVyˇjɴU@ӧux2<94^' 3"WbhKX n1gSw~`wYhGv}$tޢ:>9%iݽ8fmb:QlPqh:9\E5mmy+D̽1/&VC߷܍:FY~> stream xڍeT.;w V  @pww(Hq+PZwwR쳻wd$g9R;]Y8X vv.VvvNZZ -V v3 I]!y7[WO._CgA$lPd;؃\Ph%VL 7cp19̀E h Pw0\'+WWGA66V 3jPAߴJ@;?XQhV`,\= D` 6ٻ@AH~@dc0np{hf`[, +3hoh@S_b ]̜..`,~4Z\d>I3 y/ۛ[bȦivrImY\<9@fVlhx9RrCx8:8, T@~` :|_0LA`{?!b0d }vrg3s{[?4,?Q;x|X8,\\^>/ӂK]޿[8Ҿ2q{<fPr5@g y _ϻ wMnYczml7WȒ(:@V6gA`7[+ ,%dYXy#H=A*`W3` 8_@?:@.ȡAJٛ9DN^5NdeAM90X88>Z^o_ؔA6? q4   6;#[ 5#-OHHme'& lm9AF AH/,Ca*H  /!'#/fcG~A\AlAl!!%:QC|! {[)l?bH!wBn}G[?qA:9M4_  [տ ?ÿAH!=5N2^Y37gA׿9fLUWDdHGjI'x|Sفm2;/0.Z{nJ['9`m't7sQ'+梡$jag>Uh[oJ(g\ cZ5GQiw_P ,Y.Tx \7yr4ab-MD/;ҼFDȺ)\1P5*N@̨ΰʒ=&'LFmKIks=S f {>Vy׍+Nr0%xOsU='aNC?\L3*(10 }G'ghӲ~-z=P/bDP?03_{m6k@luo26ήCR>uvJKx]$] {7 qw P×gO!,E tK;=C*(Q^\kqy 23r D9"SQe@5쳭]iq?(#Ѹvuߚ:'൮T0~V:bukްN غ|S|GI^1yS΂msNeM(Dhv[{^PC\t&3*Gj(ȉ!+Nc#8/eYANMhgaگ%;<>1}q}M-#7&t T޾`0=uoכU,d6QԼ:6Jý($a|l Ҫ+(Xߗc1qx69!G~q,KwFNԩ~LaǗf6Z\)uf6> GƸPg8 AXt}z?:mHںz PfƓ0 yYpb>! 3Arѭj-t1CSpŞ͆qw|g!vmt6JϏqWrc,=`TT[ Q2E,:2+%SKŖhD5%#^4]`(ph_S! rP$w:v_.  <P^n,$̢a)Xf@Խ;bc$ŅɃ H0nS[K3n]C{S5\nO;MŌ*8K!jtuGrA20b/Y0 ;sP㉒D]PPjؽ/ 'Ң'{5(mxEvRH)f4_֟~eMej}s=ttQx>g<~Є0Dg(rX7cʈcı4fD#-q3W:w'\̸ƚMok"g(/k&={xXM z  M.by+*pcDք,+%Zgi?ZE|bI=uʍ[;t Ӈ@sAaK&]UZAͨ 氫29"(b$KhʟX}{ 社Fƫ/ɿ^8|j=靕=0XpI*W})-E&jPjUViy~JTLV|h6Giؼ~sHXX,!!:~R9f¸+W=*ƫ-gX&kB&M"әlgŨ~OOw֍GgTyX*՗MQ^_#e~]fsmGrmhiPݕټs>a}K"#ՠպ_|Y8ϾFzĦ@x3{>&林A̰2= "e{ܬ z<4&`' Q[V<5)lٮT5g# ,7(vv!ۇLIܣj IFLͫ)M$CJ`+9F22J A9ZA.0])N}Al$Ҿw1ʳ*Cܦ;}ˠɲ{7ɖ֤ׅX|,os# i5lĕ%6n)A_x4 z[:Jx֊'SRzs`qan^DbWáHmLA=\L&V!K|D7u9Tڲ7i;cOقpq׼b Q܋-M[ 7lZ4"yu#HLOZCv]j]uS>}W=+g:Yj}$@b .P5bCc ub^72}B23볢IvS9hZޖ[sL;ʹdvr ˟,-4ꐕo -.awϗMn >G?4"< <6?u]&+X4x|m:*(T}l$FBNXk;& `Qv/{#%F,?b Չ{1+]|Sr1([T!~aƺZD j MW 1hto| !T*]4$Oz!o l1;[,F/8:NcwKDe_p#XpfH"㠹~a ZotOv &䟴܂-آ0Gk6o{,9$J tfQh-~ k\Dǂۜ/GW ^79޻p>uTF6B$qqH;+H׭F8yWWS.`t~ư^Wpo\Loxd3p %.<?7y\&^!p-x M$)űj>?GƋSbO xD0So<&Q/ v9uk sMԩik-=v:ڢX\@yC^.UjcMj-UtP7䶾EāUL윋}Zlk$P[| u."T<~d{U0Qh3ZEHxތ$iDpꉜ_,f xq]:} gƒ%Xjs1.Hoaۉ^ٺe%U4:;+vB s6]~ G0)関$e}4ۡ^1RHH:#$Er~rmZYp&5\ @s]>z9M]1D|i??6quMQGg`l N8LPѾ9:РVRp|b kĽjeQ#b xD|E)09@Gi|龁Өm[d<['hHM &(F9s o$cMa"(o|u>$4AQOFI$xOmb=nX e(!̇N~=g/9w#OL؃u Vq/BDz{MYPYK73fz{V"_ mX̕sY:|䄫GeiXDl/ܧerA©|ӞgGb?5~th*N_U5W*b`BN6>(ץx=&sUK'ORK<lΗ4t>8x>g7`ӭkܤ flL:!wWB98: ib?ɅUK=[%4~`'AzZ" /V'kWUMwJg=hC_D?8hgz8}ؖ~o\.k7@c$AS ư[uL(V"K I-'*uw2B_r -G0PנM'9ˊQlRsU*.(NWO~<-TdTxb̰&r5׋Zۤ6dҖ2aO;SJ )TrR<\}GAn$-0HqHSZ*kڪQ;gK"=hy9itFxҸ'3";;+7cŹ쯱(lu9FJ@ut=Ϊ}v&{7c?)Wԣ3Eؤ⥣Uh{)N|Q{ ?⋬,|T(2s3ie]fj=Z;SXe%B5]΢ǺӊG =-'svV9 [rClmt,oe| 8O˘kctјҌ;ߦs)$U#dI1s|e.l|Ǻ!8ZHxiTÃM{ 6 RWj(iL|׉-d_ew/'`a~.I 5I/*-V=:V||83<ln}䕲(h7!DݾV0Q;vɁ/T.æV{l:-. ~63)Wf"7`.Քg`ZЦ'Mj֏+6x!]Ttf9a&襨M3]t Ie-cI(+7uz1uT?cg~lE)R cm6F0Ǚv1K ekm2| GQ$ܹ _=x2STy?i|Bt7?!] T$U{aD00=9$VIZtLs}@+1ar4|&F~B+P%*WbNn}N2EZU&tìhL3, e;KC ;wv L>QUWJ#}in^7 eE[# L"gpqL XB ;: Psrg \RZp +*6ϕ[nȑFY\נ6$r_+cZ_6# F3|?5\^(S.+m@c J VŢQ뉏6^qh$0@&@Դy8IrHyΊUiG읾,]7ӲY=+`.(;95ܥɗ)S/?iYإR*|c81.47z/Eg^6pm qJiteLaz8މd&e䀜mJPmd`Oyfv ?&:IBQ?f1**[Xߗ-ȋcwWc:L/6;O#o(&gQVN/>7KTD_sNTbf}D7H!E(wpDp˦Έ mzKw5l$QH亲h/F,ǩ]U)^@W:_4^Kx?`k&u$,*F ޽^BUnSgD{ˍ Le)fF`c^!}@ĉۊ,|"fɋ96D=9< V^t :)TebPM9LF1tܚ]m#7HwѕޅտƐy~2xÃįPsid9F2ƯLiC^'Dl=j%,rpʡͬwd7KӪ䲙}ާfZAh З9vbꟆBQsOE=rhAOM Nj31:8LfkH庡`NDVTq3'C[5mDps kCNΩh[xbZƑ¹h pŒسqoBU?U{~)ʦk SOVY\ ])+lЭ ͫ}"qcd19R#KDNlMP!dҗO7,%Y e恫HMA}#GO$_4RyUxapcv%R2D˷?Gt<,ޞ,-=ɎV68;6—f|9h$;`qPypyy VLJ['!qE<4A41Z;qL:lDI^RqЅ#0+Qpwn&T7b ~~GeAH "o.>TW+ƃId!yat-ge{;uX.Lg۲( lHV > :&w0ҨF|z9|dB S53%7E|̔ Cjָ:hW_U@(hf$|MZ* RI`}Gw=Z#9NIWL0HV=6g_'ZZެ۟wׂR;>chTL5H}}0LQݦ\FV-?_#U׭W8k8 EeR9#) yq h rq[U" -5`xKqξ4ϹS4>{S +J/~!12SЈN7ZYyJP^^2B5KF~g%Dn,<γn{;@"bh̓K#a_Qi7}*[嘮(%u=Je`"yn!ܿxEO$ 8ͧ]d2DCz}nm8!hףO>?`%8w:|G0iF "UN'%3|׭dldh&UN섓y) ?sVqhSmelR c_ȉ,4C׎ʣ|G)0S|"I\@J~bS@^(rޛNI7&UW^×oe齓3:=&z R}\{3wOx;2):<oLe3RZ(ךv;A3q]6W.9=;+O7Xu,9I=Bˌt.I7F:8'fs;"6UEt=smGY.QVãMW%̴ޞ$s_?1@RDoU(_N1[^:+k5qfҽ,_;cvךzn|nւ1 ܶqhh^oLcrtH|)#C{\Rerȇ'؞ev9Ul3QuΙ=e*>.Dj`)8Z f=Jp%- /t򁶏ӓJfƣ9.p|HGXX$Ēj0.7H@cOo,nNАzmE]^T @,"J0{RhH)  ;( ^Nw[v9X^8XUHh6}G!vܢцO͌z'Ӊ˫RS5#";#<%XFj d$Cm< -"f'2R0QgcvlHlS(HR<ߍ2s^^8$'gLM<8}m$Iwsb>%5?Q攅|`a)(r˛v.U@Q̷4ٯE'@ 1}-amo]zNoinݻ6bqyGcy<'V pK+Q靚I eҬT:ۿmMGx(2KTI0r2}C:3J}CX mg;t>");'y)YuI7@f7|]Ȁ-gͽ9:A8{5ToPݔ]:d+O%5OᶤTi'XN Θy&̞U%ҡZv2'vFcTzhV* u34h9el߄2h[՟ʃ4q,cDl#RmЎ* Mx(({Zg'}{fMWE)IB9iI˺84uN(n_ u+^)?wXN1&vg4S56*Pb񰆼q W] (dF0LD x7c9ybT(rNP/"ax$E FFǦz8L>Qx⾦`tskdc%d_!榖38xJZ9cExi8unS."_ex7`EZmזTopJXO% g#ʫq]]:ρEm lK|Kf'7Z.2NqL8*ZDUfO]vEJ"XFsGoc/=Nb~̜@S,j%&[\&nj8q;Uᮋl4_QwYeת`T"9Mp_\;tB2:Γ8"%^@by'O#bLAlGRFc鰤5[ y3)pyDΫޖ!p&YRB7gy7K: e )<)T3Wf@&iPCEo_bhBzNKOX+nut8zWC^]e}\ȇo;xEvPZeI 5K_k--:S44mwyXTyB)&* !wiJ"Z,@=ЎenCG`]1jyCw?˚b2]~.ܜ  Ok9"^r0e76ɤ:I[ncǏ~2ira©.ayB$p>+Gz/8UxIMh~H0UX*Hap~>勔qtD* 7nězdѓH9 o^GP2ǷJԎFk~[21l hë f.OTPP]OnYW()=M1VQy0l>i,"]DcEC[mdi)Ue5%*&*[riq-K;a%}!V ^&C I+hɾK}PQB9lKQvH'xG$8UĚp|HIg*VdkyC‘YK F,׍SIA^u=Y9oM)I{5  Ӊ29~?Z iF$ex7v3z-p՟ToŢ gDn\Gq|V%JM5R *Atۣ|TEh7U*^ bd(cj^wL ~;'Gi;PABbqN[<.Q'ҽijK?z| p_LgFYyf>awe֛|UٗOwq^rya}O=68t{O4ҋ0Ũl^֦ ]|+v'ښ|t5QUSBLMH$ռC|rs6`~$ϻN魽x)b=/w$5~%z hh^Ο3H Ԝ#;XdFki@VO3%}p_0,VwɏR̘t$l J$p&؇@7 a) *1 dک#NեxfXnY0zKM,1ȄwR%գ=ӅyD!,mTyxj`^Hgчs*͋UUuO\޶3BJaNBӽۉnws+ v(bGpw 1!ucQH4qDO ̛Et݋RnLJz> WTT[ASټ[znzO3"*?&|UM=}зT{ԣ@{0AV 5{f|Nk/ۍ2ӓǣxb?j*#! %QQk0yuyCJ\1Lݢ0_y3itC&Ȉçi25En É.ojIRC՜,7dbs<"_Ov^hZ=-vP"}YH%]LA}F<" R|S)u,9uP85,`BMq⭑ \ĮNԬ[J=-)Xáabyǹâ©JnawWoņe?^ M'Րt&#_,î-3ʹ)>@ӥ0T7Gîᒢ4_!"LqW*F= Sr J#`Z]oS ^v_u(ll8^x8…#A v<78Nfb k>Ĭq̱0OP] endstream endobj 47 0 obj << /Length1 1418 /Length2 5966 /Length3 0 /Length 6933 /Filter /FlateDecode >> stream xڍxTS6Ez^{ $*IG HR H&E@@s=v;Nd34TrB:BՑ H( P3@(Bi Cáۉ8͡^(!/(@4HBR^U 'F"("N- III(y@`0FB=0!`8 AH#F{J =PBH/y^/ 0^>P'/}5!"N+ {A"Po 0xBu$W?ѿ!\08`+C _@0ă}08u0@]0yQB(G_i0ǬpRAzx@hѯ¼̹ i;{ C89)lj`LD@1A\0v6c8z"=`3E@h/ohp:"N0u!c: b}ugQ7wMTPSYJ H !!g[ ?Zg$@/e^?+#1zx-{@1 swO{<? =$fB 5zP'{`̌(!\0:CN04/- L 8 5D`;( |уc-(L~g]5kE`//?F U'oH4& pFzj,(v{607 ^^i >^}( !ZCBd"ݞGv^+1 nᯬvǥX Ċ=t%՘#詹 Fq{Ö4XjGN^@Y .)Slpm-殢$zE}*FmYK<glYD=Vl{I^6ަZfaIʝ mrF^<=.MEOV86DOť,vRN_͵ }d#uHԻE_%7-ލH9c&X,TjeL?ye=Ĕrs_w斟f㈆{d%Y]ei&fyJƹ1\FvʪJ2()z\Rı!$_%)I"s!,W {ڒ=Gg}LKT LCspu>> [WB4<۲Ϩ׆kuw$*yMڑȺHۭmUH@"4=.wO7}PB8W-|?-y;Wz6U'] lcW3B/O'c$*^H&Yd|}so9]q'j 򷰊Hj$6[ gߺ՘=zB&͗!oE;h7T3j TdvH2N4-*{47_A>Bal|^9M1U&#An@zEM=o-tSx>*eFD3Cd]-% C;߅\r'awȹh&#fZ΁:Uc((1}>'l۾ϳr+hFDS.r'i?] Ihbw5S8mSXM䛋!}G'hBk+꧉fƙn6J:Gc" x#Hj39InFj^<:9q Pup*Q9;|rp%̭r⿼Vo?l晢-E2 q; ثrt?jiKHtܱJDZyφ=dG;\ 'Ƕ6W)kkvl`ڃUڰ.b+o;,8"%qe9b:Ӝ䆉N**[a1ةaŢ,L0U'bxqil`5~U8֡+'[Q!ݪ~)mfpU¬1#J. ֧׾xMT p6/W2eY=>,RI͚i2 nI#Hڥ< v R/vC֘xh6ǧm?w%ݙ.salk!~-%8Ø0c4DTrB"dyI]Y]IK!oW!VceEy7$\;*6)O'&Ϫ&ådN K 4T<VQV/evVyN؉s?{Dv`%<"3?Wݥ7lyY_@އAJiKZ3$4wOϘiQ8WC-v `$E͠b% A[<m_V5*k:Ό^Er5F[yzne6DhlY jS2xW*Pm߳%Dih50*|FF۫.4a\45We J.w.usB+AX cO; 2k3WPRlI;t7M k6h~ԓ7:6McUCS*|&f#uΨ܊ۅn ];!ʃY㈆ "]ܲV]+P ҄">5;b"mU9~ pa{lǚs+=ll)X2y@e)3dGE.4[0޻@kϫ j8xĖ{CJG30 ϗgI,#4l1!ˈdg_>1c9tJkjĻ-Ԕ2"tϘWYǽHWYpD~6oYP+w?7`~9B4O:uʯ >^3N ĭRig:ϖ_:sƖuiҸin2́4\uv,uz[O(1罉888kڙAї;Bwxc )?F|heBlsuyY}ð 3bA}ۨ\/,I|D.JjD(T%f5?g"VddndW㱅ؙ|Į =s1&GJ!kF4;=,8JiS*j }D\fz(lo}V\|hufxҔ3Coo̙֞ w1=*I]z𑸳{"iO߹"Ȳ [o2^T}Vɀ7䦆~ʙ+hW/~d;Hkb>ǣ¥'l=2_Fᴤ?٧U4/ $ߺͦ_{3v*MepJZ1tzd!-&%~Ze- sg*쒘R Xdk^ ɮ>:fbدP͟!}"[3J6l'Lʓ;¨ rm\]+ó^>ӈ%_ȅZk;uRᯝzxrhzbÔh5w N^r[j,YY,N>`M>B'x^] j"u XH}r/ݓ)|{\ކY˼[zzD͍$}ZFUV6EZtQށ ‡O>jPjvaޡ3_9m Rdœsud\ ^QXi $}=q4I)&#(yCs(7bj*T1z,MՅcscGmԆ˜rC1g g:󆮍lZqFwcCULionݔH p^]p6ON>^e(Śs -!ZBt쳺sh7,.9J 5kJy6 ^2k͸ Kd!U-"6XЭ(8gf",ܺNkz[sT~`G҅`Tj(s\ g^ܸwz>_4̤Ql%Fayk}2"›}QIfVOW =ifB@-|S:F3@z)/?j7WKB C{!bG%kUe/jbo4C>O'0-JPrY3'{Ñ(+>'AFƼd]:|=7:tE D ~Q B O4馛F˺D;|jL0+Q=<4A,*z:.NK nviobBim`|9`jt~zi Wu\Eǖ#2?D_xX< .ujf(?p9%ЋΘO713 xؔ}1st/+x~\NOF+kV.mTaSdqG[p /hʜ|ZaG[e`EzRH+ oOI?e{咮_0>`xt*lglP.Ohc7Ŋ "{|D/Wƒh6 󯆆wov/wd0ϮȌ-q??7+dJmoOԉ=#+hyxGnquq*=:,bx\}msF{mvC%Կؑ)Z3cjCLpiں|9 \Xvsw&/"m ]t{dفg J10EB(vC2n_6K߯4e YGʎUp6.#<ŪNŸ]zǰ?gs{Ѱ/~6%u>}qw6G0Ar[ܥqeo=BXS_eԵkf nhq19Q m B@CESJ'>uq|9.:\dBNIK- 2X*=` 2*? }:ȢqשԻ|ۅ 'n+Tɟw$(3n4]>PChg +\Y%7R~(șL3|dXԺxU}㴤qP].ȣ!D`u yUF@G1)ӟX>#v NS_#„NbXm7jYy+CƉ ilW7qMWO+")_2VLqፇ&o["[ާ}KgݻP]P*I$s 4b61z+_QXk4)dϿ,!"ز_č8Yh%U V0EP|8?|W}f}q|yII&sUDU/wr endstream endobj 49 0 obj << /Length1 1393 /Length2 5904 /Length3 0 /Length 6854 /Filter /FlateDecode >> stream xڍtTk.]  H"!ݍt C0t7RJI!! tw"(9kz}|EKGaU@Q< ^>1OMre&bӇ"]a EB(MBǩ#7GH@0k:/@"0[;߯'i'(` v" 0(_%8P(g1 Ãʋ@Jr>xPv+ ;A %b\u6(0 @a("]e53'XOC_xA)WB0d0prý`p[  TPEyp_`GW:9o(Hkhs a(W^W/_eS["p+ѯPz^?u#<>l`pk_ ݜO07_!h?6[( HXXPu@=!v__f4?g3 |\P ߎ@ 5 XAmapP?g0O { ߯F _ <>< !#!ď~]?o A8_e( A~x}!7Gn v9z - uZ5:^e-i-< A^>?vjCAU{8P-+_> 诊+za]PWAXR0D$2z7 G)4F? Ik| J7$@[P'B43< m^!>,ި;R>N ⸋u)`cS \G?},񫬚&ɊnQ٠Tc+BPLvܻWrbiXڨWB7 ?ZAQBk.N5T3# gGjgOYs xM8" B6dعF~ OMHy' B^s(gEdp'2&j JUKiO~AG/¯zi|ڝJlúCYݤO>~&cl>+%L\:[l&xGTJ 6% d_gh.l1T-KHZ0d`a8N0WqPDJ HNiġ})I+VEġ>&@K@JB{wx/rSf)>S3)05@?/SiwǒW:T!Gi$O?87|-B zNGe80+nUX NL%vw QC&{[6̘X1^nCA>} |y!%WV}WaR6cl/YJAkQM\]+^n1Ǎ+vTg|vI1x302'r\l]0?_"mR[snT菍) \ȠYγoswsa]C{,So3't8sĩzP ,`,^ʪ OoQI^wyԸ3t$]S*aLZhJXD.؊>׳s} zIϓS3c{"JGb 1 zBXܟGdMNP+X3+`d_.ђwN yp Yҩ6 ;/+C"}e#b-"E1[8JT>^֪^~](11}ԭ#@yjRlGv+?0^$l6"K}.)yb ݴ{%' ܑM_[!ief?`=90~o7*<;rc5[yP z*D^ #~ iIU*!|d2D0k}w+De!=_Q).Vn|[aq0NI,$kfNqJ@wJ;C>?9ݐAK7uֿ+MUkǤzo5_\҄WXuE\LfS]k5^nM;OO*Gn8bFjxfM1G3TwNyJnjZ{yB"V,Z7LbN-7=)S8~*Z72YT廇CmsLt$K)X̢R+?a ;.OSnGs[\#ˣ[Hqťv5 Vߘ"u1I]oP7CXO#wk}45^~>3d݈=S:!)58EbÖ"x-Ŏ_$ &-󍶒ZXƯ+&xE&wDWHycgB LL.Rk&i>~l߹FwfԆsś2_v[,>5bê_ޛk)I.@9*r 껖v嵝nQk!/B|uK"KxT>*DbglzcƢ. Ҭc$%*7۷l45wL2WlV} dhzel1iݳ0,U8U4JVʂJۥ陛gOqV|fSeiX}IeMqmϸPs"d$ f ] m!g?50K⊪oE,h(V´z@Y Ibi?bu,V%ܣ]x࣌ƹ׫gkWS⊴Jy*_UP[$\ff;, Tgܯ^gTF i9[c}f+d"tIYqiPzYz8mޢO&!npMԉ搘"?WdK #zAPIj *<:\ZOXZsuNA_便ba_g>$:Z;ՠ<1a_KRemٻ=k޳[S"'1|:& 51?g9c|/3%\FAnDY9ό`3HN{Eysw"Ay~3&;{Jr0bWIN=HaSOpSWm_2!&f.(5͐ǔ F2 1^RsvC8j54?Up*ոu ?ƪGX@oē|F;8do =rw%ffEKȏg9? 13Q8|L…-N5L+F^VqOso\A $A4AzGǚ#P`7oGeeu#:+?5vɼ`\ ș p\g4=}M%:{(V1p]J9»$ʃ|GBHCe|/#>I<e&sN$618G}kl` 犌,Ou*m"Zb@I\#^=mVs.S˲X W{0[^`g s2椁F ߤñ7m"^#3Rܤ #m ghg" Y l+V fRz%g3j,.[WRruI?n.>kd#}cYk J1$uHt#Yn:`B)JYl}UFdWK63Pvrk=r?Kر,o1r|UBoɣ!Tr_زٜԺw]:+7´abd1ϰZꋼ~nbF:zC=$eϰ Uq|l|ʨ`!X;ӭ3~'ݏlԼ4!~D<2ܡC i7/f:?4 s|ٱ?9*+ຆ*6%0{NTd_[O㷌lr v:MRmkFlfGKԷ/_D 1R#eֺĽjj#%'\7Z|,CnɞzXPќ+J@ w?2ö,eGq 94K'bpSI< Vi&Z<[Ƚ'q4B"9u,*S1xbt.XqHkk(h~L'zy|kخ UC&^fR8c%Rܞ+f,&A^ȯ"LQTz$6F:}qW;iϾk|21օr--RZNȏYs<%fU='970(GTvy Ǻx7 " YOVd'555_[#Й܎ ~Br|fѹLfï}rֲD5 ;Jo)sW#l"+ٴTJB_F'~7䒗‡ķzTS ?w߼(`4)l {knbu-,gZ2P:>4PZ=3Klj:مxR{%Tl+FiNn<-ZobdZd],9o>.xk36#RO" Bo$tR"i|*6EHJ%;% /pnO>WWFiD4Z]S9!T@3> 7fTcVkY\5Ã-{e-=?+:lS&Y(P endstream endobj 51 0 obj << /Length1 2159 /Length2 14297 /Length3 0 /Length 15600 /Filter /FlateDecode >> stream xڍP\[" N]Kp4N7 ];$8.Gsckε)ITEL@I0ȉ &`aagbaaCTtO@tpe!4rz9ʃAg+;?C@ b`;wKs <{ИXyyt,M@y#' kF#*4NNv|̮LFL`sAZ@tp P0M faBlj l,M Wg)*-P2ˀwsL@?LLvF wK9PcrrsbL04qYY@RD`o~&vNL6pd#k%@b`[[ -&}wgpA`W%v K{g6"2s L,HnS`Jmi|At4rޞV!L-M@sKb_,, `ϓ넙A60FG~/5Κ#qb$8wCȞ|!G>b⩳}?V؅OG}16M)z,Y\~3 -X?h')4.w[V/|殪]1"TbsaP(mK қkkI]]mxm&5_X0W{<]^V%5V'vn{ne?Q` P0 )k09>WC_T_a{8I}pu%lpI,4h"2;.BI gH.X.#Y1n<ݿ6(}4E'7}8~t xfN'+ȷ)E0\+6N@AAnh$ (i0ɨxvfMa 8O#U=B*i%uzcTg^Pcʿ.#MXҫ&Iә>6TYZ3I%7{AѰ:OK};mt`dk"*gyIh/Jn5fxViͶygO2kLda<̓EˋKl?0_krHEpm͍*nڠ'qS/[ɾwkgeDY)i챒>8!_qԸEVP™b#?[h|gկu-\F5sn%VTkVn*$N=C<ǹ v{or,NS3#BWiƙ[tKDP~_ )JHr.JhKԧJ#pa0 LSzrޗgdrKOXÊR%gsr:lTb>aml kdLZ0t.+~o~P2cVReO=N~&c$>[W.saNv3{pjn#iVCOMLi?#$[Jo8$M|߃:ضaLb]YB3ûݛkǾ#-䖬E$]>Pv> X^(P{׎=3y_.F &'o%+DQqoS~f /P'V@*zNK~5\,PXXɏ0! 3dWCAVrAzW]}TwQ*E~/^+-zAcA#Z"M=Pg~R$|F1ܐymK7A YThedmKڛ%g4I0iDԨ۳ԂJ |Rl*(\7qV}%q-R{jd_>-)TۍVT\m|711v%NA?6Q!m0̧iOk9ږ`rPP6zpBIM-F {czxemo!Ž.l2m֖O9'o( N=hdN,ey:>3blK1\}.2ݶ65^gHpPL>߂WPI]w'nYO6<3eb'clvtFXzQd!Nh7zya\fb@`,<.vdCj=}%x3КUv%ϐQ/b%ǎ䛚CCmXEҮg| &Z|L'C Q"\e_׳o]:bXZ&'iB 0b:~5~UA ؃$C1ܨ}~N^Q,?[=?~HL%ozjX0dH,%ܔyC"D7h8 *9u[ ZJLU45pțCIaڳ[]W4{aNr9wYpo1Ps⶝iKX.ԥu<$f&e,f"*gm- kgnisUFoE~Ȉ.Q j ɡxo#luV(Yu*m52}Ps}xEc$Ue=] fyc+cdcUnL!Z(ܤ'Bq)ltK%0$N| >P\ R/#*!2 ];#vߺs&/Bԡx&`FfFIFxUD'1xW&wBȂj Y,&9% I^?Zңu_S`jrkEG _"2|n[|M Q?ZL:2:”YͺNhHsDfOI}G9 U!lH(#+fX4{rbikuEjGH-*7 VR!M-]4'rM!ʖ$pNGz6p"0aA ~m wr\+loVo2f谂AеO"}rb ̪zj oWG!mAOt"pIzw*zSҕjnVƟ?$1!toe2ENAPw^ z1,{Ǐ9dls+BZs˝>$\$)OoS`77<ߛu5SP$)"P0JLp2 q3&JP/e+ZqUs6CWx׶-4ioUzF0}>[K1Wcph!oT[^nZR|2ύ4eR=}u>UnJ0~sݛ dw͉XBfM)-ZaOj@/kl;^Ɏ@3Yj:>Q|0o@ɞw?WnbCĖ@[͎w^"q[7T ?l}>y,2DWVq h"?_)# *Q i7[$;#'XhlKvH v( {8c/bxC.n|c`w_Ѩ H&.ڡ;㊉[!/x#!)^ ݽ 3qGhMW߮LNޒE$ifZE_O4; 6 } Z8KD 35" n6Ótl JD Փ~NK7":J5EϹ\b,rIUڬ]l(*,oOX ;\<.3ρaK1ŃcV2 *#slbq\6]1O,3db{P{fGuH Y)9ѥq@gbJ&LGo4еCW`JjLC'Uӌ*\M 9u}5u3f9!>R=sOrSw̭$x0S)0OlYB?80 xn@9pk]#i63@}PĹ|I۰xP@jآhrrSN|l?ø3P^?,!V7Λ]wGyũt Q?A>,4>Y.EDl4XV?'rTS+ʇQKD"A7ϖn%Oj#E"L .JȌ7-Fz3z"Sc4_j S7d7w_ƥ]j4rV: c;C-$U Ϭ8,rklǖsj  _{ܴATrcs;r u7~M!?ɘº$2~m#VʏqV][HF*%m.|ӉG ͏O9Ǡ54aly^^&iB15'eM:Mxx4=I_nHf3i}wծ=K~'aǽu :v"5{#J!GƖcW8EBՍŘaLp;4/fe6'M]SN%\p{ײTuc9Μ{<АCWYr3%j_`MO9kVP}V.c!Hdk pE=J溆l> "gFhr7; J[?djfi 'Hukz1Y>*=&G?ڿқ^Pxr| hXn~Q[~yKA]>or= XCD+'|H5E`!,wǖઞcO*=b+<RkRݦmPm=aXh4<SC1F>JgqJWZ,/^p^懣XG.pY{& ӣBF8/d68XJlC`vkL^" C5| #QF*@]<.o ky 㢃?SB8e l-y?=(=70 3~v /t&:q3_!KfB03,&DsPv6u۷S 4l֗uo 8WDV,rs^-bi=Ryz<3Y>=Kvơ!R,Z/qNrX]\4sN~k <] w.jlSmkl8e@Q hI`Xt;nn&jiSCzAZ.1t_s (txa &T{OXIAy0eJY@nt Iɻ'b(*׆N\ğ^U˭`۩;oH٘?\lclruD9npyD|.:rܚ]47da':p¿tcr ][sSϚW8 *KBnҩ &J"m_;X,݉Og0RhmSRw e>䈨Sq/~ ]$_ct&#WB926G}wZ>¸wũX#8u9Ȟ^'9@<NڇɌz5!i0I[K"ldMMOd]Q57z]p`^ފRko2h~ĕ ^ThH|\b;QG?ג带B8xy+ IĈ(KhY /^sIV>]DWJ5"0um_D -aAUt*f.x*?d/CQ LIҮy"DNqIj:MAƂQ/ wΛox,(ޭ&_n-7@ ;QN9dc#zmT5X*"p D*4H8 I8mB}{)~V.9x1C]Wg1m9kNs /QA51k%Ba(pr}=x3$&-5c%k.tD`=O> cΉơ5{:(rH;x~iߍ }neɎʕ|Dlѿ9Tx~Ҹ>s%_;8$t?~QR(bJΏL#,2f ;Ti7 }|+雨3bZLaUty$_Z! 0ۢ g]^_]A/-?ws cVqWr=/!Se2)-.~׸"1/JfRȻFjm tMT Xʩ}#bz{2*J> O㄄j"I_f09h>\n}1TK8Thc[XP5,+/F4j p+ϻ{2QShtrղW xPkj̎?J p :k0ӽmEVNGꐑ]B1 eaP> `1UД1M#*oY> &EJӠ ac܃ma剧zO#V\[;'3+A퉸 fNz${{͍&]^͓.ҤVYḭysN+:IY,RL<Ȧ^˥4c4ݢ\IAQCh_=a)6;ǥl"[(ڄ&ˬF!OOPafXG%!QKkfzO9a/v@jӓ۷c33-L}DV bGP~ocɭ @v@ȇ[S"%U_uB͔Cvd7O}1H[Y7Gsҋ>M9vk5UBkwn#Y?1} _SQR5Jo9Oгi&$_;!5ua>VZOlQNh5'2 c}~TBd=#Bԍ9cc@"Yr'a3XǏěk0¯JL!HBr~n{+&>\H-ƿpr:F_Sk͍6X]擽ۙþq '~I79;vi`9ݢuK487c9@c?4d];9nmD;<ߨESHE 0>Ӈ*]jqOߒ{јmHJ^p} %mʗ. ͽiWꮒf-L']Rg6dSpPLBDsSBwZs4*)6%|⺬h<MjזP5wPNBC >[ĕ^Evޕ3ߊ%f3W݋s' BTQ `I]6/j[A< ؉oNi!^Onh);MKZ1Es"'t_y_ cq 38 ^h')y.G/Oqud?plȭEnn Ȧ(RB]`~ur\PmVQ%[Itŗ,C%XPA{Qmf*f_ jjj:ZG+Qc?ZhPTo)iC]q`rnl&GhSaY { L2VhaA)e:ןcLJw+ú& ,S5:O4ϐV/EL/,\VpLJ 4 ӁqaE7,^ D)ԂHdcU#R@.F5 :e&;2k'5#BnҏvR@.9Ebf /3ok>j~am"HxnaY< a/eUfIJOe5/#WY|NwvޡnȶInPP VgDJc}ǖy,(}03P(̋ ( ǭ ?P mBqe˺s&--vhd6bE6;8hg?NoQSe,"B aVV,pjKnީOD/0B(s])LNq2R$wn3dG;{֝B7Ee!$ՑL,mT+x:N/c|1{0vՕͺ*lpvUV+15EI 3dan~}xplu$<Q,@|׋HgVg*w]jن= I]InPnĭyDvtuN s.-㌩@ư&򳨒R;-#d#>>@bcUN b7x VZȵ:]'ӅJPstzTL[d_YQ;CnzvO<ȸ\CρdxtO cG t+ )9;yM=xՐaUw]#L9 $с}UZ>x3mjkZruPɌ؏m{ut2vc5"yv[)]Q/]c^6 $lV1pف4QUy7V،׌jQWP@X#?( H!B3l HWȔ8>ؿE"ͽpX:4`_dWt]BK~3 BѥB y4hz;[2l7T c{eAb3'v]^{s/Tٜ9 :u{M+>\t5Tyh\Uv_J;;VơV`D GYHe0y:vܙ4̜`W΍3 '+KzNϼuw&,%2W΍JA(ɜiR`'Yp2Khyhv$LL*γ`&6݀R5 '{47g;d[*N6I~hya>!&-?<OGJzXPi-@ 7(az_[ <-㋯!6Z۲pUŲpL8x!C&hh*{f[t/w3a5C#R1~؛G >k}J6z*Lk^I_GK_ cYRIwgRY-I=KZ$z?ӕo:RpֈpX^3*)ğ4˟;"_̼qFoMH^#W¼#L"s5n_q#& 6e(K {f"gI}6 ҆מw bptLPKp{@ww-FstN3iz]zTNli-be'$1_uh߯}ť.Ti"խ-;pܶFnQ@uN&.J<^LiCa6jI:T۷ۏPmg Uv7ªʪhsLa?s!Ji"rR~٭z?0j;[j9YLG|z(buSBN4%-TNoupc1D[kZvIÖ*S yTT +>;)$2ryyEjxZ &`c\V<|Iw#K [}jpdO-}WC:>g!I'35 'Ba|4u:!A1#[❀F:Ph~\3by] t5mbhc&gݑʒw<;ש iX]Ɏ{ڦvKST`V߻  cX>z ft_.ȅM3 j3p\jn \mEۦ\  嗾Rv ;\^y #Y,Vv# p牔:L 61WdޙZ  x+|_2I/ ]\;ZZ5 O@g6}+SỉWBoC8}]UCK" zƳMF%g|-Nj>kA名59wFuXwaszY: 2[Ȟ9 wc0l_٭ =U$~&xX]\M'yzM` 85} y:Nk DqeBl%W. >S`4o7䆭,`f_"g9|صdIbx_rwllk V5:FŮ 4FBD[JGOL\ÄX8<ŖJF0\ȗ&(],Bѝ~?U1`zPeP:AiT7rB{>`ׅ թ1RR.+]%8 Ny5 ǵVlȽC|zozH e )|^>NZ}37՞@(X~:Ox o~گhE1P#^L{??m;nS3w1H\^؅J*gAP4NQtfQ&D(^4!;ƚqPYF@ g#R]-` endstream endobj 54 0 obj << /Producer (pdfTeX-1.40.11) /Creator (TeX) /CreationDate (D:20131120084007+13'00') /ModDate (D:20131120084007+13'00') /Trapped /False /PTEX.Fullbanner (This is pdfTeX, Version 3.1415926-1.40.11-2.2 (TeX Live 2010) kpathsea version 6.0.0) >> endobj 14 0 obj << /Type /ObjStm /N 39 /First 292 /Length 2377 /Filter /FlateDecode >> stream xZKSIWq76z"a1`>E#$F-yj[hwORUYڲbIxf1-S)Ôb>*4 ZG,Vrn` "*Y3Bj 3÷c XxY)(fY1@ ) 9g΁ȼs%W^2Ǽn`y$.0 {b,Z4Ȃr `,ϟ׻u9ɼkx]YOQY%i⨼=0$`G~"{ =ƃ ᄶfu  4hf,A;;N9d/?-`Ba >-)Ā8慅|\0Cj9ᇘ<)!Duq[Z=HMc+1T `!óK}L>;)*oNDCPBk54qTjIC&m>C)J".DJdQD`"#H:I@OY:CR! @2+if22ti}M&JB K S$< aXede)+>ĭϤl(=Y#<6 ` | <3A8M,p/ˆ,loZmк1( `V83c186#2Z$ B`5o l0\@B-V'Y:hkCkaXTDhHn<#p!/Qzg4Pnj ]~<?mJxa 1ܖs:`dyj*iG9W6響'hVdMSKQsy [þe eEJho#]cOHodN)J]vh5ƙhSh\a܉CCI^rHqmLt>| ؔ0qԔ(e Bhfs m\s{\6 ~!؍9?>7-zhd"BM;6vN~=#r r2T&> <920E6AE7C880CFC42DF5726DC6702E1E>] /Length 163 /Filter /FlateDecode >> stream x;qsۘ0^(f6թTV`O"Q rn嗛 ?p B5C1s]1c3uBdG[MDVD^DQDY"kBb٪FnVVusjb$WΪEnVm[)%LAr endstream endobj startxref 123256 %%EOF survey/inst/doc/qrule.pdf0000644000176200001440000055057014424312434015171 0ustar liggesusers%PDF-1.5 % 1 0 obj << /Length 38 >> stream concordance:qrule.tex:qrule.Rnw:1 97 1 endstream endobj 4 0 obj << /Length 2294 /Filter /FlateDecode >> stream xYKsWTxk;A:w$O-{]} ;xoݎ 0y$kt.PKO5ԖL-qBu ܞbb:\fskY Sz(E+}}+M'ABk-Jέa ?8 }M=]HcMs}w~sݔ\T#(]'Y}DcK@w`@F\r 큞9`l3t͵O0qzu؄s t(F<3MAR$8br(a,+ <0YM+w\I)ɤK׌5}bwd倁fKxʳYXJO#İ'"%ZK&È@H?$+ؘ+)Hlz$n\D`ع-M3@)GpK 88 A`1>M.X&u<0,tR{aĥNK}ln_u%dBmO(W?³ BA?uYt]b4;7š 9BMr30`Ƃ#29Zr0{HsBsf~-=fqYtde8|6\M2\˙E \b5 !&,X 4lҳoE"'Es*8ҡ7)szd,1jN٢}TL3Q>'#r5ݖ , ,h ~Y繒VMJZJnr9Xۓ/.moRG `0L :X2)l1XwhQ}y{ aLbBPsC2ǚZạKWhU;InXß۔q0MqgAgDI#J9*f_uQnKtip_o:G:{tljf\a[LOF>?@bOL!D)33 3^7H$.^(-k endstream endobj 24 0 obj << /Length 2587 /Filter /FlateDecode >> stream x[KϯɠVo|Y'Fn$ 8aIIcקA5 ć͏oNAF'1NP2.7fHe_ɔ)UVMoK 2J; ND#vU|!y:/6ծwq 6/lٕ$Kgqg!t:! HlVq|ߔ,c,ɎHotp"fBvTn7Y✨÷sṸdJuZxUbJ;Jjb= Dv;v񥚗RA% (kjfy v%h5Q߱ajbH+^ن2(0a/ G` v+U)2#Pv@" 2+} 8O#A6Qy"l* *eW/@kk;)a1NjbdpHZ$no"sdtUiF'jV[zm\{psvg3;9̲,w1呹$T}059͇; NHB@!9?p#FƤU?o~rY{'Dp @Z+[/;9F4Eb]`VgC,.1)gJ{kQ/+*0h=w΄W88Wu3U,t1zqU-n(J>b=֠WW/ߣtr ^̊nıת=#I~!BE&duL:3)4~]%W6hKd=c1G&y&0`TlQXKgg bi vdh -n!û\: ߰U801 eqѝnw)>zҥPzDAȩېRg}iS<iupt֏ m֒gק ?YXUb5&ԩc쁛h%:QdW\n}m_r=:};0=]F ^Jq3Fh>192'.U(7QhK r,' ׺.\UU2uڅ+"nl@s Y@8~ w~|^Ӥ.PNͺ(3XoWlPoyiꇱ|ďMGC88!$93h;qMAjXwKO]("H'H AF-ﮥڷǓ&7bD/xi$x9Y8qOr*j0J6:WE56 O Ͷ6CLP&nBU0K_OW;ľrG¼+T6zM宼u)ZJ"8qFmXr)sӟ [z6T\*v}m~9bSˁL-`!b攨c5{\wJ3 0*ʺ.* )O(zȅ- Ʌ'Ȏdk/*͈ClϩuРBS}Q%{)dDL,Ch!,5Bg}wKdv+͒a]h]P$/?(GL糩mD&/djD 6j a~wV'<[ڝf^=Y5a@8#eg=Rpp66 ZdMzvʲլ½-|: .BCTq:&䢙ڵNãm0q0)!gWC6AvCVmގÇn^ذ.> stream xڍtT6)t(1H "ݭ C0"* H tHK}{y}Yy}]{_fg5SE@Up( PR1@?(HnC9CC0\?JH(ucSnZ8ࡇ3$J$@ (7(=a-~CNȮpAP7upB 1(Z`" 0@@`P?RpJ;P^^^`w~^C9P'kd6g4~Bv/FB7g w BuM+X//@+ ; \\p`stT5Q(^n vvGă=0g w`|3!H+ʝkF_inYnpqQS!}sNp5UW1fEDb qU ep݌Ao>hw'Bz@ ( 'w3#a @_V7 E} }&&<FSQ @ %D0@LLD`؟F#XnHFݳpQ7ԅ8tKr;G_YWwGο?qC]ԍ 7b7v07rP;k#a0o. q1ٍ~i"an/ߍ N77 -7gI8aKh"0 !9曕 Q-7p&p3?$u@ Fro{[P7B85H9V5V*[¾b=lIU2CUK7?`'̶9n⤺y^]j5_?EVj]YdѱB1sSy=:BSBx`٘l{{tGRN ^$ع^Y<28DhtuSO=5W?7*ij1`Gܷ43Dy|4RkT % .)'ԝI#yC;Jq!(󼃓[C uRU\'s.%N|K^pzxz"+8?[jtCţ\fPн0?Zô͸;- I.wMR`pئ3YU04[I^/=KF^Q6610]:!pI[Q+gGX \qnJQx,J\ΐѸJ;( Czx;gEn9kW )x-v#x6 :.M݊rAw6Ƽ?O(B[-FTk%9ڈ NW^r 2,t ڃNep/r1;*ȒZ?W=y^Z=$.q)~*oqt2;wV[nKhgxM|uahJI]?ލ[W ٓcFR뒃2VcL[/oFn<-}-ܶx(1ITERɤ=oj4) J;pv $zogKӮEdrR2KOcFŧ鏤ʖ)r1϶NP]ֹz U?2a̚"c/.0Gx ;6Gis`ZJx}< -v}rph+\ƥ+QBiYߵZ1\|#G%*꜏f,nFZmYn]G!ɔ ߔ{q KʰV.iq+Mg~S8\}+t`י5Mm(Ǫ'69NC /W^dӾsg`q|=zQM1TxְM/fh^^%_i%8|Y ?zPT,nēDIvC2k[e<‰ )mnRb95p9,B)Es+g%{8q\ƟjryA@s+F1%A*9 QB?1^!<}MII8"ý5D_$_ut]Q:JҖh= >xGlꛖKH%t ל}ma[4z fX )q"AKo=T9)1QYgxrxG>@NZCA}YyF'%x<*>0BsOzs,U VIIUnm {84kъOy? T{YKVʓ{J9==VV4եwo$nXX=V6, bGGZUlY}ճb_ϒd[|굧qD2MYqiڥp8-Dە/Vse~YHXmZ@vd"yN pRمUIu 2;( 36 vN5%;׶/W*R/b#uwcWYaX=-2%P-Wʈt0'e %/-۶μ2/c;[ a=RQOQRL;#aw`1ћ>*>\Ւ`z~IPʐc3/VsJF|,wq= ?"}KI }`B.{ (?uJN M_77-۰JEB2U^Q>*սuI ӱuoZY?yce´\򠳾5Rf&ڨޥdWUv9c(#;r!ǩ΄:6fj?競+IVEUIT6O1 H>!kMޖM{8F&鸳BX+FT^6Gu9ZZq)_PkG cY̸$ jL)B[څ3'8$3N689ԺPwR߱6Óu0Ukݍ:i5'K"iۧ)!dPF^$0l882Q,0<CcJRgjT(!80UWJ ^,&)OxLη0́faY<Nf{Gm`jY8nҒ󀺊XEM~0.UDNyY{6m xOD6WiɱN Ǐd, Xcwt&iiv 5&^ojLϣߺ+逬;8 %uGP$lE19lJHXn TV*0f!p8?!G3n[EpR-r6<|&6fa=HDh3!fal]bmryj]qJ#%[+5A t%yY&]Q+vP `_Ӊ8ley*:$G.T,:/rmIܭH<Í(~SHPU[d>=B72Vw)qā5bR*-NSڵ{(IfZjg嫘4)TgRfcJ$"Lҏqʍl2,T<:4 :W^Nh_mhOq/<;{6A`"J~'V/c 红c:*%?;@UvgT" ` fAE0/bR/kO3,ژiٌ_'ۯM~@/S UŨՁ\Da)ܷI@+_ǝ3@?Ȝ k),>?~ZyYYWsAFc>ҾRVJg`]8i[я4kb&x1)?#嘹G`%;u`%뀷N2#|yP!4`m0|@*KOblwP~֭=RmxҸ&wM.Xs;"zMStubM6lrEĹ T.h!瀮EdmlvJ |Oa ۑk;Q.ꊾhf, `,wzrX@ok9h5RR>bط2c:+yԼ º9'|+-$5ɾ91f+ݴz,wZH2ӑ=y}?MM_YϦ8 p@c>i$8&㗼?LJr}^߳"Jw#3 _C\t5^{UhPAQ}εcϗdWL/vu'Al&xC smejnvlDt/2x3[7* Rz'|)Ah|"fYI,} gi'vm7͈]%ʐجn䧚ɗcc;F YbzeB  : ˳ej:6ʐc8yʖeh.Rz,S1bR> stream xڍ46,-BD {kh3hDу(Q.:A$z|995k<}{=̨%c(\\ nQ Ë̬E:Aeg6!0`ȹAHMD5`.Uw' xyxDEP7@A3nP;{$z=X !?g#!N=5H$\;#anvlO( A@< 6-4ΐ[gC9`HO68A!.t ^ЂC\"E97'lm s].v[΍Br.6`' CVhŸE!ݠp$u#w6+!.Hnk{>\GϿ-w6p "7mfAxW{}o8یlm@ !~>olHOvbF `ƒ'3l`.N1𙱚.-)+ pxx ~ah*.0dEoԿj[O࿓i҅XQ)5 ?!2H鏟/v:y@K z\jkv5 6Pw qqCK PzAlHkd9A] 0zʬͿ\`z7Pp>^A 썏>|4cjnD=lanZPmx@#=[@P" kkw77+zK\@vf-Pv^%Cɵ1"vk٫0n:kNTqhС)z4s^PŠi`7}{zg24IYzb^ mhN<)^=fߧ5_=Y(JTC4;J)iE |E6[ o?|UZidfc5 Jҕ@U}0$VJwlz˖Rk4wY:-lc@?Ptd 4oQ6 Xgtw_UCռ&V~| aH)_W>6 iU ٺe۶mp^SI#^46}ɢgd||Dд b`{Ƨ>(vY9hXJoF=cuzuyԷkLV,see Lv#*$!wKwk='q6%eǁ`m|%1; &>]@pN?Sr@%U+@YgZab#e\l5Y#i]Kޏ+ Pe)Kdt,^"b۶A|A &&%fcg&3t5 *GЋG iA>QFV?fg;HNgEV.v%ϭ~zfLgBx-t])~6#= ny,p Y$6V&|WOwY7x!Y˼m5X`ny[9gs}f@Xit~kmB]%j<jXkf J}rKo𞯴7gRV5=byN>'{}OwiHUUcAp[1x+/K-Z0ϮaHk̽a``P$ϡlBDߍӮgҳmƱU}w< XWb|iEZrѵBo94v$Xפ>7~\p Þii7SZ]Z]l(JȀ!DnIZ[CŢh+"HjaFϴ{dZFKk%9%@)0XPS=MAji@#R_ve;bw *sw!+ 0k4K_Fj\Ԭ`I~4e`Jb*j0Trr]ɥƯRVֲ3_[%;&V2y68TzO2gsj6 Rm`qPmӪSglUMl%05)&ؘV&V4hbwr=gQWfu98J(9"Hᙄg֍'43yRTr4N{SDsd}"67guތf:=flTZjy5(fF'EU%xCJg]g&mID8SkRY.'=;oi8@q e&{X4F2`đ.sgӧWh,4ҲK!Rނ{H Vơk*@ Qp0y < W'_ xƏR} dmB %*P|sӪmLjo,=ro.nFs!7Ӷ^Oćb "AN=Vߢ0rZ0Tv(,^?O?*! ~|[ {IjxqݫYD7 PeW5%h%fn:k[ym {-6%n[.'ě%)*IWƙ eK 1QqEd)OK3,J4# wA3e ~qoFK"k5%r1־l5c[ksv_cU}sEo3[&:q9t!xΓ&Xb;cC8eeP'߳ڴk=^O3P_n;M}D-TD9SgW voWSflrAHIUA3 闣os1Lp,w}[Ph@t2$Aa>bӸC_ t u Y#L*SIӾOuU9bʹrihhg7,b:&EXg e>r4ӉˑZ.]4@dW$zl9Vf6C&ϥT^Ja$;2G:T)R/q2W]"l :X;`^[Хn)WzvJ~fd] >~҅,=V[lR?>OVTfNɍ<~;l} [Sct[󰒂$˦ԃP@ k"ьi0SiD~. #30.GV}땍&KPr.\h,{7;f4?,M!^%{|ŭP4NY9=X;)VyMQAƪ aˎF4ISX$"ڀk!$Z RvM, 2X WfMa?.n:q!ÈJ˹\h&]m7S}_#QWcMA~]xv͟B^~>[%'.\;^7|qƒ`#C^}ZQ(L iרq :|rZ/`F4!'9t(cJ<a1onwr̷$.6wfPb-D+#_Gro^6]|%a:wп)Q0rލ1R.9D0n]btã:Q$ Zo(VE7U%#+мmy\ yl8Zfd΍ۈ`vfXE;6X b(OZ>{,|u:'#pqsAGfO<*鮤tVBG V^trUY 9ӿK #̺Q|&4YNyPlLrTǶD.;pP'i+}N40oWj,ʥcu`EpZ'85U}BxbƓ03R>L*鞯 { .ڔc*HdW\pB[nkjmNR#HQ@Y,nUH#kƫFZaZ^L^ ^^?k-VSe 8FmwSj:~M_n$6}"jdӖX+-W TI$}7e)*&ݭe\%I]+汫9XLc@ڦd ZO?[V~gV}KX!LKeJM+']ٴ<''1-Í;\#x%?x"6Z|Uܻ,uϦ,ަ7lwƟ(0ּ8x)$BcA+n)IWQh;fjn6vn]DbS^SgD߻N[)uĠ Hܥƒ>=s+.؛;)ph[CklN,oE?jl1=e-&efüG~x=B=R 9h4~8Ap;-]lĐZ3u0=3Ғn9Xī9 j)oILu90ytR –qo/s7 5]6O+P&,E,᝷&rWDu,S;%z.%1$o. PUc!{ wH֤8d^G\kŀ%n*a?}Xtsb־Un $^GuIrU{yY\<"pjƈ$yIe:Ng1Jh6Ïc,)2,{'TWFaNDt֔[:vc '|sjLFBއ5M&OB9>N:zRϋ>6 J&ߗpU mR}J3s]UxzY dd;T_8]HiOu 8̪!}Ԫ糑W?uo۠=%ѻp<,6s_zs^w"(p\j\(T _ъnMt}95>m.joc0sE-2&T"s@䗰6SD{2oH>gb& ጮ$<OH\.%1J^A˵UZ6$@ SHC^vQ%w;`9YO.(ĕ8InK!y[sO5)߮UG8h<{8I_J9󣻍˴qO7㣀 {F1&ȤoI,N9w*G^c{2 ﯟRi ߸WhD :Ǵm^7T}#OΠYS;"B7|tXwq- ݈{Qg03JpJ8ɼlrmگVӓ!lmHKwpߨfn@<~2Eu*4?M(l}I`'x:Ho<7eG+_7>FcP?֮u&\8fPO}ߵG:1 pp ,{ŧ[X6=۶RChB[+%'@=@l8ACyoMRTd8J.U^}Կp, ; eO*UO֜R3x9}UL=>M{in 2'cZ -l)93bߓvk3EF71 *YnoAs*.C=fCgz5a钊bE)>ʫM7Vb Ulwe ̬_ Fl2=l Adaz:`.8JS{L ߟbhV?xug+5(8†)~:c/ZSJM5AƸv=j[o;>;0TΥݠ1xfA-D9/Rjr7yhL/=>`W|^-\FUk!eHπk`gBOl[?K7X6Æ7\wGjX XT~%{lbLYn3;8qoLvW>fAN4[Q]ɁMw r6gqE?dRbiAŝtOwZjꥷBxឆ8Τ'53tGHg, 7Wofi8.{~~8WIi:3?^Ydt_~לt%[Y,bpߛ8(GkPˏ&);n"'4Uۤւ2,hr-nюQ8D}D4s*,IyM$ª #X 1J pZz"56zB*tc8VN76z"+Rl|$v~9d endstream endobj 46 0 obj << /Length1 1415 /Length2 6638 /Length3 0 /Length 7611 /Filter /FlateDecode >> stream xڍtT.)"]25tIt 0  1C  Hw7R)"HHI41Ϲw{׬ͷ~~~|@z-].+%TGryr^^~n^^>< Ptu .0\\`$'Fp8@@b>^^.by; PAx@9 :_V$**; uAp:i uD;t%X%lH'1n+7FCtPw #dx@-_a@( 2VPp@ Vr'!aP7 í~T> s[;e`Ԁsܮ0_#*e GO݋f_5>U A@A^a~>*r&qB8QC@`P+ @A|w?-<` P(7Z `‹g(zY!^GYQ_[ր"<>\  /Q/~YE ?pk[5c`+6@X CrS^A^URtspf?`G_nH(j#ZuH0J2p@ܼ0WE'J /9P-+׷_1 +B`Wؐˆ}(!_]\^xգ,A%P+ofx$*`pf cmǩ7T[ɂj_oCP4"lWrV)C>"rf5kQ0_IHW-V)ٵk:Tш ,O(X2Wc_|6Hxà*vQK@"Q7mGT{S(HAF^`1*}C'IJJl&lqi=;Xa/7r;veki->:\T9 [ nR /MCw @$v >_ }@Pm/z.>+Q]6Ky6;Ooȥj)"d?%!!C\2͹"w_4jag4s8Ω:zDpzLA|]Oxw-Y]⾉3VVTU$ur07SdmW\{Eu,e1ޝT! :s~U2M>&|T:|WSHNK'WS7.rgDvECRL4^K4l໎}rr(*_e+H6J[QoUZlnG} VܠAQ +6KCo׫Ǣ}q?qI1n6Fiήx0|.i"BY,"a/oM$WFc \Vvy0-8gheB:2 2 %64߽\h>vA.lR&Mj0 p;B pDb<2̧Zr>- 2ea#gٵG1{pI‰cRee2,:wf2)u)]suCߟdLDe[aSe+Tv!/i;.7 Ue1n"tL1*Eq+Wz`$qF0SURˬ9_dCtJIdLALDcf9SFSu?ثD]Ȅ(B rԯy%vh5uX_> -f[Y~imCK[A% /}9WIeMn Yz+uҮVU,Zs\;di!ExMAj@ k G$gʌ8́l'C2"cNI>Y"wǜg@c9P}Qk8Rx%a6GXF0}}rHf8Y &~5X l1ϓwKkT5w"gY N+ŗ+{v)3]Ǎ d٫y߈sd?;0q\R#Vlby "{Jx t~=TBhLtHT=_&^ JARj3a 'lC)pjHI ˣ=i]Œl];\< qa9Cw >XqCHƬ8Uڐd#EkA0b-gdz²pR zũ仑Ďާ-S.\(mi$?b $hO˘_N~k(y?H҆6'uw0ۄ=[j >bZ,m$0od;bp\cM'6jo6/!O呢U"(&vhSq75*['@2'faQ"m:$Xugs@+]JoϪbK9+BxcCE\f=]cbٌi%s.L ;;|N=RؘI^N,5mٽ]hnY}Ijkg43*D&>=xr]FѼ5M3%Rn:Gr9:PYHq8@e :xL%3W5ݨ=n"^)aڽ(|6Yᴜgp"~1z8m3tguN4,5~7X[Gk[ޓ:v2gn`F@s>8AAP.ϯ_jifoKǗGս^") $u`4ST S>&\*τaO{OڑV *<uZv넕?s}Nǜ$+-=CS?fArP}֦%4ٹ8gR$ɫ uw&=mTd!txBf&р|ຣ~R䖪?H,.).ǁݘri$O\ѻonaٶ QrX{b;<Ľr_\wCRN6m53_±)H[U)NJOň Ua=kxXT+cV-AUn:MEaÜ0|zVMގ\elW\S djzI+ke:)~h"TT9~5Iũ˔eXϞc5ME#2iz&.5E$gaė 5&/"(6lOg^k[׋3Ȳwȴĸ<`IJ釃Ai9h gd e_=[h5}̕zekVM'f3,+ۮ3ÜՌ~g}tR>9(bu _/RnΙ3EySmk„Gȸ+Mwq}}ca MfОdj>ChSDAW;8{<A|t Y;4"_ b6y}]W""fw~[SnNx>z*rtӇXea*l}[q8tw1cQ ؛㏇; K< 3^ÿjS}cQr}c!l$CLk&כS-*N&c?s,skGY{!w-]xCsH8bQO-l E}xz+Nv &sfFr֞~/-pқcm$No Z]Ux|z2l~ImY.S C~e7x&/ޙ&{ncЗ578 %uV'ƾi_Oj ĹyTyS[z!7hL숆H"w׬zcCF7ƦH5Mbƀ^}0E=D,!2HMy~;A:]t#B秏yy vB[sťk#SI B1~V̰S* ;P${}?p a}y|Uw(|wpݍB}\(s*:DsQ*j{=ē>t=vhE%|}ޞ nx DF)%͆Yl,*%}0DRpt("w3KB'Ms`V>[aĊ޲‰dPmƓßZNe\JсGm7$"AiGOʇfAxa닏6˃tco5A/r~K/xSC\Wc^acϯ']?%N) ~@tHHi-hb%9UCsKlzNJ{q 1h-^H- 9ZՓ,99c:3)Kzh#BH_}ng'>l1 }v|0mz(`%04SfGû_/jq84==[fD2Wq2>lf}uP-"빴sW 7O'3H;ި2OSܨ\C9$*(=徶6w`.FNm2%ChG$8dvF'+Nw z;&uc4SPUno ij)3O )Vg{ ;~ u]b;!{d$u^;~Sv?De|l h+LӋ\NCP+Tgvi".⼕Jڱ jRE6Y>x^[iBؠeW=7`)XDM9lKw]BZt:tɆXx!Y%b_r$5FSA|\lUd,V$yUtRdO> Ӂ(jrK{3|1:W%7̗@m.7 *#Uq[>E;*flgZ}>ՠ?ڳojΐ"zV^C@H{Mnat\_4nAƄ~ _xTVNo='gSaoH˴ͯ^arDؘ1*~1|0dVX&4atMbHql>fr߬4\}.m0쟵.JwɎYcܩ-&]u:}b̄DMn=U 1.0Sb(g|[уiӞclFJ˅X*Id߻[4 '~XgX>gXr&#/@j@5(nbQn8a QoHf|rR=H94. Hw}F8l+?ɷ')\ &T%̖ȥn Oi&UU}_xG>yf Q24._)6hC C Fv *)QעNjG_|N>sW){ٖi=2+Kj}f^Z5#݆SCci)Ԥ.Wdse۽mHņ=ڰe{{¦yky GW r?ճj?EJ<{@&z$Šb휦 U.҅0+Q|hiP8ӸZD_VA~jV4F}Qݲi1Nl“[qb~-Fb'>0[%8:܀A36OJl@h? ?.mRb1YBU~yRײ36}_2ՠV'_>S_ :\?=O`RC"&e՚73 !Oj뱾-=ޤ䜜2I|9+W]t(;!ϼPYRLDhHh2 bZԧdӘqz "}wJKY B4[&R^)%e6۽ endstream endobj 48 0 obj << /Length1 1571 /Length2 8317 /Length3 0 /Length 9371 /Filter /FlateDecode >> stream xڍTZ6L ] 08 0 " Rҝҍ%!z{Z߷fsga㐱s)@<ܢ9 ]n77'77/#>c1```  xEyD"!D@O@c1ʹpD,,!g l 4pG3"-s> "rqyyyq9]`/0 r` 9pvj @0h >9(" \n  U+R@p77y:r m#*suq#A,?w'yl ؀P#`=a`o7B{<_Wyٹ@!>/?muqs8xEN`#:Ɵ<1A9zO+`//tՔR>{)9598NŞYF|L\;`hh}g\+FV qFBUq=^*^ Dj/ð-ռȗ{$nPCZ. x͢DSߢQڌ@*$I7h0qDzה%SȦ "d&\SůD몖SAR 1u zl89ֶ;5<84xOq^Q 1X/>EG|d{-64<)MߜkfӖBWʿa}*Oa-u*Km5fz*-3E}*TFLily|@ V^^=>Çf- aO[ZtfV*r>TސlFSrPh^idp z 'N_vP`n($.Pq.gmg43UhY`Rc0|[!#ѪY$h?Bmh!Ѧ7Bu"FoG|JVĤ &{#E+R]jd䃣_͏2LRG~BwZ4RF~LJzѩ}X|ǐUt>w|IEocW~R_y-\J:WVR*;ٲDx0f0|/^/qBաz'^L*3|/DK1o 68j^Nmh{N9 ژ5;wIM;/0rϽCc~+;a%3¨-Jc(ê'ε%^Bv @\"!rlfyi O)TOw%Kˆ][#•;\ {Ҭ*˖ <CZg7+I6#͓u[| 1n%3TO1 %WFTۆo,-)س u[czQKZ9wZy_>( 216$|{zU}u`w :&\7$x }eGqҹ~c%mHRyE9Ka0Lj!sǴd72VikPRfpَlvp.QV*YXt&d3'͒h)ߋ⋽0ktH\ֳ%bsIUI<0lɦHdU`SJ 3?\'"["X8fR*W:$/\QFPl%Sݔ=3X~My7(j '?b$B kD@!gфZH+:IdS|U8c}rZYPSM4 ~11,pr% jMBUU&`Iƪ{U^IXpd,f9پze0 &sP}eV;@b{IG t-Ib%F/gNN6-QǽC-GPU0wwv ?*G&S]?? j7>O޹J~ק3Uo@Dfd3:Ncd`.0T3VBC,KMELi=a()Woe tW;Q/pVVf//òH?4[P&!0!=;ٺlN?Qj~ɓ.踡.M|xA !1tv#QI0 Srr,=#*W9 EwT5Yc~ 4 r1痘PPbc<븫 : u\gvte`T9T˶=<rVxXT$U+k ZѰm LcgCI4qoHFX9cl %lcZG> UfgK2 j`ѐg 緞AΜDzMCsZrinou+<R^ćsľ[Z;ZYS)/t˾AđBPzK1R<ݦ*0C">{+&`Γý/D&0o?Dcch.d8%oIX>K?9MzcmSv6>jxG?v y’|D ^Xf[H+Fl0ƫ$imvh^w:Hq/ǥ4 =Zȝ=2|Z p*G)dvxQidnOԁ>lK̍ :40e7 "eZ{4@-ٰ-Oʡ>ԗPZ`][as߽D`SKx[E6aO[C3\1c 0}O; 7^UO$6Yj()CfkFsq/ekHpN{17uKu;8cB{=y)7(eɇso5{Ϯ7 ~>Q1>-NG]xXa0WNz6=!yJ C\j/s2;8OK"?76aI'kfo2zVQ|@^`[*iEU#;C%ideJwy\ n ;/2) /K]ާfhJK:9Zoh4GJ? Z7W1~x,Q~L=-ʻD1(fOF/ͷ)o/,'P)QR0ͻ^*{L tߎcN~VoHɆpKr [ fAmYu0"~*J`=(FTL .2iW9Q>mݗU<|yPϸ}Jqh=߾QQ1vsFRm& pˎi٠@:&|Vymq,|䫀u#V1!uJ*)ۋ?$oD ~KNpMԙ͒b{l(٣兝k *qcvZq@5H6)j$r4[/v~Z .Gt<P:}XV&?E@nTqTh}ɔssa a6oEܴY]ljb M9 hϤ$7̲<dRF{ ""+LVK;r0ЊѪkjԪR/WJAw [>47K_ahvTV #6*iKpZ|ϊI bURSw5c1IN2ecJ/^ n'MխX6H7jS)y!bhM3_v~u)j>JPSl.sM}5[l6f+*5G1sV81f'c'7iBw/}æq(Qww1i7)rݶ;x[dB="&Dv4 hp`uJ< n{FbتsmNT˪wՁYtOwӂ6~RUREH)4WXݲt}J^f+C94@‘"طFz~?cO99zW;A5f$8I S&gVPKC["Di#$aoT7cOauTjJىrk7h|6fNϭhxAY+H^Hk|P<?\A[#u8osI<dŖi:;lӨ]6czs~-۬ST(b=ܡi[Jέ ktPvei<)>6WzA41yeW3(mYcbMn DλEH,ei^h,DI={iXCɥdz;>R--J^e`ﮚM)= Y%yѼK'rn2@t '3eBr>/{G69X}?VBl;v\^p]p%9R=(ՒV2 L&&Fig@߶>uJiyF(/bCo= ]z?]#DĎKmFH07aA"uUdZyf{Gg}tǗNDPz`HcNr7a:-f$Ueg4eBb^ێDؚQB\!*F)ՕdJjB\OW+דT?0%:[T2])U}ɠ#Hfx1<IYo]eY)$zlwgl#kU9!q^?Tp9,K#vJ+{eb&ApȱBȥ/,*#..;E1O|GЄ?|93_mh"di㸧.]<Ċ7[\.KiDӚ^]'n˒j{ęxC]Df7`62߯N;DŢ^M+:aCS|{#k4gXNn jib|X8Zec66]mSM&ewkWI\;\huds {Eehs>ꀟ>mS 45Ly4秛Q>fܰN\8-#lݽ0Ή]OP{HMlP\ZrdDD(y {gfj[JIǬςSrL,78D# ʱld$$.2%TjeL9D~ hvz͝0O+lSIY4vnaFE MsҨ-WZ}/ZHF+}m\Zm^Z#vhAʽrX*[vZ_ ['TZCV9ѷBO8lTӳ<6kB?QYtrE{l ~U\tCn 9 ie m'L6ӚMR_"*s]Kܭnqm27:Rjҫ|/u\gAëT~톱I4j#%n_ zE_Fp<ӉB&}3X03i^4}82%/<\TF%E Wٷ룦G#> endstream endobj 50 0 obj << /Length1 1402 /Length2 6509 /Length3 0 /Length 7468 /Filter /FlateDecode >> stream xڍvT6%1t Jt300J R"H)H" Rҩ H)ߨyy}Yk{k}F蒩;A$ P\H )%YñH Z?pM,#`8 BP9%@e*`HwAB,G_G((/cn047|7$"W=q8_%08((C0XQ ` 4ñpwr0wa GmA`X8A; $ 3 Hj  /_077 A=hc$0/C? !}`߉À:f@w"}q ϯ vĠPp4+?-$FzXј 4D#~ B#zZYT<8,W~@x'Wp_oKM?"%Ñ8@6O #p@W wt#&ECă!Onc>!6=\440@!76ߦ6?jwG;Hd0sC?z_ DM1_$/Unބ?!8aiy6 kd0, PÃ318 P^8~ Q}~b12 -# ,YBH_Ãn ە^7_ըsI* Oa[N(2EEc3:>.kMo|Nהn|vf> f{3hSGRm-_u7K6}B:b棠׺u3b'V֞PULJrz<&T`'K)ƴL?vp8T0tΧ&J./H9o%=`z7r_V2p!4Ac;nd3^Kk߷ڨY~HTި%][?`OV05=>S=*[g'oG$(&8%I~o0:%{#~z]/^j{ЭJ첸Du~T1_m+l1K( rV4|μKG_aښ}rcyn]c9VØ"$otg*oG>SEmN3wS1:;3Ŗ3A.R\gG*+|2)uU%aret9R]4ıcn3ҷ: W)A])f~6NDfE~0sؕz!67R,U_ ʶiȌOA/Uji.'rl `q4$W;\N &k>cMyFzb%$A[nUueuݦ^_'ќjo&̃Q2Mk",DA̹/}!F m3kDuXyʜY*y61'9 uJPnDhq?ucT2dsxz圗5_/=;[2pj=s(ε'(mI73^?nQpջ1!gWF[1&FO $a jJ((-TԈs: >]n3(Xݻ"ɐ^ehK⠰+z]O\W3RiVGߘ0 OܬYușd\tn79* ҆>v|vh^Ǵ[ U޾˞D-57$h#AХtM#R@lN3zVNmY'$QPL5ǏoFqXtH>HKCsus(tL}@a}ɳ 4m=1#$<["jnK/Xz\X*6Vu>FihыR8MRYX!ϱith2x;3¹"|jO!':(zYA,ǎHAIBc@9WT˳Y{S_i5WX}z0ӎ>52B|nk;D>zLl24uR q7O9-H*jݕj÷[bwisy)'mq{U`ylͲ53M'w*b18|e/t-'r}gDSڮDkM,\*]9{y,GX=-T^ϑP͉Џh}6;> q(!*q1n?WRD34;kVMi\]R40O`-/ō?1_(6r8bx21PМ+Hkkd#oxN,Rچ&8ܙV姑K4-7c].]\hȢj8]vXt} a2܌rL0!X 'ņbyw87Wo??to^FoF pqQ ȥQoa宮f"[^y9 ^u)8=- QCϯkixJ7øT^ Б|6"~OP0sBCv¬xyX,`ugh[c[r^'` kjZ0)m/7Kp6wcPB@ jW?1Twn_l1f.?db:e+1w! -OE3c[)9^Dh[C>CJ:fe`dx`zXiEӛF%18rCM,4אc=7ONqf^͋"|GL7]m_hN+?`,=ۤ^@?Ϊb7bs _ԝxEG+RmwCw-6۸!tޫǁ~u(eY?X7+Vk:{u=SK>\37/*ؽ/uCk#?g9}mns㚷/3E-Z+H𲿓:mY]Ave{O(+u u4T{LpK,KI˷[;vXޠ dxS5)8Lw1YNV68bnxUW2"tj@vn50ӿ`UcIwkSHKd >u\Ƽ±qU!I _iC{IwU5\YmwrK%fE|`:.Zw)Y쿧ՊV(F^ 8 &R|re@RD{eXM 8ͽѣ!tmyvUJЩ%nqZСc3`ԍXrUgeU_U"S6; ʅdjčf₶9I)E}"~x)-M/s *_ Mcx.;10z*F<%C0l,St` r 5WL+bRIuV𴰣U{fw6/ Ӛo׬kXp%. @=ayM㊏)a F9$E [RH e p^Aw;K]UHpDTvMWEIW Q ^2O=\"PLOts :O5#Wk!q=xi*Y`-j%p-wFuJ= o^09ZҥI2J)kv.GWk_ۮZmTGd4^.xl1Y4Z,ZrK/d$&|ag";Arl{ro亼s|3-mMqE $䭹^ N˺qt%pEWg[$ o7Ssh"}C tRb=Pp(Ӕ .Rץ J[Rskr؝>_\~x6A!X*)jvʁv-o:Y(0c-'ٖc.nEsJǖ+-$03l0u}͆L鵙b Xvgz0I2 -Iݨig5`uZ@@UeW ( '͈Bx5q]ŝ> K8mLbc`wOpNGn~-?Hrj̪~Co̠kdTۥ& Tir Cq/ Ddd-(, -u4KaT8VÊ=` ]w")pҭWv؛(0ߠ,fĝ05z*KLdHau:hCCᵢhVULGh볔es.] G`O $LSx y{}cs-+-/zFWc6YYwj:@"&W'.?3~WMOɭ)k7?R P+,~5dJ˱4;\r +a0WJt#^lf(P/bBdK5Z*NN=+nu91?(*V(畧5ZMm/(V ק0V\,6!q.ҰU#C뭷c˼Nצͻ̢+c9VeknưZ2tuOM},qG Fsq*@pi&]KqMѧ;qmNԍ؞ ^x0+{H;\}$xs)GP SO)ވ^NjtA(`Q, endstream endobj 52 0 obj << /Length1 1473 /Length2 6709 /Length3 0 /Length 7708 /Filter /FlateDecode >> stream xڍxT6E^Hwf!:"7Aޑ" H*E" ~k}Zɻyf̞gv΢oįh!(~!@YBE@avvc( '`7 ݡ0 PhxĤĥ@0(7<NpABP}~pB|$ t@('+zG00B?Bp8PnR^^^ WwQE9 !'d.4v/BBhCh= @0A"@H@_x vW7 w8@aA0w @vhA5E]H] U0cV+#\]!p;TH}>Gx^9@ʰp4C{@4Up1G @ `'_A~ntAPHH"C( 'wt4 qk? 'z0{o j)_F%%7_X/) E?|5_=hπpKV.o[E`Y]*gsE W(\z tY7 @mDӠwD+__8] ׇN/׼p>A{eC}A?UMXT B"A>^W?!TC (G.tWcA;$ APl`?_m: HcteaDAW(7H$z ]7  ҡίB/k7GpWV;,"EQ/'+=Nן+ 9zP[W:vdsOZ';J4`$ydməl6s&-U}P|NʒFU|f¶"04|Pjn9./]@F*Kp-eb΃Je EXėO%x4:*{ɣ!:#۽|`mM9)ʉ6M|(F׃MSg QRza$D8جD!aTYJb0&akT9;&.=>/wCCFɠ󎬽ךLyTPuZ.[@ü\lNu s"$d[-N1V/T!,*-xҺ;plǂ6Zyr>@O6%\o+YL,)0 %/}b=YQb}CXTJd2ތtpnyk4^c K *E[)L,AgMg,/ol7}/K9&)^C04P]"xc \ɡ`&@Ug9JaA/(XM⻧'As=w>'{[fUuZp#-7XO/0W=־^nSRH#joC]_23fdOa}HYπ1 &4tfR˵R\5#R}etF:0\<ˑU6]7H?@KB'X4ļz}![Ԕtf/ \QOU',J2}I~z1nCx&Q:;p>]؁SgyvzZ$\BV}=Y 3&Eߒ>B2g<,Xp/^mOY!ڂmf^slXIR7^pLX[b1} ":\<_ 0b͗N0"P=S%X i__76qQFn-;9?7! J| u~\o4WN[q|82[HYi1:*˲>ۖ#<8CÒ3HEzvۖL0`]~@тh+]T0msI҅Ї,Q#MNepvL{ 3.ulj]m竮,Y*bٮK.2fEg8{sE=]-M1_"c ]j^hK96!(1+5>j-6rg|{;l7V}V}#~z<]Szγ2Q`!R9%69WEHXYś9m=x+\ c6s@L}6Qkb~}ZVʪ| wx$16>Jߛ:gCͅa]k@v2x%tѤGtpʌ[tB/căbxTEG|)DĥY+˱R2ъ1_{HHD"Oq)-GȆ8X`&:h^iԓw?/](`Q"kv}G me tno☆ܓ0E}C&G|f(0?(>+pxXQORW32?z*33a yeμ[|)=u/2^!c=Inn5j<_3hwL eץԋcj#)ں`Y,Էy;pp{ %Ze;zt94]s^ʙsM|RQd4Uؾ|.z:G2G׃[T'Pm(ꍄ "mvQԴֹ$ l2*"mH?Qc8y V Yx=/2W~4AwP{|9o iLN}wL I7Nź G8rĘ}#oOEϫ<ս a'b{Lmg%:/spĥG}xzMri]>rjPQ3yL26J-':Tι JcCsU i2Ywn03VK)No5`0N~ܩ6!mcZ, GngVtW.nɺ%TU^/zEd]>鲯8\ v^H~28 Ey+xt"I7NբQjZgW']BXLjr[gZS@Z֡ ٽ/;!ވ֫,ョ>E  Vzs(]oU=Sﳵ9ԛg,zt\3%}_$uI|cN"7}(Wss˙U 2Vrm=jgތ&Lo..ҕX e\mCN ?8zۅH0Y>pIAfgҊt..."!W1LLsYh|*x~EpWBRfmˎS +O8(Z<3oї;TےF%荂]->U]u`p:d,!1)y5QBa}X4B0=ݗ y=$xݱ.~}_Iks;_Hsf(r,.A2=BvD"Tq'nH]DωP(榰CZ@keoә*gksyxq?kIÄAK)h<8sQqʕ40*Gkܽ4reԴ7"pFJ< p[p27{x7k ڋ!ҍE/ XTۥFWx*0EkY$j|fs:~.i7VCYluiὠz߾=;_▔׼R)Fu%Uܕbq[w ef* ۟:Ԛq8n&ˍ7I?&#~ɼPcly> `F9ǮTD<< <R2gM.iǻV/zVSd]2il.G/kbn'{1BjvlHE<+oe{N04 $$4n^/Q;Ͼe34͆ 2-no/L/AL8rC*fGs+)hHҎe|`,8 eR?vxlZat`~f8d(Kf:{:^|K̕0aiw=|H>3/%ĵlrXtK]ϴ,(7dk\nǛ"(^vƠmA7Á74$KZ'tu-%_3>mE;;5s;$yb.?]{.@kKu~AǷ1$աFsS=~*3h}Je`"DD}=SgpJy ̆wǻ|!TљD w]m(0uQwN?݈[N%NpA D3L*.y9vemco8&ynjY?$<Ƞn]O> stream xڍtTk.(1( ! CtKJ C0Hw%R )tw H+!9kz}^6m=>YkT G$zb!~A"}LaEp QhLBi"57GHI@J`M~u%G8{"av(t_\nNP$ 4(;"C@`PRpIڡP@;?ɕpPW(k`cdD};\ar#4@75 @j?tEJC 'g0-% ~> vtE0Gw`\!H3ʕkD4[V[#p+ѯ`H(}?u#l`pk_CX9a.nPU\?-x **,;F/=3` ]Ϡ >@kDdGP?g0{ ޞe;z{@9]EYcm?&'xD|D@ !&.wm06U t;~7߹#Ь!SwῲH )9:6sf/4iPhh"2!h507h!md aJ06 C?_RsWدo :J@lh}AW4/h"3AQ{ $("i d@C}6$ѯ `W0W~#0 Q4 D7]M}-~( !@@W42}[\n7AqNOW"gi]Jן=U6:lì53p!Y%ع*w{~j eF0D'0߶41pgX& ;'@w2dFTlvV12،,iꦯd +C!s4.o~'3Ez{hi%=[vb7=uBZ+w;Na N &&z'@},,3u[mat@G'+[ H$-0G V,KhZo:T8l(`l̞}@׿%`rrEFkZsl){QYJyhLu3ytw'ӕw60'</v 3pa(n.kZ\hEB(fMjGțpsk[C}Hb̮́s#GJ 52@Ob{rVM1X _(bVQuW?V-ٝwC\;zΏc]r&,]qxQKj UzN]I2-m' Y ?bU.eL#o兔@1?’|]] ]އ}wD}'BPB~ؽWtbihڰgBmug#VA"YԡH5ZjxYS!vagy|\`hxlE$ B19nc (wyxP̆DU@vsM\#X#I諹s;3ɐgaGwί!8 dL?L ]4Rx,.6c%* !/*M} ~:MxyD1SM_Gר!Q.G}d/pb l| !JT#s'C0ӟ$D %9peX$~Y YY(`6" E^jpnj&/% ֻ|b:(gN;=s,I%Vi svo=_:mClr>0q! LQII`HGZ1kUD%-NՎT %q/A]gKܨD; ~^]aCn9ƒJW>0-lE{ 4 2+jD>(!F/o\t=jl3KAìThրR|:)kWǪL}ƂAkNN4UyolLoB_&)ۑ{97pQ?onu4M=U'ŒD-NlPϝFMhzwdyӻ!аm.㞔̛f}iQ'H/[ ˣ$[C}y=3kSTaa?y`jخһQ,Y[VƁfc4]k.`Y=0|\){//q\ogqH]O0-U`#OP9!┃3>%2TD> 6y3*ASByt2nV̓Lco?o J< П,uy`pazar Mv_'bsA]Z0O ^ KzCOPߚ1$7bˏ  M:;&b{FC#ˆ 7 81JOBDHˁ< GS7K.+qXnfT( ?Zg}Hs{1*? lrmR%,֦g v.JdN6Bo jx~3;nF*F0` YKWȃѢ, n9Q qn r gH+hY? ő~#|-E h͎%eAkšH q9(KFpms7g,94IFw9"V:3rg(ێS>V% 3A%ڜF=:[CI)6:qW7:$/GT kp&槉 ر@]_q1YOwLƓUyƻhH~`\^Ikz#Oc/l]h{ f -;:#8KRyz$ngD8|wЇ}BGKMF./jTY̺8By)iij'aۥIʍZp=eoҔDp%eNw&U=vZ3\ zmLԽ,z))MO| g"b&c Pp}={ ɾ{tt6:S$0BbA8.-CWē:fGEuK¡;])!@uMPO$;T&ԡ! aMHtu R$m۞8-C{ͬ.m[Qg69mSUw_I2y_vZ.Fs`U?] m*I. G;멀vxF \t(ݤvzB#x&s"&KA'bKxԘޠJDg#vۇLo:f\%mwOg)Qa"&԰eZz,r'x˲Vc:⦝Q75b$5Q;ޟEb;f#( l%yxY@8|!F{ŻhLD}'iռ۾8U6g׶WXx]§f2{j&`lWFWdZ"-7ar;]S\=6a[yxv*V>\ lJn[T%=x d<+4qsYRfN͜g}|RyՒ z0TC{4#+^Ju>]YGln͑5{}pB_}bMmg$:J_SBCʍ@SRE-y֮5wbG13VuL-Yb~字x^ g LFT2yc܈|s#{`[^Hvo{eEsCb\񚟧i *xέ]*L͇I#&#0Ӟ +`o@F&ޞ}UM1\ZqaFjop33{wA7Er63* Q-alP<k}$\8)yū.3SVpLC*v{) ~2p,xsH$~sq yNuhkXJ(rMvfIGy+_kQ6y!EpW᫴фA,^tU8\2+ӫ(}~[?]\"8${ho=^Rmc;~$=AzG*a<繫q_ $~.6`!=Hڏ Ov?z̕u(9Аq.|}ʃ$-l<"6 >M7S>4Twi _Vvq>MDdM;?l+m=ok<ȹnty@OVg)lPhUM5R5Wm"isuOH3ڡR8/b%Ѧ֧s(w2D0e'fK'e)m:^ڬz x\3Ub­/335趔'wF'%4ŀ&5wԻ 5>isr({W>]h[v8k(67-4\O0QQg:YӜdieVi%.F#R#DfyL3 f臜2~5%\ׇF,/WRi'}DcX[}A c[k6L1"uLt#]n?dF.IYl΁|BJІzԽ?Uu\7Uk£@g 'V>11VG cs\L %լƤ뢤(ˎpn5Sef|*=ȪSo:%l3=FQtu&: Ny/XG8(ii}&xCnV_^vfYIj}q|ٶ7>,/了*1!4 {V\dOS_MQmc5ul9eD].1Zd[ՄL$9,r%in]1Pe :Lf%=“(ԏ6xUUiۯ7yY27+ȟ[Pў|; AUo{amw/?>!~mYʉ;pj;6ল잍JE4- =R]З]? &Қ8]6xrC :"6GqDI'# =fo<Z9%]\%)RF'ӢܧXb*AwLЗZH U$0JQzZU^|Jfj8\vDr;Y!|Ϊ0z vd6#!ٳ|%_:Vv5cPS]Ka)v<"h>l/985@@!Mw<[C弶1^" F,]= F3:U- DTph鐗3xm2yN 5'kpH&t?Ƹ@dH.{7z|l\:"ސw2NPŵu}={(B{(5O>&K<,^ -j_L,^"^@aUGW%T''^?yz1vl"ܙr:l}ܴϭLp{VQнIKWX7n{uVKU3l\7¥azK1 :*!##Eb[}]n|+tC!}Mt~K=@ԑߓH&%iGC"eE$,C_ܻݵv*7rIץX=kkwxZ\ԼTlrh>89--u00D:+y^٩k-*߄,mӨ98J) ZmhtLJ}6^i|XOv[?SԺ4UvK͝CQ:g]v&k'4Q}=ڨ2Knqd7{~2oUCbX7 ?0Nlz Qjc,9p61Tőܛ\\Ԛ?{қKGon]\=9vGYf/P#j"GR xHEˢ1۾*i?*y7O=LEU`Kڹġ&=37퓹Te.~ރ.ҳc{w7U36Zwb$$:(R'1~v5}Z',BƲrv̅tWpFmIbINcGEύC;3-%gƥM˔* A`_>i{!:.Zn V47:gN= * C4KZG$&wkBxyYz59^L ]WN W n i2a FlMT7l֩vm%o>!Z(]i F[lB'w័_fDT0v2wR jB{}Xbb;CB5ڦpm¸n>L27`SO󢣮ZcK%}JIi endstream endobj 56 0 obj << /Length1 727 /Length2 16764 /Length3 0 /Length 17351 /Filter /FlateDecode >> stream xlcpn]-;'ضmvNl۶m۶mΉ}V}Lsw6))#-#@YLH@ CJ*hjlig+blP75(L 0a;{GKs g1忍5kCKKGUɅх$eSS) ,))'Sښ:Z\-2ƦN3;G09?l*br*Qaza @Ft[g'M $I:GadX;L-maś?f>?RLLv31Pػ8:dLLmBv&QwgS[SFXZ{Ig5A,,MM,mW7)g]Ml=Ow9zqy9)Mݢv&e5t4nCwW5tvth3kHWQBBv^LLZfF6#;3;khjofcΘ;*5Whz~@zxmVrD^; o.wjO0dj:0\wܷv]!\L X6sF4KVEC/8cAy8nң8.9r7y#׃ }[R,}Š0k+a!> böEלM~.*b1Y%BxB0<\)lsϕ'DR~zщ95 W_ %lAGA %DaC YEbSw@[}q*ս.*zǎ#{Ml_P  HpXr9YfE9 mb pmuQL =__zp9@L-mQI1,ݛIeU*~Jx9# 0۩wR>hFŏla]bjڎ.X=#,;1*8RwԠԈUleOk%x$ю@Ҿ7>qa,n'SSv7VhYSw5j;Ǐ _Ir'R1 ٰ0c~nǚ.ACt'Mnn>9a^%MPr\Fp dO9xf:*?n;W,i҉L] 2@/MrU-"%GOcBU*٫ڹHr4)(n]f;U {+xK5E'7^i+`2lnN]}iPK  Tڲ'lSt3DTh*ЦgHE1#2;ߖo ) 5Zzuj^ɟv0Gu{Я ]!~nuњ룯!Hz@z0යnj{]d[ u (-rLgх'1凿Żbz`$*z:oMyXjW+aw4-Fn1\|',:j#"?C0Kn.r>+ 6fd䛛p͗FuaQB;1:ҍy% ;R/zwlx]M&bY{l(츢vyg1FN1t =T0 1L ;Ѕ>ɇ֥M(324&ţS YTmGJ^+ij!Q1j.Ս_] ;^6 xwYh ʜ[mE*=9ëIsJ;URy ڷy``V򔗤4%{[mu>LNUpκ gD(695b_W<^]`5vjpi w{NV(ƞZUf_"\#v&1hޣyQ6D~ G7E'QW"`|=E\1l`\pv,c{KըTrR8΅PD#?nH0Wj6px&6Q}e =xqNmIz|*ޯ2ߜM+tv wBb<_],ab|B-wg7%9dMu_`qSOYIC9(.GtBYS8.(%KH %7 Q^f'"wX8mnZMXD%e%c43JOăs4e~"^?v^4c$E 29"r١*AY0VSؙ)c3{f臄'`WXȣ+A|Z{BTXvGLyw rQ\ cY+or>CE.fɤSIYS#cX7~ђI's\7z=-5<@ϫ@z$Wkͦ'!G)*Jr#;I9#;#+|22R'T( TsdȠz Rv-=D^1b2!BiǓI+âHwν3o H#,AlPo$)G|1wW.t#1+ԥAYb/A&8}Ns_z☕)+{^Hc<]%#?l<㓻H ?;ңVbL-V'a|Tpfo}hM-=5{uI:;(Ne[O@/`W&g@ hH&',\*Iצ9g`&{g*%D#llg_.upk1A'3BS*ȾsQP]_NoZQ`K2OHni!‡{hM$[JۃOӾ7ٳ:5(uwiGcP@޲=N(T^I'&[8_? c*<1XX4ii ,UZwg }<\d֌.{+ 2nP u:h{.W*+:o6u%pE,m[r\|??-,f>ҕW]iqa# s!=Obo+es`#BA!|cPYҷvnxbWx~i~tS~X2gO{i^ܘ3pd #zxVoHX0*7 LSKxze;m 0O7m4!hM>מ Y0s (RzsZǑq \.uZɄ O,vh\Bi~m0. o6ٱ[Vyצt(嬪⨞o3g2 rLbfZhPAhsisVIӶ*O}6\*v¦ ~Rpˈq !uƿ3>n2M5'W3l4(H0 a r+hgGԗTJ z6/0c9./r@!yo14&۔GfpGQ}g]CVؙwǴ HЄGV s o.96hR_Ӳ5-B~]ʨAĕk(hH1?q9߽V1;eKw)K 8܉[Zlz}s7)P0w݃r?3lMߨE4$g"1ԲcaA'}FʬޱdW3J;B\ ESx+aN֘cnWxRFc A/m:y+%b<(wцʭŢ }204s? -Z7'sS,bo O$.A1[p힧܃:Q 6#\>#tʚJSII6(A:IYd(SݝH\e*}s-زdk6M|y/˧⃢gmw\oI,v>]h m4s0:ۉ$E"5&D*ٞBaA _94FV"f (EC}Γ`GW!p cQt#t9%&T0"ư/vR% #9ˍ/ATNJ3b $߈̚* kJ8 nC#!HsݫyDeDzQE(/B388GS)ᬷ$ڜ/ y;@0) a鴲fyZhV#C aWqc (vۍ_dadiܛ.N:-#Q^*mXI7];~u~;#l؅kj-cꗿ2+Kd>Rm:~|$Wq/- \>[xN/|_M(?*fG{Qb,r'SwM`i;uZPs UX ӟ`ju=cNf/˵}@hi\+l&snJ'&t#ccх22**H+E{ [V С 7bk)$A-[:PH%p潐 %pjⲝϥF(SۡK&N@6֥vVZEpn#B>f %!$lĈ^«^x) D7*oH &.T;wi@Ԇ=+^Z+ǫLjbtvCqrd/[ v>XO얔csPZG|ߧM'TM2*XO4成mt`)tA.HN=^T}C%$2c/R _#-?ERbgpP4s\3ouA0S4J[%tSG~)"7 LPAёa.^zكy-e p@7-ˆF5C-%7[|~1$c~U+88|xcz~.M&ln2ྈ9c[=x Uνo+0L^MC/#Mtc5V)]$$Y"RQw*Es)ڌ/jqz?fJ٭MwAvhk[ K)VҪ"׈+\P6Pg %Rfy^rį~t"kGR++LEʅ>PjV=Nˮ`U25I}XFSRpi/zpKNf i"]/0׈$L|R1&gLp@@I;SBw!6:Êh<`:eZU `2:$'mŗ{Ъ ڨaHr=sjQ~HYb3G8)xPKqt=N^ehh<1/AGMyB i]eEi@R #詈 X`_(-ʖ4"ST[g[o^=tDTk{']R,^c]VQwо\g^du{ ^N|#,ο!sb4"Y6sHܷh4A!ƻZާyXhw:~y}Egnt\jhwxI¡Ϟ`v= +7f 0. ߛbs,;K+@nV\P?E(ev ;R;暨qrHR~:h >_]Ѫ1*?wI7KT.Wz͙= 5ݞ qZkh*v NC཯JOqZӖ\4pu_ 82hh9 # 3ߥ+i^w W'[մ ;XLm >cSO(Qg؅jP Ԁ]\b {ԅv=AO$[ysSaCep4Yɣjhp@Ww*SܓJL=|JAo43ևįt$x׍ϰê~i4j>fT<$)h3LG}`ea)ѲDY9tUy Y@ /q %4J#g꜇&T =-GQ3yvZ ̨zc.Jv9kWPd\ȥK>z8M4yo>Xb JTPqxݨLXk4) F0NbPxt8GcR|շ©Vbl&LGEm*ϛOοak6}xeDߌ'؄փT]e&/NsӽAD1p#cA|H݇l-]LHuņJfl#4q`}ZMSf$M$ꄩ\h ::.hKvXe{gz F]~v n|\*r h=si`%5 Vԩ֤09“Aϟ8 5M˸^!1 ="VqOpf.4M*I%/6 bJ;Uܬ19 Va*9&O=VJo/W:b?Y`xQ|SǣGVOOeemV }!ry|rbjhio(ǹh;ϠR]8ho uw) bvXV;EAdžxZ$~Һig3j '@>B~%zduFYLjt0s  Bgarڮ9`0OKZ>^K 9ͭ VBHJX\Q#(pFpߐFZ%럨]6ăq7>E;MCD5:MBJ|Y$?}{Iaxu#Ƨsm8p31()-jbH[i  wlĕFPuHsnke+K Nh6't>gk LUoJ%O+c:kh4Tfe<,yu=_R*)]|l@մњbͮ1[>?E %(EN{Xk =81&_"aPerDP_)* EJ'lB])k9]g}cƦFҤt@b=-i퉧`c]&9o]͗. eWSj/!+|3@6T vOn,`7fDBJzDAn4oڰ`(@L1_0T8*If=k頻NU^R 3p"uk&eڵ'R/z l? $c4CCMOם806i@3"$9]@ϣߠʜbNTu#*ѢԢM.>^.9k'b]i dxwNzv4MMÛzQu%WGm;f bқ2@i37ܞxW3n VBW×}dIjN# KІ4U=Ph+LW4鮒\@ i-w1۟_iY(³99w)Wh.uYR4 O4PG$!_WrPU'+*D&kbk\m7u h 3:?= cQ\%b}֑len-pz?3Ԋrij/goo^>VKgDn.Nl!Rt8uvSJih+EUYf* xMU2$X#LrR `x%8!MJ\0~>jԯM6{@:B1GDntSmX^+LJND33y-Ğ$ƃ#%<> ņ57[7V.ѹ+drEפcϗpp;WHrn? :e6lVqiI+Ʊ;\ee^`: Hl!f7`dJB IDz!":Oȡ}\4i$}u xAmXSh>AT㽔F O2VA뭪QED*UԀUZ>I.݉-_o%4.u9kpYUXt-HK|'ϦJ979Bփ#·8ؑ L<8P̿X4F O}ɔ-/Q~kG c.pO(]%[g? y. w噈!_ ]TMeouK=K7_)?ʲqӦ*:w$wz0u $R}4f:me!ie61g`ő&O>Kf(p-sCYmdr30q X ю!QrXw`ꍷ_ܺ2 #еRPr 'uAo힧1R>%" *-zWf?47Zrr)|r+ &Vav N]39m$$|-,ByB`grrJfQY]gmO7$kFQ0}J8]ÿo7'xS$0Կ3<72ey^hZi|g.0-Nb$—ǂn/*ICƥNFlxV)+ 'w!+NPO>;lj/(<,c|^{.4<}A6ĚxWBisUrM4grL6`. U㘳OTK-g|z 08_vrA>,EQN>,&B/F˭85QU:Y8=߯FZ }z?$Sz][~,wGr9Lo.w)737 +!m $|YťW%OTrUI)C^ɥ:7,ޜ7D\ 3`-Tp {šn?|%E\Eܞ"ÔR *Z61|^wx(vdeBhu k[QWPA]D>pr] a/#NBRC2Ɛ-]xGr QXG5q=8C]=NهM;~'8>ap86J^jXKrՙ/q dh"&ʦmeQv ʽpŹX99KB(`YGL62ޜK۳Aڞ@*!>Aܷ\yf%j |X -lӓh\d=\RhYް$Na~ti:L5mTCtނ@:9=R<\CJ B-Qc%g ޫl@q<*k1!TĶ(?F ̄7yOB =IfUF͂~[t."feZڙwHKnKS?.G3*6iK&'g%" pVJT2gHu68"͠ :#(W ҏ^bx^| 7jŽ-2~zb]P:\q)E9'2U=Ĉ$Ov"kيz}iX8on<ʲry^=T,(أ$E; JQ<+!iۺ,kuOV@0F#^<vM0W-0spdY<#9Nw=,$B'6)l#J6CPΑm(f2 tek]<ۺM\N0 }} :Å^/iPkrPgZb4B6L[vTЄ,nN8E0Q0^9ho=P _#}ʳP\RFdeX~Tj dk3x)Hd Qosfĥ䴌NY.?͐V]oZڮ'c<^nQgTs:yeX,Uƺ y;F#thjan-iku ((m}J'9,ڦ $C%KMr{rk۱1^q\-!v*"-j7'൶3Hi\˖T;x483&6K3'﹕3;66QFseo_[h^V4g)eY|6T Pv82)ZK )=:$8ղzl).-'"Udο#!n8ՅU2 +I;}M/h>O{N}jlNsiܚ ޶,g}l;NİxY{6AØk< [j $>/6R~li\2P8N[$ P*VqXy :h|#DAK҂ICN3%TX3 ,t%H#zKq-wKZ0;wWT@yT#b 4]̑MJp-A>$޶P,bNv_hby+蝖!;AGs1hJd> Y6 >iH65n?e+%u~B=,uϹu,šaq //5eXT)j^}Wvss Ps,.-^Gq C)ht<ȍ?!ΔaSU5b$u-ϯk9 ד!n)e%'(5/xS>Wkuy iI2r=,;wQf,Pօ0g4~j]ܬCԐe|<FV\YHd D#8#6aO)GsYP^fX:QN!Adpjɑ#pftTD1d@#T/ _ MKa};x&MTMEAg7~4렡! H: QhVzJ1wk,8ɘ#Hyb\(䔦̾%AlUOZ˔^%Ƀ^"%f=7wZ=nv z ;oP&yD!&]٪cU n|6SoLÔT oV0(4хCćIOvBVAI N_QWH2+ vCظNuh4sop/Lvoؼ 2Z>~1;vAgv/fgSZb,_ښuq/ջ"pfUSeF5IOס0FN;#΅eD4兤0ڵ\3TQCc{)|t +THYh3NJGK*۾DɌZNHX|vb׺>yN<& 9ip-n ܨ^w-R Ŷ;QŃI!xaR=Bsl-9*t?сkjq$],Vx=ƿTL_!5ˌr!H쉥.7, q;_@j2!q{ȋ'rV,\m<Г \hu2UuibQ!`:~ljKpfup_&PzNrr t<.OU*$QOǫ*,4/( Zz;D6ND*ɿbjvpcm@ä2\Lcӫ'^ɢpӐ_r\S1Oui*1;n휓 s[YIz⃛I2t®tBX NqbL[Re(Ee 6?)MIT'WqUoR[nE92B8.ʱDa[P NU7(k yR3*6n0Rif5XFc`Q)ʦP_fȁ2_#ų,3Bz7ntaW7!|X^M{͕#KRHp2چzmmcU6m ͹X(+XԗsH>inbgIEȺ<rdr} ~EА<,qBU7@[e5jh͕q ?@X>C2y5n3̨}[,Pڣp,^6Up+Iܥ&%"[f}_pgQ+_JF@{uTmսv5!H|~BӸ:=%S{&3.eIJ@џk'ajt7E_;\}'"aUF5jo _faCz(}JoT\FSld^FkhRj2,<>1p$:2 - w\O_|.FۈUeFH氡96̰ }XoG~|X))Ec~{qVxrM!o}_4Qd]/wxuEb֎qNIR!  ˆt1#j~[Ǣp$5a*qo:],Ur<K$ 뵇\nN-SIDtcm4.0y͔mI T OFqiwS r^ XSGu*XyȈxK0|Xi]zgT pJjF/ʷ^?Wc=#C-~A*r21᭻ .dSwg j& ≫ ΙgD\;qǠMW~i)!{;P!$ʉ5H!:Pp~۩'N(=b>uu7)޽Y-& 7Mr|.h۝.g wĜ}q ֈmBdc{A~{ #rH7zvȌ`!83i^ܝӧ+|:4+z*_u qXjNMQqsB&2@GC{gl. w> /;WzQ#17"#wOȟ>P eF{L[Y87czU(S|D2u}(`uc}0YP!_+ endstream endobj 58 0 obj << /Length1 727 /Length2 12871 /Length3 0 /Length 13432 /Filter /FlateDecode >> stream xmwspm0o8m'Nض5m۶m۶ɝ;9[W{W=6֎Jn@ZzN#== Thfc-@[#/ dcfofb 7'P722X8hxi)GS S%# Q9'K3C!H0XX?XEDee"BtJB}k#rkGοh뿦8ײe_Y{[ #3CG_6;ld_BjH0E;YZ[B6VN@{ hciquZַ2tQ&wAh$gWrc}˿RW|[4;?$4UըE m̬Mշ7oٿw?TSK;ڛ4i$ci_ ## `d_t ֎w 4]]1 4On .ɟ)SZb]D105=ľSqǛ3ٹuH ? ^~)$.3|} չee(cڪszY]1C^I[/VO4?=JӠ+UkR,]ӼR?ۃ6u@*+a0&֌"rЯmՍl(2¤ٕߗ-X9)ZؔEs:$*Y'ZR.{K[#! m@ "D6Q=d\,_V(ё#PǷvef~<9lNbGKհwpRHx"ӕ) lic*`vD@.l;@eSxfc2N)@!S^.78t`)] LlG|OV㺔$.GY22e@g@8?7\NUu6~ 8z.ʬ'i٪nm .k(ό%bZFgCUaTno9[c?tX!vSo*v}YǹN]ܽv~FNRn2&;1cJlejFƉ~Pr| DNX(CI%%=c]xUJe hَiTo,.{W$&e 7UYP{!}͗zRPyR4BVb$RaQo799374>S+?A{'? f) 4U5`7@?hߕ C*&c|}F2)O25@7*`4hoCE|R(+b<ඓ?C5k^Mn1aϔ>jj=g$|^=dk~Rf.iëȾ_؇t=v[BBCBgMW0 $ՠTN$sUXIX/TɯJ*WnKl*ꎏ%Cft ~*PKfWWKBӚu9קLeMP`3-HRYA!lvm2](:61BάUdcA#جgD 3@Kt4-Xm;k,'k< ud  zOwIurHܿ}x^lh O?X`agK jW$Svl;.q_U9+W?qO+Q=ƵP@[Fe0yM J4}_hhiwYCfMDXy ֟zd{Jwt=^C2nGW^Q>X^`2ZH7w"ZZh!K7n>8 2:uxbwn?P:šFʱ6]b s)_fZdAy|d}8Z3ORM09> ?{CJ4Pv_n]Aڋ\P<#Eqv^ctVsa2XlD>rWgp# %U*[a8~۶'^LZ\vOQ M,C#7o5 qGR /!+s-W#su I;:8vsǵqfشrUQmt%632  .,GZﷱ 86a Na=&Hu_fomqza&?,EaܓI/l!trmB/鹾3K"TO';A&T*PxD'mƆ} ?# $zb#0P1Uim5z@xx .y47dE'TH&J֪gM6ap;V߃,SyBLڹԸ}Rc_(D#U{⢪ O5y،q&|{ D1})Nvu0 iSv4ٌmS:Y͡,#p9-}}K Qmnifc!{)nfc+]9G2R"D]ޫQdP8j,CST~MȞ\-(mhF6A& =sxrI6bӷ J)^'?aWz]@G7dL~,ĐD 9{7/ ޝ0;+޻~52{y?{+i31$,9wv̈́|4?r|!ƚF'䍊 Ot %{nȿ40YZ?U#ih2\M+#'=25L[4VۋR6pьB 㹖@l(nJjvZ>뭨 7 b7]&+kņ_ V!ys=G.x׷ְُQ+ lҦ8V4V$댱!Pِwd"_0W[^4 Mn|)F𭻲D4Yuœ"1 IUN#/ְIq:>oʌlexPL%9%{|qYҾp$^En*#l~aLswi~KVr{K#!}RR Q/6DXKB6ٺK"\|Yi,&%eVa]jc2NvV.z&"o |H&oFĮVkt:3~ˊ q d@@3V%HOTW.Qu\ٸ 0(w7~%+s +n8 CCs7:5hwpoiՙ2BG 3W|a-;J!{r%x{9LΝԹi*chټ\/ XIMr{>n?a=(I=Bяju~&jܽry/X,(F5l _G36l=\yǾh./Xw̛v_=![|ueM nQC5@ce!qzKq۪)Nnk#qu-Ju)BqT;IcˮrN< ɲ.U wЌ/GP1%SfZQ=ǵN}A_C))]h䜬],ٰ}^E9y|S=xҼ|6qU0uLEDCҲjcU7Jh='r N?+順K/(fhLQ68.dc{nj¸&c:\,K DNp<>}[Gӏ-"aмrw-]PMܒgYAd-w[ ()NrRbwn}"|ݼ^ږ 纽G׉[ɠE 96{vIO(J:wgUiT79,MP8b}l 3F7J(aҿ|`&#MLq4C]<1=?W 'c = Nε8u[y+h j3;3@c_ldvɝ=, h8:K@@W燭yk J7&u"4]ƭ-9dZS+c׋)_X}?HAqبi{S!(euJ1>0 7b7Xfoȼ%yܶmr:Apo1:usWv]WPDxGfx)z6q,XXW޲ǺʛҒ%iװ GE!8|dzQ-r&(q'PimB ($:_K48c@ /|(c.|ds `fP)aUH*JTʣ޶"=r}ǹ}_Ul܋)mu3%xv/Ƽ:yΦVHo 036RaOº+Ww%n4vi ~MmDn;>`2>sj"kƹW8 u j&?Q̹bbV6o A#hX<3l4c!|ipO7'GJEVш3h|ݐV2 goH7gW=5Áio.7}qd?#=q*▨Պ"Xx/jwdt|B,_kPTGke6 3 FF '#|,<moϪLܚ@PsneU-ϘNY)`0N@HG6=n9k[+GM%4fqp-SH-Y=m#< 0.d{:cr.Kx]lJXoͣ9xJ[aU1ixa~z?MB\I 6t?ֱG*ܑcEM{˼ A0o,  1GnsR05z[*гziI.oG!ܕ~\&M,QrhVPA1g4P-y \BĕA^?|k'(ǡ p̹ߎ?mL9+0/vXNM v_+g!7CmJ%G6vjz)O8An ,I.G. ZPUyBje]~M\iA|=`r-kRA"khȣQjVf (x+%-$1aC1W6"'BP~%O]Hxd+5!`M:kQHͯDN3E9>i*a naهIUo(Aёm"#@NPщY̝[!{WWKXaW l'`^tGp3~|/EHc߃Vx"I>d2sfg~ J30{E+:(ހi?:2 # keb3 m`';.1ѯ[Bp/m M vdq,1e2eB*Z<3[͋s]] m®flgMI"<N.Sr4j2=>lI)`i֑FSѦ1UKVPĚYEЉM̕ rD.*62 |5m-~~KCfk?~'A8(]z&Ba(h4r$QRmQ"'pMo:g5.眢7I"4> Bl* dPF]KЛMZH'BG- xb}7HQ$u>%n @3S_|+J(:y4#AW)qgw )W\tq{veJuUaK[\Rۆ #8ٶS# 42CkpQ\VTv8@PVm‘D֌JoaLNd&A9AMq+faDލ"#`Ha +5jyo'gfVeۡ7haXϭ{ d146JnU^QC,8T2wefh֒,0cV o1WC^VR2)q-yXb^r<ߑ>{>щ-] ];|OzDa?,?0|G^WJ1kJ  ^* BCGϩA;4ޏb*K8:%M9 "41%+1JO]]r('1r+1̕3!;C)hC~I.A2+.l:kзHh[tm=wJVR{Gd(uvBk8 GgYC>Mۤ*M nHv"A/(ꥳO]Vs@Bprwe-J]nP=HO~k6Wm|1KbReDt%_aUyWT@Z7:7za{e߀M %,[rѲ ^,rptk6\=`c%QU{\9 3P7(nH7m>Ԍ=._A@Ek}~SĮ~#Xy/Ǧ 'D_A Y N9{Kȗ#b; UCb笟!|#/jL|$#%TDfZ$tvጘT$;sbCF$Xu%ZP/c Tr\MC;qQwbФ͞Fo!P?}"êK@(`b}2j8tmAU_q2> 7ď7#dhE|c{x*'usA-v@瑀Y9T9;fʹ@T#Hv{,/?MΣM?x *Cj E=Nb8[I$ lـ1"5 7mEqm$Η>; iESIt7xѪ{7qC|n4z,n4C|?6P޺O`XQa[-BB8>/vG#F̺#Eyqkqm(l;- Jf:6ǔIx3D9ngRm8)u*1*ۘz I^] Ë[G8LbJދM6pTC lJ}eH7#jФn4<älYZd1-ΧD2RpKg(]%3 [āt>M@ Ӯg}4X+»8o!:[՞R %,Ղ:9 jy}mb;L|J:t+rfUYtoѦ1SjMsRWBuFDٙEdE:^9&3S!#qzvɎGj,~\ q<Ez6B^Y[+! {9F2~8yS`!l?!Bce=C☯D B1A1C)j?!X~?W%O~(-ZU5_\:Jʃh'r/69ւ䌀 p CroH<0kX&0cѕɼHҀfho0+h.I|PF#ǩÝpd-l.FR>/+, #Y}/8) uZ@I ("vD/Hxf8,*](D/LBH3'f{ui^P`M : OQDqSe]e&Xw?i[)jd:97mZ x:iÌC_$Sz cpזj&X[؂e^B QQu_Ҝ%e) dR^øcau;nløjG|h}|gQv[=W#kR iA7}՘0?)K%n]dn9in˯> stream xlSnM-Zʶm.۶vٶm۶m۶u>'nč21f#Cf"#qRq3fcg(+2122Y`DmmDv&f3## @ @iH @JfkebnhuqqtqtwpHdf 012+KI(%T6Vg+sC1``hkcd/N&`b1[k @LAEocɑ8ϲe?YX0LL#sC' ÿt1'll?GC*?hg++9}kc@dko_/"A2w7w36R0wGj}$wE?ώX%i 2H) Kko1521(;N+gzK`@_ᅱC ۺy1qrXLl.]Cgc O/=HnƆ0k˶<)eb4z4L+S7fFW8*8p3~|;RM1pD8E$[you:`jֆr`7awNik ԓ%|Lz}H۱ 6T(p4UHfA{k !p7dغfe~v!,w lz]ӥ-ũB¸ C￑KɦHs/̰Ex|v?@!=by,!]iZ(Es">QlW@2ZGS?YvmPcГ-KKzU2gnA[[Ⱥ-WhM#!!F%;Ttl%}ۛ.֪zXq,_-L CWZV^ܒ=- 4sx4 T 0BH8b@ {Poyᅎ~hH\OJ] gޭ hդ:ǀ)m4 '4v\z!,:^+Cpn6*u8'4,</hEF$_V&^bEU5}uS帼 o<șSlXg*:IȏIAka @$)_GG%O{"{uAf݅5!)4p(E!Lިjm?gf cN] ?x ${bۏu!JľL5YR9#Off{sdb+dK @'y2NИ xAf\CQ<z$|b5Ie1cq~&PP?lqś3$l8lq}+2Izb>W`v\d2$ٴ:VDɅrKP qQk}IjԂDDy8-ɇ2*0Uo SUD=\E8ӎ#laO{b V\H&029 ]".QsSl HxD˦˶.*!aYKdHlD &[1y1>@m!_5çdr#qZU, 108r<˫pP;YVi#VDQ)A/Ӈ)x?:/`B_Sr.DMpޣDm呗 V€rȻ&r#.wwΠİF><,. NV!v;F =1mpQLEaJ…[c7(w7;ks׏S^2a-hҏ7H3FIɢV݅ LΛ G]k=u5?15ӻEl{T֯עefKH@Ogm%aa𲢟%P@x ݗCpMRJwٙcWDJ1 =Ga *xfo D%Zkel(9dVk `i{ǧڐEwr`$*R4"o5GJbd^>zrEC4o{\=x6@Oxcjc.'L%CHB'f$Ђg+.*R OaN&Y\nѽH9亭qowZΪ 1.w^$90؜WNC=3F8}&bZhLg'& ܩi uOGXZ 7UYPD .r4D|}(W]c rkm|$:ݜVX9% +uf6``8 ~*ThAm?ɔ]4 [AS*D߰`[Opwː$XlSQ3!BD,6_d扔bD&Ypolgv -RXd`kzDR'6IZ Rp#Ӣl&,DƛK/C&rBw4}ڜhvO({_9I`ccnkK6T#c2G2i>NjCZ,$ ] ? 9ve-DT-|4/]5zHI+)VP)ݹeIxN}/|<]MKÿ;`g.nVx7r3nFbD:ZrTXSa$0cqYS\bK:#< i3"&3+kp>buOqIQ3\}J0VćUOEge~u8`ޅl@nKu8#Cu P#rTr}x@S\#1Vo3Nۉ}ާjnSySHL,lޕhڒ\?9DD gqy-"Ͳ] R꿝1[p&?@`q|j.^,27hR$F;n炿ȷX {_d ^sI o,h@]{tOb13*բ e\R<&#8Y"9p%M޽ 4ީ z@9װnl#aꨎE @DjEPDܶ? f=xvHc 'iN`kDğA<9y֘}SۺLw-`tB Hs&-Pc('5N-$@u]k?eХBxI|Ie6%>5a;sAQ[{!n1CE/d*8U@Ëx7^i3|1\)Y-Y|[W5ɸkm'0QEO}8 5({oyNCW~JN= `Gvm' x"ʎUsLn`M+PiuCk1YÖȸRuKZF  BX"lAc ~K>j};= uM u'u}=0Vz MrᜄRq^F;(0[qve}ܥd o(  !! 5Z*ڴFWy(4/X:c?]OB\ʒ `C[ouWE(.<umn{}8 `9H&Ij2|ܝ8A_m ^'z+n3X¼t^Cz|3H1FX u/猴=&t+lNQDW'6 ")!4IJ$@4r|-hX{RƸ)-ks]*haMI4\!$I R~dKH4?,!q mi]/ vWZ`~" =yT(KԬcX9Ey:qn\3_K8Zط V={$xN $&PƆJt˥p 04I<4&DZdgFpTO5]; kFIPQK[ivn~{ X+}_G3qn\bq O/_*v{Q50$^^"㸈Ot6*W!36[Dz T5F{wXO!λoYAX:5D'uٽ;frܾ˕(v[*؃_Byl4B Df(#$f;OO<[}>?rf)AwN*S|Xmy 7\V#%mP9b\;[A?s@Dz sueO[yk9KJ[fA%cuy~+:[L$P!(.g: fu._eqfSU/HKx0IFRu&Ę {?ty.VtNLO(n!J?pTsLN~Fx] ZEQApċn9hm[{9 c%gCJmy%:kl;K Va |t 2N}ib>-Y\9Z[[7WYJD^Yc`  4ܣrP"YEN09NV#B-2qҨjs&2Ē*-FOO_I.+zr\g201hP~y@¤fHs{F bQC.MN>YN,7= L<֖G|㗤#6|7-iR{Oق{`-˅~BǛD. ݸB3yct`so1Q|!P|s[Oak?1( uMRD UNviKK޵KkP*evHC@Y8.T0X<2c%pL!frGZh9 ; :GVnM<$ڄ;{Oz꩖43~RdXK20 o"ډ Ӛ#2͓v*X.Gc ag'[4+k};F qJVƱ-&顁mG%'DcpG]K: jkJGׂOPpdhԱPMxJPbsú8V{{RHwEa* A&y>9CuŸ^ʷ%N'"þyoLor1,oYw~YRlgOH`I(-jtw19dd -\W3 ,X-^m 0n=͢g (bIҶPo&k #es6%Է i{AA2u$[m!|:v,b;߯.=1͘{+we!wpC0v\軤ăG٨ ZR%ța "mGX!H)>l^оwpJ5ʞ-e?3؇XAK1&(]ʽ:M{:SQ\nj׬vjK IZ1iaGDa̘ >XJ%־0U%sFM/sum6INSsFm;rYc: K J'i?Ơʋi~$ɡMvJe1(Br穘_ U?^|_Y~(V'h0ڭv<+r3]NC~̽trׯǻAq㾅0dX\,χ>wڅj^JNq^r?j+4J6qSˇ8 %zN `.JAKϠ CK2)ՙDx;Vexbm^:.!jc+{r{ Y5s -%44@BM*Q] .tJg[BDay 8шM[["7)ojkGFz f2ڸ=Op~.7Q琫|4 g߽ re*D3fgQ^/ތ_" eQtVoUs*W:l?'@)qApn7ټ?Xrpl`Ufhas}Df?* 8(1{œӾ5q)E]֋jVhpZvF믙UCEvaM$*[xth³n;8?hӚUhr ~pc+|tFHE Ljkƾ%&=I{{ߕ#lL*|TsoP]z`jF3qC-an,g,vEEw~V3n'SC2i7ז1|/bwC5 M\X%O'O0w!~XHG+}/0 qz7&?'x g%˞Ői\OdːZ06AZmrX΀1yԮ9awȓt$~Q=a9؃"i/ QW%Jxl?;`4wޫ:mF1czp~!` 7/uٸn,mOQXuH$Ts!Sr,ApF=0l`#4)ƛ1\[wLeN ]~ `^'$MvQGϯ5Ȗv~}7FY4^䄯ŭVE%aW. I'먼 `>(~13~VwFv׽L =o_S_&Z5̣Eˠ=`Ȓr5~mO+{0WfNbp^;GZ7 t,V*V? ΀12KB tA sSvG5~輾E>xho;:ڹev%|_nB6hG @TOX]gvRt%c:P}Qd X6/# h+ ).r53oaM hSZ/(G!d D>a5}-/iss6q.8 nݜWiתHZE .!#b)Gs>sj5@vvuӦ񇖴<8'%R6e'+?.xSۊ)8Ra0HF;?05VRj70Nf6r Z~/ނ\&d(eX'!(h{rTnn\`#MͶ-[#1äj' =wT_E$ v ùm2' iüpؒiЗ#yY ";` @"N{o6>2Xlsh`K"Ŭ6Xʴ-ʚcb匇uTx> =Fien8:tgj`Ĵb *.Mܯhs4oK+-ns^9^{Ui - r=!8{X1v̏8$> iU%0i3637rOJ58r2qϰ"ʶ$ Creԛ ݰt7Nԉ!ֺaz n(Q"Y}e>"U $nLq2ivVtWךҒeXJw9Ǧ(,oG%ߍ`T( -uD>m*I5%bOFNxFgEU)S{7FP޴==YHBxЛշe)+w@wչAk5"u;b/ 0tn;>W2VtEXY<&-\zicݷ;%9kk2•ac??qu!W+ j&dUd;Szbu`V~Ck_$%V G*vDnkHkYbjѥtwCz糝S?|'h/b{ÆQ]\G /zo&G 1U`4QN DǕܪV,~Qw!t]p+=lD:]cv[w z5Jơ`r ٮlykzImQ} z@O`lYܶD"=r~I@iGNPEUk4=aHEed$`}JwLI Z00Б>^t'7%jU%TS3JɚkJ-u ]1߯;w~r ].:G3$Pܻ>l&=NOqm U`n;A fvƀdPvMA anj}6gW񤒪aSU}7X6X} 2%}Pj uNɭ“9R}}ij=dJkP1%FbJ 3ƅ@HF[w83 Y d q0D\oTMhOLTSQQ_ǷRIW;+GHKhXV`wyѰnsp8Ÿ7f>0#Yy /PK+UyglvYK!!I 8(g< 7m.@UIADaIM-5F~{j&``>wMcDk{誊$ *פ,+ +A5!.}ˍýE"HW a8V2[˻/ 'ncEbK/+Y+tqnýVe^hg1nF# .w.͹Di +Yag;U<&*Źۅ`y; w޺rs~U#_1 n!Ctەz P## I`dp}\66iMdF#Qj^FF[Ē2ޢ/~A@:h۹+Fz/42d[ABW_X>T#DьcOr+V'l!l}-t}t*"NxbUar:591>p`Կ@0 KLiT2u};pS5Rca`ON7>=P} AH}I8SRx$$YiA9j)` A@ HZY0[]Q}g8 HѾ髇҂PqTiz+%1ts ɷ|n,X-4*eڗ@.+K` ~gZ.Nat e%_g0(+)0(1<n7m IV&v%6=ˍl"Ɗ!W@kz~Y*] 2P [i|z fo7r|How X[m졒~J+WjRݜ(C RFvt20t7]єbDyW Vv%:qi2ʜ$8?vU]qͧX 7oWN*Lr=cxD8 ]yHDK\u~&4\M5ƑK-B^9%w&:d'|BWѣ֪$xч͋}ednuJ^Wsӧ[A\UݱM#DP  (/=-sch!gmu?^{岵5U 1^uC1QQyWj'50q[XF]]eiV]wWQmVv3h9_2hr'T[e?)nzm2N;mX76hW9#MMc(ɴ{'`X!hgD \S&,>16D](v xUy?a?O%$b&ߚc/ve!)چ ( prF_VP%C9m%JRDe;㜲Oߜ=cSuAT{n 5tvA)fs/33 f$xYU~v`vC 29ֹҦ"_0RαPQk^+//AZjq*_^.ǜ'ϨQi@wds^$^ ͬKL]#v ݼ8eS`\I" Y;i=]tn.YKR Z:>%RCPB2il®/!^/@>& CDPpLu$Hf +"OZ;oqEZiRsǮQ.2„R8{eQY{np`LےE[aFoZ\ a!WIXW.[*'as[)2+g6O#g<4+ ЃHOlX+R}*FXkb<ž_D> 1Yz꧒l^\5a_|rhj}zBICojD8u]΃̧N@Ϳ~|}(V2NB#>t:Gy:]*PUdksUKr ^a# n6|\M,wt!4:A=X)n,5x2 h:  {Q>xDH>~V? oE`7H ǁ21`4 Yx^/*6&eVf%9 8@1bOj/"qDb{HT|3iKb,#fMpŔ bRpv=ur_S!78E')%ouw`rU_zs7̣ 7HGص0A56 )RYv/)~^ۗ¡4f6>zr- t[jWkU d_8Yeg/2~WQ\*FZQXUElR'&Ȋ1nj=^p%7ͳI߱KDQ[Z'K5/uGg;Q"~_M!KtuƓq&GفEWf'K2%'G Rω~KxIgKrS,+nOK))2!0c0} jtr4)KU绻Xz({()ydp5WhSvɼ jh K9bXv3}!QphmĆ8({Bf TEA TBN1fN0y2_މ OQD?S, ݂ƳW^H 0NHŃz[l4^k_j:?vJ sJ -#gn8Q׼oBӓW*B} -5l k~'6vs8KWv|bڰb_Gyjp1DLº_v@aQ#!ȇiabѡ(X+.+%hyu0!v-9Ѳ_Ntl7ebE|?q;* 5;2.O[|@/}E]v<M-Lf _?,* S9/U*غYfvk0cFqL.QMPG,Y1aN̷kE}SQIoROeb`tO7Tpփ1 "?y&h)(S 4uΘ&""FK]#WEͫȣfBGQ˨&+p\*ZJ"iďa&1vޏq8#[օs -#('hJ$xp22SP?'/!x|G͠ןRJ]48}iٹ`|bw4snCӫIUXNj'.N>ROf8غ*tXҎ4oue_&'NiH$H0'XM}hj45yPL0:X% YGk{"S[y"ajF~>׷|sj !#=n"s&:%ʺDu^8< d $ʌ`!~D}6nXjrEm%0<(%{ `5 J$ޓe/˥`BXkk iz Mp6;RusIJY M:4K~sʾmYpmzYr25$WqZJ@D1`v`iǑa-CH,xRȁ356ؘzzXӬ"5,Mg :na|]uQf0|L;Yqy]~OVk7Ώ5Kk}z%x \JiqGJ(3aMҷmydJ:)t yN6DE[]HX[cOM1 ůd+6r5TP3 ly#>nRPȥ`jYgD1!<ֵ9Fw&l x!f:2P]2'Vk %}UWq_]h1hs{J3XWGw!O}5dyt@>^T> aK6ʔpͲ-_r qS(Zԭ]rj NfO^s'X52`yL ){}&gj7ō @#51.cY@w0 Wk'233ߠ hbvPtKI $}4k={.Ykf<#* ԥEs\]20j3"n{":lж!jEt渞FwԶYh]5ta3gja6:xPa)LeOeǛ Pyʐo?ӽWUH[;L]^y&hHA9>r̹E,V/J&A:c l_  !];|B81^LboP-'$gIkbbӯsi_'e>{mwOԧPǓƱ `P1 9|:Bq}Pa鮈e/ּŊS[F`: (זQH:n錩"\0?fAnT[q7XԠl<_B8246)#Ok[Hh) R!8buʧ^[˦Ʉl[Dve'_br iݗpV\*a1NI;uf|JZNUX+&lc6Q $8>ႍ~\'ӂ:U; 8u93MPQ} 1ZY+.VFOQ댿GxV(1|jah#9JRjVF譥e7'r< N  nR2Ypt,ς_*$[$zX) x?!JꊻGI҃;WSF3ndtv!z>@I/ʽeDΤ;F}dYKίl*XbWQV1ԵǎctqRJu!#E" - "ߴ.6+ vy9q3~Nq6jԺFJ/ZlsW4X5JEN,BI˅O)0G jQcэ"$;/A+o`eJ^Kpֻ8U?p)E;lŠx^z|M>Ҁ>cĞQ;&[n9ADLpUScOv+)3~kZZ04Th5&Zi,H+^tQ1M,~]ąl- ΚtEkT{Xb)i. $h;-}/v ; _Tj5*y[gHa-b%b-"*78~7 ūo ˃mrխkD~12כ0Nu?u k&=X2դ+ԜB(o!O&pj᎜+ș ". E!8οrmC,S7O4ϩp- [m?\PS@P!6б\*V7>vpoM)#3n8F’+Ѓp@ľ v A8TZfrPR60čLIb3y{&l9-껝 d }a[s);i}q1V endstream endobj 62 0 obj << /Length1 721 /Length2 11982 /Length3 0 /Length 12559 /Filter /FlateDecode >> stream xmxpeݶul9:v:}ÎmFض}zU]csYkUm*2I{93;++Jh7v147;!lT1{O' ֔ @ hthڻMnnn_ݜ]\\@[s7%mE):@ddl Pr5䁦 gs:d'g̝\p(HH~STHAfy /Nv_fED\LQa[>JT*%}m5P~33FֱT]-ʨm+ne$EOdP6c\pi" c Ъ< To{Z֮Ь,H{_mMxJ&xGlȑɨ処su'DL#E{,\`,}>ڈL¥y0lr+ۈtu+F-1FDڰjJ%Af-SdAD 29 w[60_ ''OjUbפB'bilm \MqyCzMGFʷ\?!WĈ_3NM?q{?Ĭ$Yʫ\~}~$[ת#$/1F}B ߽@7@e.$ BY=ڊo\gY4)Cfۃk:gr84fa%ʱClX3SwAP,܂+wwGԻ6ׂ/Ȕ:h KJa>!\WnMߊ*?doO3M> ȋX@jO3i iwr̙ 4OiPjo:iy)IFin{)_F4 "2SO] Ju@ݮv\xguܼh{LtUy"ípM^,e7maL>"1xD,|Mk* S6Pn Ԇꞵ>O23@@S+aw=lfw4$yK"ջ źŴSٻ֦W ۀA٘^ LOYb(!1Ռv9s whzq«ՉX#A؟j+bcN%."]֏U"wu8e![rr rq~eD~6~Y{aaYW96 3]+G`&z)0z[H AQsPN/ ESu &EU< VhIMxmMcycVlͦfhˑfb̺LU0j6Gj;!l*qjjaaLSL(I[g,3R(3򕠓O}Gw&0xdJ8/YY )PwTӲtZ1Ԓ"XJ? @z=8s8i(9RQ!)b2qmװA{8ǰ#t\m^"VhEF`78{^Qm6L–؁čc(gey6V BݯIgGch^ܰ)9359 *} \@+e _|֒%էW,՗=&qF 5pa &#_~op!W^ۘq"C4 -Y}*G'2#WJQrPUMlS4;Gc~HuĊ3͸*řʹ, XauZ 3 a( 0S_= y&` c6xawD&~=1̞EŁ`k>!6cskUP Gm՜[QqdV&O"4c?~_yOH36,s@UHs^tGǽ,#v4SzU,HֺU|,○t4M2uQcS΋\kqD~bJ $I~Ar'JbM D8Q1/eg ΄..ϟՉ`ֆ_"04ux̡6 :j~K}sZ[rma12 J߀+ʓҕ S|y=՞so.=..&j #X i)S׌8آ!˜Ӗ1u$|ӣ5} ^Ѐ,ow+`[Gmj"KjmRIt Ha.wsv&/8JI N63ٜƙz1w%›8 ;~2eUU;US 0dTP^zsCM`PיNS+v ficbFu2oX%E{k%i#m^dk7)KPH>A )v -LhMr,kZx:E#~G6uMd`Brϟd# @lVK<3LчI_Iqe\[,}FelǮrm\N=:I@܉.A2N׏AF]P7(g,^)mvM')6[ηqWUr;8ݣVU| xt{+pL xKuvR?b(qf%5_{ƨK8DqG9֮]Q*,Bk s-&W<ЩGtf(yg6P`(͈kZ4]e5Küp?*F)쮭6cް$tۧtQKIO#WI؜}6EInd֮huԑ*`-\F}`oXumێ.SD'PF\)$5KSBe%>1?o0P,#5'϶ ٭[ƪI}7(=@Q;p2CZP9M/bo(#O{Ɣ歵hgʒ@Iu^B\C,yC=fYj[kvugȮO.  ?!q)F*!8t#!"ER`AbYҧU0z^2}9:dre'=zkWk wUSgֈ]E;+\F UI}QA]5"+4b]^F_lRrT4+٬1q$m4-X>.Dr:tpJ> b[{VhEU NrYbY[N~j4XaM^59ܴUbȧۗ3!l 巌r9G;Ҫ1MmcV.q@ǘz!fM&$PQ;h=]HfIjvxm1>]Ȋ-( hL~HUe^55WE]uQ*o5WkR#*+F-¾쏄~UU&w.C3x# w_X bϲϺNa5D+'`;-ZU ZJK.5J6آw$*&qob^ziz$M܁?ď!Sxk2XJ?<_EnFh~*]137i;JY<;z;.&:Y5`LPk8pߏ󞱺ŒЭd:He::YJIt(\Y &TUϒ,Z}UF*AH̘Xħs<**[ƺnYGB\ԟ", 87Cׄaxל2ܮP: r-яCY^w:g;0h*"Ƕ:R,RI0Y 6ȷi9tyCڛ]~'_~y1S'[U[ Jsd.ةq[ +i|.Wz'3LD>TIvr~CpWTϖVCnME:}͇nSqkO[GgH!kr_| 4 D׸aG~(YD]p|g:%J̄w7ip~p~tjT H}&\۝]'!; ۢ#Y^-ǏE%Ot ,'t8e#'_!tpXqΠ r0YhD)2[GDTna=+{{@ ]5k/!UBu\ttLQ~җx]TH[K)BNIm˼4Ѥ4e j G]fy'nn \ê<m;afo:^^ky<0GRvWh ZwsO}kB3MS L5m~1kQw 65Eo :\kAHm0}hd 4qK:W! 5f0B=Yc),nntl?A _4Jg1`Z{j[|kۻGGV=Lb|L1nHpn29%M&QZ`+@x(Ѵg鸾E笲@=]} 1B二@eCacQT4;k@dil5<]D׿60=CO\3x6tGoUo*wbo~{Õi*͵)y] H$%n8'Hc@07$BДFKZyw315D|ИjW$n&}>jW5JeQ6]M,[;,K]Xd#‡@qؓ+@ar3n6 K:kWЏQ@/,ґ+U z,ξ⨺Wmw\ 9 U7:t@z* AȀy>êe^DVOJگuoE;7(.`cvb0OϨL/7#(h̚EZToAh8ic8d*Jpky8ՀƬ6kO膾k31N\|}/hq%k-傝[rҐm(FQW`5!tJW::[X`] Z tXȣ'mm~(V]|Go~0eߐBw=`tsS|L I>/9q;6 P7[^[(Qr Ӷa͞xxhVD:d0:OQāqP*Iݻ*/Ey \2jާcq`bQ? H/#=]#JuݳR%n}6 c҂xc[g?a5TONЗ e}c̚+vR[~fbL@xDb*8 h~S{0)SJU%u?bfؓ'S >' SF8#"b)}BE.Q:*`fNKd?#dIG#6¡= ﺙyyMŵ(Hw@ ޞ a wTRTV#/p@BAM5$ҝ)oڜa찒_f굽)g)ų kQo- 9=omw~5eėVڎ 9).$@\y|`'mB-9% ?@᠆d+=K?ep)h^dbRp{X|5dje}T_Tϟ#UئІn<.[o1 6׃# N)Z >N^:*o p#{ϸc%և՟3HCPn^>ֺ#2 ſ.C~؏MoxV;sa3 M-UnE nG{4I-\`&*hϱW)<(xJSP'0 .xIfPn90b\jI`ifhާc7Jѭ+m,?EcS =$ڦ1=isw,B,UW3(5m렣+˗z ^qMMYݥՠ0@ERXʃ< +2QBV(utKG+;V"1 mCCuwge_/xBeܠa-MЗ ֈNaLj$"0)n0tuiqHE,w>8f~QlԐBxn gg$ݤj8nkay,2q:V8;ŏ6l3OrjCl>ګO-  ^ ./ ?\ٺ菂mHl B)Y|$|)?rR`nÕքa؄$$hCG,+'ա/z._G٩jRu *T;F*Lyl VV%P61#{2XC2\0*3[,#w"͡A)3Ip1MAC'C>C$̌@+ni_vGwKy^bz&+|\> =mh)^EKU 0ٖe*ꭘRi@@2ꌆ=KmǻM |:>ۆdL Ͱz*s_Iݘ3R7-}GoeF)ܒ!dͽ9!(44βl^̴1Y6k@Hi z(2[- E1e\3(zDciS.M>#X<;CԦCz M@gT;?/#]itS_^$H,ft0tChΙtTt9+cۿHU:F1< NڠgWkP;`S2|Z h5.t(,}VZ?3ZniSP"3$&&5֒9i@!Mj׽ =4RN(;sjsxɔ/[,ԕ.YFF;.Ъm A0%}O· 3:|g#6%Kg{S.'8W޾"Řz cj>E!q՟L{fHSN F2U&|6yiwX22iF4OvW3%/>|gK-9S;E_հ0+E";|b$qvIsY*(-;r%g# b8B' øc[Io5W0I=PC<^_M{GZ5[1L.uڬ%'Ր6᣹vg$T:0X޲JHg+!#^9k ڮaK( Srq$#g5,Gz8:\bHl91qjSfb+ rm'L2rGg Lyb I u E u<* ζWNI)Y|Mˋ-2Fpg͌ut4y(,d<TWV?ZR^IVazsqmY2sa%F4?UU#mK~]rHetiul`LV#D "F5aj$|ETu^EL8G̝}:/5X6_QO5N1_6B^ Xq8̝UMsYUЕH>nEqw)| a/$gxYIC/cjk3ά 4ŀR&rhJ"+՞c_׵$UbY#gÕ }0%o?9gBQ="Q۫F􀽥T|fhC #Ej {X~>F11o$upb*|S>a'*js꥾W1dE xEM' PA}tlpNҰ9S Qhx=Gu&QhRrHA6yO+/0wrL~T!  Ũ][;H% 1jRP~.qHə?X*͘`n9^^Rc{Oˈ4)0Gcp-b9L0a{x{~,Ьq?[1KLo]|vb`S]>(ߺpЯF `ˇ!\JT>Nf r]%ӏwARCܭ,?8am؆bko̡o"8'c#+svci>su}B=V͝/pA鄨Pqk$J\刭XΈ E"-nJusZ.k i&Y:đ \~%;MWK3rjցXƜ-KO q3 ~P1tSKЙ*wck-7XzDHc.>Aj1B>ZmEiTdd(i%9lHEa!¹b[ ÌI0.&`Zl םl.a 2fAٞ],Z]PS &`k I[$tBՓJ[zbC|Aud n ֟?Ό2jl-b,xӤ--l1jU]x!Pr锞BiI#XVJdɬ[_UlQS/Y"=u;+E='C:7Sc%ƽ q'ѪvYl憒! VoB."^lmb:( -qUQ-j˿&܍pH6y CRr%M6Do)-m.` 1 `ʧxPsa6Jێ")\/6赣YS ^Iv ֺЬ_YǃE@&Y>&9|?:J>XA5TmSdwQwn*4܁>0 )ds? PiW<PʸX!sPUdiNԶaޟ2 h=1)D^:^;eL{,o^1kY^u70 ,@_"bM2$Tq/&My}Z D8kFe b}QOm'!bEp?8OMb0>ZJW:fy1 'ik$08j*e |y-5{zSה!k0 e{F-]Z}=}zrpV٬!nƞE|=]K gN>.Th#=ud ɆO"nہPJxV_ɻcjhJbު1&cHyz#> stream xmwePL- ',Kpww-kpn;sU?[֮^{n/R. VFV&>"+7R tv s:`caaE;8z:Y[Zhh lvN-[7k3++"ubXXۂ*Ji%M4Z@ Z_!`rrK(!*g 2]AfNv__NXYf.S=tpp;l_BhjH 0YE*@q;GW@dPs!_XvXhWڠ"z=Qs{[ol,& G'-io`nmo Pw%*@Og+]=,LXsfd0X9]3W''???y̐Cl~UIMWOOh/B.M\cZXh滣L nm޴@(c1_"  K+-jןU ".`̔`.#]2VT9rOj徕 bJƘwbl5{G`L[^ ?n/Co\R[V:YpklI>:bU_=!(>MvBvi땾 ]@]"Xcd9 ɜ4$iKsqӚ838 w'XZDK}~/An2cS͌q:Ym;a3G<|:_bSzs+JQwF=ɤ1l5ɻ~E n *WEL» $|}p/UoT fk?#&Gd\:v&(A79iH^/ɘ _ tC)zH!D9T^B#t\1 *WPoL z'*? @ kWdHrᒻ [彵n#\v= a7߀D̯&ߣ|L \RVgًGĞV6C52sg0V{4TD]ܿx32RC?a|~;"@OeTZ0 `8븝 ɛ$*N\YĒq7T>$:߯ ut'iR>GFk[L7~Jzu^ʎ:CpꤡO))=}bLMTG=M6[AlLs=!6=H\" !";#`h#4$UUW jBAeh%mGPwGbͫ8d0+ꮕ4_'ooWzAwP MTcG( %@b03Z؀:|Cao&$Pp:dNʌFb- z|I#1t:پq6RUE\&:x8`;p_DlHX/ x@M# y׌=F7Q_a3Z$ u;~ݜ'%8!QHK?iDֈ,DH0hQ9B? 7ߴq7q'$Th-젖RR,ؔi/f!tQvI^i h㞃`eŇbVQV㶾kc ZS]j/ުw}mMnX={J%"R}I! 9O\D 'zvtd8 {ݖY9OFows¦;nivHZ76D4(m&ڞ*O&yyEYD5~|I1}-D?% R,4}O\mx|Kz 6lp>dUВnBq,})T;%UҜ|!b/4A66?ɵ ΂x[+/Cgľ_kCHO"%0a t{N̲0|;iQ7; G%]†CuוdI;QICOZaʫ>:k[X\F`T_bTOXp|/Ft+²zW[ 'qGm>g~Us"m| 2="϶Y;Ƽ4Ì[E^go3MHXT:'gI6":f?E{I}4:$.a 3ɓSS宋8GcK!.JF BY}Ѹ|~iJ>,F]SlFNŻFbTD)~>=b%9qFW?Rj瓘X4ފہLCh鞶]`7֭\[P [Ke(=u-~ iؙӗ| <ΘfPm[^^ЍX%5}4]?A-fvLjv:nݲLp ΎgDF٢n~V8 S]'n.ڀ Y-ş̂( wٖxEL1Hc 'K!VL7'h~ (ZE4EHbW zX-=杺G(^WPHc;4jB7_?ݛdR˞xx8%!w06~QD` Q]QqIvqNJ+}4g3Y6tAIΏ<33at=shOsW\;{t QCD8dd"ĵi'+hy߁2Lv -ћcpL1)X))Q~3_)74ć  \8-atl6G}n1 *edk<{I0f"d ypO?zݢ*0 r鯖NxšTHqѰF h!Rh8QR?GY~'.sj5/ AN-ǀ\ܽ#ϧw C+ H+Cv&ZXvl=JGf1d.t1Hf}\a?Կ9<*hm$A gv~9=}K8r8Xf$l9:^%%Q9_8WvyTPm>;8.0TY0968! ۃa̝߈ԪN8l4O6H@j9|]ZW+Ȕ8T|Ο]Y4zKy,72PB[$;6ū!֕Pܑ2l^H9–JANCߓd =Z4lȟ,uօP:耽1eMQr,rdIIj;sƟWN05쭷CB"bVoS-8H0` DB Gy)j}SD3 rB^kؔV7 t\7L=' |7?bPjpTo9{q=0S]dnmQs@5Kn+;2]~Tp[sty9˒LMY$yQ#+ѦXJ2du9$J[Gdaiz0b9-Gr.=2 ?͙,t!%  #}" sYo5zh[7T>,u f8ûGU-i2T-2y)kc!ܒ~8ee|Ez&:n+R2n6 C/eՂl^qSwʰ{Q}NK'6 &X>j<?c?h %7mv+'VXZ/1zBxWbЦc,@!i\~At i@tJfIc6F㦯6iwVSV/?:cvY@_/UD{wǿ7Y [ԯ t9Lv}lnw wO/AiDv@QɁz;Ug\?F)=, "렚$S@DHG,祸f5hs,o~"@|Վ -5NPNn`T*3(lT&\^GGLgɭ=`DAL%#Ĝ8ӰƖy|Ho#OY&K#L&HP+nfpq#qe ǕsHrTOJ$~]Q;gA*/K3p 6պfe}ï޾3鷣9'8gٺ+2!ɭ8цwl&kyuFq_GWv `sfRWt]v ; zΎ/ }>z,{SIjHSzQ+!d E%h#=X`9)!͟&?9jGཕWQ?cΎKCA3^ 3 qԆkNI)G=ހO}5>##=.aJ` O4e.Զ/v9XB+Fdԡ/l77d$i9`etA,v*%:_Ee!%f.VLz?4oe AHT7lODRev8gֽ"#kׂ@ܨدR9luOs*zkoo@I[eLqkh/cwpA'S>'+FVMY]Kwŗ2bFVf/aEʾ-{Gx 2 +]@Fl^X_`+teU6AncI ?l#kْbᐺn^(n 4g-ߊ>oJUP4ǝHFQ 02lA ɍeyoP!t2R_ʪb[ sSw|le/_RM:#=s 38 9f٥Yٟ5_9ڥP.1# ]at@c_nY_A6!Լ_ 5I{%* OvS&A'ӽ"z:X^Eq ݯA\ R_- .\LlCr u`Aگ]ʐe7X<(>O(*)ߨfȓ.X6^=X¾(J&h&V am߫:y0X]S>DU9D'E +? 23 $!@MU)O*_#(QH?_bgFj.R7HQO+7xY5<~a29^F`ڋEM%(us$[p_J:`4]vRx?X}kwo:q)0':W1τ=R)aS~G9)fɸ\lfSi^o%s2lhIzd,>>Ѝ X bNhVqi^PWC8aEetI#>񵯢q]l 'ۧ Y) y^qTt:ZlKҮ9Ǹњi״df&^˳E<u"sN񿈟U֔dwb&+73vpUv 1-g=_6\~N_VFc^,̈BUݜXZc&(XJE7]}iQ)oBx~?l[[WB*xa/Fkq]@ bkxrbz,|kcѩn4 ycӸ]2T:'nKDvjl49qR;C(*TIY1FÕP)B#>rSlTvh1MSS[CEH08\2Xɔ(AY[7 h&ʣ{TeGJI],#zhrǿ@ FFa.u}!QjL7O%-eCvZ w+g3w!c eQօ\Zڄ tޏH W 2bimO4ZAZsҝ8oqŲ lvui<>%zfP /0<&$j`juFv\*/.s7Y/U'|Nk<'B8IHtdTXf2gBy;}  1wx4!O9Q)Es; arhr۬٦y(?e@2h>\NU6F%b==szg{e4$msXkt%~UO:7]}:[G%=W{v&2T5{hh#FYH' tMeJ}ﴋK`sw^܋IE7@ZnZDsTzx*&$"̰-|RT_J4CmsD`Y߿BdjOrz6ɪk~Au +8f/3E,6pHA~(= <;EHYKd(?`37cER8; jǔ*]F6/Y9y6`O#Q)%^tGwj3[<.5e؊6c_ !$[cs{RE`kgbr !#L .uCr]Ѹ=$7݂ꔻX,sĸ eR*{sА A0P Nw/*?A0a3S7ɫ"+ZDBz,,O.WuB,*e#!ڿeM xҹFAN]@`KtaLĚ=>$.TGUR(Xf^"E~)DSu;0`}xFHs|h*|>6)Z ɏ - ʴL(_ZX~k05B E_uznH&[7X^gcw[lˉlѕ]٣M1 Ttph *X[ۚ{AaƷΔbr?-q_WHPlbģ^}]$!;DP`}wyn3BϽ\e8'U}OіE6WPݟoC3K"㈂F.!ψ5R"*ʷiccN.N?0BtTxǍ&%w?-mI]tP0iwpȌe VM uUgOBN:ЊVB Q*\;Ǝ=5k*W%eI5Fxv pelH ~.&:\G877:~!t2/kz%Ty0 ,gzoT=i$+joYغ QdSxE0Vf|<}&2i|6:HZn;10eٌ8'Zad59 :Oq N:}7e|ʐoeP%nC91&`]A>9*q<5`'<>2QbWH1Iɉl E5N7C9^Ic5-*ܮ˜"V|zzg (:X>)A O瑶f>˧=a-ݨyO_=#IkLatf'm-iC3.\jݓ=,!]YIP)2Jܫw@;l硱|}q=桹MT"3unR ˦=ŞmWC; p[Ei4W S+չhL\x_9@[n؈ $s>v==~а|n0kB4UZc54NKh t4Q"ȪjGR2 i.!Lo.G5?pGi[t蓽U^ ?8uv endstream endobj 66 0 obj << /Length1 726 /Length2 1990 /Length3 0 /Length 2567 /Filter /FlateDecode >> stream xmRy8.KCHH}4dkRblc|g|khL٣")rEeYjD ٳ^E܉[=s{pДB۳|@*R ؙ!PӀ)( QX:8x(@ a âBD/:SGyCTB0!d2O0i 5* m\,E3+ $T, ax p d(T8 DS@fT:WJ,M M=)sn;NAc;+"aE_UfC"< "fA&PMY q\ Ι|sRQL~AߜZm6GI6K(]Cq}#~<9oA?sZ}!^@-61j:Ծ="[kQKYɬxyEK,3bl#b!SyHX86(yxdfjbVupbƤpoQ]r@]Ӱy`!Lm[iG,3mzvūbgcrwfKفۜ~_יrn+FCOjDRTTFʢ.O[Ze-܆^yUaGJ^ѭu,BS:k8aFwbv}z6Ő|ͽ"~1R tƴa'K^ڱaR|zc*P*q.}t>ޠs\HIXhCֺ:eWPpV;('g&bmXfy /~# ׳*x+`Jn)g&_5xSp"BCuz(Nk[xJgwaH?ju[;ɱ];]k;z5F*'NvdՎX-<4j"`vJX#+?*n.R#dYj9|i1|A߇ʙ:.9i t}b\IGd̔[4e\py?$|dt c_(?mV']*˄f6O 6FתN&h39. ~a n͵MCv(| 8 ]cZά/zgC=-_EHO;Ucuk1_ӬQSzy5.7/Mxq.Pwi2 "Ub {a!ßvX/Re:8 u==>&NWaocȨz3vCdcќ9cVG+aߣ*2V*o5S5iQ9I]e/3qKmð;aDV 0qՎ$mljˍI6٭g֢)ТspO>(on3[Z5$l- ZGy9%u7%2S2 Km]lr z+@i )[d2YGON|I0WvZɝ b?ƾM)hpB6Spʵ*m~&3 ;9tJ,a8g0!`ؓ\F7(i! hCb>!|{J`!R"]nF~lzZjexGsAg^+>Y)-t$;o敷ɾ0hO֬X 4, }>_0]~32}XK$K>չݦ1N-d:B ,e34Lw,ZXK(>x<"2X:`_ck-4t[HѼ}7CqڲLc^,;g;,e\|lmUiHq _L|OAD{+PJ6p;y@~T6Ryn:Th,,x%`moAsr)̨D¾$DJ"M 1TחMr HU~ endstream endobj 68 0 obj << /Length1 725 /Length2 27673 /Length3 0 /Length 28134 /Filter /FlateDecode >> stream xlsp.'+m۶m۶VdŶ۶my}OiMt]=դbv.*t \e1F34))@l`d0100B<,-\Ɣ6l M,m-j6n7777gW:'W>)\,Lf6ayMI9q*@jdci 46s6;lL,əL\fdo US ӫ L2,sq'_\W1_:yGfdXL-ś=?fWq|8jc#ghk upu1uڛ:Ž? 5 .!hg} 1Y:Yz(X÷9YSKW,7NO*ޏ^PY^PRnQ;c{K;s?|:nCT`0?]@a?eb21Yߤ.&SSSce{cԖ~Գˌ+S7H&W*yx3F;Dqфد~5[oz`jXr`7w.kA T,95RHeW)uɑ3aMg-B _@waoH- ô믬5;%0rD~mU|n _1Am .<CDonrAf-~JWFm=TtFθM;FLnK͋A zqK/8nxsn#S[&oUFE&_;;c )Al]ځmڝ5z&[H@?0jcgpc:̺B.>*lɜ;-/¶bFJK$q!G]'p1疮QEVڗW1-Bp۸ϣ^T+;y@rXP3wˤ/~ Ek;ccrBY0N3],wt&sZ. ŰVdt 3qDљx"I@vT+uJ V $-zh*|M.Q3MEK<~ӊ;Pt2\ꡝ!rN~|W7T鍫}1heT1h A/Z~c KdnQb]!ME 8-FȑWe]`'mÓ -M2VE]%S,hl#$qRg}u$Uّ!iE:賾1皘sϚ>o)ْ/Q cnS}Aʅyz9VP'BoJzE0'UtQmaA&>[ȂY:OU¾ #N0!8Aɯ H@葢r3tczx|VqMF4;([擄~ db?4 0?84^#Tqin8/w-ˏxxAz{˖4hA_mkvCY|v]5 = GF̔ܟE)dXRm{T-%"A7 7+ T_U-pg*T~32Q2ą7b풱LՍ{*MayŊaIA+M1Ԯ@Ȍ}H%fv#9Ns2AT~F66qsb?/~-OBCT 3c>sդ7e1xh=)Wg qx )U8 ‡f8 Re᝙]L 1! Pl?@jᘜ2,Ԕv; Tns~v#RGYu!2c8z:)R1nCe 9v! `,kMLy Zmɒ(ː!*qzSaFlH#@Wo9#,!zU~'># 4.yqљ,_ՏPyqVʝ+ t߲ʣF\B|j_35(Csv%( 7<نNN~z&T²\:%n$dPdق%VÅR桠 \Is{\T̢:Vٺӓ4Jtḻݣ 4e1\H|%v!"Ur?2".*:&tGϩ̳{TcFgV9|u|Wth_9`:`jd3#S-cHPp uko x+nD#nEu>~BYR/_-q8/\pK\@d#v,ո3XTk)?=MpU4x5pa*r퓁üa#ֺa׋DM9wOybTa#!]^,=8w2ubg*H]1w_v]MB#aUm#CN}j2yKrUM俄aY@GY\К!$P[Ob4}næZ.fU%^w-vdpGe;:ȷ9v {+'_8zʉ:r֫ "Y3dw^w:uΉ悝SXoEHcC_E^L*Cpŝ>p347P+a %'A7lcjy\G Lv}1DazN*gT/1rH( -˩|14w_7bK\TR\-"T8itb d@̏q;e7o[H GJ90Ŷ3.ӝmlJЙt XOv"]-ڭĭ,Qoo2 6',U7UW# 00"N$9sx\fk9l*}2 i@9폋y. oyNk,-l`H]'e0Ct07!T߃v ťٙcT#ᵖA2ߞ6K^KrDQYdOli Kp@THkHx;9WD&)#bq,K Kk:P5k8'8WmD7!=Ѽ[iBIW+q0@:g4&Y4sLصv)3,.x?X 2_ؾta>oDܸ>3Z-"*r is8`&{A]TTm}Iiҁ݄׷ W̦$Wq0}j/ Gx-YC{v_y%|Xw39[ ,HYd+36j(~f4[ g"Ĥ"P?)qJR @>sE睜ZlXĀ/10> WEJhc#odvyNAV 1viF>yjjW9k | I. ԚHjL#dE6V Ef"|0~bCkHbw][Vwڔ, tuH UL,?v޷۴wUI71 $*6v~);dG[; 8ƞIq=6SgB֤h=j(a;/43=,(9*Slihwn_vGt?6(Pe-r-uD>9,IsC|OCU셺te M÷ACk 0vy_ctGxHw9@*QL IxBvMvr}ςA)Bq@j i:Z *gch_R$!:x j(|X ^$ BȁqTU9%~E$t%Oq"2 s<ئGCt3?wAShl0Gsv?BPGɅg%PХ)Oi (N]aFA7A)0!s;yP^J[c]&8GW.pdejkz'l.KA }2"þ~j Ӱb'Ӗ$ly(zݠ 괏BFX `b-'in |ASp -͆$Z2  Jܠ β{eYF(IJwYOxIZn'*nhGD9"_CnmiI60_u^ K:B(2x f;'zo<͍HM/Y Dp+q3Tu框W3#{,J0A~_6¥U'b u_}ISќO)t2 }WG#bnAF>zF_d;|{a3b(aLoH| 68F'R6fN31Oi-uӚC Fb ߶1V()uife,0`օu?[/N|hC_ =$Y~3C#)6gj2OCQB%2hv1SRf:eKuZ 5 ]0#Ee1TT=r 4ڪ@fl@z7󮶁 (' |D kykvSC8>=j3湙j=޿3i_;7,%4Ѳ؊ޟആT4He9:ku2 O>Jz76OT@UCU `P LV!,1⟎_e|d[e=\8 b%!\B,Ӡش-wy?6i v2ĵ'h&4¥E 0uaa.Pĝ"X4q5(A7uXuZl>@]1I4F#0"%a:4*.G"[8S3.b֛٘H!ð-?39t>+w1jg#5m#*[`I|2]pԒ(ܾ:\X[U yu{(hU.=64 ./S]K_/ܚ\ǁv^% 9ꇡ 9Z"] ۍ?A:3F??{W\&GZ]e-NiV47a@#;T9iʓ"Z~-۴ cZ>nvu 8ónͫo$1sQџlU%\=lllxثM ,bMR[^ ‰z|"QяPcМh2ڞ5X  EHD`v!VHuf֓ /%+`ځ5:!,v,Ekp-lҴFF9~qY^,& Z=WKg-?ӼA˼I}&•J\̋5{rdI kwvso /VөFMnL^N%y@rCt..Vn+Pmc>kU%UBi<6uDXed'W `1S_TPwEe`a i2IP>6t /  ;US )3N#7s2n92;}MY_o',E[Ľ ~>#;SBVK'dIfQ*A$yվleZzAnVڎ*DX (&N'8{EZ% '|$$W-|C6`a ;B,pK&v:gh֗VaV^9F3SM颯ŃetH:BLdaHmcs"D)țCEmT`c oD zcý 1O^?@g^(p 0r ;;v9E^쁊!&i.N{&0ǴʐU3` ]/vR3p |֖ sfH+_)C {F38dYU1E*8`~oQׇR,Z;4G\V{Hdi OhJ)4q[C\j/ {$baĢ"X'7g˝%ZCu682u1Nѽ_:JU +6#d1\S}'}Q9'l6+C0|7q,V% caJ(]݀ER=%m >)k}ЎBL*};R.WۧH@'/C'5kw9#So'C2'H\w*b5W!_u(uajp/i`&lsbm8&72l^|]dq;*`fwbZɱ8pѢД+ڦkٰ 0VhyL&LQw y'0?ۣ#`f:zC| : _R,l~?!M1D#+K-</J ?Yd'l(Z\0ZOܬDmUF }BgaVTNga<\GJ}jMmds oH5GKPv6؞=kݰK\ӚX+{lb7!&sMdkf}E&<0Ą8M E[`7ۑ7flEt>gc7rs>8zzXJf47 3Z'wӹM׳pŠ[ 0VYn xa<l, kOr߬i*$gq t0Rh 7-UܜID ɵ3O}lȰUtD]ɰFs5khۦȟ_6}w鄹6Y R DGCLj*$ AH%C\ĔK78äJT@MW0yp 4RJh89qtq YX,3q"+CaMTgIjxA]1* hD.{D-KTJU4Bu=݇vz!s(Q-ed-E4(2 ȅ1"n86XiOnUjݫ[Kr3U[?I47s78Tt~|)΀;`pxCt3i6n#|"WYZĽanE0c] XQ$.*Aɕ C$"!VWX]Y唸)vsUѤ=pɷ?Ygh:ߤzݐJDFSejoHY:uROȍb[`t`6!̣}Oi;VfJ E9c rB3?rq-.BAk! Zuw67>[ Q96*ji'HKݍ cVRW䚧;`6րJeRi@|LcVvGҚ2K̊v'?;&1lZg3h+ 6~i#ɽet;ڛfTF#kՆFrf_sB^AWn1$`Pih]>hTp,gQZ㉱tjo:M^(+bcPIwJrƂ-K2?QN1rmFO ¸]]dqʩˑ7BV~ZY*_ S/Y|xYx/ݿevp3j_;6JUM q֊[ڟmLy}PPgO_ر*bO˔FYUFjVrgw7҅J l6ٺwc@.+Yj_ñ|rq}PRy(dgcYujrQ!?GaeN/G )bFW \P '''Swr:0 Ƶd)R2<-2J"`=uw0׶<{ ӖǏ @/QM㛧5gDbjZ@a yșa%csRΪ:С;(Xv9e3vZHSIwJ +A:+k *LNZh7no&m!݌erEWT'.`J%r^RXZ1UVJ6iTLsƭ8{]D]^FzaЌg<'Aw1kTHIlb9䇗! ϡ!S6"^7`f; ǍƆcOyf94pxW(6|{UPT`?(v-r0ԩJA~n$3x'޺ȣ$5Sߺ5>Ej|x-cS+C=f"$~s+.`,U27{Hzm6 _1Vaff65#K5-l1yP`.VGAXۯPH,OĻ2DE:Hw֘ P[Q V5^iZR^N_dZX(iGm,y~z~1#W(wӑ@Bs+d5EL6hgXe Mr/d~j7U.'{Pǹ5 #f笾6W}7H,\75N,މ}bE%Jbb,:H-t>mΪOUO)jڥSP|XCy4D~ |&5)L24mLhiKPaҘAQ k{s "ߤ˝kdGJ4jA fjwT6lhz E|L<=/g؎8dz^]]L?ckvy`SF*DZ~ixbyrz><3~`hJ/"M֡$w baD7^\V Wm@]ADZ嗩Ϻ޵UY|amI+z F0Cv> Ȓ7îۚ|wEb1Vbr:ӆdrDu[ (ԾZB{q#9n:mvC%LvQ`ۻpM@VzJ.&4I/WK] g$hU*|jA  ѝ>>RFsVXtBC%穦 G^}/̈́>PJ&4yOAjraUnfFW*=4lݘB(/+2-Gdke2}.'I @û AuZ*-?Ԁԯ"(o?7-e==V$tFhW9 J 5 M][EjGD.!/TZc,Y|D)bՌ(àu(ցEb7zsW9r3q.;#wR *ڵ=BWϺQ6htw,ԗ N#сљ b<o~l^+AzEVrK-`MV@|lZmWzuh ϞX/x#A`+;h<΋E^7Oep Lקo5~1`;<X˜B#ՠ5%.Gl}}TvօaC%Xse6[t]@JZvڙV|a]{UtYLj->(خ@޴3b(f0)ۧroHʃ)g0MȔIb4%lzX{F^*#,%(b ăo9,<ғpDz>w"aĦ@pWóK*5oPQ6ˋ"MX\яbxҺϙýnu9-;L_OT_gV( 8=aڢJBUlgbZri2>{5f~ *$ڀ-gsoq}r*_]sa5> OdzD# Cft k(dPEMT~v߭63p)+gVꇼPŤQqadu\hSey_T+Zc#aI`Ӳ:WS֐N U2[~k%L]4\ iuB+<?{8bTprWx_Zw׳fJc<Ijk텓!=* nCB6 Iw,XުC0DÌ|"Ѯx#o|2G)όjXsQT/ۧknKk+c%G3?P*[u{qHԄ#s],W&X*ބZS^15@; gښME7\Xu&Bci\$~w62FpȟL[1BdZ(nUEd :om%dfdw/j!v`c`)b$Cfݧ`;_3e<_^RJ PB68@tQ27;VNtxZu=SЧlṎxxqr D cKQYf*XA<8g3VުAP}8.(& $(dEH+˞>|ƕʾńjKh KIb+٨hKLtFNͷJthPc7Qg@c)5+a{ ;h/ dc@*⭏\SB>\-!sHGQ[]kMB^~hTtOcҐZ菱9I04f.C1*˼2mׇ5 Rc08E||}r;ˈSq p@۳0*,֌Q~7KH,> c +LdPͱSp aG0b: n[-SKoJ:JΨHu_୛c/OQ[0ר~Tgz*bj] sOb~i5=@3e5 %mF,Ү6{M5~B,f\򈔱W!~C*Ji8{XSmk7^N`xyuGϬ(Z7ohۉA}1諩 sdu 6Tվ6?]Sw%F۶m۶m;86:Ɖm۶ɝyjUCI!|xzWѴrзNo1G-/)`@m#ϣQw}bZLVh'k9w@`3Ahwے/n/RA(svWtxwa@S\$( hTm9$A'0oک1!jpJvWJA)N?V]i0@78&Z5LJ{.Fs6 o+ƌ{-#xm& )G[<<RSuhd.3~ z:hJ_)~4a8# ]Bw [%Z@U'"(54j46C7mUw>."po\/a<L׋->W1KPP4)k\V@!u=-zٶpD L,t~&i 7t,-YhG50_ 3t%x:+j\\&?oKƛޔՄL3IaGp3Qv;̐]>A]5VA_mֲҨT^ y:"xxG3,baK{LKD |_PqϿU2ɰȜgk#NfgMX fō7v*p#.ܿBfccKcPn$ }1e rk]$2W͈[*-*p$G7 iѤRъ9u ALʊn:ICe"?֡u}DO$d=S=]{<$N]B7cd]B?w\^A>i0ғm MQK,-8 .z{5[tmDRFuvwchZ)lY ز&h.E{. UU$( [taM N^}L1ηhVpOn;Bn >"deJhԫ&v`/w1Ib\fSy !UJ"#j:-i%_) 6;3gzGjtsz*(~kxy5 ɍ":9*:39QsؓGQ|k;:3?њL^p$4[oD ־_ّY.f-ZyoG+B$/E}:a1AzdyT/4^ƾٳl?4ph&)W}w!$C~)'1"_7e}ik;K%rmE]S啐/g|mX=ȤgGG._܁l7Gw¼` s@Y|;SHD7{܌o,&< 0rL2(WSk8bs;Q&Ha%(?nWRwfѥ3$ceu/3(L5OLV"#wxZ8iLWmи1\U_sv:3Wn.*)"A;yح_wP(i۰VBYV޵h:&!hZ0Hv" /9l;<_3忾Q jp%G%dkX5,\vXwxN %I`=?zV{sv^_øG'wީr1*ͻ|G8$Gf=k,hGhnw.W 13aV y%*}kJA}ng2̘|;Qjs'%qJJH}j;Ӥ7IIӹ<;y~&E7`fPBm>x|ԗk{=Ț91s"'=ULXqܳ1}KqH578$))eo7"g j+/et4 /YCά]F%џvߥmJ*\1;^e綸w7M71dzO9Juڱ--l rˡyd1z*zF m)}Ĥd,=fV󪔯HZÛ{l^u5lTS=0A܄җyLY v8뷣Y`1EhP[IFEDI$Y:jE߄Ԉc8NI0:TsѠ8Kщ&;]4DP d4]':h(?Jp/Z(X=HY11^̯chƠs +elD#gN )tG9E:?Oq  ky71/IR.{F}h""i0%pZOJ[Σ]"M;*8(̤).ÂxP`,[mHO5shh ;QR6ɛKMʾtqSZͻ/]DrN52I7?(Y2$59i /X1Ӂ'Ǚ|yH*K׏7ڭ3C֕G*1|hLX@x֖:(֙P3ؓ#ti(t01^~X߭ǫ~X&ɻy dVk2NM*abyȲ`aLaYlMNE}kSftlbΐBRo{z'!YQat%g| -wlMƯZdP2a?Fq" T\rȃYw|/%b>JV);}ǰlܯZcb!g #.k3W]ZwHrC;J0k~jKG|ʣ\][ zy7=x!*4k`:H~#P]ĉBA>#./qcvP7-(  {ʨyxzvx+W +>݇t@ I]~hb秋iHAzQf5w-tGѯZF@%p8u5~ŀM!ǃ s_!$i꩜_6` 2/R5W{0C{nVi0&!]ADq ^ hySM3 |z< A!X3fbq~+~UĤA@Y m3K*1or>G%j Ueu>yv:|@3$*=ƢxzY,]%eA\F籷߭ty ?<=a(H`vK,A\e3TvkD~LMJP&Y"#TOE?GE ίWg?Om2PAc ~061w~efq,Ӌv ~pM,{I׼j׎C_7d޼t٧ipTu+_X)S$ 4Xx kג|v/ E} ߽81 M QmYmuk'{%Ij?VeTfMY,2`o; tSpTGA%E|$anJ̾v! 5y#mHڟM7]^/7fs Z$jize`J*@U*K"FgӢj%DOϐ_}"Y5|)VUĖgtZWzYc6^u6ߵ0cI/9Q盔0SwZΚ7YGEѧwBp7u0N8IgW:-/|7HA#%pS%îvzvk;9|% bdI!k\3_o[Jjq?-TtJ9dZ;_Ye-48Ғ wSw!fpE~"h݂| ԁװ_@u(K'dVމ 8YXjuQb|Ҍ+l&G}hv_?r7n(]Rğ"A*9$njveD@lŬԩ^"2fςP[A81̺getSV_w)+}K:MTT)7*w@bV%7JbЁWcUFڃ|yoH-)G2ED|)'_F :_:5Cuy;vUfYV+1ND"(2ȈY1faُdڐca\s6%|ȥx9M_Cw&( d#E.1wu"ӁyNuKSvRI4Z؆m:"]t0Dq8#<҉#3=PWS5աooIz5H94jlR)X(*n%[3ZecKLzf{+2BudQ*SxP:ر=Zt7`5mY_Y|f*FGǩQHk\+Y:/6W OTt&֊MMF)>rG^ƻtdzJk*9/q]ԁN>W啀(`5VE&kuEFtj 㝴ġ\U\3ESa`|SgxV7qT 7Ol/! Y!oo޾DBlV60K3>T_̂G|֎x~K@(Pgr-ֱ+ -yҊk!Fo*o3ɳl/4e'ư[޿:ҏu~y-bg3cV;@fOO8nsMe}QޗhF-Y5 ކ(@7/ɨ)5<ϲOQLM2KpR r$XUv&}G\_,Ȥӿ LWJR_p-$dP(c"Bf$UT;F4-TY+c X6l§=ū=~=Vҹ[Yeۑߜ\~4dL 9#ѪFO7{8H~!f{2leٱ)we7hg[TWV8M+9hW)]4fnOrTvAHfZ;MUZ^v>Q !۔KmSqajS$,*7LWIPEj7kOK^tm{פh `(˳FF!LKcQ:V85LQQ|uܱ{tLpZfY eq۰hr$}WH-0a z /Fܡ"fIRܘw5zYj>éUqwTmM/äB˭^8EըB{JKi zh5'T>diCl&xufaAJǪ&gԊJv C*L$)Е.al 'POYrR̢8oS7]\ zkbRȠWcW'׵6 Ro|Y7 S#pP,Y*v~C?rh[l4Q7~`~? PAٯ 4o`syUuM.- -:;d?;Zu]- 'T Ztܭ9KW`%ݔ+fm|]ɸgE!nin7rZTc9ڠVAEX$`'O5̴lH=T5 I~q.^I@mEx z,oӂVryg{ ]+Hǿ z 2|t)$5nL/Y.K$CqOZ]XRР(V4Xш7y%C/[iԴ8f+ʘ?f_ssghf3IDS8e>#׺jE WY0u1zIa-2 bmF`|Úz1%VP^_e+pPoUr>'nЄ<% ]> /Wm@S%j[Ki BqU)1eϹYn<ˠ1u m*ǀuaj,utDAG}>\;^RE@™I^3^VGq̐ 1}QI+с}HcDtwrkiv ]ǯPFg>W8WML/" %)]⭭``!ґVU(NMj넻~;HheYo `4܊w5&}0C=/n V:iKąM ag[,{B>ʡ葠%%T|<_ .4Yi"g>RvMK-+Ն*yY5:ơ D^yq\7^ $&p4-_^7s9xO 'h:!VB '3f2"ԠƁM=]A7ǘ^\26SRM~8~{*vj' h}fl9Yᬕgڝ9>$!Ek{;ۑA\ 92 )3#T, }Ṱ,<qNF<WoWϹKHEyjNCg{E3FWp[L%|Բ %|PX4JߥCZf%}NaeyPT\aR 5[Inc|x4UεmmaGw|.Cmd6,w6@on٪z!ޖU폫V\ȝap 2󁐃;TV(]N`7w+9V( U" (]<g endstream endobj 70 0 obj << /Length 494 /Filter /FlateDecode >> stream xmMo0 !Rz|UAa۪V&$E 6~=HUAgɯ~uo$ƛLD- t @ZcNt=YNk`T=Ro æeCڕ(>Պ AiZsn[6uc^0Xah\je?0bprOY[AKS|dۙoF)MZ}4W@{YmG;<9`;K (EytbabisbgEjq(po$}Idon-p!J m-O[L endstream endobj 71 0 obj << /Length 696 /Filter /FlateDecode >> stream xmTMo0Wx$ ! 8l[jWHL7IPV=M̼ su;Uٛ=w]yil;<[[j<=?׾+v`&ߴț<^*;~&Q>MS >_P{=s@dkx;`VY`s4JaQܡn.Uu9\Y6><ٴ.Z.4>Dӗ}~r:-d0VWk,8yLһʮӮђ[*mLr?q 5F8@=@)& 8Rx uD\j2HV0CzL] bctI g$`htы0\F0s jd< I6zg W qȐ+#k .bsrbmXK7ǵH7Gnb>&jؐu1VljOu$՟qWS/%1{\xB!K(hHTЖ枃Jρϯv=k2UKς_:~$/ ~E+7ˢ/ l(/} -+ZXukoԝE?ZKq endstream endobj 72 0 obj << /Length 695 /Filter /FlateDecode >> stream xmTMo0Wx$ ! 8l[jWHL7IPV=M̼ su;Uٛ=w]yil;<[[j<=?׾+v`&ߴț<^*;~&Q>MS>u;q~:fc_0F)lGιmu f8Gӫ6b"!YUe.`M{My?IC4}+̝l/Bj*{pϻƲO('$ *{>J-9_eQ"V$)MP:^9 ^` br @ {@(\,RH&ti m+3ԅ ,;F$БzFFieD(0A1a8yΠFpnù[w6p@ )9r9b_ia|F-(:(nQHY^`nA|n(戥K}s\}sԑoA&vqc⠦ YK^ʛ!_my_)=^ ^{TGRw1RDž'xJzImi9j'pͽܳ/-_Z,N_: ~iyY2q,nЪ5QN Y58.] endstream endobj 73 0 obj << /Length 739 /Filter /FlateDecode >> stream xmUMo0WxvHUdCmU^!1H#x?gx]OTm$|͜s_Iss :L;<Sz==׾f`*_`ɫڟk3'iѴ}=M;7rfnj-eSӵOLg~8 )ok A8 $`I\3`Af<Z]! xNky"7 _㓧q H`nḱRONH=CpB:# =%888QA~!*zƜАT?!~> tw8y*sύ }nFE>7*QύR>7G];~<6OIyktg>O:yұϓN|I/|yIg>O:y҅ϓ.}2 L> stream xmUMo0WxvH UdC۪TBb B8߯{ .@=/ۙڽs{K;K.k6/k+[M'ҷ>dyӔKe'$cS`vfSfK}fƁVGGf\bu<19w|擬CTAW $rG]IyMsh$aW7y̟u? sK-`θtJ!'c83?NaO<Dg!;IX 0z)rЃ@kpBQ]^Z7! / U <ɉ#W m/%]cX! gȀhID8QN~ACT/sQQRs 穅ύ>7: F+}n4eE=zG~<6OɈy2kLd>O&y2ϓQ>OfdV>OF<dR'<>O)yJS*}𗏿tx>z{O->tՍ]*3>cC~ endstream endobj 75 0 obj << /Length 900 /Filter /FlateDecode >> stream xmUMo:W5?$R. d9M eCkmCp;;w~>|3E_?O]5߶w]Occ]=~?}Oyh9%?۹׬B|Ɯ>);vw%g43>\ 6 EJ78 1{~`W(-;]%=xe_,b+-O;q\L}UI--=BKE1p[! Mߊyu>.N5K)Wb٬8i[_uʕMzQ)V(Txޢjy!Z2P="Zd0\ÃGR\).2*Шa!U,H`+j.5Nα@VK-x%3%AYӀzΚ>kP#5m0Woþj.ZT$X/)n)#Wo(oRZ $Kp4Z-b\1ܰJ P"GXQi/8k^Zq:Zs9dB )sL-7xJ`aɽ)f$1 dъcCZC<73JgznHȰYɚTa,_-O87}KԴܗLloK+gJ.GZyVc48Wt]:P~`rZq.n1] S/Pu7Ue:?&?!d&1yHn5)yғBx#1ޞ]Go׏M?X endstream endobj 76 0 obj << /Length 900 /Filter /FlateDecode >> stream xmUMo:W5?$R. d9M eCkmCp;;w~>|3E_?O]5߶w]Occ]=~?}Oyh9%?۹׬B|Ɯ>);vw7{>oaI> ѲH8U/RǾ0ñ_x0ӅxBiE.͏S=/b_ixމbc4fi|8EXD_R4.GRQhV̪xvqڎXJfUıkM;rͭSlҏ֋jU,N2@ ",   T[<5 1"àcvG@mg K | +T|5flxZ1YP^ꠦdb}[ה_Q>kUbw88]k|'%Ǿjց{ g䈏rsqk:n87xIue.Aft0!?4ɳ4mFtӔ^z1?z .~lP}L endstream endobj 77 0 obj << /Length 867 /Filter /FlateDecode >> stream x}UMk0WhFCۖ,{Mlh$73nw҃ͳ,]}{\Olo$ɝиI}s \wwu8{SC߬Y]j7KF½ Q5Fk=iL4RWOlJQn8N[?ˮ-;SݾkQP,#z7o;]j'OӇuþ{Qן x|utX|]ߙoGB;76݋ Z/ԼL)]z+Q&)H8@hcReT\`^QqJƒXQh)5HK |6 b.fh\e`bsN[sS9ӺuSrk4"nXCA8%ľFp O<cǘ,⏜x! g!aM4cnGym: C[1Flx L^"K~2&NCC&^к䅙` YecO{"CgcY =9O('=g)YB|֙Bs:S|uF:#e~,٢+>G+>3qgegK+>c]+>O+>G|FV|~+>Cѻ V|B|ƺ ~!>_Sϔ+>B|&LOrBG/}XTK5?)Nkx$sy儢 G5. &&s'sձ?"Ƌ:Z endstream endobj 78 0 obj << /Length 867 /Filter /FlateDecode >> stream x}UMk0WhFCۖ,{Mlh$73nw҃ͳ,]}{\Olo$ɝиI}s \wwu8{SC߬Y]j7KF½ Q5&z& h<ϯK)ٔ?pݝ2ZkXvm)85];B7gѻ9x~;a`>W'?y:o&> ݋L'/㫃Bnz_7_t|~;:ذƦoiܰ^\0zu\7g"NFsu_E07H6!L@@B@q\s *Tg ]8 i/nTvc-+>c_ZZ~Z83z3[:ޭ ߬Lg3t3-g B|B|\3gg|2?z)BXIAup*^+&#sU-'H8qɼe5A78{Y-7^=!U endstream endobj 79 0 obj << /Length 866 /Filter /FlateDecode >> stream x}UMo0+J! ᫊"Rj.RI73W3njNelܬ;WW\?pu4{SlY]jwOusR^u5sx0ZYs.G7fԝ_= S)E~ 2~}[4v "N'oGQ70j,#z7o;l,j'Ouc׿zr<:Q:XTߙOoGB ;ww ZԲWL)\]W|, MHS"#p #>y| #:##0)%V 55)FњSjR@J]!5w+>7+>S} u B|)W|FL| ,B/^ &+jRP׊C8ƒI\U E'j\2wAsGMMD>Nwq8"妋:9 endstream endobj 80 0 obj << /Length 866 /Filter /FlateDecode >> stream x}UMo0+J! ᫊"Rj.RI73W3njNelܬ;WW\?pu4{SlY]jwOusR^u5sx0ֳ0;]nL#;z,gS t;en>r8S0qj>w};B U5gѻ9x};a`TG?y:o&ߏE]&AjZu/?v_t|z;:ذfhkܸ_\zu \7g"NyOܵڿB`ilB =@ )U 9yI(J5<T` M55֜RhR 1ڟS(yq( buX& &q,1+N978Nsk`q8 ^8% FMq.5Sh@kO ׏p$q1/]}/ĩ»p^`D3F?x[a 1ec!/1g)cd?4dK^| МQV1Կ'1t?ƺ9Y?ГrYs֟'g)437YgD3\ib-z3zs ,>G|ZV|ƾ3ֵ33qgng3tZ[Yog,g[3 =L3z/gd ,gz)R؇O5_TTV *M2GZN(:pTy 8kn":qw{Y-7]%# endstream endobj 81 0 obj << /Length 867 /Filter /FlateDecode >> stream x}Un0CƆ"Rjn"73iwWU񛇱='$I}s=}}N=C'u]U;o_ϝ>'eP~&&O''3Hyڝ^ S)E~;en!jأc4qjz( 3F&Vݮ=Ɉ>8~;D>i|#7~_ga}>^=(-P7cjȨW1 kl֏Gsj4s&텻 \݄Wb MLS!"q #u!`Nȩ(( LFUjp49cIMh ,hPE4pbvŢ !\΀Ѹ 8!\=#2:x 1v9/8vӺuSqk4 "nXCI8'ľ&p 2<Wcǘ,_8Ϳ1bxb Ài',ymƌ&Q/kC^،1ۜ1q, Vu 3/d Ͷb l͘S&Ş c,Xu ֟_~CO` ?'>ψ:sh.Xgo\΄rYgBЏ>;gX|&}ggg݉gt3zw3|s3߉YX/gKzJrg^od ,gz)R؇O5_qTԼV j M2GFN(:pTy 8kn":qz~Y[rbtDn endstream endobj 82 0 obj << /Length 866 /Filter /FlateDecode >> stream x}UMo0+J! ᫊"Rjn"H73W3nj24nV~ߝo.Gם8׺v7[wVt'oҺ9p/u5s89 i<ίK)ٔ?0N[?-#SIе(TP,#z7Go7ݾK5yx#7~hp^g=a{9^(Vu{_cwtjȨS! kl֍]]₥+U9q~=W(_KdR$| 4hd52HHNsL FU*q8cMMh QEk%RWp gn~ȋCam `42W0A/c9^'-pʹ)pq[[i])9^W5js7 Gb_#xb~ ' ˏ1}cLu'No ޅ0&1Ie76Z cx-~`& y%Q?K'!/h],KV0d 1էM=Ռ3g1Y ~i?'?!>L9g)q:#eNC?lыѣc`83ֲ3#>w+>Cӊ݊͊T_|~+>Cg!>cB|/g)g{!>_|&~'a9K!B>,TGbPq> stream x}UMo0+J! ᫊"Rjn"B73W3njehܬ;WWU\8׺v=ߩonTtƓ7]ziTCA:fzg 4R㫧~R~J}6O7}w̭uזSIе(TPfw۷莛n˥?8ޛ`~?n8t/3NbV+պ};:5wɩƆ56}Χ]]₥+U9q~=W(_KdR$| 4hd52HHNsL FU*q8cMMh QEk%RWp gn~ȋCam `42W0A/c9^'-pʹ)pq[[i])9^W5js7 Gb_#xb~ ' ˏ1}cLu'No ޅ0&1Ie76Z cx-~`& y%Q?K'!/h],KV0d 1էM=Ռ3g1Y ~i?'?!>L9g)q:#eNC?lыѣc`83ֲ3#>w+>Cӊ݊͊T_|~+>Cg!>cB|/g)g{!>_|&~'a9K!B>,TGbPq> stream x}TMo0+J6*ħöUSEj9߯ IVcf͏睟ݛ{)^؝}]u:vzyu|CW$nmmΑmq5)M{`qjS5үxO%r^q &\TƦkw(:m>8+>4m="${Jљ8=tz-/nqOR|-M.nTSXlDmqb]goo*co߭r#el[⌷L @ baomBҽ$`$@B)@p@)p2 d Ί?a.e8s`Wg+`#)S%~8NTҌYE, (6*3FӪr44P#Yf͞hhӰCkE88+j"7G9~PpC+R2C#`p˜1q EE5=F]=7z&`qp&bð| _/cSMrΤ f/%m Ȱw \ԉCb֓x5cfw(:Kzgqf1iXg3Np y/hHS>W#/5ferTapC w=衡xz* endstream endobj 86 0 obj << /Producer (pdfTeX-1.40.25) /Creator (TeX) /CreationDate (D:20230503105627+12'00') /ModDate (D:20230503105627+12'00') /Trapped /False /PTEX.Fullbanner (This is pdfTeX, Version 3.141592653-2.6-1.40.25 (TeX Live 2023) kpathsea version 6.3.5) >> endobj 20 0 obj << /Type /ObjStm /N 52 /First 410 /Length 3288 /Filter /FlateDecode >> stream xZ[S9~nMjݥT r Thmr_碶n 2Uɱ,;G  BkaR ^$oBUrV ӺB[c`$xf&gqQ V:eU¦mYx=SEReS+G{a a GJ%DV!"jID h@ OEIɀ ,H%Q=8!ۀ ` QxtUC'N@ӰDt8HqO|38{rk<գTXp^O䨞he}<lLx&$'#|@>gh):ါ, QoY<ϒU)\(8֧&PXt$$GIaSE v$"?PGD]mJ,iFВ ZL]a^Ơz[w3Hm4[P4 |$%ĀͣjN!G4O Jͧ4f1-Cߐ P*EPy!15aCTP&c>3)%u36QO%GBE<Q*1(C!Rf&8Riڒ4A%DE :v4ZևK]@G[Сy E_ <k*xr[3u1VdNdG)0y YS L|hb-c'7ylJK85O_O)x[Rdê%cC$CGdITE96N"{#>4-%rpsD8ƊHVQY.%v{3#: 6"SV煆Zfj @ṉQ VQKc Ĕ1'5yg|AcZW洇P>)?ByƦhj,FnFJ9i~!nRu)-3gKsiMŒ'qkn{ ~1pR $Ǖ4bJϦ$UړCqDcYRK7\ƒ RaTU2|*u=`:{ٺKk՜(aW x|d[kpjdsм#`fo<)<.WQ! o(K"!CZ´`*B9zAx\s <1MswH {к&ԏǰx~ӣr6{W X|o[/ Sac^=V<[Ho6Gv–zxz6 {rg68mNk\ܟz0Fg ^]\ fC|cob{.ݦ?^N/wVd4Dw K7J:h .Z=R+zmmy49 򫜞gR֮?7ߑz]UVUTjCT_G͝O6{a4Uw [WRW@<3 hTTZ/P|jw?Z0k2a.Ʀ*5 s>-@}zຌa"Oߐ/9ZFC?wtWdPOw.p۽wlv͎d <1$omʗgdT24XN[>t\wgp_$IJt(_Ѝ{^7hgTh݆P(ـzZzcg:8IJa7oJ¯s4jޮ=s*VYנx8:''wWu`<[V YN Z DnRƑ(F:(0Φ@ul܀0S *tQg}H+R~@t#(MY;YDS7Wg'!@6Ӛ~ѹD'N3iwP|y?l~+׃o>9@%!c< endstream endobj 87 0 obj << /Type /XRef /Index [0 88] /Size 88 /W [1 3 1] /Root 85 0 R /Info 86 0 R /ID [<6FA664BBA41FC941925AE2EF30DE746A> <6FA664BBA41FC941925AE2EF30DE746A>] /Length 264 /Filter /FlateDecode >> stream x;/azۢTי:N1JH'``F0HEb ,~^~O\G DsϢ3bT̉yQbL1)DAL0}oAԉ@$V/ĐhMY$DRDMEDr("bc٫8&*^=D5K|{9,Oy'<5ռbxk ),cTqqd\nW۸=1VxmlI[dx2* endstream endobj startxref 184181 %%EOF survey/inst/doc/nwts.rda0000644000176200001440000000050311457435610015020 0ustar liggesusersK0ъAē^n <ŮjaDMyT@DyKINB"rqi y>(A9W݅` D 7|UuyMG`i)Ǝ>]` M >xS3=p͚C0ǭ7KKT17FQJU( YUچ^&d tLb8JjJjo)⟊Ye2b9a9e9cq⁵Zb-667X|Kihot A_lh~]m=]JwMnsurvey/inst/doc/qrule.Rnw0000644000176200001440000000774514073730263015173 0ustar liggesusers\documentclass{article} \usepackage{url} %\VignetteIndexEntry{Quantile rules} \usepackage{Sweave} \author{Thomas Lumley} \title{Estimating quantiles} \newlength{\wdth} \newcommand{\strike}[1]{\settowidth{\wdth}{#1}\rlap{\rule[.5ex]{\wdth}{.4pt}}#1} \begin{document} \SweaveOpts{concordance=TRUE} \maketitle The $p$th quantile is defined as the value where the estimated cumulative distribution function is equal to $p$. As with quantiles in unweighted data, this definition only pins down the quantile to an interval between two observations, and a rule is needed to interpolate. As the help for the base R function \texttt{quantile} explains, even before considering sampling weights there are many possible rules. Rules in the \texttt{svyquantile()} function can be divided into three classes \begin{itemize} \item Discrete rules, following types 1 to 3 in \texttt{quantile} \item Continuous rules, following types 4 to 9 in \texttt{quantile} \item A rule proposed by Shah \& Vaish (2006) and used in some versions of \textsf{SUDAAN} \end{itemize} \subsection*{Discrete rules} These are based on the discrete empirical CDF that puts weight proportional to the weight $w_k$ on values $x_k$. $$\hat F(x) = \frac{\sum_i \{x_i\leq x\}w_i}{\sum_i w_i}$$ \paragraph{The mathematical inverse} The mathematical inverse $\hat F^{-1}(p)$ of the CDF is the smallest $x$ such that $F(x)\geq p$. This is rule \texttt{hf1} and \texttt{math} and in equally-weighted data gives the same answer as \texttt{type=1} in \texttt{quantile} \paragraph{The primary-school median} The school definition of the median for an even number of observations is the average of the middle two observations. We extend this to say that the $p$th quantile is $q_{\mathrm{low}}=\hat F^{-1}(p)$ if $\hat F(q_{\mathrm{low}})=p$ and otherwise is the the average of $\hat F^{-1}(p)$ and the next higher observation. This is \texttt{school} and \texttt{hf2} and is the same as \texttt{type=2} in \texttt{quantile}. \paragraph{Nearest even order statistic} The $p$th quantile is whichever of $\hat F^{-1}(p)$ and the next higher observation is at an even-numbered position when the distinct data values are sorted. This is \texttt{hf3} and is the same as \texttt{type=3} in \texttt{quantile}. \subsection*{Continuous rules} These construct the empirical CDF as a piecewise-linear function and read off the quantile. They differ in the choice of points to interpolate. Hyndman \& Fan describe these as interpolating the points $(p_k,x_k)$ where $p_k$ is defined in terms of $k$ and $n$. For weighted use they have been redefined in terms of the cumulative weights $C_k=\sum_{i\leq k} w_i$, the total weight $C_n=\sum w_i$, and the weight $w_k$ on the $k$th observation. \begin{tabular}{lll} {\tt qrule} & Hyndman \& Fan & Weighted\\ \hline {\tt hf4} & $p_k= k/n$ & $p_k = C_k/C_n$\\ {\tt hf5} & $p_k= (k-0.5)/n$ & $p_k = (C_k-w_k)/C_n$\\ {\tt hf6} & $p_k= k/(n+1)$ & $p_k = C_k/(C_n+w_n)$\\ {\tt hf7} & $p_k= (k-1)/(n-1)$ & $p_k = C_{k-1}/C_{n-1}$\\ {\tt hf8} & $p_k= (k-1/3)/(n+2/3)$ & $p_k = (C_k-w_k/3)/(C_n+w_n/3)$\\ {\tt hf9} & $p_k= (k-3/8)/(n+1/4)$ & $p_k = (C_k-3w_k./8)/(C_n+w_n/4)$\\ \hline \end{tabular} \subsection*{Shah \& Vaish} This rule is related to {\tt hf6}, but it is discrete and more complicated. First, define $w^*_i=w_in/C_n$, so that $w^*_i$ sum to the sample size rather than the population size, and $C^*k$ as partial sums of $w^*_k$. Now define the estimated CDF by $$\hat F(x_k) =\frac{1}{n+1}\left(C^*_k+1/2-w_k/2 \right)$$ and take $\hat F^{-1}(p)$ as the $p$th quantile. \subsection*{Other options} It would be possible to redefine all the continuous estimators in terms of $w^*$, so that type 8, for example, would use $$p_k = (C^*_k-1/3)/(C^*_n+2/3)$$ Or a compromise, eg using $w^*_k$ in the numerator and numbers in the denominator, such as $$p_k = (C^*_k-w^*_k/3)/(C^*_n+2/3).$$ Comparing these would be \strike{a worthwhile}\dots\strike{an interesting}... a research question for simulation. \end{document} survey/inst/doc/nwtco-subcohort.rda0000644000176200001440000000166511457435610017177 0ustar liggesusersY9A,]x Xkx/@ƠVUfFDF{22./߿rbwϻo?>}~o~5z\պި}ݵe +sZ}=}#|vd߳+nh{WשЕv*v+}j|OٸE! (B95_U:=ۅgC}|b y@5ĭw+6\⻋w}PQ9(~?,q+]xY;876u翳[ydtuXXP}qv®OU{Yzy]GVݕ(^4*}uY/;djvzY@=q;ہ+@ VՏo(\ƫ:_fկ,XЅ6ounj]sdt|A(;Ϲ+*M>Q7n~Y}WB7<AUi]|UV?.}>xf>5W>ۥOq]__ˢ:tٞl/;Z]S͗,ނ͋ѝfDmw^Qq#]Γh9<>Ghu>fCclTMvXۮsUt+?<EW#(Gr*OPq?vՇj|/\ջү\Vxut}@wi֎<^]o+ޣkE|bWW\gQ·]y7x(\xS5łVÍGsW,Ab?H~survey/inst/doc/survey.pdf0000644000176200001440000036236514424312435015402 0ustar liggesusers%PDF-1.5 % 3 0 obj << /Length 1713 /Filter /FlateDecode >> stream xڍWK6W>@+RA[ M[ El r-qmz"e=wCi\bqy~3q[xq%`a.YrD< 7" hժl*CC7_r9˥TNnDƲ,#Qx#X$^mDI6zI_ۊV9.$1h|4̳6FP nQ%6>V ?y`*c  ΃Q{8;04츣-s  YuY#Ͱ5, ޳ިzRD U*H9F?-7cBSǠjCZ@LaxB"V>n$DVjEמՆa28˿{Kk*a!jz(vmGUP%o}(Fqj _XR,gPJ#JWPԬPlÜe\ 0Z46H`[CJGH&XDˠ(<|)[;ȹ@yue߷]P2˃?V& 7ͻמo%OAfj!28hu DN'aCQ+u9Qm96gB=DAzdFa’{MЅ(Rȇr9qg+UKӾK/z xb}UFYzKo- poO UHߙ3E; jK?+c NzUJCLMy 9ˀq&FYPwӒ,*_0q,K(C0E{) 4:Í |)αEԵ~÷8NZ{Yc9MYס ]]JܗOI)a!y: pR a$\<Χ8 P+[ux 02N&}<KOK8S||J@gNnAaK'-~XcM7 =j[ՕyE&h ]ZF:J^BG w@Ba~@aoQd FeLfD|u<`vQG&w?L+Le_U_m=N2!KDEi/΃Jh{XT54VI[ =r~u93Ŵr5Va7чߓ5=L!ٺY +-dOFwکpȮNv?qLg''cZ@n/GֶC0y>Y=%BVOߺvp=]NN4y h!d2dS0EkC~Y7o5=urnzU:q "Ftw5s鬜a ita%9A$X, /~/K`l endstream endobj 13 0 obj << /Length 1237 /Filter /FlateDecode >> stream xڥVKo6W,!) @ 8H (-zHs%V\Jw/P6Ec} 3?/޼eVKX/*r d^,C۲3\RfRa*/j6i~@=9DZl7Hw\ׇ$TOuo|\3b!luSu56d<9)JQx@档~.:M9a]a[n#j+^"> {n,$Tv0,Rq+᢯$g(־5l/rV Ct2gYvxCry_$3^Whʙ,8s=LUsτ|CR3ߏH:!3 `'FePaT0fE!!LY!\0e{2Q<-"JJAڔ<amucL#JV9(>)lnnr 9pGf=Pպawο kų6g'gbsz-1쎕G"Q "³\y׼f ֔TP_2}dV*8L4 z=T }:}UfbtWVq%_ArC6`ݱ"OgGR҇oID0$<7U$6U Czg ȪgqU$b;.Ú̵=526~t|Ýi!rmjB5.$+B6wXPyJ6EIY|TbtZA.qS8*rjJl-5ai!$>77^F endstream endobj 16 0 obj << /Length 1160 /Filter /FlateDecode >> stream xڅVMo6W9@bPP ŢvC݃"ѶP}pΐ#LX"7ߤ^Yb5׫nń F+ BkQqPLu7U{qɸf4?o}Mfŀq:fsfm5j9#Š3-~xwyFy83 Mj):&*AE6jm+Nef*ۈW"nƍl+AgG|H):>F~y4n,w$I5&lJLH04{]sCWw1 nUmeue<) B ϳ?b#2wZP4qCqz| /.'XPJ \"F9㓆8t0&0ψcWAIf]seU1|*UP`I˹{̢ Lr9wgGHP>v|nL&]J{1L-*\` KJ9oZC`ګ9vnD 0/wsWma(ozݩƟu#8PZ OL<07OԷ5b X!b 2??V7\ɤSXS qLKA89A%WDZ&t )R[dnRȱ<׺rB;a܈Vc` H} ˊ)`v}#9sZrI9 }JP<{2HÈ~rkB'm2i枖HXL,Z3F-"zD> stream xVK6WDNV I=t.6RݽMm5\;вզ)9 ?={}E ADzd/$#zU+YoL)?)ћ,a^f``3(9#+Ȃ,p`Bִ-$XE܂3.9q)h gID<#1xX2df4b.7&΢$#oDg4MN8h~'p Rci@84ԿMqMEX%%vG94Q~ Zmֺ@2Ii v*u~~:8.()z:a)䁧IbktyPdQ-1iNmB;ƶM6UmD4=7vj!j7 @22bKTW6ѿѓkYxe/mwꕶIE0K|7#aj{'pthC" _ɩG rGЂ۳WDZ jLJA".pg){9YMҳ+ xwZ54^8$׽y/Zڋӂ%Aܫ8j}~lWMBzi,# ґs?( XNҌ ht F\A˗7*vBx< IA99$))<6$k$fp}g0ʼWF.THoE -(tWg{6H_q>|&8⹢9Yq};o|IO{d34˿-+_>\խ}:Y*;^kۓh;lp/ir6zޛ'1<+O`2քG#6lvM;i`/iO@D3&f̈nt}H.`S柲τ`0#ߠ z']*HptA> stream xڵVnF}WF 6@VЇ4@h%El%ߞݥ$:rw;gΙ+f8ly7cBL+CP}Vu^(.]F qL[ƥa2p`Kŷ(*73:+#N%*>/cG N{hEc&SEQ2_#qV|>ȁU9LdobǸOf6R₀HoUvnˮl@e5T]ܵiߴ/l<v(M5Zw'}܌Aۻ=xG>nB_,|w摈DBP'ׄ1L8Q1a uٯ;}ڰ Vu_g@q58o0BӶ: 'Pͧi N?tysHk1&}*ߓ.BH-,2dVË^oIK,x$DU1wBt ?PRpH};YHv%ӛU;"<-Tg˳Ϟh endstream endobj 25 0 obj << /Length 220 /Filter /FlateDecode >> stream xm=k@ w 6}N.dv0 n\|v K~{㜇zϫz zk,02) Rkt䁬C-=|otEi84?Olx:8:6V\0RRmWk(1Y|WPJlX%yr 6ͬ!x_5Bxr2~ZZo-1j"( Jͩd fG endstream endobj 32 0 obj << /Length1 721 /Length2 19473 /Length3 0 /Length 20054 /Filter /FlateDecode >> stream xlySpmlgzc۶m۶m۶mΊm[++ާSdEw?bv.*t \e1%YF3 ))@l`d0100<,-\Ɣ l M,m-j6n7777gW:'W>MM.3KS8B\N njgdhPp54X9R6vv&ə_L\fdo US ӫ L2۹8sSmjd?\k2߬ǿ-:FF x3;l?CJ?ծ66r a{[WS'@?U6ߺ[!bv0?TCѿYSKW?;jbogg-H*sҢv&ve4t2o_iC?`&e ],= t#c*!!{oZFN-3# :9ڹf/!zlsXU/TS/R2i#[X`?`_I>ƛNFbW+5F݂aˁE>dnn)PͰd]I9"3Tt #&/=ۉS꒣di}ÙR"-Xlݑb[U:k>3ê;/gIYQ`GrD<~#[Βl.s-ͳ9TB#|tm Rťh0#r_'պw7h ˟l hES0"M¯꠆&)gFӆ _cu šPx#/4 ]^-`gǿ ˂=Xevhʂ6SCu5;/ Mm.{GOJːTC]eq#"f"+_4#c&|Uw=MXA>==iW|#nX"z&L4V)hD:m,ޮacl?a'SV1PڸˑWTotuS*f`/193*#(ԶcW*sD@{O=ErϺƫ@[0Rshh Jp [XY#% ϜH@8"^r}"#H P*W bUBΙcj(SW xQE?WoڮW(sw-"Sw cFNGvWKLJ+L[:?e&AВG/pMjZM^6~rGf:j*TBosqbt OboPdD{q"[7{bRQնR NX dp Eb#UNPlE}_`>\bM_I};R=wޗcýby;' &/AW 0${,<A$P>YtAz_Hl;|Lon>g8? wS;ls(m'0`8$}7O90IV&4OY'ccے$| 1zT*iRQIgF>_;DW0.e/C:m4-Tox~:kVF sp8j26si+H{j\?]HG(7vuctr!lAAvv, Var1~2 ,&<%nO.0( `9\G}jgT p\o \Ls`i7#4oAeR dYN $ S:w?pU %"l</0He*>>՚fۖ;N%q8R2y μlt|7'( 6W,xeDRe/MM {>hMHI8i]j g7U2&BQT#}LDK俳F4$ ;SD)IƋ h1Pퟯ깗K+t/"ǎk2I2,^o,rS/v}]>GQmmH%h_@M+UG\v] "%tL=2 Y2p/ly4 ):j1Z #N13V@sC} z =ptd|Yp͖`E.כz nkԙ/ٰN}:!77+^f`=I}.5tLxL31rcw y ޓ,V.5 $#ȱF+8dɍO)/@9D'6`w/PSط)Ѵ#P37{K8 #0&zĘ$N+lt^EZ_HL}F]Q3O(&gB4/`;h. K7/n GHqO$!Oؾx 3hpp+:at.3_>N# Nk:iE[<2X@+Ljɧ =z /S ֝s\dIv, AۑM)f2L\*J$`B=cmt6k{dU[td%yÙx}y?ZJ^ ]+'OU4_h$U"q \EGoKNT۹[]@cFXf*T_bà牳0mAj}u'Ls+vd堗)K=Yk-~߳mPCQ%!ۜo(Ӝq(T12rQ]O HѢ+wE@Wp!YlkKpq<+~46J#Cз*md.}UEcW4cz1sLp!p"6mJȭ~p^ Ol zqx4z4VH> ;wh:W?;y󊑜2'TA g6`InO#Ϟ/o,o;]Ow;Q@3T9>Se}VT 4sig`3`eSCˮ̷P*ԢQłhb[iwA`~@ʎBi~ȝ$ _{}~Qp gdEm_#\6l7#ņv {UbWdvnw| l^2,/K#d|@rB aՓ*\ظ*۹c P%)&+crc9z_[с+>.rqP٫^!MTt`]QX>y+8O딍>\?.UټVHܩ.yWʚTip3owelr}˖_│uQ?w5PXl]E? Krv[ X{0Tn Pha^L ̹a7p_Otg8CJto-g&Тs? l2B%Awڮ-N1dH[a7V_ll3`BS$ZT 2kԟ94ZWBQT2foPV%N[T蓪Ls?o^ɾ4Z7>@:_;ǾC* a9]Ӑ.o +UY@dtӑ(5L*&T ]ql}t/ RYXT.OTVGe^'^˯v^p1CiA*ʸjhة.p;ztSN&UQY0M iRr tM+Z[:^åK!W0^p;s4z3A6) ]SDv$Tԉ+ʜ;dK3r,К/7 x-ťno^NX(s&dMƬԁTth㥔;xY5l/8Б_Cv PS1uGxӤ68#pݗf kL ַE~E#_c;p1w$+s&{3Jޢ\Ϙa9O .^2W_8{}jm@"kJ >N18#VID4 aګZ5F])95,p.!7|{9." 3O׹|F3RObIaNq`1KЏh W Qx`#:0LJK0[ 9?5ggi<ʯ S`o<`!L ~9V4ا`,_&Gۭ>EbVQT\Q;^;+rˊ#T\VZ(員cEL,d:LʸP\? _2uZCM77B1Kq0P#.-]~ N9 s_g&i{쉊rDY"^< pdB~{`C!+[鶚7}qP-AZI+h׈Rn13̡o.i*v a+ +QU8jА6{A,$}iՉ.|`1qAx(E=AG`NF'eȆ&;~D ݟjiNŤs)ߐ{a,V(y#xRw I\ k`d{΃P׋ " [9*}@M@T;SRS^DcE) YDK}-㝵HMȑhG0hBמ񨶅=Aya %y_s#F~8ɿ=w5)?ޠW1.XvE[w9OITIx!A7D/ܒ*(?X5\'ݱQ$-=F܂/Kxro/pU¬&9bu!ŵ!6,cntBAbb.OjA8 $a_1-K 㹝>EĴO @ AQÏ~zeIq"^+ f'q[!dYږ+D@QQjQ\L~棦)C)cF@;``t_rObM'W+ZsK_ժ^S6tej pA ++O M=t#*b&5#FFWbB3烖"'jV&']v?NIT{*8dٶG028Aeg@yjѬRp$0A QBPd`n4%-ųtgNS_LKƀkd'v♒_1c{v1 =ۍ eàY^aIP޷+K͚6KǨv`u 9Z5,~^!2O>6hYmS7.͗t¶?Po??g _ ]Ǽ>KmBn=#v{ >*KV| NvlR?)߅79D邬.*>4W; O3G?FoF.Aon[Sgށ.0va (K^QE`? KK:ڀ^WmVlyTOo:U̢Q?['F+`xo[!*t@iUǥ0Pa:|ZZ'Q_R&%n0+$Gmbi\?~7NIOW ӳve)̂ ja8`%<)7Ё5NJ|ǩʯZaڦbto7 Iw8W3SS K F#z?߁C7bl02>܎[l(@h7\[l^Ɣj@fаʃ \ f9u inf!OAQQ~h~cB/=)D)o6e\I, [$ÇgPا>ވ/GbgEl4g5rR#SYTbhO!:郌"LQlX<ژF[ߓ"?k <#!dzsJf^w$W@m!ɰ:6U6bo1BtYC4&E5 |Ԓ ~A9ۻwd(pV FdS63a[/osj+~8#2 >MZ]aLO4FQ7L=;$%Ȝ~`T" P|hLII^P1z'Al¦s+6I3)]9o밪' +Û]_Ee]m\P:m34+zxDK֥3oؼhnoU1[.K3 1ɯ]a#FZ@(Q!V((8wYK"z❎tN{{TH&|S *D4%jtFS$1_ Tq1p!M#8&Qb7H12VZq_~tqYKi6@#^ UNwٔ{HaY`?[A-(Eعj\ܲɄU~܊0ɬ6l! a2ӧ+Xe\+.,rw/)z^~/},%}'mcXbJcOp R$"\d$1wBHz3SAgdO v9P/\hֆ9jʨz9R; g/ !5P6X}22t$*n׆X}!Q# mtүbʢ|F]Mkfr._!&I+5Fb&uT԰Á?a=RQjeҙt㶖Mq=wv?S+/SaJWK:J C_rF(N(Z^`ZGkeURt):%hJǡZ+lbg.Ι4<+}8cGZ/5*f5},y͙_w? #!}Yf_RYWXyq:4xެ&1cYWK.vLRSXAY&%y Ә4))QuW=r_=MFd`(>ɤ^%v:?_%$)F8,Xr]VoJcf nI~l,:e'ؚ X08ޒz&@E%z&a39wsˡ-o=ܡP9z0|` 8J N=/ T{.mԉF/ZλI6b`R2Xk^UG9{ˡK緱M/I{nGDd؊l%N4fcrL&S]5Z5Q+OzO1c٦zPAP-%Qŷďˬ0/`XxɊY͔BR,Q Gk_}}tv ;{~^a f"\`k|0ϡ_HHuD# q|4S_%KF hQT~iG0Nu5Wy$ǤފkfP\+n]<p H% gW/JYFeO1e7Gi6C5k->' qvdF/0 I! fXd?cۮ'#"JVAz!<0#Dz#P[%wNxgJSDc_J+s͇ʽ׺xOQ)ztb:~$ :EegK!d}lX2<5bH ndۺXP(AXANJ 6ퟺx7?5l:n+qHvFN$)7:VZxo -W)7M)=n*x!<̂# z=M7os4HgޙEG! w*Յ8҇}>x)16^&2g=V"tH-%2fV'0rNk[ى꼶}jiY5!듄n D-Uau@7trw‡1O#)EUyN ?<լCŋ+8eHٶ\ K{mt(G_"sw( [s׸ZUgP}(J%R+HolwMFB/sACBX- {[o9۟մJZxіGzujY/,Ge"vN ; BsE^"v( X*cwFy@BYwM/h1Yz%v7v4ΟDiC0c9R\ WK2Z߈(P!E(yI{Ju\ᄑhi&9_#nzYy JOV·+Y00ߜnD^ vF0>'ZK gtKYOR {!۵%j[OHl w [˙l7l*¢#)D27sdH8?0+X97E7/A3扢O744]H:{aA>D=*JK#[f4fZWT2{:ͼ'Np$|-Widh2iqrLRФ7jM;`<VxrM‹R`AP]x_~SiLF|;A2ETH/|.R8~XAch"rVBN)#r&cDRSgQk햣}&"%ut{ P(cyXk01ʑ-SpmwE+<ĸ lFڒ"%{WQ7x +K$JI1A~3]nBD%pSVЗ]^uVv[>Ѕ~:[ &yr/ 7?|%/_aݠJ$ibGj銈0Gc,Kj7 eJlNgIi7Б5`cx C~dVVU|\#О[7EGS> l¶5F0H%vD[("+duG!ވ ɐM]6A*Z " G&Շ]Q37B&eaw֚Ir+ )tɀb(áh{V}ó"6*<-ҏ Kҫ{#'ڥDmm㚝;A49| lEIw![^# "`+7|%cTi|MnklB%u*Cѕ 8T3$E>Ja&Ik2&;;满k޶}4e=)F힙IWN|N<=A+ v4 ӮLH!we3ǻ:~_WЏ 9I%tQwnWmQ rXɳC)p2;abf;{kټ6{tNcW,"Y/ӌBG1Hxt+ȼ+~c$vK`gc%Ȍ(1Ӿ k jnIf#'8.!E]wZgWt˩A޹rІM):tZ>ep Fg۞UHp0xH>цoFvUaP]rKP1*+D$- ͦJ^|%Ԩ7R-r,hA6}+((HMO6t!=(AkO01ڶL>r`C& dPYh$W8:"-QA)y5 u)!Ad#蛢ؗ$k}g(aVuO D$lY/Ҹƒ;HV.Eo94G7{'N;7R+ւ#3=S2Ͷc;Dpd:iCdUg׾($:/![A-6gQ 8+vKTplPCA10E++Ecs M+*=+ ؏+ FXLjr*n%2i֊K\/211ba"8Im6npp41vLrd=m\väLD̯{S rxؙq8 "ĭ #a!c)u[7HiC\ 1Cehχ!pQ3`68zKr5ApNW=yP'C+6`Wk5G `c$Cc]g0}f"e]mos*0囥MZʣұQww[ =q ?#Ѳ;8@+ ~Aڙ3ɔzﲛb o14ؓTrpwfXS$w|px𝣕|EsOy,ՇJUV7Y1Gz6I~5Ә? Q@(/&\Og6| T͹{21oNurkL%EakVGo vL|+"w`[8(}_n,z&@A}KT IBSSnĩ3G4PɁ$~b,ksIsYбz%TwSqުuOaň#DŽn&M*a_MF HB.UaփTS"!E6G"ķjQM6Cv#L*<54|N@}H; {} qnv.Qsź@5]HIi{>zxphJ}NYdOࠖHT5[La.qlD Ȕ^xBwS5uv 2iBݯORjvp&n=q-L`A~Eut MfٜGJ5شE 2h_Ѹ@G`_v!<8u@]rId8=SG'Fy|59 #9zHck{""=‡eo'+WQP8k xA/GZC߳.dUQ 3 WօYآZK[27'p7ӵԊr(pZ*qJTSd"R+Ia 3^ .Q`=AP/_0\Mŧ@i&Ҵt*j_'_ _\VOS%\XT+,Ӆg f.N>gOegP'sZdk@An@]qgp};,#nH&AhrPq9g mg 2,}"|?- |uݒ V\!;jp-ok=e͡'"Qr^V|d)v _jXv5k&0騐 /ƄwNPKlgS}8*U#-}R2m,n̍qeOAM+¸ynLIr+Ad{ KJPu=#r״ΐi\K`5<-W͝-Jal85?B3A~-wb#ʍ5E)`S{)I b˞{Jgd`)$RD]1_JE: (mxܯ ~cJu/bs#O%D觿lz u> \!43,MMJ>;7T'P19 4tIefJ5sPy`y*0P-b7SVJ/@$y˪u~P& D?0IPA6;p4=;h|Gu';aM8,!lDz 45t{lMB ~'yop{s@zJ&!VI_0eM 4yA#2Mam$IQhfVxONh)Q \Ik sTLA AS4c?.>JJDvsē'8C<pR-)irpY^.H}5-ǫS%.FK=zFEא=߿Z3KjЭPJ2cUߊt:ZNT0s P܄CPZ=lR0}!:g f8g [kqi[ }jmQ.- o^ɒW]68 Kֽam!~8ض =xBz8PJUj( E!JF8j}*Hm@97jߌWtxLw ~mP'&vrScѲ#shc=THR_'iw'{⢊\\;V+)298@gqe|7jˏЩ{'`@V1)QDr9J X5nF%u&%p*`$`~ "Wͱ8.@Ɉ^q6Lʹ8ytVHƈ@JCv@[n sU PhYY w[j,`9|gw40"[@`6^6olTٯ֯n4w (3K0(I-D2y/ޤG2h^TH0"Ӟ--H(bGMmёz53#گ8 ( s^@Cl7{cTo!i"+hAqYA|C)DYM3yz2f{Ey/09>"T}O#BK4ϞP03pϙd{N5kߑr1\خ61b;z)%I6)$%f;~v"8ZoJ%y=!C$| iPtJW决0r|G<`p`c0jmܬdpT } p!:dЫIu&FATݑ⫝4ށuaPTYJ yck桖MEKσՕ9(gGI#x[]2ˆؖ|h{ 1Z?ʑs~M{  v]o X3LT!WW\SH~bqua- ACSO> stream xmxpeݶul9:v:}ÎmFض}zU]csYkUm*2I{93;++Jh7v147;!lT1{O' ֔ @ hthڻMnnn_ݜ]\\@[s7%mE):@ddl Pr5䁦 gs:d'g̝\p(HH~STHAfy /Nv_fED\LQa[>JT*%}m5P~33FֱT]-ʨm+ne$EOdP6c\pi" c Ъ< To{Z֮Ь,H{_mMxJ&xGlȑɨ処su'DL#E{,\`,}>ڈL¥y0lr+ۈtu+F-1FDڰjJ%Af-SdAD 29 w[60_ ''OjUbפB'bilm \MqyCzMGFʷ\?!WĈ_3NM?q{?Ĭ$Yʫ\~}~$[ת#$/1F}B ߽@7@e.$ BY=ڊo\gY4)Cfۃk:gr84fa%ʱClX3SwAP,܂+wwGԻ6ׂ/Ȕ:h KJa>!\WnMߊ*?doO3M> ȋX@jO3i iwr̙ 4OiPjo:iy)IFin{)_F4 "2SO] Ju@ݮv\xguܼh{LtUy"ípM^,e7maL>"1xD,|Mk* S6Pn Ԇꞵ>O23@@S+aw=lfw4$yK"ջ źŴSٻ֦W ۀA٘^ LOYb(!1Ռv9s whzq«ՉX#A؟j+bcN%."]֏U"wu8e![rr rq~eD~6~Y{aaYW96 3]+G`&z)0z[H AQsPN/ ESu &EU< VhIMxmMcycVlͦfhˑfb̺LU0j6Gj;!l*qjjaaLSL(I[g,3R(3򕠓O}Gw&0xdJ8/YY )PwTӲtZ1Ԓ"XJ? @z=8s8i(9RQ!)b2qmװA{8ǰ#t\m^"VhEF`78{^Qm6L–؁čc(gey6V BݯIgGch^ܰ)9359 *} \@+e _|֒%էW,՗=&qF 5pa &#_~op!W^ۘq"C4 -Y}*G'2#WJQrPUMlS4;Gc~HuĊ3͸*řʹ, XauZ 3 a( 0S_= y&` c6xawD&~=1̞EŁ`k>!6cskUP Gm՜[QqdV&O"4c?~_yOH36,s@UHs^tGǽ,#v4SzU,HֺU|,○t4M2uQcS΋\kqD~bJ $I~Ar'JbM D8Q1/eg ΄..ϟՉ`ֆ_"04ux̡6 :j~K}sZ[rma12 J߀+ʓҕ S|y=՞so.=..&j #X i)S׌8آ!˜Ӗ1u$|ӣ5} ^Ѐ,ow+`[Gmj"KjmRIt Ha.wsv&/8JI N63ٜƙz1w%›8 ;~2eUU;US 0dTP^zsCM`PיNS+v ficbFu2oX%E{k%i#m^dk7)KPH>A )v -LhMr,kZx:E#~G6uMd`Brϟd# @lVK<3LчI_Iqe\[,}FelǮrm\N=:I@܉.A2N׏AF]P7(g,^)mvM')6[ηqWUr;8ݣVU| xt{+pL xKuvR?b(qf%5_{ƨK8DqG9֮]Q*,Bk s-&W<ЩGtf(yg6P`(͈kZ4]e5Küp?*F)쮭6cް$tۧtQKIO#WI؜}6EInd֮huԑ*`-\F}`oXumێ.SD'PF\)$5KSBe%>1?o0P,#5'϶ ٭[ƪI}7(=@Q;p2CZP9M/bo(#O{Ɣ歵hgʒ@Iu^B\C,yC=fYj[kvugȮO.  ?!q)F*!8t#!"ER`AbYҧU0z^2}9:dre'=zkWk wUSgֈ]E;+\F UI}QA]5"+4b]^F_lRrT4+٬1q$m4-X>.Dr:tpJ> b[{VhEU NrYbY[N~j4XaM^59ܴUbȧۗ3!l 巌r9G;Ҫ1MmcV.q@ǘz!fM&$PQ;h=]HfIjvxm1>]Ȋ-( hL~HUe^55WE]uQ*o5WkR#*+F-¾쏄~UU&w.C3x# w_X bϲϺNa5D+'`;-ZU ZJK.5J6آw$*&qob^ziz$M܁?ď!Sxk2XJ?<_EnFh~*]137i;JY<;z;.&:Y5`LPk8pߏ󞱺ŒЭd:He::YJIt(\Y &TUϒ,Z}UF*AH̘Xħs<**[ƺnYGB\ԟ", 87Cׄaxל2ܮP: r-яCY^w:g;0h*"Ƕ:R,RI0Y 6ȷi9tyCڛ]~'_~y1S'[U[ Jsd.ةq[ +i|.Wz'3LD>TIvr~CpWTϖVCnME:}͇nSqkO[GgH!kr_| 4 D׸aG~(YD]p|g:%J̄w7ip~p~tjT H}&\۝]'!; ۢ#Y^-ǏE%Ot ,'t8e#'_!tpXqΠ r0YhD)2[GDTna=+{{@ ]5k/!UBu\ttLQ~җx]TH[K)BNIm˼4Ѥ4e j G]fy'nn \ê<m;afo:^^ky<0GRvWh ZwsO}kB3MS L5m~1kQw 65Eo :\kAHm0}hd 4qK:W! 5f0B=Yc),nntl?A _4Jg1`Z{j[|kۻGGV=Lb|L1nHpn29%M&QZ`+@x(Ѵg鸾E笲@=]} 1B二@eCacQT4;k@dil5<]D׿60=CO\3x6tGoUo*wbo~{Õi*͵)y] H$%n8'Hc@07$BДFKZyw315D|ИjW$n&}>jW5JeQ6]M,[;,K]Xd#‡@qؓ+@ar3n6 K:kWЏQ@/,ґ+U z,ξ⨺Wmw\ 9 U7:t@z* AȀy>êe^DVOJگuoE;7(.`cvb0OϨL/7#(h̚EZToAh8ic8d*Jpky8ՀƬ6kO膾k31N\|}/hq%k-傝[rҐm(FQW`5!tJW::[X`] Z tXȣ'mm~(V]|Go~0eߐBw=`tsS|L I>/9q;6 P7[^[(Qr Ӷa͞xxhVD:d0:OQāqP*Iݻ*/Ey \2jާcq`bQ? H/#=]#JuݳR%n}6 c҂xc[g?a5TONЗ e}c̚+vR[~fbL@xDb*8 h~S{0)SJU%u?bfؓ'S >' SF8#"b)}BE.Q:*`fNKd?#dIG#6¡= ﺙyyMŵ(Hw@ ޞ a wTRTV#/p@BAM5$ҝ)oڜa찒_f굽)g)ų kQo- 9=omw~5eėVڎ 9).$@\y|`'mB-9% ?@᠆d+=K?ep)h^dbRp{X|5dje}T_Tϟ#UئІn<.[o1 6׃# N)Z >N^:*o p#{ϸc%և՟3HCPn^>ֺ#2 ſ.C~؏MoxV;sa3 M-UnE nG{4I-\`&*hϱW)<(xJSP'0 .xIfPn90b\jI`ifhާc7Jѭ+m,?EcS =$ڦ1=isw,B,UW3(5m렣+˗z ^qMMYݥՠ0@ERXʃ< +2QBV(utKG+;V"1 mCCuwge_/xBeܠa-MЗ ֈNaLj$"0)n0tuiqHE,w>8f~QlԐBxn gg$ݤj8nkay,2q:V8;ŏ6l3OrjCl>ګO-  ^ ./ ?\ٺ菂mHl B)Y|$|)?rR`nÕքa؄$$hCG,+'ա/z._G٩jRu *T;F*Lyl VV%P61#{2XC2\0*3[,#w"͡A)3Ip1MAC'C>C$̌@+ni_vGwKy^bz&+|\> =mh)^EKU 0ٖe*ꭘRi@@2ꌆ=KmǻM |:>ۆdL Ͱz*s_Iݘ3R7-}GoeF)ܒ!dͽ9!(44βl^̴1Y6k@Hi z(2[- E1e\3(zDciS.M>#X<;CԦCz M@gT;?/#]itS_^$H,ft0tChΙtTt9+cۿHU:F1< NڠgWkP;`S2|Z h5.t(,}VZ?3ZniSP"3$&&5֒9i@!Mj׽ =4RN(;sjsxɔ/[,ԕ.YFF;.Ъm A0%}O· 3:|g#6%Kg{S.'8W޾"Řz cj>E!q՟L{fHSN F2U&|6yiwX22iF4OvW3%/>|gK-9S;E_հ0+E";|b$qvIsY*(-;r%g# b8B' øc[Io5W0I=PC<^_M{GZ5[1L.uڬ%'Ր6᣹vg$T:0X޲JHg+!#^9k ڮaK( Srq$#g5,Gz8:\bHl91qjSfb+ rm'L2rGg Lyb I u E u<* ζWNI)Y|Mˋ-2Fpg͌ut4y(,d<TWV?ZR^IVazsqmY2sa%F4?UU#mK~]rHetiul`LV#D "F5aj$|ETu^EL8G̝}:/5X6_QO5N1_6B^ Xq8̝UMsYUЕH>nEqw)| a/$gxYIC/cjk3ά 4ŀR&rhJ"+՞c_׵$UbY#gÕ }0%o?9gBQ="Q۫F􀽥T|fhC #Ej {X~>F11o$upb*|S>a'*js꥾W1dE xEM' PA}tlpNҰ9S Qhx=Gu&QhRrHA6yO+/0wrL~T!  Ũ][;H% 1jRP~.qHə?X*͘`n9^^Rc{Oˈ4)0Gcp-b9L0a{x{~,Ьq?[1KLo]|vb`S]>(ߺpЯF `ˇ!\JT>Nf r]%ӏwARCܭ,?8am؆bko̡o"8'c#+svci>su}B=V͝/pA鄨Pqk$J\刭XΈ E"-nJusZ.k i&Y:đ \~%;MWK3rjցXƜ-KO q3 ~P1tSKЙ*wck-7XzDHc.>Aj1B>ZmEiTdd(i%9lHEa!¹b[ ÌI0.&`Zl םl.a 2fAٞ],Z]PS &`k I[$tBՓJ[zbC|Aud n ֟?Ό2jl-b,xӤ--l1jU]x!Pr锞BiI#XVJdɬ[_UlQS/Y"=u;+E='C:7Sc%ƽ q'ѪvYl憒! VoB."^lmb:( -qUQ-j˿&܍pH6y CRr%M6Do)-m.` 1 `ʧxPsa6Jێ")\/6赣YS ^Iv ֺЬ_YǃE@&Y>&9|?:J>XA5TmSdwQwn*4܁>0 )ds? PiW<PʸX!sPUdiNԶaޟ2 h=1)D^:^;eL{,o^1kY^u70 ,@_"bM2$Tq/&My}Z D8kFe b}QOm'!bEp?8OMb0>ZJW:fy1 'ik$08j*e |y-5{zSה!k0 e{F-]Z}=}zrpV٬!nƞE|=]K gN>.Th#=ud ɆO"nہPJxV_ɻcjhJbު1&cHyz#> stream xmwePܲ-H%08 NpNpww{έWj^Ϧ,iqV002$UXX̌l(b`#gK;36,@Vff 3ڄicdjikԴs4򻺺 :0:2mR` (-(RJ!`G# P q6N&vSirbGW-PAB]DRIQ(!Ƥ.4Cx&近V1M-M`sK ӿ|9 W_}@Mf.66F` 3`g vUl aZxyːq6s,$-ʖ63k?6tw?_bW 4Ed% &vs_/M SV6G ;`O,QQ;w/.v  7 5qqtC1,Y$0l`glZ+Q8UO75aA8u ¶05;'Q'wC8`,u)sDfF;@XܷfYp 8M"eĵsr2{VICKaY{CzC*5Ucl;kt BC\j8N1 y7SuѢJyƋ8Uup!$ֆGnDh0"cRBEuo Q.X 5ɥ4fsS=}\${J=tZJ!Vkjg pRekTʸ R wp(%}j|x-5EANθK("MZQk>oզ`6^ 6D;ڿVFS N郙U$rE:'?^%-p4_ 6 F':"D>G)َ B5&KCxܟ){sk5J2 촲{>m_vG;^qGz[:ΰҒLe> ʮ։U&lfg< Mcvi*׊8g[},kR3eau;cx~;`2(ӟN}̛A\$ ʗha- M WA}ڝ`Zy!sĝ^:lrSҫЂ LvcV5x eGT*=r)p ѩzC q({OxP\SCT!ZG,|m }U(|쫹puCIRm^IR n!@S}ꃝ&b?Dv:ŻuQ9JB(H+0ХJ6;s7X Y\<+HMiB-xw@ox2/5VQSI i4!LeUdp"> }`a8㢖6u ݈;F;^*2SUFqyOQ :|X;j5I VqʡmrVy>&.ty1R-s˧MUףc#L6)tVb J\L7ԽEgH(je کķ:}sZ]ehHꀈ ^E^)A 0 rA3i#pժHVA=VIY_y޽aKA ({F334MFԟ g3}YsȀoɐǑΒI%Bj~ҋ7DنwiY\{2vD/;5]8d#d 4{};|M9.,ۊI3lgXymo^svUcnfiU{< -MP/: PRC m܀7}X3)1k`Y_oYk+b4^B^JmX^s_b*2Rc¦~qG3Vr ]0Q0 }CG?#MW%އüˈxj_l3I(. ܦ6ܙ{7Oi7kJՏp-~.PZ,QnzMpEa3#eVi |%3Da[D"$0b iaf|pRUL!c{h(tiMIX[]w$H;H2uJ`;+Q}D v;Z! y{◬6_yhkjyS @#ԙV@QC6ܘEU.]p6#ux‚", SyD='ɓlSw]Cfet2O7md|YbvhFvu)t700NNVa&Uvutcnrt(Qq'+ f;XB|sh8QLxBY};0f )ӲMRwh%_0}үb&~k. F'|$Pu?<;r/zd9w.@=vЮyKq(*ж+$^fF˅}o4sga<6̾~Ƚ^Idy'ɁspmkcKlstBhQő`F,훙 O-‰:-bVx+OqL;f:X`=`PFvXb,7Uo|?ޙdRɜ-rsH@bm.Xñ z(B0 (?a♚("7jU\{kL#,3Y 7/fCif0f9Yvh1G#DJǿl⑑ HVcK3*aC5EmBFͻSpStS"F@k埁bDQ .  _T"d)cM6nl5yجg/x"Z0D aFiaS * zbC$lį}\ՒbxoRd\Zjpoԉɒ}P) hq@yT/Ap"A_8կx+2L(wRТ"WYם^+|<JVOv!f uza?+tN'd0wa,x>pc(x F肒SQچ}N$fG3ŏ4-EVͨ)t{&RK F3d=1V zs孍j v״2;O?SL0Pm|Rag_ 'T%:^'c8$,.7J:0ǏQ4#crMf2,?ydD)' )LM6YOx )\"EeFi8?vJy *[/G ODbY'*DAhpJ e,pO`ny\ɯW<Fp`*|f\L=G(q|W (X<*4囹i9f^f< b oBVj9{φDzr@tjljyn!۸T9(2Y..r(N+5/$%1ˉ(\Db(JQu2fQG+|B& OӃ~؛Ұ'7I@(ငiNdPd%)XS$Y ImA5 ʬ[RITBw/%_^38~?F 9vQ?^6< ~hi F𽥎<m-Rԅmҷ 0F 3Cnp* XIPV^͂Da%!w iY$ Pǻf,u+Y:Jx]й^';VlԕWP)ym%i" zӃD*6w)1P'GP(2Ll957.qCqaJ8.QSuyF]aNl z8 *Rl3l2MOST5VD䡱|+eO:i9D˘x8m񵲽Lt*&4B3esH9}|cf+.SK1rR[0cWn_jtk-sF޹1֗9UctOmZ:fko2o4FhuEbװMG R)^O&CĐNVer1M#!ȋϥָt+3iXoj@πiYew i/od6]a ؐ-1@uE7¯NҬZu4񥫛VƝ-Ifvw * 31oE7%RɅ>6ȁξJtGR"}da*|257 $Km~(S% /74%8*h- Oheʧ#)T$|(F&".8SV뽯=b򡱿iě|4I0]TxuZ}&#<ҿLރgx]hÇg' Y,Y_}椾h%KT%|Eh=RHz+8}%~OE֬BM+R?ý\Vׅ ,q IY'r0v4~.p '(tx'Td6b]`;W&'r?9R\0p6 @P W8οۚ̄އpyIBkG 63Z8zɶ'M1ҤG2վW%6)pƺ1q*ٝ'}o;p9O3k] p2;LwDEKQ2q(K4ܭ@Bx٪Q +vv" iBc ?)tP%]JHp=C S٫r>ȫqN ^!MRNw=fZfB8= ^Q^@)Laٮf,J5YZM?y ?dܰqGQkČ/=NJtQM]X[Ϣ-n|\n=w`=镡.q>a5lR@dl%{dv Z wmiȟV`o?ZsRʍD0*9z#*u"):#Oq(&EC]Zv2Vm-yH_pmu R > "mvP5 XL>)*ls߉ $HE'f (]爮J Rǽ|$۷G1 0u BtPEU2z#qǾ*XF3(a 24]u$ ~}bpUmJ\ab+7J'TmuАYZ٫[@r:oh6&իF-4v_a {YQ@Pøb}jDv[$<2ɽJ=]|xjymCյ #pߍw6ƒaF#7vlcPAhvQZcZLh% ; ^$Jh6蝡̬?FfR/FRi;)Bqh.=˽8䙗}NLE#ۨ"tE7c3PG/Y p_[آZ^xêTɔ>Em/s9|G) FSO-PhOѥsq`n $}[ȅd !D,>g Kffpddu\ duTn |٘/LnG /ʳkw_ 50] -YŽwz"^Xy{Y +BD5m`hud" (UixB[C?P-f"Yv9+JN!dQ%bᢱSVm0PK soDfy}aIyv7 9}ŽayʼnM/LK/c96yѺL pU4c{x%Ւ%ZVVg+Pw0O M.+Nm$: ~J'̗w+y C_WVDzp5|uaP55GhՔ7QKYh¨J+@*y].7ٹmj.!KxWO#˿=2QnU@c W6uJt/f';wMM>P^Mʗ KXR3eN lo5VR^hTޠq֞H_٦z8B4}GpLkj{ў2 %A_ɭ_M#V/iRr ^eV8͎R\Q՘BuLN&ȴ4֩Izx!]ۨ^܈ν?u.r5.]u"{Kq3376 o{Qu$G)LgUFpg(y e0h6j8@~л$(:|>ƋnҸ%7<i$9۵uՋ3kq`ltGtlB2qfђr`m} (i J s 3r%pWfQF ňa]}U5}j!v0E\qc QQG}SF[|ZEēn,۩ !"&1 i*=1tE}$S lh34Y wSۈ>ނsIl.yFR>9GOvh\vm/H@-d41XɐܦQ֖1v=aiQ UY";yT3 W3>h R{̕ui/,# wz^Z߻nߍc4g4\q*T-6Ϯ|5 ۿj{< Y#ǐΎ%w3h]['v6 M,m}m"\4H 1Xa# (dz*НRlc &<)py ?Qm=ٰ[ &G_S՛J6 J9.~UI),5&~?h i(Q[GXUp\i ;ӛe. L[y4qKk:W)TiN8'vK%E =F= >D ` x0#YH =W](% Kʯt4& Z,-x9MWJ**r_ob;8]N2Wz""@-|`{ygh#KھiNQ#X?󼼉|+iXP>XjuC +bޱ%' kteEͷWwxϲʕ> stream xl&Ͷ.ܶy۶5ힶ۶m۶=m[Ӷm۸sGET,fʪ*rbq['w;fzf& 3\ hk#jdP71(Y,LLp[;wʈB1Pu\\\]2lbp27L" rTTLlL ΆV@# ф`j01+&G`bO`Y1!qy9 #񏻍#?&FNʎRK?33h0411 7IS[v' P!5kg++9k@/]([X?٘#=7@GqM#V78ɚӄ?3ƶ6Vw RR[VmN`k` &kc7.Yw6\~?1AE@^ol @g-|HWFn>UtxLsKۍT j?B\`-zbc laxgz%uJhۑ1Q{]O 64},:d^< Qg4^+02:͘?!jn1N  wؽM@޽!#l!@#k}aI9#[VbEkG^v'Fz ԭ/5L&.bGlgP3 A"yMVquH9a}j(QQQ=g[e$Nutpg?^FUצ?;ØK?8`T x,xcbu`(- ʀFlB=V)^Ï9Š;C1pԻV {.[C' (ƃnL+8V7⬋nJgЃWI[{p{K48 UKװ6d@HS027/{-Je8z/n@W2RSi~k-9&'$VQ=pQUL?ksu4)[ ͢e7B%&LIgWԉI>q0tJΉ\f7+ȱ`YrKd?؀|kTwOg 2OgߵP&,KB4q6cCUP杀іX]]SlٴOeD} N/ΤTuI.$sF_j9H)@٫ ne:o1knǏ rj =oҏ>QqouհFrJMDuAwUwA~~#:~;Dnݏ0.8O`7uEyN껮 󣼔rTvY$t q !sB3 E/&ݻ;+UOkdt%u8Xd8l"mt Iwb?ʃd fx8C)] kR*2"X 9<63X5⪋wnϲ9GRF4|d$E| KO˘=9$<9˭td$"cY@B<r0#kЪy©X[btNihʴXv G2pQIܓm㏪wk - ;.c zd30U=E/oM[6[$Mo/# Uz,)L`"uHgB^[IYqbPhpb&QLoaֽl)nl!\Qq=V|%XiGFmHIhGwX0?E6>xnk\5-'̱676_Us,ڊZF$x%RA? axT^\;Y~ZNBM?uris|vL:q ,aWNpT߿z Z-[lb@E lO,|<֬lfRE ;J+;ֹ8!a QΞ;-L8(ʿ?*A]f$eTKoDRğo 3D80/Bj 2j$o71?+/&2à_˃N6yzr3pQ6@<AcI PygMh"]"o?v>io:khH ZK{!Jf78 :~2X#ɀ.:ۃDiTsp@R+ L ~;KA&B4z};*NѮ^?0C J=d"08N@Zq>-N U 8]\fңP)[{`I ì#y;3v"tu9W>l5Oڜ5 Hp0Ӿˬ0vɱK`v<;MYMsp0.ŃjhNce&1#xZ BA*=BUm0ن&*duj}46dlU#΂I_|p G&fjx`I+ }x"fd`Q|zI$sW%X&k#kOUytMsuwO?v3vgdJ+y:~C2W:!iCp̙/~{H,_y1>?fDΒƵH9I,yB kH׭ߦ|]G0(nf0b1:Զ.Nfqb%%Qz#ʅv 2XmLYSo_*i7719T(Wn ?RDc%G^n33>U(( pžxNMIo{ځN¾wrCuVp ZiA<&@|ޫ=X RN} AO*VR2\AjgVJ͔ M Ih ug?{Ey>Ԕm ISu~k#wN &w/YP/㐦1u%=RuE"`677ؘ>*MǺJĀϒJ׀hibiV[~s8cG)Śe&ACIODtYIgoKI=*G5! nbFjwVnaLN$\UFd̈́+߼|\0-e^fW,q`NS0d|q"BϚ>?/?QKjީ&ѐCC{RT^@ b" CPg9Z26%>VZ ԀJj{OgNz kd҄́U#g@VԼ.QhRO2}EDž\i#`_nTgi'\;[>w*7۾瑫 [b9L:Kn.Ae QkRaQK3k`H"1x!I\j C]tةG[ e"xu3l1b#+ƘG̟)^| s<9>Js9t\^F}`ׂ՟7/co|u͔> <Fi/X12aT~b`ېkt7>J#FΒՓ$GܾԺH=<h]n2t(^.q hۖh>knf`qZ)'VǾ֦08+?Y8G$`~?0E,Ub:Q>K|7-$5_D FGɰ~gk=m&:QeNK$%@5?v{pS]:Uꛙ0NaGiT~A)w P_AHW~3]շudY_mŅ j+NJټ9&}[ǭlf@8^fq8R3SBrUJTՐ顓 5]k:硬%q_2?JA@` 6V In͈\RavlU ib9 KW ˗F[VPE 88(Mhr[983Aa¿rjFH<5ѢLZ[g| z8)eBwmt~E5zAtJ٥$&$B߻˰}@$^wNhT:⭆⩗9}ㄔ٦-|J$7גpSWy9-8* IC7>PQ!(OjW|=:؈LisP8 Hv'ȅ~=s,KF2+e>V j[cV=kaSݺyDK{ڶ5,96YnN>W6T9E~vC<` LI|mޣ^3v׎594B&ߕŚfe&4u @e6=Bb 4x yk:$P eccO9i*bW8$Q{F#[Fvs~ )w%< 6j h~.jzQNTyPQ01IX=ziZ\8a> 3ˬ|m|!c:5=8L»<,f#&Lwg&eShwF4+wfiދ5j#IP*'^36?ŋn@aW>x i]o3(nBo;U˖4‘JGO f>_DMf0R=wFz0kC-b *:*ɋʒS(ز`(lkIxu15 v*/WQ¥!=g,h0̠a(&D|qWhXޡfwbrn-kZg﯂n?נP@ W5O9GQ,$}%ҍ_|/tҳ{5*#dW + ͜Δy`ޜv!/d[~mT*r>7Ef-<T)e.K;꩟4)fW~JAc]!*Z1Ublf;ZI*Nm^|k"ctP$ةZ=݂8_`62%zd&!~ҥ0 4DXІU2~!Bzy΄Tɷ‹ <;% ); p.CF*4^DJKQܸ4OsEiPHTf;g%ÓpTewUgBDݮoϲW*g/ekP}mu!c A KFlS[ΧX9b|[q@"ǰ <(F_/B4w/"Gm0귳T@qJT~ۇRĤmN~Bn2 ?:AuU߷5ĥT֚^LBau{b.iq+U<|TtčAv9F' D DH06ANr,_>CqY?Sh0ٕrk{8(|PD*)cs̳[ 蠜Ma0-qd73.ޔ\bL>U Buybgz4ˋ/X2)r[98>`|\4'gzrx&g?έGdif_B8v)`,As޳-~8L ^EIy1R~ q섦.6's,m߄AS ;hn:+p+7S1w2GIdkD"z x1Rptk*C5Y'ZYV\@ Z{ o^.g8@@z!Z)\| Y1R,in)Jʳ"48z+T m3G j`ޓݡ6dO}cmL$޻R}4AQfC sXc'DjjxWĠbCj>0gzտJSi?ˮ핪b4q-?{- !-C7;aRsۅ Ni.InLJn haWH)pn+ t8y}y &aa)pVcxIju2u2DkZ2`7Y33ΐhU% ۲2-T>0 vޠ7?+.)WO [?W[."{,83#'ߔH7%_TzNE3L8+'$x~YGoST;%}tpV_xK=Ht~ȞW]cv;,6jBeJE&VMlh(Dce?5 k{BLVaW.: zyI d2?"2߱`/kalIDX\ xbi/f:~ z3|J߄JZ7hpAP]6s >6C\xW21ѦTr2 +| W{S{ {C -pUvق{;*1]1 $OD<ֱǴVaQp:XQtGysK!CQ:BngG4!$ڬp(*0O-\h*P+*0Y<D#g3o8uBA'H Zs];cu{j aZ,o[mۘ \O->t {Au PNU*]cQ(t|n K]4S)켺 M&}Pw]3R(o96&(j67Z ,P1~ ]dv͏(1Zb([|O{PtAX^?ZlB^eJ<A/xt,p 1)O O(ݹ)g d6iҋUJW#='`~hE؀Os-(JnOY֟2R#-f&8:~֙G?&ͅ FK9T|Xby/Qg5jD@dNaߜ,37 ʪ+ߜ }bZӡ.!)mX/Mt.c|+iz# ͦ8Fl6Uoe^CaMLI˘ Jcsw}YqdҸ2G}78=D|)?1Ǐ/x")CM#ziQ. cp+XG2!/.iѓ3N_~faIa.Z7w8]0LfRZk]bmA}8@dv{gK^%F~ZP;Ř+׫-IT|F]C=d}U.Q$6{֪C=TB,_d%<R̀k ~Ȥ !ӛv~.wD0`qvNz$64(3+W [$u0;F`s ,)nUy -p|F]NxG[8>)dr~x-S3oq00v(c]E1VH(ם+kƝifxZt&ٟU1Fy_zvĊ0[cR0-1%A!P]ufxο^zCO qgE>v^J#oLuh8G95 ܳN+( p`Dz;F-z PXy:Aa5jLXop=\2,Co+w:\w4gemeM#D}g?[O(<"Qf_~,nE.)=a£::A\$G5eZGf?'k8"]#\zj!4G m3êys#]Ej(C|$^0;0ɑ_>gy7Nk-R:-z,J_gǠ$/hO\;s<#VLp\3 }7Q O"(QB%:$ 9zF|RM k,2dciQ);tQbOg^ޤ!df Će~2 j{ Y(" 4пS%c)3KKm-_|z촹k&w4G2C lɺ=YzԊ`nA=<"P҅|% [ '#Y[=\.?^{0!Tί'7EJ^+^ >lYmw%rXD3[ I$n]5#,K$1MRFJ1Mk[ŴU\O %%V# S F>"SUG-cOO!QDV$yLSyF#nNy;,ƞ/Uyg mYTR1q @dSh#} 5d pEf=x+@eByQzGm2[Nѭ@y`89"Mڰ1"r끁4BX膫5<ض@\&~|"攘H kE7|UI ـg7ESkmgQ}W 5<mHL^OWn>+˶s%a!04B% O3ph&"H@W!Nak뻼Q>r&iK-1 U %>x%"eܺ ka@wr"Y?|F7-1 dB#2byh:T\{,'mdOʐޮ;^Tח?#(RpKp f.I!zDIu#D3釩yut6m1Lj)[ж·46µ6ZX`cײO gWS㘸eHϵu#w J vf/Ls Ąt.GȔ:ѽ7O\l^ףnwb@ iqb5Ac#1ȈiO.Z1xҋ`E0UvXV̰Gf{>i'CG@Z$HF)L츳8cJP6bF4= ɦ.{vǵ3\#m &ܵEwΞ9 lX޸Fc,X~ft.cw}]{EnI컚jaq5>A9]x_k( \$uszL@`{y^(n"/zw1Eږ2ZNLF 5y*+͠k iӑ VBݠ6b8̵N<$ Q*DmL,k6_W^3l i뽙FC62?FˇV[ʼ-Bcx)= ]Bwa"~Qtma/ :%.zO$܁hr2Εfb=kpFYukvԆu ^wj%Fvݤ;f&I&%up(Gak-̓i; RXB4890N"͢d동[6m,~2G#/<*v&i~zwR'8a sȲ4X"~iZ61ZP pu[hL*ʀx8BUӫ~&acmB2I?5l.P*i) ~/}džPwF,"aݶ xb4x_:130L G!uB?^6MqO'qlyP|fNR@ spx\orTۛ[-n1t!h5G%\#-8ۜg/=-."Ryxμz>>'Gp`4,1_l^g+f!ԏ'й)ץCV46Y($;h 4RydG0 9<,[GqdcabCȂTMyũ3;6^GE*fԜr$9 pbh䘲vA rdz~vk{d-'s sz;`WpX[*k'/ЁG=8{+:%Zlߛ@Ƒէ}cISs@@8_M?R :`GZpDNU'YYXTp8h~Wisړ"~<6]gv*sV=n+!'Q6poKh}&Pptokm B=CM{\7hump Jq nqmN=kHxZXx"e;&&ͲQ̊f3W˲\-MrX 2Y:"BYeMA"YDc ބp'ϿE{֟uA˩˪CG%di+8].A0(^J5GCiΫw:F\sl8QkN%k*wdso+_i8R=> rA#6g<7g)?<;UrݽMbZRSxpr;aa= w>WuRmJ#1//K@s;:AyN]+~dn'p_(4ނ|;*9*W4r4aM[0/bMkpWl&$vbCT,!)42 ,TqƟ#Ԝ+G)VTAkH(pxo GմxBXT 3aUJƋA=܎PMڧg!է)o J_ krjl\bC##|hiIXtýK7|Xt-Y[+;- n g؞ 18hc-;\?_},k0g!v_m{z{z(|?%9xL¶rh4Uq(6բDJ (R$iz,~Ҳmǵ,":|wWHݭOَ *F=,k˛p56'[Q n0SK#5Ɂ/0`MUBn~Ր"EgH9بDLZJU}S2B} YHS#&ƖZp}w" 8Vj@?)T}hݹ1z/ѻ]KNrNͬ?l^6{SP@Vӌ~2<4!U3"`iߴV4zFZA[ʁQa`\VGuagꖫh{BG$~kê. ~*AF!n-!Xkп`y]AmxKWICώAc% k+bL,?&΃66$D4%X"Q虇hS ^?S$]jo?s ;㧺5n XQBWfYT,2]{c ?z:(.߄xblqBQ"$iԥٔ*\!1_:eR#d"<F8484zj[!t$oG2?<{~ꤚԷz!4 >.,>YRnmSoJ-w +Ta\c0àm좸XCO!VGsq\MY߸,> mk{2EoMi݃3k%$2&o@꒛v|{C$Nf꺜s.&٩KݓJ(o/ PҗҜ;Zm7vd4XQFWV 4u[(rol İС+J=poO=C($V/.j%)d!$6ޤ䎅Mz "U)򜡙, y(/Ɏ mtQGq~Ts_ 9$ewNvn/8SӚJ7gF[5D:Gy=4#0PC \HVE@,Ӈ -Ɇ;=ɽz:F7C9*JWX8-h&h$Ѵ5lTiR ty{ʹw6.5clbcIsnVj9BT9?D|N:Ʋ8ۃy$I4gwM_Ϛ7p+se 5?a7TbNMz+&UX.gRLA'gk91. wB-B}onhc-2xIm'O37O.Zp`}ҏ)j,-Nw;=ND Kp܈w."qJeo0JS0%ᚯ;[/:sPɽo]5zKp#nɤxɻ3GޖAFG朜!c{C^Vjrjeiç&"M(KOcБmoS;7F@ޫ 4L,2I_8;" 5V wM xj㦘'^GX(e_@Ѓ b>jiFl('龶%h&9p7x$CrR X-}Vh~#ujl!mcļ["/ڝ/]w>/MzO*2tYԈ]PZum+Ioat{* +YĻmM[ 5`"(s&K$MR[3 & e3a)Lu]XdK3G{@L+c/ nJqqӋsbsxmUl纅a U UMOsCҪfAtAP 5FzCXc-qq yXLe8-7ڊK ~!%?bUKa YT_wvnϪUI /C+7~5ˆ%/*phc3gf&вKnD:o{2#^;VHE?体oou\2XL*`DqF0"3@jɦ]k:gycy3Yז,U^UsCA\Y] ]RLD HޜA)>}N>^XJWFb#)wե(2CC޲L[aPP~Mæb懧֒Zz9A]'읛FHѸk2 3wE(1ʩP(%0=n AhuR!B8F;KunqtlNC+?b|ѡ,^S[]K~a8fiGP5x_ͻ6 " @ү8n6ZI1"m6L,HmJk/ȡI7t>. BC\&(v1+$ G| g.S,̕pw^ku[TaNs/T55;7hqĖ\"6ks5HްUH"Er{g! N@T)>pA4fm-{PW{ \'mܿnY2I &Q7 n_Y9u ]XB3㞲TW[ y zT kPq鵭Њ*3[+? XOM'z&G̺F"ER){O%Rf㺞]ؽ_ vqi&b J2pTrS:\켃ՂC}|Rvph15QNF~ؕZЧC\,5^駼 4_̼>&% !k1I%ye.lw@nPmYfbԯq"fs"Ɛ.|y9VH I=zf74'x@.`2e̬aD|NGՖwC !jS/L9n5<3D$n=~%0Jv\Dv 7&y#7"}"D V{ ztt),fMϪ(*DDd fop*'KHîĔc *NMgPYT|ߑI=HswēaЧġ{#Vm*D&wb՞LFI/Al$E]tJOknq^d7ǥpUx ›0ڂy L2`F[==K 4hF}s᥺)I$lj%(&b\{ޙ.R:bgV!"?L۽8N(Ҙf_*0+3ێ}{K>d 3v;Sދ4_I~ҝجF6R ٧ּFC8zp%SvGwjD%#nU rӲÂl:W,dx[OɆ^əfab9=w3/'8ufrv 4F Tz)fT1G)Թ=w!OK)Blt8ܜ[j&WfBYݕWGF=ҩoQWRP<59rM/Ƌ&=tx8WgfE!1N;nIB3U hʠ8L+P!Tvvf@1 *pOvԺ r .V.n7LȿuQQ4,8YofiF.aS$o5I|ˤ:/^B5R!, -@&Er6nuzDO#X.r[D/jb;[eJx\¼>(B4wA_{_~4Z;F@ӝmV@ +eeȚ(Sc>,SiiӀęa@\!IXU_4zF#|dj2&lݴ@&JçTZ0l2ж'TsRa,AYmQn1>e{:%*D'94*}՘W[bvԏf>ڀ"*lؐ΋-* AR8lXV?E>Ʀ*$udB66iqtuqa/6=ҦCzW߅΀7Ѓ`a~rM ÔT͞* ( 3g Jl0;9Lv2:g\F7W$ݝ9ZQ2|N '1Z):jVχbԩ 9P4{ Ko7V(btvz 8ǡhhؘEv GxfS\eGShA/IOf`TQYvI8<lil@B ]lT>d=P͋KKGWzLOh4hsC,L9^0x.S/f<1KyOH9 6E0NPu66 )Z>(U MKD\S8RWP<)&f[$۱ +9IgVUWVUtAޠmk7 =yV֐l,/P!Yl,S]Bbb5kpH"s7Il㴖7@HX\>Ō2jZS)a$6 A+lJь@9BH6K}T!F3kv: V8JgN6UYk6SYG5X'VYגQ"^V{/$b-m=R =ī75;$:!`WIϏ?(x>(I84-m# "XȦ Rj7CT C-FuhTnrL<6 Q9ѩwD|)WJ'ACi{"J\rя'P[7w[/ňڵ-)%S:7Э endstream endobj 40 0 obj << /Length1 725 /Length2 36686 /Length3 0 /Length 37188 /Filter /FlateDecode >> stream xlc&M-\e˶mm۶mv6l۶5w}+8Ċ;vfȈlU<t \b** t0ddŽCg ;[Cg:P`ODCF(lghafLHiLo'#9! J9@(,))'NH).J(8Z*Y[XlTvlM,ɉl]:ʊ˩ ӫښHn7`$tem_Xt0&΄F3 [&ikjG?#! o RH(kgp%n=I5M?Ά5K?. '1 w_],ꀿU;[k߮=zy 9EuaQ[c; [3Be|:ﰂ? (e - %=to-!-3!#3; !35vqt:}Ob0kvi-E44ˌ+{n-MUfxw/w$ pǓSDد%$f ԰ln"3XrI9"3Fw#mǯ.<ڊSRdj}ijfC _@vnȰ +ô ,5$0DBɷ]+b6ﯘ 7uG!" ox7eo ?xT#㶞xY*;}"wg\_|u(")tEa`Fmrץe6&87WQ*,g71" ߝxwȄ!7L. Am6LlOdOCNڤ*߁ `mnnN)c̙M^I+l* `d>4g#ՏɄxji%XeCI܂*y<ť=Ƀꐓǂz1w/S`}˳&V #wJJȕE \`gXv/7nLf\vܹUa"( l̐2op#}#8ürF/SXY?Eg- ;% {ktg}&SH.?+LO{6^S0#"Y=Ҩ}6ZaH \xT a{ 4-86_qV ̒r] <SiqPn1wwaXNҊ(u%Znƙ])# ܣ?Qd?I\o)9υ7DĵM󑕜˃A/ g҆HA-xK.~@B{g11?Eab{`Uo53u)Q_vvmPxH]Ii?a^6Em'04}(-rF}GغF}x⽗)]"u*6Ī4 ̳&^PliD tLk(2ZMX!ys,!{" tx]U:*fIW5"BY ' K"Ky3穘Y]\;L P:-@QIqt0""e\ʪ3}uї/[NEv;fKvss;` ZddwZg`nQbJC=0SRH#Ԗ!O\^g]F7mKŒ!SIu=+aO4e8Bvb͞x1Iu;x5 [8_\d[r5//7MkXm""w }3Eb- է?gBQ?E}j h0+<+(୦#Ppʲ=_Y[Ad""ZvWD.єRI嶹)3rHzlc$zгa2Ku$NJl)ބMm[~ۅMۓNϥLHYy{s365%豗b:Zr>k./-q"% 菫܀mrZE5AhRG5dn?793ݰn>vĐ?4Ex}* AY4,փbKHtlȘz0|o$H?S%N Γ?tz2خZNz=ᶀ5 ,Kf,Rؖx3[_N?_= C$XVrPD¦ΧseqW?l"12ru{Ri|,Y"ύ~]4-eA'cZwv|KE>&a?\R5H poFJF]R6轲T2~`FgٚrԘZ-ؒ='`\Z6> wir>V>Td$=w=FT\_9 2}mB/^_ޤ:,o {T=tV6) eWNaextN2o|sN/W~xNQƺKs9D.liՄE<]5\lMCހDQtzSؔ֤ z~ wQku7s/.j3^`/2Yi&Fɻ#I;{cq.D C)6YLЧ.W[A[x:[W >(fHi> #Ϟ^&0n j=T-hFŸnsQ$w3XY#Ӣ\G~"FtK2-z!*wE *Q@gtڴ00Bl>F(-ŷۉiKZDQwV5Ya t%@+J˻4rm)qs;6 s#|TO7~YhHb~3lXrtb^p\(/I[meN]#$~ [G)9a[6\7LB~#MyPfhʎi{Y5*q=|%J(36,^ 쐌*6xOK,fч>2arS8r,fEϵ%>J—TkoBA-EY3uBi "s Bg*& }duqj $]/Eџ(>&[֧:TwCs.K.~~>Y΂̰ 4huDŽ;a;)[4D]'7czRp[ ml[1QP[ե %8nV$=GAv[!2ص1Hx#_͛Cf yF<,Ot<źW#⑉T ʧX^#P<07DK8VlJc \q,dO %joJ&F#HT ΀£oh͊Se7v qU/oȻij(&?}]폁]x\pj\9cHꞧ($3L|!8#ӇiJ%˰=Popy|#^MMZwtHh1X77{]P<0 d]+uQܜlm=g(ثӫ'ha ChRp ݫS-0|*FKhj9augAZ9?X;pn$Hƻe lr6 h`G[$":E;F׃ܡ*އ&X'/[Xڟ<7\M:VRpJ*vFiOFжDŜ2,o@Aq-f;AFqoUYT-HiҡNe-}^=!lpdvJ9P] J YG7l=_:DEgBAE+˝7Q÷=l#!y/O4 ftLK4g6rUUn\o9imOr$LL:y6ǯ߬YʯCq)+_oB""NNN5Nɍ ۟P} cWda,>|Y>91!9T^JND8gk3/  P6}Ѽq _/-J^B#jKjP,MoHVrQy~y"۶bOL7 (\[Yأ^OzneV9Q(T֚ep8tē/vΝ!soh?wwEI*7v17N,79%6'qk"E.+9C(+Zjˤn{JK<2 n0:nyвj9'0^PDeqcTU ^9\On S<"$uAXo MbTՀs\d㡘$BNapNC:'QS6[M\M@S.(X<)~[(.:1zbhI[)Gu>tds˜ECHίYH?846tM]SXUe`#!|*jg7e) {Ge!#o/26]o; ~C[uNqM bIz4r:tZˑUag4@)YBO4 P1\!Jy-[sPqො_̃.qLx)A*'GsrB⎾" =N#Eǐv 3c<]ePp2i^֣uN~sc nLڤ&Dχ0XQƿEٞǴҩK⟦vHO-C@(hhv")ad"dd_e" G?$ pv'kxڇ Uw%u񥫴3]*PXZ6MǾqCmDhKU@*S.SPD-جIU3KME[D>$5)-yK^oص{TԚ cw$\;v=uߟQдZVۨc{Y.r'΂a6 W֚@6T/PzaCT_4T>FsTǾ9_CHgn gm !pnh˰gQ_3;Ԥ+l:)x,J`*w[A`q4?IyPr$[XLEf oblt54m xױ1@| H!*O8$4UǮɓt7ͷ 5gQG=Π4a:4Qߝd9:k$*UfaE֘whl V\1'q&Wӽ灳/ |ͳ/iP*w,CڇS'Kb*bh#U8>9U!@Є dl͓ )|le"*C=03ykr@"xV !00**DAC3yh\\,UsrTz}-3PPsbMϢfS$8=#T&fqRҚGrѝ{e$R{F23>r+.%7.,Qv8B_$ѷ8~lzsHiJ[wg%K[R%uĥiƻg' B5 v#LN~Xv%ec&vd}]1{IڦX#n{FK bCZ7IÞoh2J)6@x]9Po}<*qg0nHDY\k@cMb.tl*HDXJ 0+~o΀:V_IרÆ,+`EWd@$"pa. p%a_4Ars!]Kvqƫ?F0~Ȋ#()^U E7w<h=1.rb -:nC;;T=]]@{uy#Dh|+Q"gL׼-R6)&D<R tWN!:̒d]9z8ȠWp7Kao7S;#%n x8 Q yLz*C`|yar n\WRU+jy2D#w;(5^z`sdH#v,2M1qo eoa6;3o*~;(󰕼zLyop;kó?%=ľ?ANDcCgQtvٳ,;ޯ+'|vj'v%7r+=!vEHt KX($XX;Z1 C}eB6]Yľ,+%fbg9p)Fbji+*Or"k?2BjHTJ8>~5ls~Mj7m+׼D2Uo %6I.Ӊl֒uX u4mͣZlġRDïj9P~ăyZ0*m~!1pyN1sco1-jU=UQ B:ED~/ETcZvXf &&:j)#.Y{w k+t{ Sl|3&-,2VRdvѽ%Ė=='I/dŚ|dOWEfXȵ +k{c">*LpE;QaCe5sC㊄GFԈZ`)(2xe$5ٯR7b-uM0RVH\Az>hQ.Sv1GZѪ-l-n|B{kD 2H!De=URx[,b'SnxQU=R]V0[ 3`IQ~'2ሏ_ g5 }(Q"F1fΛ lx*7V9fփ_PiU>WX gښM0b¼/X>*Ol/oKI!/*?>XBh L E/.1VN`",>)lAS9_l]k@PqF.ޑBlw1IL=UYA^nr݀ ݱiD,yY ff1]e[tePLO^ÖI}KqsvŸr>Iy G.ydg~´Q +=[֦gBdJ$`Z&)d7@qZߘJej#3hehFݪ`MA|§>W * ^n э.^1K [%+&ƮzXf##˂{J[-y9ʎ%yt,<\2Ѐ*g[O=ٳjtD0> :DW}c٣)[vg{FCbğvr jԎ˂_:Uu Ub9&?5/OAdnj5$01-'Ĝ|Oý$pxvi[n%@Dr }~xYo'WV? y:8Zq]+4Y{ۀ0 >Q@Y:ZoPΡ]\%AC.DxG)+eAdAP&&إU\ߎMM4+$P d=xÁU/.q( j!310y_\Y,j" g-tg;8_¨ hW >ע--+=6n{Jpˡ׺ zitOA"VD^!#F3FهEGB0UE4áڮdin[}b7.H;/_T&,/F5#Ji!BUx Sܥ-f̪?XORU>1ƛ?/OCZq4 OA{-e @D2\U1@ٙwY@p lF+Hǩ,~cڊE4 jBťvh(۬v}818l` ,9@-Vs0L8)-JiǴ"Ct˺&u1+4&l׸si1y͏2> o݃'61Td3}s]Q &=)$fUO HVC@WM 9;!JwF#xJ]"- #]ҞQG ^3gΜxl;4!D(¯ōda'v\jC7L; [grpPK(RKƃ*]ݸ77k;qlDsQ ;]FiQn `ǬfBv '?6Pz:[JbLX_yp'MUpGj#u`5: ,4'CшubB|V}>8BnwD@9Zdgx +U4fXJ&:(kS)R(h{ u&g)F8c?dC |:\1r19%t?ӭ%ׂݏۜQNYJp)N?\_~wv/]h#y-S"hVǙ `fҝY$9ۏbR<\L 6oZD`.+ϓC9oFш"i )1MmnXbZR~버GgɱԱw-;k݅YlyDkצ΢,!v|nV,0Su:j _л͓b"鎂h:;]3̓ l9$ӚzP:xC_= [wrzɼx@_!&4mP;y9c[{WQ Cp:gKyN%fl=Qɏ~Wg7>D"$Cx#hllrvK]!#톸MkgwڐE Qxpge 獘nMB"2j[A/-mm[pHrlips2}~:";zDh 3-v9Dm6UspOg G^skp˽c( S֔,Xm3#S0N ,[WRȧE|t7M)! _4g5 TIES~}`ˏ}wwD%iX@⟏Bc8;19HPY{a&[*p^nI%TeV05]qL ޴egMnEf/g:ơ߇QjZ]BB(;g3d *!*f M{m " wHƈ0a{#ਖ8tݢs PlQS5zՠ0ؑ竘=k9GŇţ3[^ cxO:- I3kG^@=UhJd#;_SIh5y&?q Ϸ-6h1&|{}@c)2d6Q񷏛LE$$dK:pu#ϟ-4qba'Z=8d}ۧG>r~LUO,@TlWjIǝ<:^ TmǑpx `AВ;=gAiMv05-^JvRG{ e tFf6ja2qdZ/P$MVu"txUd)t_j8^yb>bly*1a_ Y)^dzR٥t%c)\!hmq>e"n}eӏUZg/Ş= l{T1hאkɔT# ~ z.n/w͸CF^:dtϛ=ZXfw061+%.یzh5##?:62bOclY@$>v@mi!ݔ"  R!|ZGYe,\[bF}w)0@ϋ\8 (!._P26VvUd %r .Gܹv3x}]E019Da5]Fl}l5htƸ'K:D#ÌwI'hDwP`%йng9SK;+iI 㹖[a<)QB|nC&}2(-a~B^=!* ~ߠ/sa@Õr#xe`':& RnND$0 g I_Th驀KyZC3f럇T%!o<^?O쒡y(p# /"6#i>AJ\W&y<>li*B:; HŠ8 ӣ`:Ï_/Uu =Gr":w`~PTi'FPbplX$ڲ Uջ+^24 1jOemHW!Is9sEh96Rarl6#Ü kP_lE,?5crH3C;e]K˖X~ ӓ{">W1-M8xc,i2Rg1Ndx3Ɉt79B=iƀmm/ 276*Σq}Q@wv:isΖS h[3h(-]dӓnh# #^i\@J%qΐ-\ ZF;%dV[6Y`gVg8do)VȗG8VcLFѣ5k.Asov, Z ӾLSW#5-As/B9SPO6aҺ)3I&a}3^Q-ƥ>տLlZ>#I6G,0Օ[~+\mvɌ+4,'%@Fw[><%\%i\!v.nfV"c^#󸳧bLj/B!Vu4:. ܟ w"cEJ: :UϦ6'A  jj?G~p gxSX$ G}`.u6(GR]%e .GMND( ެF7UZVrz8Ձj!pΏh0`a }W/ ;[XX\oшskedh;sKW{ObQu %/Y4}lcY+5֙whe&Tޣ ka|%ݡyw]N=[+Հ\Ea()uaNT܎? G/\=z+ʤp{é+ǁ Hs\rsCr 7Ru}uFP3gy͊^Lb:bDH+g!ҕPôCf)hүrܱs5BHɒՊPsNr\~Mg]}ޑWD>i̜>K$4GVU袧 w?})9{74Wu,ZjVu #BGx`~ڡMH\Ȉ}HfDf4FRzQ2#NÿWqPEOL:eڔ-6#m JO js_us*w {J$2{f(J3/!Zz7u ?X9+`mF)5t/@\h Z& #$dubes,F{F!wa42\ 7: !)9p1d'-#@E!^S8;ִe"#o4恄MDwwo~| !VLA=HP XבL~-Q%z Kյ]k@XAP[1T)oTPBK*ڊLcYW/A#VoCM@00Ha*Bzc:31*گ̡U3?.iIٲe۶m۶m۶m)۶mt<EW@ay2Kfc2ԛj{i/<]&HJj]YJ)%RfO1 .g gtgZtwC9$' ::ɖX4{$BUJ w#n}XZ~{/$c`@#*徚zyNX%'~"°fmހoaSEV%Z"Hj>NP+z֐8.L }X`z*Do'H6ג]Ur3 ݆X0DV;oQxmc<.r~;);Ϣ*˯Hp1@+Sg~Z (.KdJdӛ"OB[8U]PʌzgG krS^^@I!(f9?Z%32cM^G2]m9:%Sڲl c_iߺbq3X1~WyNkzUKv& PKiϲ~vL ʋπ;x}Q!.8n0/ȈqDWX|$M1I0ǜٛBy4)!P)S3RH\] XFߓƩҐ[Ij_.\.њ,69Š(D{$9݉uB򓕿H/tH37qTl˝l6J+cG꼭_:"n&VQ Q!,- r g$؝+uw,@M+m0`<$t1 Fށ k VPWs MշIPe[Ÿgcy0M52Ot>#ՠ]yGtƥWCX/Gݓ7ޛA}`Hg1_mXo`oGeժ*жAʺ*Vq5a'{ݓ$KĤ3bIpte;?hY>ƽP*h~!' *GA+kc܄MPE:u#8kqS@y).Λ _`l*@,qIS@쥞$gpo6]/dSaex떂ITZqҭ!~!h4SܾKw(".!׉N& E`8LA?N[_h`oJYJ,C~/38>#jL*p1US>B΃ZR{̤3qBd&`Ł Ч̨e(Gr~$_ &9*C[tY67# |w0$04s<\ho5tDMزaC*?n7JAQ촞6PZ;.%UXO JqP4Dcy2˜H ȇGK-+ǹ!IвiW%H0Hѣ*/Lx'bv;vj5Ufܕ0FK%bGٛy|'G5>m|"@3K Ǻ~ĭat=K2rcK俔/sLw^ZYr0 \ġ!IFRx "zǃs5gK:zcZʄYO6mx:/{CSݬ.VDzi ~#xoy򒙲9!p3=k])!YcN&yBFUg(^QUS~g bkø vK!c-,6-Z8I Cm)ݾm< xq̌[){h!Z=rKl ڹa2MGP.3O?glJ}@&Ϋsy@nh2::^mZm@2h0J/w/d1QqшXܿڹZ,Gg9A2I.,)yE%+N|76 ȷ;(_cH#/EߢUYn*ŠzZrVЂ/.w GiiÕ 2mh9եxR7׮Ӫ64J ;Nt`!^k&:,ى0ioů^VEYPe{c=KOϯ a{^;-.ZVbl#Dz'1cwvuhčit 7_ )[Nn[~ʋǂc~aIJ;Ӎ]/Qp~,e{tk7NnH/'~w)*`CM}5R ҃7F QCu(Dr^SIhQ@1M嗖5h֭AuFaHU޲oC}ä"Y rm4бO\{ۂ( #gXd& 阜+oxV kF~@_P.->m2PNXm7%ʸR 5*.? >ëK3Yg5TɊ0^sCoUVV|'z0x  A3VOއnS|Y"YX.` ,yDdI_\| r}hB`- z|H?RU$"Z)@Jb b͆.e &܂5gYkAyٴ<i5MxmIu>qrN\U&fo7L&jY{F@z(51Ȍ0fLJG.yʙ#$OgɝY>3G A:&D-NA*\Ջnau@G-ބHB\{[xq[ _—2(ZkgAƍ:P҂ĥR<j[{_#^[4ɮ:"(N/ңrLbpD#ښָU\FۯkӢ˕&l &PH=R t W} ;G]M<;K07HHz2D;NE4$+ouH(g4+2nٓ_42w"W8B<0QҝWzȵi$w.D6!WŕٛA Am%kk-Ƀ*~ }Sބ0D~(}l#áwC6tDŽ7"EBL8EpeTWMy#ٟlUB0H@KHA/^rdRGoD}U\6^Xn{P.J $, @.Vua[}AǨQwY]Ӗ^5 $:Vk/qZNSn(6v}.MTKbFR8k՜yϔ`dxc%ͪVE!GչkjE0`Ya !Y|. CKc.坼?N*+flg=s,@A[B3z½X2ID.{f&&4 4Au('\'Y`Uk\9 \=TW])QSec y8y Cki +`0>Ǝ[, O[s߂xLVtkNU5WkcC/yzF`_g`"{M}Qf qEQvs_ PAj&!5jA+=vteBr\Ej!q/y:s*³\y|)w:{pLoXFٱ8rcd]7A# p$]w*@w'|z7hֿZV &b@?]Pp$J7iPsC^f5^!8 M툲O*Ϡ!"X䨒KDBUsvN>y9qe"SF\1:-*%%2v)3~ b'=q!h3㤄8=˨X~HTݝiK;0u @>=lrt_PWR>Z)ߕP57[_۱xw%yw0k9JQR +@2BC+W<10[R9UnӘk|_2:v߷ͣ0 `FOjycxk%;Lq YPI? ݢMSN)o"{mh݉0f&jG$#oY<>yQpSz%cNA'R NS|ٝ2'NVmFB4p֝6EY0 Jn+]o+W(tρ&!> Nn0MC`GS!x[B1g,ffC"/'vЦ&p׵tE=eMb-+y1y*[ozB6vQ-P/@ Plv8 qgOގB=i(돫行="HraaKsX\l Q\s51ERJ0Kj3uGFVW}9LSFckxOnjMOx#Uv-:Yap6]cY CG|r#ui Sr+)~uvUd8z`(mjvb9|5j2f+0>j8=[GN#]gQ+'G+59״R|ݽ .'H5uapRh[ NhH/E+k{ͯ~EyeY~-K{4&%vu?y9ިuz _d kJLW-⩨zw,/;G&) N̬>Mei}#| H 9ܫps_1B|~ j.PC//vi]FR6sD[Qz(A)BK"Iį"8!٩@£4^(,$~I1ב2Ө\RM׏kL]wk4TqʙA<Ԭz€;exY#~gHu@#0,?Uꖯ A~V?՝L%9#q-|H:Iod(ie X{0?a>ul&tQE Ĵ`H/cw呯j;|!S3B [7(WQ)FUدYd ̓0tV>fT-!Poǎ7;RNGM$d/`.GFxГ.f/.#GbnjNV OE'o.W|Qg˟Pܮ%WEęޓ2EUְPW(S?y*؆[AEExG,W7%\{""&*M>*kę}~oB􈘠ʴX0~SIe^{ܤ˽enX7Mh'`T&Lc4IӢqrO:a -FYfN]eZV<-$}#Z9'tHC+œq6"s# BX58q^ 0.o艀*1ӫ|r~47-CBzǗ9_d_"NYjbVAUl['m40mOqԝt@agjRLQdnzK4[ O2GsAS ErSm2Gy~%צ96g|<^S鶚X Z`1 Z\ܻgH&p&R;z]$4 [K{}CӫͲe614ũEF(X{zl/Ϝ/A},\ e440wT-ڋ ktRp2cUuF_#Gnɶ/^kTLmIܽ1ZЮO0u7(Q~WpC65.V +1AEl@4ǥсnag_k֪Z!!zL1!_+$\;򾛗ሺvAԬl~ŢuVn'%GB.^6e {}C%J;`1k60 6m2ુ&lIM /])PƷ-($ρ6iyv{oڢ~u_j`t3Bt V>3[P_)OIQoy/*K~G xRD,Q^]9*Y4,{P. 2;Vսq|Ze *5XM8+cڣEs|䳎*@=H) +$LEΝmӖ&\r^=cM}yH]R\XDc)ZQO?CV'9dF2U\$ `s3).ոEC\--OiK׻ߴW@FK>'Ƴ'Ѡ$8C'5}yӸ1,4()j$>U^ {>G)n[XF#\\u W&]@QIfw}7KKYcVU&6[Ko'k74it?u@c)9 &Zu$ZاdόMPf̓vq\VR1r]Gp7萢^$СP]i4zm@HAމ7yc`̽9&oV}PFo8k;0rEd֘9@Հ6NI?Ɉ Z`(de[gDo70_OSʦWǻrvt_;>Dͥq6 PAK(ZGz$j̯G b^ea8i M8F %weؤ0`?nKr4y`dP"=eh=n§bCfuc0T, 4z.:AT:(D54EϺF R ܵ hf`<3~tk}RUy9- xC߈7.pY'_1hӤ&Y(}:u47US)+NYx?-kY1OB AǠ@Zgp[X ?0#"!$=a;R!+[> xNF=MppUZ`,i6hrqN=e[`e5@v44`;x_BBÂlT@~;e0Yf rl 䧢?6,gqD< JY,mLɬtF$Ѓ`2RXwga_wJMdȖLZ[†;5}ܘx~4paV5N slLE"&‘WU RG#8XnH@|"S.>|iwh'l J]uO_x/Ko`hY U8)2N_ں\2zǔei8!e4\Ol{ EULBr!qba!)F_}wTH,a-;:rJWWjQ#5P:[Ygs}R>ɻψ_ > t>*q'kWEg \bx(! ț׌hd=fL!z䀎 " Ӊl5ƔynܗQ\TEWwh|s:p1n5Xj+K`m( 1`5¼4tk&,z2RfJבJ zoVBwSC>QU,U2C k4nc<:Ik^EcsXwLK8t לSgdBv9}e#]Tʀ6b;LdpS % a3KO̸Ƣ\J7kfѯYx.ޢK_XO+`bӐWٸfTr5=5o%B nͤ*:,#!`!VNxGau@Nk|+ ):tߺCPy@9O[nH\8|_) ;(QzD-Q Dg̸}>žK̚Z5I;#ɀYwp{r UP 5뢚'V0ʾ@l60 ^1e"=< 6m*| ˈdª306䋡%#Ƨ%nPu-S*_`{ez{-h=B:4ݩ%)VpT9T1v$xͽr:QC2|~'֭ 0N[* =zA8G1 @~O#0 8("QL 99u K6j7!ߏgY[7@_J0~`Nn 9?d |KqZ1 5Nr1|+ԙɞ":tjP$V4PsfFOT3+Ū)$E*HZ ; aycHBM 4R)I›;9.І{Elj)}I|{i ht!U\E8' +F/Š]NނUQ/U"IA&&}?*2P,i]7esuz0xskQ6CKA ,r!p[o_l X+x?&7,~Lm5lLЪ硗7~5zKVc )M]Cwł'2m/@<ɻ**Wn#z8P1_bЖ%LQG2 9J&Sk7 ;ɂմӖrjԥ͙6C~[ s ]bܜVfe{THQtBeHi *_ҏ tu/kr Dڶ(Kpv ; p($T4FV]V,"v' |?A~\K\Ly #\nfagsgXe*zȒ S OpA-ך a) &Ii3}sO=+`k^#k8ĉW9ΐA G.jg#EB F+W!Fr= ]i'!/ҡN"J8gv2jOVX6X}ilPpb ͫǕE-<eAw4j!?=Y0.:v7İvnPpE-q#cMn|t* A‘>OCTJd'J9h ԫjOfk5,^ m-H\]}7p#:+cpF&}eШ] xy3jf{)hvÙ@0]^ɰzK+;\)w;i~Y<1 ܐG_2ibB$ 1gxT*iTm\&|2:D(rG,Nz]bI@Y7 ɸv{a^maKeFčiH7iMt樟~${,NZ NjZS,gm$fbhTSbi_0TI,`/GQ:L Hy0v,"X&Qo6)ffDVTPaeHHz*؟&F/G1\oUA2טNs7@ZpD4VlA+MՓQOm[r+H Ē%yGj 30M}W*N f"{@;;v4]4t@WU)'\')̆f1iG}qbmt)zˌHs^`FFcx?;hcUFiCJ,"@#J^l c{ϸD\9yNP&eM6 {1@l+_RO: ACy ^?#|k2 --ZZ}hc$0>}PQ *y;+Nﯱb"SS^- }r[> zQ<"cGK }jԣgZ㒨Sk@ iSNmA.(M٨ri -pJTe`N"Q8b ~뒺 LPyg'|Z?Ukwˁo[E#"1IJJĽO騂})jH0#/ )P?*Ex~m.;PIg#~3: _Iuѥ{k_Hu+N0IyX%"nJW{0CPݢ:Gie rgE9n_$)1)NΤ9mI[HweZlK~f wJXDo{|q|կV cZr麆?j !!ws?n ~fQ AT,MO1sѣpTl5)+50'1T7ܡnܴxY[0^ 8T |>iq)BWǏ i~hÞ)]37Tu\)PL0汧 oaE Q['O;SZo!P4WV6ubYND_=&.y5:L0TI>gBuW@Ƕ*bWTr9yt`4{ Quύ0̇ wMA\!OZ[/<%kw \}0sVXIҍc"p˸ߴ+ E4^|`Θ%okԑs8vK.ĪH"+$:9c-6,zεZmB}U%0eV[{գE ~hQ\-8xPz5a_ 0*t f? /#1141*dDbXр.)t3lHhxLm)ӥiQpL@;B<l@_-p͸"- |~5ѷ~jZ&m܀Sal,$t[H eղ{NZ )J .8`Sof; Du4shi`5ó4$9H @Q &.C5eb:M뼥O>289mgx .Jc&ޝ<9ĺ2HުWjGh1;ՋS-^I롽 cb5fcy jȍoaeivްYߜquM]G굶]c!^F frB{I ktuIydW#PAu|a$ &մcP/KTmzdMlmbfT2`f<\4C1\vy)(򡦏~P.u9G!M!%h-L3bh[&"#] U%c/UަzY9I#;`2z oG@ys2ԏ(]xO9N=e^v"P\p-_kj %2[-/CKTâ>#wBĸRF} a߽f}4g1#e&bn3xy<ݕk훂,l^ǝau'r L:v2m:# ܤZַB{hlLM6yذMml42XZ:ۣ!c~V8 ]wGNToN{L0otU<=^ ޱEXwQ%YDnv+8=4\z"NN . ʇӥ6ӄ-5ȇBl_/!crʦ~I˚Nm.e؁6X蕚I/Pa>~{h[6讔p0j2>/F׮u6Dqg}$IwveAUi/l2K =m!KXEѓlkEN35VԢ9.^^zĕwFR6ÜԤqs.ږ\^"a/_ ۆVfOayRDE2+Dmݞc ǀ܁oaKO>HFE;!sxF%'V}.1׶А -VF2uWTP_/֘$Mu]>jΚ̓"Nŕ$ KZtQv'OetE~wj=F 'UtάYUq=2ɤ|bÖF&Ylw==(|7R1v'c62> stream x}UMo0+J! ᫊"Rj.RI73W3njNelܬ;WW\?pu4{SlY]jwOusR^u5sx0ZYs.G7fԝ_= S)E~ 2~}[4v "N'oGQ70j,#z7o;l,j'Ouc׿zr<:Q:XTߙOoGB ;ww ZԲWL)\]W|, MHS"#p #>y| #:##0)%V 55)FњSjR@J]!5w+>7+>S} u B|)W|FL| ,B/^ &+jRP׊C8ƒI\U E'j\2wAsGMMD>Nwq8"妋:9 endstream endobj 43 0 obj << /Length 866 /Filter /FlateDecode >> stream x}UMo0+J! ᫊"Rj.RI73W3njNelܬ;WW\?pu4{SlY]jwOusR^u5sx0ֳ0;]nL#;z,gS t;en>r8S0qj>w};B U5gѻ9x};a`TG?y:o&ߏE]&AjZu/?v_t|z;:ذfhkܸ_\zu \7g"NyOܵڿB`ilB =@ )U 9yI(J5<T` M55֜RhR 1ڟS(yq( buX& &q,1+N978Nsk`q8 ^8% FMq.5Sh@kO ׏p$q1/]}/ĩ»p^`D3F?x[a 1ec!/1g)cd?4dK^| МQV1Կ'1t?ƺ9Y?ГrYs֟'g)437YgD3\ib-z3zs ,>G|ZV|ƾ3ֵ33qgng3tZ[Yog,g[3 =L3z/gd ,gz)R؇O5_TTV *M2GZN(:pTy 8kn":qw{Y-7]%# endstream endobj 44 0 obj << /Length 867 /Filter /FlateDecode >> stream x}Un0CƆ"Rjn"73iwWU񛇱='$I}s=}}N=C'u]U;o_ϝ>'eP~&&O''3Hyڝ^ S)E~;en!jأc4qjz( 3F&Vݮ=Ɉ>8~;D>i|#7~_ga}>^=(-P7cjȨW1 kl֏Gsj4s&텻 \݄Wb MLS!"q #u!`Nȩ(( LFUjp49cIMh ,hPE4pbvŢ !\΀Ѹ 8!\=#2:x 1v9/8vӺuSqk4 "nXCI8'ľ&p 2<Wcǘ,_8Ϳ1bxb Ài',ymƌ&Q/kC^،1ۜ1q, Vu 3/d Ͷb l͘S&Ş c,Xu ֟_~CO` ?'>ψ:sh.Xgo\΄rYgBЏ>;gX|&}ggg݉gt3zw3|s3߉YX/gKzJrg^od ,gz)R؇O5_qTԼV j M2GFN(:pTy 8kn":qz~Y[rbtDn endstream endobj 45 0 obj << /Length 866 /Filter /FlateDecode >> stream x}UMo0+J! ᫊"Rjn" W3nj<4nV~ߝoGM?k]{7[7rSmtɛy=TCA:fzgdf)OS`)?>RTC)s}`ݵeDcc0qj~?t 3&TdDBmq`TG?9N CC? F`RޗS/~g> ilXcӷn<7,^e]׵͙Ssu_U4H6!L@@B@q\s *Cn!>_33/>?㓁EK!c?RMO #SZ1|8Gxp4aj9DQK.h ljeuOȢnE}MA endstream endobj 46 0 obj << /Length 866 /Filter /FlateDecode >> stream x}UMo0+J! ᫊"Rjn"B73W3njehܬ;WWU\8׺v=ߩonTtƓ7]ziTCA:fzg 4R㫧~R~J}6O7}w̭uזSIе(TPfw۷莛n˥?8ޛ`~?n8t/3NbV+պ};:5wɩƆ56}Χ]]₥+U9q~=W(_KdR$| 4hd52HHNsL FU*q8cMMh QEk%RWp gn~ȋCam `42W0A/c9^'-pʹ)pq[[i])9^W5js7 Gb_#xb~ ' ˏ1}cLu'No ޅ0&1Ie76Z cx-~`& y%Q?K'!/h],KV0d 1էM=Ռ3g1Y ~i?'?!>L9g)q:#eNC?lыѣc`83ֲ3#>w+>Cӊ݊͊T_|~+>Cg!>cB|/g)g{!>_|&~'a9K!B>,TGbPq> endobj 9 0 obj << /Type /ObjStm /N 30 /First 218 /Length 1755 /Filter /FlateDecode >> stream xYYo8~. C<@#BVm˕^~!eMVx o2&L8˄`z&rr̈́fZt\ &,3B1h9&3f]6T |sUsTujTX/ztPv=2~X~| McK,LS E? o,t)avѼ fSrc{KG^Cɗ?f¥%yo^j1CFïv כ,-2eG=mE cVzmde\%6{9xjqrY0Ǹ ޚ\8N鄢aA`to) *'FB q\"va=Gپ M1 YI`V^r(jAH>Qn1"$7^ e)a .TbiCH2JJ9_# cmҒ[M15d`ۣŴja&޸썣C AsvB&%D=ȣI7e;jYW78CϫOF&Itw쎢ZPHHeur?JwGxyj== 5siM/w?{ox?gg >C%S~mvZNy)y=-=)52MU'I0cST;ޝ6eɻ/5?VV~?f"'&20L}ǼD)5mo}w~&mVoNi @3hx'&ncypxI nBl8!]+nM)媛w5U|.QUud\>4cمXTzTb鼘z\IS($'eۆN+us69o EX~ŋKtt7g/)/IfnΓշ:a%>ϰ-L65ꊖ#qX4q\O&:C HAYN qٴ)/ـuWRG_ s!#qhF5E~ J1}D ! HDBd"g=Kx۸WHJ!\b1ĜopRf a>O/hxtKL&,ůIrhXQ'H(- 0+M_ǵaմfjܝ> g }U i6$NnkuZ  *9Sx ]Gh!W#7Gy!j ͒e{57UZ\҇s:I5j~]D-E |n>Dɷ7 endstream endobj 49 0 obj << /Type /XRef /Index [0 50] /Size 50 /W [1 3 1] /Root 47 0 R /Info 48 0 R /ID [ ] /Length 159 /Filter /FlateDecode >> stream x%MpJZ-'pq$.`c b!肍n~y/3 Ci&b" Ԧs-$¥U_$DOV3HE,D񲕄-ľ1$_K#rUY-q8GUtA>"W% endstream endobj startxref 123739 %%EOF survey/inst/doc/precalibrated.R0000644000176200001440000000337114424312432016260 0ustar liggesusers### R code from vignette source 'precalibrated.Rnw' ################################################### ### code chunk number 1: precalibrated.Rnw:16-19 ################################################### library(survey) data(api) dclus1 <- svydesign(id = ~dnum, weights = ~pw, data = apiclus1, fpc = ~fpc) ################################################### ### code chunk number 2: precalibrated.Rnw:24-28 ################################################### sum(weights(dclus1)) dim(apipop) dclus1<-update(dclus1, one=rep(1,nrow(dclus1))) svytotal(~one,dclus1) ################################################### ### code chunk number 3: precalibrated.Rnw:34-36 ################################################### cal_dclus1<-calibrate(dclus1, formula=~1, population=sum(weights(dclus1))) svytotal(~one,cal_dclus1) ################################################### ### code chunk number 4: precalibrated.Rnw:40-41 ################################################### summary(weights(cal_dclus1)/weights(dclus1)) ################################################### ### code chunk number 5: precalibrated.Rnw:45-50 ################################################### precal_dclus1<-svydesign(id = ~dnum, weights = ~pw, data = apiclus1, fpc = ~fpc, calibrate.formula=~1) precal_dclus1<-update(precal_dclus1, one=rep(1,nrow(dclus1))) svytotal(~one,precal_dclus1) ################################################### ### code chunk number 6: precalibrated.Rnw:55-64 ################################################### (enroll_t<-svytotal(~enroll, dclus1)) (enroll_m<-svymean(~enroll, dclus1)) SE(enroll_m) SE(enroll_t)/6194 (cenroll_t<-svytotal(~enroll, precal_dclus1)) (cenroll_m<-svymean(~enroll, precal_dclus1)) SE(cenroll_m) SE(cenroll_t)/6194 survey/inst/doc/domain.R0000644000176200001440000000441614424312424014730 0ustar liggesusers### R code from vignette source 'domain.Rnw' ################################################### ### code chunk number 1: domain.Rnw:29-34 ################################################### library(survey) data(fpc) dfpc<-svydesign(id=~psuid,strat=~stratid,weight=~weight,data=fpc,nest=TRUE) dsub<-subset(dfpc,x>4) svymean(~x,design=dsub) ################################################### ### code chunk number 2: domain.Rnw:41-42 ################################################### svyby(~x,~I(x>4),design=dfpc, svymean) ################################################### ### code chunk number 3: domain.Rnw:49-50 ################################################### summary(svyglm(x~I(x>4)+0,design=dfpc)) ################################################### ### code chunk number 4: domain.Rnw:57-58 ################################################### svyratio(~I(x*(x>4)),~as.numeric(x>4), dfpc) ################################################### ### code chunk number 5: domain.Rnw:76-84 ################################################### data(api) dclus1<-svydesign(id=~dnum, weights=~pw, data=apiclus1, fpc=~fpc) pop.totals<-c(`(Intercept)`=6194, stypeH=755, stypeM=1018) gclus1 <- calibrate(dclus1, ~stype+api99, c(pop.totals, api99=3914069)) svymean(~api00, subset(gclus1, comp.imp=="Yes")) svyratio(~I(api00*(comp.imp=="Yes")), ~as.numeric(comp.imp=="Yes"), gclus1) summary(svyglm(api00~comp.imp-1, gclus1)) ################################################### ### code chunk number 6: domain.Rnw:88-94 ################################################### data(mu284) dmu284<-svydesign(id=~id1+id2,fpc=~n1+n2, data=mu284) svymean(~y1, subset(dmu284,y1>40)) svyratio(~I(y1*(y1>40)),~as.numeric(y1>40),dmu284) summary(svyglm(y1~I(y1>40)+0,dmu284)) ################################################### ### code chunk number 7: domain.Rnw:100-108 ################################################### library("survival") data(nwtco) nwtco$incc2<-as.logical(with(nwtco, ifelse(rel | instit==2,1,rbinom(nrow(nwtco),1,.1)))) dccs8<-twophase(id=list(~seqno,~seqno), strata=list(NULL,~interaction(rel,stage,instit)), data=nwtco, subset=~incc2) svymean(~rel, subset(dccs8,age>36)) svyratio(~I(rel*as.numeric(age>36)), ~as.numeric(age>36), dccs8) summary(svyglm(rel~I(age>36)+0, dccs8)) survey/inst/doc/phase1.R0000644000176200001440000000367312242737227014656 0ustar liggesusers### R code from vignette source 'phase1.Rnw' ################################################### ### code chunk number 1: phase1.Rnw:82-105 ################################################### rei<-read.table(textConnection( " id N n.a h n.ah n.h sub y 1 1 300 20 1 12 5 TRUE 1 2 2 300 20 1 12 5 TRUE 2 3 3 300 20 1 12 5 TRUE 3 4 4 300 20 1 12 5 TRUE 4 5 5 300 20 1 12 5 TRUE 5 6 6 300 20 1 12 5 FALSE NA 7 7 300 20 1 12 5 FALSE NA 8 8 300 20 1 12 5 FALSE NA 9 9 300 20 1 12 5 FALSE NA 10 10 300 20 1 12 5 FALSE NA 11 11 300 20 1 12 5 FALSE NA 12 12 300 20 1 12 5 FALSE NA 13 13 300 20 2 8 3 TRUE 6 14 14 300 20 2 8 3 TRUE 7 15 15 300 20 2 8 3 TRUE 8 16 16 300 20 2 8 3 FALSE NA 17 17 300 20 2 8 3 FALSE NA 18 18 300 20 2 8 3 FALSE NA 19 19 300 20 2 8 3 FALSE NA 20 20 300 20 2 8 3 FALSE NA "), header=TRUE) ################################################### ### code chunk number 2: phase1.Rnw:109-113 ################################################### library(survey) des.rei <- twophase(id=list(~id,~id), strata=list(NULL,~h), fpc=list(~N,NULL), subset=~sub, data=rei) tot<- svytotal(~y, des.rei) ################################################### ### code chunk number 3: phase1.Rnw:117-124 ################################################### rei$w.ah <- rei$n.ah / rei$n.a a.rei <- aggregate(rei, by=list(rei$h), mean, na.rm=TRUE) a.rei$S.ysh <- tapply(rei$y, rei$h, var, na.rm=TRUE) a.rei$y.u <- sum(a.rei$w.ah * a.rei$y) a.rei$f<-with(a.rei, n.a/N) a.rei$delta.h<-with(a.rei, (1/n.h)*(n.a-n.ah)/(n.a-1)) Vphase1<-with(a.rei, sum(N*N*((1-f)/n.a)*( w.ah*(1-delta.h)*S.ysh+ ((n.a)/(n.a-1))*w.ah*(y-y.u)^2))) ################################################### ### code chunk number 4: phase1.Rnw:128-130 ################################################### Vphase1 attr(vcov(tot),"phases")$phase1 survey/inst/doc/survey.Rnw0000644000176200001440000000670611541475435015400 0ustar liggesusers\documentclass{article} \usepackage{url} %\VignetteIndexEntry{A survey analysis example} \usepackage{Sweave} \author{Thomas Lumley} \title{A survey analysis example} \begin{document} \maketitle This document provides a simple example analysis of a survey data set, a subsample from the California Academic Performance Index, an annual set of tests used to evaluate California schools. The API website, including the original data files are at \url{http://api.cde.ca.gov}. The subsample was generated as a teaching example by Academic Technology Services at UCLA and was obtained from \url{http://www.ats.ucla.edu/stat/stata/Library/svy_survey.htm}. We have a cluster sample in which 15 school districts were sampled and then all schools in each district. This is in the data frame \texttt{apiclus1}, loaded with \texttt{data(api)}. The two-stage sample is defined by the sampling unit (\texttt{dnum}) and the population size(\texttt{fpc}). Sampling weights are computed from the population sizes, but could be provided separately. <<>>= library(survey) data(api) dclus1 <- svydesign(id = ~dnum, weights = ~pw, data = apiclus1, fpc = ~fpc) @ The \texttt{svydesign} function returns an object containing the survey data and metadata. <<>>= summary(dclus1) @ We can compute summary statistics to estimate the mean, median, and quartiles of the Academic Performance Index in the year 2000, the number of elementary, middle, and high schools in the state, the total number of students, and the proportion who took the test. Each function takes a formula object describing the variables and a survey design object containing the data. <<>>= svymean(~api00, dclus1) svyquantile(~api00, dclus1, quantile=c(0.25,0.5,0.75), ci=TRUE) svytotal(~stype, dclus1) svytotal(~enroll, dclus1) svyratio(~api.stu,~enroll, dclus1) @ The ordinary R subsetting functions \verb'[' and \texttt{subset} work correctly on these survey objects, carrying along the metadata needed for valid standard errors. Here we compute the proportion of high school students who took the test <<>>= svyratio(~api.stu, ~enroll, design=subset(dclus1, stype=="H")) @ The warnings referred to in the output occured because several school districts have only one high school sampled, making the second stage standard error estimation unreliable. Specifying a large number of variables is made easier by the \texttt{make.formula} function <<>>= vars<-names(apiclus1)[c(12:13,16:23,27:37)] svymean(make.formula(vars),dclus1,na.rm=TRUE) @ Summary statistics for subsets can also be computed with \texttt{svyby}. Here we compute the average proportion of ``English language learners'' and of students eligible for subsidized school meals for elementary, middle, and high schools <<>>= svyby(~ell+meals, ~stype, design=dclus1, svymean) @ Regression models show that these socieconomic variables predict API score and whether the school achieved its API target <<>>= regmodel <- svyglm(api00~ell+meals,design=dclus1) logitmodel <- svyglm(I(sch.wide=="Yes")~ell+meals, design=dclus1, family=quasibinomial()) summary(regmodel) summary(logitmodel) @ We can calibrate the sampling using the statewide total for the previous year's API <<>>= gclus1 <- calibrate(dclus1, formula=~api99, population=c(6194, 3914069)) @ which improves estimation of some quantities <<>>= svymean(~api00, gclus1) svyquantile(~api00, gclus1, quantile=c(0.25,0.5,0.75), ci=TRUE) svytotal(~stype, gclus1) svytotal(~enroll, gclus1) svyratio(~api.stu,~enroll, gclus1) @ \end{document} survey/inst/doc/pps.R0000644000176200001440000000357214424312431014263 0ustar liggesusers### R code from vignette source 'pps.Rnw' ################################################### ### code chunk number 1: pps.Rnw:57-61 ################################################### library(survey) data(election) summary(election$p) summary(election_pps$p) ################################################### ### code chunk number 2: pps.Rnw:65-77 ################################################### ## Hajek type dpps_br<- svydesign(id=~1, fpc=~p, data=election_pps, pps="brewer") ## Horvitz-Thompson type dpps_ov<- svydesign(id=~1, fpc=~p, data=election_pps, pps="overton") dpps_hr<- svydesign(id=~1, fpc=~p, data=election_pps, pps=HR(sum(election$p^2)/40)) dpps_hr1<- svydesign(id=~1, fpc=~p, data=election_pps, pps=HR()) dpps_ht<- svydesign(id=~1, fpc=~p, data=election_pps, pps=ppsmat(election_jointprob)) ## Yates-Grundy type dpps_yg<- svydesign(id=~1, fpc=~p, data=election_pps, pps=ppsmat(election_jointprob),variance="YG") dpps_hryg<- svydesign(id=~1, fpc=~p, data=election_pps, pps=HR(sum(election$p^2)/40),variance="YG") ## The with-replacement approximation dppswr <-svydesign(id=~1, probs=~p, data=election_pps) ################################################### ### code chunk number 3: pps.Rnw:81-82 ################################################### show(image(dpps_ht)) ################################################### ### code chunk number 4: pps.Rnw:84-85 ################################################### show(image(dpps_ov)) ################################################### ### code chunk number 5: pps.Rnw:91-99 ################################################### svytotal(~Bush+Kerry+Nader, dpps_ht) svytotal(~Bush+Kerry+Nader, dpps_yg) svytotal(~Bush+Kerry+Nader, dpps_hr) svytotal(~Bush+Kerry+Nader, dpps_hryg) svytotal(~Bush+Kerry+Nader, dpps_hr1) svytotal(~Bush+Kerry+Nader, dpps_br) svytotal(~Bush+Kerry+Nader, dpps_ov) svytotal(~Bush+Kerry+Nader, dppswr) survey/inst/doc/epi.R0000644000176200001440000001157314424312427014243 0ustar liggesusers### R code from vignette source 'epi.Rnw' ################################################### ### code chunk number 1: epi.Rnw:45-61 ################################################### library(survey) load(system.file("doc","nwts.rda",package="survey")) nwtsnb<-nwts nwtsnb$case<-nwts$case-nwtsb$case nwtsnb$control<-nwts$control-nwtsb$control a<-rbind(nwtsb,nwtsnb) a$in.ccs<-rep(c(TRUE,FALSE),each=16) b<-rbind(a,a) b$rel<-rep(c(1,0),each=32) b$n<-ifelse(b$rel,b$case,b$control) index<-rep(1:64,b$n) nwt.exp<-b[index,c(1:3,6,7)] nwt.exp$id<-1:4088 ################################################### ### code chunk number 2: epi.Rnw:65-66 ################################################### glm(rel~factor(stage)*factor(histol), family=binomial, data=nwt.exp) ################################################### ### code chunk number 3: epi.Rnw:75-79 ################################################### dccs2<-twophase(id=list(~id,~id),subset=~in.ccs, strata=list(NULL,~interaction(instit,rel)),data=nwt.exp) summary(svyglm(rel~factor(stage)*factor(histol),family=binomial,design=dccs2)) ################################################### ### code chunk number 4: epi.Rnw:88-94 ################################################### dccs8<-twophase(id=list(~id,~id),subset=~in.ccs, strata=list(NULL,~interaction(instit,stage,rel)),data=nwt.exp) gccs8<-calibrate(dccs2,phase=2,formula=~interaction(instit,stage,rel)) summary(svyglm(rel~factor(stage)*factor(histol),family=binomial,design=dccs8)) summary(svyglm(rel~factor(stage)*factor(histol),family=binomial,design=gccs8)) ################################################### ### code chunk number 5: epi.Rnw:122-126 ################################################### library(survey) library(survival) data(nwtco) ntwco<-subset(nwtco, !is.na(edrel)) ################################################### ### code chunk number 6: epi.Rnw:130-131 ################################################### coxph(Surv(edrel, rel)~factor(stage)+factor(histol)+I(age/12),data=nwtco) ################################################### ### code chunk number 7: epi.Rnw:143-155 ################################################### (dcch<-twophase(id=list(~seqno,~seqno), strata=list(NULL,~rel), subset=~I(in.subcohort | rel), data=nwtco)) svycoxph(Surv(edrel,rel)~factor(stage)+factor(histol)+I(age/12), design=dcch) subcoh <- nwtco$in.subcohort selccoh <- with(nwtco, rel==1|subcoh==1) ccoh.data <- nwtco[selccoh,] ccoh.data$subcohort <- subcoh[selccoh] cch(Surv(edrel, rel) ~ factor(stage) + factor(histol) + I(age/12), data =ccoh.data, subcoh = ~subcohort, id=~seqno, cohort.size=4028, method="LinYing") ################################################### ### code chunk number 8: epi.Rnw:165-176 ################################################### nwtco$eventrec<-rep(0,nrow(nwtco)) nwtco.extra<-subset(nwtco, rel==1) nwtco.extra$eventrec<-1 nwtco.expd<-rbind(subset(nwtco,in.subcohort==1),nwtco.extra) nwtco.expd$stop<-with(nwtco.expd, ifelse(rel & !eventrec, edrel-0.001,edrel)) nwtco.expd$start<-with(nwtco.expd, ifelse(rel & eventrec, edrel-0.001, 0)) nwtco.expd$event<-with(nwtco.expd, ifelse(rel & eventrec, 1, 0)) nwtco.expd$pwts<-ifelse(nwtco.expd$event, 1, 1/with(nwtco,mean(in.subcohort | rel))) ################################################### ### code chunk number 9: epi.Rnw:185-189 ################################################### (dBarlow<-svydesign(id=~seqno+eventrec, strata=~in.subcohort+rel, data=nwtco.expd, weight=~pwts)) svycoxph(Surv(start,stop,event)~factor(stage)+factor(histol)+I(age/12), design=dBarlow) ################################################### ### code chunk number 10: epi.Rnw:194-197 ################################################### (dWacholder <- as.svrepdesign(dBarlow,type="bootstrap",replicates=500)) svycoxph(Surv(start,stop,event)~factor(stage)+factor(histol)+I(age/12), design=dWacholder) ################################################### ### code chunk number 11: epi.Rnw:209-217 ################################################### load(system.file("doc","nwtco-subcohort.rda",package="survey")) nwtco$subcohort<-subcohort d_BorganII <- twophase(id=list(~seqno,~seqno), strata=list(NULL,~interaction(instit,rel)), data=nwtco, subset=~I(rel |subcohort)) (b2<-svycoxph(Surv(edrel,rel)~factor(stage)+factor(histol)+I(age/12), design=d_BorganII)) ################################################### ### code chunk number 12: epi.Rnw:222-225 ################################################### d_BorganIIps <- calibrate(d_BorganII, phase=2, formula=~age+interaction(instit,rel,stage)) svycoxph(Surv(edrel,rel)~factor(stage)+factor(histol)+I(age/12), design=d_BorganIIps) survey/inst/doc/domain.pdf0000644000176200001440000045202114424312424015277 0ustar liggesusers%PDF-1.5 % 3 0 obj << /Length 1771 /Filter /FlateDecode >> stream xڕˎ6Q ؊E-RԽ遖[r^;i%ڴ'yqO7o+Y,EWLT,d2"U]ەgfʊֶ]n6D?6s3LWByJi8Wj6>;?!J$U*ӄYDjMLbYjǹEmLTƙ3&-g* ]ݹmjo/o%$M𔲂 }So7@ *di\kXHI*nwA>3rPYU}$*[u$myX}%k ؠ}2{:|r.HXC\̂o6dHv՞(M$9uH?fnfc"tr4+$ǙʆT~@ں?tCI𤢢n_tt``O2Pv=ՄTGms͞.} j[4rB jZji[xm0iZmp,5Ү-=Rfr*g3S5aL(SwX%hO9&CĮ[ x'76`[v{,7-O*HR1kA~VRTfmyz|Mƒ\YRj)&.!%5|_;{zꯍd';;Nvt+t`,!.$4e݇`@ AJdڪ횾R !V@_nȫpn "I,z@fo۔ I ,6v RQ P^i5T>n@m Q.-B'餓]Oot[2Zi$@Ȩlr[c/ -W;Պ;|kQ% hLbI_0WlcM,MIkڼ#5mP+ևPJThd8н2O F3+luEh5C§E#dy,M!Śb}]K|&D2)#y ֖bj?~{d{BKkSBdKm+6zvL$I^6!D%ggJOC 5!ڕUS,0a zlD}6#>{UqJ+=cqIukqJoibyp88m͏f$S;f"K0 rpB d-s(i j*Nx̛훿2 endstream endobj 15 0 obj << /Length 1505 /Filter /FlateDecode >> stream xڭWmo6_oӘDI $%mo(-QVC߾;iˉ>$"֯EƲ$LrpD.XNjuû\04c_oW{xW|7ytu^.G -\UDXAJɺ~b'8*kIh.y{Em@ iK0'Bv8B ߩ)*N>XVz9(4$+y> /I 7~=*}zïWzsW1ZSeYjM B?=JU#E #\W}Dd=Z_zt/?\-WA,"3D| |_pb/Y\Pl _Rh^2/aA8a8.WխVJFG-G'8P_0gGQ.$v $<+S:7; V]֕lzOYYwc"dq,^HŸfu%}+ |w}ҦXR]3S!|Z"EF))ZGe=6a ^^K+5m Ww8!4]#+l+Ei-a}zJt>`9j:X0;#6:B1uC|ÝD6ZGU>S ˶o&{D`ۮw"xDF@Bɏ(#JnQr;Yr؅iۛì 5Lw(5k(4 sUo)McԞ .[H7A2 t!뜓S}A&eŸQnFS'9{Ȧ훫ePFЃ0feAES:$L#mvjRTA =SOa0QXtL{< ~?V]a>/v73&^ 0ٛ%6@) M4jnj40- =cB6KvWWV+ݻ\sj aDۨNQs$ S6W$еV\lISON9Ӳ'?>HaxTy1!"~6 wx:-x:2FXju咂I8 zܓ5֙1OZ;^o5;~##L&wb0E#I䬱 9x=;2߶#kvKds֊.]u,MOƅ\B@LΣԎ3aC5*&y #~~<+Iwq幂Gԭ2?aK23Jd N0(8iD;NMZ5&L+[%0NU?{ tn9'v"E#Nel׍U܍[GCIE񽒅|XEU OŊ5fT}u~4 endstream endobj 19 0 obj << /Length 1199 /Filter /FlateDecode >> stream xڵVKo6W{Y9"%D]_@Zr>dKXp87Ù4p%! G104Bħi6Ù.$jB.1ݛxY#B OzN>9k)F3+s& #9+~㿦\$QB-4 Ʈ1Ls13GEנbƍof~||P\px +b1.%XAV ٵZ[Wn3.;BYˊu~m6\,Lw:@hVž &5F|֍Nۿ&Eq:*jOpbr&p*֟*nޢcVy~\xG; 0j]86 L @Չ(S!CtRjHQ|^jmk{]6;i8HP䅺S.׻ԁ/"--Ior02A%+1 &,|yuK]Q_7ݦ3{oz^p/;Q+B{6fmŃy!+^K=,WQV.ZJb5X [qcߜ{BD}Y/-k,[ӬE0 L-oov3w[tFM+cTوfij~P @y^4xOiY+ O"W"#z.UA2lF3wo atv] ?w8o endstream endobj 23 0 obj << /Length 1174 /Filter /FlateDecode >> stream xVn8}WEȩ%J:^EP,}.Zmbur}g4-%J>-r83CYt#I 'ՄQ0 `H'XE&˩ㅞ.>Ne1MY=:X"baLCθM {\<"+Z6xѕpagfj yDQ"gQl∄]Yi.>02 $CKfH)Z5$&+R6^6'=ob'Yh|eA/s2zqLp9-ZR7pس =c8ǘ˱;EZUu%aSz]|xDnG=/(}@M۳7~ 3"Tj0* 6CͲSLe#a *[T8YC^ ˻&e㺮 }d3jטStO`X`s,gxw e0+@Dq5G (|Ђ=)x<f|78VL qN!K{wn Qv3XQdh~Os#e2noJoZe9gMf ;4+Y|OWfči5K o=fӮXv}oN|T*,K}iӵ/X,k ΢<YW9ۍ,yg mT֘(JU8$]L#U TD=>3,[ \\'a[4S4k, }m&kMXg? FӍ2ِ^京4lh70A7ղ6 !TNozuЦ|ln8muު2IDfZDpdnFrvdVJ(G3{6*u8@cc:WQ> stream xU]o0}m- @VںT4MS=mZ)R>;$!#^@~12y#Qz&(7[x{zАB7Mvi.j~GESrg(lFJv/^+b%O}B2x!(N*DqySޚCۣ髭 I7ECADPi,R#yTq0N`BH&;9s0]VW4ٲ?i@{kuGL7,ǽC ZUm!nxݝ8\S)\BwzCAͽbpԺ1{Mp==EA{0vEgmc.r,nqSFC&sOrE6 'J @쉗3l򮟛罄T9ĕLp%vqEv$BQޅ" ƕA;?*+ij{F]鞘$Bqmv,A >!e5M81`&ޛ.*buގ: 7Lv}z-5W2p/6XVkɝa+Ynῄf'K[;浒%,e?E+= +?,Cc(fZMfg3 endstream endobj 38 0 obj << /Length1 1407 /Length2 6415 /Length3 0 /Length 7374 /Filter /FlateDecode >> stream xڍwT6t*R%*pIh{BPD:HwP.Mt Eҋ˹k}Z;3̞yzq[ϐ_i SA"`@Q[[ @B OaCcH 0S`q@m$E%$@ $7(AvmÐq("Q^h#ߏ.(7,.~W:@C!6sŭ P8 \RX,Jbhn>0a`hw+hd#G8wia!0;[`EZ|? UOBpįdtEA^ph `=|'A! :"&3 ep۬SDX h^?@z |;c=Dp0u?> '$&`PGP_AO7n?Ǎp?d>; E?g C[A87;4` 0;$_G T40RWS3 HO _Pp~?rHb?m=!pYL. o[D@P_)?2;Ry+!p?ubq2FĀo)vavUBprG8( 1*pO uM~㟂s#`zH +Sw`p`p:ȟ6 '"~OPDA!^dY"0Nv0_H,.`DG,w&))ܒ(EFSu9rPU!كLFhN{gUY=f~5}?XDdєj?!KZ蟣f}= K,Ϣ$L\i2R,[UZmi5:ۖR:9ڤǀ?{R2Qvyl}2GLY5C5fƻF~ 寪4Ue^-?'.s\㦂bF2%s!-fBB O}}/쵷+pθUF#bibj|oꠙ1ˇ˖Z}bޭ"_b[Q! -w^̮tG*O+)x~Hي'D^s}!Cy>ӻ!i2 _fLKnP]lZ_#8B(<$hR=5g4R>|e=#_]dePͻz%jsn5n~RhTL9-"rNw37)YL%73fآG ĭVt ~ݏNFϞ}'ۖ6W-VSQSw31"ڹK'ylpg5\%$)BQo$a*\dO~$3ĢdXWS뒘._)/{x?Ju&UpV\{3ZvR?4QɃġ@eǝkjntj%7?K4N:^h#F/aƽ?0WrBlþlJufy T c\}P_oD;@M|){QOVR/ 55`-msr^H N_= k 2,7e[L64o3;CB 3hҧyiƸ9Z?Jv{VѠEav 㭼m.25naB=a##[-?̰3g#i}'E~DeH{blM'X7pSGbPp3A1#zQڵB?v#3cEwĐbp2)CQ,ޥ{mz^~ 65w̽qkuC,E1T[e dUG=:% HZ_r{=҂539gF`([c? Hn)?'(?o|p}#,л-m-]AH4^\ II00ʜ7: ~( %f$sU /rm~S9vn}ٜכ\RVk܂u_SZ:iH `J/b;cQ*E%˟{O|ʹj׮#yg5ӟh$z~QQz@E_I&WQNţ>v' 9M%<֗gbQN/:{7=xEƳ6o-N~O,^cwNneɔ/H}kR+۷ޝIV #Jg)d~}2N)cW~ǽxsHhvaqx:>W̔d=_kDӗV?lq;Wf7Il0V7=U/H(t²Du\Q3k}O f2:ا}p :ռH‡R ݉Sp ;7V/ϸnmx i㞴܂n2~BqQfSCT3ѓ~6*iKU)jJR*ù#.{IYy(2z_ B, PmKжBѭCʎ7CK6+rѷ3rZtK,gJʿx^K+0&#_~Yl&.PWkl)̈́#S!uDʖA%tmD>L9lcFohv\C?WӜM_B^yI: O[QMR~k6J5 Qu濎/y3NDmJQY/42 0Jht%[p.Eq̋sҪt$sfc@%I@$a!fz&m=\ #[>mq]:XYP*Yd݋,D[ O='QBx?.w &)@ɓH6A&0XN(]Km{C1HAwa! ~^nhn~41 \i9&/,17B !O*V?،,&Ōsg!i3ۓTdD`Ʊ.IV4Z^JXN`U~G/ ICw>o\$7;K*wmZ V]9\AY̧d%=EaMuY Gw'js_Y\e&Ku7UL۱,>/[RDžM}ԯ 7Ե腁ڬUwmDz bO6lORs򛯐3DޒȾ:葷=C43=` I}IF4D; uM50߳}ʏ2ɯaFAƶuoq/_RIŒJ{FP|(^L:M_ bxlAeE'i1Ǣ$N 3+b!֔_%{)LwXM\zpS,QC ^LFP纗\cA@"P4$0;DIw;DsaG>ltvyB$ sWlle0*wkٓ\z?=wt~UzC3+s񿻚L.rke:D?rVSvpU- =^,5`n-XBj{TK*qC "1PYt.E$|q=`diW{%뙬RG3|ZTWC댮R罹Ϲd:e 7^BA`BLbTǖt Pѽbf.vcVqX S/6: 4TսHxGSū0u֞P?F=+'R~|6E􁨷V,nbeF^=7QV}m19 i\ڄ~dLD=ج|ALS+v$r߻4 \ȴwjfmkǏIbD3[Zɜ[3+ϊdb"5)΄&,H=.f"긁- 21 cC&Jbϟ;T7>3;˾Ιe\0Fv ÂvU[}X@ȻMݵ+\2<çeE"[7vZ|D+< 4]_apCjUiBHb%2DDFvRWĐJ~fAp. +/jNٽMcEFZ%cĀm%S ;|gFc/ÿ&_QKC/My .U%_Sm"$QMOLaXL>c~*ڎT"|#hyϓs0BOE઻kfV RK? sܠ%uQN&?|6qXHy5qoN? v.dRqC"ɅWV-'%zgg»8x<3r}@E1k}.)&BFϮrhz3zI!%& !7zg7 /9Fk݉u||9fcV3xir,e07(Vr\{YwrVH D Fr؅L bFux7|Agj I8x:k5W;Iu;ߨ+w}֯SrB]O.׾|t%<\UQPM[Ck5!ŞG)2~D-O42*zx>'Z&\epv' nKoN;a} Dz7C+LmoxN39_[xHJbWV"TOߘtCԌ[B:wR/'4dQbpY>*+cROM endstream endobj 40 0 obj << /Length1 1400 /Length2 6204 /Length3 0 /Length 7157 /Filter /FlateDecode >> stream xڍt4ڶ%":5-{1 HD"JԄBAD ^훔s5ku=lJHG(@ e]#0 ,,*(,,BiCáԤfP7 T!h.h(I "rDdU/7) 3suCcq@Ғ%( A{#`Pt?Rȹў2BB~~~oA$U#7 u~6 A<;$L`޿H 8 F ({9`{Bu~;fAN'g"W0 A :h4?A8tx/8b~UJP0O7 EiSVC8 =<7Ta(vB7{C\`gM8x "`^>PM?.X:W(^MgzO/#AH'p6 @A_(F@COaNh CGka,@߿OXx9#WHln۔@0 ". ~L{gOpAҿŎ_r̥Ģ raqa'f@}_f_ 8`A@]͡I uxU A a`?vrzӟ,P7`W_6,bo,$XJ5'D%  .+A ,@  "hlm/pAHnTA|sǪiĤ!s,BQ_Ba %:u"F:FGU'}gs@ɵ+xKϠu4]\PWg=ZPq%&ɰ4>otsOһVf&s`p?iqfzH]3Ȧ>kQ׊|0d\*Mv7}hf31}-L|jǟbp`U%ViFh^լȣ"FF+f}> d-ϣX_?.*Z 3CT5vՃ37?S/&TأiKkew̫.Suf.ϙƥ]naՍA^S_> >x^sQe1B趚uL*sB Is!$J.w\aa+)fN-B+wg)G~Tz29=JUk+k1l9r0#3[L'Z8/>#OLSyi#~tYiCō8v刨Be;5N_rǣ9Ȭ^5x맨+>\j&qiQBW3?~*'wޘn\tj^30ED?\M>3myǎ*7oe iZ`ڷ/y#R Ȋ?L'p,ܛ0%zOb,u3tf@֕4@nwڴNpR|` ;%64rQwl,q9fTbL.I<{ﯞeh+2qV94mTG:%叅P^.QV)q䆸i'76Ub)䦜UEQ*H8RՍp5I=(#n۰>41t3i/N5;Xc1HCdd}˥ S.j<+GӦ;v3#gˆ++߾MU`tPؓL^#$~V'o 'b޻9 HP4U!@ 0 _sbᴙYeN?Ԭ~S ]]cWE}$f5xW^/E?M7fOE;b񑔅9`Z6f}%ӵj$YAhWGQ bF.NקчZ)>{E"- >)у_~MD^w);F%G)/מ9Wb.G=-?ND&~82lTSs{EYWtKn"-̄+Q,q&h <<=l l)A77='b4% n_)|V=D2kģƧf0y~$Bx׏@`}mizQ7;܉qx~%+i&Ie9@M$KLXYGhYC%NQPʙ9L˖}m U3jA% 2E&R6,ڛ9*]j#u쩇S\0%|$X]+,xAg+ֳqY `D;ҫju>eQtYJDB7iɗ@ F͔+3>!4n1gmO6X o|4H\CD޺,maf)oD1) T[Iu'A7O]%Doh@|Mh߾lUbYl*}@6h I^l(Jjf&;U3pD_P?c_'%U8 ;mI鋄zGpkIccq[*f(y1DDP(=eW3H(q-0JqJ0NF # ,6/᫧Z.)͡JRu9KFk<Wi,t?RRb )t͵Ryd4R=֍c>޻Ր- \0Ҿ}H3n4J*i % ܵ0?)cүz*Z8=s[z nLSd)l, e$=mr,IJ&Wh^O~HVd WY[7"j%Iwn TL _K''Y|%kKJ= mpĎT&ķ{t:9\,Ag1T:35bI?@/8BQJ[h>"fo)8⽿LqT J&#fSQa w"4zͲ,L ur6x!gsP=ʥ#N}5ý |.msʁ%__=!;XGLmn$&8A<7vHr Lb`l{{+c8Ryx(59ݗMx*թu}#0LoW*d'Yi[R*;[>Ӱa(&:%wl:Ic, PV"]C;a];e3xD.:*$@sRpŸ@1_S XLP+YwK38Jbhᒐ$946ybt\qX ,ݿgC,L}8tqQaS3}<7Hқ#:T5ܣ/xӢhO&. 6ɏf}^2oJ.%2. K"80աJ!{A GX+Y.qOgY0+ÈAdd8&wѽkN%Dt&9uvdn]+!gUՖ-vda#]mlq]XɮFw&kUf]+E1vC1."ip\mwŤbt0Pkp9n.c"N՛[# `8/sC &<6ma! \cg2_^CBVh!3laDCqIKOj#s_6A*.&1x+d]UawŭkvK}SU^R]wΊU*F؟ʇx-`\8O[qmuF?kȊ,jE]XR|šw?moSY1<wfb?$)) `@05n=փo|.W#)[L ~I#nzEh$_ֹ_ylp vciHT6izWkJ{{'5 i:mنsw#hvx2fgq[B},֥ݱ;2rn4n@Xn^ \@"Bܿ]P<͉] i X6Ox%e 0kpg_W6Y=tsN|&쭩O߯lH;|ne._%o~:2N?Ɣ.okd pf_\3IT5v^m|]٩#/{t{%&Jo~K@mmq:ŏD>˞S>jo ~ckmf5a,yaܒip}LiU*_ŗTTw8$|ˍoXRukDXTP00? 7mEPuWE3AVc+HUC(Wrnu1#栳fZCkj,(Bިb?+0I|j"K>P}0p;$f`> |2oFM}r AK醢펲w`)7'8Z Wd_n1̦Ûm~ ~XiO?G_^^禆ڔ6jj vemP0Toӯ]]1h.+u5& (ZxBp 1aK/䜟,JZWG!%Y!2i`G߆(zrN1=}c|iFpEbe[t"u M2֔ȕ33Sҷ5C*m؃FiEM?YwFU{#Eq4/ďdǕ:+נ̬1nW꼑I%/F-cN@!9-:CԱy2a.!7MJۏwDZ0& [sM:J|GR̴K1vvLL]-i+`mf %٭yf6I鋳T i9F & N|e$z"c2؛[޹M-9M>LZcC7[=G=UrT B*J|RtǦiݸ-82egdUQhk<ߩ-2ګa H_ʲih!P,Vh>R㭧;^.YJD^p Y糅|ݚPGyf(YD6mkaQP&h=᳐v~V'{6ERSK^CzN;\M$2H4S'~ø^~J|< HѾ|szex ImCo\Z>apUk=!yB4N[,tR_dtYa(/xHȸ %],pD?1Bpګt'iHkNZe'=f,^d[8K+;Fz7£(Yv f˒e0:=Uaơ}9gYE%W>Γ fЬ:NwbEmπ?u]I9l#OtŚ?"\#FIEXZyP|N3o6d&SU26-h4; U޹I7{W}mքD۝ktڭ+vhr} endstream endobj 42 0 obj << /Length1 727 /Length2 11030 /Length3 0 /Length 11603 /Filter /FlateDecode >> stream xmxspfuLlNl۶7m۶mv2I&7w9nWzWwWMF$fgadec( i0210Ȅv"@.: 02Bvf c5kC  G9UɅх!e lZX r q9U8hh Pp10XmS;Gſ89C @VTEPL^N *L" 05H=n 46rWw4Zֆk7o`ba 0YK7I[S;ۿ&.I%⯆_ @!lgc tڙmBv&Qwg ?hC k/Ά5 ÿCNb@ 習Zꟸ:B>zZ{OS^RRE]AcOZ WQCGI+Z{C?3`__@!aKQBBv^LLZfF6#' 5vqt:#^3N@;n}Θ;25Wg%$YUFՙkmasK;|7#޽]ɻb8 ¯hpJ3Włp+5c9[猍@iߵRe(;k┺?P3>5?C p +´ ;1o2SۀE2kvvdϔU~oA)ίE\n߷kRݞE.jIc&pஐH\d8)u)-jS' , rb?vZ)(qu%?8[k GֽE1"W a5Ί^*%"kjAp]@#1oڙ9^t i Y[s%B*}G\9]=lBboN4>{E*2Uɢ`O`ˑ8,?|~Mma:g"7Une,|mXdt.%G54yMG E~:|.yu;^ЈP/j!~MAGVZ,hqxU.76MSl &1k= *cM>ܛ<I'2w`ӕQLN.nty6o %bI0+7x!AN+&j(0Y3%rۍ:`":=5FAO5Jօ)oSA1^@u'>VΥ'.nOOptQ+LҫEeh?%wd+$g%^y>'Z2qKNOu˼X (1 {*YhFNb;l|TPCC@KԳ DDBp˶dpCBLU5`; s=<0y~}J} ܇g[K;ֿm/~ tR?fLЩEI Gp=FSvWoԵ&t*1:$t[G07Ĥ֫+LyӏΐHG&U9L6~Wo t8;?i3`@"s46S ^, BcUCYB zRM2QY) W|?vS))b@ޔ}d҃1/4hwasbʩ@P,Ҵ|&9Ox$L!F4gnqp(Y)=-19ܷf%m֮Tz/rkj{l#Fxtռf_gKGs7.睬ndzi:|Nqz5*rjRp`\8.8HqK# y@=:p` J$|EuP:s`5y_oO~5՛ʲڢ)nlTG7!TޘLDMWoqN-ȴ]tu~xDR*49$d7$Xiwl <=lvT~c .@N̢㡵B40ls`bRI4g!xuW &tmΤf͂ғrS n;Vr?1^ĝpT-% xń K`d *%nצg@f&iPR`2iȌT>b=kddpsΪT\PѹGIΟ w/=\3H2|s3KƝ(HŅk-dD[@0h9QJ_0!U05KLD\}ΐtizcjF?]Lm'c2qA Ë"|`OvE(Mp|`iV]X8v@cdn) ܣbhf.+qmOQmܖ;  Sdh 9|h((`r\9tKC[HhJWlg w&!O>y&SiƇǛQ=E0A/"|&}m; hie*gA2F_<6Y18\knz`gԓz=YCW LMpo"4q*҄>gR. {}.?ڡP*)DW5ӛ]Cbط`W#DYf_+9*rvBpL >',A/Wf}[ʘٝnGb{-m3jeK$oN*^>{hgR +SfWKAD=c);ؠv_r[gNyEv̠V)X _EVjIo>J(vXgWn{QaX[ŌN:F[Ms"~hݾT] W9a$17H[,!A9usne}r P,̗gq%a\(h +Yc{1膄GB>|ک [P (mSUW'F[Kg>[VtTuyh/H8Z8esvC7G-#_:iϾ5AՊcѪ8\kM8=ҟT'`云{D5Dp7W]_&$=#{=%d$fOSHes`$$,#,[02}6|s%YK"\XgTЯ[(vFooW_;'α.VM=^Z4ԽZ?'3n 4 U-JN>hUA;_2[)! ?c{YO3 ZB7-{Bڊe*|:bT8R/O P/,dzwΖLy*ZF,ghu(&lYXXmSBqbN|3F >OQͶ`sqkZH.Tw4)Y Y[*!ׅXP)0U+QEx7jo |aWqc v &D冊sSuqZ26+~?e :q7y~c/1 %ým,ةM:~-VXz\EnIN#+3U;M chMwωMH$CI ~_gf=v |Gg bfk8^o+g^~ {W8rĿ )f4O~8ZQ2A*ڨ'dh\ûq~:-vM`kCBoGw$/H>4n+n;X.1v]Ƭ+;9JM|aM]ѨBiDrKuAGSl~abNۣ 7Qu1-%Ζc# ոQ0BFCа,B䧃f"nKŗ?2-ݘ"GbnKLyimV4n*C -},-!]Ba%T9u,qH_:xm\>rK䚶)ʌJk] jqlӁTYk+2w)}Cd|^Yzk=6=5<ĒP_Zu8B0BO Sc L/R%B'7?BxcD9CĪB}Q~~I1lA.S zTqv|'Iܟ,ZFT]Ee~\{:zw3 h3TԑW#!/,i1ljEɆ$9L"=f!.${rhEZ_3$s_,C>sI6R sSE$jMm,k[̥]͹,ϊu}uX&q[_ٚaenBIj*NtlmofrEq$5|-(K:ROIHNqK/peWC|2yƽN F H`Fdn;]>zm}0s@r#XNPޢEbujxyQ@2 xQbckv1eL&IPC7ۺrtY \I BkY>UG=pJ˃T"j-stw"_u>2{#1|w^&ї+Amu5&O[̓:8FGh0[==]^g(FH@ "h-';lM&I" B,z%d$WnϔDAz]!LKA꥿kiԲJY "kULAi]ct $*uv 2Aժ˭&(kv<vV^}+ CX|; qܘМ3\9TX̘OWJQ9T6{p0uRIyvqc@Cc/f d&qy;z ]X$!FY~7J=Z) OΙ|SІ%j0,(|hz/]lFͽ# SI}%{/Qώq%V_~~U< );?`)VbS~K9V06W,/hAow7M.MZPS恆 '.oSF$5'j![yNثkbMuH22dIIoDC['E/ȬpLp>&Wl4\e ?/yj |c#^ " #ڻP)G};ɲI4f V-*_u5S_ |WbĖSFSOߓ^h|ep;ކ񼲕av4b–#L 6{Lx?+ƶzxb8FGNdl(}+tfKEF]&dfP_NF{<8 ]vO2`*a fX .+&gba\jsNě zF;Lvv9*Wй O R(=X؁Dv㭫& dfBRx!eHc 14DY/͞@Cly P= %VC]"7tTVoiP:؛&q0YoMȇZ\'2~%-d섃"l2U[2v.xjv@*\}%j;a!CxH &=&fӣ2|W0N㤵g 4W1zMì'GE(OdɡyTS/XV1cB2h{:RxbTڳ` @ #}u!6i%^4ҦFbg%LF(q| H<8v3*Ekh+n]Ҿ</M rg1&wF|{6p8+OhˌUK>>˿qTq(xQ|KɎ[BiV`,"![lx3xP8 U9 2..1bu7N f(In#G3ԯlVY\cg ,4g0V6H)5.m0Zb/8@ QR!"VdtñJӶ=ၙͱg卜*S+fu(Ȉ9z,sX=Ll?SDߐJ?zWXUQr[?;=}7J=!{~3ST_`!?BDEC y4F0 ѧVQ}ǰ||r>t(1Ϝ PH|o5"\޷ X]f/6.{_`Y׊ )*U8i/# eR[O<Kl?Ğ c K I@ OLɃZfaD(vzBy77E$m/v+vڈ:w$PO6 CW(2 =X}xVzA6!Tn+Y;V߽ܳ ;;zl[Vm?pvTr)#ܞZsr)k\Bߺ/c@,Tz7.tkzw1Ӷ~FUʙZs 8+˴}Dܗ6WҸK6W}7e!9 ,QQ%:=.y(CGQ3T鎸3j(0A} W[ QR8lRSzgy,.sVyi 9;α̟E=wQh]X^v6[)\B@xKv\E,[ * vn\?Ϗ{Oe^"'^xT%{BpJeNeUk ʳ*FW_lpDӶ%F/[| 0etuEcH˃@MsPQ2J.c0W4VokР zP P,綄b`0["ŗp͔D{b"+ RS8DT#?yp\ou UTe.i᪞͢z"wRgdxK:z,ϵ̠!|rJ0\:Tk2/SBauGƂR'r~14 ||S!P]g^Lf*6^cwv.NIǙ 2NyrLur=X("X[N#N&ԭFW[Vga g4kQۂr9R+mdꖩ`#zt޸I q6!x2> yW˖;Tc̕J~g+Iq\٣ׁ[V}3p됾Gcʓۛف=;t<5-$g]r`ۻ){1hx3l2ՠl R\16vK6WCOwO% Z잜~ET*[CwIL ?L.Ky U!/p ׶T <+evTeghiaeyN fBFrN3VL8bkTumFs!L?;?n2zaӋ >]t۫Y̪QjdBou`oع߶E+LKY*GX(VU4;ȞRzoOj;2p8FllNDC)ᗟB$_"Ku?ϝ4=OtS$=Dzrg)3MHlln#I>6\9:x 8+}u3>DFDL[9Wl9h`i€1X䳱\9a Cc,O,1Kr nK īˎڑ򝴹h0biǽxtBJޮ7td%u݊WHEwa%ƳO*+ө_)S0`b^˘ж!3vMyn)Shy1vf1|b%+,-#:_J˲%}Z݋wQ'Oψv(;R GS1ԾEX&L./"c'L߆GՈcE0ie[|.Dq%ᦲ_wg?Wб } )]҇v!HՇw֢ jS\U:ETZF iE]UGYҌP(@eB7HIq*~QE7}z endstream endobj 44 0 obj << /Length1 721 /Length2 19438 /Length3 0 /Length 20032 /Filter /FlateDecode >> stream xlct%@-N:رqF6wl۶m;VǶmw9w7ި?5"'qRv2330qeL ?ɅN6"N@n0X¶vfN*#VU[+[s#333ÿ&% d[r*qY8``w627678&vF6ɑ?l\N8ZdDdŒco6NF5-+ ߬[ pcs#'!x1wR9!5hJsv:dl6E[k26r?Nx1݀N61Gj~EmmϕυBRhWIۘqi` [=`@_,[%$dI `fecp5rvp8!n@#%[_A!>33S*K̠˓Zfzxwxy;ےwM$@(0%b S7?aWFNk49g5RQe}([q+6:h_=j+CUмkr\=rP;ӯjۆ6=sRb4G\Eaw_(Idk jӬvQ76>=ݏ0(68(Z1`zȏ4[,7F{;bl][4 c e>Ut Y$oVV2nKÕϾSHHByw)NU:<dS]05Eϕu7er a%6vJK Vc5kUrO~yGqvXjrNۧy y ct-CsoL}$#zB7]M x>n]mi\_$,n阿ޚl`#X3hqe nR GbYdFfgh-W@ۿ24 \)3@#80́:E9c5iHW}4!H-tB8cK?_gAA>/WI!b v?t72.%|ZFF7G`I CSjj}5H*}{uI>wV tŘ#Ɂ( SF\xAƣ-rg s)F.<# BFX&W7#dW.fK&CMK/nЁ.ʈ7U02"ަC~“tA +H s:Dm=! )S$|PMExG/oB@\ȆGC^6]l/m !{1XuFƤ`j ) /'Hn[O *Ԍ%RrqI*$UKfi0ȕhՕ%/.#ouzfX"75YFERߞ+\S;~m\φw\8=~Y h>IE#ɡ. .뇃RtE^uwNŲF=.,LT"w9}tcPI5Ffl8@"Phlt¾2>g'XgmH=򩋾1EIf(@X[^HOF6䝸%z|NnJ"[lC i^ |l, ~p UE+}]pe}2]|ѤdxvU98Q8HMRnDigCYKmn.\.d3&3΅L Ƌo1̓1)ڝj"D龗kUDX ڹ8@KsOcm1G.&3݈JϦb"UFMMBܲv GRx$m)Zq9Q!+{l[MfT'd`m  ;3q,Dg ÎB(s8 GqrJPnNie~`|sf.PH RA ,3YL\<FyTȱVgQ ADZ[1$+XA;ۂ/,<U3LDL3Zy'&Z)>%k>lh-/Ȩs6_\Pq4i֕3 讀3;J.Mn_וtOtU^"/Jb(GePcRa^䴄&< 61e׏FlQVunwFW$1-UqVޢn~ǯ)ObH7=YFR֙L{904?1w˃u|O 7uieEؾ"n@2@PzN!ߺ2)w坋Du ,3< S K@B SD0hлkNM*:=d&xRjZo!A+ x==OI˕gTNת M=AnJ(I8;7(u&#>N*B&zkXĔ PfFGٵ,#ʡ^vO.`ҭk (1zdA#Өx޽mu1BU&N>V^x: ~빩9,shM{M)^4eyWI<"c}IO^t}2u"$=@A6'KhC=nrɛL&kX>X5zB^V-ҬU$T\{,ߧb™vdeONpE2`+p,zp6^ɏ_}a>3}2,Ց+,j،<16_fdɖ t1h],JX"ۖ*K-b|u#?OqdL3>LI~+iV45 uk졡{@_(yd/ $mKnZ/&'^284&a^TEf\oYlnk?-搴E ΄m;@E'aTsՎRO X-Y]6 2fx` Cxt%;Np3SR|it4ۮp]Q"e8!~Eaqwa%O|찕l1PҭsıÆnfD7nϼ=75`d.h:\9JtTޔ/;9$ļ#\y㧚v UwDUV6T|pʖ/+!Y8CÕ7<e-qbbj _ `YLxm:=}=gNsN.Wud:}/ɪa!*{ȊC/Zt\2M.9\N:%%{7^qY#'kHD M#-#ۂjV%TB|@*Nc=4׺ʙMT`~ǁPc<(Kk{ۜG$#gsԊ6lf&4_y=levgxj4Aܥ";u_FI/ +Nl ߄H:}$u6*?^N/(z4HXX~O˶^JVB @Mee e1M#'C+s_:HoqyR0|'R,XՑqw#ۃt9-^pyt% $_0{{;ܶף{T]w\-j戎O2{Y3T Saf9~Xe3pKJtؚG;Xh?jp'Acv̋*+w$D-'oJ PzWPa,b+dƐ+Buۖ\.uٜ 1pab,D;+ꀗ1鐉5P;g&5WV ^>e%;e:"FSް\0@ڦt%y]̖x_:3p޺.Ect O|Q.8yV "WNHioc|d> (X+`y?NSZ,>iq3A=6w 6㬚1KJrt)Bhi @*U۲KOp3J;)bKQ[PD"g1S~ϼN - IU . [~p̧s\N,ǭުLHZ 9dIQ䆂nL/}AcOtid\О- ,63W"vߜ%o jh\b}~8΄'PyV_'퍁T#SmjO]QKY‹^YoKwB.kҡMV[}?y2}Q>%_և4t UBCi|%Q%CU,N3 i۝*b%\@uJ)@͒=#"Ywk牑^ι1ȫW|08+|}e.uk~[i# `\ƫA{>@ҀSdjNv]ԬjE7yo,Z'E㽂9Pxҵ6\d0D68tQ́gHAibҎrPji /J޴&wSSVRpֶxI" :@܏X/е;7r᮲,lkYTm/j҇$,.Gy~W`hL)&&l$iu~ΎqA ;úى׏~`'CS#BaK{͓25 - ei,龳]%deT; (*Ѝ86hIC?P0&ӑa~ r{taCP#wb(Lfv,#DLػM\YPh2ĨJ,g\LsMTo W_AӰ8ixRm@r^QbgGĜxW}bKPP'mV+=(s#iP_<2b^,e<^HǭPM=Y$'~Ljg S}mw %/e,QoEOvN i|V_>ߖj?ɠcԄ#A\wp /%=k]\aWUوFpI/y0$įX-hukhJT.eE:kt#:!=kw+a,T`I& `ǽE> Iٵ[xW`y#koљh:%!U1 OhoxǸnPמ}o<5G V; 3[ZKen ZgI[w8qf+}!` JM~ }Lcw0!`83\چW#. Wkwvs\SfP|-)%fwLBkj:_AAŨ G NIMd5*C}5!kB0 R*H] 6oji۪m'oEEed@DAJe{¸u'6Xv)s8FQMzT褹4/#ߩ;&A,Z7 npΟZ`P@߲ G҇Iz>}eP~!)ZQzBI{"?"vK6٭Z _&? M"̱z1|i.'@odߊX~d!)!8[hz)I8w}Ј4疋3zxYr$R!jK콳h/RpFɵqXcC`GN 7Q*|\{ *-We(s؎fQZ?OM[YZ yɴB-5‚;DG3̹>#`S##6b,T+d>Ig4vy/}9Za[J׈,ȝ0JpQrOqwfߪ扃. sY 3;#8(e`ѕvL(bGcU폪?Y]_ +k!ߵo|,Ƹ8! ¸22Tk~J . fj 9Yv BHeNV>u17lƨƬ}BArc9%~el=]_Y{E_M?O-{VҾNF][8Z{L0 eMrd la/XR*V|TJv\'gSdb"9!i4Kv^TwI; 8j?~)%LI֚:O7Ǒ$wМ"b_5!YÜ90Q d[ahbbفҟ 5saJ}jJ ) 4Yj6W&vvUa:=jC 4/rFrȦ1^_:>=5M32t5Õ.oCH6 8oEEHj>{QYg(ѿ,2`dG,LU-|;(+G%/xwX$|[Q oEN/i`3?s0Q:L41[@VnY9+lT(: Q8}7J4#CBe⽬(Mdgbibq@-$@L駂`9u|20f;[8eW1 smv1eń 7ZD $K /gѶ5zIͧ?xJS[xk'JQsKz'MI1VClT B'{S "#xܾpM~}vݱu(s;\v䩯t'3k4XƘ2`#|'& j-rmmDW5Ղ::KI](㕑94f*Ԃf5ƊJѐ]*P,9LV O~Z&zo_sbt<™ՑS>"#6mW_@ZַqL4UI s9"rq1AW'SҼIzzi6>$L(D挝>Pez t]՚jx4n=JڨoTZ TJU8A|02= [Ip>4ќ_f}6vTK UXC9 0! ֞SYYo("'cg{|1W/"KArLϑQ; o:h0t`_O?Sm/o^|Ǧ"$# Mɢa!;˓ LLc%s{1ZpLͽ!+O›귋j=ё+?v v;foa=G^vUxʹUsuԱE>0ֻ^4d.vXGڪ2"Ui+CUXh b ts q},kUfHz*:N3?~ʫmHn+jaH}_(O jUd (zCUy—E|(unOҙXKvJ S3;J!aNeUX&` C|ذtBBFI6{YG!(hu'x=jiǜI+)z8MrZ,ܯBgB+fAޏv6S-; pU<5C9ԣx5{tujV= ≒0Qn!B0s0_ǎHnY9ll:6NɄ'6֯7r|]1d^fxBԪaYPNWL["&׫.6lH<%5٠@7q`vM+$۵ppa;R`R~Y@6\`gqPi<"-7yAuWН";"e5zC63xzJ^Rk){3=za]0A>TDJucT4k؞[3߆ }-O/왉P*<3 D`H199Ѳ#lCyocs.7*T~266Ps=ؐXiݱI~݊wz;4 zd ($]>Qֆel)JMT+jﰹޔB_G>okcb켲 s0İ4c?;J##fmW^2A6u,#0杛&L;'yH@>▉IGkHpfm#F侀cMNwE_ 6g 9v q\ӅtUy7ƨQ'>)f8Ce] (<%.M癇u 3أgR}:; @Nf$u(.2iA+UMiI_,Ɋ< ڧVga/iDW8qp0g+:*Ӝ`0I^5ܼtB`I.j}>[,JgE?~rRv9"o=5=pz4怚P:#w>BX(RرXB#@ PKbv)L%ޅʰCT~C,eP?љ໌$)pJV}`9M c^ls?A*GF/ .w 1#>^UKo5{o|Lf] Msn"̗E(Ft8w1ɞ|L,Y k*$T+ V@XQBڥ)Co ,Ŧ#< eڌНJ1ŴW3(uȳOʊ eб]oϏM]J>߇?a-!狿UbmmgvRr2~^{_cĬ:sMsܭX W5 :AnsbDVBֈɬT@.}Ei}ԟ .(0ԂA$g~$"ZEߊlIdS0]/ODIV4DW+SziF=tZ[^Ɔ1wnY VVˆbꃍ G)%5EEr^[bupf9j1I-΍|(  g˪EM~@2CqZa^g i$eTHk>qhhb Bgm[`ΝO̞"K"kqϗpM.t&@.]DdnҐ\̗x$lIӗ;i$AX㨆6HwI&a8:<3{IeA YFm;J,įI`"Ԧ63w|-9@kҜ.k-U@uȮY#x3yQ&0HcQ4lH0"݊OjwG{%e̋p }OZ+OohYPY%S%3{q Ŏ8+F> <7X Бe *=z/aWyxBT=EI9!.6A#uU1cyo+0SM5bS~\V/m[BxϋYo1UkX Ka:w>&fjBu]K8SA=Zd߫.8wVh0֊6f#~r m?:#55D}yA9?x#{ b(Ɖ^ַI80\At h$3;~a\[dЕPxo%A0 2iVX'W?ݞ5c3# F,m=:nTEV| ݣW/#MF~z>]CTg\l4)pt]L%n%:Lj) ko)Ipq^? t45wouяGc[ݱ/?o~"]aP"_OjYw wXKDcHJ ^Bϩy {YA",+Aα0z6OOבHVqėR!?g; 4k]aE52q ^>p?Pt;~RLcCd:C:]/Md<2-T`mG{󉏅|Ejzzy|e0D gO(yeǂ=6{1F g^> X3(HT{P vUu,n_yӪ .~CN'2_42b0I 7,qm_iT>`8n~i-atyifPdž | 6j$ N!G cLeTqw3-{\ 9ZhcajqR0cn] lBpٺ"b>M$o+u"He=WYedl3;EFה1  lk)I̿jxT"8P[';J~DV6 -G /y$3`0'eEu*G"zݨâdgAYѯ&,#Nysٷy%\`Y'ĠdTP||λK+R)7!~~eGaנCe mc"0 9qi'a fRtkLOXk tw0 D1-*.,^_:Z8caLJ-(k#D{ՊcFj7p aG%|?f]4?͵Tط$0eyͣZuI+:)ZfU/)xT=6Htf l7X;d]ՠV1X5eڱeR%H)G$vj@KO/PqF~g!sJu֗o檏rImw'Bǵ_7'JUKvsi]x0oRd0"a*GӫFZ`fO.n Ve541RJ)1X.mʹ)Z|^yhN)^\R8;xS7C9յ˄%d@0I܉q~>a,eɴAX!@8 xYrk%i=.v/}f dEڣ@-dIlC+6c&ىR,/g"diF @?,p'tBB :j(MtA#di!ƠO݈u&1 }c UKEyw~X#hc;&*#*#<7 W0@D;4c#t5T. yx;&ݐ)~6u@Yh'@s<|wB~|X$#RI ̭YTEL3{!o~zyձ`"/f8C`5¶ЧvoaN]ef5ZE|^ՌI^M6˼^&9{}gScsB2rX7*smOE\rfTk C^ʡ&d.e?e#ѺW9ٛE݆EQ=ʳoO[~l(Md }:F͌>PN>ʾ} @FǨhETYЛԁ~+O/)E'`X&5>D$ao 3ɍb ̉X9=+]pZ:JŰt`弈 + nl9'%KO:6hWu[Ev*1ەW!R/)&.׳fUfxfynO``yCt\v*4M7Hn"(}&HBNSD@5@'av4d;>qWS;5._> 38>Rja/޷w4O:ڬ_LW/CsI'{c5(s)2pQ.&'ƶBIv& TqRP^$ l*F,~wAt5L0m4Ӝ7XiQ1IxL K2k|> D/c )RMo'Q@?ò˅7"`@yu}zrH?;o4w\" TAk< ܋$ov@DLcN蓼7'J:+:Y 9(>‰CIh9m;x2MbdN1.7er07ܠʄe"~伽/;i<m(?I Dƫ<Б9W(\!}O=RR$ģoIzgF$4GʌpPR1ۏN \$< 98<> [LJHXE&cKq;#oY$kilՔ])8p}"ZaRh,5sjwZ Ʊ!/V]b_VB@xl*y;@qXK }łaPk\F>Lq*īt1CN@m1Sp؊%:7D)!(nEEgn} x+ ?aU7}\g_Tw1'g5?ɷ@ ۟?dwo=@b0DVJb`kV>wѫM"Lk ŽBgOgh̰5=BpG?$?rI>Vu]$d$G)4~L cN."a/UWƬˮ7D'&ţE p_'7XȾ;zUCzV $N6}ʈ;2gW!gG3-Em$bLy=OzQf$"s|:.w 5"sjp:D-vܜ 5+q1Tg8>3xJ G]rY%ݙMS<ێi&[ r!.f)lijgofYFgĔtƋCKf48Wo]Jw M!t|n`ڗ 4c/ vݜ5xe3>8R]вղ15] įrcy &݂ w䤙YeD=.? sqKD=1yt镩կ(E8@.W~~VXEvr3f*Ijɀ^ərOEiBO !z*!*Oڑ&Ey3CTӣ}-/ ᑠnC'||U@e<ˁ@U@EK-4= yt3fZHIKF ,,Z@_ވ)> th^--Ҡ&cTIk~:]Ia]YVynF h1üumY׸jIܲXky{kfpqpLFb8(-5W4B(_~P*vn}ފjUָ~TC dpy'pʍY">X!puE⎵D1pŁ endstream endobj 46 0 obj << /Length1 721 /Length2 11982 /Length3 0 /Length 12559 /Filter /FlateDecode >> stream xmxpeݶul9:v:}ÎmFض}zU]csYkUm*2I{93;++Jh7v147;!lT1{O' ֔ @ hthڻMnnn_ݜ]\\@[s7%mE):@ddl Pr5䁦 gs:d'g̝\p(HH~STHAfy /Nv_fED\LQa[>JT*%}m5P~33FֱT]-ʨm+ne$EOdP6c\pi" c Ъ< To{Z֮Ь,H{_mMxJ&xGlȑɨ処su'DL#E{,\`,}>ڈL¥y0lr+ۈtu+F-1FDڰjJ%Af-SdAD 29 w[60_ ''OjUbפB'bilm \MqyCzMGFʷ\?!WĈ_3NM?q{?Ĭ$Yʫ\~}~$[ת#$/1F}B ߽@7@e.$ BY=ڊo\gY4)Cfۃk:gr84fa%ʱClX3SwAP,܂+wwGԻ6ׂ/Ȕ:h KJa>!\WnMߊ*?doO3M> ȋX@jO3i iwr̙ 4OiPjo:iy)IFin{)_F4 "2SO] Ju@ݮv\xguܼh{LtUy"ípM^,e7maL>"1xD,|Mk* S6Pn Ԇꞵ>O23@@S+aw=lfw4$yK"ջ źŴSٻ֦W ۀA٘^ LOYb(!1Ռv9s whzq«ՉX#A؟j+bcN%."]֏U"wu8e![rr rq~eD~6~Y{aaYW96 3]+G`&z)0z[H AQsPN/ ESu &EU< VhIMxmMcycVlͦfhˑfb̺LU0j6Gj;!l*qjjaaLSL(I[g,3R(3򕠓O}Gw&0xdJ8/YY )PwTӲtZ1Ԓ"XJ? @z=8s8i(9RQ!)b2qmװA{8ǰ#t\m^"VhEF`78{^Qm6L–؁čc(gey6V BݯIgGch^ܰ)9359 *} \@+e _|֒%էW,՗=&qF 5pa &#_~op!W^ۘq"C4 -Y}*G'2#WJQrPUMlS4;Gc~HuĊ3͸*řʹ, XauZ 3 a( 0S_= y&` c6xawD&~=1̞EŁ`k>!6cskUP Gm՜[QqdV&O"4c?~_yOH36,s@UHs^tGǽ,#v4SzU,HֺU|,○t4M2uQcS΋\kqD~bJ $I~Ar'JbM D8Q1/eg ΄..ϟՉ`ֆ_"04ux̡6 :j~K}sZ[rma12 J߀+ʓҕ S|y=՞so.=..&j #X i)S׌8آ!˜Ӗ1u$|ӣ5} ^Ѐ,ow+`[Gmj"KjmRIt Ha.wsv&/8JI N63ٜƙz1w%›8 ;~2eUU;US 0dTP^zsCM`PיNS+v ficbFu2oX%E{k%i#m^dk7)KPH>A )v -LhMr,kZx:E#~G6uMd`Brϟd# @lVK<3LчI_Iqe\[,}FelǮrm\N=:I@܉.A2N׏AF]P7(g,^)mvM')6[ηqWUr;8ݣVU| xt{+pL xKuvR?b(qf%5_{ƨK8DqG9֮]Q*,Bk s-&W<ЩGtf(yg6P`(͈kZ4]e5Küp?*F)쮭6cް$tۧtQKIO#WI؜}6EInd֮huԑ*`-\F}`oXumێ.SD'PF\)$5KSBe%>1?o0P,#5'϶ ٭[ƪI}7(=@Q;p2CZP9M/bo(#O{Ɣ歵hgʒ@Iu^B\C,yC=fYj[kvugȮO.  ?!q)F*!8t#!"ER`AbYҧU0z^2}9:dre'=zkWk wUSgֈ]E;+\F UI}QA]5"+4b]^F_lRrT4+٬1q$m4-X>.Dr:tpJ> b[{VhEU NrYbY[N~j4XaM^59ܴUbȧۗ3!l 巌r9G;Ҫ1MmcV.q@ǘz!fM&$PQ;h=]HfIjvxm1>]Ȋ-( hL~HUe^55WE]uQ*o5WkR#*+F-¾쏄~UU&w.C3x# w_X bϲϺNa5D+'`;-ZU ZJK.5J6آw$*&qob^ziz$M܁?ď!Sxk2XJ?<_EnFh~*]137i;JY<;z;.&:Y5`LPk8pߏ󞱺ŒЭd:He::YJIt(\Y &TUϒ,Z}UF*AH̘Xħs<**[ƺnYGB\ԟ", 87Cׄaxל2ܮP: r-яCY^w:g;0h*"Ƕ:R,RI0Y 6ȷi9tyCڛ]~'_~y1S'[U[ Jsd.ةq[ +i|.Wz'3LD>TIvr~CpWTϖVCnME:}͇nSqkO[GgH!kr_| 4 D׸aG~(YD]p|g:%J̄w7ip~p~tjT H}&\۝]'!; ۢ#Y^-ǏE%Ot ,'t8e#'_!tpXqΠ r0YhD)2[GDTna=+{{@ ]5k/!UBu\ttLQ~җx]TH[K)BNIm˼4Ѥ4e j G]fy'nn \ê<m;afo:^^ky<0GRvWh ZwsO}kB3MS L5m~1kQw 65Eo :\kAHm0}hd 4qK:W! 5f0B=Yc),nntl?A _4Jg1`Z{j[|kۻGGV=Lb|L1nHpn29%M&QZ`+@x(Ѵg鸾E笲@=]} 1B二@eCacQT4;k@dil5<]D׿60=CO\3x6tGoUo*wbo~{Õi*͵)y] H$%n8'Hc@07$BДFKZyw315D|ИjW$n&}>jW5JeQ6]M,[;,K]Xd#‡@qؓ+@ar3n6 K:kWЏQ@/,ґ+U z,ξ⨺Wmw\ 9 U7:t@z* AȀy>êe^DVOJگuoE;7(.`cvb0OϨL/7#(h̚EZToAh8ic8d*Jpky8ՀƬ6kO膾k31N\|}/hq%k-傝[rҐm(FQW`5!tJW::[X`] Z tXȣ'mm~(V]|Go~0eߐBw=`tsS|L I>/9q;6 P7[^[(Qr Ӷa͞xxhVD:d0:OQāqP*Iݻ*/Ey \2jާcq`bQ? H/#=]#JuݳR%n}6 c҂xc[g?a5TONЗ e}c̚+vR[~fbL@xDb*8 h~S{0)SJU%u?bfؓ'S >' SF8#"b)}BE.Q:*`fNKd?#dIG#6¡= ﺙyyMŵ(Hw@ ޞ a wTRTV#/p@BAM5$ҝ)oڜa찒_f굽)g)ų kQo- 9=omw~5eėVڎ 9).$@\y|`'mB-9% ?@᠆d+=K?ep)h^dbRp{X|5dje}T_Tϟ#UئІn<.[o1 6׃# N)Z >N^:*o p#{ϸc%և՟3HCPn^>ֺ#2 ſ.C~؏MoxV;sa3 M-UnE nG{4I-\`&*hϱW)<(xJSP'0 .xIfPn90b\jI`ifhާc7Jѭ+m,?EcS =$ڦ1=isw,B,UW3(5m렣+˗z ^qMMYݥՠ0@ERXʃ< +2QBV(utKG+;V"1 mCCuwge_/xBeܠa-MЗ ֈNaLj$"0)n0tuiqHE,w>8f~QlԐBxn gg$ݤj8nkay,2q:V8;ŏ6l3OrjCl>ګO-  ^ ./ ?\ٺ菂mHl B)Y|$|)?rR`nÕքa؄$$hCG,+'ա/z._G٩jRu *T;F*Lyl VV%P61#{2XC2\0*3[,#w"͡A)3Ip1MAC'C>C$̌@+ni_vGwKy^bz&+|\> =mh)^EKU 0ٖe*ꭘRi@@2ꌆ=KmǻM |:>ۆdL Ͱz*s_Iݘ3R7-}GoeF)ܒ!dͽ9!(44βl^̴1Y6k@Hi z(2[- E1e\3(zDciS.M>#X<;CԦCz M@gT;?/#]itS_^$H,ft0tChΙtTt9+cۿHU:F1< NڠgWkP;`S2|Z h5.t(,}VZ?3ZniSP"3$&&5֒9i@!Mj׽ =4RN(;sjsxɔ/[,ԕ.YFF;.Ъm A0%}O· 3:|g#6%Kg{S.'8W޾"Řz cj>E!q՟L{fHSN F2U&|6yiwX22iF4OvW3%/>|gK-9S;E_հ0+E";|b$qvIsY*(-;r%g# b8B' øc[Io5W0I=PC<^_M{GZ5[1L.uڬ%'Ր6᣹vg$T:0X޲JHg+!#^9k ڮaK( Srq$#g5,Gz8:\bHl91qjSfb+ rm'L2rGg Lyb I u E u<* ζWNI)Y|Mˋ-2Fpg͌ut4y(,d<TWV?ZR^IVazsqmY2sa%F4?UU#mK~]rHetiul`LV#D "F5aj$|ETu^EL8G̝}:/5X6_QO5N1_6B^ Xq8̝UMsYUЕH>nEqw)| a/$gxYIC/cjk3ά 4ŀR&rhJ"+՞c_׵$UbY#gÕ }0%o?9gBQ="Q۫F􀽥T|fhC #Ej {X~>F11o$upb*|S>a'*js꥾W1dE xEM' PA}tlpNҰ9S Qhx=Gu&QhRrHA6yO+/0wrL~T!  Ũ][;H% 1jRP~.qHə?X*͘`n9^^Rc{Oˈ4)0Gcp-b9L0a{x{~,Ьq?[1KLo]|vb`S]>(ߺpЯF `ˇ!\JT>Nf r]%ӏwARCܭ,?8am؆bko̡o"8'c#+svci>su}B=V͝/pA鄨Pqk$J\刭XΈ E"-nJusZ.k i&Y:đ \~%;MWK3rjցXƜ-KO q3 ~P1tSKЙ*wck-7XzDHc.>Aj1B>ZmEiTdd(i%9lHEa!¹b[ ÌI0.&`Zl םl.a 2fAٞ],Z]PS &`k I[$tBՓJ[zbC|Aud n ֟?Ό2jl-b,xӤ--l1jU]x!Pr锞BiI#XVJdɬ[_UlQS/Y"=u;+E='C:7Sc%ƽ q'ѪvYl憒! VoB."^lmb:( -qUQ-j˿&܍pH6y CRr%M6Do)-m.` 1 `ʧxPsa6Jێ")\/6赣YS ^Iv ֺЬ_YǃE@&Y>&9|?:J>XA5TmSdwQwn*4܁>0 )ds? PiW<PʸX!sPUdiNԶaޟ2 h=1)D^:^;eL{,o^1kY^u70 ,@_"bM2$Tq/&My}Z D8kFe b}QOm'!bEp?8OMb0>ZJW:fy1 'ik$08j*e |y-5{zSה!k0 e{F-]Z}=}zrpV٬!nƞE|=]K gN>.Th#=ud ɆO"nہPJxV_ɻcjhJbު1&cHyz#> stream xmweP]ݲ-݃6$;www8ww4=֫zt]scMRbQ-'@ITQ@ OJ*d4p4 8Ԁ%- O u775sPQT ͭ6V6Ffnggg~g':{'^MJ@ 015$db*1 ho`w227HA@J= dl/Mt9 3Ȉ( *D蕅 cvϿl872odU{Gtcs#G!O/$@&6N)W⯇c_5@!dcmAEkXVn_2$ 2ÿ!sQsW_M Z͝5Y@z Ii%a.?e9K{ =m0_.cho bz0O,AAWZFv-3#5r1,Y$ h`ch\-?UE=5BeqR ͼXoF/ۤ!٦M#A4`t,8Tg{wBsm*,eصcʲ<KzI]1c~I[/FHR=MC]:ewa xIgWgYf{E/zmAH|ŸmҦY<Q M^WKk: F?A'f˔yv7 90}SМOI~3SsP˦ͤtbv|/FVa5n9K -7|:WhStq07m6i'luȒZ@S0?S8*Z]ׄN2Z.w#W$znrv LL%`H>o 6G  z.WܧRn7Ҕ)h=,|z ecVBwJ^,ݐ6\ RW9fQ)Jg yUI_u"L& ql3`)~ĐME?!P"% ٹ>DFLv}  eƒ;AV~(UZ)Bm%cE"궭rL|N-C:U8  ]3QtťgޮZļ8=(|Ù5歳Q2D^P{r񵊞6yt\JE`,/9ZA!\T=n&XMyHՔQO?J*4^ _K/5;Akׯq5XR0Eyh*DYЭEvS-αClQ@ie)1L׊L6p(Ue bKuRs7"_a?trTN_M9ueriIN l⤉vYfG9 pߵM $L 9)RjD^LܧD6qvz m}{;H݄ L S˷2=0?.L-+1 {Q׻vVڀ[>[]:.%6$GlMib/xV" g~ zujGx"%< tϗTjY.sKz* Xt(&bC÷ђif~Vݶ[S&ˮb},?BoP~-5MN0ʼnW(MVR!]"U'3CH,-,>0ϭ3"ݵ!΢ekhEA(/zIZwom!v+ưa+L ⪔Ǜ6f5\ͭȗqk~vvyeX_ ~7ix.S W 8~: .~T90PҪbu#쐋ErCKQE / qѹ 0Hu )u=}xEx*k lJv Js,]fcG :uQA<-Ü>{K}'/8ՅyGb?wN mJ*?+I} b":OpF1i=/Hjp;w6.@LhaXY* o V ̴ 3F~L A]eQg lqY .Bh9ğ d0"~j7/C#ɴsdfhaⳀD7x !W_/!M_^v2[v PoWF'h'~ kbMZ}.%8cȐ[`٭׀{]6YP0AsEEw&hO:^Z׎lytu-|j2ZC`牿?pvWL ՞8{[=r*HMM/O7'(h JVZQtuqכG^Z649vo8mka/63|} go30̢g58x ۖL-=])X>]$ӨHY  76j3 ܱ7僧X]G23.W5~;Q>7^_GW%N 98YETn0-0E# @iϿ"5ilt" [ؠVví2 eƘNqx %G~z`cۣF (aIBOP%Zv|™AZEY1b4j L凾vDv zڒtCYh?"Vij!mT$/[`1sZ6ϺW8P}5 p<jB␩'[$g~Z]S]fsi?v?D ZĤO]wd'3+]6)cl~1 F3+<39_cA\תL0R5dLN(0بq YUy 4s{""ܣ/ \͔y I)+QG%ᇱFp>al}{,8u0KI>u+]ň2m,P{A ~u ޲~YMe__tS @:V[U k'NJc;•QkQbģo+lF2;ByrRb鸁Tz.'=:dfytA:0mRao羙uB14#rinUERħ9]T9IwߋYFU9y:2Z۲wY_vH'l6Sku%ٛB;O4X(."r%u`VM0E2ɘ\nw AëGe!&>S_s3H;$_J姙OL+Ly7ޮyW&0T9%E:\R(O'6 Â\3^ݦ~>.=Ln֫>Dr_Ϸ?PXCn1|}_k- Νz9C9KpR]5HE݄6"eGݸg?(eWMnji$0ͽE)S5;0]Z(_Ik1 OlkJϚhh3H \d^ Gz#kV:[?&BOSd:m)YDvAːd 0D8hdԔ)tex\m^ 5T[bI*WERYt8l5CzwDga\I#9۵EJS~"&RA?bT4xzv9Vc APܠˁ{%X;&J IWenf#s!9#{! dvf_:QqYnEr\M'#XʟSp>}`x+Эץ04h<*1B^ <{YgWzҶevuT;)n6of֎ ^I_!Elg|ʮLZNݕb)~ѷjN.WW;q"JpMûUުԻ=]YsW ɆC\#$\7\/!цy~&t)l&k7wT#??4R.4G>g,?5 pU|Z͂Kp]k:,+}H5(9XCYpn:8Un 4} Dh=/HfQlaFq= Lj1<f%V(Oq6QT&zTO,pNe0/&f[lT0r4#ʤ9]x;&{- R x<7(P(ZW<{t AޟL0՜&?8 =t)@;}%5$ħ>H xp0_p۩'](&N7yRG!G}5K8 ~`yr ]4bya谔(/ЏWYtp}I%*>pCY)sX-:2hGK?9`b!0>eͭAH:(JF>XR"=T-{4&-MwH-g}Gl{P  ` Ҥ/69#X료ǃלXZ;3cXAtˑL{!:q_/ݣDR"XqIJa[$.MjN$j9*NQ%A Kp}ׄ j݇^ad#y!=yVF̡V*͕b 㹞cl.؊Ldef_`W@'B@V=sﶤ8x1OChv rQե9eIkJO} q ^_l)=zͰ%J4"WF"7ָ#E8$H;*u ?갠OѴ{I)mpn}8a O<)_4~ٮ&*tr%IjFG-F[L@6xCgz GJFL~`Br;iǷ }F,~=F zPg}H;=ԢU҂`E0>gZfַ2OwbFA\5uyUoߞXŲCXFܘq/Zn$2E04yf[GZJg_5Lnd#c6qG$#?u;^7A_>04ɩ!j)HkvVHkgp}lY] CZ6. (:]o=UcTJq8+0{\Z'c?uir=OPES)BqnLX4l4O+nr[--Qcx:o>&%KݣJɻ4vU'yZ햇ͰlcjHj 4<ѵB$%UxxjeyCɹٿ gΘ**,COE.G5bp3wpKB-dq'ri!G7V,4lg&/zyf77"|1EAs%G?XGTz ?f#mO7+Pjow˶ؑo>MHJ}̘VVNUR4 IrVruKdq,Rs98C(PZ \kR*#0-a]=[4F 氒jIN䒝~Tz6Ġ[ 2n4E?桠ʜUilef}rLmVk8z<:Qܺs9MIbml wGGAqr\)_[fZ˄KfO5@=)D0/5+6?XVniڛ/G~6ɪFGŠULDXE @ȉHBe r۞$_Ǿ6T󯟙t[0j?-ۡi}_[є9'ޞ'u*"%˨~imH@NfٖL?7t:?$"[އyXGfkM;qܜkg7dK 泤*Xn>K9փG߹cjYBLa͕ } 9bÁ,xj'gdHʹS]'^tOmc5}C~0/Z/s3xLk9.]}5Ð$*q8&ҼܭSuހ[qEE-m<4Aݧ!CRo'ޙ;.\d PP-7"DGq ې\xdZOp0ާ0:S^+Ǥ;+d; LJfd4O'S#U?}rŲ ȟlQ{WhҊb^wy*  LO3ct`< ߙx FXxT~CXݠ'y%;VX=:PF͋AJgKe\hP?xFvh`C)fZɄxQH;Uɂ)&Bz.큻y=SbQ"h 1[eO7GĭWjh?:"Yk|jda칿/dd۸zm}Q[?QM^ G*Ik~5,RW@Ъ.kb&ÿky@C^?FW XbM"i8FI&m;;[CAH2"}=F9<wo\XUVZVrr*|u,Ta%;V8/wįF%QiwO[0>TG TxsJIwn鑢/6[DUɿl3~4C(`&:rˢ;~a6=$q,7- ā,(hBnFiR~*+% '(=TI~mis \c#\UAJ\TSsbRN3kh""zZ* B}mЙ<V{uq'*E#(벸]P^0"c c%@TKowƼdt4{TtHgz< Y!\G$m)F21eפ%B.XލZP&o͋=ZU+, ˳]_)׃c ʳ;hƥ(2ꗔrϫ+֭rf.B%Ԯ'|Stv?FG;Ge ;x9K[dAq2k^Ixi^q?Rm^Qp )=K9ߚu]!>3v ]*hCYXX=07F{Lnj\> stream xlpM6mm۶m۶m۶m6m~399JVUOWk-RBQ;[ge{ZzN%Q%ezzzzZ&(RR!Gg ;[agN5c%{FFzz(R!;{G 3sg # T -l, T\- ]]]]\h]xiqR21!p67!06!א#U!35q4&w10"02u2$0s$C`dgkl񯘜h?:Ȉ( *) Hn󿲣&p/em_h- M,l.' #CJc]e lL(l]M dMm ſ$Jd?.6NBPl?b 'Q wcy wvt1X?$cblb%L6ֿ߂Z֌@l +Z?D@g_^@_B(sa`'aJ5rqt4u.,w#U;#`˴ _J?*Vfzo-͍`p yI<ęNMGbW|(7ހbɂF;glnSM3g^J: 1Dw"Ư/=يQ#ejA7)1{; ڇ%3/?,hҐ_`G: %uxf:KvX=~Χ],^Vya8ޟs}US&ww%ٕ\! d>9ݔZqvؚXWC­8OF#jLZq(p#TLs2b-2 =:?ooL`x§7 ԥ3K[5u;jqb9L!`l`HZc=T6m!YGS~Qyu{*kyz:-ҿ:`lEoµ~.R5 o*a/X;8ƇXke̗$ͤU5nFSkigV`yr@Oi3]Fi8[/{P"%O0UH[ñpK0z6E(<ZAC2Lޓm&]p-Z8WUN+yEevda!Fb.J Ѣ8\;7EhvǾTaVxHT9PgcRU]ri0L M̖1T'ŕn9lPL+zq"1}*:2n+ 7^oD'c9aLy5>57iDoǟe^%6Uf !۩>YL"M=] YbsN.;w뎙Cp S2M@g" ѐz9bf 3ՙH@%4)4Z2r&< f4RB#р~}vżHź{j򷄚HZ^0Z9%(OU2 ɝWKk0;_\Y,}Xcy=Y]1'kXZb jq] p`xY${̫OTve)އ`c>8nt]&;7~{-zeFw%Zl:Dȫ'>ɪ"QZ:ߢ36P9UCP`M6y2x@fv(}'Psa;2j lLK`vz(.gJݭWs'CZGa_5i#SsX%Hqu!iu=m7pէ*ffiC' HQ0,R -A5اh@UkNkC 2-oq\$ρCNRyQ,O-mXuj Sf߷?pR2!+{Iom6B̫"IkTt|rn{#UU'R-Ū^aSp  :T!gkࡳq-:. 4\AĦѨ :+gڪjP_7@%<_Go)#d0D4IB|qK_?G$G۰akƙٿ>wlwH/%˳vRuB8ηJ=E𕿄9* 3$o%v潨[jhh aPJd[J4SM'Xmrʏ)V}>+;)cxٰ:FdS.#^PDJ·50Edk.]fx\iNWZh>2|6ӎ axp/I>/x:[2zO4ROzp*_Ku)zԞ9Jk2Ts{X}פdc.م| mw^_>|N )^m'(;UfWm¢\_j~p[(>$4+]r;.U!*rAтHuw^9P9$| xhu+ҸOR)AĽYjۑ)p>t`V?{7h}S399T'r^GQ|\hMͯ*VT$*mV.qgH8rˢOqXCM4/6 Xpqd7x(sS (}:5$ ɞl_a5+ӱ>䤭BG*1zN`oI*G]x?0mWһG>+_.xR Z- д bM]k Uά KOA5s"u#@ ?ythQ_n'LOɧب-gRTtn38kOn7)z䮽MjTj^C۞QziUTEr,#E+QocJDi9/nbr~L>Zlөdl&'| YvG2Ɔ+| `;+4$"eq գ@HP;Jg'9hY  rn3"c_ǽ Hۉk= TN00&H&h>wgzlP x[O}f7 nJ.l?E F7WWi 6'k1`r̔D{qͼ黭 KWu[&v} ]0X '-.,TnCa~.y{~%ְi/GV5dh( 3AY8.ϼ"yo3 :+}qߧ~1D^$Fn[UQA# .M3 &ɖj maͷV8OCu-SKuV V՘Cs_L%:$,Mu_>DzMXhLjK =/zWyd#8U,+}\ӭcۯ]Lu<^Gv?slKZ2Z\hzOɳw[::jԐۗܶ9O'D O\q3s9KA]n!;pThǘhrv<\2ųA.-\ {PO]ĹxU$fugzZTJ0k-:2:sשSiۿ}CcIl~0.̂1Aě,MY:B>"^í+&I7oSyUр#/h" .F2i3}s9B IV7|Ps,;T4K׎J_:JO6[h@ꌘAE;*UI`ܘYw bR y P.#\MV׉e,b֍vDМ#\yҬXOPYqb1F*c8bĥ?48vUCݗkMQ~;;"9VRM/6`J, tE ϫ jcN` 0J=XXⴏ]ug{5>ZS;60n!egyf8K lq麅KF̼7UK[*[l @ :Rs#+Ոd0pLp,g+11אl#i/hj<7_~Zᩃ }1c ;1e~QS?M!CPx-O 0 ' glj~rK]TxgT0U<$` R8ZTe׫IfF^VE9cwO[iGeQV$LiIXFWlO5ks7zNC[Fs6RH,F6q [k7~f{l@m6 lR%֬,ڋsoxvMxW=ƤZܩL;;Uhd|C/kd@xfh2 y!KSA!UYٍ3=ОS3μ_?g0e 5I}䜳2ӦК8K@뀨MkBR9W&Lq#JڙH#-z/Z'MlJ!߰ %Ϝy޷x|E2cl&hJ-DfC|BxH$e0{׷(1GTYg)rlFüJmd\K\y| Ց@" Z#~qq5eҾ:P"ީEe$AM 8N_"\Cm;mP{ (k)gMS/p]"XV ʭJu -zbhsD<G<\Vi30&Wq9)e,lPz)]K_l!%FG(U~AҊo-/ε}pd$l 0|!I<=Cҿ08HM3?RMYZ$T$z{m뤪˧$p,7b&+7vYj$A&Qǎ6tfV_+<WD z ~"_@ |h-`_xT)6u]N6;(=PIf{qH=gQ./ߩu0t5>ݥ1rUEљO=WCjKlBw:v "#[BQ,ĥ@N/P)|=,fhwoF;<];琋:P5^np/\h< I˷QM1i!%2D$7p8Dq.*k~ˡeF4n71ifpz)|q0/E&`gny،ޡ@Mdf VE4]{]H<*9%9nhKbC5̦l CT } }Ǧ:b ΰqPh )7Ƣڂuɫkm悥kA~=&{yrڊrv9;rZ?B`߯W!)&F) |ݏi(@keɪ0ycuahn\t[uhϬ% " $P 7 (#&.*[{ 5_gfsmNc/;rU3X,VWPXfƄ<[lͶb%Qt6M[aϸ r,.f˘H۲`x*oCW60#+ +!wI:>.o #0ye~ul';ƺ)Y4<}cGdA- M$5^cٜzIȨ +JlRS}DXh{RsIZ&n<|WD˱w8=U[7ڏ<?; [ssnLgG7;0ڨhZftzvT6;V~C ,F;ł+r5%~Mu2]ঔynmojb2TNafek[D NjL !<b 'US\?BE:&RXP]{CXG>h~C8]()xn̐4rF]W:7M4!;姺7!`Ak+vCgׇ m1F![ |͙F6ϜĆmsR1bfi ȋn:(hqxۑ.qJ\~=LAvvnNڵ+H6_W6f[24걋a'-Rvz L6:_-lN:8F6mmjvB2^#o~B~e.^cLe ?-}:XVs5,:ߟ ֡~ ͪJEr4/7jYyNy;5@!{V_몙'Mb S>гVݹi'o0u;byKƅwM[N15INf8X˫cj7wFDp23B}*F\c<;P3|}4LzsM %IYhG m5SZ1! 2pc/ fcyVZjb{\{Ԡ˰j.B5Dm׬^)Fܰ}}n) c.IkVB`Ye]%gARfzߡ떺^t6RN0CmAsgS -0L|#xKXPg]͕ئ 3`υnS.͝4[w ]:T4c>oh|% M=bw,?QF˟L]|\O&WBwQ-υ[cZLjo/_~Կn*r<)\!o{*U dHM{P̔s;R}QGw7fZZ0Ԛuf@pSC&p]I6L/6:|VKh3wa\.]O;ᅔq<G%c['-3S $>8dpy N %)idؠ @Q0cW6-x_.絽oMa;;Ɉ"\~$4(+x QJ #'ӾML0'1MN!0OƸqr5l6n=9nSzXԱn0=Hj4gschNKoh3mD">QEĔo_C=s%(Bd?|"*Τ@3ag*KM4g,d%w>#?q|,bR ;6@(œDzi8׍m[xvmWpakA" .'"nÏ ?O А=wɧ+|$1[Ij5$n:tN@E/]U~l KNMunSue;eJzb&Ds<4%Y71M)t z/6g ަ݀ L՚B(x!w? kὙ#B&ZnyM1xgEԩ0nwŭPKLE/lW;˅K*ko}@<(x?m- ;=8αqWطQ|[I=eaA2e&Pۢ +b?ذǤY=miGy]  7]2ܷ0UUٕaOe"h.w&2-s)kԨzO`btD7Nd\tEN˫R\ .7䧐͆&3Ex>1F~R{CB.2QzMVMTL"Qi~vufmwK+[boo@U~48us+#(Hf ^n!hLtm3һr#T";v UfS# <q {X] ׫;*ٲ’$1p^~w&BNمVڳ4rN:y™8Z;Dl7| p^2{qxS6F>H&HFб?b{|<.`)?u'] ֈUNBe?vVA"UA1k|$NNdmB]KG ǟ.\89q)}SM,PQJ{g% S1*$KzC6a!9ଋpaC@< GY EL>ؒ9N#\}-zg@-l53r]h\,)nH:pxqn<e?mNd{Uؼ'\2p^d)gp5;p2mS6CI7aBU_fn#;6V|Sb@&] K<u5 Ȧw$T4(? WfL"_22@kyҢn(ff3+UxT;IvwhKW6^_O K2)R9G|| L8- ߠ/95}&XAՎW5vĹdqb8%-!^)8&gD>+) M!}ui:Wڴe0?W.VP*;prYFI1A4/sGz:rT xZ'5PV.eGt:łyzM=pꑾHL"m3RŚ5W2lM$'\q>tدXEN땡0C"UHS*ˏfC S+׌Gsp#ʩjq1g?QuX0_$RFncqVТ<`Kh}1DŽp"ciˤ-=6Nt5l& b.eO \|PjpZDd?JCxgj0$CFFE Мݍ CF5OEF<0 `n};6`h^>DWXZZ}PkM;@`|:is?sd]sEuLtpBNcV@)6sJ5fc{baq `4d 4/jXA$gCA"vͬG̊uP6(;[ꈶTς8Bͦ\wZwv30U7K>ē.eA2dMB9#Wq=^"1`%7~qTxBIkHL3I-1:{#np7A fdWe[)kD#%~(Rq8]?Tl[OqKtP!5v`!NIK~"4 "K|1V~'\ZPηZ?=Ƃ:ػ6۸: ƨRTk=yE6hNtd_whY9< ~_:~}>p ULپV(j7ѐCFZ.OT,ys#clgf` {@%m&F^0 H~T{Q/u|7bivm \Kጏ _é>O'4n@ԍV)+mېӢL>ةu_:7L5RIdmRղÊ9OnmFealn-)b4_5Qǐm曡cʕ˥~IX%Ku>!WJ"B~PZ Dg\-ИɔM2ZgƟJǖCp^x9fM^HJzB1x7 uK#@e!o DZt21,PzUPD,2=gjٵ#Q|==R+/igqZn"cmVݠ/u}#ƪPC @נ_xYc`;ٖ,́T&.v'*'bځ󵐶B"WP+=8?Rm,hcNXd`AdĩP puPj.]/_y Z>'Z PlqڶkveO`V*™æv3BݺVȹR~Ҫ ?H 8[Pm|:}ђιE'ttIbA8{P3#85ʂkBDVM<cCN!MVhcL*Yt5ǻ6v*ftU*YfÜ@VJɽ!Ÿ~6 p;,\206ޢ7@){ƠtwjV@ĬD%"2nAReĬ5wztq}z Mۏn~x0oWtaf}N&físO@=*UiݒuMk=FPD37(U5IsICtTWj!x~])dga*61R:9 |'*{R#G`ڜ1scpSȩ7冨9뙭JR5.x\]7_tq!ȹqey4fّ w5 ̂Jlv7 |.T+hυǍj5h)i*p\ ?v+J׆C|jFݦ)MЪ0)BR3iM6GP׋[)~_$S>,9TM)sɥ4No[UWrW -Tbhk;*=aQn78S4Ṉe 4}v, zOl O-oIw(F YL* 9TMDj%h& Ҫq37JS!ƒ`|\r] oq L|t-#7hJ|,=Ep !-CЎr6b0j--@PbW}&u6#'J<]ReJOrAw𭯶Kcw77Kݾ6]\y\U Afz@Fc$k#dK{Cn6ŝ?aưO@P}[Ծs[! 7|hW-fOѲ`IPw/:6i/x$ha]u=AZkh@`ٵ7#R(Ltଗ/ zcSQ3́C &Gx߻AT@ _ZS8+OiI*.+_-\>]:IEYL[`Gz4XatHUzz3\fGоWI\ wļn ߕE R\=ѮJeF+r($8yw]/+a$} _RNyeT1<b*M91"#0=x=couECe@ /eo ~Jӊ؂\ C{(=գB ^ڡn ƴsu+]T80ԥ^ [dmbfR=Oiʾ`wI&`SWO=nflQ]nyLZcDMX@;:3;C^Q'@cuZ"`"(ql.o%\̹-5Km\ff]״\ipxCA<nZ,Q-!* w>˸A%]h i' F4 ~lu~8avkWzcDnb&(ԗ%HJ=C<+  \($7xSSJ2+dĐ3Vk.vUpa^D֍Oo6!"gC;Eΐٽ^Ix1jU IA筓͠1:o7yjISy!257OCDWE{p6:M:Ygů,\kom۬o񙻍 b /kXӟ#`uV J` ¼yib?14ձRNUN[):l;[{r4nG `$Hy`M-5mjIH%X 4a"ȤPɝHP] P@ָl_t Z_qP, !8`r_0vA (PebsG[KN-/D}wٓ'S UI)Ux]`Tu:w|0V/ EOKx>;([X!7VC(njCN]BYM<㵐Yw&[mDvKG{ݎ>( 9P+z%={Ld`T.S=`b<uMQ0rA ׵#Iw{G %YD\0di-G=QtO l"D6jBI/e\"cDH Tμ$5 ^1i|mήBBORo7S؎!x.,b?Rkg82~G0QG}*IÃ\2s̗B?$LCs`8Ԏ6 lFݞh4_>-/d;qP&¦ 7EHt٭b,t&!W XAwM~_2 `_eψ\0`/x_*N:SNjdE&vD{|:a _^D-nZE$W$3z({ŶunC7|壮Ͷrx!d@_s|q$#az T=XM1h ٸPS{Pu'y3LH1屩BC0I< >DEm4CX%:TqJzKF>)gC6*<0A@ՆEk a$^eGk5@2'WO7&cs5ɳjus '꟏[ӜZ=F#7qʉ+\b&נS<*2Fl||m}'y Βw.0(Mb0в@fbˣa3,Ǎygl[ۅC؊asKFŜҚ* @􄁹e6*ʜ8dkEI =4/+h ,d+/aH(6́5U2@m^[ҤNspQT/A#(m%C"U] v:?e{aKFu >|<{G[nSʬОy E{Rb{A T3I"S`zJB08fY@/ e91qxBydcͻ>.`:ư$\’]ZUAyiRojI,M yKlUQ*ľy1 t*4l(2="N罹? D q "PŨ,rw5_+:`ij9:7cCTii l"_ 0é ;#O(Bc 4 EpuN2s4%i|EMo_E VwJ8lTHHfJ vXcJ`zڻ-h`cҳ쏒r'ڬm4n4Dw6F NC,:v2\fUu?y0^ K~[ټh2Ii4#)ANaf0`9f F}_u<5 oIڦ:]6T/b[?`Ca,XS Sg@%;U>?+.ߍT/_Lf57_R6^gՅ .VW|:e>3Dhx' Pu~eo*o]kbXtQ\03F2a;bNI'=$h'@ѯWZmJ>rFo)IR]1U-uD747@N}~pF}~`#id.L$)u4J ڋMഷDvwz|QA>=ߑ9˅r Z ,rvMOy[)#,"aS`Ed<_ 0,Tрz/-aS'9pDt /k7^o4׫H|u6 #V)ȯGM,H5t![9QxU@V枳 Uy/Z=ebbA]-zP6Ȕc78ؾ[Sp@ U[Qɍ=qƔ%Mr#/,l2 OneKr%#udD<Ϭ( ZaYsLGĪd4W3V^81Sz%/B5tOt$rAy/Y:G嘍Z(VWؗCF7GF_|"ւ1o|Fgw;TEpgIf;-烊R=a!ރ,@cUR!uv}oK# Gމ\D icGtJ-n4`"&{;%.vϕ Wх<_t|H)_U+S0Y3ni\e=Ѷ %~ZH?) o.81u?Ea>~Ylfhr㚬0<۞amwL<ِRG$sߝ{<Ƞ`OΪpVQ\64yyQ䳱0h!"eХ ]"YG5y۸ĥ`[;e(AXƥqg<ڦ8[_2=]!:E ^ yҨa~K}U׍ Z]/G ?oMJzGnch3thPj~^Xj^1b|اMNCiG?/J'lePA/ٹ[{|mq ` D!SZ.Vl罨 7;R~Awħ }dl3vl{^nqfssU8yjm,t?=b{[<چ >y"zSً\ , Մs @\,0kMW͒JX,0}g-75ׇSL%_hJ3X"Rn},9oyt5[mA0![&[7R>Q}`LS+X% y]+i/ H4n@6uq'5#8gaY:~?;Sy&Y@64}RZ+D'CCVA(6VO"ۭ*I2 dw$mt茳Yڿ@[Co8{!V#(yo#L^]Kx8b}j RWy 0P*mibuɍf'YYy3CS3{)~V#-L6TqA&NEj SKG}ġ2@nD$e@X•%OZ&e3XFnxҨA60<0'l4,~ p2tm(>Y7v&Ggκ^n@ T77Fq7VD RΝ /ݱVM R_kCdݒlgn\/d=v:(v /yYdc`%d?8/ i]Q"M1hمSlpa++//pKp|:m^9F3e 5H^P'7!0xՎЮ ͆r+T汐 7<7 [U(k '&OZ0|p!<jmk_$}(EqݝԊi5'/ԔZϵ3<#8\5/"9 -h7{E7҇OS%EOsJV:'#h a?BW aHT۩ l`>* sTw+ @ I+smaiCa~ s<KmǞW*Zż*6 x1 Į,;"\qq4܈0w4̘tonN'Ǝ ; NʑGo"L <&J`1/my*SS 8)`KʛVC7u(V >-jW8MHoDVb %+A+$#WWGUGӽkWf%s1$ܠ#o%SMZXQ?&h⛢%(8IXΎl5sB`B)_h4H7OEm@ӯV ڣַO^`@q((zܰ r:'u\%h/i ~,-J27iFrW6l+՝!08Ne&@te L1$$Soџ$[L9X#g>#g#w1 9=1Z4Xx16#)k,t^q6,q'lIx #tT'K(8v5{CnffD+Щ0>\*'d`A<rJ*$!Ȟche4Mkܴۜ:t坷>z]=߁zjc)Z)KߧzA "vA\8q$ ͷX ;n{J@P/^7F.;WA!>0C48.6gd>wtM<-OTlDRQnT|=g;|?-|EkxH$L4|_O?o SγY̝ٿEc&I6GPl"ᤒcP{6'{y&Os"r`OPSwwg%8%iص1<ɩ:wDZoHsM%G^Чk3ձ_5]+s1+qi@9hYR>b5 l3&V?:͓pR*ȶG=",YOv?Dܩ("Ľ],X7i$n*dZpQ00,[Ȝ'^( i`2rކVT4VƣeݲWeKnuS<~[7B+tH;DVSAjKR{윁RyH6 X%0lCrt50ỏ:rr)!ˤ6ha,e5:sDG'.165 T}i OYȷAHzi]M[HsMSf8!lpɟn8mW$}RjhݺP ߈vg^:>}Q;Uqu5 1r)sS7ij&ؗ e(4a}2Eլ CDV_xŀGN|//(r@BvQkG+j?"8Ҝd7PuRyȨ;{oگZ(F9|âtm3F%2t ռLR _] &#N6 Rbb#2lVlYͦ0֩*][ CQo.@*HsHPC[/p[gVݰE*)(d?1snmvT4r}&p5_$\hmDeMXzg]L*iHW\TnLSPG!~CJl{ɯjRړ )ކW4(2R~u?|,욾QIhp.0uv9J*='i!J;ZZiw;Ik3=Ul]j f|qo*lN"{󲨡 Ro^f-:Ej2|Lb1bU< SaG~$!UZ JԧU^4~Kӯ_ P%7)2D`)dG>Ka}q}#9*trͿ$L)*Niǟ2>J{$ȞIMx%syΌBU#z -)qz 6񢁡|%.]FZCo8H1I@zQQ8/襍SKz)JpZl {* π 3qrW}emFT7Oi?(u6foyg@' I'nr~i2&)3OyEO3N2m`P ۦ*mOb:8Y@}ذ/[ ^^wk2, U%\dLrY)3;H+%T`"Fԣwr9"e=aJ2xe ; LC{x_WI[ s8F:Sd6mۄvs\xd,AK!ͤ!A]u;9P/̛ƹ*%G?/U3eIҸ^)̅;\h4D$d#߿;pǏ*ڴ! T?'󺏿JJm`mg3ᙫ~Aˮ10D=:)K)n]8émv6v4U~pƮ$$%Yp7/SW;<༞.Zֈ7/Q*]t%բK@ҁ ێF{%Dw! HNVmcx;#-'ֵl~Jf^?#;<i oD8m]]>F p"u>I8>E <ߟº3Ĵ fg~4:eEF;N7(aӝTCnK~M{P(}=X" $2A)\FP7M׬etD?G`\d/u=V~\ xYtѠ {?w)V}m@S @1ДvyV`{kؓncq^ôdsωK{UO]ODN᧛lҷHNl";5U~ nk>OA"&}.g;9="qfjC_Cд_ʀ+Zd\[;V:+vGY]b^ 褉 }Z-)߳J$U+kKG$[#yU{x 6 u"Whlv~L ^ } @ ΡN֨`)ފ!߯di9Hɘ8hW_wU~9ҚՔe,$<"9u^>;?Io8wj*JW##ؼљR+xXe䍀X"&]p)pHE^ueT4hP)]Faa):7m^7 kca!RmI"<NЀ }f H54_S&IgIXJGmb4T#slR} wa1]gFys4 Ӓ5CvVF[7%Ox rt)&ْ,>Vi:&,^@n6b AL~)b7LE0 .γ}AkgPڶ3z i*/&@NY+ǞOH%Ffge y!4l'XǢr熮S?/$tҠ/ I2ᥧ${.vJ[&_AAXt+n&H!iQ98-k 8L^Ij/NZ~!&o-嘀F[?ULjQ-"@vwjI]%:D˘xX?(3ITT:UB]4 Q*#KpOF$Ă;1^,dj1tǁ• VJe{^#8'J*QU鍾  r^?LZtcw:7/R:w9gcNퟖr jhxG]ݷbuŎ1ZJ#wÕ&jz ?!rї;%}pzlWDQfȾͷ4EO%Al.k{Zo8}t;`Gތnm Fv<{t]G֦/# O}M0 8`Cd h`Z7G[%}Y-spdWT' _kCSGEII@yV5UpxO'&)y(qodEgCaG_[&@wCi#O 긳ӤOp::n!{Hbpv=/EB+Z IɝjX!i9G/ B0TPaR,^.U^G /F͕jw˲6_lCa sb́&29X3b:y~1k.>SC l]:pq7&2 BB 2[#Xu0%~5tkVn7OXENz(5h#-#Onx8 H_N^r#|S-=miF#CޕO%ttn+V&+̸="utPQ/ɪ5uK[^?Tx8$Dfn7Ͳ܁b ;jg(3Iv6:7rܬJ_FnJ/nSK4wv]k'dGN: 뿔 %}lȭ7T[XoԈ|(5`4ĩoVQjơAoH:Y& }U=!ajɛ}'ilWwB(AJ潃 _ʢ_>a*IGmj#R*CpMW1Ϟg&@st0'0,H}GH`1#@Ndd)1mI#F;GRIe:!tXL w6Hה,]ŐTpo;r{~U#< t_[jwqȮž Xֹbז?U9T/hwq*XhJɊ;6Uo6vL=K>k0g!ّPk c7M aGH=e;Gv+VdC֙>R;"ÑAmoL(󐼿`e:N?{460@0,cLА-OU07[ endstream endobj 52 0 obj << /Length1 725 /Length2 34298 /Length3 0 /Length 34817 /Filter /FlateDecode >> stream xlctf.ܱm߱m۶;m;mF'۶~xgĨ9Ǫ5k9#*`b`%'uZ9؋y@3*`abb%:8z9[YXLhYY94lܭL-|B.n n WK UTҖVPI*$@gc[)@h;8l3:؛Y ÿػ]f`WPTP2rRۻ 4uu#d?X=#123̬L]&@ +{X&mo@3?n v@+ `t{g4u5uҮ!lo}LQYHXy͔\ &?Y''dR=4fVU4v6ſJVboEXa_Iy8xг0qY9̬l.V.hoY.& h `j^/^4[ A;;mN 2{b5difxx{O0d¿{#}Bb?%_})!zS.xm43UsX_ Vd=q*Gd5*@N\]x֧D Z^쭁FߐZV9F4\Yj+1wKamSlW~m _Aoz/=3.S'P^SNzg:ܝqԣttߖ' ;]]rs[D!:M2$i9|VoC.apQfad/'z3z. _㑈E}` pc?Ņ}?RrTԊ590s5Fpr ?U Eڊ(ϳ?Տi%Z^8eC?yWՈn4Ka{ք8E86| vm?tuƕڣޗ6m8Cۧyrc1Ta$m3P  1{ FźFºjCϞ8x,A3`r]\z/ia %>#?%K&"tFҜ$?g@}[ߣ o}"ѕY;w]j38~BQb< 'pUN&eH8俺.7<_̩,G̺L 0@׆|gްpqM.tiKR2gf`իYW{zpwz8=czů.d۽A3MsMz W*B Dc/~?ߘ(TEN$kɤ~H&Q/Rf|2.aߋwZf 4⮩j8SjCq lIj@6zRpM瑘jϮHԆ3-{\Y!N,]L+e f<đQ]9 ƤYV7o:.klR:Oa{ޯCQsmńKrkAAor_JKD>9D&n %.ovdv7۫g]fzmRT@J0잣6eυ):Jb5a^WDZXpX(w86ތ)}ˡty$ջ",𧎟xNBӬZ(xz* JE5Ç|/~e3mx=X6=i0'9FU@ʼnX\wL ~"Q7 ^o, uKGf4ER4軃 -$1Е:l t.|YPt !@ dbG951RWݢTď GQ^؊|QFJ(w[$ʢj?'P~Pl}ŠBRBvףÊлU"Νɣ4ڐ%,q4=/ZUgG}нF~K4?e錽ddE}^<"ސM"'B5Vb5a1ʩ GuVa7|:]P}D'V~75̈ݱWƶB)!Y5ѣN1U }u2M 2&: TO}fښggzYkH/-/_4ZDž1 FAQ4/u|q\PCEo?#tQ H,r},dy_!CBT;ާc>[O(ӠfDㄶüWe:Ca[; ↏ I&1MV-TъTJעzUX ubǵ zּBƮE p8ؗԈ6jkKESrF05&pC[SpCz;yF*6@C\ЦLTaX8#c=ul]~ʫ]s&ŷ=ڪϏ}=5?QiȃFΫ")<%cJT ¥/SR NpKjޯkQG; qҨyo'2c:>E ~M;g5b)C\"u0+r\gbu#c: ٌ͋NTNgOjwz@F#a:RM< _ rQUegA/<\nT *,dY信# 9 V/ !y h:G͉@z{T- |0RzK|YjpB~)FrB./.oLWSHЗ9&48ch >6u ^yz.8yǺEƴ@i9 !5mФQZ<\'^*#˜~ufb|6)xnïق݌j&[^yI R7y5Mk%[-Wte/Q6O_DSFp {C̗>9{aI2GD bW[µnD;G`:~hHA[Duz. WIkxWKp_|JR^fW.UkvC ۯ򕇽a+ azPQ>ز34OwF'ct qg =t(KIi*oo:zc5!m"%deu#w*!Nz2yO/qkK D=¤vs^qӵ>.?|*鞌N>t8+c;ιASC@7v`+8uft$L8|+쁄+[ }DERӞ+|=VӋ< tcr2 c\)u*I3۹,*Hлϭ6dUg> {>en2HI(K>+djMbdt$ȓ> _~2ܾ͋w[HʹNS[=!`O>3F]1U`R+\9)")F k7;XqU-ai92L~_<oi0<c7]s}!G)7Vf1C`a_XjLRTM&dې.o_#T4E˫hζ:t/m/[mxm^R"ƒ&0"j}mvכJ˫S 49WڽedE#Z8DR=K#ӥOJ@ ;ZCIblow,KLӄtY2Hlb…c =b7[ڕ{G̡;^RrHj!~PteW&7O2 .~)N*\ ӣ}mv-~Ƶ Nyl|NHy+qw ;~$ ,׵ [ =]GoՓ-FFJN:7p Ff%y1/9=G*xT[kqٻ̅4CTn;Ӂ h3وV}MXP9)W6wK+9Ji7_}G!zE@ m1Y񿸉Ǥ鞃\V_'Mg6V^N$FSW*"WSvwmR_OL^"`=OpA)ٝ<m-M;yvd,CH}Ӗݎ拇Ŕp}I rݬ +:;?&B"D8A7Յ.kϛGJiQg'tgaN'6xuF}k jYD3+W)8.t'(dDx85%Q_/̑eDc x=O`aA :t4EFTx,[`,GkhQ_l\sqZ.Zg=@_ &]R5Od_C7̖.Kvx8B}of"39 vقջNi9s GXxtY --(7q'=. opW=|Bu*b}Vع; ͹ [`N 7d ̠^̳ʂBj$r⯅:%z gҬr'Վ1loVժToe[4⥦8O{r߳ܽ3ShT128ɒ jW5_F}Դ VGo`ڌ@EjK\a4."et)]N?X^0rܞR}]ht_\ ڜ, )}'Rbkl׆-˴9q4L Kʴ2 \ G/}VOŖrsAC2;ê,>Gm;$IcZk7~x>r-eyވWe O<8x^G#߁>fe[pt>:o/#j (]û0'ےCFbv=Py8 T/we!"f36ȳݴ(UN5v*JBTp[Iڔq"gC:k%W%N9]Y%.S$`w67D.biq\A* Ÿ^vj܊O7(yޏf,J` hr6tϔGKH.4XUg=ej1 ͦƁf7el!*0IM?'O}ٺ.8[0g F,4;}36k(Y>{緑$MbxY>|Qhzs~a1sIYYDJ͞;Տ"T=_֪zT3dXS+Z*8{$Pnb6t:F۶E6'?QʅS'=g6"|izzX"W(bȻ:FNJ@}1ֿԾQo ʿrry7HQ4!U #}9/čp9BN&g$A" !}Ĵה(\y۹ؒjXi.wUM<`>oT콎}9Gcc3'Mb971QgW>"-ejUEG?K?'[4<>6,H7m-DKCݧe"Z"5ǻ֝!MgS214.b'E+vFۺ$:-Ի3^_ DmPۜWU 6o__nE[-a#s.u9 J<@n\\-FS%\>K%w0DV_zɻج9LgcGMnS 4˸/L HęBt<b_5agK )E[}ŽzAF"{gz \"Gͷ?g\?FM0\ NO>2m aP9Uj̘ïXޕ]m9 AP|.mBzJfhj/-J+0{V-xd -M%K _B+e$nk8lvOĹp; bk+MkTUs2Di>.҅hVA;IX_{J7Qqj<6i k18%bY/qg8XxcŊ1{lmlR-wf#S4X"|x&Kyg{X|K}F2TF%gƧ »>y ф8['vC};A°$(T`%鋾e1хpRFԡ&׫Ur础u=5. 5A|% O/XQP 6򩺞 D=u;-統$y"[H]0b0GNZTfʗhh>2fё !3TtVZr5^ &>pc1#0 q~pT(QDr:v'u[?|g7;9+ca6ݭJ//RQD\0砭/dJá]EO4wReib)gVmg//9˵6;{ W=!ͧ YI-J<$o5<: ]C:d#ǘ~}.^dfCO"c*)oaOd~BT؉6 A;~oV8,]D¤uZs#X,{E7[`q1&c=$>ʭ@110V;&="󔃦2 8[M\٦EuޤB̮QR& e9%2]|pX6Ch %+y'j]߿e3ZxoM&ڵO*JA֮UXE̓@p+r)qJ_nElTABϒdlܹE ߀SFi5=BOfMt#MiNrPoXJ:L8Bd8z÷J5ȯ-#`3_h^+z*{m7B;rn`fV4H藆7pc΋hdU}~q;߅:U–xZ0!v7K'jN@% "+6  VۃNEƼs|SZU!Se^ D}N׿R;q %~]U?ԲN}\a?䪆st L *$_uɇxpP-=`zL2/ȋGzR>ED{_ jZ#No ze+ %&$F.UɰH{ @y m n7ױH'c[*=S׽"!Gͯ~&,_OgM'շg_pLSqA}FkRU/CW1Rp)+dHd*(1dJՀ v}-MGHLyj)˕3J݄߭wt-a:(Ѓܸ za菬{C(9ڲ)?ѝ7"x#fX\Ae Jiq_i=:>rŊ OQ8XTUnYه,ߞ{mb CQ7^җaB,+tR˧q/\D\)ޯt %dhPX vPY={th4&4Mkfm[ox}brK::1۷@coB}&9EV$ gmރ+&FW=iۊ)] \K#Kn{ .P'A. $L#!Hk ?,"*^GJmŌ{H/3aʜrf/d}Sf4Ԉ ۧێ<xkSJ qeRw+1LBJBGS&-J}П0i‘Z,g4 Zpy<ͳ8嚚NN[JdExa kO4PsM{V|G] )}%żfJDW-F45~jp7~A k@Mxk٢Dv%H\QK?e{J t^{]*U{ǰg8"şLD! "jl xŸ0< `O)gFneT;sS(Ѻ'L*y9ZbhbGne5K<=T :BN`pd[ni+שFUq) aXsq//2Nb/##6e#d׋ dr&?{WoRK-fg^nMOj3F1LV^'Lx!F2fW$@ۈҚ(}FL$q@0`{~՘~4ަHp{6sG{=\[~@mgIҶ,@R;` (x Zm FKӠDO1)1l97˽z,~5/]>־@A+J{rͺrwBߊA6п-|ƪ6!c<=-<]_=doHھ SdAz))ZC٫x?؏Jd&%NAs- FZ0|r #{?3OBٟ&G+ 1>4Huc/'j.x{&4K]pcpv?x|iETDde,8vBVRuCtQ%棞 aF> Rv@Y'M V-8BGD.q5L6Z?+Bl9Mjtk#{uNHoyF܈lE5BnU5ͫiCCV;$-!a-nܩRW qku@o3 Vݺ@gKAD. I;9(%uxN.O0-[?!hz5)2,)|AәSG> \a?^2J+qW> "޹aεϓzET{ʵ٫L W\[ʁaA]8/UIFE4n\UP[8"b?G>qNCzs2Uwzu-j|%#(.7[1 ^,!m}̼$YW+ͧ*os?N PwV/^1NWid[dS'jCU.z\fmi繱kb^SVD']DQ;Z(Z;Q@x@/:z> 0qq^"1wmERnC< TZf/9#iyW2 `T|MΦ!<EH(v:#Vތ4{:#h叞N`y\>2Ka%%bF#49q-^ܽ"!w,,,"H{gk>opYky0dyVYvfC| 8"ԥM?[b6?6V6a* 磑r+O&:\M(BꜛFy˂U4kة eW9{6g۫ge{ ]/B 7bI8@!$8R gS3magKw=O-i+4-;Ov[qfnp{ۦjxGQMc/H»lEx;jU "W&yr291}(&>I@Vc-0$4~&W(h#`"\?'nu Q(iS0e-.פX,萂QξU __:٣t%Ǖ.&[3FM7{J\2C_uP-lm7 mFgLGW%{gxH>դlF9#wYscFq.2T_A%!Q)rWk)(@ >g Nw1DΠ 8¿:2^*Wcj/d[`_>Ӽ0Z-scƀMO?! f };7JOtM3ԃlAq|*{ ԢTtMGT O" [}l^ݦlL0شS& c~%td}XไVp ˯i}6|!;,2h,AaQ9Z!i$p#b jD$9>rt݈anZF$l0y $ +R yIȲj288ZY{ꄈ}K5ǒPUoA9b(w0}ƥc7]wW\8[7TD۝~/f~cYk-=/v' +~ X -qk >Cr!dQḟ5-<r^f:+\FRtRБ 1Cǻ{m|@4ߐ eLP(ZӼݕ}u±cQ{%&ԝ/oD9FEtq*VǑ:Mp( 馤䚞 ]t@'&ͺ]o3[ugOI}&њU54k~88HQ"B猓aYl MJ;}(mX+ҽ1NMG+cp 6*nsm۶m۶me۶m۶mo}~!J2f lhb6L_{RY>s6Z_FVK[&Ic{+HLw a.\ r_# cʨ&bG ?h3!18ƀasӄHQ?E~nP‡ߊ-Moe:M.,UzP2;Bk3tbTgXzIpi.Hұ7XKD]f.+ k($FJCv;vπUL1kt p*nY Tx΅Ƞ(f?,C&;K֚E +g pU=Rh'Bzqz(gM"Q=lpڃ"*Eg>n z?"= 0o׊ٱ/-?j>Vx$sI6?-7!(5`B~;$8ibG2ѥ4ӦA K=Rh{d fe}]Ng_X aD)IC:ewMԆguKEh{OYp쇟`lTy. P`9eXeGګݜOP13@"H+ixp %0'Q6_O_|ӝ02g=9OSXRA .Z~!rbg _\$Stm=>Ѝյ '-Q4ƔLʌ[rҤ 6P9-Z{E P [{>Yt Q)w6U UQ9p3iDkDadU˵!_'͜B&j'ԣ`?u͘ޗ-Vkj%$9;͜Pam po񻮊#•K#gHRSL7{B>qow ӃPf*+_'4y aج\%MSAz}c M$U/Cx\%91 pG{JgBlSVm#ŐvqMmh0 .3@BkAiIgkJ5n~UBDk0j;Q;z8'GeI"}s8lU6(b|ɡ\뎙A:ɻ)Hn< :#t*/LYj+uVش JU()s?#y!O;GPLPl6.cEHEgВ&KF^b*f:NC9rAoΠYdׄ?-P.ZjF|AӃ̃U0(cXp9%lZˠ@YoKYռ`5BГʵF6nD.w'0THnē؏Z Ƭ'ߚmY$uqn8ef"F&%[Ky$BL-Ƀs; ۏf fyP:}5JR@{O0c.b[{]X+=ہ'KCY/6!>Qzfˈ!G@lq)K *8NH@@5#1:VK^zX27cr2^"UP4Ώb{fTd77I;_rAj^#٘Soa~UYp 'I /xSVeqMwtk:^yڢic=qmGn?LVnrl^pȚr]iLsoެ9&Ȩ<Ԥ:mA٭2@RS> B[ML*ܤUvlGk+IG*g,MmW,(\+5 Ѿa=RowB\~Ċj; }ԤRl-և|a?MTI6 5UK֗PKQ9n2RN&F HihLF@J앳 z ߚљKvx2B"A |t1 -f`tuUeբ$* KDp9vPΨlD/ B_\Un,?y39V@yar&ExT1E$J '7lia4:)+(\:K;:MW|&:%>g&v `ո"F A9?S<{.#w\50;ήu_e:Z4@dbJ5}$fH5bD^ pۤ)q.,ptZֲ_;@v%—DskO}/Cw OV{drADP,J0ҕ4A㱬s"Par.-8eѤ$8x_6Hd=HTR$!/L8DEL߰${4\Q+3%W)M S,JO6 SQC\֣SW3h=-|gQ Τg:%5[R"!+@p7pqIA3~STsʠ}_Fx "8HWVQj Kyub^>t@#uB  ȓEfPL#O$\Q&eES?˫3&VLU]Z!|w!̆{kvhv!֗XgUAvE"<0Ą0El\n8⬰cXDŽ8AG[14^EG7IN܁ <5Bh1eC}k%N,ifcC]B?CODTew#6X 1ņbY/G 7?e;ń0@ )Hxe|:& 8W"V `50Z]ߙI7Q'}~mmkz`Gޠzm) us\LetG;v‘Aq-o^!$D_B?pҝ}|Zk$9‚y`kϜH2_^3lcq;c@:M^ v`gGߢ1OEAN$]:<9w ܥ"J0y ibiʈ7>gj^ȏȪ2pZJANA?-λ4} ,Pf3h\tKd`@ܪgM8fo_N 9՚Y==҂1#uLjOxehԎjץi GPwm2s^H*E>Px1qeZHftcyjOLJ^7{PL;wҦ"4anjVs>6#=S}ϓ=C\sm`9[ \2ѝCV 5: ?2.gͪb#ƑwKD;LW' }~o}.]V9h-1')5 {$){مNU~xe 6\mk#}vÆJ#:[|ja=0"$WŠ=}"3TbnNkye i~K pNmzDsbmwgy^<~P^ btDmVT0l >KƁFY<'}y!tj/CNЁC`dnrSP3`I֏x+Zjo+6183]F*MR]L4 keScr0M\D'@kh'mH,qP-Ș$0<ס zuWK|KQ&UԨ.>$D$G1j0Lu l9-oEr|Tm̍=ajh3hFmߎZ?!y m J|0Cad3΃1N/[o|hA%f3 x Y3}@@H?J8av~T^㉻Y*JBpd(`I_$M+he va[ʙLp$T5?zܷawj)3XNc{+Hj,Psp51 (5n DcŤDLvnC爵(X;ozeI J 9: %ڬT932#u0-5<|'?jH0Y{0VHz/zes \`bucqH.1t 2n[Fr,E]Pwu%BuNQp0ͯ4*q'/4ycÈZ{ieĹݰq@`U > 1q.! x7N)ap+p&2m[ {,)T[+Jaj+^|4ii@2Z48+vC4v/>m1!প<jxZ +/3,Pmo{G ha$_(=chbd}fQ_Vӻ;Q4Mm_0Sdpe'>1)ZA RYKsZsҩ`kh@V-Pa*ˋQK8S=knE9]~p:]ȟ%WB"n$bٞV{>NOi_m̍% JYTH2whFr?G?J&&([5Ԓ D:16ChJ FYyo$ 䩺p~JmD@qWxƗb6^Nb!6}f 2$A2 _VQWǞWLRxHT*QvK,II={oK+b̸xƞ4KK' .bXގ7k3!tL,?m^oA p>y:)PU)|@K6R2-PgeD(kp`Bfc:LllvĠq<$k+: KƏ3H5|~XX 'z񟻕 L߲ ^it_4!Mҡؿٮ4 vXr8#}ipj ]8DCD /@&p(L%%n|U+F;Y` P麎b|\"ZYӭpp/9(.d9d-_3Tѳ-w!߁WYJLMpr˧=c˪n6ɻU s:J@2W?'?Ǿ!-['r@i?BOÔʡz.,pQ&Mo*nv`CSF}~ULv폿gwuz?Z}6$AazNǿ=%v#EH;Dmgʂmմ_)*xqOn.I(ax]&- \۟=){]P'it2On OA* as/1*2Ja FNHzKqUpPq\oIJg{BoCrWG7t޽.?AZ`󔒺 zbWȽ4P2!6,ミ,YxV~=PuZ>y#J@HqdЦjCE!g\H `\R8{B=Yʧ4]ӲQJ=RdTrkŸ\S2ӡ^UFSD"遥J:XqG˥RLgƜqO3Ri 5#@)%l32q[gG=+ ~AV4[`Mx}S?ҋ%|s/oa W%DR7uADwi{,*LToaQ};*VFS$v[B'KPXINWI_6Y3eF3o+jlfHs[]rev*?5"#T*-l[L\ Lw;$Zw\y s\olu1qz(<W>H g*ȵHx)`kB Z:{<ȞV#ՖJA8&mTC2Q!V|;!#B5юzt S]lSb P/zXOyzuy8)GW(di&LVM@y9Ͽ%$Zɫ?3ј`Kn g%lZ|/ZM+: q;?mC䤫㚏*ZD+`z3k_AhA7e9WENdDPdN|<] TgݥRwRE ̫T؏݋GȰ8ϝ~@&!hP|q'UE7Ų}q(эT#YFT)-p6vmlfؼBbw@<LECn5JLU']шo}pXםt$([ʝ #`Y@2E5n*I'?$b?| 왿ʘ8H2@xYҳk}(5A6\J{9z mtc%x/EjN<)rJZ0!s7G#;j !cxֺNj^EǾx'ڟ7x@gg~t݂UXl Ic=+YTN^L׹hyQ |Ѳ0" f(\9`Jӕdq!07:[;<_)/"18d5ctTy:OP3ͳmNҩ3_r$˽xѻj)WÿSoy[8vA7ᦩ_!<EOOc_^uwb49 K_sv!XJ)͡$`n];ڤN{a6W)S?{ !k+9]ikep-$La3$NG5y2YO&N"YqB0l2NU@] Ϡ)@J )rj[R;YnL+Hn7et8[Pc*tJF ,+6isJѥ!6pD 4^QqN&I(0O@#ݣR*!wӐ^w|p}%yXPI-,l'!^_|G~X_ L_Cy5m|BqpUR>akDFݑwgЬdDw1䟣/5tS+,?{WWsH$r@á* 5̴_\NSJ!xa Ջe4%u.BO`Pb GV||jZɭ𪰆adfSkC(xYJwmBD(^{mJBQ][CX:(t+Smӓy5>:chQUPb)җIGF%ZSe\";L<@M~soeFbi=Y!m ʱ~];ڱ\ he+CO<ĩBLRRIujQҼV17&P`g]tıY7omDJ͋xh䭈 i/x"D5K("!BS3tW;fFu$r'P!m &㯤!4[,&TRʗ>uR+,.c5>O- E9*aTDY2LCXlE(#5Rl!{r >=th;%4(` 3E*7y_݋rl"-Yf}?f2 "Ar/&"9r̿N;Ip/l.}4ލѥW,::>)*XDwT27MPs8=u mw@X q>-I ˡGLp Ex~; , X`H090vSZ>osێˇvR$)1ye) T*TgȑaG EFAY"EC\™`mpmA$V#E@4ئ< :2!ꇑKq`Lʺ>X^ʿKW~qѮ9{-W/Qہ&) !EWfv< xg1Ǒv3u$A>`P%i ]TWGͰ*$ک.&]/<}^ Z5cc<yU ER^}ǀwtKOUƻ(K#_?ww,v_Kh'q 2SuaG4-))*0ifF8H96XhDN6]\i_;i#5܆)vU5vo6ޓ.UpQO $A^a6g-$}m-7F-ux͒HWϳS@ˊa14~óW'Shm"uQn!H!Eo^fAdY!1gN l$2gQ,}zCc@^^I_%Vt4yl/L*XD'41J=^EAf!@*ӽ=\dmwxh:x!ߧX7U^e3n =;ճ!G_sz#-}ڦ-j}_ALĖo$bmDY N}TK]+M^Fr!q4 ]UK S2M:mY"Iڤ}K`sRrL%$#r|'P2Ϗ/56c!1OWd|옏=?(Q&FE^Y3)w9P[,ߡknf[jݺA\:L\9gMu.% R9_⮑@l.w ۺ]r0L~ A!8F~0kUT{1 s{(=%KgY:3"`^E*ܐ ss 'a`%o{-Zf!Ј[Ps?dʂ(! Jvڡvu{$"{YY:(RFG%Uﻕ8HQi/3r E_2_8Wb@t#Oɺ<"~Җх ɇ_Oރ҂j5heAū^@qSX Lj8,Q_oMvMG7sZeVb,cЩ+w etX%WOJy)8N>x 5M< f5$LlYlN}c~7vٗVTu9 +tfH0!#&_O Xȓf&XF&=D&:ҕ?GƄ@I%Vc&+H<9|bB3Rsgv8V{5y+!@2Erw&L(5(qKw?xQل9w!a4rc'wķ5>؍ra:q@ CN:o}L=l@\Ǥ O uFyW9i2\oZ6;8$*Cޞz$sH<|]n1c -l_em]Xc:hoOX8\\k%*JV%Z^sVYPnhKZG/EImQa%a}vcI\<$RI#qHHif 3ȣrqstz?VzwƘtzlum:Qe gaR;D$_Xh>yD· r->mǂno +vbeP@;UQnjȻ*<ƾ9ԕVq!Ѭo KR[ WNN ?pH*|=!&5,bK3 gG+mub`~{l7dV敽2Ršr: }g{H%^կX6k)ߪxtĤT_Zj"|IkՓ*YPS[TN}yĨ]$}5B;EfFZfBMC™4sbA2%'Ʊ!| 'N AibN]]:A16" ]6hѧ_QmM%BX.s Tãny݄aB/ǻkky=deZ )s#Jϗ ɝGSVt5u"dlgRz?> ReCGrql%\OwPrcj'@?rf f<-&: 3C0(I[LPw<&InR̖Ya\ʛn?7ĈߝLZE{si{tfA eV?5]:!&̶5f^@|2NW$4NT zEgDMxԾ6o\v%8UrBNcZ{Z \En=LWeqbktD}CzOUu h̤P$#?匔鈂],r)A)9Љ>iŶQ A=g7ⅵ=Y]TF.[XaiU#9>1j,f_ SnݫC^7𒮏 3!d ›H*W2^)τ|_Wt3P*d%-S yѨs6g92Q /<%ʵ066`\z9淈rE/H*8e:m&26_hlڎ˿] QGs=bS0 e Y<ҵ҆UM~.[5A{?v%rvdqB 'se@H"E>Iq{kR/Inٙ#7\Bt{Lu0R0$|M L1%HH~?9c#<{Zzv$^v%4%9m^0-YV ,5 v F4sÕl}"Ƈ~ŋЦ /GҥR!ӹ,YEۜ^sfUgZ[(sD1qx|\zo͚ٱ!x&x&< b~ }30KЯod 燍q˂+ʷR%W 9msH xO U kaf9comDϙO:ћåʿk=o&H8{h]Qdž5){QIdg]4]: .RIS n5}|*cA#ztTA{\V*cs1tCi~<>,u5v-}8"t¯r1;Xt#t HE[Iyfn.TOjXuʰ*^Lnp\NcYWr&s7$s3!(IPhHP뽽hۓOMcT4Ixg{nm{&v=WEЫ^{.7_\libK8l(tQJoA%XYixc:ʭ`ϩ$mX'ƵM02"pB*~Q Pn7q ?_:&u?ف3O#{78\T֨7R0LW47oևqeo Ҡ_`r,>Kv&I .3˷u1;Zuwm/cx&H3~H* E}fP]loE0tƊ*SU0p!꩕V LR*08 1k I_Cpzf#?ϵAʔ)_z&{SqRs8Cg߶p%ӏgM/bW';bfwѷզ6JB?Pd!W['AxV퇩m8f'o[1v7E~'/2T澣3t>GB5b_fdnӚɤtj1j_ I0Vq **:N h.ȫtl8O(^:rN0[%< O7 4t03QIq ͈ip&d8OtPpQft6ίUHi6IBk5pZ=ƿEF5'5$b}L5H`m~=02b̋Hkgڕ#ebWi* s zi oD%Ff(DLbΤ̗ԸXEdt-/ƋӪ3 X=E7%FNߕPg4^0A5TM񋭩!@g2<d=y K)r*yc2Hgo;@ylϩID\¶G%c&ahVd{ߢ{cR  YeҐ%9ESHƳt. '^qk\7+Ը%QhOKauQ;!=>h0g=~'}~d_)3*T`4aq\"oAֶAӛDָ2'Jdt q\Vڗ>; LTzA#>SD \Z9R :䟩 GJhr[&OÞRD~WjvNT1kF@e&e7Mu؊5*uVFu) ;{;{WCoJ3n/)35q⎦2G0+ \{n|5*f"q%ۋ۝Y,RQG'ӝRe Wug%7&?bP G޻{=ͦ.|݁\L4c]p@F0d=hyۚnA/y9P~dWm*go485@g}`Y~Q߂TLpZQBMh3ppdCj\Kj Cs䔴k:ZcsQf?TS&&qp״a/'˕k37.Os,ff<׾GN3G+V as~QVIalFJ8 4U4JI4 YVy\j贊jiő&s@cO8yl u7uђ\N3/IVI~\/njxFg3L]]`2 oRP_`݆4a!`#(.m'NO%!S?!tۛJfgI"[ٌPH<r>8N.){$ $.Q w%/:8}Kz5ctOGS<<>F_oCN*gtȾ>*/l!:lN:CaR>=LRV'>bڿ`luns&\$׌Ƃ(]\; geMBz=6yhkAT/OIJ;*rI '/ZDdXΆ_imj Dru QDW'?*#e}ٗgr;;MŽE?U:5Oږ)BE^480> K<̝<:2$R;ڿ1(oqb %I%#=)bR.$M94ߵۃ.Dx^mf = F -}*Ɗk"ti5]}X}5zµE PF LAvbnԂ&^x|rd658ˬdeݲ#S"(!+i`Ĥ\^EEs҆_Y1uPJܒ0Vmyl6Y1H/Ul3?gD<w4ht ZXy8﻽xɊ ϙݒ3M¿):d25K'K.qrdod/KL<.˰X+;$d{RrL9ăd5dp~ 3k/`#ӿR)!?)W.f!LRFچ x{Iv㤾<vp)oH;u[Y, As3{MLnA }CuBq?𫃞V‘ʓ̤5tQt\ߏHƧ>Gg/Ň5'ɅSR ])#ѪUq|_;xky4_)~27(U%ns+$pPʧs],'H́'$4@EҏxK)4Cod9 uVW,g9|4!;a SBzzޖͻ#"gaHyA7*ɡ@ЅņԼ&«!6cϳs*Xnj4h$DE%^&24Օ3N%-5ōrKeK:_E;Nb9|.4m3'`&]Yl8)XʀGf_v<6*$1ᩆxxb* qP r̟&&W9\!`TtGM;x@mϸqbWpN"z1BUn4"ȖuI~wjN>%itʓՐz+.V >_"M-H!.&O 0J&,# c&!g0ȳJM(55aba-eQ9^"<.ᵶ}Uf`Ʉ0np.^ N{8Ҡ)$TK< VG/•3΍lI+ `)>:UAQM%ۛ f->$\WY2:M# '53P:9 L=pEsd'+Tu!y{3 iOm{T-HR#}[ Qm&cPС}#iiFAhP1+0/׋mxI`@g6: O%s"XSAaeD[[RUk+I,ЎgmnW(G*Tkzو"8 endstream endobj 54 0 obj << /Length 696 /Filter /FlateDecode >> stream xmTMo0Wx$ ! 8l[jWHL7IPV=M̼ su;Uٛ=w]yil;<[[j<=?׾+v`&ߴț<^*;~&Q>MS >_P{=s@dkx;`VY`s4JaQܡn.Uu9\Y6><ٴ.Z.4>Dӗ}~r:-d0VWk,8yLһʮӮђ[*mLr?q 5F8@=@)& 8Rx uD\j2HV0CzL] bctI g$`htы0\F0s jd< I6zg W qȐ+#k .bsrbmXK7ǵH7Gnb>&jؐu1VljOu$՟qWS/%1{\xB!K(hHTЖ枃Jρϯv=k2UKς_:~$/ ~E+7ˢ/ l(/} -+ZXukoԝE?ZKq endstream endobj 55 0 obj << /Length 739 /Filter /FlateDecode >> stream xmUMo0WxvHUdCmU^!1H#x?gx]OTm$|͜s_Iss :L;<Sz==׾f`*_`ɫڟk3'iѴ}=M;7rfnj-eSӵOLg~8 )ok A8 $`I\3`Af<Z]! xNky"7 _㓧q H`nḱRONH=CpB:# =%888QA~!*zƜАT?!~> tw8y*sύ }nFE>7*QύR>7G];~<6OIyktg>O:yұϓN|I/|yIg>O:y҅ϓ.}2 L> stream x}UMk0WhFCۖ,{Mlh$73nw҃ͳ,]}{\Olo$ɝиI}s \wwu8{SC߬Y]j7KF½ Q5&z& h<ϯK)ٔ?pݝ2ZkXvm)85];B7gѻ9x~;a`>W'?y:o&> ݋L'/㫃Bnz_7_t|~;:ذƦoiܰ^\0zu\7g"NFsu_E07H6!L@@B@q\s *Tg ]8 i/nTvc-+>c_ZZ~Z83z3[:ޭ ߬Lg3t3-g B|B|\3gg|2?z)BXIAup*^+&#sU-'H8qɼe5A78{Y-7^=!U endstream endobj 57 0 obj << /Length 866 /Filter /FlateDecode >> stream x}UMo0+J! ᫊"Rj.RI73W3njNelܬ;WW\?pu4{SlY]jwOusR^u5sx0ZYs.G7fԝ_= S)E~ 2~}[4v "N'oGQ70j,#z7o;l,j'Ouc׿zr<:Q:XTߙOoGB ;ww ZԲWL)\]W|, MHS"#p #>y| #:##0)%V 55)FњSjR@J]!5w+>7+>S} u B|)W|FL| ,B/^ &+jRP׊C8ƒI\U E'j\2wAsGMMD>Nwq8"妋:9 endstream endobj 58 0 obj << /Length 866 /Filter /FlateDecode >> stream x}UMo0+J! ᫊"Rj.RI73W3njNelܬ;WW\?pu4{SlY]jwOusR^u5sx0ֳ0;]nL#;z,gS t;en>r8S0qj>w};B U5gѻ9x};a`TG?y:o&ߏE]&AjZu/?v_t|z;:ذfhkܸ_\zu \7g"NyOܵڿB`ilB =@ )U 9yI(J5<T` M55֜RhR 1ڟS(yq( buX& &q,1+N978Nsk`q8 ^8% FMq.5Sh@kO ׏p$q1/]}/ĩ»p^`D3F?x[a 1ec!/1g)cd?4dK^| МQV1Կ'1t?ƺ9Y?ГrYs֟'g)437YgD3\ib-z3zs ,>G|ZV|ƾ3ֵ33qgng3tZ[Yog,g[3 =L3z/gd ,gz)R؇O5_TTV *M2GZN(:pTy 8kn":qw{Y-7]%# endstream endobj 59 0 obj << /Length 867 /Filter /FlateDecode >> stream x}Un0CƆ"Rjn"73iwWU񛇱='$I}s=}}N=C'u]U;o_ϝ>'eP~&&O''3Hyڝ^ S)E~;en!jأc4qjz( 3F&Vݮ=Ɉ>8~;D>i|#7~_ga}>^=(-P7cjȨW1 kl֏Gsj4s&텻 \݄Wb MLS!"q #u!`Nȩ(( LFUjp49cIMh ,hPE4pbvŢ !\΀Ѹ 8!\=#2:x 1v9/8vӺuSqk4 "nXCI8'ľ&p 2<Wcǘ,_8Ϳ1bxb Ài',ymƌ&Q/kC^،1ۜ1q, Vu 3/d Ͷb l͘S&Ş c,Xu ֟_~CO` ?'>ψ:sh.Xgo\΄rYgBЏ>;gX|&}ggg݉gt3zw3|s3߉YX/gKzJrg^od ,gz)R؇O5_qTԼV j M2GFN(:pTy 8kn":qz~Y[rbtDn endstream endobj 60 0 obj << /Length 866 /Filter /FlateDecode >> stream x}UMo0+J! ᫊"Rjn" W3nj<4nV~ߝoGM?k]{7[7rSmtɛy=TCA:fzgdf)OS`)?>RTC)s}`ݵeDcc0qj~?t 3&TdDBmq`TG?9N CC? F`RޗS/~g> ilXcӷn<7,^e]׵͙Ssu_U4H6!L@@B@q\s *Cn!>_33/>?㓁EK!c?RMO #SZ1|8Gxp4aj9DQK.h ljeuOȢnE}MA endstream endobj 61 0 obj << /Length 866 /Filter /FlateDecode >> stream x}UMo0+J! ᫊"Rjn"B73W3njehܬ;WWU\8׺v=ߩonTtƓ7]ziTCA:fzg 4R㫧~R~J}6O7}w̭uזSIе(TPfw۷莛n˥?8ޛ`~?n8t/3NbV+պ};:5wɩƆ56}Χ]]₥+U9q~=W(_KdR$| 4hd52HHNsL FU*q8cMMh QEk%RWp gn~ȋCam `42W0A/c9^'-pʹ)pq[[i])9^W5js7 Gb_#xb~ ' ˏ1}cLu'No ޅ0&1Ie76Z cx-~`& y%Q?K'!/h],KV0d 1էM=Ռ3g1Y ~i?'?!>L9g)q:#eNC?lыѣc`83ֲ3#>w+>Cӊ݊͊T_|~+>Cg!>cB|/g)g{!>_|&~'a9K!B>,TGbPq> stream x}TMo0+J6*ħöUSEj9߯ IVcf͏睟ݛ{)^؝}]u:vzyu|CW$nmmΑmq5)M{`qjS5NJJWG> endobj 11 0 obj << /Type /ObjStm /N 40 /First 297 /Length 2134 /Filter /FlateDecode >> stream xY[S;~n5KUSCCxp`oxL9~FPg%UZ/jI3LQL t'tLJf\@?N0iӖIͼYX@L i S *~ *ヱL9tp 2tҊi`LL3%eJY5ãUs l1I3B1Ϝhba,@H }UѬ*?*pP^ ;vZB S#$Q6o߆4kf'VԚX s."p:>?.g7w3v6Ai^eS3CٔG}B^!Reɨ,[9$_Di[0橑:wu+y.UBumu  tDwJHK4;RTj jb#QZ7iHiTT-Azl&d!ô<$(Ny h_: 9uDKEt[+j%O_}/b UHR]QTS>Ou2{&F/UCkhғh%6]RF]S)+ѩaz) ʐ7 I.RQHPSkԗj줪tMCvrl79)LL>ɨ h Qg \K$.87F:ѥK%^@x^ADAmnQh}^Wd>D- IB&eIpuHckݲW,"M&PV.H|jO*ޤX#_DhFNj0c3$D-F%>%)džWҤ'Q rvF٩n)tt8%uP*XT1ZU(V2IsPHkZr>G4`nh18SJ"=i{I!qһ|\4^OWȾģ, С}Χlfs1ct171bãnC>r:έ*V>~x{#I\C(AoKTܲa=2Sdi[v|oOWa\wab (ҥ+3Їf"7po-w?G M_rwGy[‹)?vUnkx3ni-aVwڽDe2oT wvv(ǽ'EET{K[mmTfKu=],%{,?~u>Ë,%~ҟfb<Qo]T/ j^vgW'_C>,*v4|B oj2Lk}Oȥ4+w'!V'b% ?XdKz\䥔Jf,2 ǣH>V"`pE&J.E a~i$̶F ^\^CoTO}FѶ^@±NdܖrTh4+9vм2D4:'Kcf:5xaߡ%[HZyl 8gOdi'ln,i*kfBj,^pLXgņ<2ԈEޯumM_oՌV->.f}- 0lOY:6h F`#Z``'% ] /Length 204 /Filter /FlateDecode >> stream x˽n`yjE}&M*i (v5tbbp..Ut">gN)@ UMTœh(2xcwMmWW"H${a"2 EEm|1Qqq-")R"-nD(|-[eYXYUtsʓ+]xޯmyx>Ξgi-ʏ .w endstream endobj startxref 152138 %%EOF survey/inst/doc/precalibrated.Rnw0000644000176200001440000000611114233634027016625 0ustar liggesusers\documentclass{article} %\VignetteIndexEntry{Pre-calibrated weights} \usepackage{Sweave} \title{Making use of pre-calibrated weights} \begin{document} \maketitle \SweaveOpts{concordance=TRUE} Public-use data sets often come with weights that have been adjusted by post-stratification, raking, or calibration. It is standard practice to ignore this fact and treat the weights as if they were sampling weights. An alternative approach is to calibrate the weights again in R. This might seem impossible: calibration needs the population totals. But we know the population totals, because the effect of calibration is precisely that the estimated population totals match the true population totals. From version 4.2, the \texttt{svydesign} function has an option \texttt{calibrate.formula} to specify (as a model formula) the variables that the weights are already calibrated on. The weights will be recalibrated using this formula, to population totals estimated from the sample. The weights will not change --- they were already calibrated --- but information will be added to the survey design object to describe the calibration constraints and standard errors of estimates will change. Consider, for example, the \texttt{apiclus1} example. This is a cluster sample of 15 school districts in California <<>>= library(survey) data(api) dclus1 <- svydesign(id = ~dnum, weights = ~pw, data = apiclus1, fpc = ~fpc) @ The sampling weights \texttt{pw} are already calibrated to sum to the known number of schools in the population, 6194, but R does not know this: <<>>= sum(weights(dclus1)) dim(apipop) dclus1<-update(dclus1, one=rep(1,nrow(dclus1))) svytotal(~one,dclus1) @ The standard error should be zero, because the calibration procedure ensures that the the estimated total is exactly 6194. We could use \texttt{calibrate()} on the design object <<>>= cal_dclus1<-calibrate(dclus1, formula=~1, population=sum(weights(dclus1))) svytotal(~one,cal_dclus1) @ The standard errors have changed, but the weights haven't <<>>= summary(weights(cal_dclus1)/weights(dclus1)) @ With the new option to \texttt{svydesign} we can do the same thing when the object is created <<>>= precal_dclus1<-svydesign(id = ~dnum, weights = ~pw, data = apiclus1, fpc = ~fpc, calibrate.formula=~1) precal_dclus1<-update(precal_dclus1, one=rep(1,nrow(dclus1))) svytotal(~one,precal_dclus1) @ Calibrating to the population size simplifies the standard error relationship between mean and total <<>>= (enroll_t<-svytotal(~enroll, dclus1)) (enroll_m<-svymean(~enroll, dclus1)) SE(enroll_m) SE(enroll_t)/6194 (cenroll_t<-svytotal(~enroll, precal_dclus1)) (cenroll_m<-svymean(~enroll, precal_dclus1)) SE(cenroll_m) SE(cenroll_t)/6194 @ Because calibration in this way changes the standard errors but not the point estimates, it's critical that you {\em only use it when the weights are in fact already calibrated}. If not, the standard errors will be wrong. In particular, it is not valid to take a subset of a data set with calibrated weights and then pretend the subset was also calibrated on the same variables. \end{document} survey/inst/doc/domain.Rnw0000644000176200001440000000771611457435610015311 0ustar liggesusers\documentclass{article} \usepackage{url} %\VignetteIndexEntry{Estimates in subpopulations} \usepackage{Sweave} \author{Thomas Lumley} \title{Estimates in subpopulations.} \begin{document} \maketitle Estimating a mean or total in a subpopulation (domain) from a survey, eg the mean blood pressure in women, is not done simply by taking the subset of data in that subpopulation and pretending it is a new survey. This approach would give correct point estimates but incorrect standard errors. The standard way to derive domain means is as ratio estimators. I think it is easier to derive them as regression coefficients. These derivations are not important for R users, since subset operations on survey design objects automatically do the necessary adjustments, but they may be of interest. The various ways of constructing domain mean estimators are useful in quality control for the survey package, and some of the examples here are taken from \texttt{survey/tests/domain.R}. Suppose that in the artificial \texttt{fpc} data set we want to estimate the mean of \texttt{x} when \texttt{x>4}. <<>>= library(survey) data(fpc) dfpc<-svydesign(id=~psuid,strat=~stratid,weight=~weight,data=fpc,nest=TRUE) dsub<-subset(dfpc,x>4) svymean(~x,design=dsub) @ The \texttt{subset} function constructs a survey design object with information about this subpopulation and \texttt{svymean} computes the mean. The same operation can be done for a set of subpopulations with \texttt{svyby}. <<>>= svyby(~x,~I(x>4),design=dfpc, svymean) @ In a regression model with a binary covariate $Z$ and no intercept, there are two coefficients that estimate the mean of the outcome variable in the subpopulations with $Z=0$ and $Z=1$, so we can construct the domain mean estimator by regression. <<>>= summary(svyglm(x~I(x>4)+0,design=dfpc)) @ Finally, the classical derivation of the domain mean estimator is as a ratio where the numerator is $X$ for observations in the domain and 0 otherwise and the denominator is 1 for observations in the domain and 0 otherwise <<>>= svyratio(~I(x*(x>4)),~as.numeric(x>4), dfpc) @ The estimator is implemented by setting the sampling weight to zero for observations not in the domain. For most survey design objects this allows a reduction in memory use, since only the number of zero weights in each sampling unit needs to be kept. For more complicated survey designs, such as post-stratified designs, all the data are kept and there is no reduction in memory use. \subsection*{More complex examples} Verifying that \texttt{svymean} agrees with the ratio and regression derivations is particularly useful for more complicated designs where published examples are less readily available. This example shows calibration (GREG) estimators of domain means for the California Academic Performance Index (API). <<>>= data(api) dclus1<-svydesign(id=~dnum, weights=~pw, data=apiclus1, fpc=~fpc) pop.totals<-c(`(Intercept)`=6194, stypeH=755, stypeM=1018) gclus1 <- calibrate(dclus1, ~stype+api99, c(pop.totals, api99=3914069)) svymean(~api00, subset(gclus1, comp.imp=="Yes")) svyratio(~I(api00*(comp.imp=="Yes")), ~as.numeric(comp.imp=="Yes"), gclus1) summary(svyglm(api00~comp.imp-1, gclus1)) @ Two-stage samples with full finite-population corrections <<>>= data(mu284) dmu284<-svydesign(id=~id1+id2,fpc=~n1+n2, data=mu284) svymean(~y1, subset(dmu284,y1>40)) svyratio(~I(y1*(y1>40)),~as.numeric(y1>40),dmu284) summary(svyglm(y1~I(y1>40)+0,dmu284)) @ Stratified two-phase sampling of children with Wilm's Tumor, estimating relapse probability for those older than 3 years (36 months) at diagnosis <<>>= library("survival") data(nwtco) nwtco$incc2<-as.logical(with(nwtco, ifelse(rel | instit==2,1,rbinom(nrow(nwtco),1,.1)))) dccs8<-twophase(id=list(~seqno,~seqno), strata=list(NULL,~interaction(rel,stage,instit)), data=nwtco, subset=~incc2) svymean(~rel, subset(dccs8,age>36)) svyratio(~I(rel*as.numeric(age>36)), ~as.numeric(age>36), dccs8) summary(svyglm(rel~I(age>36)+0, dccs8)) @ \end{document} survey/inst/ucla-examples.pdf0000644000176200001440000027472011457435610016041 0ustar liggesusers%PDF-1.4 3 0 obj << /Length 1749 /Filter /FlateDecode >> stream xڵXIoFWT5 fA[E`+-Z!J_!hg{oqb&#](r].FTZlgt>6ET4I,U\gO]wx%O|.<{.GZ2#BSte~|#crby+t=䐪ȈÛؙ@1*cnȓnT2OQı։r.\Ϋpy<66]spj=Ȳ5цHZĻS^AW  G5)FKA+o&"w #+̨*Em79)eOReem|GsY.Tl3Pf#7[ةw"h[2 C'l8'Nn`-IPY'&$:Cg &.xy͏oOKvMjh{+ۣ/(dFOJD`K\3HmڡԤJ@Q<7L %#W-&5‡ o!$a XN}M4콏Y̝nh}-b{XRC.#t 67/O qxMj86y6Qrohw!bȧdS 0,fh+і@17L!8?eI)'hk4jqޫ>p$0sĿbU%猊񍪔Y(8yE` %% 66GVcT@+xrܳKNH߸HҲw! Xl˲83\JpBSѯ݇&Ȥ#ֻ1Zi 5K4dq^bVE=s:shO[CZq#IEª퉉-H wYk " rbܷiڿlBt;+%qWtXkGʟ57]6K(Nd~:K^amTp#PEԨp.6h/JPPd$%r*u@aTw-}_]`sCgݖ)|%v_0:Mu ֪ ||=.Pʝ*~SQ 5 @]N 7Us#mB{MiB׹O覫9]uI(C)Jf^~^&38nK6lMV*c> endobj 1 0 obj << /Font << /F34 6 0 R /F19 9 0 R /F8 12 0 R /F43 15 0 R /F45 18 0 R /F47 21 0 R /F48 24 0 R >> /ProcSet [ /PDF /Text ] >> endobj 28 0 obj << /Length 957 /Filter /FlateDecode >> stream xWo0~_QR8 !{4u6^ΥM"b';;{%NJv,g":h-3-#-hg8iݵکja0KM^,yDtIuY n*V"RAm*"iВh= 6U񹕂$ N5])SҭJ 1tn5T^EJ/gU,LxߦdGkxȭ6*jCJXe5LmyAV{ Syꚾyؒ qƝ#,Q bqV s l'lAXȝ7n;߶g9xۏKtƮ;,C{0x _!D_W\E`y.:~6JBR7 KJ/컅f !qSS>_+Mw\ݴk6UVsV*^,/R]ޞ~Y޿R+?R+2䟨}pKPVzOTڄc~bGU# 6tشYf4Q$ѹywfrp8NEGHjmM_eof`б$*Yb&Ux"Y}Qgcs=Bjހ<'fnod'nZ{/>,3ƇN5$YG[HP)zZc$CqWv6eKЌ AS˨⊜z.eS pK!Պ +|&Rm@W>tيd\eֽCMHMY%"7W=BW;Y+8Ht;VTz*HRYJa.vɊQ' endstream endobj 27 0 obj << /Type /Page /Contents 28 0 R /Resources 26 0 R /MediaBox [0 0 612 792] /Parent 25 0 R >> endobj 26 0 obj << /Font << /F43 15 0 R /F47 21 0 R /F8 12 0 R >> /ProcSet [ /PDF /Text ] >> endobj 31 0 obj << /Length 1200 /Filter /FlateDecode >> stream xWK60r(d4VŇ()h hA֋[z-Ïn{opf(A{H)9gWQVFf:Y52yJfߓr<ɥJIAS]i)0՞BLf&"K/*''@}"SOUz ccN3Xy :0vƞHtB#Lwj60>4d +L < ! ޳|,]{de 2zÑ_^0a< eI6ex<&$ LD@+bHrIA-A+4Ynπ$~9Y*/&L ͣcI[|P#gDݰJְ^ʪH[3铟74HB4ȮȫMZ:CcERe(q-;[c|b aPjP`R 疒i%e.BH\[Év(d%! &kXEPk2|a8 IRJi+hvMFfE/Xxzv`qyMRoR;< R(f[XY5p̈́fG (4h0טβHwkhn'kt*P Nn_N0s[=}=VN2}*vƋ[YY*($͞K m="/ۭEF'an iN$6@PhJ?VlgL{v܁ jmjHpvfn&-+ne9 u|h ϡ)CFܧCuLf-ӹ/_ oOZtnyBA;[9\0wuŭYۙo{ع}ZD|sq5۸cn""*XiXHpYTv:B1j{snR6Ƥ@#‡2jo&l]M!gX1b!Z[㟅A #qA;m!ОSH$5e/s}nl 78Ƭ!v- zSFH*/Soc#%xٕr_Ug OJJJ.2ubvg/endstream endobj 30 0 obj << /Type /Page /Contents 31 0 R /Resources 29 0 R /MediaBox [0 0 612 792] /Parent 25 0 R >> endobj 29 0 obj << /Font << /F47 21 0 R /F43 15 0 R /F48 24 0 R /F8 12 0 R >> /ProcSet [ /PDF /Text ] >> endobj 34 0 obj << /Length 1230 /Filter /FlateDecode >> stream xWKF 0$#yJ`SȡHE҃V 츛C~{9CKRZ`Q$ѼH~$Cq~]<)Ũk-F#*GZ9j4[cm~~<_6y >2 @TqZi]6KR,_Vb2(ZX"[7fQp#Awg3|â1-Yn9;rvo7 ,SgsUhkO#5ZC0pOs2.˲*hL :A-bIbD; f-q #NOvW$͘Tv>RM$"%DPܙUG. ;ĸ,+$с09ikPE12LeZD0-i\* &v tLќe]ʛG bM{<*j"jfjHʲKMp 5uM<ܵ$j44_;㚥w0kEGD%!Fnp<+Ѣ)#[9G n&PYŅ+ۄ9j@ָaNo{@\2}O:} RJ`lmuYX!Y2{n\؋4w7mZRg'we!7Wom~: >6m* j3hصbYņqIObʝN!&sadEPٳ f~ z/e zDe8 {tI/^u zendstream endobj 33 0 obj << /Type /Page /Contents 34 0 R /Resources 32 0 R /MediaBox [0 0 612 792] /Parent 25 0 R >> endobj 32 0 obj << /Font << /F43 15 0 R /F8 12 0 R /F47 21 0 R >> /ProcSet [ /PDF /Text ] >> endobj 37 0 obj << /Length 1805 /Filter /FlateDecode >> stream xk5{Ewm/J Q(T{]D.f^nT]Z?yyރ ;Del"ָ)P,Ngb*=5%+Z 3} -C%s~9O-kTe+fuVs Pxrx͈}s#}$̤UI b:SFV{TdutU݇">CduX~svFwn(az2W,CIl* X7Hz[\"۩䇎vxKvuC?G?=?' 䧖 B=eN2BR&S,B°N!y=f~kfm"9ri[fs lie@Ɗs}N,ݡQ\NVUּWlIK 2u:Dlz,%{yz*ymk `CPcƿnalr+˪\ ͙`u6\+S-y1́ )xKy*}0F=h5}W\',o;ﯺnTt-IQ.R(ӿ ]65^w]WVwTE+o* Pì*}y=/#3,~{?| ~ʵuPTL*ͨcqɥ/H-M޿|) wߚ 廖wh\6׼[i|Z|6u8xLZ%BҴ׶Oh9^|| /v1H-3b=u~)pXHY*(wjTq)bn+Ǥ*{܀BpXЎ1 wMOE7!M.3U o=>bendstream endobj 36 0 obj << /Type /Page /Contents 37 0 R /Resources 35 0 R /MediaBox [0 0 612 792] /Parent 25 0 R >> endobj 35 0 obj << /Font << /F47 21 0 R /F43 15 0 R /F48 24 0 R /F8 12 0 R /F11 40 0 R /F7 43 0 R /F10 46 0 R /F1 49 0 R /F14 52 0 R >> /ProcSet [ /PDF /Text ] >> endobj 55 0 obj << /Length 1017 /Filter /FlateDecode >> stream xWo0_Q)I@x0B:im[e;sji|/_WfϞZY p%)D&ӗPe8No{ %R8#dJL&^wMxn+|FN%¸'9|^hg0NYI4 ʏJy#"X<[n D󜾐fUk32j-WtCw.qƨY"b`C A4fqi9jp Y sۨA&u|~{Fc'~\Md wwG #S̵7^qt'wޕ0/Ud]',M? TOL6HӴBXQ(3α_ΏʁPa[>ecYfԛOQm[Ϸ/m0 S aGͦylʂ>徇5D۟{xvMm;Qq 2ѝeJY560 NbѮ:C*Qr.84iLk,:ݒ7@%NXF iv[iJQu\Q#endstream endobj 54 0 obj << /Type /Page /Contents 55 0 R /Resources 53 0 R /MediaBox [0 0 612 792] /Parent 25 0 R >> endobj 53 0 obj << /Font << /F47 21 0 R /F43 15 0 R /F8 12 0 R >> /ProcSet [ /PDF /Text ] >> endobj 58 0 obj << /Length 876 /Filter /FlateDecode >> stream xVKo@Wxo Q*7qMRu3;v: IEad{vxvv?4hfdF\JR!u$oD Iʘ+[999! &@'@ExLD= )AFi42HVe}5ehfUN-uH9}%-i;2M8~@t5Og8p]SwcpR/6o ØU2:N1weu-cV4qqClƽMP\x)fRwN01D"*A/k5Jw*ַ 50*>]$l]ڴ0Y-I )(gheeꬓ~ Ixј Ś Y]9?F hgT0՚Gm:󽺱X6fGԒZ7f~߄F4lPOj)0Z ,y)x^ R] Z C,6Je˼"}Dž"_b);I2k&qտIb;ͬdp|u""%g6$?))O*zT;ǎyn/ٵC(Gy6:}{>|RGl)?-I:`v.<3߸pѴ ѝW 3p,J'6դ- 'qRcQ8Cؼfqg>hO$yJ O_P3pARP͑W .l ywr9n<"wCGK:BO>wwk[XI 5fr䁁q]AQ--tGF ݑ_endstream endobj 57 0 obj << /Type /Page /Contents 58 0 R /Resources 56 0 R /MediaBox [0 0 612 792] /Parent 59 0 R >> endobj 56 0 obj << /Font << /F47 21 0 R /F43 15 0 R /F48 24 0 R /F8 12 0 R >> /ProcSet [ /PDF /Text ] >> endobj 62 0 obj << /Length 1257 /Filter /FlateDecode >> stream xnFr(Zs\E[ EC͡) VlP_ٙ%e 1|HjypF?O..Q.rGHj-Rl tgV9G >nn,<q EcF5(VT b#M?x|M4 W~;'z|׋K;ȲQj;)oX\kXúu,;J2c )] 3H)򄌳aRgW2;>klEZ3;~&| v>/F;TF2Sk#~T{Fkg|8Q8.2U"eL 6[IT~Bmk6mIcK|ћuW_߲ܐitg 2D(h['F՟_\lY4xN/"Yl( ihDnLO M(gu!'a[Ӱ(.V0^֙vV$ytED+w\vDuJ"6R+*\1 v'32 Q)ZvR!=6|Z=>I ׮TP2Yr@Em uX0AZW,Ǫr(֏}u- .a,&B""8:j5zF%-M jťW*3zPxY̖LTB :$ّW&ٷwXnd܏fXqG fn2Ș jk~;;ϫ" ~&S_S7vjɾD-bБ vGC&nT!sK[{(>=[ CGBJt_b z$jZ*5d1(2d*po3!X#|S@v[*}Aہ˭ C3 B@ByIeR%gn K¢b>Fd$ܑVm!K-Gz' s᤮Yǃ~~xs> endobj 60 0 obj << /Font << /F8 12 0 R /F43 15 0 R /F47 21 0 R >> /ProcSet [ /PDF /Text ] >> endobj 65 0 obj << /Length 1221 /Filter /FlateDecode >> stream xXKo7W9|,@ mCQEyeCdwș%G$Hp>΃3O_3rFΖB;?L6D꿤PrKu?(+(O]򎆛4uF]DopͶ[?#%s(7i?4.Huk#By QM r2LNRMU-$ϋ)?]%.[:݆dXvS 80k*Q[ԍLRqkڵb.B M4U e{F2c&ֵ{N%4-igQP&a2)s0-KP ou:qWʖ">%b'+D]gH8WzEjptxߚPw?.ǏOν'E"绶NtWv CsaJo$ :1f{{naYQ=ްC pρ9bX}/e2tnZ`bJt}, .?kvjN^yE}grc8`|K @a!s4dt]1lxEL7̭sh}Ck}*o9î1›]7 U`N'-o8mmSPtH(d_N:\@g26N'1$ʮhXu*%;ҮmgZJ \:J^ꡬ tTHs EERfrL:9BT殮.%8'b}S53ΆRx8N򜰟`fAӔ^l GK#z2y |qhIEFfo%mHC_%jbl7;ϒ!M=usE3_2ys 8My eKk2okr,Ϻ"ݪ42NXD^‘"a-e)=U7T|x}ri'Խcκ'HWL*/hFM|<~锹:p;QYjyW8W_!_XO"^`ǏPMq[D 0UWPiIjIC}YSPY`t H],-t&d+‡UŏDoM(W ,}*4xbv?~яendstream endobj 64 0 obj << /Type /Page /Contents 65 0 R /Resources 63 0 R /MediaBox [0 0 612 792] /Parent 59 0 R >> endobj 63 0 obj << /Font << /F47 21 0 R /F43 15 0 R /F8 12 0 R >> /ProcSet [ /PDF /Text ] >> endobj 68 0 obj << /Length 1391 /Filter /FlateDecode >> stream xXKoFW9hIs)1( GiMJVkY i[qגKr". 5˙ٙoQ,)&* $La,C7/t+Z S  `]/ߧ?2,MF@ 2 [۪ZA*oXG.D5»Mm@gަ3(Ax <| WUkgj{iyG$@}͚Ɖ4IbGr6pTjOt'1d8b((")O |y'X@aY$ {j-}M=^kByZx(]{&.vy%hoS}jdk}\j#_J+.zΏTcb;kmr* xSw>dv);{ gL~/< X $#58^rݴ?H`QDGF06W=ɸV:,Hn?Kϛ+r\:Q?WC'j:D=kr>6˛vlh;ZVN%'}P|DF;8HӍV.*5Mͣ 0)${g]R@GxP9&*̳p;PG>\Cz=Z<]/·Ut\?9+we g3/ ytёeaCX Z{N^NO>$?7endstream endobj 67 0 obj << /Type /Page /Contents 68 0 R /Resources 66 0 R /MediaBox [0 0 612 792] /Parent 59 0 R >> endobj 66 0 obj << /Font << /F48 24 0 R /F8 12 0 R /F43 15 0 R /F47 21 0 R >> /ProcSet [ /PDF /Text ] >> endobj 71 0 obj << /Length 289 /Filter /FlateDecode >> stream xڵS=O0+<&1WR[P)T(پB"ڊɎݻ:7ƋVNzڊ0WUmQ 70#+†𠬢0'35ϲRrdݞs .ܒs\A_SeOچ_m\RPfr#b'c%cݑdre7\XT:<[28!}CY'#$()(eg#f3#$k57l1T e[LB.endstream endobj 70 0 obj << /Type /Page /Contents 71 0 R /Resources 69 0 R /MediaBox [0 0 612 792] /Parent 59 0 R >> endobj 69 0 obj << /Font << /F47 21 0 R /F43 15 0 R /F8 12 0 R >> /ProcSet [ /PDF /Text ] >> endobj 72 0 obj << /Type /Encoding /Differences [ 0 /minus/periodcentered/multiply/asteriskmath/divide/diamondmath/plusminus/minusplus/circleplus/circleminus/circlemultiply/circledivide/circledot/circlecopyrt/openbullet/bullet/equivasymptotic/equivalence/reflexsubset/reflexsuperset/lessequal/greaterequal/precedesequal/followsequal/similar/approxequal/propersubset/propersuperset/lessmuch/greatermuch/precedes/follows/arrowleft/arrowright/arrowup/arrowdown/arrowboth/arrownortheast/arrowsoutheast/similarequal/arrowdblleft/arrowdblright/arrowdblup/arrowdbldown/arrowdblboth/arrownorthwest/arrowsouthwest/proportional/prime/infinity/element/owner/triangle/triangleinv/negationslash/mapsto/universal/existential/logicalnot/emptyset/Rfractur/Ifractur/latticetop/perpendicular/aleph/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/union/intersection/unionmulti/logicaland/logicalor/turnstileleft/turnstileright/floorleft/floorright/ceilingleft/ceilingright/braceleft/braceright/angbracketleft/angbracketright/bar/bardbl/arrowbothv/arrowdblbothv/backslash/wreathproduct/radical/coproduct/nabla/integral/unionsq/intersectionsq/subsetsqequal/supersetsqequal/section/dagger/daggerdbl/paragraph/club/diamond/heart/spade/arrowleft 129/.notdef 161/minus/periodcentered/multiply/asteriskmath/divide/diamondmath/plusminus/minusplus/circleplus/circleminus 171/.notdef 173/circlemultiply/circledivide/circledot/circlecopyrt/openbullet/bullet/equivasymptotic/equivalence/reflexsubset/reflexsuperset/lessequal/greaterequal/precedesequal/followsequal/similar/approxequal/propersubset/propersuperset/lessmuch/greatermuch/precedes/follows/arrowleft/spade 197/.notdef] >> endobj 51 0 obj << /Length1 770 /Length2 579 /Length3 532 /Length 1130 /Filter /FlateDecode >> stream xSU uLOJu+53Rp 44P03RUu.JM,sI,IR04Tp,MW04U002225RUp/,L(Qp)2WpM-LNSM,HZRQZZTeh\ǥrg^Z9D8&UZT tБ @'T*qJB7ܭ4'/1d<80s3s**s JKR|SRЕB盚Y.Y옗khg`l ,vˬHM ,IPHK)N楠;|`yxGEhC,WRY`P "P*ʬP6300*B+2׼̼t#S3ĢJ.` L 2RR+R+./jQMBZ~(Z s3JA\prʯ5Tе4khh`nnZ04/4EҢԼp Ԋd[ok[Y*V}Ο'־~ bG̔`y%K^-|xE dE[${z,^k nW6wMpa،9=թsr y)/~V$-%)+2W}~Yӎmߝ ^֥~1͎;K'\ie/j>s}\'.\GqS_1-dmϟpT]ʘUMߗUg)D f+]|unOߊe*z1gn}WQi-;ýF2":e{s?$&̤?vj_aǖ+l k$u}/["}~մEL{ͼv7Nh Uz]NμϜBƫsIvjw?PF $&&esxendstream endobj 52 0 obj << /Type /Font /Subtype /Type1 /Encoding 72 0 R /FirstChar 0 /LastChar 0 /Widths 73 0 R /BaseFont /RHKYFX+CMSY10 /FontDescriptor 50 0 R >> endobj 50 0 obj << /Ascent 750 /CapHeight 683 /Descent -194 /FontName /RHKYFX+CMSY10 /ItalicAngle -14 /StemV 85 /XHeight 431 /FontBBox [-29 -960 1116 775] /Flags 4 /CharSet (/minus) /FontFile 51 0 R >> endobj 73 0 obj [778 ] endobj 48 0 obj << /Length1 776 /Length2 1067 /Length3 532 /Length 1640 /Filter /FlateDecode >> stream xR[TW* cU\@hDB @hLh2 PyXEjTъ`*TDQJ*. Bت*~_]s8 \r%% qC|A`8'ÐS C)$P j/@ LR2 0獐[p1Jpa ZCA)1* r9rB "15J$n .J,' K읯ŷ&v5%n*sW,H${}}.:s0[dsRnEڐ1jdU'Be2V {!!̾?icfj}Hj̰>Z.W)gSR^ӭ]-z?ag,zC6M5('}4uqYgݎi+!ni3+JA"l [+ ˝"%Ze֜'&@ǚ޻bm<_]iܗb}_cuoMs,5_jl_\z}ڿFTG1ʚkҪᮑ*i k>؋f_reCjި,qjMJf6+et";9'պEҨXLKn(?W޾x÷ #zȪR;QTӉ@_1m%S,K'?X]=сf#>)3ˮGkᔋ,8=PĒyvqcng'~){k?INX_vxx=۳U?|b9(RVC> endobj 47 0 obj << /Ascent 40 /CapHeight 0 /Descent -600 /FontName /KIWEQZ+CMEX10 /ItalicAngle 0 /StemV 47 /XHeight 431 /FontBBox [-24 -2960 1454 772] /Flags 4 /CharSet (/summationtext) /FontFile 48 0 R >> endobj 75 0 obj [1056 ] endobj 74 0 obj << /Type /Encoding /Differences [ 0 /.notdef 80/summationtext 81/.notdef] >> endobj 76 0 obj << /Type /Encoding /Differences [ 0 /Gamma/Delta/Theta/Lambda/Xi/Pi/Sigma/Upsilon/Phi/Psi/Omega/alpha/beta/gamma/delta/epsilon1/zeta/eta/theta/iota/kappa/lambda/mu/nu/xi/pi/rho/sigma/tau/upsilon/phi/chi/psi/omega/epsilon/theta1/pi1/rho1/sigma1/phi1/arrowlefttophalf/arrowleftbothalf/arrowrighttophalf/arrowrightbothalf/arrowhookleft/arrowhookright/triangleright/triangleleft/zerooldstyle/oneoldstyle/twooldstyle/threeoldstyle/fouroldstyle/fiveoldstyle/sixoldstyle/sevenoldstyle/eightoldstyle/nineoldstyle/period/comma/less/slash/greater/star/partialdiff/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/flat/natural/sharp/slurbelow/slurabove/lscript/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/dotlessi/dotlessj/weierstrass/vector/tie/psi 129/.notdef 160/space/Gamma/Delta/Theta/Lambda/Xi/Pi/Sigma/Upsilon/Phi/Psi 171/.notdef 173/Omega/alpha/beta/gamma/delta/epsilon1/zeta/eta/theta/iota/kappa/lambda/mu/nu/xi/pi/rho/sigma/tau/upsilon/phi/chi/psi/tie 197/.notdef] >> endobj 45 0 obj << /Length1 766 /Length2 1109 /Length3 532 /Length 1678 /Filter /FlateDecode >> stream xRkTSWbC (R-!s\ x \cw bS:*$ Aq@o P^fy+j=*4"N8@*C0 F4qPe֐!JPӀ@+@(LD"H 2 #yL[a8༄ZV"$̦e&MqLrKͻAkJe0OmD*pZrH`/ժfwEDB ;I3_hZT!Fbe!&ߌ _px; APLWC@KwOYa"0Z(,:AeZfyUǢ@!AgT~Xzr.5p'|hC}'x=#j<䱬;K)<$_s(y(djl9@eyo dpY2úFhꖭWCh<0p^..[gپ-vEFՍD`wVbZ5Tk0iF8:R|Tinj՜v4*~|9] JϪgZƼ5huQ'l(t6~Dga}}凎Nϳo,:]䮙:ZXFژ%ϲ>ZV%L}GV>h$,R xQSف,ɟcQAʤ~\IEs.&һW>zH]X2Ru5?I: ֆc kBjނm/nœ/J)d>JSzLUo.^(MWQ0xznT ORSnW uC{VX}ss5O2Ɩ;ǩY?\^FܺCp/ )p^Jljsnoߎhkw0?";sE3~gs:L7WƜڰ{Cjr=b<]xCՕ;a/E~l\Ne}C8eҴ3bDljQ7O.4;P|vdf^`|퉀Melydۼ*qmIQ$塻cH9.wiY~ɇm?m&[pb:f?S/S_ڻ\K/mDf?h_qr4:JӼ!<;z^vwcwZ@kKe.[ܰ4\jDwQuب&ʼnjmA.BCt> endobj 44 0 obj << /Ascent 694 /CapHeight 683 /Descent -194 /FontName /LYBNTV+CMMI7 /ItalicAngle -14 /StemV 81 /XHeight 431 /FontBBox [0 -250 1171 750] /Flags 4 /CharSet (/i) /FontFile 45 0 R >> endobj 77 0 obj [404 ] endobj 78 0 obj << /Type /Encoding /Differences [ 0 /Gamma/Delta/Theta/Lambda/Xi/Pi/Sigma/Upsilon/Phi/Psi/Omega/ff/fi/fl/ffi/ffl/dotlessi/dotlessj/grave/acute/caron/breve/macron/ring/cedilla/germandbls/ae/oe/oslash/AE/OE/Oslash/suppress/exclam/quotedblright/numbersign/dollar/percent/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon/exclamdown/equal/questiondown/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/quotedblleft/bracketright/circumflex/dotaccent/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/endash/emdash/hungarumlaut/tilde/dieresis/suppress 129/.notdef 160/space/Gamma/Delta/Theta/Lambda/Xi/Pi/Sigma/Upsilon/Phi/Psi 171/.notdef 173/Omega/ff/fi/fl/ffi/ffl/dotlessi/dotlessj/grave/acute/caron/breve/macron/ring/cedilla/germandbls/ae/oe/oslash/AE/OE/Oslash/suppress/dieresis 197/.notdef] >> endobj 42 0 obj << /Length1 802 /Length2 1339 /Length3 532 /Length 1924 /Filter /FlateDecode >> stream xR{<KH-03.3 +b̼c^;̸A[r-5.*-BnPCj-9c<~~{|ھ&$low.66xċ8oekncKcg8Z"`lB"$ȁ6EA ՠR@L@D` L 'bxQ ?d6k0 r)5ii0)h c @ɟajVьХ >̊! i YiKF(LJbG2AA\7|!&\A6m 4U f!.W@l$PojOfÁ)GQl*Lu(EAZY xb@>QflAh$I`Vi̢)Jk -3l8x;90!D<@&eC1n2ߐ9k8W+|DĔ+ۖ-!a5\<}sV|8%3r Ԓbbۯ'D?w msdze|z[ti派lf0:}̞)(zJ|+3\GDrqbOgܴxoTN^u> LdZbƖ]GJ:,λj"hjq7׳nNw2l iB/|I&h˱/{+#_w'3vI>LB)}7Xng2=`[ P.yՏLsh*e.Ͳ ϬH -H#V<5{}ݡlԦ0E b3oK[8V=OygIϪa6>P?G"צB݆^@XVxlR AKc +fB [lPך9x[^?|=ŅӋٴMv@f|ld XbhWHHSBhtC mPs,J~pCG 7ŭͽcݍ%$?79XWsᨑ*۫Q*+̃ɏ k$?H9\ܒ +gΌLy]=VR>KN7dɦ~r_*<> Q7N&=gHxފǞ-UߖSS =:LZ\NJx^3Dc U*GWc&J> endobj 41 0 obj << /Ascent 694 /CapHeight 683 /Descent -194 /FontName /YXJNDV+CMR7 /ItalicAngle 0 /StemV 79 /XHeight 431 /FontBBox [-27 -250 1122 750] /Flags 4 /CharSet (/parenleft/parenright/two) /FontFile 42 0 R >> endobj 79 0 obj [446 446 0 0 0 0 0 0 0 0 569 ] endobj 39 0 obj << /Length1 774 /Length2 1067 /Length3 532 /Length 1634 /Filter /FlateDecode >> stream xRmTWFVöJVjHI& $B,DPPd'AE-US?t- %hXXOO=>b;0$hO rLf ,'(2  $HDA,$uf Ȥo$wZHJr΄ZFCjT6T ' !e% W,'"As3^3M.`Lb$1 X$sd/lM6h4+QDRZ\cAjuR@Nb"&S ]jp@/XCWA03q M!]dI0!~K\M7@2 BE@Q'^ыZ3BhJ: Xz|kuvTU{+W?Ǻ?tQknwȌT׉Gy%Jt}\e(y]W*^~޹״{ݱs|3xڵ.{AP%{`Ku9o>Näz"Zg~:}f+VqA|5kOI{%حgOxB2mNդr+pk591V~ZeJbV̮ ]=֟]۬ #;W?C]. Xk($?+`7?PZ|; nmCخW>ݡ1nK k/f5=d^|0.d}/y--KFۮ(8ʇ9\[>:r]wNc-U^_J SzG9XS֋y9Z# _M/ِ7akl9*Ig; WJBqb'.(v St Qvb4a煁}"@?[(N2l}~uܹ]-pQY2/mۑ}Yjm;wډ,,p{i^)nKKS&WZ6uV^l^&,=RK`;~.I9kuo(o0^_48k}* J{K5o$V z^ߢk2<@jg]+;{y 89\]~K!<;yo*or=t~dk?+3t <5Lq}oӚX _(5hRRj kendstream endobj 40 0 obj << /Type /Font /Subtype /Type1 /Encoding 76 0 R /FirstChar 18 /LastChar 18 /Widths 80 0 R /BaseFont /SIVSNH+CMMI10 /FontDescriptor 38 0 R >> endobj 38 0 obj << /Ascent 694 /CapHeight 683 /Descent -194 /FontName /SIVSNH+CMMI10 /ItalicAngle -14 /StemV 72 /XHeight 431 /FontBBox [-32 -250 1048 750] /Flags 4 /CharSet (/theta) /FontFile 39 0 R >> endobj 80 0 obj [469 ] endobj 23 0 obj << /Length1 1171 /Length2 5113 /Length3 532 /Length 5863 /Filter /FlateDecode >> stream xe\AS@rc!D:AafaIIiinP@:SB9z~yΫ9}Yk=F"*0=\ĈDA5}U $*N˫C0(:@/G8"ΎN$   (3' PA &nxLp7&J `P $H+ r75ǚ`-PHw 3@akNoOqM/Kw `p4?S2BW  UA:"=5}0#g AxHZ&B3߇Fg$掟?3cvXl9# ! @h)v3$ x8#ap_XL`-yp@IkKW7JIĜܝ?!9 ba +& ' @LV0dF{aC}! ce`!%/:X]P nUFXe_}yP vIQ@Wձ!s,t&QFCpyY&/>?X<[G4='~0So͝4t÷mi\/S, rJe]ו,c0{4Nx)C.4%QhE{^@>lݩnŊy)mMmIW~e\{l50&ߑ0&}CnwCRZQe( 9pj[ N؇ Xt^G>n2N 2mQVg \ݖ Ӹ `L\w,t2\ Yz=jh)Sa]}; hRdjs[d:@!8\'NGʰcG]EJO̖<:ȡoZ*9yĭ])}ar~^zq'ցb,k: ufiB<+y05y8O {}y& x?j6kcm+u0[G!ePN4lQKǖ̞KiK_,"rw3i/2eo?YƁ/Zf&Е]"^<q*,O4h2XlqCb~;/~/VPmBZ(d9<nj>1P%H!S5Y-V-UoK_mG{o-^̩i*ao&BQ߼#ZȋegxGmKz$G2E1I|yc8̒V#Li%\ "o·Ö(Z L.߼΢~W? f/G먷=q>]LT!Hz)I~_JmM[jC*eJUw?/K NNN7Gszǚu48 \lvX+m9fM:=#- L)dSrq~ EQ'kRv{kxhbbsW2U@Fn/d_JÝpti'pF|NKIRti:!~jձMK`QNRux?0#d`Ȟe.{i#<~R\ lvΨWxNWcZnWx*;piXFaғ\PQd+ +;88D3J sUfŬڟv+_A9YSC٪Ev\HK* W):ٛD>牺܏Zu>UԬ ҷRL!]Wd . W@Hy C1w{M/h%JX-݋ULqIƯ;;~O૳85gG4'I/~&^Zin٤VdR!VdP豒u0%z:jOUO jXxWާ;D@d~{u-ic|pÏUNރ'97M2_Wb B$cdI[wzUSD%c"Gx6Me*霾t ޺$"ҵ>G?-I2ĽDzA8T)L O$2CgZl×IqLKZs"Y[Qo \}`ݧ׹ʌmprQ'S]<VKyn"MS?TͅQP,]w|e1$IPI๮^CȐKa+z/ȴ\`hjNČ4=>/yu7z@잇}͉{Ԣ%/NfΩ# 0۵pW65q_{/רY2G[ :͔IuD#L  ZV' ZSDXfƖ*cZe[lSe >iCwiV5?K TGZ뱚 tߣ~8G$J OxA ]Z) ;/ȑE%z.$06_0|jFT"C"kVyy6}e_ .dǖ769wQ="΃j+ejj5Aѽap mz[ 0&~~|Rk YTH7w?:Rg ۛUfw6$νL34lYwJ=dB9f, dJ-?HKPjO􎈂J}H, I99"5ng8'tXQp6qc })rMrH,\V)%`F(SDc8ջPk%$X(yH^ru$#čo$)n0%ȇ*, OlEL"Z |r؎MX̖vIoY:nj9W/~'*_=)J3IǏ̈ Ruく^& w\ 0k)?fdV'U_P|b*Kǽ2 ̂mu[-uEsd0Ҹ_om _UU9yi{ؗkHŽEAgMDIA_؜qLN肹ŷ[|2-4o(Nۥބ.ia=#0<)0Aj*d+12`D¾T)3Zb:d͡0-ا_y{3u>YH\>d>)_YG?c~ѹF4qݼ%Bf8\ x^r1%(y5XƝn }? "(y`dO?ά H; 6M'K>mp$xJծd~ӁhJkaX`~[@#@n1BcI7A+ᔾb- !oۺHmAL㪺48]r<H2;M}\9*$mt7(v1.uBEqDx*ʄnh5BD[P=@R^]ӆ*yPwfPDJ;1[UL۔NKm2m]{[!ґq\`C>8\P/:4ӠVHF Sy<#$ؠ q![դz2?5krTidS+4רm48!z%!ul}o!G/19y$m^r=.&>9ģidV }E,-l7[kA2buLG#Lܯ'Sv[S_uyRK!ND i5LJI_d-Jq ~0\N5̕K8:.p8)ǦfB]"{!LSHMģog^fgϠrp7vߌ15[̝a栦{8B5io|U[nIzEQaS?>5.)ڂɾ10MvtWiUլFyˋq?/1(7ڕcendstream endobj 24 0 obj << /Type /Font /Subtype /Type1 /Encoding 78 0 R /FirstChar 12 /LastChar 121 /Widths 81 0 R /BaseFont /VMROYW+CMBX12 /FontDescriptor 22 0 R >> endobj 22 0 obj << /Ascent 694 /CapHeight 686 /Descent -194 /FontName /VMROYW+CMBX12 /ItalicAngle 0 /StemV 109 /XHeight 444 /FontBBox [-53 -251 1139 750] /Flags 4 /CharSet (/fi/hyphen/one/two/three/four/five/C/O/P/S/U/a/c/d/e/g/i/l/m/n/o/p/r/s/t/u/y) /FontFile 23 0 R >> endobj 81 0 obj [625 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 375 0 0 0 563 563 563 563 563 0 0 0 0 0 0 0 0 0 0 0 0 0 813 0 0 0 0 0 0 0 0 0 0 0 845 769 0 0 625 0 865 0 0 0 0 0 0 0 0 0 0 0 547 0 500 625 513 0 563 0 313 0 0 313 938 625 563 625 0 459 444 438 625 0 0 0 594 ] endobj 82 0 obj << /Type /Encoding /Differences [ 0 /Gamma/Delta/Theta/Lambda/Xi/Pi/Sigma/Upsilon/Phi/Psi/Omega/arrowup/arrowdown/quotesingle/exclamdown/questiondown/dotlessi/dotlessj/grave/acute/caron/breve/macron/ring/cedilla/germandbls/ae/oe/oslash/AE/OE/Oslash/visiblespace/exclam/quotedbl/numbersign/dollar/percent/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/asciicircum/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright/asciitilde/dieresis/visiblespace 129/.notdef 160/space/Gamma/Delta/Theta/Lambda/Xi/Pi/Sigma/Upsilon/Phi/Psi 171/.notdef 173/Omega/arrowup/arrowdown/quotesingle/exclamdown/questiondown/dotlessi/dotlessj/grave/acute/caron/breve/macron/ring/cedilla/germandbls/ae/oe/oslash/AE/OE/Oslash/visiblespace/dieresis 197/.notdef] >> endobj 20 0 obj << /Length1 1691 /Length2 9462 /Length3 532 /Length 10454 /Filter /FlateDecode >> stream xUX˶h@ q%xpw N{![pww`>+9H!40.(2^p+~Q;~n0CL=i=MYmN8 Ɏ.3":f6_XvΏum+rO рlRwEl/2*>ėPQWK_ 鿟YL@؛ܐx]R؁tv̪[ndfwwPc~ɓ!eyi!4k󲉆71~dghYz3~G׷ԗە+IA1 |݃]_-fdtM9jgA6f-Z KeIa/L%k>%޽iFN[aQXB}Ogǽ~=qC%!GukX^gQمJ L.z!Q" ^7qutLCɭTBI>K]Z2iYZuz۲aVҿ"L$=Z|=_%鼜=]\K9^YG:үxAqѶ-(+w@)c65WխJ{'(zjk"<8o0xj|&ޏ[7sSd[ pCݪ+ß5}zgg$_Ԗ%Vm'Ϫl!I2ÄDŽSd\- >] Q81R]~"!`msAfCfWxG6x缶.suB]|D32*h::y51-u ۴XTSW852\#{Vc.(CRNǔ/U0jYbYL8.yuզ]'B"c1_R⓿#' M9\jr/- ʵ5K SK9 > c1b(-Ef . 4bGE9='P{YodlDQ]) a 'S~aj_O`x.9R% Ƭ u(*u<=/*`(͑ uSqF>jT FlOa\uw) T+D0|+xZlt)ƀOLV<vݘfv۷FP |i8f"}ɯx)&]*Vp_U1_b5}O$XK•#)EBXo [iG '#]&TLRܧ[4ik0Kts.L=QVvblkHO yr#8 UxKom`fB 溜Y˒cHbnI`+a#-;.:Vji}Apg*n-YKF^/WZH];xn.0!/.{бؔN :vE\ d|㶾*h?V=0:~:TC ^ F36ΉL5yA]N ț7/z $mh?`;@kؕ/$-׎Іw ! K݈R, n%/ub9)#>8e[i:&sZiP'3+BZ<+|s~-'ЗU5[ʙ }%w^WaK3Ԟ]}d/ *xIы`7h I+,: =[5Qׁq :6"ңwĝ *; o/k9kjcy~čȎmfo*s&2Yvg m/CվLKGVKLw6ЕdHڹKd;]/yڏj.^r"FԱ Rֹ\,'Yә>Rg {_cv&u*7f?AS"E T[J"}%K./[G&n݉hO$+L9~ESnjLy{Ws1'gw>C?bb8-"%̎3u4tfSi*L(rb3˞W"CQdmc8ӿix-Envk,;Z`]h_虧L3Dr~LґK% x)<3AYMb~2AxT0j?S|ύF Wy2Sh{V[`ôcy UF J :,@gyrXYzF+-Ҿ;~̭^sy(0< F|z<x1Cm|zȞkי5B`hXXWFn1yrtwʉOGEeU/Lzʪ ڈh1~e ܍P ȅgATpE% WLK:-њ$0"]he@ُM͢һ@ɱ@\gʐ ELbAGtFv}l휌)fvê7KD$Fͱ~D~19hg1Q})%-+k@ EYlDǴtHNzk[ߟ٩'60^ ´ed>AĻJu&(ֹel[2y,;ӑ*a]qǥO!)nfDj4DUYzŠ"QX]1s,OX,qI䞷/xvdm{9uQ,0^SAW肟"Bf2y%gd6 _%$~97b$'/oWDי$$0TWFpMTtvV {.}+{aAl|0wvY#p@_)Z{qIíaP_>I=U3ٿk\1f6lPЄr7ZUfMØhlP!V}m>+K>?7j,,N{=; ȓuew` yJͻIM6*R כ:nԩ)]!KC+2) yGP~ћ &CIQ?6>rv/{[ǽ*D:,gGg:$VZfQ,/Om:S3klumR`XTOIJFj9*0䅯Xr`gq̙Dqetq>*$^ 8AibHtE PgB> <ׄ|[r`jrS0M'hd1J]2O0hgm~&f*J/弮2GUHG+'wPܡfZjJ2IqV2b3PB f~'%0P| uwڜ=_ڰ[^[V BU~yHYgf1t B՟!"[V' B`N(R__dc7^w '+\DadƯJ2-NYӡsf zqEZWoȠLˢjfDzS*VETY8qlp5cBJ(Xнr1@nXش<%Iŀ$FJ7ܭM_? .5[KrLuLpSqN1F|'4I#hN_-24:1`;V磓@Ȃs"eRڟJ4]nG"շsdyB& :BEjY8[YTvs9#0SGhF1G J=щcb2S>6]ODtr2Yax!su]j)ppaHW( =GOF]B\ mrTՄN0Ջ~J5Φ_`BPv:#_T.,J/t7X ۜhCO]uTכF_}Ȩ.6`OqjNE@~?1䦫Cw?g6G(;v`J[J*W<*n$xc3P=Csۀ0͆*ҳĦ4TxpJ۬X($Uba~lP黺Uq\0pe\|3mfY# w_!u:I?|݌OY`z"388c$Ԅ`OlPR&1af"F1нJrQ;SFFLT?#;Hv|Xt7C˅EBKЌx1|T@Z=CLgR&kgq-ߌ͋'ȝe˩pDyo6. JYw&S7ڟF4&GVeSGS*㳖>1rI)xmmrjxؾ՝mMnmp̭>XHxnUHb x6g<x c{^;fd>z U7"ují{9! zVCysIxv]}p m+p~mYE2i/c '&꘹r},~%xG@i3~|m*zl/O꽦 Ԡt ?PXH,:9IkDvZcU%JopGn{?SK-o\UG5–'dZy$ZD U;,OH IFJ;\gP3X.PǂS̛J>295B٘*ڧE콼R\)ǂ)b& ׻RcK Q~I`5M9յ-LF]IdZpInmB6W^M|(#Fe֠<:| f?*e;7XֲC+q+~㭋-kTDZH|pS ӧ'KZ N56wc%.cvY3r v[u'4шԮᾠR:/o?Y=C^JgY]h+ v{i7g#&uCt* 2-sZ,K&ќږ;M/,b7FDC&B ,zSߌ)/׮d|} 驫Qn:j0߁O ɭRBa򿅔+>y Qr[a)q[٠>'~ijx";N( ūUR[++:#ɐ->6_Umu@]-ԺŘy=n5=H;ٜfp,"2H}@fk o4j'*XkM#f{=ql;x7sn  S='UK2&Ӡv=<&ƚ>4gm%ዓ 44}zb҉;^%mz:QMg2nbQx_E8LL)e=Kp*uRkhU32ѬÊ8C|0*T,/-H;&'74(r9V>|Qͨ!qDz%:c\-A 51֌5EC<ݰ_mE&8C5ko(RܖnHS=1(._L~eeVdu' `L jҸbL75µN:#3rԒJ蓮K7)y= `Ԅ6Z}yy^VsD$DkvEmЮͳ0UĒ6H\˼1[c=ns|6Ld `wg]4HT@N*4vKl7MbqɆ[eCof)~R1 Ct XR&'Q\ $!ë) }S5S\^WA6Bg[;T/|\Beߊߕ'=,+k6◣pd3drߧxՃ&VNi99,Ev5םܶy[ywt;v3u*eeC8(3k+*BP5-4Ҡ 7*QɩC5f:'f-QYa**"=zZ8Kpc|[Z- V:.jgPh@[&|I43h)a}ݔ1Itӷ)uxXۃ2g¬V}2 ' ˱N󎔩cqۆ`[ ,,Nx~&:@[˖tc).27! 3Y]m1Ei^ئP6yiޑ#0s$#pPc>Hv&Bx$}<`z%ݱQ/.@_nOBGZT5 |8QߌyAsL*Vdd8gGg2$rLL( yZx\]W2!L$3#| wm9LpfSO}3dv?_F {G+{ u[endstream endobj 21 0 obj << /Type /Font /Subtype /Type1 /Encoding 82 0 R /FirstChar 34 /LastChar 126 /Widths 83 0 R /BaseFont /YSMBNP+CMSLTT10 /FontDescriptor 19 0 R >> endobj 19 0 obj << /Ascent 611 /CapHeight 611 /Descent -222 /FontName /YSMBNP+CMSLTT10 /ItalicAngle -9 /StemV 69 /XHeight 431 /FontBBox [-20 -233 617 696] /Flags 4 /CharSet (/quotedbl/parenleft/parenright/plus/comma/hyphen/period/zero/one/two/three/four/five/six/seven/eight/nine/less/equal/greater/A/C/E/F/G/L/R/S/T/U/V/Y/underscore/a/b/c/d/e/f/g/h/i/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/asciitilde) /FontFile 20 0 R >> endobj 83 0 obj [525 0 0 0 0 0 525 525 0 525 525 525 525 0 525 525 525 525 525 525 525 525 525 525 0 0 525 525 525 0 0 525 0 525 0 525 525 525 0 0 0 0 525 0 0 0 0 0 525 525 525 525 525 0 0 525 0 0 0 0 0 525 0 525 525 525 525 525 525 525 525 525 0 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 0 0 0 0 525 ] endobj 84 0 obj << /Type /Encoding /Differences [ 0 /Gamma/Delta/Theta/Lambda/Xi/Pi/Sigma/Upsilon/Phi/Psi/Omega/ff/fi/fl/ffi/ffl/dotlessi/dotlessj/grave/acute/caron/breve/macron/ring/cedilla/germandbls/ae/oe/oslash/AE/OE/Oslash/suppress/exclam/quotedblright/numbersign/sterling/percent/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon/exclamdown/equal/questiondown/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/quotedblleft/bracketright/circumflex/dotaccent/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/endash/emdash/hungarumlaut/tilde/dieresis/suppress 129/.notdef 160/space/Gamma/Delta/Theta/Lambda/Xi/Pi/Sigma/Upsilon/Phi/Psi 171/.notdef 173/Omega/ff/fi/fl/ffi/ffl/dotlessi/dotlessj/grave/acute/caron/breve/macron/ring/cedilla/germandbls/ae/oe/oslash/AE/OE/Oslash/suppress/dieresis 197/.notdef] >> endobj 17 0 obj << /Length1 1139 /Length2 6413 /Length3 532 /Length 7150 /Filter /FlateDecode >> stream xu\Tmv(@Zr.[z须AB@JJBR閐n$Cs{s:cZ¨-inos@DZ0KXXQ3NByrGD@P"`J;xV@vi*Ü=0=pJ5Z@8!Ps4GfK'E; {п.rEM7inog4GX@*j{/7lgs9_l6Uao@(,E˜2bYEg .igirCy#s53 hqBGؙ!,#-_[wR sp@T͐~H(;|?e}oF!&k7GYy0 ?D$vw 1~ ~2>@ {}$  s&(R v`07A @y ?Yޑ]?^?׵u{!x/ A6\A{]?^ogFJ݋"B(,(Wj!]2@0 P;l?;~_W6g3mJA`sHu(wQIT݈85Q2uw&(qGv&!|7C,úCْk3V6D#~槙'~C˳x?FJ؁=yټ^J3YqLe_+CH5ì^]y&#OZ7ǎGt_c 0 Jd-iUN?c洼x< 1jN=@5f('t4Ѯ⽞t~;= .1`lIH|'Y )%NVAyergP;u(1P`v5Jٲ Eh/Ɣ{[~d!AOU:Үs;o<[_L2}E|sgZLǜCW,n,]OKAܯ-arM]N?}S#h]5NT\*cJ:.:}$hӣFJ%jԈ.[渏Ek òe(?5;:WDO['W :Iv =`ǫFN7\({9fjژVKy(P[` 4|Ԟ#WZktp-̇i<:Ƶ|773 &ݾ>\R()N {_6ko?J v$]~gKTt8<$&?&͙:Ih:Nwmw~^MQkcC|a ?TZّ>O&=Y.kdž*7'kз.HIsYqDwB qpHE+h~Ϟ(ru)G~E IJJZ \ՏUmFNv]R)-C6E!V3~BdHle4E.?M=|0LN"\4N.?z -97Kd\D1f'R*E0"✼gxS r.Zf^8̛l,ZKePRM"/0V4[ܹhg'=ѐ6I$|#ؚ;G4¬=}M4HK=gHM/TXDo@[y֟\mw8d`zU$^mVD 7 ȸ%lc^L,dQ* ms4jt9y`}`[Dm:1*l'}ɅpO|a~i%Q Zq!ǮfӀd6cmLm1ҕQ$X+ءiC. -I?LRi.4f{1N1".>~TAp/9VB2ma)ƦR<4iJ۹ L:{Y=S7A_u[mnjI.: M({~KPaCq[oo]3tXaL#Ҟ蜻$qu(/kq"4ijC%$ %8gխy:o)<|6,yLshST(*dZoal!DLۂ67~ >qT5* cs5H*DZ 3΍m,6cFn%B2uX|Ֆ见:9W+suNRԋt|~Q"/lДViEvm,W#O* *[?g S)JZ<7m{óF?iq&|Pʋj|/eٓ_Z ,ȂL [1:uY4e0/} Nm.36$}f8ëލVb||ERcoRST{"۴+4¼ H~+Îz , "tQ1AI iig5B'ߦŗ%T3z|lDOaqS;$WuWw{hL(F} /c C %GLW<0_beR,R/SS4ZT_\J֚)]˾ڻ _ЌG#'[0Ao9 g?#`. Z<Ǖf&1RRӋM/5jJZ!3$ҔnS:ښMBqR#1֐>PK~CR""Plf2qм/Z[9W'Vb\va"77`+6,*%Q8 S햤(w9~^ l߮u2hQ3?&`o#:rZD}4; _Ҫ7*fC˗ QvY>fp=L)3F:b3VI7.E/6' }sH=r愾3wψs[/ֱ6O&limz UNǬk%uҕu(BbV%8j'L4`AV"׌ho:]sg_f,n3Tб\1uZK.(n"{'x`]iΑo.JUe;4lZ\6foؑ IPd&eqt/> ͪLy~w*&Nח^EP~^̎L|ZF(\Iw=ClT*E4muIuH˨V=@8s\߫GДAݢZrwQ&.@ʎxɾEo .]IT{kow^ iIyv$VႱ0\TD%S ZehPג)|k&W׳QV!w$ofQ,-А h4zY٢^a"$_ bdEP.^lP(_-v Ds8_1&qQ/6zUZ5#{ NIޅ:xTJ&} .PN1V"̊jnǡg|p0BZeelr [{6rTđ],`emW+rW*EM]؎&>O@|%Y:Cn(F(,c-eĞ`%@ 637 Z>(f;hX:O.F(K^˰ٷ9ߔwF{YhIҾzhn=w ՜$CQ:_r9)O U}5ZZnd1=:h݄R+N3Qs3IPˀBAyZEtzTLcTS0=Y.c)0_uuxZik.MkLV`͘lO1vܭRZπh/Ln}B6?Cq^ 6QȌjdb׶47 8A/ji(,Sox*$OO]+[wb6C% Qd g;Z tzk j~䰃w{@sAQQPmo.|ق7hnNϘȾfo3:su1&UΎ|d1eJ(nn=_T98}ZZܷtM&IP,}h&ifX"Ooe-"0])) ? JBE5dy5b0ƅ% pMiD#SO&օR͍6yqG \DnSoI!m2[8. *Hf Zհ&fR1W)wz|3P_7զ.ngJdEL'95#v?uoQӞ迪fԤ.@1-ψVI OD,%`o3͆yOy_JYH.&m-ƾ咏b.ONӁW.z/%}h1h!wQ?G=I[d|paJZ:T/9škGR[!a VOНH&I_7n; =g߹㔋eE9.pZ(wmWAGY&5w&IJ?t톟'V (?.`?zr)@ )@t=5sAݷP|~4,KiwasՉLt{rFx3=}!t^&2Vk:~z6eLLU'}s J`P'AF :-;*sSfRkՙo~xO.0qal!Y}dagH9ז>r޹??vzJD0ɗW{\4&?sd7!xS:sݜ(L9kRj;N!1aڳ{S-G \`?5g%&?&؈щuX>y(eBocҟô%ՉyZr.0UЁyaOݮ4߳v'K Ѫ2U3g N -o5(]'h6t* r~?Jey9xV'a'|KX..cOzn1Wj!Ĉѥֹ!K)_7ߝ^J'N^p͟n+28} &Eݙ0^!Z4E? $;jJ٣Iu Y;^- ^s4`U||ԕL[ N*qeذ!4^N>O iӎe6,+Uc<ҬǸylXITʭ/Z h=?63*njw/cwsJe6 fVt'֣&i `W Z 6/'a ,n\w|u Xm~5'FeRw*H*U^'kzoLzg!O»>0-,+el&M~8Vbi{˗Efy?)vN:b?6XJvBd ~2NRKc\DHCwgBźea_󗡊J+àGI S b6-`Ό#mY3C$q̶궄vO<=77P`T+󮯩|g>[" _tEA7mY餵?lLv~u1%no VdU~V)}2ފ? 6/>endstream endobj 18 0 obj << /Type /Font /Subtype /Type1 /Encoding 84 0 R /FirstChar 65 /LastChar 121 /Widths 85 0 R /BaseFont /RDMDCB+CMTI10 /FontDescriptor 16 0 R >> endobj 16 0 obj << /Ascent 694 /CapHeight 683 /Descent -194 /FontName /RDMDCB+CMTI10 /ItalicAngle -14 /StemV 68 /XHeight 431 /FontBBox [-163 -250 1146 969] /Flags 4 /CharSet (/A/C/D/M/P/S/a/c/d/e/f/g/h/i/l/m/n/o/p/r/s/t/u/v/x/y) /FontFile 17 0 R >> endobj 85 0 obj [743 0 716 755 0 0 0 0 0 0 0 0 897 0 0 678 0 0 562 0 0 0 0 0 0 0 0 0 0 0 0 0 511 0 460 511 460 307 460 511 307 0 0 256 818 562 511 511 0 422 409 332 537 460 0 464 486 ] endobj 14 0 obj << /Length1 1534 /Length2 8331 /Length3 532 /Length 9255 /Filter /FlateDecode >> stream xU\[kqݽhq N`܋KqiZXbš@q)nťۗ\IrwgΙ0Ҿᔱ[PN^.^1W<^.Y FF9 ;[@b^QQ> '}0r`o `c+H ,P;,#@lB2vn@К ` , g <);ۀ]gqm3i vvXm05j@3_Zp9zw @eNh rwUe#JrSy_Vv( tOP^UMWK 3?Yy3=_^X ?Ll X@ #A//l `P'0㯉 ], @gG k~n+oE)$ vsp}oA vÂ0P낰P;> [ ?"``=a :V`^v=0Π?uߛ`VS3i&+Hba[wE0Aܬ߮`7l@X@+:Fvau B¦apa<@+s\ynV h.XV)Dxx=LTc~U+w=!m@ ˜[ڧ/ P(/GfmLШ2X<ʶ\[ gy-Oqk»m f u-}Se)'}y/Y_2 Wpԍe{Z)䉗4`ľx ns'-@M~4By'38f/I&d,o{kB+f̬z_3nt?y=dsT B7w"W*9兼ȭWw҄_}%H()2QESqqV=LGCd~Prg^Meaв JeZHokSGw?=Ct£Y-ʵֹVL ˻$A eP/3!=c;1FT;҇TBl ڇkD'9<. =#pe u=q~%r|W(n B Fxga:GRe,YYID믷|uY޳ Z@d{K;w!}x'1<ЄW+)skܙ[Tq}YaQ8R}ι~i=Rޚ2*]}쒌yz,!%Ӊ5XR%qks ;QPk<`W|~rܓJ̧;=2Sy3:uIYWBq7tA"腄[ Jov 9=ETFkS&[tH?gUّ0+*W#, ֭LW>}KePwPLҩwzy=rN^TٗwMI^\'hkr,hWpwL %~y6{{ylv&:Lcrt9Kmȩ.bBQ׶4skw]Y x:GJa?()$cj톬^!YzeƑ?&>ۉ4l rp/.zsq'f9V9"T] j;؅YϻT-CQG1׏UIRMp\>GoxLQ<1òbRΉ2x[i ~_ܧܜ t=*hEHUЇ$&rxmZ&d51ra5J^daH *SrѮ&Dbͱ< +SJ4<+K_e'iG34lf˜{\!dzntTBYNCasDʀ]{$)C{bW1Qv7H;XG~3DF>]f&볊 Vbb%x gH,U CYz@0ݡ)κiryx%t}ɇҠO`*)ؠD '!qlH^=ډb.FvzoD(=~AB#tǧ&F~/jUvG_ݞc,Zc9 P1`5.N{40WGIuA<3OhqyEI׷iu׆!BTϟ2ҡ*pDO aO$z<~/q./T $J]i#h m HL Ztđe] SCԟ H$(?."<#Q9OcX㸪(yqbuX "! d@&QnN.uK ~w2AXެlDH!}Giz\SnCK1 Xp'm$ﶟ݇"p-`7&;Ƣ/|ڒnBt= /Lb0}؆JxA Rl;,Z}oSŚLS_@jxנ4/  qOLf sDKPkCs}D_wi+h֔~<$ׂZ_eJJ*It&eFT]DPgF2U1ƥbo Gj/~YTLؖB=?Z M|,ɝ p$Ŗvk襩tgr20veKHDh)v9Ūg֗F5AGЩZIt<폚 ŌUҋJOFVdMmW'ێ8+{rEjio./+F/~&ywmcaTm `4Klľc1â,C2_SeU5| TVxS1D.yk DF\-ͤ250jfpMG1Ub~>ΛɋH.J̓]czqtnt e'18x}Lu!YBvS9LWnC'kAvWa|/2ɤ*=;;דI2EH6 Z7QT4Eb%B!2 xUmKֺ[? IW"͔`:Injg&vtZ> -j\5&OYf3&MHŞ󁕪L}-ޅinP,{MIfЕw. ]C1̃4S voVzm <=މ4+'^"FeEp ?58)]J޾tYK 'ɒoߘ }KZ!0!:^MoH(JOQoWdhuD&ڭ 2LJWN+b1oLJ2y9Z?KY W}k'\!^nӲe)~A |[X #VT/5 Ly%.j4z`E~TSГhlDla43"uF1}CCz |QH-\i)@<b!# #~%0$}Zrs9k sn)aWȐGL碵7TQLw K2֌f3$_H,6+sN1X%< J񕍑e"E+/$[!EDt*ӱ/y6J:  _z]B112LcQu :شv 4}c3"-,>JvibMPS 0H8Jqz9ya]} T߭#kֹcg\$5T]tnMtK/Q][.G Q>IG;'bk-veI Ktސcm<[-8YL:oNG#e)QPfPޓ-='g"gUy/s={"@ơN%)Hvim]}y{ Q3kȺPy$!\KPAt8"U 6yf&4)U>L%j_(P{b䑴ÞågMܢPw?xlb(1xs;n~8j,?9<L#gRO3e71YR[ILMa]1݉ƒN^W7OsI Mu=:ǧ eE2t ]%e ˈ:_o'g>MٗAX"Md71!"2a.μ rҔkr^6.[ fBv1]֝Iv JQT+"ΦWm["(ڿ䌫d71C_PÅK!K$*xD7dNe;;# @do88h<|il#ȔTq;aR*H;r_{HVbR_+2ohyAYl}C(s\~8֭Aj`>gXj;."EպPn%S% _ak'a1 $M=?*ե!,7Ұ;e1^op$@1O4 %JIpR;uj6s;%3ƳnJ䭂zy #w`'~1 FZ x-izN4mJzqF仲-Ę5?BYuٴ973o9Ŝ }F&on4&_G>!,Y}5!Y{>8 jnZƦ3bW.{QR~~j: FrH"K6ޗ].N_FO?~@rF7leLe18)ıZhdJWDK&䰋J6n=h:CJɪ-9 wҁ8Ey O.OQa!-{(H.byki hH5ɬ"zI>ll{bBzڼ@FZJsXnu%k=}:(F-ZNzߦ%>x.)z@ b$eqSm:f]^gcS+.UU>ҦS :rEq q|gŠ;y[=F#&f:a`)C>N8  0ʕK򞓘 , sYb»!vôIic@'m*m%ADb~"!m>\йu"4TwO{rDTn9CN_z_ChX2Or]ӕc&vyėv*Osm,v]tʿ5nHTȂ%&XS[|3'mKYҕFf.5a`4xIΉęeann^j5g-ifv; )NْI!㫹!kk8#e ڛ9DoTTͥ֋Zd$gϼfN'ajϩz4ZtWK' {#]vX!foFI1&x{2ZaEO!57P%LQu%7 iJQ*yͨ1~0\݆ï=ӯJzS-*E8ו6\zwSZ 33Դ" n৘i2r SBo =@Xow" v5r"z;oL؊ԭj19f4 2b&1J`WE/hio~`Anj~QC-F&Y4BI^81 /D?76ZIKOn8Ѻq Ӑyc,& #XUGLq@XvNЎٷCH6;Z '_6 [&͸Bwg9W}Pcw-zL\I|$m Rãsz0*GcY"C#^$|T2 (,&~ Uڝi˟ֶ2Q0u(=~L)L\F1Q1`*^rr?P_#Y29%x(I &[paQ(#Y987ԭoؤ9ud'eH]eXB`c&|ceKzt!okW7!!,Z=St (̙1)(k >^[ۄf#u?p31sEAfUI]\<=G&;MF\?Cӡq-'BsCtOǍ'JMDS|88-*žb} _: mZs}p@"~cV =Z2XͿbZog$>Yc~g3mŊw^hfX3i2p4\)Q+&7Rĝt"ŇDvlѭCC[/&T{3gŦXTYb S2/jx=*5> 3짼pHugjiOؑϻ9(ک#6[S嵱}AI)? En/j0H-u 't5VT DV}7 vÎ$@_+ԒsuzA>Ϸ'Gd?LwBR}=`ы$d.D t$OYǽ (o?3$;$ϙ?|aO$rZ@`' u\endstream endobj 15 0 obj << /Type /Font /Subtype /Type1 /Encoding 82 0 R /FirstChar 40 /LastChar 126 /Widths 86 0 R /BaseFont /ZDKLUN+CMTT10 /FontDescriptor 13 0 R >> endobj 13 0 obj << /Ascent 611 /CapHeight 611 /Descent -222 /FontName /ZDKLUN+CMTT10 /ItalicAngle 0 /StemV 69 /XHeight 431 /FontBBox [-4 -235 731 800] /Flags 4 /CharSet (/parenleft/parenright/comma/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/equal/E/R/S/bracketleft/bracketright/underscore/a/b/c/d/e/f/g/h/i/l/m/n/o/p/q/r/s/t/u/v/w/x/y/asciitilde) /FontFile 14 0 R >> endobj 86 0 obj [525 525 0 0 525 0 525 525 525 525 525 525 525 525 525 525 525 525 525 0 0 525 0 0 0 0 0 0 0 525 0 0 0 0 0 0 0 0 0 0 0 0 525 525 0 0 0 0 0 0 0 525 0 525 0 525 0 525 525 525 525 525 525 525 525 525 0 0 525 525 525 525 525 525 525 525 525 525 525 525 525 525 0 0 0 0 525 ] endobj 11 0 obj << /Length1 1815 /Length2 12967 /Length3 532 /Length 14003 /Filter /FlateDecode >> stream xeT\֨Ӹwwwqw'xp5@C ߽{qiYs|֬4:Pѝ `cfeCw89Jl) 藏 jce' t17u([@sԝm>Q{{?WԀn@WO3`qD`GI ﰅ+lD? G-IGs' G+;7{@c8Z@o0 ;'K'W,Ah9aSsW'`q>XL@Q7SPode큖r9w;aPes'?.5OmNնqHO$ tu89\ /w?\ #wkW_tO6yu$:,@6s_ M%@!нIx@7"@2d,@2 4ͩ@N *TA*!PC44U/6?=:Xl^)ٲ G AV!_0mB_ AVtYB_r AV.!/go +d8Z'Rw|^S nj%4Rdl!{6.;4`0.[-eJ)vy}[)D|鏚^e@MnK73ˆrI @,!m(P`sl+Fl:8,rDA~P ו$AzO,n@Oe!N ]e^Q¿ c |[DKzhQÏia\…H~.kaQ$Qpa<=kϦ+W>9oa[ixGyc ֲW(<Bʝ/3]h.G(>:IO(RE!;,7PnMnyV Vk5 ꎾ{kW_3(` ^\6U:~^L~ML%EkqRnDjca!< E5%K"vb_;2}\];@jQ7#ج:ڝӸ9u谶ĈP*Kmz w&!P n‡,$lԗ(޻ȴ6adY]^TwKJ*_-HYKvu%6 խCi Sxp[PTnc a0aW_ZǴjjXقn#_ɔUG*Ot|"!&љAoP%ťA:|xbn+)΂>*D(+ɲ\ܦcqCyT)i`7  w^ID%⬃y+Z⥵l`YSpա{&ǨTgm )4/P!bB1rP#eϮ|^)yp:l$Z ~47&S<z= >3SYSA,4[OD*1icD5~Ht \Xzl9-ug$DAe,URj/f= 1g {Rڦ n|ҏ*6@/1Gj5}Wk9;So4xoP/d(i;ڡsOD4DB69"ii5}Hpϣs;s^se*ĕGx![Ю?O8EQBa([;ivxX Ta#ac]=lR Ǔ0Tf<^~z(y#q5J9ܡn|E. 173?"}_$ƗceiED}ZfFx[+?=)^Vyi<zO*Gy\ CVZ/Vҕ#&SsNKueC6Ax L5);v}ޅvUcfq;]5h%/9rb)xhByRceji}w= WIHB=" SgFQ:Io{좹q2UrM5ރ\M֬'GYhuejf^҈8FmH:C)V^rl#gJ|\@vYmKe0S!R`ِUwGgC.02$+ƥA?Y%$ 3X>b<->"7f2Q[氧+:!{a6p`^:MONLOsZDn+&j`y~hCzjnrƅ]V9{d, ye K֪X}x5X夣7V KnUVJwcf01w|]3˷C颺<%!5~ZUO]WYc˖HC]}kr=#xY11B1ڎ ՋC#~ܷcή~ ReJ'ݴ"4c-7wBhdL)- w \h)mVF(YVjp٩Ӧ⤜,?*ʹW|lV(ˍţov^h@eG΢݊$G6r8Uc&CEʝW`>vݞ~}1 )'Bc%q/^&ސ7#`3 f"8GnG0Ϧ^ /h~0F)N$M (nϤ]IKI7ٴ%4SnqE6gJNfS[gf %Jue9BwyT"pEy(O kʲCI'N2›4qI:U{0nMG6` Tdxt2 }Lw_3Z!euIX3/~w3gKލZBѦ r¥f=CøKTqLr%bQԛOOj "eDDekWY2mӥ_rcy; Fpȑ`Tt侈Xy6ҷXҢR[{]m(PgA[=[Uv7UV`rGي~>ZzsuIyRs׶h7;W[AϽ3;aRF ]EdS.kNk1VeVVL +. rV p96 ]+5k3Y϶RL5[[Ի w/* K׮|9i ;K\쏟96Z0^!~Z $-8G]T{ްO^Wԣd_q3$Ȟog~Ѹ5ȏBF'J{/`ӝthlkv n-^ඨHB_:GV֨>jjU@(`w5>8~g !b0}yikxT Iq M'`lr.+:rbw+&kPi(Z!QJeaHx-9DN { z7b(<, #ꁐe*Hcj}PٴKW(EdV9JZUױ7/A0w}Q_0lI2Ieu|ܢ;ƨoߋ !-N0p~}}&I_XTvԢaT {2+/YN{ $rD8ҝ$ڍ@.ȿJg~ZoL%U6bg}JJ0|fM2&RK0yp9N涆k%:fhW:Ȏ'~uL\%s TMХ]*a bvRkMlb;L*g1QlSF3ӼWExrO5d(=rlm~c3GPMHo'm$$ ߉qQz2vڴTxo$F;xONK1Unw%ˆ$e`&P7' 8T' sԄCJ'h`e}gB<;'1v`f? ." 0򺩎JW7c }kb6.N*u,k.U=Y zl@,n/TIhL |n6y9A~Џ`AY&tCG|WҌ8B~5M_¨(W2?t+!j 849WCύ)@hUp +f).khx0Zpw>gױoAd\/^U z1:ܡ/[_I,h=?qtnCF}D˟+L.2XڛȈ ^l>#y[5m~{ aft"+/Bw@4իڿq\s}6Wfǵ ̡9ڇOxq2mbSd.M^ۦcT$j&$Gg *ܓ6W {NM dw0gWp W,K>9ui 4%1r2XmŎ@n1*LTkb jrXB@s"=$}5u$7|~BԐ/YpXTL|oԮl87 {6{L2IhRҬ0*捖&@!jd h f[Qlw& ";5;R$IdP[q:&\:lyBPH$o2I fc^nCˌ}7vx*_'DӸ;zN? }X/pd=_ *֍> 'U #W [Bu6 UZ9R9^fKđt8$*6$G($0GCrch̛tLq*L7ya;npD-TL|4/x+3#%3ÍaܜW{ͣҰ{U9DXU|tOvD R~!Fm&4{^9}sϧ{g Z1хuIFRߴCv&Gx?*F b?d Q" z%؊pBi ^;r!_S+ɶ/{UBC\jkPZ.Ghrl2 \'+Ru\81ZܵyGDa'wYPiJ(3\M#`+H=Zw&D &AiQEl$dD龔 ~%w~8P%~k܉P淃3 BGR3BγkSoHe B(>@'ѽ;/ٿ/LyL` U;sʹ̛cI/,AWp>Ӥfe+e)k o ~{iơmX%}QĽS2\!<@ i\PKKAlc.zNtlK187b=Y4__);-_:i2h<Ќs]*o .4$۝QEyI.vރu\>f?*eή¥4W2\G@y3NEgC@pl4 \|9rxcpXQ"xq q%ԖeZx/6@@M!JGbTp`O +tVpMi g+5\gx-qVb_ O- y?@? HF ?I>bb\sX;tu(6-n;AklWN.mUd"GQO I 1Ր ژ} *Zǿ '9x 4SYU(G)0!qlh`6 ~2/m/?lg[Iڏu}zaUҳ<+JPwEi\YP]k)w.{IU՘B (pOOTx,Mk(1ZAr 1H6sF|X& bNه5b:|ef6q}V(GbuS3(-^ȯ_XzCvj*ڝQ~ aB龈qSS+6~ CxO>+B7chqJSPWfS^rh2N6Nuq)q%֊1醢;1_qk&|˔9[igf_E=B$.6&9&+QlK lY>pH} ڔa4i)GVaȨ_LVIc$}Ȥ:հ/^ZIJ\}LZܮHU|Y^a#4uC< *H߬55nWKm`CǬΩrqR}fsdUh VPnGdc>9aiXae[}L )Ys4:SŠޓBpeƏ^2-ʺm>] [wδD&"CMIԌ#`"!/Eq=~;$ )ߜQ q Ot4y%vIs!Jԍڬ=ok܍@-y5hNۼXAUwO DfZZ o6.0#Rq;UϲsmIBğ\PJ2JX"?3Ze3aRZQqWgEM ""<}"1Le ]Zbى9l<-F$*k>ɠcY0n$,i ۫v#Aw]>^4RhFϋBRS2AX&eƬfmz "bñ1vG:ת}kz冠W _g 8~ݨiae" S #-Z G(_f;8;=ƩWf^do톺Cd~?>h|<}e{ȳnޏV,sغˉKuR]׻MSCB184ѹ\JlĒV[H 5*+b]p`Ė3@n!?H sr2ѹUY;p %4,Ydž HR!v.5C"m;Qk ۈ\)*qC0tXLEϯwܾ8N҃+50qӘګY6+Z@XJh\qux+O?׹YR7:g܁-ZaAuI)Bj _6IxҒtK3ۜܡz]ֈx.jIBi ?x?c}9L(~ti6>sC:_5ӿv>-3yUh}]KFf|_ƭw"GukT nq) | =m&nY= 7Ey$kZ'$QC*:MM(ŀN1\#q}fAjt[304v2M٨6HTy Ru1B,dK o>!J %ټaPD؇`sYIO)\E6qVKR haT36J l.w7CIKuWU5#GEr|ױ fcǐ{eg.l"L6&&(ܓaUbx`Wlr[k&~b,{Mِf̦s8f9N6Nq.R^+noSߎY5}6|5gP5T:2qnvcDlvC܂B'0js#I -FLT _dY9 t1oLu+nTAwEjΪQJ \,a051hPZ4C_Mw qu'gJZLm-3w{" ڽkL{~(ͣ^Sִ+Դw~;pM}/btcƎxGE9dZV=Wf^$hChxċVq3oCKG#1^]1Ef&4hT¸peY#J7*pųbvcjOk- ؄ct(%fA ':5)I9R-~h~U_ŠF/'+*#wdp&U붺n %Et,tVY_6q)m[&i*;oj5=\{WDa'OYǡS,QsʃMhG%&pc~bdnޥ&CP].LrhbVzx={*dDENF6a>X/BV٫WHGveY {OذT RAX $0dTZv)"..BRy;eIw`rMxлxTFF ` Y*8.]F\C׼a+O;*tzA^@5*Vt3^Ê(d| 0 m2:&^MB,=š6bvDAմ4Dw@`Jur-uM\ ?-oq9 z ]"7WA<_> endobj 10 0 obj << /Ascent 694 /CapHeight 683 /Descent -194 /FontName /XKYZQN+CMR10 /ItalicAngle 0 /StemV 69 /XHeight 431 /FontBBox [-251 -250 1009 969] /Flags 4 /CharSet (/ff/fi/ffi/macron/percent/ampersand/parenleft/parenright/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/semicolon/A/C/D/F/H/I/L/M/N/O/P/R/S/T/U/V/W/circumflex/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z) /FontFile 11 0 R >> endobj 87 0 obj [583 556 0 833 0 0 0 0 0 0 0 500 0 0 0 0 0 0 0 0 0 0 0 0 0 0 833 778 0 389 389 0 0 278 333 278 500 500 500 500 500 500 500 500 500 500 500 0 278 0 0 0 0 0 750 0 722 764 0 653 0 750 361 0 0 625 917 750 778 681 0 736 556 722 750 750 1028 0 0 0 0 0 0 500 0 0 500 556 444 556 444 306 500 556 278 306 528 278 833 556 500 556 528 392 394 389 556 528 722 528 528 444 ] endobj 8 0 obj << /Length1 1016 /Length2 3740 /Length3 532 /Length 4431 /Filter /FlateDecode >> stream xy_ &fr/%'[x3CftX VPK"xBH"N :APGc(B  dz @e@dyE?YH HmPQ d?X c0 0zߤ @LooNNn J?gz`?PFB =HW7*s~"ATRN*@gbRP+|D 볡/ȿK_' APV^/,/ˀ3ZുxoL|d췋Ҏp$E[ĥ0H_O3 ߼USٳ`5VtSbˈؾGj* &2LJI,(ŧr?()yZHj5Bl֌Nty:{<1rʢ1ٷg ڝJRq){HUj7Ca#=mټ~s k _W/=e(TxIڪȂĆ9^\9 <4bt 1Aa4uS4{G',wݗ߲LT:߭8T`t'OTi-xro,Pe - ]vKES`85 Itf{[j4׵%[{lresEP\7< X*ݤҚ:\Shɗ>5$gh"{Rq"c'|SXLdle%k ɍUiv;#*>y7@ޖ.mi{t>|8u.XgyJonMakL TXNqrRlLRB+jJ)j`YEhBjI n3;|Y(h(8)*2,yo6|G;:n&K֮Nqq׎Xp%+d>XmwveX&kPN ) -B  oX&}N]Frq`|:@\ݳݬ.Pd9),֥_4G7CO_ǹ,g,tWNyzY5ĩi!?'%JXd11ҠxBd3h˄J5 1_{}%" +G/¬bn>:zRW}B=)-%9:y} dx' 2b iKTcu8w1/n?z{ӯ*!B xGGU.[YY!BY:)> y%UMzFB0-r>n NV1,K64Qu⾐^;_R3Rzڒ D}Y%BM$e0uT Ϲ+YXFʴZٵ6n;miL7qS]; 6˴$K1NmRAM!AC]E^5<_[y\^ٗߧlp?y"<ʚ6dTȄWt@oqai;.;OBμ2dЋm=#m7Cr&ܱJs8mz W2My2[g蚝[; ?kuξThc:lmSTQai~P>7픁 yaTV]GdM{/'?1W,hV~=^Q+ZNԈRdUD>_*ֽKM-[{0rd>ZdxFuDg3v^]Qq|YO6(T>'Tk:ee=,+a)JHfrnqQA.q"O_4< pv˟ "[#zOѴ'{2[ ᾷ?-r.acjpf{&Io=zu*35xǣu˔d6k9Fۮh He:T}mF b+DV'zpnn[ܮܦTrT.풱7I.=n09O@l wz0{\ ᜠy(BkGWE_x w35'}9vTPxgWY $$ |VY6vFk 1?ޠ*C.ZZE|7a7zϧӾuH;rEYx)Vܽ'Bt C.re Q.ªkԷa"4\o)C smCJ\ʓ#^zu:)];w֭^¢kbg+#֝[A,ڂhjl'zSl8Ajm)A,shkӟ[@|8stnB'.QPyhu+aTP@X~fh:~a^ڿ E  AM廛V$yUȢYIxE?@AYLv7P!zf''_pe󄃦v!r< D&.ڌ$uY!j츇& ᧺3MxQ2D^S8b13ĦŇ%Tlo($m1 d<`uN;̲׽5ޒ5)6hGwxh^Y`wX`enIU7ȹE1!a/gTϾb^[^h? k|O9ylc{oKp51E@(  ¶l3Irkb-p˦v\Smakζ[{7Ib~f.RO'vھsp ezQzʾxb8yW&R3EUBjoo uwGuQgsymzh;uC>|$~Jv݃8|/n_l9^5cwa1y:m'q|%֟M5蜴Lmw|}LKԄp\.ܾ};hlpI1|E!ʹtfk¯eԍuTVlWw+1ˬ2Kԙshӎ>]\.4~FrW;~I#2WF]zn\riEfu3r;xh45#>˜Ϥ˴ԡlAV:(cA,tc@HƎb=|h6bt-RMf_Y9ˤF(K'*D. _Ņ{=O 5u5Zt?;l6Gut㫃e҂#Ϥ>zjoZHO~KuȅQ)*mwnD73PmƽԹ1$U!HfBWVփy܀F/gu{5k~O$FKGls $@,fZ{vm)yH^[/Q3> endobj 7 0 obj << /Ascent 694 /CapHeight 683 /Descent -194 /FontName /VNXKJM+CMR12 /ItalicAngle 0 /StemV 65 /XHeight 431 /FontBBox [-34 -251 988 750] /Flags 4 /CharSet (/comma/zero/two/five/F/L/T/a/b/e/h/l/m/o/r/s/u/y) /FontFile 8 0 R >> endobj 88 0 obj [272 0 0 0 490 0 490 0 0 490 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 639 0 0 0 0 0 612 0 0 0 0 0 0 0 707 0 0 0 0 0 0 0 0 0 0 0 0 490 544 0 0 435 0 0 544 0 0 0 272 816 0 490 0 0 381 386 0 544 0 0 0 517 ] endobj 5 0 obj << /Length1 1021 /Length2 4023 /Length3 532 /Length 4705 /Filter /FlateDecode >> stream xy<}dz}KR?d_fcN/eɘ cRȾJ${"dׄKSs_Wu<=>|9_>n#S15$$%  ( !iQpՄP HB Y)9Iisţ (£p,`'8\9p `CQ_q@ L~LP( )hp@9 OAXGӌt "D$(G#BogrmO wg wEc|+I@36O.A#԰NӄFFhpcʇ(,WbOGs2XO`* "9)l7I`/" $P;r`׿`oHEC ߐ(7$ :玘 &)e|3Ǣ=Q "Y_J#wэg?luκ ̇O:]54[>b%,J;cq_ۄ!ս(R:bڛ!1|cXK+-\'Q>ㄓ[vsAdYO8%+I)|OK|Lǒ1 ikvA$tT'6>޽\vWpC z6wBMN6,HS=W\_I,?xC)o 8o { 7_P`$q4[c? m? 3EWFF\g X{2{AU%2BDgK+p{Adlb 9 7-IZ{74|/sLyn~v=ŝˆ_|TܱE^ j]:̆樤lmYGu{3I mӚar$]~%n'k(YrOx{)D~,܈K(lz. ~r(./KGgcrD?32řmoFkԽΠfɨz'82p1r9 {9ήW0buL?+۫`{:W}$eEY\"1rF\l=\ M5暫8}LaJ*i]7&jZ BՏmT&}{~?.Gsѡ`x;Nbl^7OKU=]㤅v6ї;ΒfU~U-a15䛏 $Ra}|{ZCK?&um** E;_hTxO8,qS< *<)<:.c;569LY]yJiܾЍ>[q6ؔu leA[ϭ%e`}J:vڧw;s=8R)pU33"޳IxG65} h]HVͤqt~xr3B|n_< SS!LHHE:߾tg ޚzF:ڇ5Bt=,ӤJ+)F*MI&d"Bm-WQ#{5A]U;v)R6_.@SQ_{]]zG˨rkB9nVihϯl=D&6|=w;wnYA>JhS"rqU}vūʻbkj$O3v_bJg?*{%5$OЇF5~+쑌udiE~5.Wӓ5PrP49iXjFUk Bhf*9%+>-[$wr25!%g ̄Lt_ܐ^ w~vD5TQ;63g1] У܍P[4|J+/=Eu.xLPk AneOuNJ_pRX|N4,Q5V|Y1G\ZYQ [ɯ|~5C0ffw>bVom^T{(*Qy}a{%Mo2?%K*01ELW0%mw])Ǖhb|5gC]=΀L}h+L/i茨#d͌y5ktZX>4Ea*Zi|:ĭo[I{yQJLn2m  7enu|=gÁc)a5쉾T?5ԉ)r~/Ynmy,},Emq}M:>2$ԛN^9R{JPᢿȮ#:4Dcı CtU >~ܰmM0‡q v.-~|$$RvD/{.rt85pvڅ16+<_7,.9@~9ћ9nxlYLCRIk;NvRt uKb%x(wv쑼z+K,*X<]~>m?(,ԺvɺD__Д+h zydg|8*҆X6,;ߡٟG1Wʋ݅пJWFdtd֣gaPMzxR;2mJ5HLkx8|(Nc7y?(G|2x o{gqsHK gtٴLZJۙE໌eZ[4u*[^BWY #^X6%r*dd29TqJ|i2UNcѸ&K:DSV6*C2-{,ޛv(Q\ͨ.(M:tV8Z)`lIn !Nw"6:A`n5gCE b/ [˂NY{J)bvL#z" q)~12vc)K54qdKfM]e0 >cEL{c^I/+k˶T5~p6Piַe9T40wwg> endobj 4 0 obj << /Ascent 694 /CapHeight 683 /Descent -195 /FontName /EYDYSW+CMR17 /ItalicAngle 0 /StemV 53 /XHeight 431 /FontBBox [-33 -250 945 749] /Flags 4 /CharSet (/A/C/L/S/T/U/a/e/f/l/m/o/p/r/s/u/v/x/y) /FontFile 5 0 R >> endobj 89 0 obj [693 0 668 0 0 0 0 0 0 0 0 576 0 0 0 0 0 0 511 668 693 0 0 0 0 0 0 0 0 0 0 0 459 0 0 0 406 276 0 0 0 0 0 250 772 0 459 511 0 354 359 0 511 485 0 485 485 ] endobj 25 0 obj << /Type /Pages /Count 6 /Parent 90 0 R /Kids [2 0 R 27 0 R 30 0 R 33 0 R 36 0 R 54 0 R] >> endobj 59 0 obj << /Type /Pages /Count 5 /Parent 90 0 R /Kids [57 0 R 61 0 R 64 0 R 67 0 R 70 0 R] >> endobj 90 0 obj << /Type /Pages /Count 11 /Kids [25 0 R 59 0 R] >> endobj 91 0 obj << /Type /Catalog /Pages 90 0 R /PTEX.Fullbanner (This is pdfTeX, Version 3.14159-1.10b) >> endobj 92 0 obj << /Producer (pdfTeX-1.10b) /Creator (TeX) /CreationDate (D:20050222113300) >> endobj xref 0 93 0000000000 65535 f 0000001941 00000 n 0000001836 00000 n 0000000009 00000 n 0000093900 00000 n 0000088921 00000 n 0000093745 00000 n 0000088472 00000 n 0000083767 00000 n 0000088317 00000 n 0000082956 00000 n 0000068675 00000 n 0000082799 00000 n 0000067995 00000 n 0000058462 00000 n 0000067837 00000 n 0000058028 00000 n 0000050600 00000 n 0000057870 00000 n 0000048918 00000 n 0000038184 00000 n 0000048758 00000 n 0000036601 00000 n 0000030460 00000 n 0000036443 00000 n 0000094299 00000 n 0000003223 00000 n 0000003115 00000 n 0000002079 00000 n 0000004703 00000 n 0000004595 00000 n 0000003316 00000 n 0000006225 00000 n 0000006117 00000 n 0000004808 00000 n 0000008310 00000 n 0000008202 00000 n 0000006318 00000 n 0000030235 00000 n 0000028325 00000 n 0000030078 00000 n 0000028061 00000 n 0000025863 00000 n 0000027906 00000 n 0000024700 00000 n 0000022745 00000 n 0000024542 00000 n 0000021428 00000 n 0000019512 00000 n 0000021271 00000 n 0000019287 00000 n 0000017884 00000 n 0000019132 00000 n 0000009677 00000 n 0000009569 00000 n 0000008473 00000 n 0000010833 00000 n 0000010725 00000 n 0000009770 00000 n 0000094407 00000 n 0000012382 00000 n 0000012274 00000 n 0000010938 00000 n 0000013883 00000 n 0000013775 00000 n 0000012475 00000 n 0000015554 00000 n 0000015446 00000 n 0000013976 00000 n 0000016135 00000 n 0000016027 00000 n 0000015659 00000 n 0000016228 00000 n 0000019489 00000 n 0000021658 00000 n 0000021634 00000 n 0000021751 00000 n 0000024895 00000 n 0000024918 00000 n 0000028278 00000 n 0000030437 00000 n 0000036872 00000 n 0000037167 00000 n 0000049332 00000 n 0000049653 00000 n 0000058277 00000 n 0000068388 00000 n 0000083389 00000 n 0000088710 00000 n 0000094128 00000 n 0000094509 00000 n 0000094576 00000 n 0000094684 00000 n trailer << /Size 93 /Root 91 0 R /Info 92 0 R >> startxref 94779 %%EOF survey/inst/CITATION0000644000176200001440000000172314417157260013733 0ustar liggesuserscitHeader("To cite the survey package in publications use one or more of:") bibentry(bibtype="misc", author="Thomas Lumley", year=2023, title="survey: analysis of complex survey samples", note="R package version 4.2", textVersion="T. Lumley (2023) \"survey: analysis of complex survey samples\". R package version 4.2." ) bibentry(bibtype="article", year=2004, author="Thomas Lumley", title = "Analysis of Complex Survey Samples", journal="Journal of Statistical Software", volume="9",number=1,pages="1-19", note="R package verson 2.2", textVersion="T. Lumley (2004) Analysis of complex survey samples. Journal of Statistical Software 9(1): 1-19" ) bibentry(bibtype="book", year=2010, author="Thomas Lumley", title = "Complex Surveys: A Guide to Analysis Using R: A Guide to Analysis Using R", publisher="John Wiley and Sons", textVersion="T. Lumley (2010) Complex Surveys: A Guide to Analysis Using R. John Wiley and Sons." ) survey/inst/porting.to.S0000755000176200001440000000032011457435610015017 0ustar liggesusersVersion 3.6-12 is available for S-PLUS 8.0, ported by Patrick Aboyoun, who was then at what was then Insightful. Comparing this to the R version 3.6-12 should help if you want to port more recent versions. survey/inst/disclaimer0000644000176200001440000000070313705672756014645 0ustar liggesusersThis software comes with NO WARRANTY WHATSOEVER. This product has not been evaluated by the Food and Drug Administration and is not intended to diagnose, treat, cure, or prevent any disease. If it breaks you get to keep both pieces. Not tested on animals. Your mileage may vary. Keep out of reach of babies and small children. For external use only. Times are approximate. Batteries not included. Product of more than one country. May contain nuts. survey/inst/BUGS0000644000176200001440000000066513415262361013261 0ustar liggesusersKnown bug: 1. calibrate and postStratify do not recompute the finite population correction. This matters only when the sampling fraction is very close to one 2. svydesign should check that `weights` is the right length 3. options(survey.lonely.psu="adjust") does not do what it says in the case of svytotal(). Not yet clear whether it does the right thing, though. 4. Should drop unused factor levels from strata, but don't. survey/inst/NEWS0000755000176200001440000015763514423575767013333 0ustar liggesusers4.2 Handling of influence functions has CHANGED. A function that supplies influence functions must supply one for every observation it was given in its input: use 0 for observations removed by subsetting. (for Guilherme Jacob) regTermTest(method="LRT") required the two models to use the same observations (of course), but didn't check, so IT WAS WRONG. It now subsets properly. (for Keiran Shao) This will probably be the *last* interpreted-R-only version of survey. Future versions will likely incorporate C++ code for faster variance computation and for small-area estimation. deffs in svyglm.svyrep.design (Ben Schneider) svynls() allows for prior (eg precision) weights (for Gary Nelson) improved names in svyquantile.svyrep.design (Ben Schneider) trimWeights() could get into an infinite recursion (Ingmar Sturm) data(myco) from Rao, Scott, and Skinner (originally from Clayton & Hills) as.svrepdesign now throws an error with post-stratified/raked/calibrated designs -- create replicates *first*, then calibrate (for Lauren Kennedy) trimWeights now works with replicate-weights designs score tests for svyglm (with Keiran Shao) svyby(), and thus svyboxplot(), didn't handle the new quantile functions correctly when standard error/ci weren't requested (Stephanie Zimmer, Raymond Pan) svycontrast() threw an error on the output of svyby() with return.replicates=TRUE (Alena Stern) Fix regTermTest for svycoxph for the methods lookup changes in R 4.0 (and consequential change to marginpred) We don't provide model.matrix.svycoxph any more;use the inherited survival:::model.matrix.coxph Recent survival::coxph() switches to robust variances with non-integer weights so check for model$naive.var before model$var Disable the pass-through from predict.svycoxph to predict.coxph for type="expected" (Bryan Shepherd) svyby( svyvar) would throw an error on domains with only one observation (for Dirk Schumacher) svyvar() computes sample size 'n' in the same way for na.rm=TRUE as for a domain (for Raymond Pan) xdesign() for crossed designs (which aren't strictly surveys, but are basically similar) removed redundant loop in saddlepoint approximation to pchisqsum (Qiaolan Deng) fix in summary(svyivreg) for variances (Chandler McClellan) svyolr() didn't run for subsets of raked/calibrated designs (Antony Damico) add predict.svyolr (for Vincent Arel-Bundock) add anova.svycoxph (for Bryan Shepherd) add stringsToFactors=TRUE to svyby to ensure factors have same levels in domains (for various people including Stephanie Zimmer) more complicated svyby example in ?svycontrast svyranktest() gave an error for multiple groups with replicate weights (Kasuki Yoshida) Additional chisquared test for tables with zeros (CrossValidated question #571328) svydesign() has a 'calibrate.formula' option to tell R that your weights have already been calibrated/raked/post-stratified (for Tobias Schoch) svycontrast() didn't work on svrepglm objects without replicates (Thomas Loughlin) error in svycoxph with rescale=FALSE (Jing Zhang) error in vcov.svyrep.design with mse=TRUE (shows up in svyVGAM) svyquantile() didn't pay attention to interval_type for replicate weights (David Jorquera Petersen) svyquantile() qrules 5 to 9 now return the single data value when there's just one (David Jorquera Petersen) regTermTest() on svyolr() objects created in a function now finds the design object more reliably. (for Pedro Baldoni) regTermTest() will now test against null models in svycoxph() Fixes to svyquantile: https://github.com/bschneidr/r-forge-survey-mirror/pull/7 (Ben Schneider) anova.svyloglin was broken by change to anova.glm(test=NULL) (Brian Ripley) One-sample svyttest() on logical variable now tests for P(TRUE==0) not P(FALSE==0) (Stephanie Zimmer) rename svykm.fit to svykm_fit because CRAN tests 4.1-1 CRAN 4.1 svyquantile() has been COMPLETELY REWRITTEN. The old version is available as oldsvyquantile() (for David Eduardo Jorquera Petersen) svycontrast()'s improvements for statistics with replicates are now also there with svyby(), for domain comparisons (Robert Baskin) svyttest() now gives an error message if the binary group variable isn't binary (for StackOverflow 60930323) confint.svyglm Wald-type intervals now correctly label the columns (eg 2.5%, 97.5%) (for Molly Petersen) svyolr() using linearisation had the wrong standard errors for intercepts other than the first, if extracted using vcov (it was correct in summary() output) svyglm() gave deffs that were too large by a factor of nrow(design). (Adrianne Bradford) svycoxph() now warns if you try to use frailty or other penalised terms, because they just come from calling coxph and I have no reason to believe they work correctly in complex samples (for Claudia Rivera) coef.svyglm() now has a complete= argument to match coef.default(). (for Thomas Leeper) summary.svyglm() now gives NA p-values and a warning, rather than Inf standard errors, when the residual df are zero or negative (for Dan Simpson and Lauren Kennedy) In the multigroup case, svyranktest() now documents which elements of the 'htest' object have which parts of the result, because it's a bit weird (for Justin Allen) svycontrast() gets a new argument add=TRUE to keep the old coefficients as well twophase() can now take strata= arguments that are character, not just factor or numeric. (for Pam Shaw) add reference to Chen & Lumley on tail probabilities for quadratic forms. add reference to Breslow et al for calibrate() add svyqqplot and svyqqmath for quantile-quantile plots SE.svyby would grab confidence interval limits instead of SEs if vartype=c("ci","se"). svylogrank(method="small") was wrong (though method="score" and method="large" are ok), because of problems in obtaining the at-risk matrix from coxph.detail. (for Zhiwen Yao) added as.svrepdesign.svyimputationList and withReplicates.svyimputationList (for Ángel Rodríguez Laso) logLik.svyglm used to return the deviance and now divides it by -2 svybys() to make multiple tables by separate variables rather than a joint table (for Hannah Evans) added predictat= option to svypredmeans for Steven Johnston. Fixed bug in postStratify.svyrep.design, was reweighting all reps the same (Steven Johnston) Fix date for Thomas & Rao (1987) (Neil Diamond) Add svygofchisq() for one-sample chisquared goodness of fit (for Natalie Gallagher) confint.svyglm(method="Wald") now uses t distribution with design df by default. (for Ehsan Karim) confint.svyglm() checks for zero/negative degrees of freedom confint.svyglm() checks for zero/negative degrees of freedom mrb bootstrap now doesn't throw an error when there's a single PSU in a stratum (Steve White) oldsvyquantile() bug with producing replicate-weight confidence intervals for multiple quantiles (Ben Schneider) regTermTest(,method="LRT") didn't work if the survey design object and model were defined in a function (for Keiran Shao) svyglm() has clearer error message when the subset= argument contains NAs (for Pam Shaw) and when the weights contain NAs (for Paige Johnson) regTermTest was dropping the first term for coxph() models (Adam Elder) (this was in R>=4.0) svydesign() is much faster for very large datasets with character ids or strata. svyglm() now works with na.action=na.exclude (for Terry Therneau) extractAIC.svylm does the design-based AIC for the two-parameter Gaussian model, so estimating the variance parameter as well as the regression parameters. (for Benmei Liu and Barry Graubard) svydesign(, pps=poisson_sampling()) for Poisson sampling, and ppscov() for specifying PPS design with weighted or unweighted covariance of sampling indicators (for Claudia Rivera Rodriguez) 4.0 Some (and eventually nearly all) functions now return influence functions when called with a survey.design2 object and the influence=TRUE option. These allow svyby() to estimate covariances between domains, which could previously only be done for replicate-weight designs, and so allow svycontrast() to do domain contrasts - svymean, svytotal, svyratio, svymle, svyglm, svykappa Nonlinear least squares with svynls() now available Document that predict.svyglm() doesn't use a rescaled residual mean square to estimate standard errors, and so disagrees with some textbooks. (for Trent Buskirk) 3.38 When given a statistic including replicates, svycontrast() now transforms the replicates and calculates the variance, rather than calculating the variance then using the delta method. Allows geometric means to exactly match SAS/SUDAAN (for Robert Baskin) vcov.svyrep.design to simplify computing variances from replicates (for William Pelham) svykm() no longer throws an error with single-observation domains (for Guy Cafri) Documentation for svyglm() specifies that it has always returned model-robust standard errors. (for various people wanting to fit relative risk regression models). 3.37 RODBC database connections are no longer supported. Use the DBI-compatible 'odbc' package set scale<-1 if it is still NULL after processing, inside svrepdesign() [https://stats.stackexchange.com/questions/409463] Added withPV for replicate-weight designs [for Tomasz Żółtak] svyquantile for replicate-weight designs now uses a supplied alpha to get confidence intervals and estimates SE by dividing confidence interval length by twice abs(qnorm(alpha/2)). [For Klaus Ignacio Lehmann Melendez] All the svyquantile methods now take account of design degrees of freedom and use t distributions for confidence intervals. Specify df=Inf to get a Normal. [For Klaus Ignacio Lehmann Melendez] svyivreg() for 2-stage least-squares (requires the AER package) warn when rho= is used with type="BRR" in svrepdesign [for Tomasz Żółtak] Add "ACS" and "successive-difference" to type= in svrepdesign(), for the American Community Survey weights Add "JK2" to type= in svrepdesign Warn when scale, rscales are supplied unnecessarily to svyrepdesign More explanation of 'symbolically nested' in anova.svyglm Link to blog post about design df with replicate weights. Chase 'Encyclopedia of Design Theory' link again. 3.36 Add withPV.survey.design for plausible-value analyses (needs mitools >=2.4) 3.35-3 Warning from svrepdesign() if type="BRR" and scale= is specified, to catch defaulting to BRR (Stas Kolenikov) More fixes to svymle() with linear predictors for multiple parameters (no change to results, but gets rid of warning) allow svyby() to have a vector as the first argument force character vectors to factor in id= argument of svydesign (fixes Stack Overflow 54239063) 3.35-2 The previous (3.34) patch to allow offsets in svymle() didn't work with non-trivial linear predictors for multiple parameters. (reported by Beat Hulliger) 3.35-1 svytable() could give an integer overflow with a replicate-weight design having integer weights, such as CHIS. (Elizabeth Purdom) empty factor levels in the strata= argument to svydesign() no longer create strata The twophase() function gave errors when the first phase of sampling had multiple stages (reported by Pedro Luis Baldoni) 3.35 The use of RODBC is DEPRECATED. If possible, I want to move to just supporting the R-DBI interface; you can use ODBC connections with the DBI-compatible 'odbc' package Some instances of deparse() needed to be paste(deparse(), collapse=""), notably in svyciprop() (Boris Fazio) Fix to svycontrast had broken the no-names case (Brian Miner) More helpful error message with missing values in replicate weights (Antony Damico) svyglm() now uses match.call() rather than sys.call() for storing the call (for Michael Laviolette) svystandardize() now takes over=~1 for the whole population (for Michael Laviolette) svycralpha() does Cronbach's alpha (for Franziska Kößler) many tests based on the printed output are moved to tests/testoutput because they differ trivially between platforms and so aren't CRAN-compliant. 3.34 removed duplicate definition of svycontrast.svystat fix match.names() for the case of all the same names in different order (Sebastien Lucie) make rescaling of weights optional in svyglm and svycoxph (Greg Ridgeway) USER VISIBLE CHANGE: default rescaling of weights in svyglm and svycoxph with replicate weights is now mean=1, as it always was with svydesign objects, rather than sum=1. This does not affect estimates or tests or comparisons, but the AIC and its effective degrees of freedom will look more plausible, as will the deviance. Fix handling of missing data for calibrated designs in svyranktest (for Brad Biggerstaff) handle empty subsets in onestage, because svyby(). (for Greg Freedman) allow offset() in svymle() (Patrick Brown) svyhist() returns the same as hist(), plus when freq=TRUE a component count_scale giving the scale factor between counts and density (for Ward Kingkade) example of geometric means added to ?svycontrast (for Irene van Woerden) move check for missing repweights later in the function to pick up more cases (Anthony Damico) fix printing of predicted values from predict.svrepglm (for Anthony Damico) added minqa::newuoa and minqa::bobyqa as options for svymle(), and made 'newuoa' the default when a gradient is available 3.33-2 confint method for svyttest (for Brian Guay) partial fix in start= argument for svyglm() [still doesn't work inside function] 3.33-1 two minor bug fixes for ABS contributions to calibrate() 3.33 Add explicit family= argument to svyglm() methods because of strange scoping problems (for Thomas Leeper) calibrate() now displays differences between sample and population names (for Stas Kolenikov) cal_names() displays what the auxiliary variable names will be for a formula regTermTest() now does Rao-Scott-type Wald tests, which I think are the same as SUDAAN's "Satterthwaite Adjusted Wald Tests" (but I don't have an example to verify). 3.32-2 Actually add the hyperbolic sine distance function Add AIC method for svycoxph 3.32-1 pseudo-rsquared paper is out: update reference Add cal.sinh for the hyperbolic sine distance function (used in CALMAR2) with code from Maciej Beręsewicz Coerce tbl_dfs to data frames in svydesign, svrepdesign, twophase, because they aren't actually a drop-in replacement. 3.32 Add diffs for calibration from Daniel Oehm at ABS - Sparse matrix support - Heteroscedasticity parameters - more flexible boundary constraints Update references to AIC/BIC paper, Statistical Science review paper More information on accuracy of pchisqsum methods svyglm() didn't work with missing values in database-backed designs (Anthony Damico) 3.31-8 Add svysurvreg() (for Pam Shaw and Eric Oh) Remove the tests that don't produce character-identical output on all platforms (for CRAN) 3.31-7 Add deff="replace" as an option for svyratio (for Chris Webb) Add psrsq() for pseudo-R^2 statistics (for Ward Kinkade) 3.31-6 Make database-backed svydesign work with *no* design variables (for Anthony Damico and Guilherme Jacob) 3.31-5 predict.svyglm() uses object$xlevels and object$contrasts and so should be able to guess the right factor levels when they aren't supplied in newdata= (for @thosjleeper) fix return() without parentheses in svykm.R 3.31-4 svyciprop(,method="like") and confint.svyglm(method="like") work even when the design effect is large. 3.31-3 svyciprop has method="xlogit" that reproduces what SUDAAN and SPSS give. (for Rex Dwyer) Added reference for svylogrank Added example from YRBS for software comparison Copied some names from NEWS into THANKS 3.31-2 explicitly dropping dimensions on a 1x1 matrix 3.31-1 Allow for incompatible change in output of CompQuadForm::farebrother() 3.31 update isIdValid() to dbIsValid() for DBI changes. explicitly :: or import ALL THE THINGS. mse option for svrepdesign.character and svyrepdesign.imputationList was ignored (Antony Damico) confint works on output of svycontrast (for Michael Laviolette) denominator df fixed in confint.svyglm (Joey Morris) svyboxplot rule for which lower-tail points are outliers was wrong (David Collins) calibrate() with variable-specific epsilons and zero sample totals didn't work (Alex Kowarik) document that regTermTest(method="LRT") can't handle models with a start= argument and document how to use anova.svyglm instead. (Brad Biggerstaff) update tests output for new formatting in current R. 3.30-4 svypredmeans() does the same things (together with svycontrast()) as as PREDMARG in SUDAAN (for Thomas Yokota and Anthony Damico) 3.30-4 confint.svystat was handling denominator degrees of freedom wrongly for the Wald method (Jared Smith) 3.30-3 vcov.svrepstat does more sensible things when covariances aren't estimated (eg for quantiles). This fixes issues with svyby dropped support for old version of hexbin 3.30-1 Fix example(svyplot) now that "hexbin" package no longer loads grid package 3.30 svyranktest() now allows k-sample tests (eg Kruskal-Wallis) svylogrank() does the generalised G-rho-gamma logrank tests [methods from Rader and Lipsitz (and probably al)] various CRAN fixes 3.29-9 AIC.svyglm, based on Rao-Scott approximation BIC.svyglm, based on multivariate Gaussian likelihood for coefficients svyglm.svyrep.design checks values are finite before replicating calibrate() using a list of margins now allows named vectors for 1-d margins 3.29-8 svyhist(freq=TRUE) works with replicate-weight designs (for Ward Kinkade) 3.29-7 svyranktest() works with replicate-weight designs (for Matthew Soldner) reference to the lavaan.survey package in ?svyfactanal 3.29-6 svyby() now always includes within-domain covariances 3.29-5 Change from multicore to parallel. Parallel processing is now only available with R >=2.14 ddf argument really works now in confint.svyglm (Anthony Damico) colour specification in plot.svykmlist now works (Mark Rosenstein) svyplot() documentation explains how to annotate a hexbin plot 3.29-4 add symmetric=TRUE to eigenvalue calculation in anova.svyloglin, to improve numerical stability subset.svyimputationList now allows the subsets to end up with different observations in them (for Anthony Damico) subset.svyDBimputationList now gives an error if the subsets have different observations, not just a warning that people ignored. svydesign gives an error if there is only one PSU, to catch omission of tilde in svydesign(id=~1,...) (Milan Bouchet-Valat) 3.29-2 confint.svyglm(method="Wald") wasn't using its ddf= argument, because confint.default() doesn't (Anthony Damico) 3.29 svystandardize() for direct standardization over domains withReplicates() has a method for svrepstat objects added predict.svrepglm(), which can return replicates saddlepoint approximation to sum of chisquares works further out into the tails fixed bug in rescaling in calibrate() when initial weights are very wrong (Takahiro Tsuchiya) documented df= argument in svyciprop(method="mean") (Anthony Damico) added df= argument to other svyciprop methods for Stata compatibility (Anthony Damico) 3.28-3 svykappa didn't work for larger than 2x2 tables. (Jeffery Hughes) svyby didn't allow deff="replace" (Francisco Fabuel) svrepdesign(,type="other") now warns if scale, rscales arguments are not given svystat, svrepstat objects now have a plot method (barplot, currently.) svyplot(,type="bubble") now uses the basecol= argument for colors. postStratify() now works when some input weights are zero 3.28-2 calibrate() prints out sample and population totals when the lengths disagree calibrate() is more stable when the initial weights are wrong by orders of magnitude (for Kirill Mueller) calibrate() can now take a list of margins as input, similar to rake() (for various people including Kirill Mueller) 3.28-1 SE now works with output of predict.svyglm (Kieran Healy) make.panel.svysmooth() sometimes had invalid bandwidth choices. as.svrepdesign() now allows for fpc information not present in the design object (Alistair Gray) regTermTest(,method="LRT") works for svyolr(), and method="Wald" now doesn't need user-specified df (for Zachary Grinspan) svrepdesign() checks the length of the rscales= argument (Ward Kinkade). Document the problem with in-line data-dependent variable construction in svyby() (Anthony Damico) Check for completely-missing groups in svyby 3.28 svyvar() for replicate-weight designs now returns whole matrix withReplicates() has method for svyvar() output, to simplify multivariate analyses. design effect estimate for svytotal with replicate weights was wrong (Daniel Fernandes) transform() is now a synonym for update(). lots of partial argument matching removed to keep CRAN happy. 3.27 added anova.svyglm() for Wald tests and Rao-Scott LRT. anova(model1, model2) works for nested models even if not symbolically nested. formula component of svyglm$call is now always named, so update() will work. svyboxplot(,all.outliers=TRUE) didn't work for single boxes (Takahiro Tsuchiya) 3.26-1 Better missing-value handling with replicated weights in svyquantile svyboxplot() has all.outliers= argument to plot all outliers 3.26 Added Preston's multistage rescaled bootstrap (for Alois Haslinger) The multistage bootstrap can use the multicore package if available. calibrate() can take a vector of tolerances (for Alois Haslinger) [this actually used to work by accident, but now it's documented] Clearer error messages when post-strata contain NAs. 3.25-1 The ... argument to svytable() is now passed to xtabs() Clearer documentation about graphing discrete variables. 3.25 svyhist() didn't work for two-phase designs. added svylogrank() for logrank test for survival data. added svyranktest() for two-sample rank tests. svrepdesign() and as.svrepdesign() now have mse= argument to request replicate-weight variances centered around the point estimate rather than the mean of the replicates. The default is controlled by options(survey.replicates.mse), which defaults to FALSE, consistent with previous versions. (For Anthony Damico, among others) 3.24-1 CHANGE: svychisq() statistic="lincom" and "saddlepoint" now use the linear combination of F statistics from pFsum(). 3.24 Rao-Scott test based on linear combinations of Fs is now also available in regTermTest Algorithms from CompQuadForm (AS155 and AS204) now used for method="integration" in pFsum and pchisqsum. These are more accurate and faster than the previous implementations. If you use CRAN binary packages you will need at least R 2.12. pFsum() saddlepoint and Satterthwaite methods are also much faster. The saddlepoint approximation now works for the whole range, not just the right tail. 3.23-3 Some vignettes didn't load the package (Brian Ripley) Added pFsum() for linear combination of F distributions with same denominator. better example (quantile regression) in withReplicates(). 3.23-2 svyhist() didn't handle include.lowest= correctly. (Chris Wild) svyby(, return.replicates=TRUE) now returns the replicates in the same order as the printed output, and labelled. (for Bob Fay) 3.23-1 svycdf() wasn't handling replicate weights correctly. Change in svyquantile() for replicate weights when using type="quantile". Point estimate used to be mean of replicates, now is ordinary weighted quantile. (for Bob Fay) Small changes in handling of zero weights in svyquantile(). 3.23 two-sample svyttest() didn't work with replicate weights. (Richard Valliant) 3.22-4 postStratify now allows 1-d matrix as well as vector in data frame of population counts. (for Jean Opsomer) print.summary.pps wasn't being exported (Gonzalo Perez) svyhist() ignored right= argument predict.svycoxph() was slightly overestimating standard errors for survival curves. [.pps and [.twophase2 crashed when no observations were removed (Gonzalo Perez) 3.22-3 bug in trimWeights (Richard Valliant), also add warning for attempts to trim past the mean weight. 3.22-2 bug in the na.rm.by= argument to svyby() (Trevor Thompson) regTermTest() now does F tests by default (for Chris Wild) 3.22-1 added df= argument to confint() methods for svystat, svyrepstat, svyby, svyratio (for Richard Valliant) added na.rm.by= argument to svyby(), to drop groups defined by missing values of by= variables. confint.svyby() uses SE(), not vcov(), so undefined values in replicates are handled on a per-group basis. svysmooth(,method="locpoly") now has automatic bandwidth choice, and make.panel.svysmooth() will use this choice by default. 3.22 added stratsample() to take stratified samples. fixed bug in design effects for subsets of calibrated or database-based surveys changed scaling in biplot.svyprcomp so area is proportional to weight, rather than height proportional to weight. 3.21-3 svyratio() can now estimate design effects (for Scott Kostyshak) 3.21-2 Rao & Wu bootstrap wasn't sampling n-1 PSUs (Richard Valliant) 3.21-1 bug in printing variances for three or more variables (Corey Sparks) svyquantile() reliably returns NA for NAs in data when na.rm=FALSE. svymle() was not using analytical gradients with nlm() (Christian Raschke) 3.21 added trimWeights() to trim weights, and trim= option to calibrate (for Richard Valliant) clearer documentation that svyquantile() needs ci=TRUE or keep.var=FALSE to work with svyby() added a simple random sample to data(api) as promised in book (Djalma Pessoa) 3.20 in svycoxph() modify the rescaling of weights to avoid very small weights because of convergence problem in coxph() with counting-process data (for Tapan Mehta) added some multivariate statistics: svyprcomp(): principal components, svyfactanal(): factor analysis. added heuristic check that combined.weights= has been specified correctly. confint.default wouldn't give CIs for multiple parameters with replicate weights, because the vcov matrix didn't have variable names. (Art Burke) More of the svyciprop() methods now work for replicate-weight designs. The book of the package is now available! (see http://faculty.washington.edu/tlumley/svybook) 3.19 svrepdesign() can specify replicate-weight columns with a regular expression svrepdesign() can produce database-backed designs svyquantile() has a df argument to use a t distribution in Woodruff's method (for Wade Davis) calibrate() doesn't require an intercept in the calibration model (for Richard Valliant) regTermTest() and model.frame() work with svyolr() (for Michael Donohue) better printing of svyvar() output (for Brad Fulton) twophase() documents more clearly that method="simple" is preferred for standard epi designs where it works. better error messages when a database-backed design has a closed connection 3.18-1 documented the need to use quasibinomial/quasipoisson in svyglm improved the description of confidence intervals and standard errors for svyquantile. 3.18 Changed the default to combined.weights=TRUE in svrepdesign() Fixed bug in multiple imputation analysis with multicore package. The check for PSUs properly nested in strata had some false negatives. 3.17 Under Linux, Mac OS, and most Unix systems, multiple processors can be used for the subgroups in svyby(), the imputed data sets in with.svyimputationList and with.DBsvyimputationList, and the replicate weights in svyglm.svyrep.design and svyolr.svyrep.design. This requires the 'multicore' package and the argument multicore=TRUE to the functions (in the absence of the multicore package, the multicore=TRUE option is just ignored). svyvar.svyrep.design handled NA values incorrectly (Arthur Burke) print.summary.twophase2 wasn't exported, so summary(twophase.object) gave Too Much Information (Norman Breslow) svytotal.svyrep.design labelled the statistic it computed as 'mean', although it really was the correct total. (Arthur Burke) detection of PSUs not nested in strata was incorrect in some cases. added xbins= option to svyplot for hexbin styles (for Bryan Shepherd) print() method now has strata in a more predictable order (for Norman Breslow) regTermTest(,method="LRT") now does Rao-Scott-type tests based on the estimated loglikelihood ratio, for generalized linear models and the Cox model. Similarly, confint.svyglm(,method="likelihood") does confidence intervals based on the Rao-Scott-type likelihood ratio test. Updated marginpred() to work with survival 2.35-7 Documentation fixes revealed by the new R pre-2.10 help parser Added unwtd.count() to count the raw number of non-missing observations. The new PPS designs now work with subset(). 3.16 PPS designs without replacement, based on the weighted covariance of sample indicators: Horvitz-Thompson and Yates-Grundy estimators, Overton's approximation, Hartley-Rao approximation, a modified Hartley-Rao approximation that depends only on sample data. 3.15-1 The new two-phase designs added in 3.15 are now exported properly. 3.15 Full multistage sampling now possible at both phases of a two-phase design, and the standard errors now exactly match Sarndal et al. The underlying algorithms use sparse matrices to store the weighted covariance of sampling indicators, and so require the Matrix package. Use method="approx" in twophase() to get the old methods, which use less memory. added marginpred() for predictive margins, ie, predictions after calibration/direct standardization on confounder distribution. standard errors for predict.svyglm(,type="response") were printing incorrectly. as.data.frame.svrepstat now works when the result has return.replicates=TRUE The separate package odfWeave.survey provides methods for odfWeave::odfTable for some survey objects. formula() now works correctly on svykmlist objects with standard errors. 3.14 predict.svycoxph() now does fitted survival curves with standard errors for the Cox model. (for Norman Breslow) standard errors for svykm use a bit less memory. quantile.svykm can do confidence intervals added some references on svykm standard errors. tidied up some help pages. 3.13 Add standard errors to svykm() (for Norman Breslow) fix typo in svyquantile(interval.type="betaWald") and add 'degrees of freedom' correction to the effective sample size. add 'degrees of freedom' correction to effective sample size in svyciprop, type="beta". SE, coef for svyratio objects now optionally convert to a vector and confint() now works on ratios. 3.12 Add svyttest() for t-tests, as a wrapper for svyglm Add svyciprop() for confidence intervals for proportions, especially near 0 or 1 confint() works with svycontrast(), svyquantile(), svyciprop() output. bug fix for updates to ODBCsvydesign objects. Add example of PPS sampling to example(svydesign), and link to help for variance estimation. Add Berger(2004) reference. svyby() now has vartype="ci" to report confidence intervals (for Ron Burns) update survival examples to work with new version of survival package. 3.11-2 Document that calibrate() to PSU totals requires at least as many observations as calibration variables pchisqsum(,type="saddlepoint") now works down to mean x 1.05 rather than mean x 1.2 The breaks= argument to svyhist() now works (Stas Kolenikov) svyhist() works on database-backed designs. 3.11-1 svyglm() [and svyratio()] gave an error for post-stratified designs with missing data (Shelby Chartkoff) svycoxph() gives a clearer error message for negative weights. svyquantile() now has a 'betaWald' option, as proposed by Korn & Graubard (1998), and has an option for handling ties that appears similar to (some versions of) SUDAAN (for Melanie Edwards) plot.svycdf() has an xlab argument to override the default labels 3.11 as.svrepdesign now has type="subbootweights" for Rao and Wu n-1 bootstrap An approximation for PPS without replacement due to Brewer is available in svydesign() svydesign() no longer warns if some fpc are exactly zero, but still warns if they are suspiciously large or small 3.10-1 svycoplot can now pass ... arguments to xyplot(), not just to panel. svycontrast() has a 'default' method that assumes only a coef() and vcov() method are available. Fixed example code for anova.svyloglin. Added predict(,type="terms"), termplot(), residuals(,type="partial") for svyglm. As a result, the default for se= in predict.svyglm has changed. make.panel.svysmooth() makes a weighted smoother as a slot-in replacement for panel.smooth(), eg in termplot(). print.summary.svyloglin was broken (Norm Breslow). confint() method for svyglm has both Wald-type and likelihood-type confidence intervals (based on Rao-Scott test) documented that svykappa() requires factor variables. svysmooth() doesn't fail when data are missing. documented that update.svyloglin is faster than fitting a new model. dotchart() methods for svyby, svystat, svrepstat svyloglin() handles missing data better. svymle() didn't work if constant parameters were in any position other than last. svyby() now has a return.replicates argument (for Phil Smith). logit and raking calibration could run into NaN problems with impossible bounds. Step-halving seems to fix the problem. 3.10 update() methods for database-backed designs. improvements in graphics for subsets of database-backed designs. barplot methods for svystat, svrepstat, svyby objects. svytable() for database-backed designs quantiles work with svyby(covmat=TRUE) for replicate-weight designs. fix printing of p-value in svychisq, type="lincom" better error messages for misspecified fpc in svydesign() database-backed analysis of multiple imputations. formatting changes to coef.svyquantile, SE.svyquantile, svyby svrepdesign works with multiple imputations (though not with databases) fix for missing factor levels in subsets of database-backed designs allow svychisq(statistic='lincom') with replicate weights. quantile regression smoothers in svysmooth() add svychisq.twophase() (for Norm Breslow) changed defaults in predict.svyglm so that plot.lm works (for Patricia Berglund) svyloglin() for loglinear models, with Wald and Rao-Scott tests. pchisqsum() (and svychisq, anova.svylogin) have a saddlepoint approximation. 3.9-1 improvments in svyby, degf, svyglm for subsets of calibrated designs or database-backed designs. svyboxplot() and svycdf() now work with database-backed designs. ODBC support for database-backed designs. modified the degrees of freedom calculation in svyglm. 3.9 Added database-backed design objects. The data= argument to svydesign can be the name of a database table in a relational database with a DBI-compatible interface. Only the meta-data is kept in R, other variables are loaded as necessary. 3.8-2 Added svycoplot() 3.8-1 Added subset.svyimputationList coef.svyolr returns intercepts as well (by default). svyolr() has a method for replicate-weight designs print methods for svykm, svykmlist weren't exported. 3.8 svyolr() for proportional odds and related models. license is now GPL 2|3 to accomodate code ripped from MASS package svykm() for survival curves (no standard errors yet) 3.7 Added style="transparent" to svyplot(). svyby() and svytable() work on twophase objects. svychisq() has statistic="lincom" for linear combination of chisquare, the exact asymptotic distribution. Added interface to mitools package for analyzing multiple imputations svykappa() for Cohen's kappa (for Tobias Verbeke) 3.6-13 Change in tolerances so that calibrate() works better with collinear calibration variables (Richard Valliant) calibrate() can be forced to return an answer even when the specified accuracy was not achieved. 3.6-12 svyhist() handles missing data better. Added svycdf() for cumulative distribution function estimate. 3.6-11 postStratify() for repweights was standardizing the replicates to slightly wrong population totals. (Alistair Gray) vcov() for two-phase designs gives the contributions from each phase for a wider range of statistics. (Norman Breslow) fixes for codetools warnings. 3.6-10 Added error message for missing sampling indicator in two-phase design (Lucia Hindorff) Added tests/kalton.R with reweighting examples. make.calfun() for creating user-specified calibration distances. NOTE: Calling grake() directly now requires a calfun object rather than a string: see help(make.calfun). 3.6-9 Bootstrap weights used last stratum size rather than harmonic mean for n/(n-1) factor (Djalma Pessoa) method= argument to svycoxph() didn't work (Lisa McShane) svyquantile did not treat missing values as a domain (Nicole Glazer) fix for change in pmax/pmin (Brian Ripley) Add pchisqsum for distribution of quadratic forms. 3.6-8 A fix in 3.6-6 had broken svycoxph when only a single predictor variable was used (Lisa McShane) 3.6-7 svycoxph() is much faster for replicate weights degf.svyrep.design uses a cached value rather than recomputing. 3.6-6 svyquantile was not passing method= argument to approxfun() (Jacques Ferrez) Documented that svyquantile(interval.type="score") may not be any more accurate Broken link due to typo in svyratio.Rd (Giuseppe Antonaci) postStratify could overestimate standard errors for post-strata cutting across existing sampling strata. (Ben French) svycoxph() would not run for subsets of calibrated designs. (Norman Breslow) 3.6-5 Add return.replicates option to svyratio() (for ine.pt) Add amount= option to svyplot Design effects for totals were wrong for PPS sampling. (Takahiro Tsuchiya) 3.6-4 rownames fix for svyratio with a single statistic. 3.6-3 raking by rake() now has slightly more accurate (smaller) standard errors. As a result, it can't be used on pre-2.9 svydesign objects. calibrate() does not warn about name mismatches when population argument has no names. svyCprod, svyrecvar, grake now exported. 3.6-2 covmat=TRUE option for svyratio. svycontrast() fix for svyby() with empty groups (ine.pt) 3.6-1 Allow averaged bootstrap weights (as StatCanada sometimes produces) in svrepdesign() Fix derivative to get faster convergence in logit calibration (Diego Zardetto) svycontrast() can take named vectors of just the non-zero coefficients. Nonlinear combinations of statistics with svycontrast() 3.6 Allow empty factor levels in calibration (for Diego Zardetto). Work around for strange S4 class/NAMESPACE issue with hexbin plots; actual fix requires more understanding. regTermTest handles MIresult objects. Add dimnames, colnames, rownames methods (for ine.pt) svysmooth for scatterplot smoothers and density estimation (needs KernSmooth) Give a warning when fpc varies within strata. svycontrast() for linear combinations of survey statistics covmat=TRUE option to svyby() for replicate-weight designs, so the output can be used in svycontrast(). 3.5 Add estWeights for Robins et al way of using auxiliary information (ie AIPW). Remove JSS article and survey-vanderbilt.pdf from inst/ since they are now seriously out of date. paley() now gives matrices of order 2^k(p+1), which are usually of minimal or near-minimal size. Drop 72x72 and 256x256 Hadamard matrices, which are easy to recreate, from precomputed set and replace 36x36 with the one from Plackett & Burman, which has full orthogonal balance Note that changes to svyby now require R 2.2.0 or later. predict.svyglm has option to return just variances (rather than entire variance-covariance matrix) drop.empty.groups now works when the grouping variables are not factors. Add a namespace Move precomputed Hadamard matrices from inst/hadamard.rda to R/sysdata.rda 3.4-5 Add svyboxplot (for Luke Peterson) Add drop.empty.groups option to svyby 3.4-4 Paley construction of Hadamard matrices now knows primes up to 7919, works for larger sizes if the user supplies a suitable prime. calibrate() now reorders elements of 'population' to match column names of model matrix if necessary. predict() method for svyglm (for Phil Smith, Andrew Robinson) svyratio() for two-phase designs. Added vignette on domain estimation. svyby() can report multiple vartypes. 3.4-3 make svyratio work with svyby (for Phil Smith) increase default number of iterations in calibrate() 3.4-2 Options for residual df for summary.svyglm, default based on degf Default denominator df for svyglm, svycoxph in regTermTest. survey.lonely.psu now applies to as.svrepdesign. keep up with changes in all.equal() for R 2.3.0 3.4-1 Speed optimizations for JKn weights with self-representing strata - jackknife replicates are not created for these strata - svytotal does not use these strata in variance calculation. - svytotal, svymean, svyratio,svyquantile,svyglm recognize designs (eg subsets) where all strata are self-representing. [.repweights_compressed does less copying and is a lot faster for large designs Added verbose= option to svyby() to monitor slow computations. Added vartype="cv","cvpct" options for svyby(). Two-phase designs gave incorrect variances in some cases [they were correct if the first stage was infinite superpopulation sampling or if all phase 1 ultimate sampling units were represented in phase 2]. These are fixed but twophase() now limits the first phase to single-stage cluster or element sampling. [detailed bug report from Takahiro Tsuchiya] added vignette describing estimator of phase-one variance in two-phase designs minor speedup in svyrecvar() for self-representing strata added make.formula() for convenience with many variables. 3.4 twophase() for specifying two-phase designs. two vignettes: a simple example and a description of two-phase epi designs svyratio handles missing data. cv() gives NaN rather than an error when the statistic is zero (for ana.pmartins@ine.pt) oldsvydesign() is officially deprecated Jackknife variances for strata with a single population PSU were wrong (non-zero) (ana.pmartins@ine.pt) svyglm refused to work on subsets of calibrated designs 3.3-2 Add cv, SE, coef, and deff methods for svyby (for Ana Quiterio) as.data.frame methods for svystat, svrepstat regTermTest can do F-tests now (Daryl Morris). fix documentation of value for as.svrepdesign (Alan Zaslavsky) 3.3-1 Make nest=TRUE in multistage designs work when only some initial sampling stages are stratified Multistage recursive variances were only going to two stages. Add "(with replacement)" to output of print.survey.design2 when no fpc is specified. 3.3 Added more generalized raking estimators: raking ratio, bounded raking ratio, logit, (for Ana Quiterio) svytable() could sometimes leave the class attribute off the result. summary() now gives tests of association for svytable(). svychisq() works for replicate designs degf() gives approximate degrees of freedom for replicate designs. Clearer error messages when design information is missing. 3.2-1 Fix ordering bug in ftable.svyby (Stefano Calza) The "probability" option added to svyquantile for replicate designs in 3.1 computed standard errors for the wrong tail. (Gillian Raab). 3.2 Add option to calibrate() to make weights constant within clusters. Add bounded regression calibration to calibrate() 3.1-1 Rescale svyvar output by n/(n-1) to match Kish, which makes a small difference to design effect computations. (for Takahiro Tsuchiya) Test for presence of intercept in calibrate() was too fussy. 3.1 Quantiles for replicate-weight designs now by default compute confidence intervals on the probability scale and transform, so they are valid for jackknife designs. (as Gillian Raab suggested long ago) Analyses on replicate weights should use eg svymean, which has methods for replicate weight designs; the old (eg svrepmean) variants are now deprecated. calibrate() can now use regression models with variance proportional to linear combination of predictors (and so can duplicate ratio estimators of means and totals) Prettier labelling of objects created by postStratify(), calibrate(), update(), subset() svytotal on replicate weight designs was computing means, not totals (probably since 3.0). 3.0-1 Allow some strata to have an infinite population (zero sampling fraction) (this doesn't happen in reality but is the recommended analysis for handling certainty PSUs in some large NCHS studies). Let svyby() handle vectors that are not in the design object (even though they are discouraged) calibrate() was working only under stratified/simple random sampling. Allow user-supplied Hadamard matrix for brrweights. as.svrepdesign gave a spurious warning when converting post-2.9-1 objects without finite population corrections to BRR. Allow multicolumn response variable in svymle() (for survival data) Add nlm() as the default optimization method for svymle(). 3.0 Added simple GREG (G-calibration) estimators with calibrate() Added deff="replace" option to compute design effects comparing to simple random sampling with replacement, eg for designs where the weights do not sum to the population size. (for Gillian Raab) Added more references for median estimation. Added separate ratio estimator of totals for stratified samples. (for Renzo Vettori) cv.svyratio was inverted. rake() on survey design objects was accumulating cruft in the postStrata component on each iteration. Subsetting of raked designs without replicate weights was broken (Steve Roberts) Standard errors were wrong for some domain estimates in post-stratified models without replicate weights. More extensive tests comparing domain estimates to equivalent ratio and regression formulations. Changed default in svyby to keep.var=TRUE Prettier stratum labels. New homepage at http://faculty.washington.edu/tlumley/survey/ svyplot(type="hex") works with both pre1.0 and post1.0 versions of the hexbin package. Fixed svychisq denominator degrees of freedom for stratified designs for bug introduced by multistage revision. (Takahiro Tsuchiya) 2.9-1 Fixed typo in description of fpc in svydesign.Rd Added inst/twostage.pdf with examples of two-stage analyses. Handling of fpc specified as proportion in the absence of weights was wrong. 2.9 Added full multistage sampling, involving a redesign of the survey.design object. The old objects are deprecated; they may be converted with as.svydesign2. Use options(survey.ultimate.cluster=TRUE) to get the same one-stage standard errors as earlier versions and options(survey.want.obsolete=TRUE) to turn off the annoying warnings about old-style survey objects. If you must create old-style survey objects use oldsvydesign(). As a consequence of the redesign, most of the svyxxx functions are now generic, with methods for both svydesign and svrepdesign objects. Use svymean instead of svrepmean, for example. Added more Hadamard matrices, including the Paley construction. brrweights() now finds designs of nearly optimal size for most surveys. Faster svymean, svytotal for replicates, with less memory use. Added "bootstrap" option for as.svrepdesign svyby and ftable.svyby now handle Deff (expanded from a suggestion by Tobias Verbeke) svyhist() for probability-weighted histograms added svycoxph() for replicate weight designs The "lonely.psu" corrections will be applied to strata with a single PSU in a subset (domain) if options("survey.adjust.domain.lonely") is TRUE. The default is FALSE. subset.survey.design was not working for post-stratified designs. Added a PDF file with examples from UCLA ATS web site, including comparisons with WesVar and SUDAAN. (inst/ucla-examples.pdf) Added slides from a talk at Vanderbilt University. (inst/survey-vanderbilt.pdf) Fixed Deff to use simple random sampling without replacement. Much faster confidence intervals for quantiles based on inverting a Wald test are now default. These are less accurate in small samples; the old method is still available. (based on suggestion from Gillian Raab) 2.8-4 Added a whole lot more references to the documentation. data(hospital) now has two sets of weights, one matching the UCLA ATS site and one matching the original reference. (from Tobias Verbeke) summary.svyrep.design was reporting 1 replicates for compressed weights (but still computing correctly) 2.8-3 postStratify for svydesign objects was giving too large standard errors Add deff() to extract design effects. 2.8-2 rewrite cv() to use coef() and SE() 2.8-1 Make Deff estimates work with ftable. (for Gillian Raab) ftable.svyby didn't work with a single by() variable (for Gillian Raab) Missing values now allowed in svychisq(). (for Lee Sieswerda) 2.8 fix printing of svyby broken in 2.7 add ftable.svyby postStratify for svydesign surveys. 2.7-1 as.svrepdesign was giving the wrong weights for type="Fay" in 2.7 2.7 Option compress=TRUE in as.svrepdesign to reduce size of replicate weight matrix (and in rake(), postStratify()). Also function compressWeights() to do this to arbitrary replicate designs. terms() reorders variables in interactions, which confused regTermTest (Daniel Almirall) Added extractor function SE() for standard errors (Andrew Robinson) hadamard() now finds smaller Hadamard matrices. svyCprod warns if a subset has only one PSU in some stratum (Gillian Raab) Added tests/lonely.psu.R Added another option "average" for lonely.psu (Gillian Raab) svydesign can now detect from sampling weights or fpc when a stratum with a single PSU is self-representing, and in these cases options("survey.lonely.psu") is not used. ftable.svystat and ftable.svrepstat to produce better tables of percentages and totals. Experimental set of functions to help in computing non-response weights (see ?nonresponse for details) 2.6-2 Better handling of NAs in svyby Subsetting didn't work right for single-observation subsets. svyglm and svycoxph had scoping problems when run inside a function (Daniel Almirall) svyglm and svycoxph now accept weights (to be multiplied by the sampling weights) With R 2.0.0 less copying will occur, especially when variables= is not specified in a design 2.6-1 Totals for factors give cell totals. 2.6 Design effects were broken for multiple means computed at once. Add coefficient of variation for mean, total, ratio,... variables= argument of svydesign works with missing data (Tobias Verbeke) Fix reference to Binder (1991) (Tobias Verbeke) Means for factors now give cell means. coef and vcov methods for svystat and svrepstat. Another tiny example dataset from the VPLX manual svrepvar was incorrect for multiple variables simultaneously Better error messages for missing data in svrVar. 2.5 Wald tests for association in contingency tables. svyplot() for weighted graphics (some of these require "hexbin") Examples for rake(), postStratify() svyby() works for svrepdesign analyses as well added subset.svyrep.design() svrepvar() added Design effects for means and totals. (Gillian Raab) 2.4 Make regTermTest work with svycoxph() Clearer output for print.svycoxph() (Daniella Gollinelli) Rao-Scott adjusted tests for contingency tables. svyby() for tables of means, medians, etc 2.3-2 Fix for svyquantile confidence intervals. 2.3-1 clearer warnings in svrVar when some replicates give NA . (for Gillian Raab) 2.3 svyquantile has confidence intervals, added svrepquantile. 2.2-1 as.svrepdesign didn't pass options to brrweights (for Fred Rohde) 2.2 published in Journal of Statistical Software - If population size is specified, but not weights or probabilities, work out the probabilities from the population size - Clearer error message when some design information is NA (for Tobias Verbeke) - better update() methods 2.0 Just a numbering change. 1.9-3 Fix svytotal variance estimate as.svrepdesign wasn't handling unstratified cluster samples right. Check for fpc in multistage samples, which we don't handle. add print method for basic survey statistics add rake() California API data. 1.9-2 Added post-stratification of replicate-weights 1.9-1 Bugfix: jknweights was requiring finite population correction. 1.9 - "certainty" option for single-PSU strata - Replication weight analyses (alpha version) 1.4 - I think all the possible permutations of arguments in svydesign now work. - The examples in svyglm incorrectly had a data= argument. 1.3 svydesign wasn't allowing weights to be a vector. 1.2 - svydesign(nest=TRUE) now uses less memory - added regTermTest for testing regression terms. 1.1 Added subset, update methods. Variance estimation is now correct for subpopulations produced with select or subscripting. 1.0 No changes 0.9-5 - finite population correction should be done with PSUs not individuals - added Cox models 0.9-4 - svyCprod was computing n/(n-1) using number of observations, not number of PSUs, and was averaging observations rather than PSU means to compute stratum means. - Bug in handling multiple levels of cluster id in svydesign 0.9-3: Finite population correction. Adjustments for stratum with single PSU (Fred Rohde) Fixed svydesign(nest=TRUE) to work with strata 0.9-1: First release. survey/inst/COPYING0000644000176200001440000000031212363344626013624 0ustar liggesusersExcept as otherwise stated, the code is copyright 2002-2014 Thomas Lumley svyolr() and many of its methods are closely based on polr() from the MASS package, copyright Brian Ripley and Bill Venables. survey/inst/twostage.pdf0000644000176200001440000022114111457435610015123 0ustar liggesusers%PDF-1.4 3 0 obj << /Length 2144 /Filter /FlateDecode >> stream xڽYKБB^$^m1|}J-zLDͬ'䯧^M6E;4dwWuWt̔ ͂6fv{s]?Ÿb7_RGx_kY&榢3l'x?=#M|AO}^73U`󳅩Uh:aE <^ddzfF`lio%ܾ00vb,V=kT, PaAՁ3t-tㅩ\i+8ܻ."wr%0D\aZ޲頕,%#2\Ȧ&:vN!r gлpe-\2jJDmҍ$MD{U.81U+s_^9:6! p_wᄏx|809p0P?Bhjy e 3aކμb#oS ˥wp1W;9L:ec$"iMqDi<:Q_R#ki|Wݜ|\;*]:EiFbÆ`YR*IqN=J^F;R$%̐Er 0$G"C <@C*.;gB bEx iX07bYĶo t_8<}CZ&hVNW_򔸵'UfA2eD!z }t[kiW)mëFũjTgx0jW{"$,֞0 M2=8U=;H6 F>B#"Lm37F:*j`uT+_m^ݨdp!_:4@|LŬ%$/.2W%_'Xy-<<(6*TX0ﲯ:ײjTPq]t4Úi!;W줤*47vX'iB2E: x-B }9\Wl56S#X!F굼DyA *Dީ;Iw"eW)"*gPPD-H| V%ciϻD tNVr1>YǙ4NF/bz]j 47AhnK) IڝWbwfJ=/X>cݴAkqNߘQ?$*-[zyRb|o491dwa~1+X&Ah] \̺OY )ڲ|廼;Zu-f /W!Utд Y}}\vĤon;hyT T[[ٷnsdJ }=t+gdE`ictOmEVeRC% |u.Pendstream endobj 2 0 obj << /Type /Page /Contents 3 0 R /Resources 1 0 R /MediaBox [0 0 612 792] /Parent 28 0 R >> endobj 1 0 obj << /Font << /F34 6 0 R /F19 9 0 R /F8 12 0 R /F43 15 0 R /F44 18 0 R /F46 21 0 R /F48 24 0 R /F53 27 0 R >> /ProcSet [ /PDF /Text ] >> endobj 31 0 obj << /Length 1534 /Filter /FlateDecode >> stream xڵXK60z)R)ɡӮYk]?v{HzE Z| 3<8wI4&*fLMSYl4Oa-~:KyDus5MwN<+iR>_~ o{"-tsÄ%KL<|%FU *Ǥ i& qTEH™Lk2s/)lCH5 ţn 'v{zJO=4iWT2ȈUU̘* 1Z8c]ΜI?c9nuf OНqIj} -DL b,30v*MB&VXhDF\#  x1O+d@DW@j30~aL{hij$mXoj}&&+٠NV1Y:8U{$S=1 5Sp7iOͷvZIL%G`µH0څVm+L Bv̚|hnS;m?(d0͠w[ҺsťLr aJܑwŲ K˲/LK@ r%Y!(-JP \COY՛3};.klPAUmkiNQփJ1::&li=0sw*뺚Y5b k?k,"l5A 7* mڶy uݩ,Cڊ# wP5 3CL8Qx+&+E/[|B0A;ɓ|AQ96Fjendstream endobj 30 0 obj << /Type /Page /Contents 31 0 R /Resources 29 0 R /MediaBox [0 0 612 792] /Parent 28 0 R >> endobj 29 0 obj << /Font << /F8 12 0 R /F53 27 0 R /F46 21 0 R /F48 24 0 R >> /ProcSet [ /PDF /Text ] >> endobj 34 0 obj << /Length 1232 /Filter /FlateDecode >> stream xXKs6WHM-4IC:==(d{j=ߞ}AEIڴ=p}|o&/A*o@[ƾx7Vƺdsv2{TVX |_>>nj9䮼ln\nVvn _'߿*lVeWZm@j'M"0ʝ.@fZoC^]5VgCfF;x0ZkA6Ghm02(oHkU9 ek`5pg+`d$,%fovcQZg \s26jܮe'K|d\P;$ "P\[,5벀}ͻxgӪX3Gr\Urs?bCl0T\ΈʵWV2]!~,/˫^8r6kg\9<j͚LD{X'5]Sd[E1@}$NB+g{-!af.D ,  3N ]C`.{j"4DF][_I0df;/ #7|Ղ;Qv.a218R@ێe`MZթ=NY%@;BPRƒ4/U- 23S|b\Qr3U-9Ί[.$_& 8ZK_B/F_A[12oT?%ŀOD粎߳n\+bUU@5wvpdf@2I̭8~>nQthcbq!6$us+UfOl%¸΅na8BXt<|szAX^slosWcyp:oo)2z34p>PYY^cwsubZJeI,J]\|~Lendstream endobj 33 0 obj << /Type /Page /Contents 34 0 R /Resources 32 0 R /MediaBox [0 0 612 792] /Parent 28 0 R >> endobj 32 0 obj << /Font << /F8 12 0 R /F43 15 0 R /F53 27 0 R /F46 21 0 R >> /ProcSet [ /PDF /Text ] >> endobj 37 0 obj << /Length 1270 /Filter /FlateDecode >> stream xWKo6WEr7VDRϢ[ m@EbXeu;/J"]Y2973'ghYlF2OtGM4.~o$ԑgM9{kcdКW㉉So+"lr 8]frKh?qQg |VT]F'_Nܖ5zRuXG2p, T(.(<|>, gk'KݏN3 G3|NqW nO# VoMҵnYJm>PFC4(OhSƼ7X wb)*gjޙD39+yJz—7b#B̋ڒ- T6R uYqްISq:OTJ|?Dx\BKCa 'D$(ϷӶ^_MOLUDf#kO[\%AKSo5Kx.ؾ@[b T^2Jq Qtyd!7Z Z*WND1v:u;6UؽceYh^R[&Jt)pFt/#`dߴ'RFG*uthQ/.BQؠwcv*6q\ѦA]头yq&/-)% hKߡypZDɴvDSdtd);E/4}cC=_Nj1[?푩Ќ-۸S]c? '< 찙M|[qjh+֖gLjW1%L8g_"_ xnkt_Jꭀw_ՙ$VwҜL|$"? @>J/qܲF'ZDqlp1ePJR=`^, ;=- 5x RΩ#C*"+z,$i.=I.W%ی{Znmn jkqL t8SW ޸`k=j+;egҜ-oA7qNw 5o@w\*_Ws0> endobj 35 0 obj << /Font << /F55 40 0 R /F8 12 0 R /F46 21 0 R /F53 27 0 R /F43 15 0 R >> /ProcSet [ /PDF /Text ] >> endobj 43 0 obj << /Length 446 /Filter /FlateDecode >> stream xڍ=S0 1; w pЁ 9pKpoG8WJz$djtRꤙ%JkY*M_Tm@̀W)hAzjJH.8ֱ}9s nr[$ky/t%gX?0K@]pÆ*mΒ<ɔiK!ZI z;OʾH9oIh]^tLh)>zYLleD 4 ),>I4xYDGt|{r] )W%uu :lW'>|/]-&qX+ZmΨPjV>r xL܅ %C{ F{/!ku4GǗZp/,*$A[$Q([KK‚i 䴙.endstream endobj 42 0 obj << /Type /Page /Contents 43 0 R /Resources 41 0 R /MediaBox [0 0 612 792] /Parent 28 0 R >> endobj 41 0 obj << /Font << /F53 27 0 R /F8 12 0 R /F43 15 0 R >> /ProcSet [ /PDF /Text ] >> endobj 44 0 obj << /Type /Encoding /Differences [ 0 /Gamma/Delta/Theta/Lambda/Xi/Pi/Sigma/Upsilon/Phi/Psi/Omega/ff/fi/fl/ffi/ffl/dotlessi/dotlessj/grave/acute/caron/breve/macron/ring/cedilla/germandbls/ae/oe/oslash/AE/OE/Oslash/suppress/exclam/quotedblright/numbersign/dollar/percent/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon/exclamdown/equal/questiondown/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/quotedblleft/bracketright/circumflex/dotaccent/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/endash/emdash/hungarumlaut/tilde/dieresis/suppress 129/.notdef 160/space/Gamma/Delta/Theta/Lambda/Xi/Pi/Sigma/Upsilon/Phi/Psi 171/.notdef 173/Omega/ff/fi/fl/ffi/ffl/dotlessi/dotlessj/grave/acute/caron/breve/macron/ring/cedilla/germandbls/ae/oe/oslash/AE/OE/Oslash/suppress/dieresis 197/.notdef] >> endobj 39 0 obj << /Length1 871 /Length2 2991 /Length3 532 /Length 3613 /Filter /FlateDecode >> stream xRy@RW'Iƀx0u#y@BF/Px<;B`?=bpa ?RA|  y`S a!'h@[GfnG B@<`ؿS/ƐFyhc = DAO rCqw 8kI 7`OFi'8mv䕔7<-B{=4! `c#JH"/sJFADY]vs!h` oV "_P?ǥ S+#UEʹŢ@C=@ (=z pDi{h`2>8ӘPy4tI^ǛaVOpuztyqT<yyA7k-k/_ m3 ގ]lm\Q7z^yáYzrk! Uyh۫u BV\Wnd2$3 8(k]SO|׌hnPSULPUX)2VR7ؼ,2 7>s[Ly'Oamce7z{RA_VF 8ZlgP[=|樚Sa|w8]7p83Q'evO|YHXqgh$(Of/ !+& :hav ~KW!=>.MZRpSW9Tms'T|y-NOB>i:Zx%HdKi9@w:Ȗաl1tv/X"EҒ-rYmIfw K(kljQ]5sˬ'^U)r҃}vvp[+*ZckPd>d!i _Jyf'ی\'[_tڐ@,l(>p|zE9׫Pqܲ5SŸtaX3F'\WM]K;tRYEW{l_!*8?UWfCiJiň.F,CexNS  #)\F8޶|C-KMl̟sfGu^J> fWϳhSe#1' Nj珓~" #߻⼐Cq݊)ri৷aལ|w^D@@Tde5}~d֌/%kgɯ~K.K9ѶKx.QyQ:fG*UM%g`u6| 2hKWǶ=4XQ_sI UbUʫBi?b }?OKBz.FC_Gjx_?t&HՎnߚHvv[ qR_z37}>O-͵ K|8ƴb=^#xgawZƒ* ADwmNjH/ u \Q&W}<=NKTR!! hțq qo¨ȓESH)斅={+;4q:h>v`<հ}O[PRƥ?·t-%jC f / 9VQJ ƣ qrY\gS.(p{ёgG ,Hdqp93Zp(oqzY$[m%O^ JIm|L>d4-c)4Ts*)WN{}ƫ|"^r}zEJ_`ȠwJp/ȆoH+R! _4'0nx? Lendstream endobj 40 0 obj << /Type /Font /Subtype /Type1 /Encoding 44 0 R /FirstChar 51 /LastChar 120 /Widths 45 0 R /BaseFont /LYUBBD+CMBX10 /FontDescriptor 38 0 R >> endobj 38 0 obj << /Ascent 694 /CapHeight 686 /Descent -194 /FontName /LYUBBD+CMBX10 /ItalicAngle 0 /StemV 114 /XHeight 444 /FontBBox [-301 -250 1164 946] /Flags 4 /CharSet (/three/E/a/e/l/m/p/x) /FontFile 39 0 R >> endobj 45 0 obj [575 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 756 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 559 0 0 0 527 0 0 0 0 0 0 319 958 0 0 639 0 0 0 0 0 0 0 607 ] endobj 46 0 obj << /Type /Encoding /Differences [ 0 /Gamma/Delta/Theta/Lambda/Xi/Pi/Sigma/Upsilon/Phi/Psi/Omega/arrowup/arrowdown/quotesingle/exclamdown/questiondown/dotlessi/dotlessj/grave/acute/caron/breve/macron/ring/cedilla/germandbls/ae/oe/oslash/AE/OE/Oslash/visiblespace/exclam/quotedbl/numbersign/dollar/percent/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/asciicircum/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright/asciitilde/dieresis/visiblespace 129/.notdef 160/space/Gamma/Delta/Theta/Lambda/Xi/Pi/Sigma/Upsilon/Phi/Psi 171/.notdef 173/Omega/arrowup/arrowdown/quotesingle/exclamdown/questiondown/dotlessi/dotlessj/grave/acute/caron/breve/macron/ring/cedilla/germandbls/ae/oe/oslash/AE/OE/Oslash/visiblespace/dieresis 197/.notdef] >> endobj 26 0 obj << /Length1 1527 /Length2 8384 /Length3 532 /Length 9305 /Filter /FlateDecode >> stream xe\۶qwݵ5@RB)KqR/'ksVxI>1x}5%m V@9;;7@ZUG %AO/ Z 2@0@ ps~idg`f+H BA֖UKw{  }8NNvn@'І`vX@yRt%xϒ'3`&3fbpA`Հ0/7lgr9''5K_Z|;vpB ?C2 ysU d-lpKɁ6 wk{; tOPSJSY%]埬Eܿ(`/7,QLbr ,PK ?rz0Üw'[㯉q8],@g'_KR[yaoi -+N{{oI 6woI B~ N3r3nഅx@ 0s ?"``]a܀8uo'p:4" 7 ]=`I7" lj&Gۧ ZA-6 ayxaQ3aqsiu?Vv  ?VFإtau! +;lxFX]?r9xyx!.uze`Ko {n~e^ ö {Zc,CE:5L"K5ūut`,&;*ܕe!zxY{k|ܯ=OLߖg>.4!Ǹm?NէJ r5dtQR{d4t eKw-yꅗ:̺ri +@{% TbӤxx&;Ъj)*'2jyzkjSna ݊3 ꔰ729l-c٦rUQ*OP55Nu46zWe.dzNpio÷K"u?F:g)~;i? )#֌)K6مP2|r_ӕ$sTzۡwbN+q-9b܋Mofp % vrA%q4,]>Z1<*-\>1@'딵#8)v \K'$D3vt&qxT,ܽŻyS)#d*X@~-n ` A_`4cw9=ST#EP&1\b+ތ%~7e_"Y9cݩL2J m+z0F{f{]8)lP)) ]㌲]hi!m)Zߔ|6,<Չr~%Kv lS;Э?XGx w77Rk-GiUruL(PK8yxw89E=m0*c(x;Rd̀8ee麾zZ>qqbYm)_oiQjng/G[DPȞ1J,2K>_بz09B\ D $Z^H)q Wa{wn}=ML ҳw 34aN!z%9L6jxMǯqWig=dSPjyQ$BťІ$$zXkga5_e NbH&e+]H؟N"fXCx'fA^i({[ؙUXKg!Ih*""RK_}3/"ib[r73M̻ :ojbg^,, 6 L%ҵg_&# _?XҦG'!ge%X-[ ]邶>&%} &/ K h4[f0l/ 21J^ro)ET]wsdr cs8hq3WdZܢN>#Tޠϕ_#/3Jbր.8re2[$僓1]/ÞSmd)h:ًh4&[7Z( Pȁ1 TuHhҰ<+K2DNyc՘a톊MBNB5jAܠ7/ 褯mvgB;9&^%vO$xhlUH r]ڛaA@NcW%cp^TedO2lv5T#XJ90}@d98 z! y{8b$.\\r|Kɧv\xP F2ocOd%%vuN},rqjI+v>YShRUp8~JUBĶ4q|fvGHZZ{}$[&+_S̶cӋ6 j~$rk f}46(>Vt> %⌎h#s$„YC&+LpMWPcؾz-#L$e}CD^CqqLj=IW ۭ>PAfM G^ KNki']box򤢽Hh5c&-ho<}ЎZ9:\Ws!0&ԻVP[9T X9p˰h8⒢1էҊ=9/}*zk|Ӯo*X+/6܃I[nx|w/NnR:!Ub ֠G =-XkkiQ= t #j3(A?뭕|o;?)'%%\ 3ԗ-w{S,i&SfTKg~VzG4-1Y:*4]~te Uh/g]~U:q݇:n-G]EY:&ڷZSMF򋙩wf4 3\Ƃ Ia%~gn1ۑz@|:!0'e;fS,k>Gţ\:D`[6z@nV9×!+gXoy]WWNe-y+rP>9b',ׂezoC wܖ;_mevJj(I3,U쒒F5ucn_bր rpŭ *J*tO!Wo‰5 FVv=hQi6^=Rs{hv=Uad Jk^2OM!L sQx0 f"T7GR4~`j}1ܘQZކB:$"ZT)uϰl= ʎ%LE6_(ה dqu#Y^*E{!U&<ƽVl" lceMqfs1^\4|VSH+*E9s@i,]2N|5|b@Y!yH2)!T{np ue=W7}Y7Qo=ܘ{ PR6 <PkRN/o)Y9di/xѨj/cV 97e:N#-PQN̐/N%0724} I^̯;J`7w1݋j =I2d%4f5;2ɚLɒYDՋ'3xXu8frG2ֆ_8u-Il*>n o]\3!_Xp߱KM>ݧ=tECً gRUzd<5ֆQ>y2TZ 4'l)`5jttXl4˗bvy9 M[vҠg,dѢUFHȥxHp Ʃbja}; ϭ4҆ƭXGbP}ƋlxQ#1 <ERD>+TGG>Ə_$ oV+Q  R$?XiM5;gJsFYN=  INʄ!71[~"LGZ #-52n:!~^"T"v|>ua+:cW!.cC|ɿ#^͛R&&UG?5]4,oJ$:GQR)fx .';t^sM6_y+V:v)(dqY_|( -ղᵝoPF}KR\Zp"퍈Þ @o!>6!fMVEUK$lD Z/+v"umjN _{X8*u)ۍ?9My&}S߂@їRǫ'H=AܳQb/Р_MS_}-ƸA>Ǯ@qӤʍIL$cjyCK^p!+\+?(~ 2~6%1r2dZƷ~[KLJꪬTz%r ie'& d!~3}T3;ڤHcc> ǯ!p xiG}\IUCso%E*>O,XF&sq:V F$W0FeX7 ]Cx+9q.sZ?c,>0.OnvY?~s+ b@er'fj=8ĵ* 2@RI<-4ZDQEe8F\,ԧXM E7W>CO/|L\&=1S u:v yFҪ(6(@ԖB}޴ط-&',sWw!ۙ48r1DZƧ(*_XvJ,sV0Yva&|GPj YVDZR4 mxXjtb2s~},vG/h41F$QS22)૫׎Lodz3Sc LHټuGg6!,ny;}v懴^yfT|;r`z^mM2a:ēϬ '{uɝǫܤ<޸\|9Ip\ ?܃Z-??!$'Up1 +\>Yahu;t丿FLm܏`0&Ԣι>:|esys1Hw`l-A\蓈ryMrl!9AӺf mA_5uy(THpBpGloCzR2x)Y4ӊHA17t@U:>5%cuˈ9vsG>YA~;Y&}qU*W(2c-}vs<ྍקq,j/G6~ wl/|34@J@uKl`h`hAfnlkh4JpO 7R6_r RtxiiSbV)_c~IRֶձ^O{h@ں.ńn i'|{z‚KqaɞRJs9ͬСf ϩ;c]nI^bvpJ'\D0qk /3qg]y{ER_lVՈ@J+,g9©J.IXeֵhyAF"t7L$'wc.M |rm ۻ F}ã/f+T)rbz|Le5TggYZ ܂csRw` ;xt[PIHp\fN^f܀ԕ9[r-Y6K?chAJ`7 Or#EӧC)V)֍m+R[wH$(]vC?`d؏óKM)o;1=nO ^g^ԺxWv-Í4;0Q:`{hYԫITv>͡X*5^J,' Y=7gR=Js /M RsBOö'–:N{.2y.c}/E{<7rzl$;e1MkGlq~0'X;-%쌚endstream endobj 27 0 obj << /Type /Font /Subtype /Type1 /Encoding 46 0 R /FirstChar 40 /LastChar 126 /Widths 47 0 R /BaseFont /YQBQKG+CMTT10 /FontDescriptor 25 0 R >> endobj 25 0 obj << /Ascent 611 /CapHeight 611 /Descent -222 /FontName /YQBQKG+CMTT10 /ItalicAngle 0 /StemV 69 /XHeight 431 /FontBBox [-4 -235 731 800] /Flags 4 /CharSet (/parenleft/parenright/plus/comma/hyphen/period/zero/one/two/three/four/five/six/seven/eight/nine/colon/equal/C/E/R/S/W/bracketleft/bracketright/a/b/c/d/e/f/g/h/i/l/m/n/o/p/r/s/t/u/v/w/y/asciitilde) /FontFile 26 0 R >> endobj 47 0 obj [525 525 0 525 525 525 525 0 525 525 525 525 525 525 525 525 525 525 525 0 0 525 0 0 0 0 0 525 0 525 0 0 0 0 0 0 0 0 0 0 0 0 525 525 0 0 0 525 0 0 0 525 0 525 0 0 0 525 525 525 525 525 525 525 525 525 0 0 525 525 525 525 525 0 525 525 525 525 525 525 0 525 0 0 0 0 525 ] endobj 23 0 obj << /Length1 880 /Length2 2253 /Length3 532 /Length 2872 /Filter /FlateDecode >> stream xgXSiA+M MP*)%( CBB^ D:" EEpa)KGfƙu>~gO=) 83hH& p @ aW 0d>jpuu8Kwa\UCIYCE")T+ ;躃TC04WНQ!d,*D"` X )@pGgЅ@@wΓd@73NR=P,@đID_!P$ d7~,nH'{SN Avi 0#@*Kop2om0DVBo&!] аC #cl{P}%缀!hVew4O͘`08#C̀%$A* a\C~p@> *4F I'S!TVdk*0J&ת w ]DP/4%E2R@)JB}߇@}UyE8#SIPS{ D0s׊S wABXp9=rdUs_#gMfb&ro+mRqONyie⑐۔TzT3IFyf޷o涥/?˺ o5>*bUݒfcJDE^VMxƛo"9N9.ຬ6Lrm'FČ3RlK8ۏ݃Wce>96Q~-ke!\hmEyԘ+bH(}d\?2g@h秨 =K qɦ1V26|cגꠔc 3nyeQf^ '#Ͽih0" 횛oͻ5t/JsUA"/qc6 |*>o*^ %y/,DGYEQ=- *Fo]4]zB}`.FsYu) H{Bش][¡mOƻa8<$g`v5~?+Ro=Φq7Px#r~9&atioˬmG6Z87\Ǡu^VUuleĂ+Sl &n%mF$&bZ 4!3߰Lï;XbLe#DbglSG7Yby4{R8埗u?*3Ouw}vqGcy2=vM]ՍO+wx7CEIwuiWecc66C( v"\tzzv($$m!L@N[mA_tY,~4<~1{${uVDĉ8|%L:=[3K:^F]ij9ȇ ո >JQK\|&~ uUu~$l-SȄ*6{eڋ RIuM;8sl9W +'czH´b[BȂzRhL*7^== l?WxYv艁ψII| qsw6n;~LibN,^k\@DiEL<}(R0]P4L^"F1LL%~#$SEG)R8 .yBZzkuMjPqYܮwRPf7JgϠMMtA /*މ1Yh ճt=m^d pt/6_u\lj: (V*aufٱE*'$jA-!9|kJ/92>#%Q ^PkGrqٶ*,;|Q0qsp.旜6]WϜvHSDαa3*3.-\NbX?;G|eQ쳪7I\m—^㴕v0g͆u J=Ĩ'~Sd$JKP>b8Ħ*% ? OA FvP@Ϗendstream endobj 24 0 obj << /Type /Font /Subtype /Type1 /Encoding 44 0 R /FirstChar 49 /LastChar 120 /Widths 48 0 R /BaseFont /DBWKXU+CMBX12 /FontDescriptor 22 0 R >> endobj 22 0 obj << /Ascent 694 /CapHeight 686 /Descent -194 /FontName /DBWKXU+CMBX12 /ItalicAngle 0 /StemV 109 /XHeight 444 /FontBBox [-53 -251 1139 750] /Flags 4 /CharSet (/one/two/E/a/e/l/m/p/x) /FontFile 23 0 R >> endobj 48 0 obj [563 563 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 738 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 547 0 0 0 513 0 0 0 0 0 0 313 938 0 0 625 0 0 0 0 0 0 0 594 ] endobj 20 0 obj << /Length1 1515 /Length2 7640 /Length3 532 /Length 8575 /Filter /FlateDecode >> stream xe\mAfIi!aAAJ iS$=s?|ǹs1,ul`V0(O eaQ,0%$ȹ|,`S`+H ;X[B{2% v!xr@/\: WdÃqF@vP\_T0߲HS6IvҢ ؀lq0d- SiWEX:9@srvC PC4@6nN98XA ߲SO%6ٽ*>SQga5mEy9|&'///2﷗QN j q"w0En$ |P'䉴 OlapܿU@tq!@6VF@b G- (d[{@KWd\XoYd[AҊ32$B,]+7-0(BGxBFAD -~OM Jr=ad #upA #(C"ȴ(2^7!Qb [&dD@H  ҃, u~#r .Du DNDp6<~#?(^vp@8@l>0On/ \W 8}HUxyEy>npGD^ͶȻY~YKSK0 0I|C|h:7D@?F05IW4a:@>CI95H;10&vV#r̻al̾Nlر&'p4'X./ݖ^ @(_MPmoϪ;7X?i 1h ,Ze Q ͅMVxK* cdSkK'W|^p)٫S9 /FF)Қ`QtaQ 5tZػ\6L}xG?;,AőW75r!M6HktXlW_)ii,%ca ŗ+"}’:J,6=瀯jhggܢD:E{O;׬bIu}ۻ(-S(KsE0=0i.V`/{9'8%G1 T4XIhh|}'<&E9D:|%N-jf ĞZքČCRM'g0Ǥ?\c]#BUyܕMO[/FZXۀͅU~4Bkؗ~eI㫮6t.FK"oSEKo.Y&.'Û"N $iMy>F ;^:ˬ2^k %ԓ;4Tf_Xvw fs|zA.$wgߘenM9jZn<[yqTḛM)jFQn2n=m ~Zȶ 9٘5 q}MZK9 .􈨻 (Wi?{9;i1 x&~*34Z$ ;jRPq7fV`cjDaZFP,íD:RƠҺюwgүEQ3Jm\ eN},Q~~Q--[- j707_B;* FEF|k{_a͘.>ra?+$۸.0y G̾#[}ӂal@buR/ r#~䲉q-z'NvݍN:"nGUaKiR@ߤC֖.Þ/u+S|3p .j+&oNAimչF5{CB?tT`XmꛢGE/#^:C?oRN|ۇ]֯#a>ͭ{ `|4,e[?$%QVaWv1a`9LԸt8tjm($lx VxHc! 9iU(Fhw*9zN(AZ]=yu.:r_Q M+1cݥV$Zb/Rk޿ϊ&IWXofwUS`̀&Ku ǭiݭ׈a_%dրǔfgÕAI8OaQFw .UFK+:OZf [ctV>2QUWu}bJTj倃 U[ gtYp'B[Iy 4MzçŐ&;  =ޗSi(?;&NPhymxj7LMu7tm"G^bZf?babboUj|$^9Z?䝽VDL]};nnƱԹ̺&b=׺כ^\3 3i;M=o1\RkGޥ80t,?&~ICR.5ܪ /dʆͮ>ps߶1zLR :񻴵KsK/Ӊ&|`=m|"0dՐ35ȌJO]l|+݃?Φ0>P%)~zye D9Hf}ܿ+^c ]U͇ vRY#YBJF:-'D N7t~ vʝK*;Q,rOx'S. ؞[G"ks`JASh­Im,;fPbܡTsV۠@y .STisJs﨑 *.2޿DpO+J3s~3yُUg׈o⴨?FR[i! tRE59Zc8u$f#\ i34+/B>zIF3o5dy<^e!x4ٗ+Ԉc-.ʡmqZyc$mP$Y#}6ǚ~qmFۧ%u;\ ڴl%b5/g]%H<1?9ÿ1pN1O/4{(4.TǔPtV9("̢S"Ȱټ mUA}_:(^K,QOI-ވѬZآ/"Lv5Q+Rn5񮑌2VFo 94x_,i=!%v'pX l/aA?Q{hh0%0R0OL_v7+ytז+FU~+CYYy/Xdhn`zі}s"ްU\yfXCn\eX}۪XÀÔ~ .tE߸þI9WqS#O5EygYLV)x;F{s&'>o8&04Wլ.*r`zJ#5lJⴉ W ;㈻[Ct/7PC7{RxYhU D{+,W9(fZ. `$!ۖWlg0KDy ǬEjꚱXs֌l4\jګcAmQLM> \C‹7tyi98N[,28'<aPN/VGguϰ r#&Sa"J{"e U [mhe_RSP)扦?7 hs > lE" Vޭ,0&ӝ1Mv^j@?.zRօ;<_c.qfB2t/7/),/]w1jK.qBh!‘Bb$6V:c1NUYGwx5G۵dL 6])`6Xie[!#ͲR(Z($ߔ_hXƝ/^i6-i} <龝P̝Qs@W.lUBﯹbW?pZޮ{1b7﷥Y"3= eb,%| 8}'GsPFe .ͱNEm dW="j,}sSA]jǃpT1qveY{z0*ZIPJx}o&^G秇qRp;«󑪗}6d߫?|cn擣4`rx}5?S";"Uu${O Ξsv- 6WysePug˕(cw[xʽ_#ߣͅ]YԨ.֕b SoCsj/M%# G햼׬/:qjxx?X9l\GČw3QoHym{:d?_1ΛI9|,}<.3v1Rݛh,!!7Du&OEqtWD,^Fd ]MK] ⠢#އwa-IL6 8+-D~NO}G7w+bu̔_Qk_6Av]x8?qfP8 s.ηR"Xce/'ɪ7{YEw9ʶmj wb:%|z.ma(dk{>7-9޾/=yw \Q+TfF#Vm^^)IMY3>3b O3h &8p]+~DL&m}J8_]t zw5Աc[̽ҥ2Yo,?Qn{Q86Y-{H<1JY_3E,n#/[xt]1Fbt'u:# N )$[?iW#"F7m2!F$NOz|G/˚zƪI?0/eݸwVTivH1װ)ދVC"Nqŕ#~3,hb^ڽ$:.WmOe'xA͜R_!:PAUSky?M/_&^K.ӻ0~[frwYߒ55jtƳ)t|Kǟ<8zJlWsJ-#mGFGTڰKҼ[p*$|dp{=Rn7;걨3~;R9qU< WYgɦV:wl'SXA͆ jn 5Tc7| }0},bnM06VSۻp|l΂z*l##r)yARǃBU  CE 5zz&*4 ;vhf` *ag D8n̤37,6Qw}j6!~%#F}Oᯭu ZLXj_qzgb~g-VuѻYn]:s75/3oX`t%:/Xy+>;x#rRܸJZoqLUIt\:Kf:Qz.ZLg91KY04qrtUkym(:~.pT=Vѩ}}iZ'RW]N޹ m0IլUY/?O"sIfiKSqL~NWӞ)k}!v,J`02v+]H'$CcҠ{W^uQ(H}ɹ,!t0I`񼶙eB|wЙk?Z0&𐰓$`PJӾ~I'?#`NpG*endstream endobj 21 0 obj << /Type /Font /Subtype /Type1 /Encoding 46 0 R /FirstChar 34 /LastChar 126 /Widths 49 0 R /BaseFont /EWJHGT+CMSLTT10 /FontDescriptor 19 0 R >> endobj 19 0 obj << /Ascent 611 /CapHeight 611 /Descent -222 /FontName /EWJHGT+CMSLTT10 /ItalicAngle -9 /StemV 69 /XHeight 431 /FontBBox [-20 -233 617 696] /Flags 4 /CharSet (/quotedbl/dollar/parenleft/parenright/asterisk/plus/comma/hyphen/period/slash/zero/one/two/three/four/eight/less/equal/greater/E/L/R/T/U/a/b/c/d/e/f/g/h/i/l/m/n/o/p/r/s/t/u/v/w/y/asciitilde) /FontFile 20 0 R >> endobj 49 0 obj [525 0 525 0 0 0 525 525 525 525 525 525 525 525 525 525 525 525 525 0 0 0 525 0 0 0 525 525 525 0 0 0 0 0 0 525 0 0 0 0 0 0 525 0 0 0 0 0 525 0 525 525 0 0 0 0 0 0 0 0 0 0 0 525 525 525 525 525 525 525 525 525 0 0 525 525 525 525 525 0 525 525 525 525 525 525 0 525 0 0 0 0 525 ] endobj 50 0 obj << /Type /Encoding /Differences [ 0 /Gamma/Delta/Theta/Lambda/Xi/Pi/Sigma/Upsilon/Phi/Psi/Omega/ff/fi/fl/ffi/ffl/dotlessi/dotlessj/grave/acute/caron/breve/macron/ring/cedilla/germandbls/ae/oe/oslash/AE/OE/Oslash/suppress/exclam/quotedblright/numbersign/sterling/percent/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon/exclamdown/equal/questiondown/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/quotedblleft/bracketright/circumflex/dotaccent/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/endash/emdash/hungarumlaut/tilde/dieresis/suppress 129/.notdef 160/space/Gamma/Delta/Theta/Lambda/Xi/Pi/Sigma/Upsilon/Phi/Psi 171/.notdef 173/Omega/ff/fi/fl/ffi/ffl/dotlessi/dotlessj/grave/acute/caron/breve/macron/ring/cedilla/germandbls/ae/oe/oslash/AE/OE/Oslash/suppress/dieresis 197/.notdef] >> endobj 17 0 obj << /Length1 1151 /Length2 6470 /Length3 532 /Length 7220 /Filter /FlateDecode >> stream xe\ms$ABBbVCsbD[ECi;%$g?{i|\籎Yk]4b`DsbJr  C^1uaNA H@( 1{xx xp{7 (WP€JNV sS[: qrcT8B.0C͝fK( /Or0 8_a\ S@6&p bW?Ťw~o>3 1ǚ Z'yK})Fer|\8T,Ķ]nXBuXCKF͖`}fV X)`Q;xV1e4&2m,`֣  6!KczԜka鳶 %DF /ڻ§Sjk\1|Ajêm^X>l*f6;7|a5SFϔYY$pi f@X6XU^™9557&ކx=mLqsm2-$}ьL)oZr6B|=P_|ezlU~|u- 4+ەpiY䋹B-$nwtodz!2ldj5EZvZIR`>׺*ٲKvL5+q8Ixƶ8,PL9Qi/ҡgSqЕs3{scbo!^A(9쩒oWwu:xk:B(3DY2ḍZJ kޅ-qH!/%5)>zٴυ ';Fƨd }ƚx]nt-K#;k"7\K`9H& #3śѦ|QPV!;lK| /쩨H(>~ )͵a;qL &VݾEvUo̝NHeS*0<.ۮjDБIWx正F)Y?|qG 7V__ψ=q64ݝ9#$dAh/3yL?s>}>̎iV*^p$y#c}|ZK@fX$lYQ4!6:o;Kbג>9#q>e ES.{~fq",'^][V94'Qj'D2Z:"msШ#5@N2ƣ鎝7l :7*" 䨁JzVSF]sYw{?5ȃV4)2hK6|7#yęӢ;k͇B{@*蓾W7uO쳔1}<Dʢ֥3߰GG ~rґxhM)IBnYą ylN''lURuL /x쨘}3D`Tx"ԬW63Y:^(}K^UӒ32қCΐ Bz3Gɐwdh^%-nW,pↁV:M_FY Y{*>^CUިS\WK2M/tqgbBJ)]dx+ϙ Ff?cI⮯esmB b;Fn뎎j%/74 zGqQӉJ/!cWd/Rr2SAj,#v@8!}! +0;r["zcMS)#Fi&EJ3Ρ^W^+xrPqр\չ=X~X= kqұWjQ}Wx#]W )~nWFdfG6ROE]2!$m]0EÂzK?m'f?WcyB F#z6bGgޠ:E^6hh9;$Z_A~'j#fmk( =CbP{:V|ʥo7A\`u{&v|&Ojƭ4 \ꔈK~Va]I*dCoZ ]nzR\׿lm[_S .Xx&f£|VԮ=>VYY l6uாnr3 >8_'Ѕ ;֡`g`Ԅt5w)1RIi.2GC*{*t!T|.-,ߌBE~'pej)lN4iKiWed'!26ř Yiu u}Se}5)ȧdeة,jU 4k+/PCRjЭ(TKD?'5$۫׮- k1l)L~b[r@*,}>v9Z Fp]JfC7#B:\ZȀ5Kc<ҳO.(-Pabp;J3RֽfXasb?ScG?3p3 v>U)eJ;0 mb11hY F#Jgy]{ɟ-iY6_me4 miP5iifh0R*<_*AKEnѫϗ\,n1ל ՊUv1FkfT?WxIeQ}؝ӛȂ5r}$]TQڄhv۽uɶW1?@~V)*|>KNp9Ŏp鯐vXl̴&oF{ilxI3D[Qsh/ّ𾆘nexֿ ꤈Aܡdpn+\xֲ E㉥@'-<1KyQCtùUHn'*4pvetf'~ H-KXn>u/y'P3CZ߼D4]3Tn`~JtU$E sbY}R'rzcbTy&"Cp1ͭ(@Dv-~R'+{ŀʿL&0BSTB2aұ)bu]jvd=avZ-Ψp03R!TT,_NvЧ.W{z.R۞^1$-١{ZA95[EV qCԇ 3M>b͖f4Nu9-f{0ZͰUˍʶyѤqAO [Z_ `PAQg l< Ut>w\]Q\=`jq&\R\< 64P4ci G$pmC'<*SI~qⷁ [5>GD@~PYqJ.Sa8ʻk3Tw (}Z gxSo؆MRh|vLP(:Q!A$baqQ{2==v̸f HL?z_)MLZE;Ð#YWZ4 EhjR 9[AqR]{Ox*bĝ=ʡc FwLCcлayb^VL3_7Lqnh1#U(93ns1!W:b*XXlix l QOHKj3,ߟC A_w Q Kw$O"7t?{':zy l"Zu(b_ߔf"{fdS\C˟ɞ5(OwE:p*-cΤ7xVlQ ]E$k8>"`l3 "#jXCrr[Z$Z;쳋:6-C ijNn$)|:"6=GtGɑ+mb΢{0[Ě-bN^S2,:ʺζ7 @luMKf,'qr@#e|L6tT"|2p3aba*2'9AEw2ː~KViBmj3/N%ƼaB 5JKbN-Nfbo28l;`a kལZ*x e}0t~nrV>@Iiai9OkFsJ1Mzl!%0qQNY6ciѦhV:\ItQK(/P:G8\s<ɷ5.p=M<(7Xv{3LJ%[X,HjuE<yT-:v>2c-y5($j1ddIHQ6n:bo @`T5WTKә}ẹTڹ uJ :tPfiBxs_IF$aGt4*ںQ_";$ w A<=)z)c`EhiGO4 CHAT˫bX_!}aŎb&A~]+ 0"vZfoendstream endobj 18 0 obj << /Type /Font /Subtype /Type1 /Encoding 50 0 R /FirstChar 45 /LastChar 121 /Widths 51 0 R /BaseFont /JUFAKZ+CMTI10 /FontDescriptor 16 0 R >> endobj 16 0 obj << /Ascent 694 /CapHeight 683 /Descent -194 /FontName /JUFAKZ+CMTI10 /ItalicAngle -14 /StemV 68 /XHeight 431 /FontBBox [-163 -250 1146 969] /Flags 4 /CharSet (/hyphen/two/four/eight/A/M/P/S/U/a/d/e/f/g/i/l/m/n/o/p/r/s/t/u/v/y) /FontFile 17 0 R >> endobj 51 0 obj [358 0 0 0 0 511 0 511 0 0 0 511 0 0 0 0 0 0 0 0 743 0 0 0 0 0 0 0 0 0 0 0 897 0 0 678 0 0 562 0 743 0 0 0 0 0 0 0 0 0 0 0 511 0 0 511 460 307 460 0 307 0 0 256 818 562 511 511 0 422 409 332 537 460 0 0 486 ] endobj 14 0 obj << /Length1 836 /Length2 1560 /Length3 532 /Length 2157 /Filter /FlateDecode >> stream xRk8*DA%YH&3qY8iPИ0L%DB9*r 1ց"&۩khWs_统~Qic2!"E 0%ڂTTL9Kc1\8<Ma_Z0<t I0f@HdjPtEA\`LWn!?Q5` Pi.yҘ0#  R|!-RYL:B0K$t08G[+)Of?,/ q qS@_̑ *k%ic'0_J4?"-и/LV ap $+k?'ڴ!Ә\;dWث  w@p|p7H8 4& @c^,leP Ծ@P @s y@=JW01aDJSp8@W<{&̓,m V)<brW7PWA! SpԊ3y!jkL<+zj7%_Ւ6P8_!I *P X :.ֻ$?.8qG Wi6l\nœkr_z2~ifv˝"G/:3;oNcEiElNJ\(,;RJ4˺tlVu<)`$R-O+(y^{]塍 }axIeO0U݌:WL}chP޶`yz7/;O"/?j#}wJ\ga!GS=6"9Y[]^z"<_︂by9v69Ƥj~rQc8!>nRX@m %_~\ii|oq4~Z 6Kv3Z0Xg=1bZ&EfLyb1i#k̥4 tSƳń~8fh1"W9S3tr;0RB `fMGID(y:jo틱j1DexD刔fP_- $ҥ㪗K,߯$rju1  k& :~YczdRws&EDٲeFާ>)Au-β>=֊Mﭓd#"OwuFκ]Z\zgM}9Hgwcwk $DM,&*)HgNN튀 )ƺ b낳 ÎM,85}PПRo譺e9se'i qtWlo ![TMN#Kny%-n>܈qϕ-vTIxdIR $>JR'abrq5j`2R[jbwM5<[4O\k~{hN-']IWkZ%o 7 NZv=b/՝7k&}IwrJ'U-bk<Лh0j.ñ$dDžp,<rbaG^|Rm?7Ʒ/TPIʶ:DpY 2P|Bendstream endobj 15 0 obj << /Type /Font /Subtype /Type1 /Encoding 44 0 R /FirstChar 101 /LastChar 121 /Widths 52 0 R /BaseFont /LEKMNO+CMSS10 /FontDescriptor 13 0 R >> endobj 13 0 obj << /Ascent 694 /CapHeight 694 /Descent -194 /FontName /LEKMNO+CMSS10 /ItalicAngle 0 /StemV 78 /XHeight 444 /FontBBox [-61 -250 999 759] /Flags 4 /CharSet (/e/r/s/u/v/y) /FontFile 14 0 R >> endobj 52 0 obj [444 0 0 0 0 0 0 0 0 0 0 0 0 342 383 0 517 461 0 0 461 ] endobj 11 0 obj << /Length1 1631 /Length2 10865 /Length3 532 /Length 11815 /Filter /FlateDecode >> stream xeT\֨ ݥqwwwww-[p ww r|;9=5kSV-4ŭ@@;3; @RY &HM- ہ݁v~~ '%́H llt$ĝ`;Ksg- R ph݀`O ";;`sFdGIw<`7_`FdUAVB\2*NQװN9xeߩ)<{TR`wMhfni 6wt+to H#.3ט/fÐlC!֒vY98y`"7`l!¬, w'k9bF.`#OG} sX-ANN"V[[d.Y X}`П? sC,ܽsCwGge@ -C܀A ?6 `u[:L⁔C -lBAdi?dj!6du?Y]?lNRAl jV!"dBBB_r !VNraXB/X+׿b 9bB qXPjtaIƩ̀q zZY\&1"ِK(m:oB:Z󂩽Sx|הԶTagJ 6q_ܩD|Ꮦ^cDoGnOg0;ˎzAP<E4Xx@sW!|R%A <0+iDKæLe7=Ԙk Xu1:Vݐ4 nk"yѢ|DHd?sHW6*Ҩxo==;rj;E> V=9i6vfZi;D͵j]hGJIp_{;Ӑh)G$9 b$gR\w-PI;J-{lz6,NKm1вx3B.b˫ozrxd2Q-$~sm[IWrݿgx,C>a,5pDY퇍(֍`a ?1Ó꾏M몛֖EmYDh'& :!Fi߈\^Wfxp >*deb>q2(!f(_p$$!1w < T4}2GD"Eg8疄-o,!4NJ  ]TXx#W}ՙ`AU!@L\N!sn',iZY5Ԇ˙1\kGDpeᕉzAqif68Y1_|, _W4?`9SߏV6'U> %+,2Xj .+ULyHt7_cwI5_ ?i`kk.>AUYmz;Zߩrq[CuOn Oy2ʴ*$S<  ߐJeam0rc-ѿ/nNIᑊOh,NuZg~Aԓ{qP ;Ih2ВNύq2u[܁Q9}x#v ]'X7I#+_nL緀]UL}sC2vS4QȮo4L-4/*f rd񏄕JDCJՑcX_X;Or;p+nJK^&PR/Q)#̈|gڰ rn|y^ 0$v Y0`–H-\ ymڍ}¦/mzH} fj]S)"(j[oڏzo$Sx n>}(\.pwW=[шv{6v򘤲Ǝ\ k;a@[[r`ӕCOV^Xܷl/n8=;4vKѥϼ oǘfW3b,;}%ͷ>< ]iL6BHY:(s)XF!U25 k ۅX{u,ʞII=cg$A%@RZ7tˡHЀ3%b\ q#Tܙo)?tpU,2R6ba/r$׮5tR.2Yy>;j!ʮv}:j?9 al5>Âē0SLt ^E%A1wI"ωР"~/ٰa+&WwH)M}7Em}1õcBƹ+yno+-BgǑ%I_yO=X?$PGҼRǑl9 ս* pNnZjpx}mO8ҕo&,2Ȓ&ywT:K&,MmM -(3epf&9_#; a3W3<)@>mv7: 3jfas:Wˡr(\1\;=Ϛ(Y:{ɋSa697_<,ji]Ӟt6~"`9e 2{q;ef*qwWXϭ_زTa_%CPs1;Ľ;L`CGm<34@I牃va(XnHFt},xPҀuyFi!}8GN葘' 1̉)s]uClOd2÷/_ UտI1ne;q5k%7o _#TaqmVZ1 }*%)b8lk[|Gy0vwcsT/?S>,,"ഘ ]i.V55FcI«+,π`Mw3^wZh~> .rI5j OnwqvĬ|2RCAv$#}Es_.O?<5X|N1}i,u:V;GwޖnL!-ZB(^V2:+E'C?P'QWդȒ߄E. { sP}U7=A_w|>`wuc2иg3Ur9fqnOoX#{0+DQS#_Z1f06𗞪x!ehzCSvgrEV#+z82?sŴ9IѧB1Ta¨T/q1pqϊ64N |x9l|ID(:7BBߜ eR<),& b9yl;ٗU\Rs ߏ-A5ʅ5g" HWLi4,UF<ϞT"ֵ؄a$h"6sU³‡*Uol&]#T'[ ya|G]XhWSu]}M\˪&?hL:6ڃvH]YY^?oۛbtP;b9XZDIWx64{=ihA gٚw(vm?"$?g43NgY)C7~Lj^І:[taqђ+cՓIW6^,5[pyyH>q$?ޢCFFfĹͨߧwM nuz_N ˯CTlVjIFGyd3DS5ȣTv^$MߞHcxz0LՓW5ͅb*Q# |*pZsz;@=ąipNIkXFE{[FOգ)U6h0ZI6$3{3nɓt? hׂ(<(ו[V3MQOC4KdNuo֓j5 -kbpwbU%l1) k]c}[x5ǔo琒z'J$l/վ[}s?}XIQB;fo LP%^SӼdtd86v)L$ysI(Ԋ0483IXYݸi>TycR m>KSLCVI@FS0&~9Z247_v)c{[ħx-1RQh֝Vt\[/kj9nxB`,UTheF1]gj\|F^P-0|D*3e'y 8ێa\dBs^ [(݆NXAoaĉRյ\8㼾 L2BikB`Cվ{]6.ƯXC&kPB2"We 'b ?^_:h a"9<`ǧƎTTT'?u]ys\v|l`W6UWďuh9<*RSjL1>z_&tʹ !)tFK_h=A3W뢓x,bZݟ;K)R ʩV!9\}4+M_߿cL]Un6_}mK)Z8fǯ{_8 <5{} 2&E 7՗Vv܁`6 ðƱlkj~OVQvue ~n;>d]AZ CX2#'}m۽l<h{]ZrIfyo,h)BL\Q K3n)-~G,|t".S̼}.kmC#a8lrA17$bU) NwZJؓ)0Sߋnӷ_R1qhMJ\LJ\%"¶ʜ'SY6f{AOS[ BhDkQdQpJ8]BIͭmouoԯSj 3YnR@3"SdX#)6=bN\Rew;SS{^ǶγM>M&܊JN]}H ќ0 cXej0Ifl=Tв19~NM?b+0UQuɱ˽=i5vq8dir{󺝁nDM?@7#֙)ZnЖF=EXaI@t J5Gx= u&mL[̓XB̮;cKۨ1_gO},?j $ \l\T^X /g~#CPo, *&L*mu U}F6i$!-!lo:uzTGie^|vzusܷd_[.gY8ˈǩ^ܺ꯾!p' tbCH=ֺ B#QK,G닢vetl&~ϡx[a17Z ='ƿ>a :"w 0o~Ԡ[^n{F+}fё'VhL5哆]<ccߧ`T h+p*v'ND4q}E"~\` cŗ%CD0xd5/Z!juA#;\CהmY.r  ?au ĥEZ~F .;0ւE)n5R; yz^g3s;aʙۤz 3]UT"F$?,R_ѹ<;ԶR 6w%ڸfQwJ<t *NcĹ5J")P1tj]# GX8i0۸( 4v/!E0;oS̷Gdt-~!d,qj=saDPGK̉IWJ4j8Mr[?!h-S1 ח" Op4nt dZ>zKLJ?K`$e;k;eYZm Kv?ʳM1`H\Xw -{j{f=#$ "[H; xAstmY#Gd7-弈7@MfJ&U]2RM~ (a2u`t)]'[ꑢ0W;Bٻuzke3-M '-q$[CC a 3Xz mـ3FʏP2RPO0k,J5ؠ@B vsSĕU^6sHؠ5:CdwMϘKmY*:y68zeX|USo3%HN{vdzaO[@ D7CFOv`q3BDUoIWf!VL{>{N>&A{C~ҩu$9yt-%O )Wi̿Bg._;vuaJ<I//ggp~8~ժrnl$46_'dJO+gx==O:,Oʸ|h8%: }2Ԋ{"Ezv"EbrA0m q-мQqCwTkWIo+Tp>oW|c+( yFhURDXOO\=Q!LИ#ѭ ܗ0^BݔSJb OZ4mhajGz¼ [L\UPM۫Tb埴h5iS]}GS&n6j ZB緰v䂉5 棢oM> endobj 10 0 obj << /Ascent 694 /CapHeight 683 /Descent -194 /FontName /VAGMSP+CMR10 /ItalicAngle 0 /StemV 69 /XHeight 431 /FontBBox [-251 -250 1009 969] /Flags 4 /CharSet (/ff/fi/parenleft/parenright/comma/hyphen/period/zero/one/two/three/four/five/six/seven/eight/nine/colon/A/C/D/F/I/L/N/S/T/U/W/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/dieresis) /FontFile 11 0 R >> endobj 53 0 obj [583 556 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 389 389 0 0 278 333 278 0 500 500 500 500 500 500 500 500 500 500 278 0 0 0 0 0 0 750 0 722 764 0 653 0 0 361 0 0 625 0 750 0 0 0 0 556 722 750 0 1028 0 0 0 0 0 0 0 0 0 500 556 444 556 444 306 500 556 278 306 528 278 833 556 500 556 528 392 394 389 556 528 722 528 528 444 0 0 0 0 500 ] endobj 8 0 obj << /Length1 1033 /Length2 3896 /Length3 532 /Length 4603 /Filter /FlateDecode >> stream xy{?_置.:G-FR٦&Jcєy]Δ?M>MLzp)K{QedF;ZK34TKSySgë:ª7WNLQ4T6bЀ1)GMعiǐfe^J]{V]wJBOŞ~"G<ژt; hs|O/9xb3kLIHO{,`x)i'Cq2^r`3pU( \jȲ9V>8_&hel-Vۈ3=k؝wiEہ0TIZKFlGt]8w~YQ,ϓԡ~xaT:'/Bř{#!(5ެbv7\B*TTTz;oB+e)ʜ Yi na!l}&}{=WSi 'e[$22ei\gshK R~ε'LS$-46|cMW?^LU,|Q$mzz;90?4bV9_vbunZ=3XRy{oZLF~zTtS""REz7d?ܛԷ6}Zb"7Ug!\֛7 $z nW54|Xڛ_4lϣbG0l1FI>0^$OhΕقM OS;rkD7MIJs~Fz.3MJ}ʟ.In?ߛ+Y8 d7C|ۋFe5= 9Y_:B˽Wt (~P6TEǖNRSN'M͋6豈fӽ*NB#h:6,Xgsْ̓2!ANr?iZH 3pquv7J;VŪnsxX6 @ bzm2ekHNwTRS>!-2Ʒq&WŇQtEꔯBCFBh;s9Bb'N~O`/e6]~#aVZƱرbAҦFMH^}oMVEJ֙X]@PvϹzUI:->ON}߼hTTZh KWRmv*'քx*Tjb}QeĹo!u2څ긂tԦ+yѶ_K|"a _X:4QBO$qlF ,l8e yP7h.3$G]UM^nG)={EZ$>y$t'{ Z>L{[oy}dљJHI(L Wg)aU0V5 t9DTׯ*ZRawĦ/Ej'⥝Wi5$Xk((kU_:ޙaHC,%颗%HZvp$KIsC:KQ-‹S&f:iWTE[B*[X5éV'P?/zZgFj誢D22v#h7tQK}UᵉQIJh_3*r>b|4yiRL]3qJBo5VW09@oc 701^'-\NY$F`fSW(K V(lο-N;XOe2CA|nq m|^5PFNbSM>{! r! RQYj/7vPǼ [Dz`>`*\.i%M,z2"EKOMڤFKE͘bJYv f AD5/~ug݂PovJ ɽvm0QVJ]q@@:CNJ;Z yVXB0%]?հBt{帴k4cI8w~[5ƙ|c7 #:*ƚv(-vwi2aE [hB{9sb7K [֌6׀tO.d gZINJzh۫D R N579a[T7 (ia&ʃrwx/3>;~ &%mc;e_Г\8Ğ ft!S َ"ݒ>yZqO+ϭNIQPzk<|8~lLlْzܪK+r?/N%oU3W.=a6~#[]67 +oxzͫI'HO6R頥pGK[hSru܅VW͗XH ܩHRW$U(u,'ij#kcs֢Շ?}ĂW~lcbXޣR$V yCقoTkH]\ BY E}#CNJL$><rkpM$by7" cNCVK[HϷAcmʺ[a̽SAȋW=y*iWVtx_J d$LLu\ly1h8֬B Zٯu[)Oyt8aPwfs&n{Y13RjBBo wdA>|h pPjտ!pvHfҼ& E d%.]suؠP<7TUu\Psji73f}@U$gY%K}z.[e<x-#/Vw@7Aendstream endobj 9 0 obj << /Type /Font /Subtype /Type1 /Encoding 44 0 R /FirstChar 44 /LastChar 121 /Widths 54 0 R /BaseFont /JRWQBH+CMR12 /FontDescriptor 7 0 R >> endobj 7 0 obj << /Ascent 694 /CapHeight 683 /Descent -194 /FontName /JRWQBH+CMR12 /ItalicAngle 0 /StemV 65 /XHeight 431 /FontBBox [-34 -251 988 750] /Flags 4 /CharSet (/comma/zero/two/four/five/L/M/T/a/c/e/h/l/m/o/r/s/u/y) /FontFile 8 0 R >> endobj 54 0 obj [272 0 0 0 490 0 490 0 490 490 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 612 897 0 0 0 0 0 0 707 0 0 0 0 0 0 0 0 0 0 0 0 490 0 435 0 435 0 0 544 0 0 0 272 816 0 490 0 0 381 386 0 544 0 0 0 517 ] endobj 5 0 obj << /Length1 1015 /Length2 3872 /Length3 532 /Length 4554 /Filter /FlateDecode >> stream xi<}dz(!*[N3cl)E0fc߲BȖ}IY"!{B Y YB\s/y=w>qF"&Bu}4xyqH\rTV z8b*%'.#'&Ա>8#P$ q(8 HLp# р D"DAP(@ 4y"q$Sɤ @b>i`I$')F\~l\PhJz8@@0L5GM@yTC4Bk#_q$O3n`*<PM׿U&b这B PR"40p,!-`> fH(  I,t $@?)! }\_!)Y7MP 078v e07$ I$)P~COP CIߐT7$7oH sjjXo?qq@DLȒ%-!naPnH${pH _CڏE&$ ÜRk"J5S 9T7Ӆ'zt݄Y_Z:bwn7vO=Y[Hg3ze/t\cΪ$$˂͗+D#7OOqjnLG"?6aHs+ |bHJ64Љ@S'9cRRFoyh;P(0YWvW~\~02W8]0t?nC,tX7ěXṴgm7S VҸZ*LC܎F OzG5q DӒ u^hOF-?ݙM %4L_ZMA{P:QYVPd _͛ _u+ܪ+̔ W;s)TWU:4aE{- 3bcXB^R%v{B\r2b}Dzs/iػ{<۞qI@Bba5RȑT_dKr Zz*{/ U# = w"DIp?3ͬ|9it],S͜A,$ƃut]{Pb>~M&Փ&.)óLT,xgɜD{J~#W@ӽg/)y?PI۰^yf^9?Uwh@G{)G},y5(x\츏,Uˮڕ:LǎyM0ޜ“w /V:v8G2:hsxLVܵ>OVUg}JzĈV2̨vשA KD=&ׂl^N4k+?WpP1Eؑb,f;~edq(/bL-[ o9#xQ 8x +^0+'b7y- .vR L8bA"u*"V ѽyV^,mȃRT7XrGEFaŲf9g=zxV1@jioXۨ^O3nlv01ȑoY(Y8CB}. h\WX'_v oJ$TeՇCW;4}.GM vzV; 4^riB6SBǁ#-f#fFhD[L!%LZ~i 7XlJQ_Vk_ARR/ @doqh#_~/6=Z2yẌ8m{pߋ39;PUލ$0|R9ٞENwZ[&X SAXBoĭE܂5@xpW@iӌ\fm9v$u&QY Zds2{chD} z:r3N? e*߱N{ƃ\{#ϲa㱚 G~}W8 p(!Aao­e ނԐ5fӣ{Jzwzɜ& b9ZrJJ>k`"gp'YM|D4bW'!룯P̴_u~,썡T90G4T#;zC;?+=1Xo*_KO =Sܹ) W? hy[xerg98M1#+7;ߊ'_rUGՙ9 ݢ L=-{1K.9f6b"Nt۾#}7ǰ:[}$!e@lɩ5xDup|̆B㮑yH:J%\̕0m[>t~_BonZ)nYӌS[,Jh~WZwuA8qىyjs}!@ʫG'}m7n9$QA։uJײd]$`r{P=7BlL?:F..Q }e=E2/3xZK$c"=&H9;䌒 gezjCؿ̤xیLle=EfBٍwoܹM5.T&w [ \z#s% h8rA>io#,cצHðȋАcu*V Ǎ}3y)1i%&ن截&eG.iN9%:Λ3" O>l>x-sHn㫫{r]{RŔ_/û_%Yj hkɒ9]PvuwFszmG9tKIu~fZǯ_$UmlkxH{jѢC[YK`mwR *G(S~棧 -~LtXeK h*QJ}ıhM=R(,'A9’ʋ@|n$G^((*D)2bhqfsճQowT[$ɋtV2;ŲʻSW}~c)֔:ïO0k?P-I`dvbr$:W=١(߇@s83D[PQόM5Ql+ ~B3ڡxLY?{Lֱl`Fn(E@4KT8S.} Tbo+n> 9p*Jj[\ҳEFm-$ۧ⽨Dȩ{Vs/8c0ȸshp,a~sw7MҹnR"w]65ZZ{A$ݢ\zXkխ>sBﳥS.4$i]0(n@RRH˜6b[}2( >Tg n-zp,k Y8VMM?yBZ&?2?Q4rr7^_.:'y:ƚ Yb^֢M6r7yO*ja_ *xάg[%> Lcji%a/ٓ:J}2ڸb VCl2 k!fHb̢ż^]][^zk1lyEs$,mzzөkA_B4w*ژ^#U㻏+8YZ 50U Z˻W.K-Tb\V(ᥔ:gW78 )>&J(1O5,3[ ?QdphysDi4z")]e *و`Qmk~-eP}F`~cn%TrAie a}Osnד !e`mgppg16^Ψ)}}N Q˩zbR({=B/t+#j>4C_wz:Xw{8m#`28BҠZ$cNsW> endobj 4 0 obj << /Ascent 694 /CapHeight 683 /Descent -195 /FontName /LWDNRA+CMR17 /ItalicAngle 0 /StemV 53 /XHeight 431 /FontBBox [-33 -250 945 749] /Flags 4 /CharSet (/hyphen/E/a/e/f/g/l/m/o/p/r/s/t/u/v/w/x/y) /FontFile 5 0 R >> endobj 55 0 obj [302 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 628 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 459 0 0 0 406 276 459 0 0 0 0 250 772 0 459 511 0 354 359 354 511 485 668 485 485 ] endobj 28 0 obj << /Type /Pages /Count 5 /Kids [2 0 R 30 0 R 33 0 R 36 0 R 42 0 R] >> endobj 56 0 obj << /Type /Catalog /Pages 28 0 R /PTEX.Fullbanner (This is pdfTeX, Version 3.14159-1.10b) >> endobj 57 0 obj << /Producer (pdfTeX-1.10b) /Creator (TeX) /CreationDate (D:20050324135600) >> endobj xref 0 58 0000000000 65535 f 0000002336 00000 n 0000002231 00000 n 0000000009 00000 n 0000072367 00000 n 0000067539 00000 n 0000072212 00000 n 0000067083 00000 n 0000062206 00000 n 0000066928 00000 n 0000061460 00000 n 0000049367 00000 n 0000061303 00000 n 0000049089 00000 n 0000046654 00000 n 0000048930 00000 n 0000046166 00000 n 0000038668 00000 n 0000046008 00000 n 0000037039 00000 n 0000028184 00000 n 0000036879 00000 n 0000027786 00000 n 0000024637 00000 n 0000027628 00000 n 0000023962 00000 n 0000014379 00000 n 0000023804 00000 n 0000072807 00000 n 0000004207 00000 n 0000004099 00000 n 0000002486 00000 n 0000005731 00000 n 0000005623 00000 n 0000004312 00000 n 0000007293 00000 n 0000007185 00000 n 0000005836 00000 n 0000012971 00000 n 0000009081 00000 n 0000012813 00000 n 0000008043 00000 n 0000007935 00000 n 0000007410 00000 n 0000008136 00000 n 0000013187 00000 n 0000013362 00000 n 0000024350 00000 n 0000028003 00000 n 0000037424 00000 n 0000037721 00000 n 0000046429 00000 n 0000049294 00000 n 0000061840 00000 n 0000067326 00000 n 0000072598 00000 n 0000072893 00000 n 0000073001 00000 n trailer << /Size 58 /Root 56 0 R /Info 57 0 R >> startxref 73096 %%EOF