factorial_anova
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
factorial_anova [2020/06/02 13:59] – [예] hkimscil | factorial_anova [2024/09/24 08:33] (current) – [예 1] hkimscil | ||
---|---|---|---|
Line 290: | Line 290: | ||
< | < | ||
- | de <- read.csv(" | + | de <- read.csv(" |
de | de | ||
Line 309: | Line 309: | ||
</ | </ | ||
- | {{:pasted:20200529-165842.png}} | + | < |
+ | > de <- read.csv(" | ||
+ | > de | ||
+ | type w.temp cleanness | ||
+ | 1 | ||
+ | 2 | ||
+ | 3 | ||
+ | 4 | ||
+ | 5 | ||
+ | 6 | ||
+ | 7 | ||
+ | 8 | ||
+ | 9 | ||
+ | 10 1 2 9 | ||
+ | 11 1 2 8 | ||
+ | 12 1 2 10 | ||
+ | 13 2 2 13 | ||
+ | 14 2 2 15 | ||
+ | 15 2 2 12 | ||
+ | 16 2 2 12 | ||
+ | 17 1 3 10 | ||
+ | 18 1 3 12 | ||
+ | 19 1 3 11 | ||
+ | 20 1 3 9 | ||
+ | 21 2 3 12 | ||
+ | 22 2 3 13 | ||
+ | 23 2 3 10 | ||
+ | 24 2 3 13 | ||
+ | > de$type <- factor(de$type, | ||
+ | > de$w.temp <- factor(de$w.temp, | ||
+ | > de | ||
+ | type w.temp cleanness | ||
+ | 1 super | ||
+ | 2 super | ||
+ | 3 super | ||
+ | 4 super | ||
+ | 5 | ||
+ | 6 | ||
+ | 7 | ||
+ | 8 | ||
+ | 9 super | ||
+ | 10 super | ||
+ | 11 super | ||
+ | 12 super | ||
+ | 13 best | ||
+ | 14 best | ||
+ | 15 best | ||
+ | 16 best | ||
+ | 17 super hot 10 | ||
+ | 18 super hot 12 | ||
+ | 19 super hot 11 | ||
+ | 20 super hot 9 | ||
+ | 21 best hot 12 | ||
+ | 22 best hot 13 | ||
+ | 23 best hot 10 | ||
+ | 24 best hot 13 | ||
+ | > de.anova <- aov(cleanness ~ type * w.temp, data=de) | ||
+ | > summary(de.anova) | ||
+ | Df Sum Sq Mean Sq F value | ||
+ | type | ||
+ | w.temp | ||
+ | type: | ||
+ | Residuals | ||
+ | --- | ||
+ | Signif. codes: | ||
+ | > | ||
+ | > with(de, interaction.plot(x.factor=type, | ||
+ | + | ||
+ | + | ||
+ | + | ||
+ | + | ||
+ | > | ||
+ | > | ||
+ | </ | ||
+ | {{:pasted:20240429-083635.png}} | ||
+ | |||
+ | 만약에 손으로 계산했다면 R에서 | ||
+ | < | ||
+ | de <- read.csv(" | ||
+ | de | ||
+ | |||
+ | de$type <- factor(de$type, | ||
+ | de$w.temp <- factor(de$w.temp, | ||
+ | de | ||
+ | |||
+ | de.typenova <- aov(cleanness ~ type * w.temp, data=de) | ||
+ | summary(de.typenova) | ||
+ | |||
+ | with(de, interaction.plot(x.factor=type, | ||
+ | trace.factor=w.temp, | ||
+ | fun=mean, type=" | ||
+ | ylab=" | ||
+ | pch=c(1, | ||
+ | |||
+ | attach(de) | ||
+ | table(type, w.temp) | ||
+ | n.sub <- length(cleanness) | ||
+ | n.type.group <- 2 | ||
+ | n.w.temp.group <- 3 | ||
+ | |||
+ | tapply(cleanness, | ||
+ | df.within.each <- tapply(cleanness, | ||
+ | n.within.each <- df.within.each + 1 | ||
+ | df.within <- sum(df.within.each) # df within | ||
+ | |||
+ | var.within <- tapply(cleanness, | ||
+ | ss.within.each <- tapply(cleanness, | ||
+ | ss.within.each | ||
+ | ss.within <- sum(ss.within.each) # ss.within | ||
+ | ss.within | ||
+ | |||
+ | |||
+ | interaction.plot(type, | ||
+ | |||
+ | mean.type <- tapply(cleanness, | ||
+ | mean.w.temp <- tapply(cleanness, | ||
+ | mean.type | ||
+ | mean.w.temp | ||
+ | |||
+ | var.type <- tapply(cleanness, | ||
+ | var.w.temp <- tapply(cleanness, | ||
+ | |||
+ | |||
+ | mean.tot <- mean(cleanness) | ||
+ | var.tot <- var(cleanness) | ||
+ | n.sub <- length(cleanness) | ||
+ | df.tot <- n.sub - 1 | ||
+ | ss.tot <- var.tot * df.tot | ||
+ | |||
+ | ## between | ||
+ | mean.each <- tapply(cleanness, | ||
+ | mean.each | ||
+ | mean.tot <- mean(cleanness) | ||
+ | mean.tot | ||
+ | n.each <- tapply(cleanness, | ||
+ | n.each | ||
+ | n.type.each <- tapply(cleanness, | ||
+ | n.w.temp.each <- tapply(cleanness, | ||
+ | |||
+ | ss.w.bet <- sum(n.each*(mean.each-mean.tot)^2) | ||
+ | ss.w.bet | ||
+ | |||
+ | ss.tot | ||
+ | ss.within | ||
+ | ss.w.bet | ||
+ | ss.w.bet + ss.within | ||
+ | |||
+ | ss.type <- sum(n.type.each * ((mean.tot - mean.type)^2)) | ||
+ | ss.w.temp <- sum(n.w.temp.each * ((mean.tot - mean.w.temp)^2)) | ||
+ | ss.type | ||
+ | ss.w.temp | ||
+ | ss.type.w.temp <- ss.w.bet - (ss.type + ss.w.temp) | ||
+ | ss.type.w.temp | ||
+ | |||
+ | ss.tot | ||
+ | ss.w.bet | ||
+ | ss.within | ||
+ | ss.type | ||
+ | ss.w.temp | ||
+ | ss.type.w.temp | ||
+ | |||
+ | df.tot <- n.sub - 1 | ||
+ | df.w.bet <- (n.type.group * n.w.temp.group) - 1 | ||
+ | df.type <- n.type.group - 1 | ||
+ | df.w.temp <- n.w.temp.group - 1 | ||
+ | df.type.w.temp <- df.w.bet - (df.type + df.w.temp) | ||
+ | df.within <- sum(df.within.each) | ||
+ | |||
+ | df.tot | ||
+ | df.w.bet | ||
+ | df.type | ||
+ | df.w.temp | ||
+ | df.type.w.temp | ||
+ | df.within | ||
+ | |||
+ | ms.type <- ss.type / df.type | ||
+ | ms.w.temp <- ss.w.temp / df.w.temp | ||
+ | ms.type.w.temp <- ss.type.w.temp / df.type.w.temp | ||
+ | ms.within <- ss.within / df.within | ||
+ | |||
+ | ms.type | ||
+ | ms.w.temp | ||
+ | ms.type.w.temp | ||
+ | ms.within | ||
+ | |||
+ | |||
+ | f.type <- ms.type / ms.within | ||
+ | f.w.temp <- ms.w.temp / ms.within | ||
+ | f.type.w.temp <- ms.type.w.temp / ms.within | ||
+ | |||
+ | alpha <- .05 | ||
+ | # confidence interval | ||
+ | ci <- 1 - alpha | ||
+ | |||
+ | f.type | ||
+ | # 봐야할 F분포표에서의 F-value | ||
+ | # qt 처럼 qf 사용 | ||
+ | # qf(alpha, df.w.between, | ||
+ | qf(ci, df.type, df.within) | ||
+ | # 혹은 | ||
+ | # qf(alpha, df.type, df.within, lower.tail = F) | ||
+ | # 도 마찬가지 | ||
+ | pf(f.type, df.type, df.within, lower.tail = F) | ||
+ | |||
+ | f.w.temp | ||
+ | qf(ci, df.w.temp, df.within) | ||
+ | pf(f.w.temp, | ||
+ | |||
+ | f.type.w.temp | ||
+ | qf(ci, df.type.w.temp, | ||
+ | pf(f.type.w.temp, | ||
+ | |||
+ | # aov result | ||
+ | summary(de.typenova) | ||
+ | </ | ||
- | ===== 예 ===== | + | ===== 예 2. cookie experiment |
* {{: | * {{: | ||
Line 322: | Line 537: | ||
$SS_{total}=\Sigma{X^2}-\frac{G^2}{N}$ | $SS_{total}=\Sigma{X^2}-\frac{G^2}{N}$ | ||
$SS_{\text{between}}=\Sigma{\frac{T^2}{n}}-\frac{G^2}{N}$ | $SS_{\text{between}}=\Sigma{\frac{T^2}{n}}-\frac{G^2}{N}$ | ||
- | $SS_{within} | + | $SS_{\text{within}} = \Sigma{SS_{\text{each |
- | $df_{between} | + | $df_{\text{between}} = k - 1$ |
- | $df_{within} | + | $df_{\text{within}} = \Sigma{df_{each \; treatment}} $ |
$SS_{total} = SS_{between} + SS_{within}$ | $SS_{total} = SS_{between} + SS_{within}$ | ||
Line 366: | Line 581: | ||
* $SS_{within}$ | * $SS_{within}$ | ||
- | * $SS_{within} = \Sum{SS_{within}} = 1502 + 940 + 1062 + 1084 = 4588$ | + | * $SS_{within} = \Sigma{SS_{within}} = 1502 + 940 + 1062 + 1084 = 4588$ |
* $SS_{between}$ | * $SS_{between}$ | ||
* $SS_{between} = 5108 - 4588 = 520 $ | * $SS_{between} = 5108 - 4588 = 520 $ | ||
* $SS_A$ | * $SS_A$ | ||
* $SS_B$ | * $SS_B$ | ||
- | * $SS_{AxB}$ | + | * $SS_{\text{AxB}}$ |
MS | MS | ||
* $MS_{A}$ | * $MS_{A}$ | ||
* $MS_{B}$ | * $MS_{B}$ | ||
- | * $MS_{AxB}$ | + | * $MS_{\text{AxB}}$ |
* $MS_{Within}$ | * $MS_{Within}$ | ||
F-ratio | F-ratio | ||
* $F_{A}$ | * $F_{A}$ | ||
* $F_{B}$ | * $F_{B}$ | ||
- | * $F_{AxB}$ | + | * $F_{\text{AxB}}$ |
Tests of Between-Subjects Effects | Tests of Between-Subjects Effects | ||
Line 394: | Line 609: | ||
| Corrected Total | 5108.000 | | Corrected Total | 5108.000 | ||
| a R Squared = .102 (Adjusted R Squared = .066) |||||| | | a R Squared = .102 (Adjusted R Squared = .066) |||||| | ||
+ | |||
+ | 데이터 파일 | ||
+ | {{: | ||
+ | 손으로 계산하기 | ||
+ | {{: | ||
< | < | ||
Line 624: | Line 844: | ||
</ | </ | ||
===== Interpreting interaction ===== | ===== Interpreting interaction ===== | ||
+ | 위에서 두개 독립변인에 대한 주효과가 없었으므로 각 독립변인의 종류 (특성) 별로 어디에서 차이가 났는가를 살피는 것은 의미가 없음. 따라서 아래는 필요한 절차가 아님. | ||
< | < | ||
Tukey multiple comparisons of means | Tukey multiple comparisons of means | ||
Line 661: | Line 882: | ||
====== Materials and links ====== | ====== Materials and links ====== | ||
* {{: | * {{: | ||
- | * http:// | ||
- | * http:// | ||
- | * http:// | ||
- | * http:// | ||
- | * http:// | ||
- | * http:// | ||
- | {{tag>factorial anova, | + | {{tag>factorial_anova |
factorial_anova.1591073992.txt.gz · Last modified: 2020/06/02 13:59 by hkimscil