Skip to content

Getting Sphericity Tests for Within Subject Repeated Measure Anova (using "car" package)

12 messages · Sergios (Sergey) Charntikov, Michael Lawrence, John Fox +1 more

#
Have you tried ezANOVA from the ez pacakge? It attempts to provide a
simple user interface to car's ANOVA (and when that fails, aov).

On Mon, Nov 9, 2009 at 1:44 PM, Sergios (Sergey) Charntikov
<sergioschr at gmail.com> wrote:

  
    
#
No luck as in...? What error did you encounter?

In your example data set, you only have 2 levels of each within-Ss
factor, in which case you shouldn't expect to obtain tests of
sphericity; as far as I understand it, sphericity necessarily holds
when for repeated measures with only 2 levels and tests are really
only possible for repeated measures with 3 or more levels.

I think it's analogous to how you don't need to test homogeneity of
variance when performing a paired t-test; the test ends up
representing the pairs as single distribution of difference scores
with a single variance.

Mike

On Mon, Nov 9, 2009 at 5:30 PM, Sergios (Sergey) Charntikov
<sergioschr at gmail.com> wrote:

  
    
#
Hi Mike,

I tried to run my data in SPSS and it works fine without any problems,
plug in my levels, plug in my covariate (since it is all within) and
get my Mauchly Tests.

I tried to rearrange the data so it looks like this

subj/treatment/day1/day2/day3

subject??? treatment??? day1??? day2??? day3
1??? 1??? 8??? 8??? 8
1??? 2??? 5??? 7??? 5
2??? 1??? 7??? 4??? 4
2??? 2??? 4??? 5??? 7
3??? 1??? 8??? 6??? 4
3??? 2??? 5??? 2??? 4
4??? 1??? 2??? 9??? 4
4??? 2??? 1??? 9??? 1
5??? 1??? 4??? 8??? 1
5??? 2??? 7??? 8??? 2
6??? 1??? 4??? 7??? 2
6??? 2??? 4??? 5??? 2


When I try mlmfit <- lm(Dataset~1), I get "invalid type (list) for
variable 'Dataset"

When I try

mod <- lm(cbind(day1, day2, day3) ~ Treatment, data=Dataset)

idata<- data.frame(factor(rep(c(Dataset$day1, Dataset$day2, Dataset$day3))),
ordered(Dataset$Treatment))

Anova(mod, idata=idata, idesign=~Dataset$Treatment)

I get: Terms in the intra-subject model matrix are not orthogonal.

When I try is.matrix(Dataset) - I get no.

My original mock Dataset (attached in txt) is below.  Maybe I am not
coding it right? I would hate to recode all my data for SPSS, since at
the end I would need to show that Sphericity was not violated.

Subj	Trtmt	Sessn	Response

1	N	1	5

1	D	1	6

1	N	2	4

1	D	2	7

2	N	1	8

2	D	1	9

2	N	2	2

2	D	2	1

3	N	1	4

3	D	1	5

3	N	2	6

3	D	2	2

4	N	1	5

4	D	1	6

4	N	2	4

4	D	2	7

5	N	1	8

5	D	1	9

5	N	2	2

5	D	2	1

6	N	1	4

6	D	1	5

6	N	2	6

6	D	2	2




Sincerely,

Sergios Charntikov (Sergey), MA

Behavioral Neuropharmacology Lab
Department of Psychology
University of Nebraska-Lincoln
Lincoln, NE 68588-0308 ?USA
On Mon, Nov 9, 2009 at 5:29 PM, Mike Lawrence <Mike.Lawrence at dal.ca> wrote:
-------------- next part --------------
Subj	Trtmt	Sessn	Response
1	N	1	5
1	D	1	6
1	N	2	4
1	D	2	7
2	N	1	8
2	D	1	9
2	N	2	2
2	D	2	1
3	N	1	4
3	D	1	5
3	N	2	6
3	D	2	2
4	N	1	5
4	D	1	6
4	N	2	4
4	D	2	7
5	N	1	8
5	D	1	9
5	N	2	2
5	D	2	1
6	N	1	4
6	D	1	5
6	N	2	6
6	D	2	2
#
Dear Sergios,

Why don't you try what I suggested originally? Adapted to this data set,

mod <- lm(cbind(day1, day2, day3) ~ Treatment, data=Dataset)
idata <- data.frame(Day=factor(1:3))
summary(Anova(mod, idata=idata, idesign=~Day))

Peter Dalgaard also pointed toward an article that describes how to do the
same thing with anova().

Regards,
 John
On
Measure
plug
variable
Dataset$day3))),
coding
wrote:
#
Thank you very much.  Finally got it to work.  However, I had to recode it from:
columns: subject/treatment/DV (where all my response data was in one
DV column) to columns: subject/treatment/day1/day2/day3/ (where my
response data is now in three different columns).

Is there a way to do that without hand recoding (cutting and pasting
in spreadsheet) by hand? Thank you for your help.  Glad it works as
is.


Sincerely,

Sergios Charntikov (Sergey), MA

Behavioral Neuropharmacology Lab
Department of Psychology
University of Nebraska-Lincoln
Lincoln, NE 68588-0308  USA
On Mon, Nov 9, 2009 at 7:12 PM, John Fox <jfox at mcmaster.ca> wrote:
#
Yes, reshaping data is straightforward in R. No need to copy/paste in
a spreadsheet.
See ?reshape and/or the melt/cast functions in the reshape package.

-Ista

On Mon, Nov 9, 2009 at 9:20 PM, Sergios (Sergey) Charntikov
<sergioschr at gmail.com> wrote:

  
    
#
Thank you very much for all your help.  This helped a lot. Very
constructive input.

Sincerely,

Sergios Charntikov (Sergey), MA

Behavioral Neuropharmacology Lab
Department of Psychology
University of Nebraska-Lincoln
Lincoln, NE 68588-0308  USA
On Mon, Nov 9, 2009 at 9:53 PM, Ista Zahn <istazahn at gmail.com> wrote:
#
Check out the reshape package for transforming data from long to wide
and vice versa.

Yet I still don't know what problem you've encountered with ezANOVA.
Using the data you just sent, where Day now has 3 levels, I reformat
back to the presumably original long format and find that ezANOVA
returns the same sphericity tests as John's solution (which is
expected because ezANOVA is a wrapper to Anova):

library(ez)
a = read.table( 'Sergios_wide_data.txt' , header=T )
b = melt.data.frame( data=a , id.vars=c('subject','treatment') ,
variable_name='day' )
ezANOVA( data=b , dv=.(value) , sid=.(subject) , within=.(treatment,day) )



On Mon, Nov 9, 2009 at 10:20 PM, Sergios (Sergey) Charntikov
<sergioschr at gmail.com> wrote:

  
    
#
Oops, I see now that despite repeated subject names, treatment is a
between-Ss variable, so you need to use this to get the equivalent of
Anova:

library(ez)
a = read.table( 'Sergios_wide_data.txt' , header=T )
b = melt.data.frame( data=a , id.vars=c('subject','treatment') ,
variable_name='day' )
b$subject=paste(b$subject,b$treatment) #create unique sids
ezANOVA( data=b , dv=.(value) , sid=.(subject) , within=.(day) ,
between=.(treatment) )
On Tue, Nov 10, 2009 at 6:47 AM, Mike Lawrence <Mike.Lawrence at dal.ca> wrote:

  
    
#
Thank you.  I think that this is what I was looking for.  I am getting
the hang of it with my data.  Thank you all.


Sincerely,

Sergios Charntikov (Sergey), MA

Behavioral Neuropharmacology Lab
Department of Psychology
University of Nebraska-Lincoln
Lincoln, NE 68588-0308  USA
On Tue, Nov 10, 2009 at 6:14 AM, Mike Lawrence <Mike.Lawrence at dal.ca> wrote: