Re: [R] Doing a mixed-ANOVA after accounting for a covariate

2010-12-27 Thread Dror D Lev
Thank you David and Rich for your reply.
I will try to get more concrete with an artificial example that replicates
the structure of the data sets I'm analyzing.
It will include analysis suggestions based on what I was able to figure out
from the demo(MMC.apple).
At the end there is my current puzzlement, if the logic of the analyses I
suggest is correct:

## For creating an artifical data set:
# Trial-number: 31 trials per (pt-)block, repeated for 2 blocks per each of
10 human subjects
tn=rep(1:31, times=20)
# Presentation type: 2 blocks of 31 trials for each of 10 human subjects
pt.1=rep(c('C','D'), each=31)
pt=rep(pt.1, times=10)
# The 10 subjects can be divided into 2 groups (of 5 each), distinct in
presentation order
grp.1=rep('DC', times=62*5)
grp.2=rep('CD', times=62*5)
grp=c(grp.1,grp.2)
# Ten subjects, each going through 2 (pt-)blocks of 31 trials each
s=rep(1:10, each=62)
# For the sake of the example we can randomly create a random vector of
results:
r=runif(620)

dat=data.frame("subj"=factor(s),"group"=factor(grp),
"present.type"=factor(pt),
  "trial.num"=tn, "res.v"=r)

## The analysis dilema:
# I would like to look at the interaction between the two factors,
# alleviating the variance due to trial repeation within each block.
# That is, to have trial.num as a covariate.

# "simply" matching my case to the example in demo(MMC.apple), from the HH
package, will be:
m.simple=aov(res.v ~ present.type + group + trial.num, data=dat, x=TRUE)
# and the coding for trial.num in the model=matrix is an integer:
m.simple$x[1:10,]
# (which means it is treated as a continuous var?)

# But, actually, in my case, present.type is repeated for each subj and
# trial.num is repeated for each level of present.type.
# So I figured the model should be:
m.mixed=aov(res.v ~ present.type * group * trial.num +
  Error(subj/(present.type + (present.type/trial.num))),
  data=dat, x=TRUE)
# but now I cannot get the model matrix:
m.mixed$x[1:10,] # == NULL

# and when I compare a reduced model, not including the covariate-trial.num:
m.mixed.red=aov(res.v ~ present.type * group +
  Error(subj/present.type),
  data=dat, x=TRUE)
# I get the same results for the factors, which means that including the
covariate-var (trial.num)
# in this way does not affect the evaluation of the other factors.


# So, what I wonder now is why including trial.num does not affect the
results for the other factors,
# and is there a way to use such a covariate to remove any "masking" it can
induce on the effects
# of interest.

# (To explain a bit what I'm expecting:
# intuitively I understand that there is variance in the res.v that is due
to the covariate-var
# which is not related to, and so can not be explained by, the factors of
interest.
# So, efectively, it inflates the noise-variance that serve to evaluate the
significance
# of the variance-of-interest
# - I hope that by removing (some of) this covariance-var related
noise-variance
# I will be able to get effects evaluations that are more "purely" related
to the res.v
# - increasing the levels of significance where there is actual effect)

Thank you for any further help.
dror

--

On Sun, Dec 26, 2010 at 9:45 PM, RICHARD M. HEIBERGER wrote:

> Dror,
>
> Please look at the
> demo(MMC.apple)
> in the HH package
>
> install.packages("HH") ## if you don't already have it.
> library(HH)
> demo(MMC.apple)
>
> Please reply to the list if there are further queries.
>
> Rich
>
> On Sun, Dec 26, 2010 at 7:42 AM, Dror D Lev  wrote:
>
>> Dear r helpers,
>>
>> I would like to look at the interaction between two two-level factors, one
>> between and one within participants, after accounting for any variance due
>> to practice (31 trials in each of two blocks) in the task.
>> It seems to require treating practice as a covariate.
>>
>> All the examples I noticed for handling covariates (i.e. ANCOVA, including
>> the ones in Faraway's "Practical regression and anova using r") use lm(),
>> but this doesn't handle repeated-measures.
>>
>> I thought of a solution in the form of first running a regression on the
>> covariate:
>> > cov.accnt = lm (myMeasure ~ myCovMeasure, data=dat)
>>
>> and then run the aov() on the residuals:
>> > m.aov = aov (cov.accnt$residuals ~ withinVar*betweenVar +
>> Error(subj/withinVar, data=dat)
>>
>> Does it seem to be a valid answer to my problem?
>>
>> Is there an existing function that can do this (perhaps more
>> appropriately)?
>>
>> Thank you for any help,
>> dror
>>
>>[[alternative HTML version deleted]]
>>
>> __
>> R-help@r-project.org mailing list
>> https://stat.ethz.ch/mailman/listinfo/r-help
>> PLEASE do read the posting guide
>> http://www.R-project.org/posting-guide.html
>> and provide commented, minimal, self-contained, reproducible code.
>>
>
>

[[alternative HTML version deleted]]

__
R-he

Re: [R] Doing a mixed-ANOVA after accounting for a covariate

2010-12-26 Thread RICHARD M. HEIBERGER
Dror,

Please look at the
demo(MMC.apple)
in the HH package

install.packages("HH") ## if you don't already have it.
library(HH)
demo(MMC.apple)

Please reply to the list if there are further queries.

Rich

On Sun, Dec 26, 2010 at 7:42 AM, Dror D Lev  wrote:

> Dear r helpers,
>
> I would like to look at the interaction between two two-level factors, one
> between and one within participants, after accounting for any variance due
> to practice (31 trials in each of two blocks) in the task.
> It seems to require treating practice as a covariate.
>
> All the examples I noticed for handling covariates (i.e. ANCOVA, including
> the ones in Faraway's "Practical regression and anova using r") use lm(),
> but this doesn't handle repeated-measures.
>
> I thought of a solution in the form of first running a regression on the
> covariate:
> > cov.accnt = lm (myMeasure ~ myCovMeasure, data=dat)
>
> and then run the aov() on the residuals:
> > m.aov = aov (cov.accnt$residuals ~ withinVar*betweenVar +
> Error(subj/withinVar, data=dat)
>
> Does it seem to be a valid answer to my problem?
>
> Is there an existing function that can do this (perhaps more
> appropriately)?
>
> Thank you for any help,
> dror
>
>[[alternative HTML version deleted]]
>
> __
> R-help@r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide
> http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
>

[[alternative HTML version deleted]]

__
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.


Re: [R] Doing a mixed-ANOVA after accounting for a covariate

2010-12-26 Thread David Winsemius


On Dec 26, 2010, at 9:55 AM, Dror D Lev wrote:

Thank you David, for the reference to Dalgaard's paper in  
Rnews_2007-2.


Unfortunately I don't seem to have the mathematical-statistical  
sophistication required to adapt the example in Dalgaard's paper for  
my case.


I hope someone can suggest a less-mathematical direction for solution.


Here's what I would suggest if you want to stay more concrete. If you  
are not prepared to offer a minimal subset of your own data and also  
provide working or non-working code that uses it, then pick an  
available dataset that resembles it in structure and autocorrelation.  
One possibility would be the BodyWeight dataset in either the nlme or  
the MEMSS packages (although see below for my current level of  
uncertainty regarding your data).


require(nlme)
plot(BodyWeight)



Thanks again,
dror



On Sun, Dec 26, 2010 at 3:59 PM, David Winsemius > wrote:


On Dec 26, 2010, at 7:42 AM, Dror D Lev wrote:

Dear r helpers,

I would like to look at the interaction between two two-level  
factors, one
between and one within participants, after accounting for any  
variance due

to practice (31 trials in each of two blocks) in the task.
It seems to require treating practice as a covariate.


I had trouble figuring out exactly what you meant by 31 trials in two  
blocks. Was that 31 trials by each participant? Or was it two trials  
by each of 31 participants divided unequally into two groups?


--
David.



All the examples I noticed for handling covariates (i.e. ANCOVA,  
including
the ones in Faraway's "Practical regression and anova using r") use  
lm(),

but this doesn't handle repeated-measures.

See if Dalgaard's piece in R-News offers better guidance:

http://www.r-project.org/doc/Rnews/Rnews_2007-2.pdf




I thought of a solution in the form of first running a regression on  
the

covariate:
cov.accnt = lm (myMeasure ~ myCovMeasure, data=dat)

and then run the aov() on the residuals:
m.aov = aov (cov.accnt$residuals ~ withinVar*betweenVar +
Error(subj/withinVar, data=dat)

Does it seem to be a valid answer to my problem?

Is there an existing function that can do this (perhaps more  
appropriately)?


Thank you for any help,
dror
--

David Winsemius, MD
West Hartford, CT




David Winsemius, MD
West Hartford, CT

__
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.


Re: [R] Doing a mixed-ANOVA after accounting for a covariate

2010-12-26 Thread Dror D Lev
Thank you David, for the reference to Dalgaard's paper in Rnews_2007-2.

Unfortunately I don't seem to have the mathematical-statistical
sophistication required to adapt the example in Dalgaard's paper for my
case.

I hope someone can suggest a less-mathematical direction for solution.

Thanks again,
dror



On Sun, Dec 26, 2010 at 3:59 PM, David Winsemius wrote:

>
> On Dec 26, 2010, at 7:42 AM, Dror D Lev wrote:
>
>  Dear r helpers,
>>
>> I would like to look at the interaction between two two-level factors, one
>> between and one within participants, after accounting for any variance due
>> to practice (31 trials in each of two blocks) in the task.
>> It seems to require treating practice as a covariate.
>>
>> All the examples I noticed for handling covariates (i.e. ANCOVA, including
>> the ones in Faraway's "Practical regression and anova using r") use lm(),
>> but this doesn't handle repeated-measures.
>>
>
> See if Dalgaard's piece in R-News offers better guidance:
>
> http://www.r-project.org/doc/Rnews/Rnews_2007-2.pdf
>
>
>
>
>> I thought of a solution in the form of first running a regression on the
>> covariate:
>>
>>> cov.accnt = lm (myMeasure ~ myCovMeasure, data=dat)
>>>
>>
>> and then run the aov() on the residuals:
>>
>>> m.aov = aov (cov.accnt$residuals ~ withinVar*betweenVar +
>>>
>> Error(subj/withinVar, data=dat)
>>
>> Does it seem to be a valid answer to my problem?
>>
>> Is there an existing function that can do this (perhaps more
>> appropriately)?
>>
>> Thank you for any help,
>> dror
>>
> --
>
> David Winsemius, MD
> West Hartford, CT
>
>

[[alternative HTML version deleted]]

__
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.


Re: [R] Doing a mixed-ANOVA after accounting for a covariate

2010-12-26 Thread David Winsemius


On Dec 26, 2010, at 7:42 AM, Dror D Lev wrote:


Dear r helpers,

I would like to look at the interaction between two two-level  
factors, one
between and one within participants, after accounting for any  
variance due

to practice (31 trials in each of two blocks) in the task.
It seems to require treating practice as a covariate.

All the examples I noticed for handling covariates (i.e. ANCOVA,  
including
the ones in Faraway's "Practical regression and anova using r") use  
lm(),

but this doesn't handle repeated-measures.


See if Dalgaard's piece in R-News offers better guidance:

http://www.r-project.org/doc/Rnews/Rnews_2007-2.pdf




I thought of a solution in the form of first running a regression on  
the

covariate:

cov.accnt = lm (myMeasure ~ myCovMeasure, data=dat)


and then run the aov() on the residuals:

m.aov = aov (cov.accnt$residuals ~ withinVar*betweenVar +

Error(subj/withinVar, data=dat)

Does it seem to be a valid answer to my problem?

Is there an existing function that can do this (perhaps more  
appropriately)?


Thank you for any help,
dror

--

David Winsemius, MD
West Hartford, CT

__
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.


[R] Doing a mixed-ANOVA after accounting for a covariate

2010-12-26 Thread Dror D Lev
Dear r helpers,

I would like to look at the interaction between two two-level factors, one
between and one within participants, after accounting for any variance due
to practice (31 trials in each of two blocks) in the task.
It seems to require treating practice as a covariate.

All the examples I noticed for handling covariates (i.e. ANCOVA, including
the ones in Faraway's "Practical regression and anova using r") use lm(),
but this doesn't handle repeated-measures.

I thought of a solution in the form of first running a regression on the
covariate:
> cov.accnt = lm (myMeasure ~ myCovMeasure, data=dat)

and then run the aov() on the residuals:
> m.aov = aov (cov.accnt$residuals ~ withinVar*betweenVar +
Error(subj/withinVar, data=dat)

Does it seem to be a valid answer to my problem?

Is there an existing function that can do this (perhaps more appropriately)?

Thank you for any help,
dror

[[alternative HTML version deleted]]

__
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.