r:oneway_anova
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
r:oneway_anova [2018/04/09 08:18] – [Oneway ANOVA] hkimscil | r:oneway_anova [2022/04/28 10:26] (current) – [data] hkimscil | ||
---|---|---|---|
Line 1: | Line 1: | ||
====== Oneway ANOVA ====== | ====== Oneway ANOVA ====== | ||
+ | ===== data ===== | ||
+ | see https:// | ||
+ | |||
| (온도조건)x1 | | (온도조건)x1 | ||
| (온도조건)x2 | | (온도조건)x2 | ||
Line 60: | Line 63: | ||
29 | 29 | ||
30 | 30 | ||
+ | </ | ||
+ | |||
+ | < | ||
+ | |||
+ | ind values | ||
+ | 1 x1 51.46 | ||
+ | 2 x2 46.94 | ||
+ | 3 x3 46.35 | ||
+ | |||
+ | # or use, tapply function as shown the below | ||
+ | </ | ||
+ | |||
+ | 변인 이름과 levels 정리 | ||
+ | 변인이름 | ||
+ | * score <- 점수 (performance) | ||
+ | * temp <- 교실의 온도 | ||
+ | * 즉 교실의 온도에 따라서 점수가 다르게 나옴 | ||
+ | temp의 level 정리 | ||
+ | * x1 - low 낮은온도 | ||
+ | * x2 - mid 중간온도 | ||
+ | * x3 - hi 높은온도 | ||
+ | < | ||
+ | colnames(xs) <- c(" | ||
+ | xs | ||
+ | levels(xs$temp) <- c(" | ||
+ | xs | ||
+ | </ | ||
+ | |||
+ | < | ||
+ | > colnames(xs) <- c(" | ||
+ | > xs | ||
+ | score temp | ||
+ | 1 | ||
+ | 2 | ||
+ | 3 | ||
+ | 4 | ||
+ | 5 | ||
+ | 6 | ||
+ | 7 | ||
+ | 8 | ||
+ | 9 | ||
+ | 10 50.8 x1 | ||
+ | 11 47.5 x2 | ||
+ | 12 47.7 x2 | ||
+ | 13 46.6 x2 | ||
+ | 14 47.1 x2 | ||
+ | 15 47.2 x2 | ||
+ | 16 47.8 x2 | ||
+ | 17 45.2 x2 | ||
+ | 18 47.4 x2 | ||
+ | 19 45.0 x2 | ||
+ | 20 47.9 x2 | ||
+ | 21 46.0 x3 | ||
+ | 22 47.1 x3 | ||
+ | 23 45.6 x3 | ||
+ | 24 47.1 x3 | ||
+ | 25 47.2 x3 | ||
+ | 26 46.4 x3 | ||
+ | 27 45.9 x3 | ||
+ | 28 47.1 x3 | ||
+ | 29 44.9 x3 | ||
+ | 30 46.2 x3 | ||
+ | > str(xs) | ||
+ | ' | ||
+ | $ score: num 50.5 52.1 51.9 52.4 50.6 51.4 51.2 52.2 51.5 50.8 ... | ||
+ | $ temp : Factor w/ 3 levels " | ||
+ | > levels(xs$temp) <- c(" | ||
+ | > xs | ||
+ | score temp | ||
+ | 1 | ||
+ | 2 | ||
+ | 3 | ||
+ | 4 | ||
+ | 5 | ||
+ | 6 | ||
+ | 7 | ||
+ | 8 | ||
+ | 9 | ||
+ | 10 50.8 low | ||
+ | 11 47.5 mid | ||
+ | 12 47.7 mid | ||
+ | 13 46.6 mid | ||
+ | 14 47.1 mid | ||
+ | 15 47.2 mid | ||
+ | 16 47.8 mid | ||
+ | 17 45.2 mid | ||
+ | 18 47.4 mid | ||
+ | 19 45.0 mid | ||
+ | 20 47.9 mid | ||
+ | 21 46.0 hi | ||
+ | 22 47.1 hi | ||
+ | 23 45.6 hi | ||
+ | 24 47.1 hi | ||
+ | 25 47.2 hi | ||
+ | 26 46.4 hi | ||
+ | 27 45.9 hi | ||
+ | 28 47.1 hi | ||
+ | 29 44.9 hi | ||
+ | 30 46.2 hi | ||
+ | </ | ||
+ | ===== ANOVA by hand ===== | ||
+ | < | ||
+ | mean.by.group.xs <- tapply(xs$score, | ||
+ | var.by.group.xs <- tapply(xs$score, | ||
+ | n.by.group.xs <- tapply(xs$score, | ||
+ | df.by.group.xs <- n.xs-1 | ||
+ | |||
+ | mean.by.group.xs | ||
+ | var.by.group.xs | ||
+ | n.by.group.xs | ||
+ | df.by.group.xs | ||
+ | </ | ||
+ | |||
+ | < | ||
+ | > mean.by.group.xs <- tapply(xs$score, | ||
+ | > var.by.group.xs <- tapply(xs$score, | ||
+ | > n.by.group.xs <- tapply(xs$score, | ||
+ | > df.by.group.xs <- n.xs-1 | ||
+ | > ss.within <- sum(var.by.group.xs * df.by.group.xs) | ||
+ | > | ||
+ | > mean.by.group.xs | ||
+ | low | ||
+ | 51.46 46.94 46.35 | ||
+ | > var.by.group.xs | ||
+ | low | ||
+ | 0.4671111 1.0848889 0.6027778 | ||
+ | > n.by.group.xs | ||
+ | low mid hi | ||
+ | | ||
+ | > df.by.group.xs | ||
+ | low mid hi | ||
+ | 9 | ||
+ | > | ||
+ | </ | ||
+ | |||
+ | < | ||
+ | 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/ | ||
+ | ms.within <- ss.within/ | ||
+ | ms.total <- ss.total/ | ||
+ | |||
+ | ms.total | ||
+ | ms.between | ||
+ | ms.within | ||
+ | |||
+ | f.calculated <- ms.between/ | ||
+ | f.calculated | ||
+ | var(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 | ||
+ | [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/ | ||
+ | > ms.within <- ss.within/ | ||
+ | > ms.total <- ss.total/ | ||
+ | > | ||
+ | > ms.total | ||
+ | [1] 6.058448 | ||
+ | > ms.between | ||
+ | [1] 78.151 | ||
+ | > ms.within | ||
+ | [1] 0.7182593 | ||
+ | > | ||
+ | > f.calculated <- ms.between/ | ||
+ | > f.calculated | ||
+ | [1] 108.8061 | ||
+ | > var(xs$score) | ||
+ | [1] 6.058448 | ||
+ | > | ||
+ | </ | ||
+ | ===== ANOVA function (aov) ===== | ||
+ | |||
+ | < | ||
+ | x.mod <- aov(score~temp, | ||
+ | x.mod | ||
+ | summary(x.mod) | ||
+ | TukeyHSD(x.mod) | ||
+ | </ | ||
- | > x.mod <- aov(values~ind,data=xs) | + | < |
+ | > x.mod <- aov(score~temp, data=xs) | ||
> x.mod | > x.mod | ||
Call: | Call: | ||
- | | + | |
Terms: | Terms: | ||
- | ind Residuals | + | |
Sum of Squares | Sum of Squares | ||
Deg. of Freedom | Deg. of Freedom | ||
Line 75: | Line 307: | ||
> summary(x.mod) | > summary(x.mod) | ||
Df Sum Sq Mean Sq F value Pr(> | Df Sum Sq Mean Sq F value Pr(> | ||
- | ind | + | temp 2 156.30 |
Residuals | Residuals | ||
--- | --- | ||
Line 85: | Line 317: | ||
95% family-wise confidence level | 95% family-wise confidence level | ||
- | Fit: aov(formula = values | + | Fit: aov(formula = score ~ temp, data = xs) |
- | $ind | + | $temp |
- | | + | |
- | 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 |
- | x3-x2 -0.59 -1.529735 | + | hi-mid |
- | + | ||
- | </ | + | |
- | + | ||
- | < | + | |
- | | + | |
- | 51.46 46.94 46.35 </ | + | |
- | + | ||
- | + | ||
- | SS< | + | |
- | < | + | |
- | > 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 | + | |
- | </ | + | |
+ | > </ | ||
====== E.g. 1 ====== | ====== E.g. 1 ====== |
r/oneway_anova.1523231325.txt.gz · Last modified: 2018/04/09 08:18 by hkimscil