Code for anova table
obs<-c(24,28,37,30,31,28,37,44,31,35,36,39,42,47,52,38,44,50)
m<-matrix(data = obs,ncol = 6,byrow = T)
m
## [,1] [,2] [,3] [,4] [,5] [,6]
## [1,] 24 28 37 30 31 28
## [2,] 37 44 31 35 36 39
## [3,] 42 47 52 38 44 50
treatment_total<-rowSums(m)
treatment_total
## [1] 178 222 273
colSums(m)
## [1] 103 119 120 103 111 117
grand_total<-sum(m)
grand_total
## [1] 673
sst<-sum(m^2)-(sum(m))^2/length(m)
sst
## [1] 1076.278
sstrea<-sum(rowSums(m)^2)/ncol(m)-(sum(m))^2/length(m)
sstrea
## [1] 753.4444
sse<-(sst-sstrea)
sse
## [1] 322.8333
mmtrea<-sstrea/(nrow(m)-1)
mmtrea
## [1] 376.7222
mme<-sse/(length(m)-nrow(m))
mme
## [1] 21.52222
fratio<-mmtrea/mme
fratio
## [1] 17.50387
fvalue<-qf(p = 0.05,df1 = nrow(m)-1,df2 = length(m)-nrow(m),lower.tail = F)
fvalue
## [1] 3.68232
Alternative code for anova table
obs<-c(24,28,37,30,31,28,37,44,31,35,36,39,42,47,52,38,44,50)
treat<-rep(c("a","b","c"),each=6)
treat
## [1] "a" "a" "a" "a" "a" "a" "b" "b" "b" "b" "b" "b" "c" "c" "c" "c" "c" "c"
data<-data.frame(obs,treat )
aov(obs~treat,data = data)
## Call:
## aov(formula = obs ~ treat, data = data)
##
## Terms:
## treat Residuals
## Sum of Squares 753.4444 322.8333
## Deg. of Freedom 2 15
##
## Residual standard error: 4.639205
## Estimated effects may be unbalanced
summary(aov(obs~treat,data = data))
## Df Sum Sq Mean Sq F value Pr(>F)
## treat 2 753.4 376.7 17.5 0.00012 ***
## Residuals 15 322.8 21.5
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
obs~treat
## obs ~ treat