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

Peter Dalgaard p.dalgaard at biostat.ku.dk
Sat Dec 6 22:45:13 CET 2008

```Nils Skotara wrote:
> 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...

Just do the same as before, but comparing mlmfitD to mlmfit:

anova(mlmfitD, mlmfit, X=~A+B, M=~A+B+C)
# or anova(mlmfitD, mlmfit, X=~1, M=~C), as long as things are balanced

gives the D:C interaction test (by testing whether the C contrasts
depend on D). The four-factor interaction is

anova(mlmfitD, mlmfit, X=~(A+B+C)^2, M=~A*B*C)

>
>
> 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,....)
>>
>>
>>

--
O__  ---- Peter Dalgaard             Øster Farimagsgade 5, Entr.B
c/ /'_ --- Dept. of Biostatistics     PO Box 2099, 1014 Cph. K
(*) \(*) -- University of Copenhagen   Denmark      Ph:  (+45) 35327918
~~~~~~~~~~ - (p.dalgaard at biostat.ku.dk)              FAX: (+45) 35327907

```