[R] greco-latin square
Steven Lacey
slacey at umich.edu
Sun May 21 20:32:30 CEST 2006
Rich,
I have fit the model using Error() to get R to perform the appropriate
tests. This works and the results are below. But, the analysis does produce
a warning stating that the Error term is singular. Why? This seems strange
given that when the term in Error is in the model, but not in a call to
Error, the analysis does not post an a singular error.
The output is below.
Thanks for any thoughts you might have on this,
Steve
m1 <- aov(asin.Stimulus.ER ~ stimulusName + responseFinger + oom +
mapping.code +
stimulusName:mapping.code +
Error(mapping.code:Subject.n +
stimulusName:mapping.code:Subject.n), data=d1,
contrasts=list
(stimulusName="contr.poly",responseFinger="contr.poly",oom="contr.poly",
mapping.code="contr.poly",Subject.n="contr.poly"))
summary(m1)
Warning messages:
1: Error() model is singular in: aov(asin.Stimulus.ER ~ stimulusName +
responseFinger + oom +
2: variable 'Subject.n' is absent, its contrast will be ignored in:
model.matrix.default(Terms, mf, contrasts)
>
> summary(tmp10)
Error: mapping.code:Subject.n
Df Sum Sq Mean Sq F value Pr(>F)
mapping.code 3 0.0281900 0.0093967 1.8448 0.2794
Residuals 4 0.0203743 0.0050936
Error: mapping.code:Subject.n:stimulusName
Df Sum Sq Mean Sq F value Pr(>F)
stimulusName 3 0.005002 0.001667 1.4391 0.280137
responseFinger 3 0.033730 0.011243 9.7048 0.001569 **
oom 3 0.006146 0.002049 1.7684 0.206609
stimulusName:mapping.code 3 0.022318 0.007439 6.4212 0.007677 **
Residuals 12 0.013903 0.001159
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
-----Original Message-----
From: Richard M. Heiberger [mailto:rmh at temple.edu]
Sent: Friday, May 19, 2006 12:16 AM
To: Steven Lacey; r-help at stat.math.ethz.ch
Subject: Re: [R] greco-latin square
## Thank you for a very nice example. I would like to make two ##
expansions on the discussion that Spencer Graves gave.
## Rich
## 1. Multiple regression is a sequential algorithm. In the
## sequential anova table the sums of squares for non-orthogonal ##
predictor variables depends on the order in which they are brought ## into
the model. As part of the regression algorithm each of the ## predictor
variables, in this case the dummy variables corresponding ## to the
contrasts, is orthogonalized against all previous dummy ## variables.
## We can see that the algorithm has done its task by looking at the ##
projection of Y=asin.Stimulus.ER onto the orthogonalized subspaces ##
associated with each of the multi-degree-of-freedom terms in the ## model.
We do so by projecting Y onto each of those subspaces with ## the proj()
function.
m1 <- aov(asin.Stimulus.ER ~
stimulusName + responseFinger + oom + mapping.code +
mapping.code:Subject.n + stimulusName:mapping.code +
stimulusName:mapping.code:Subject.n,
data=w.tmp)
summary(m1)
m1.proj <- proj(m1)
tmp <- crossprod(m1.proj)
## zapsmall(tmp)
dimnames(tmp) <- rep(list(abbreviate(dimnames(tmp)[[1]])), 2)
## The projections onto the subspaces are orthogonal to each other.
zapsmall(tmp, digits=3)
## > zapsmall(tmp, digits=3)
## (In) stmN rspF oom mpp. m.:S stN:. sN:.:
## (In) 0.2561 0.000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 ## stmN
0.0000 0.005 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 ## rspF 0.0000 0.000
0.0337 0.0000 0.0000 0.0000 0.0000 0.0000
## oom 0.0000 0.000 0.0000 0.0061 0.0000 0.0000 0.0000 0.0000
## mpp. 0.0000 0.000 0.0000 0.0000 0.0282 0.0000 0.0000 0.0000 ## m.:S
0.0000 0.000 0.0000 0.0000 0.0000 0.0204 0.0000 0.0000 ## stN:. 0.0000 0.000
0.0000 0.0000 0.0000 0.0000 0.0223 0.0000 ## sN:.: 0.0000 0.000 0.0000
0.0000 0.0000 0.0000 0.0000 0.0139 ## >
## The sums of squares of the projections are exactly the sums of ## squares
in the ANOVA table. as.matrix(apply(m1.proj, 2, function(x) sum(x^2)))
## > as.matrix(apply(m1.proj, 2, function(x) sum(x^2)))
## [,1]
## (Intercept) 0.256144760
## stimulusName 0.005001724
## responseFinger 0.033730254
## oom 0.006146134
## mapping.code 0.028189996
## mapping.code:Subject.n 0.020374325
## stimulusName:mapping.code 0.022317815
## stimulusName:mapping.code:Subject.n 0.013902509
## >
## 2. We can ask the summary function to do all the right tests. ## There is
no need to do them by hand. The Error() function works ## directly with the
orthogonal subspaces and recognizes which terms ## are the numerators and
denominators for the F tests.
m1e <- aov(asin.Stimulus.ER ~
(stimulusName + mapping.code + responseFinger + oom)^2 +
Error(mapping.code:Subject.n),
data=w.tmp)
summary(m1e)
## > m1e <- aov(asin.Stimulus.ER ~
## + (stimulusName + mapping.code + responseFinger + oom)^2 +
## + Error(mapping.code:Subject.n),
## + data=w.tmp)
## Warning message:
## Error() model is singular in: aov(asin.Stimulus.ER ~ (stimulusName +
mapping.code +
responseFinger +
## >
## > summary(m1e)
##
## Error: mapping.code:Subject.n
## Df Sum Sq Mean Sq F value Pr(>F)
## mapping.code 3 0.0281900 0.0093967 1.8448 0.2794
## Residuals 4 0.0203743 0.0050936
##
## Error: Within
## Df Sum Sq Mean Sq F value Pr(>F)
## stimulusName 3 0.005002 0.001667 1.4391 0.280137
## responseFinger 3 0.033730 0.011243 9.7048 0.001569 **
## oom 3 0.006146 0.002049 1.7684 0.206609
## stimulusName:mapping.code 3 0.022318 0.007439 6.4212 0.007677 **
## Residuals 12 0.013903 0.001159
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## >
## The warning about the singular model is an indicator that more ## dummy
variables have been generated than are needed. This is ## consistent with
your observation that any of the twoway ## interactions could be used to
capture those interactions.
More information about the R-help
mailing list