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 [2017/11/06 08:18] – [Ex 2] 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 | ||
| + | </ | ||
| - | > x.mod <- aov(values~ind,data=xs) | + | < |
| + | |||
| + | 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) ===== | ||
| + | |||
| + | <code> | ||
| + | x.mod <- aov(score~temp, data=xs) | ||
| + | x.mod | ||
| + | summary(x.mod) | ||
| + | TukeyHSD(x.mod) | ||
| + | </ | ||
| + | |||
| + | < | ||
| + | > 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 |
| - | + | ||
| - | </ | + | |
| - | + | ||
| - | 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 ====== | ||
| Line 262: | Line 479: | ||
| </ | </ | ||
| - | < | + | < |
| + | |||
| + | <WRAP box help>In class exercise | ||
| + | 위의 데이터를 이용하여 아래를 수행하시오. | ||
| 1. F test 가설을 세우시오 | 1. F test 가설을 세우시오 | ||
| 2. 각 그룹의 평균과 표준편차 그리고 분산값을 구하시오. | 2. 각 그룹의 평균과 표준편차 그리고 분산값을 구하시오. | ||
| 3. F test를 하시오 | 3. F test를 하시오 | ||
| 4. 그룹간 비교를 하시오 (post hoc) | 4. 그룹간 비교를 하시오 (post hoc) | ||
| + | 5. 분석결과를 정리하여 설명하시오. | ||
| + | </ | ||
r/oneway_anova.1509925732.txt.gz · Last modified: by hkimscil
