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
r:oneway_anova [2020/10/12 16:10] hkimscilr:oneway_anova [2022/04/28 10:26] (current) – [data] hkimscil
Line 1: Line 1:
 ====== Oneway ANOVA ====== ====== Oneway ANOVA ======
 +===== data =====
 +see https://github.com/hkimscil/ms/blob/main/anova.R
 +
 | (온도조건)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 163:
 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 197: Line 200:
 <code> <code>
 mean.xs <- mean(xs$score) 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) * (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.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.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>
 +
 +
 <code> <code>
-> x.mod <- aov(values~ind,data=xs)+> 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> 
 +> 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 217: Line 307:
 > 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 227: Line 317:
     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.1602486654.txt.gz · Last modified: 2020/10/12 16:10 by hkimscil

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki