# [R] SE of ANOVA (aov) with repeated measures and a bewtween-subject factor

Karl Knoblick karlknoblich at yahoo.de
Sun Nov 16 17:27:34 CET 2003

```Hallo!

I have data of the following design:
NSubj were measured at Baseline (visit 1) and at 3
following time points (visit 2, visit 3, visit 4).
There is or is not a treatment.

Most interesting is the question if there is a
difference in treatment between the results of visit 4
and baseline. (The other time points are also of
interest.) The level of significance is alpha=0.0179
(because of an interim analysis).

My questions:

1) I prefer calculating s model with the differences
to baseline as Y:
Y ~ treat*visit + Error(treat:id)
where treat is the treatment and id is the subject's
id
Other possibilities are:
a) Y0 ~ treat*visit + v1 + Error(treat:id)
where Y0 are the results (visit 2 to visit 4) and v1
is the result of visit 1 as covariate
b) Calculating a t-test with the results of visit 4
and visit 1
What's best?

2) When calculating a model (ANOVA) I have to
calculate the treatment effect (easy with coef(...)).
But how can I get the standard errors, or more exactly
the 98.21% confidence

intervals?
- lm() does not work with an Error()-term in the
formula
- using lme(), I can not reproduce results e.g. of an
example of a text book ((Bortz,
Statistik für Sozialwissenschaftler, p.412, 3.
Auflage, see at the very end)

Here what I have done (with random data):

# Random generation of data
NSubj<-30 # No. of subjects
set.seed(1234)
id<-c(1:NSubj) # ID of subjects
treat<-runif(NSubj, min=0, max=1) > 0.5 # Treatment
v1<-runif(NSubj, min=0, max=1) # Result visit 1
Baseline)
v2<-runif(NSubj, min=0, max=1) # Result visit 2
v3<-runif(NSubj, min=0, max=1) # Result visit 3
v4<-runif(NSubj, min=0, max=1) # Result visit 4

# Making the data frame
Y<-c(v2-v1,v3-v1,v4-v1) # Taking the differences to
baseline (visit 1)
id<-as.factor(rep(id, 3))
treat<-as.factor(rep(treat, 3))
visit<-as.factor(rep(2:4, each=NSubj))
df<-data.frame(id, treat, visit, Y)

# Analysis
df.aov <- aov(Y ~ treat*visit + Error(treat:id),
data=df)
summary(df.aov)
coef(df.aov)

How can I get the SE?

Hope somebody can help!

Karl

Example (Bortz, Statistik für Sozialwissenschaftler,
p.412, 3. Auflage), two-factorial

analysis of variance with repeated measurements:

Subject b1 b2 b3
al 1 56 52 48
al 2 57 54 46
al 3 55 51 51
al 4 58 51 50
al 5 54 53 46
a2 1 54 50 49
a2 2 53 49 48
a2 3 56 48 52
a2 4 52 52 50
a2 5 55 51 46
a3 1 57 49 50
a3 2 55 51 47
a3 3 56 48 51
a3 4 58 50 48
a3 5 58 46 52

The factors are A (a1,a2,a3) and B (b1,b2,b3); 5
subjects. Factor A is
kind of training (creativity) for the subjacts and
factor B is before,
during and after training.

The results of the example:

Source SS df sigma2 F
A 9.9 2 4.95 3.87
Subject in sample 15.4 12 1.28
between subjects 25.3 14
B 370.7 2 185.35 44.03 (**)
AxB 45.6 4 11.4 2.71
BxSubject 101.0 24 4.21
within subjects 517.3 30
Total 542.6 44

```