[R] aov y lme
Christoph Buser
buser at stat.math.ethz.ch
Mon Jan 22 10:08:54 CET 2007
Dear Tomas
You can produce the results in Montgomery Montgomery with
lme. Please remark that you should indicate the nesting with the
levels in your nested factor. Therefore I recreated your data,
but used 1,...,12 for the levels of batch instead of 1,...,4.
purity<-c(1,-2,-2,1,-1,-3,0,4, 0,-4, 1,0, 1,0,-1,0,-2,4,0,3,
-3,2,-2,2,2,-2,1,3,4,0,-1,2,0,2,2,1)
suppli<-factor(c(rep(1,12),rep(2,12),rep(3,12)))
batch<-factor(c(rep(1:4,3), rep(5:8,3), rep(9:12,3)))
material<-data.frame(purity,suppli,batch)
As you remarked you can use aov
summary(material.aov<-aov(purity~suppli+suppli:batch,data=material))
Df Sum Sq Mean Sq F value Pr(>F)
suppli 2 15.056 7.528 2.8526 0.07736 .
suppli:batch 9 69.917 7.769 2.9439 0.01667 *
Residuals 24 63.333 2.639
---
Signif. codes: 0 $,1rx(B***$,1ry(B 0.001 $,1rx(B**$,1ry(B 0.01 $,1rx(B*$,1ry(B 0.05 $,1rx(B.$,1ry(B 0.1 $,1rx(B $,1ry(B 1
Remark that the test of "suppli" is not the same as in
Montgomery. Here it is wrongly tested against the Residuals and
you should perform the calculate the test with:
(Fsuppi <- summary(material.aov)[[1]][1,"Mean Sq"]/
summary(material.aov)[[1]][2,"Mean Sq"])
pf(Fsuppi, df1 = 2, df2 = 9)
To use lme the correct level numbering is now important to
indicate the nesting. You should specify your random component
as
random=~1|batch
If you use "random=~1|suppli/batch" instead, random components
for batch AND suppli are included in the model and you specify a
model that incorporates suppli as random and fixed. Therefore
the correct syntax is
library(nlme)
material.lme<-lme(purity~suppli,random=~1|batch,data=material)
## You obtain the F-test for suppli using "anova"
anova(material.lme)
summary(material.lme)
## Remark that in the summary output, the random effects are
## standard deviations and not variance components and you
## should square them to compare them with Montgomery
## 1.307622^2 = 1.71 1.624466^2 = 2.64
## Or you can use
VarCorr(material.lme)
I hope this helps you.
Best regards,
Christoph Buser
--------------------------------------------------------------
Credit and Surety PML study: visit our web page www.cs-pml.org
--------------------------------------------------------------
Christoph Buser <buser at stat.math.ethz.ch>
Seminar fuer Statistik, LEO C13
ETH Zurich 8092 Zurich SWITZERLAND
phone: x-41-44-632-4673 fax: 632-1228
http://stat.ethz.ch/~buser/
--------------------------------------------------------------
Tomas Goicoa writes:
>
>
>
> Dear R user,
>
> I am trying to reproduce the results in Montgomery D.C (2001, chap 13,
> example 13-1).
>
> Briefly, there are three suppliers, four batches nested within suppliers
> and three determinations of purity (response variable) on each batch. It is
> a two stage nested design, where suppliers are fixed and batches are random.
>
> y_ijk=mu+tau_i+beta_j(nested in tau_i)+epsilon_ijk
>
> Here are the data,
>
> purity<-c(1,-2,-2,1,
> -1,-3, 0,4,
> 0,-4, 1, 0,
> 1,0,-1,0,
> -2,4,0,3,
> -3,2,-2,2,
> 2,-2,1,3,
> 4,0,-1,2,
> 0,2,2,1)
>
> suppli<-factor(c(rep(1,12),rep(2,12),rep(3,12)))
> batch<-factor(rep(c(1,2,3,4),9))
>
> material<-data.frame(purity,suppli,batch)
>
> If I use the function aov, I get
>
> material.aov<-aov(purity~suppli+suppli:batch,data=material)
> summary(material.aov)
> Df Sum Sq Mean Sq F value Pr(>F)
> suppli 2 15.056 7.528 2.8526 0.07736 .
> suppli:batch 9 69.917 7.769 2.9439 0.01667 *
> Residuals 24 63.333 2.639
> ---
> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
>
> and I can estimate the variance component for the batches as
>
> (7.769- 2.639)/3=1.71
>
> which is the way it is done in Montgomery, D.
>
> I want to use the function lme because I would like to make a diagnosis of
> the model, and I think it is more appropriate.
>
> Looking at Pinheiro and Bates, I have tried the following,
>
> library(nlme)
> material.lme<-lme(purity~suppli,random=~1|suppli/batch,data=material)
> VarCorr(material.lme)
>
> Variance StdDev
> suppli = pdLogChol(1)
> (Intercept) 1.563785 1.250514
> batch = pdLogChol(1)
> (Intercept) 1.709877 1.307622
> Residual 2.638889 1.624466
>
> material.lme
>
> Linear mixed-effects model fit by REML
> Data: material
> Log-restricted-likelihood: -71.42198
> Fixed: purity ~ suppli
> (Intercept) suppli2 suppli3
> -0.4166667 0.7500000 1.5833333
>
> Random effects:
> Formula: ~1 | suppli
> (Intercept)
> StdDev: 1.250514
>
> Formula: ~1 | batch %in% suppli
> (Intercept) Residual
> StdDev: 1.307622 1.624466
>
> Number of Observations: 36
> Number of Groups:
> suppli batch %in% suppli
> 3 12
>
> From VarCorr I obtain the variance component 1.71, but I am not sure if
> this is the way to fit the model for the nested design. Here, I also have a
> variance component for suppli and this is a fixed factor. Can anyone give
> me a clue?
> [[alternative HTML version deleted]]
>
> ______________________________________________
> R-help at stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
More information about the R-help
mailing list