Walmes Zeviani
2012-Nov-05 17:51 UTC
[R] Diference in results from doBy::popMeans, multcomp::glht and contrast::contrast for a lme model
Hello R users, I'm analyzing an experiment in a balanced incomplet block design (BIB). The effect of blocks are assumed to be random, so I'm using nlme::lme for this. I'm analysing another more complex experiments and I notice some diferences from doBy::popMeans() compared multcomp::glht() and contrast::contrast(). In my example, glht() and contrast() were equal I suspect popMeans() are doing something diferent. This a proprosital difference? Does popMeans account the variance of random effects or something similar? The code below is reproducible, for easy evaluation the principal results are appended. Thank you. # reading BIB data da <- read.table("http://www.leg.ufpr.br/~walmes/data/pimentel_bib3.txt", + header=TRUE, sep="\t", colClasses=c("factor","factor",NA)) str(da) ## 'data.frame': 30 obs. of 3 variables: ## $ bloco : Factor w/ 10 levels "1","10","2","3",..: 1 1 1 3 3 3 4 4 4 5 ... ## $ variedade: Factor w/ 5 levels "1","2","3","4",..: 1 2 3 1 2 4 1 2 5 1 ... ## $ y : int 35 28 27 30 20 22 28 16 18 36 ... # fixed effect model m0 <- lm(y~bloco+variedade, da) summary(m0) ## Coefficients: ## Estimate Std. Error t value Pr(>|t|) ## (Intercept) 35.7556 1.0004 35.742 < 2e-16 *** ## bloco10 -0.3778 1.2729 -0.297 0.770447 ## ... ## variedade2 -9.2000 0.9262 -9.933 3.01e-08 *** ## variedade3 -8.0667 0.9262 -8.710 1.81e-07 *** ## ... require(contrast) contr <- contrast(m0, type="average", list(bloco=levels(da$bloco), variedade="1")) contr ## Contrast S.E. Lower Upper t df Pr(>|t|) ## 1 32.76667 0.6438886 31.40168 34.13165 50.89 16 0 require(doBy) pop <- popMeans(m0, effect="variedade") pop ## beta0 Estimate Std.Error t.value DF Pr(>|t|) Lower Upper variedade ## 1 0 32.76667 0.6438886 50.88872 16 0 31.40168 34.13165 1 summary(glht(m0, linfct=matrix(contr$X, nrow=1))) ## Linear Hypotheses: ## Estimate Std. Error t value Pr(>|t|) ## 1 == 0 32.7667 0.6439 50.89 <2e-16 *** # ok, results are the same! # random effects model require(nlme) mm0 <- lme(y~variedade, random=~1|bloco, da) summary(mm0) ## Fixed effects: y ~ variedade ## Value Std.Error DF t-value p-value ## (Intercept) 32.67807 1.5887794 16 20.568037 0 ## variedade2 -9.08144 0.9236918 16 -9.831679 0 contr <- contrast(mm0, list(variedade="1")) contr ## Contrast S.E. Lower Upper t df Pr(>|t|) ## 32.67807 1.588779 29.56412 35.79202 20.57 23 0 pop <- popMeans(mm0, effect="variedade") pop ## beta0 Estimate Std.Error t.value DF Pr(>|t|) Lower Upper variedade ## 1 0 30.50000 1.918043 15.90162 25 0 26.54972 34.45028 1 summary(glht(mm0, linfct=matrix(contr$X, nrow=1))) ## Linear Hypotheses: ## Estimate Std. Error z value Pr(>|z|) ## 1 == 0 32.678 1.589 20.57 <2e-16 *** # sdt error calculated by hand sqrt(contr$X%*%vcov(mm0)%*%t(contr$X)) ## 1 ## 1 1.588779 =========================================================================Walmes Marques Zeviani LEG (Laboratório de Estatística e Geoinformação, 25.450418 S, 49.231759 W) Departamento de Estatística - Universidade Federal do Paraná fone: (+55) 41 3361 3573 VoIP: (3361 3600) 1053 1173 e-mail: walmes@ufpr.br skype: walmeszeviani twitter: @walmeszeviani homepage: http://www.leg.ufpr.br/~walmes linux user number: 531218 ========================================================================= [[alternative HTML version deleted]]