User Tools

Site Tools


r:oneway_anova

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Last revisionBoth sides next revision
r:oneway_anova [2020/10/12 15:53] hkimscilr:oneway_anova [2020/10/12 16:36] hkimscil
Line 1: Line 1:
 ====== Oneway ANOVA ====== ====== Oneway ANOVA ======
 +===== data =====
 | (온도조건)x1  | 50.5  | 52.1  | 51.9  | 52.4  | 50.6  | 51.4  | 51.2  | 52.2  | 51.5  | 50.8  | | (온도조건)x1  | 50.5  | 52.1  | 51.9  | 52.4  | 50.6  | 51.4  | 51.2  | 52.2  | 51.5  | 50.8  |
 | (온도조건)x2  | 47.5  | 47.7  | 46.6  | 47.1  | 47.2  | 47.8  | 45.2  | 47.4  | 45.0  | 47.9  | | (온도조건)x2  | 47.5  | 47.7  | 46.6  | 47.1  | 47.2  | 47.8  | 45.2  | 47.4  | 45.0  | 47.9  |
Line 160: Line 161:
 30  46.2   hi 30  46.2   hi
 </code> </code>
 +===== ANOVA by hand =====
 <code> <code>
 mean.by.group.xs <- tapply(xs$score, xs$temp, mean) mean.by.group.xs <- tapply(xs$score, xs$temp, mean)
Line 178: Line 179:
 > n.by.group.xs <- tapply(xs$score, xs$temp, length) > n.by.group.xs <- tapply(xs$score, xs$temp, length)
 > df.by.group.xs <- n.xs-1 > df.by.group.xs <- n.xs-1
 +> ss.within <- sum(var.by.group.xs * df.by.group.xs)
  
 > mean.by.group.xs > mean.by.group.xs
Line 194: Line 196:
 </code> </code>
  
 +<code>
 +mean.xs <- mean(xs$score)
 +n.total <- length(xs$score)
 +df.total <- n.total-1
 +n.group.xs <- 3
 +df.between <- n.group.xs -1
 +df.within <- sum(df.by.group.xs)
 +n.total
 +df.total
 +df.between
 +df.within
 +
 +ss.total <- var(xs$score) * (length(xs$score)-1)
 +ss.total <- var(xs$score) * df.total
 +ss.between <- sum(n.by.group.xs * (mean.by.group.xs - mean.xs)^2)
 +ss.within <- sum(var.by.group.xs * df.by.group.xs)
 +ss.total
 +ss.between
 +ss.within
 +ss.total 
 +ss.between + ss.within
 +
 +ms.between <- ss.between/df.between
 +ms.within <- ss.within/df.within
 +ms.total <- ss.total/df.total
 +
 +ms.total
 +ms.between
 +ms.within
 +
 +f.calculated <- ms.between/ms.within
 +f.calculated
 +var(xs$score)
 +</code>
 +
 +
 +<code>
 +> mean.xs <- mean(xs$score)
 +> n.total <- length(xs$score)
 +> df.total <- n.total-1
 +> n.group.xs <- 3
 +> df.between <- n.group.xs -1
 +> df.within <- sum(df.by.group.xs)
 +> n.total
 +[1] 30
 +> df.total
 +[1] 29
 +> df.between
 +[1] 2
 +> df.within
 +[1] 27
 +
 +> ss.total <- var(xs$score) * (length(xs$score)-1)
 +> ss.total <- var(xs$score) * df.total
 +> ss.between <- sum(n.by.group.xs * (mean.by.group.xs - mean.xs)^2)
 +> ss.within <- sum(var.by.group.xs * df.by.group.xs)
 +> ss.total
 +[1] 175.695
 +> ss.between
 +[1] 156.302
 +> ss.within
 +[1] 19.393
 +> ss.total 
 +[1] 175.695
 +> ss.between + ss.within
 +[1] 175.695
 +
 +> ms.between <- ss.between/df.between
 +> ms.within <- ss.within/df.within
 +> ms.total <- ss.total/df.total
 +
 +> ms.total
 +[1] 6.058448
 +> ms.between
 +[1] 78.151
 +> ms.within
 +[1] 0.7182593
 +
 +> f.calculated <- ms.between/ms.within
 +> f.calculated
 +[1] 108.8061
 +> var(xs$score)
 +[1] 6.058448
 +
 +</code>
 +===== ANOVA function (aov) =====
 +
 +<code>
 +x.mod <- aov(score~temp, data=xs)
 +x.mod
 +summary(x.mod)
 +TukeyHSD(x.mod)
 +</code>
  
 <code> <code>
-> x.mod <- aov(values~ind,data=xs)+> x.mod <- aov(score~temp, data=xs)
 > x.mod > x.mod
 Call: Call:
-   aov(formula = values ind, data = xs)+   aov(formula = score temp, data = xs)
  
 Terms: Terms:
-                    ind Residuals+                   temp Residuals
 Sum of Squares  156.302    19.393 Sum of Squares  156.302    19.393
 Deg. of Freedom              27 Deg. of Freedom              27
Line 210: Line 305:
 > summary(x.mod) > summary(x.mod)
             Df Sum Sq Mean Sq F value  Pr(>F)                 Df Sum Sq Mean Sq F value  Pr(>F)    
-ind          2 156.30   78.15   108.8 1.2e-13 ***+temp         2 156.30   78.15   108.8 1.2e-13 ***
 Residuals   27  19.39    0.72                     Residuals   27  19.39    0.72                    
 --- ---
Line 220: Line 315:
     95% family-wise confidence level     95% family-wise confidence level
  
-Fit: aov(formula = values ind, data = xs)+Fit: aov(formula = score temp, data = xs)
  
-$ind +$temp 
-       diff       lwr        upr     p adj +         diff       lwr        upr     p adj 
-x2-x1 -4.52 -5.459735 -3.5802652 0.0000000 +mid-low -4.52 -5.459735 -3.5802652 0.0000000 
-x3-x1 -5.11 -6.049735 -4.1702652 0.0000000 +hi-low  -5.11 -6.049735 -4.1702652 0.0000000 
-x3-x2 -0.59 -1.529735  0.3497348 0.2813795 +hi-mid  -0.59 -1.529735  0.3497348 0.2813795
- +
-</code> +
- +
-<code>> tapply(xs$values, xs$ind, mean) +
-   x1    x2    x3  +
-51.46 46.94 46.35 </code> +
- +
- +
-SS<sub>between</sub> +
-<code>> meanxs <- mean(xs$values) +
-> mx1 <- mean(x1) +
-> mx2 <- mean(x2) +
-> mx3 <- mean(x3) +
- +
-> x2ss <- 10*((meanxs - mx2)^2) +
-> x3ss <- 10*((meanxs - mx3)^2) +
-> x1ss <- 10*((meanxs - mx1)^2) +
-> xss <- x1ss+x2ss+x3ss +
-> xss +
-[1] 156.302 +
-</code>+
  
 +> </code>
  
 ====== E.g. 1 ====== ====== E.g. 1 ======
r/oneway_anova.txt · Last modified: 2022/04/28 10:26 by hkimscil

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki