# [R] How to get Greenhouse-Geisser epsilons from anova?

Nils Skotara Nils.Skotara at uni-hamburg.de
Sat Dec 6 21:03:41 CET 2008

```Thank you, this helped me a lot!
All within effects and interactions work well!

Sorry, but I still could not get how to include the between factor..
If I include D with 2 levels, then myma is 24 by 28. (another 12 by 28 for the
second group of subjects.)
mlmfitD <- lm(myma~D) is no problem,
but whatever I tried afterwards did not seem logical to me.
I am afraid I do not understand how to include the between factor.
I cannot include ~D into M or X because it has length 24 whereas the other
factors have 28...

Zitat von Peter Dalgaard <p.dalgaard at biostat.ku.dk>:

> Skotara wrote:
> > Dear Mr. Daalgard.
> >
> > thank you very much for your reply, it helped me to progress a bit.
> >
> > The following works fine:
> > dd <- expand.grid(C = 1:7, B= c("r", "l"), A= c("c", "f"))
> > myma <- as.matrix(myma) #myma is a 12 by 28 list
> > mlmfit <- lm(myma~1)
> > mlmfit0 <- update(mlmfit, ~0)
> > anova(mlmfit, mlmfit0, X= ~C+B, M = ~A+C+B, idata = dd,
> > test="Spherical"), which tests the main effect of A.
> > anova(mlmfit, mlmfit0, X= ~A+C,  M = ~A+C+B, idata = dd,
> > test="Spherical"), which tests the main effect of B.
> >
> >
> > However, I can not figure out how this works for the other effects.
> > If I try:
> > anova(mlmfit, mlmfit0, X= ~A+B,  M = ~A+C+B, idata = dd,  test="Spherical")
> >
> > I get:
> > Fehler in function (object, ..., test = c("Pillai", "Wilks",
> > "Hotelling-Lawley",  :
> >        residuals have rank 1 < 4
>
> dd\$C is not a factor with that construction. It works for me after
>
> dd\$C <- factor(dd\$C)
>
> (The other message is nasty, though. It's slightly different in R-patched:
>
>  > anova(mlmfit, mlmfit0, X= ~A+B, M = ~A+C+B, idata = dd,
> test="Spherical")
> Error in solve.default(Psi, B) :
>    system is computationally singular: reciprocal condition number =
> 2.17955e-34
>
> but it shouldn't happen...
> Looks like it is a failure of the internal Thin.row function. Ick!
> )
>
> > I also don't know how I can calculate the various interactions..
> > My read is I should change the second argument mlmfit0, too, but I can't
> > figure out how...
>
>
> The "within" interactions should be straightforward, e.g.
>
> M=~A*B*C
> X=~A*B*C-A:B:C
>
> etc.
>
> The within/between interactions are otained from the similar tests of
> the between factor(s)
>
> e.g.
>
> mlmfitD <- lm(myma~D)
>
> and then
>
> anova(mlmfitD, mlmfit,....)
>
>
>

```