1
$\begingroup$

I have the following type of dataset:

        |          |             |            variable_r         |
subject |  gender  |  age_group  |     Cond_1    |     Cond_2    |
--------|----------|-------------|---------------|---------------|
   1    |    m     |      1      | r (A) | r (B) | r (A) | r (B) |
   2    |    f     |      2      | r (A) | r (B) | r (A) | r (B) |
...
   8    |    f     |      2      | r (A) | r (B) | r (A) | r (B) |

So two genders, two age groups, two conditions (Cond_1 and Cond_2) under which the experiment was done and two ways the subjects were prompted (A and B). r is the numerical result from each experiment. So two within-subject variables (prompt A/B and Cond 1/2) and two between-subject variables (age group 1/2 and gender m/f) (right?). I should calculate the statistically significant effects of each variable and their interactions.

How can I do this in R (or Python)? My googling found a lot of information about different types of ANOVA analyses, but I wasn't able to apply that information to my case.

Thanks!

e: the subjects were tested 4 times

$\endgroup$
4
  • 1
    $\begingroup$ It is a bit unclear what you mean with 'prompted'. Do you mean subjects were tested four times, twice in each condition? I suggest mixed modelling in R would be best, e.g. lmer(response~genderagecondition,random=~1|subject/condition,data) and contrasts to investigate your specific questions of interest. $\endgroup$
    – crazjo
    Commented Aug 14, 2014 at 7:48
  • $\begingroup$ A page of anova specification in R that might be helpful. Your case is probably somewhere in the second half. $\endgroup$ Commented Aug 14, 2014 at 8:41
  • $\begingroup$ @JolJols I'm sorry I was unclear. Yes, the subjects were tested four times. Thank you for the suggestion, I will look into it. $\endgroup$
    – hsintone
    Commented Aug 14, 2014 at 8:43
  • $\begingroup$ @conjugateprior This looks helpful too, I will read through it. Thank you. $\endgroup$
    – hsintone
    Commented Aug 14, 2014 at 8:47

1 Answer 1

1
$\begingroup$

yes, this is entirely possible in R. Not only that, there are many ways of doing it. One way that I would suggest is with a mixed linear model from the package 'nlme'

You would need to structure your data (dt) so that there were four observations for each participant. Something like this:

Subject Gender  Age Condition   DV
1       1       2   1a          X
1       1       2   1b          X
1       1       2   2a          X
1       1       2   2b          X
2       1       1   1a          X
2       1       1   1b          X
2       1       1   2a          X
2       1       1   2b          X
3       2       2   1a          X
3       2       2   1b          X
3       2       2   2a          X
3       2       2   2b          X

There should be an option within the package to automatically convert your dataset. After that, use something like the following code:

library(nlme)
lme(DV ~ Gender + Age + Condition, data = dt, random = ~ 1 | Subject)

Hope this helps point you in the right direction!

$\endgroup$
2
  • $\begingroup$ Should the random argument be "random = ~ 1 | subject"? I got an "object 'subject' not found" error with just "random = 1 | subject". Or could the problem be somewhere else? $\endgroup$
    – hsintone
    Commented Aug 15, 2014 at 7:23
  • $\begingroup$ My apologies for the typo; you are correct. I was missing a "~". That part should read "random = ~ 1 | subject". $\endgroup$
    – Xander
    Commented Aug 15, 2014 at 17:34

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.