# ONE FACTOR INDEPENDENT MEASURES ANOVA (See Hinton Chapter 11) hinton.anagram.altformat = data.frame(time=c(15,20,14,13,18,16,13,12,18,11,21,25,29,18,26,22,26,24,28,21,28,30,32,28,26,30,25,36,20,25),condition=c("first","first","first","first","first","first","first","first","first","first","last","last","last","last","last","last","last","last","last","last","none","none","none","none","none","none","none","none","none","none")) bwplot(time ~ condition,data=hinton.anagram.altformat) hinton.anagram = data.frame( first.letter=c(15,20,14,13,18,16,13,12,18,11), last.letter=c(21,25,29,18,26,22,26,24,28,21), no.letter= c(28,30,32,28,26,30,25,36,20,25)) numberofdatapoints = 30 numberofconditions = 3 numberofdatapointspercondition = 10 # We need to calculate the total sum of squares of the data SS_total = sum((hinton.anagram - (sum(hinton.anagram)/numberofdatapoints))^2) # We need to calculate the between conditions sum of squares SS_between = sum((mean(hinton.anagram) - (sum(hinton.anagram)/numberofdatapoints))^2*numberofdatapointspercondition) SS_err = SS_total - SS_between df_total = 30 - 1 df_between = 3 - 1 df_err = df_total - df_between MS_between= SS_between/df_between MS_error = SS_err/df_err F = MS_between/MS_error 1 - pf(F,df_between,df_err) anagram.lm = lm(time ~ condition,data=hinton.anagram.altformat) anova(anagram.lm) # Does this look familiar? anagram_SSres = sum(residuals(anagram.lm)^2) SStot = sum((hinton.anagram.altformat$variable - mean(hinton.anagram.altformat$variable))^2) F = (SStot - anagram_SSres / 1) / (anagram_SSres/8) 1-pf(F,1,8) anagram.aov = aov(time ~ condition,data=hinton.anagram.altformat) summary(anagram.aov) # Anova tells you that the factor explains more variance that expected by chance. (See Hinton Chapter 12) pairwise.t.test(hinton.anagram.altformat$time,hinton.anagram.altformat$condition,p.adj="bonferroni") TukeyHSD(anagram.aov) # ONE FACTOR REPEATED MEASURES ANOVA (See Hinton Chapter 13) hinton.keyboard.altformat = data.frame(errors=c(5,1,0,2,6,2,4,4,10,3,5,6),kb=c("one","one","one","one","two","two","two","two","three","three","three","three"),part=c("a","b","c","d","a","b","c","d","a","b","c","d")) bwplot(errors ~ as.factor(kb),data=hinton.keyboard.altformat) bwplot(errors ~ as.factor(kb)|part,data=hinton.keyboard.altformat) hinton.keyboard = data.frame( kb1=c(5,1,0,2),kb2=c(6,2,4,4),kb3=c(10,3,5,6) ) numberofdatapoints = 12 numberofconditions = 3 numberofparticipants = 4 df_total = numberofdatapoints - 1 df_between = numberofconditions - 1 df_err = (numberofparticipants-1)*(numberofconditions-1) SS_total = sum((hinton.keyboard - (sum(hinton.keyboard)/numberofdatapoints))^2) SS_between_conditions = sum((mean(hinton.keyboard) - (sum(hinton.keyboard)/numberofdatapoints))^2*numberofparticipants) SS_within_conditions = SS_total - SS_between_conditions SS_between_subjs = sum((rowMeans(hinton.keyboard) - mean(mean(hinton.keyboard)))^2)*numberofconditions SS_error = SS_within_conditions - SS_between_subjs MS_between_conditions= SS_between_conditions/df_between MS_error = SS_error/df_err F = MS_between_conditions/MS_error 1 - pf(F,df_between,df_err) kb.aov = aov(errors ~ kb + Error(part/kb),data=hinton.keyboard.altformat) #And to relate this back to regression: The following command gives us the same thing! anova(lm(errors ~ part,data=hinton.keyboard.altformat),lm(errors ~ part + kb,data=hinton.keyboard.altformat)) pairwise.t.test(hinton.keyboard.altformat$errors,hinton.keyboard.altformat$kb,paired=T,p.adj="bonferroni") |