====== ANOVA, F-test ====== http://wiki.commres.org/wiki.php/ANOVA 참조 \\ [[:T-test|T-test]] 사용은 기본적으로 두 가지면에서 한계를 갖는다. 첫째는 독립변인으로 오로지 2 그룹만을 비교할 수 없다는 것이다. (예를 들 것). 두번째로는 t test 는 오직 하나만의 독립변인을 검증한다는 것이다. (예를 들 것). ANOVA는 2개 이상의 treatment 혹은 population 집단의 평균 점수를 평가하는데 쓰이는 가설 검증 절차이다. 추정통계가 (Inferential statistics) 모두 그렇듯이, ANOVA 또한 샘플의 평균값으로 모집단의 평균값을 추정하여 각 집단 간의 차이가 통계학적으로 의미가 있는지 살펴보는 절차이다. ANOVA와 T-test는 샘플 그룹 간의 평균을 비교한다는 의미에서 서로 비슷하게 보이지만, ANOVA는 [[:T-test|T-test]]에 비해 월등한 이점을 가지고 있다. 특히 T-test의 경우에는 두 집단 간의 비교만 가능하지만, ANOVA는 __두개 혹은 그 이상의 집단__ 간의 평균을 비교하는것이 가능하다. 따라서 연구자는 ANOVA를 이용하여 실험이나 서베이 등을 좀 더 유연하게 디자인할 수 있다. ^ ANOVA ^^^ | 4 학년 | 5 학년 | 6 학년 | | 샘플 1의 과학 \\ 지식 점수 | 샘플 2의 과학 \\ 지식 점수 | 샘플 3의 과학 \\ 지식 점수 | | * 독립변인: 학년, \\ * 종속변인: 과학지식 ||| [[:T-test|T-test]]와 마찬가지로, [[ANOVA]] 또한 독립적인 측정으로 이루어진 집단의 비교나 ([[Independent T-test| Independent T-test]] 반복 측정 (repeated measure)으로 나타나는 동일 집단의 시간차 비교에 사용될 수 있다. 독립적인 측정이라 함은 2개 이상의 treatment(처치 혹은 실험처치)나 2개 이상의 모집단에서 (예, 남자와 여자) 나타나는 상호배타적인 집단을 비교하는 것을 말한다. ^ ANOVA ^^^^ ^ 5학년 샘플 A | Time 1 | Time 2 | Time 3 | ^ ::: | T1 시점에서 \\ 샘플 A가 \\ 게임을 한 시간 | T2 시점에서 \\ 샘플 A가 \\ 게임을 한 시간 | T3 시점에서 \\ 샘플 A가 \\ 게임을 한 시간 | | * 독립변인: 미디어교육, \\ * 종속변인: 게임시간 |||| 반면에 반복측정은 여러가지 (두 번 이상의) 처치를 한 그룹이 시간을 두고 측정을 받는 것을 의미한다. 예를 들면, 5학년 아동들을 대상으로 미디어교육을 받기 전에 게임에 사용하는 시간을 측정을 하고, 같은 그룹을 미디어교육을 받은 후에 다시 '''측정''' 하는 것을 "반복측정"이라고 한다 ([[:t-test]] 문서에서 [[:t-test#동일집단_간의_차이에_대해서_알아볼_때|동일집단 간의 차이에 대해서 알아볼 때]] 섹션이 여기에 해당한다). Factorial design ANOVA ^ Factorial design ^^^^^ | || **독립변인: 학생 수** ||^ | || Small | Medium | Large | | 독립변인2: 교육방법 | A방법 | 샘플1 | 샘플2 | 샘플3 | | ::: | B방법 | 샘플4 | 샘플5 | 샘플6 | | * 두 개의 독립변인: 학생 수와 교육방법 \\ * 하나의 종속변인: 과학지식 ||||| ANOVA는 또한 두 가지 이상의 독립변인의 (Independent Variable ([[:Type of Variables|Variable Identification]] 참조)) 효과를 동시에 살펴보는데 사용되기도 한다. 가령, 연구자는 ANOVA를 이용하여 사용자 유저인터페이스의 종류와 (A, B, C: Independent Variable 1) 동영상의 사용 (있고 없음, Independent Variable 2)가 과학지식의 습득에 얼마나 영향을 주는지 동시에 살펴볼 수 있다. ====== Factors ====== 위의 표에서 사용된 용어인 독립변인을 (attributes) ANOVA에서는 팩터라고 (factor) 부른다. 위의 첫 번째 표에서 처럼 하나의 독립변인이 (factor) 이용된 경우 **single factor design** 이라고 하며, 두 번째처럼 두 개 이상의 독립변인이 이용된 경우를 **factorial design** 이라고 부른다 ([[Factorial Anova]] 참조). ====== Single Factor Design ====== 아래의 그림은 부모의 사회경제적 지위에 따른 과학점수의 차이를 보여주는 예이다. Group1(H), Group2(M), Group3(L)의 세집단의 그룹 멤버쉽에 따라서 과학점수 ( $\small\mu_i$ )의 평균이 다를 것이라는 것이 연구자의 관심사이다. [{{ :ANOVA-example.png?250|three group comparison}}] 위의 그림에서 연구자는 전체 모집단에서 3가지의 특성을 (attributes) 가지는 하위 집단을 규정하고, 이 집단의 특성이 서로 다른가에 대한 의문을 갖는 것을 나타낸다 (그림의 위쪽 부분). 연구자는 이 상태에서 각 집단의 구성원을 모두 조사할 수는 없으므로, 각각의 특성에 일치하는 샘플을 (Sample1, Sample2, Sample3) 구하여 샘플의 평균값을 ( $ \overline{X_i} $ ) 살펴보고, 각 평균값의 차이가 (1) 모집단의 실제 값을 대표하는지와 (2) 이 평균값의 차이가 통계학적으로 의미가 있는지를 살펴 본다. 즉, 위의 그림에서 평균값 $\overline{X_1}$ , $\overline{X_2}$ , $\overline{X_3}$ 의 {2, 4, 6} 간의 차이를 가지고 연구자는 두 가지 종류의 해석을 할 수 있다. - 세 집단의 진짜 평균은 (모집단의 평균) 서로 다르지 않다. 위의 세 샘플의 평균 차이는 순전히 우연만으로 나타난 것으로 이 차이를 가지고 전체 3 집단 간의 차이가 있다고 이야기 할 수 없다. - 세 샘플의 평균 차이는 실제 모집단에서의 집단 간의 차이를 반영한다. 첫 번째 해석은 $\small\text{H0: } \mu_1 = \mu_2 = \mu_3 $ 로 표현할 수 있다 (영가설). 두 번째 표현은 수학표현으로 간단하게 나타내기 어려운 점이 있다. 연구자는 $\small\text{H1: } \mu_1 \not= \mu_2 \not= \mu_3 $ 의 경우만을 살펴 보려는 것이 아니라, $\small\text{H1: } \mu_1 \not= \mu_2 $ 의 경우나 $\small\text{H1: } \mu_2 \not= \mu_3$ 의 경우, $\small\text{H1: } \mu_1 \not= \mu_3 $ 의 경우 등을 모두 인정하고 있기 때문이다. 따라서 두 번째 해석은 다음과 같이 나타낼 수 있으며 이를 연구자의 연구가설로 한다. $\small\text{H1: }$ 적어도 한 집단의 평균이 다른 집단의 평균과 다를 것이다. 또한 첫 번째 해석은 위의 선언을 뒤집어 설명한 것으므로 [[:Null Hypothesis|null hypothesis 혹은 영가설]] ([[Hypothesis testing]] 참조)라고 하겠다. $\small\text{H0: } \mu_1 = \mu_2 = \mu_3 $ 위의 예에서, [[t-test]]를 세번하게 되면 어떨까? 이론적으로 t-test는 두 그룹 간의 차이를 비교하는 것이므로 3번의 t-test를 통해서 그룹 간의 차이를 파악할 수 있다. 그러나, 이를 수행하는 것은 아래 두 가지의 문제점을 낳는다. - 그룹 혹은 집단의 숫자가 늘어나게 되면 해야 할 t-test가 급격하게 늘어나게 된다. 3집단일 경우에는 3번에 그치지만, 4집단일 경우는 6번으로 늘어나게 된다. 즉, $ \text{Number of tests} = \frac {n(n-1)}{2} $ 의 테스트가 필요하게 된다. - 한 번의 t-test를 할 때마다, Type I Error의 양이 늘어나게 된다. ===== Logic ===== 위의 그림에서 연구자가 가지는 관심은 세집단 (Group1, Group2, Group3) 간의 차이이다. 이 차이가 일어나게 되는 이유는 두 가지가 있을 수 있다. - 세 집단으로 구분되는 특성에 따른 차이가 있다. 즉, 독립 변인이라고 할 수 잇는 //사회경제적지위 (SES)//가 상, 중, 하 (Hi, Medium, Lo)로 나누어질 수 있는데, 이 특성이 영향력을 미쳐서 자녀의 과학점수 차이가 나타난다. - 연구자가 피할 수 없는 개인 간의 차이에 의한 차이가 있다. 즉, 설령 세그룹 간의 특성으로 인해서 나타나는 차이를 제외하더라도, 순수한 개인 간 차이에서 기인하는 차이가 있을 수 있다. 위의 두가지 원인에 의해서 발생되는 차이를 __그룹 간 차이 (between group difference)__라고 하며, 이는 결국 treatment effect의 일종이라고 할 수 있다. $$ \begin{equation} \text{treatment effect} = \text{difference due to group membership } + \text{ difference not due to group membership} \nonumber \end{equation} $$ 연구자의 독립변인의 특성의 영향력 간의 차이를 비교한다고 하면 위의 예처럼 바로 treatment effect의 크기를 집단 간에 비교해 보는 것이다. 연구자는 또한 Treatment effect를 비교하는 것과 함께, 동일 그룹 내의 차이를 비교해 볼 수도 있다. //동일 그룹 내 구성원 간의 차이//란 똑같은 상황에서 나타나는 차이를 말한다. 부모의 SES가 "상(H)"이라고 할 때, 이 샘플 그룹 내 구성원 간의 차이 또한 나타날 것이다. 그런데, 이 경우 구성원의 과학점수는 //동일한 조건//에서 측정되므로 이 때 나타나는 차이는 순전히 //Random//한 차이라고 할 수 있다. 이를 //그룹내 효과 (Within group effect)//라고 한다. $$ \begin{equation} \text{Within group effect} = \text{random difference among the members in a same membership} \nonumber \end{equation} $$ 결국, Analysis of Variance라 함은 세 그룹 간의 평균이 얼마나 서로 멀리 떨어져 있는가 (treatment effect)를 살펴 보고, 이 차이가 충분한가를 판단하는 작업이라고 하겠다. 여기서 t-test의 개념적 논리를 다시 살펴보면 다음과 같다. $\displaystyle t = \frac{\text{obtained difference}}{\text{difference by random error}}$ //Obtained difference//라 함은, 연구자가 두 그룹 간의 평균을 실제로 구해서(obtained) 그 차이를 (difference) 살펴 본 것을 말한다. 또한, //difference by random error//라 함은 두 그룹 간의 차이가 실제로는 없다고 하여도, 샘플링을 하기 때문에 나타날 수 밖에 없는, 연구자가 어쩔 수 없는 차이라고 하겠다. ANOVA 또한 이 논리를 따른다 (즉, t-test의 논리를 Variance를 사용하여 구하는 것이다). $F = \displaystyle \frac{\text{difference (variance) obtained (due to membership) + difference (variance) by error}}{\text{difference (variance) by error}}\;\cdots\cdots\;[1]$ 위의 F-test에서 분자의 부분을 살펴 보면, 이는 treatment로 인해서 나타나는 차이를 말한다. 즉, 각각의 그룹의 상태가 다른 조건이었기 때문에 일어나는 차이를 말하므로, 그룹 간의 차이(between group difference)라고 이야기 할 수 있다. 반면에 분모 부분은 동일한 조건(within group)에서 연구자가 어쩔 수 없이 만나게 되는 차이를 말한다. 이를 그룹내 차이(within group difference)라고 한다. 따라서 위의 F-test는: \begin{eqnarray} F = \frac{\text{treatment difference}}{\text{random difference}} = \frac{\text{between group difference (variance)}}{\text{within group difference}} \;\cdots\cdots\; [2] \nonumber \end{eqnarray} 라고 표현할 수 있다. 그런데, [1] 식에서 만약에 처치효과가 (treatment effect) 없다면 F값이 어떻게 될까? treatment effect = 0 라고 한다면, F값의 계산에서 남는 것은 분모, 분자 모두 within group 내의 램덤 차이뿐이다. 여기서 일어나는 차이는 샘플링에 의해서 일어날 수 있는 약간의 차이라고 생각할 수 있으므로 분모와 분자의 값이 거의 일치하다고 가정을 할 수 있다. 이때의 F 값은 1이 된다. 즉, 예에서 보는 것처럼, 부모의 SES가 자녀의 과학성적에 영향을 주는가? 라는 질문에서 SES 효과가 없다면, 분산을 (variance) 구해서 분석한 (analysis) 결과 값은 1에 근접할 것이다. 식 <2>에서 언급한 것 처럼 F 값은 그룹 간의 차이와 (treatment difference) 그룹 내의 차이의 (error by chance) 비율을 구하는 것이다. 그렇다면 그룹간 차이와 (between group difference or variance), 그룹내 차이는 (within group difference or variance) 어떻게 구할까? ===== ANOVA 공식 ===== 세 개의 집단을 비교한다고 할 때, 우리가 구할 수 있는 분산 값은 세가지 종류가 있다. 즉 그림에서와 같이 세 그룹 간의 차이를 보는 분산이 있을 수 있으며, 각 그룹 내부의 구성원이 서로 얼마나 다른가를 보는 분산이 있을 수 있고, 그림에는 표시되어 있지 않지만 전체 구성원을 하나의 집단으로 놓고 보는 (즉, 그룹 간 구별을 하지 않는) 분산이 있다. * 전체 분산 * 그룹 간 분산 * 그룹 내 분산 [{{:anovaExample3.jpg?400 |ANOVA 3 group variance comparison}}] 전체 분산은 바로 그룹 간 분산과 그룹 내 분산을 모두 더한 값이 된다. 즉 Variationtotal = Variationbetween + Variationwithin. 이를 도식화해서 설명하자면, | Variability Total || |Between treatment variance | Within treatment variance | | 1. Treatment effect | 1. Differences due to chance | | 2. Differences due to chance | | 라고 할 수 있다. 참고로 분산을 구하는 방법은: $s^2 = \frac{SS}{df}\;\cdots\;[3]$ 이므로, 위의 세 그룹 간의 비교를 나타내는 그림은 다음과 같이 요약될 수 있다. $\text{variance total} = s^2_{total} = \frac{SS_{total}}{df_{total}}$ $\text{variance between treatments} = s^2_{between} = \frac{SS_{between}}{df_{between}}$ $\text{variance within treatments} = s^2_{within} = \frac{SS_{within}}{df_{within}}$ 그리고, 앞서 이야기 한대로, 우리가 구하고자 하는 F 값은 between group difference를 within group difference로 나눈 값이므로: $F = \frac{\displaystyle \frac{SS_{between}}{df_{between}}}{\displaystyle \frac{SS_{within}}{df_{within}}} = \displaystyle \frac{\text{Variance between group treatments}}{\text{Variance within group treatments}}$ 라고 할 수 있다. 그런데, F-test (ANOVA)를 만든 학자들은 Variance라는 용어 대신에 Mean Square ( $\text{MS}$ )라는 용어를 사용한다. [[Variance]]는 Sum of Square ( $\text{SS}$ )를 $\text{df}$ 로 나눈 것이니, Mean Square라고 부르는 것도 나름 합리적이다 (즉, $ \text{MS} = \text{Variance} = s^2 = \frac{SS}{df}$ ). 그래서 위의 F 값을 $ F = \displaystyle \frac {MS_{between}}{MS_{within}} $ 으로 정리한다. 아래의 예를 보자. 아래는 부모의 SES 수준에 따른 11살 어린이 자녀의 과학문제를 맞춘 갯수이다. 연구자는 SES라는 사회적 개념과 지적 능력이 어떤 연관이 있을까에서 시작하여, 이를 테스트 해보기 위해서 아래의 유사실험을 만들어 내었다. SES condition | | Group 1 (L) | Group 2 (M) | Group 3 (H) | | | | 0 | 1 | 7 | $\sum X^2 = 221$ \\ $G = 45$ \\ $N = 15$ \\ $k = 3$ | | | 1 | 2 | 6 | ::: | | | 3 | 3 | 4 | ::: | | | 1 | 3 | 6 | ::: | | | 0 | 1 | 7 | ::: | | $T$ | 5 | 10 | 30 | | | $n$ | 5 | 5 | 5 | | | $\overline{X}$ | 1 | 2 | 6 | | | $SS$ | 6 | 4 | 6 | | 위의 표는 개인 점수 외에도 필요한 사항들을 가지고 있는데 이것 들에 대해서 우선 설명하겠다. * T : 각각의 그룹 구성원의 점수 합을 (total) 의미한다. {5, 10, 30} * SS : Sum of Square 값을 의미한다. 표에서는 각 그룹(집단)의 SS 값이 구하여져 있다. {6, 4, 6} * n : 각 그룹 구성원의 숫자를 (이 경우에는 모두 5) 의미한다. {5, 5, 5} * G : 전체 합을 말한다. 즉, 세 그룹에 속한 모든 구성원의 점수 합을 G라고 하였다 (Grand total = 45). $ G = 45 $ * N : n과 대비하여 전체 구성원의 숫자를 말한다 (여기서는 5명씩 3그룹이 있으므로 15이다). $ N = 15 $ * k : 집단(그룹)의 숫자를 말한다. 여기서는 3 그룹이 있으므로 3이다. $ k = 3 $ * $\small\sum X^2$ : 이 값은 전체 분산값을 위해 미리 계산이 된 값이다. 전체 분산값을 구하기 위해서 이 값이 필요한 이유는 아래와 같다. \begin{eqnarray*} \text{SS} & = & \sum (X_i-\overline{X})^2 \\ & = & \sum (X_i^2 - 2 \overline{X} X_i + \overline{X}^2 ) \\ & = & \sum X_i^2 - 2 \overline{X} \sum X_i + \sum \overline{X}^2 \\ & = & \sum X_i^2 - 2 n \overline{X}^2 + n \overline{X}^2 \;\cdots\; \text{cause } \sum {X_i = n \overline{X} }; \\ & = & \sum X_i^2 - n \overline{X}^2 \;\cdots\cdots\cdots\cdots\cdots\cdots\cdots\cdots\; [1] \\ & = & \sum X_i^2 - \frac{(\sum {X_i)^2}}{n} \;\cdots\cdots\cdots\; [2] \;\;\;\; \text{cause } \overline{X}=\frac{\sum X_i}{n} \;\; \end{eqnarray*} 위의 식 [1]과 [2]는 외울 것. ===== SS 분해 ===== ==== SS total ==== SStotal 은 위에서 밝힌 [1]의 공식으로 구할 수 있다. \begin{eqnarray} SS & = & {\sum} X_i^2 - n \overline{X}^2 \nonumber\\ & = & 221 - (15 * 3^2) \nonumber\\ & = & 221 - 135 \nonumber\\ & = & 86 \nonumber \end{eqnarray} \begin{eqnarray} \text{SS} & = & \sum X_i^2 - \frac{(\sum {X_i)^2}}{n} \nonumber\\ & = & 221 - \frac{(45)^2}{15} \nonumber\\ & = & 221 - 135 \nonumber\\ & = & 86 \nonumber \end{eqnarray} $$ \text{SS} = \sum X_i^2 - \frac{(\sum {X_i)^2}}{n} $$ ==== SS within ==== 두 번째로 알아봐야 할 것은 각각의 그룹 내에서 그룹 멤버들이 평균에서 얼마나 흩어져 있는가이다. 이 분산값은 이전에 소개된 분산값의 공식을 이용해서 구할 수 있다. 단, 여기서 비교하는 그룹이 세 개이므로 SS 값은 모두 3개를 구할 수 있으므로, SSwithin값은 각각의 그룹 분산을 모두 더한 값이다. $$ SS_{within} = \sum {SS_{each group}} $$ 위에서 각각의 SS값은 미리 구해 두었으므로, 이를 계산하면, $$ SS_{within} = 6 + 4 + 6 = 16 $$ ==== SS between ==== 앞서 언급 하였듯이 그룹 간의(bewteen group) SS값은 SStotal 값에서 SSwithin 값을 제외한 값이 된다. SStotal = 85 이었고, SSwithin = 16 이었으므로, \begin{eqnarray} SS_{total} & = & SS_{between} + SS_{within} \nonumber\\ SS_{between} & = & SS_{total} - SS_{within} \nonumber\\ & = & 86 - 16 \nonumber\\ & = & 70 \nonumber \end{eqnarray} 이라고 할 수 있다. 실제 SSbetween 구하는 공식을 사용하여 구해보면 아래와 같다. \begin{eqnarray} SS_{between} & = & \sum \frac{T^2}{n} - \frac{G^2}{N} \nonumber\\ & = & \frac{5^2}{5} + \frac{10^2}{5} + \frac{30^2}{5} - \frac{45^2}{15} \nonumber\\ & = & 5 + 20 + 180 - 135 \nonumber\\ & = & 70 \nonumber \end{eqnarray} 혹은 SSbetween 값을 구하는 방식을 도출해 보면 다음과 같다. 그룹 간의 (between group) 분산을 구한다는 것은 세 평균이 전체 평균에서 얼마나 각각 떨어져 있는가를 보는 것이므로 $SS_{between} = \sum (\overline{X_i}-\overline{X_{total}})^2$ 이라고 할 수 있는데, $\overline{X_i}-\overline{X_{total}}$ 의 합은 전체평균에서 그룹 평균을 뺀 값의 합으로 정확히 그룹의 분산을 위한 값이라고 할 수는 없다. 오히려 각각의 값에 그룹 구성원의 숫자를 곱해주는 것이 그룹들의 분산 값을 보여 주는 지표라고 할 수 있다. 따라서, \begin{eqnarray} SS_{between} & = & \sum n_i ( \overline{X_i} - \overline{X_{total}} )^2 \nonumber\\ & = & 5 * (1-3)^2 + 5 * (2-3)^2 + 5 * (6-3)^2 \nonumber\\ & = & 20 + 5 + 45 = 70 \nonumber \end{eqnarray} SS값이 분해되어서 나누어지는 과정을 도식화 해보면 다음과 같다. [{{:ANOVA_ssAnalysis.png|SS 나누기(partition)}}] \\ \\ ===== df 분해 ===== $df$ ([[:Degrees of Freedom|degrees of freedom]]) 역시 SS와 같은 방식을 취한다. 즉 $ df_{total} = df_{between} + df_{within} $ 으로 표현될 수 있다. 따라서, 각각의 조건에 맞는 $df$ 를 구해야 한다. 일반적으로 $df$ 값은 전체 (샘플) 구성원에서 1을 뺀 값을 갖는다. 예를 들면 $ S^2=\frac{SS}{df} $ 에서 $df$ 는 바로 샘플 숫자 n에서 1을 뺀 n-1이다. ==== df total ==== $ df_{total} $ 값은 그룹 소속을 막론한 전체 샘플 구성원의 숫자에서 1을 뺀 값이다. 즉, $df_{total}= N -1$ 따라서 위 예의 $ df_{total} $ 값은 \begin{eqnarray*} df_{total} & = & 15 - 1 \\ & = & 14 \end{eqnarray*} ==== df within ==== 그룹 내의 $s^2$ 값을 구할 때 사용하는 n-1, 즉 각각의 그룹의 분산에서 사용되는 n1-1; n2-1; n3-1 의 값을 모두 더하여 dfwithin을 구한다. 즉, $$df_{within}=\small\sum\large(n_i-1) $$ 다른 방법으로는 그룹 구성을 무시한 전체 샘플 숫자, N에서 그룹 숫자를 (여기서는 k = 3) 빼서 구할 수 있다. 이 편이 더하는 수고를 덜으므로 편리하다 하겠다. $$df_{within} = N - k$$ 따라서 예에서 구해야 하는 dfwithin 값은: \begin{eqnarray} df_{within} & = & 15 -3 \nonumber \\ & = & 12 \nonumber \end{eqnarray} ==== df between ==== 그룹 간 분산에 사용되어야 하는 df값은 전체 그룹 숫자에서 1을 뺀 값이다. 즉, $$df_{between} = k -1 $$ 위의 예를 적용해 보면 \begin{eqnarray*} df_{between} & = & 3 - 1 \\ & = & 2 \end{eqnarray*} SS 분석에서도 살펴 보았듯이 df에서도 dftotal = dfbetween + dfwithin의 형태를 갖는 다. [{{:anova_dfanalysis.png|df 나누기}}] \\ ===== 분산 값과 (MS) F 값 구하기 ===== 위에서 구한 값들을 요약 정리해보면 아래의 테이블과 같다. ^ 각각의 SS와 df값 ^^ Mean Square (MS) 값 \\ = Variance 값 ^ F-distribution \\ 테이블 볼 때 ^ | SStotal = 86 | dftotal = 14 | | | | SSbetween = 70 | dfbetween = 2 | MSbetween = 70 / 2 = 35 | 분자 (numerator) | | SSwithin = 16 | dfwithin = 12 | MSwithin = 16 / 12 = 1.33 | 분모 (denominator) | 누누이 언급된 것이지만 variance값은 아래와 같이 구한다. $$\displaystyle variance = \frac{SS}{n-1} = \frac{SS}{df} $$ ANOVA에서는 위의 variance라는 용어를 MS라고 부르는게 관습이라고 하였다. $$\displaystyle MS = \frac{SS}{df}$$ 위의 데이터에서 구한 값을 사용하여 각각의 MS값을 구해 본다면, $$\displaystyle MS_{between}=\frac{SS_{between}}{df_{between}} = \frac{70}{2} = 35$$ 그리고, $$\displaystyle MS_{within} = \frac{SS_{within}}{df_{within}} = \frac{16}{12} = 1.33 $$ 이제 구해야 할 F 값은 처음에 개념적으로 언급했듯이: $$\displaystyle F=\frac{MS_{between}}{MS_{within}}$$ 이고, 위의 데이터에서 구할 수 있는 F값은: $$\displaystyle F=\frac{35}{1.33} = 26.25$$ 우리가 구한 26.25 은 Fcalculated value라고 부를 수 있고, 이 값이 의미하는 것은 F 값의 분모와 분자 중 분자의 값이 분모의 값보다 상당히 크다는 것이다. F 값이나 t 값이나 구하는 공식의 공통적인 논리는 연구자가 발견하는 차이가 (obtained difference) 연구자가 어쩔 수 없이 만나게 되는 차이의 (difference by chance) 비율이 일정 숫자를 넘어서면 그룹 간의 차이를 인정하는 것이었다. 따라서, 위에서 구한 F-ratio 값은 우연히 나올 수 있는 variance의 차이가 (MSwithin), 그룹 간 실제 차이의 (MSbetween) 20배가 넘는다는 것을 의미하니, 그룹 차이가 있다고 판단하는 것이 옳을 것이다. 그러나, 이와 같은 판단을 내리기 위해서는 F distribution table을 살펴 보아야 한다(({{:ftable.pdf|F distribution table}} 참조)). 테이블 참조 결과 (표에서 분모, 분자에 맞추어 볼 것) Fcritical value (2, 12, p < 0.05) = 3.89 Fcritical value (3.89) < Fcalculated value (26.25) 이므로 영가설을 부정하고 세 그룹 간에 차이가 존재한다는 연구가설을 지지하는 결정을 내린다. 참고로 treatment의 혹은 IV의 효과가 없을 때, F 값은 1에 근접한다는 이야기를 했고, Fcritical value (2, 12, p < 0.05) = 3.89 이 의미하는 것은 F값이 적어도 3.89는 넘어야 세 그룹 간의 차이가 없다는 영가설을 부정할 수 있다는 것을 뜻한다. 그런데 계산된 F값은 26.25로 비교값인 3.89를 훨씬 넘으므로 영가설을 부정한다. ANOVA ^ Science Knowledge ^^^^^^ | | Sum of \\ Squares| df | Mean \\ Square | F | Sig. | | Between Groups | 70 | 2 | 35 | 26.25 | 0.000 | | Within Groups | 16 | 12 | 1.333 | | | | Total | 86 | 14 | | | | ===== 샘플 숫자가 Treatment마다 다를때 ===== ^ Experiment ^^^^ | Vervet | Rhesus | Baboon | | | n = 4 | n = 10 | n = 6 | N = 20 | | $\overline{X}$ = 9 | $\overline{X}$ = 14 | $\overline{X}$ = 4 | G = 200 | | T = 36 | T = 140 | T = 24 | $\small\sum X^2$ = 3400 | | SS = 200 | SS = 500 | SS = 320 | | 숫자가 다른 샘플을 비교할 때도 마찬가지로 계산한다. \begin{eqnarray*} SS_{between} & = & \sum n_i ( \overline{X_i} - \overline{X_{total}} )^2 \\ & = & 4 (9-10)^2 + 10 (14-10)^2 + 6 (4-10)^2 \\ & = & 4 + 160 + 216 = 380 \\ SS_{within} & = & 200 + 500 + 320 = 1020 \\ SS_{total} & = & {\sum} X_i^2 - n \overline{X}^2 \\ & = & 3400 - 20 (100) \end{eqnarray*} \begin{eqnarray*} df_{between} & = & k - 1 = 2 \\ df_{within} & = & (4-1) + (10-1) + (6-1) \\ df_{total} & = & N -1 = 20 -1 = 19 \\ \end{eqnarray*} $$F = 3.17 $$ ====== 논문 작성 ====== Also read [[https://www.yorku.ca/mack/RN-HowToReportAnFStatistic.html|How to report an F statistic]] at york university site. ^ Table 1. Amount of time (days) the pain relieved ^^^^^ | -- | Placebo | Drug A | Drug B | Drug C | | M | 1.0 | 1.0 | 4.0 | 6.0 | | SD | 1.73 | 1.0 | 1.0 | 1.73 | 표 1은 각각의 처치에 대한 평균, 표준편차를 기록한 것이다. 분산 분석의 결과, 4가지 처치 간에 통계적으로 유의미한 차이가 있었다 (F(3,8) = 9.0, p < .05). 위에서 F-ratio가 제시되는 형식을 익혀 두어야 한다. 괄호 안의 두 숫자는 between, within df값을 의미한다. 다음으로 등호와 함께 계산된 F값을 보고해야 한다. 이 값이 어느 정도의 오류가능성을 갖는가에 대한 평가를 (즉, Type I Error) 기록해야 한다. 위에서 주의해야 할 점은 F값에 대한 판단은 4개의 집단 중 어디에서 차이가 발생했는지 (A-B? B-C? Placebo-C?)를 제시해 주지 않는다는 것이다. 따라서, 어떤 처치(treatment) 간에 통계학적으로 유의미한 차이가 보이는가는 post-hoc 테스트를 통해서 밝혀야 한다 (Sheffee Test). ^ ANOVA Summary ^^^^^ | Source | SS | df | MS | | | Between treatments | 54 | 3 | 18 | F = 9.0 * | | Within treatments | 16 | 8 | 2 | | | Total | 70 | 11 | | | | * p < .05 |||| ====== Post hoc test ====== [[Post hoc test]] > adata <- read.csv("https://datascienceplus.com/wp-content/uploads/2017/08/tyre.csv", fileEncoding="UTF-8-BOM") > adata Brands Mileage 1 Apollo 32.99800 2 Apollo 36.43500 3 Apollo 32.77700 4 Apollo 37.63700 5 Apollo 36.30400 6 Apollo 35.91500 7 Apollo 34.70000 8 Apollo 32.37900 9 Apollo 33.63100 10 Apollo 36.41900 11 Apollo 36.43000 12 Apollo 34.83600 13 Apollo 38.32800 14 Apollo 30.62300 15 Apollo 32.57500 16 Bridgestone 33.52300 17 Bridgestone 31.99500 18 Bridgestone 35.00600 19 Bridgestone 27.87900 20 Bridgestone 31.29700 21 Bridgestone 31.06200 22 Bridgestone 34.83800 23 Bridgestone 33.97600 24 Bridgestone 32.55200 25 Bridgestone 30.88100 26 Bridgestone 28.14400 27 Bridgestone 29.18400 28 Bridgestone 33.07500 29 Bridgestone 32.36500 30 Bridgestone 30.92500 31 CEAT 34.44565 32 CEAT 32.80658 33 CEAT 33.41499 34 CEAT 36.86118 35 CEAT 36.97277 36 CEAT 35.08145 37 CEAT 34.95412 38 CEAT 33.47516 39 CEAT 30.42748 40 CEAT 36.13392 41 CEAT 34.78336 42 CEAT 36.11675 43 CEAT 41.05000 44 CEAT 32.16845 45 CEAT 32.72624 46 Falken 39.59600 47 Falken 38.93700 48 Falken 36.12400 49 Falken 37.69500 50 Falken 36.58600 51 Falken 35.96700 52 Falken 36.73700 53 Falken 34.31000 54 Falken 40.25200 55 Falken 37.38200 56 Falken 40.66300 57 Falken 37.09500 58 Falken 38.00500 59 Falken 37.75600 60 Falken 37.26500 > > fmod.tire <- aov(Mileage~Brands, data=adata) > summary(fmod.tire) Df Sum Sq Mean Sq F value Pr(>F) Brands 3 256.3 85.43 17.94 2.78e-08 *** Residuals 56 266.6 4.76 --- Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 > > TukeyHSD(fmod.tire) Tukey multiple comparisons of means 95% family-wise confidence level Fit: aov(formula = Mileage ~ Brands, data = adata) $Brands diff lwr upr p adj Bridgestone-Apollo -3.01900000 -5.1288190 -0.909181 0.0020527 CEAT-Apollo -0.03792661 -2.1477456 2.071892 0.9999608 Falken-Apollo 2.82553333 0.7157143 4.935352 0.0043198 CEAT-Bridgestone 2.98107339 0.8712544 5.090892 0.0023806 Falken-Bridgestone 5.84453333 3.7347143 7.954352 0.0000000 Falken-CEAT 2.86345994 0.7536409 4.973279 0.0037424 > > tapply(adata$Mileage, adata$Brands, mean) Apollo Bridgestone CEAT Falken 34.79913 31.78013 34.76121 37.62467 > ====== F and t value ====== $$ F = t^{2}$$ > td <- read.csv("D:/Users/Hyo/Cs-Kant/CS/Rdata/t-test.csv", fileEncoding="UTF-8-BOM") > head(td) gender tmobconv out in. mobpeo 1 2 60 3 3 5 2 2 60 5 3 5 3 1 20 3 10 5 4 2 10 7 5 6 5 2 30 3 3 3 6 2 30 5 5 3 > > tmod <- t.test(tmobconv~gender, data=td, var.eq=T ,na.rm=T) > tmod Two Sample t-test data: tmobconv by gender t = -3.0453, df = 1449, p-value = 0.002367 alternative hypothesis: true difference in means is not equal to 0 95 percent confidence interval: -48.88717 -10.58088 sample estimates: mean in group 1 mean in group 2 91.28457 121.01860 > tmod$statistic^2 t 9.273615 > fmod <- aov(tmobconv~gender, data=td) > summary(fmod) Df Sum Sq Mean Sq F value Pr(>F) gender 1 320284 320284 9.274 0.00237 ** Residuals 1449 50044262 34537 --- Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 56 observations deleted due to missingness > ====== Example ====== 가설. 단어맞히기 게임에서 첫글자를 힌트로 주거나, 마지막 글자를 힌트로 주거나, 힌트를 주지 않은 세 그룹 간에 틀린 단어의 숫자에 차이가 있을 것이다. [[anova/ex01]] | |First Letter \\ Condition 1 \\ X1|Last Letter \\ Condition 2 \\ X2|No Letter \\ Condition 3 \\ X3 | | | 15 | 21 | 28 | | | 20 | 25 | 30 | | | 14 | 29 | 32 | | | 13 | 18 | 28 | | | 18 | 26 | 26 | | | 16 | 22 | 30 | | | 13 | 26 | 25 | | | 12 | 24 | 36 | | | 18 | 28 | 20 | | | 41 | 21 | 15 | | T | 180 | 240 | 270 | | n | 10 | 10 | 10 | | Mean | 18 | 24 | 27 | | Mean%%^%%2 | 324 | 576 | 729 | | b = $n*(mean)^2$ | 3240 | 5760 | 7290 | | a = $\sum{(X_i)^2}$ | 3888 | 5868 | 7614 | | a-b = Var.within | 648 | 108 | 324 | $f = $1080 | \begin{eqnarray*} a & = & \sum (X_i)^2 = 17370 \\ b & = & \overline{X_{total}} = 23 \\ c & = & \overline{X}^2 = 529 \\ d & = & N = 30 \\ e & = & SS_{total} = \sum {(X_i)^2} = a - (d * c) = 1500 \\ f & = & SS_{within} = 648 + 108+ 324 = 1080 \\ g & = & SS_{between} = e - f = 420 \end{eqnarray*} | m.total = Mean.total | $b = \; $ 23 ||| | m.within = Mean.each.group | 18 | 24 | 27 | | o = m.total - m.within | 5 | -1 | -4 | | o%%^%%2 | 25 | 1 | 16 | | n | 10 | 10 | 10 | | o%%^%%2 * n | 250 | 10 | 160 | | sum | $g = \; $ 420 ||| \begin{eqnarray*} k & = & 3 \\ n & = & 10 \\ N & = & 30 \\ \end{eqnarray*} \begin{eqnarray*} e' & = & df_{between} = \\ f' & = & df_{within} = \\ g' & = & df_{total} = \\ \end{eqnarray*} | | SS | df | MS | F | | between | $e = \;$ 420 | $e' = \;$ 2 | 210 | 210/40 = 5.25 | | within | $f = \;$ 1080 | $f' = \;$ 27 | 40 | | | total | $g = \;$ 1500 | $g' = \;$ 29 | | | Fcrit(2, 27) = 3.35 Fcal = 5.25 Fcal > Fcrit 이므로 3집단 간의 평균은 통계학적으로 의미가 있는 차이를 가지고 있다. ====== Example 2 ====== x1 <- c(15, 20, 14, 13, 18, 16, 13, 12, 18, 41) x2 <- c(21, 25, 29, 18, 26, 22, 26, 24, 28, 21) x3 <- c(28, 30, 32, 28, 26, 30, 25, 36, 20, 15) > xc <- data.frame(x1,x2,x3) x1 x2 x3 1 15 21 28 2 20 25 30 3 14 29 32 4 13 18 28 5 18 26 26 6 16 22 30 7 13 26 25 8 12 24 36 9 18 28 20 10 41 21 15 > xs <- stack(xc) > xs values ind 1 50.5 x1 2 52.1 x1 3 51.9 x1 4 52.4 x1 5 50.6 x1 6 51.4 x1 7 51.2 x1 8 52.2 x1 9 51.5 x1 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 > > colnames(xs) <- c("wrong", "condition") # cf # lengthofelements <- length(x1) # varofvariable <- var(x1) df.total <- length(xs$wrong) - 1 ss.total <- var(xs$wrong)*df_tot var.total <- ss.total/df.total var.total.r <- var(xs$wrong) df.x1 <- length(x1)-1 df.x2 <- length(x2)-1 df.x3 <- length(x3)-1 ss.x1 <- var(x1)*df.x1 ss.x2 <- var(x2)*df.x2 ss.x3 <- var(x3)*df.x3 ss.within <- ss.x1 + ss.x2 + ss.x3 df.within <- df.x1 + df.x2 + df.x3 ss.between <- ss.total - ss.within df.between <- df.total - df.within ms.between <- ss.between/df.between ms.within <- ss.within/df.within f.value <- ms.between/ms.within ss.between df.between ss.within df.within ms.between ms.within f.value [1] 5.25 f.crit <- qf(.95, df1=2, df2=27) ## p=.05 level에서 F(2,27)의 값은 qf 펑션으로 구합니다. f.crit [1] 3.354131 #################################### ## f.value가 f.crit 값보다 크므로 ## 세 그룹 간에 차이가 있다는 가설을 ## 받아들인다. (세 그룹 간에 차이가 ## 없다는 영가설을 부정한다) #################################### ====== E.G. 1 (R) ====== [[https://stat.ethz.ch/R-manual/R-devel/library/datasets/html/PlantGrowth.html|Explanation of the PlantGrowth data set]] > PlantGrowth weight group 1 4.17 ctrl 2 5.58 ctrl 3 5.18 ctrl 4 6.11 ctrl 5 4.50 ctrl 6 4.61 ctrl 7 5.17 ctrl 8 4.53 ctrl 9 5.33 ctrl 10 5.14 ctrl 11 4.81 trt1 12 4.17 trt1 13 4.41 trt1 14 3.59 trt1 15 5.87 trt1 16 3.83 trt1 17 6.03 trt1 18 4.89 trt1 19 4.32 trt1 20 4.69 trt1 21 6.31 trt2 22 5.12 trt2 23 5.54 trt2 24 5.50 trt2 25 5.37 trt2 26 5.29 trt2 27 4.92 trt2 28 6.15 trt2 29 5.80 trt2 30 5.26 trt2 with(PlantGrowth, tapply(weight, group, mean)) ctrl trt1 trt2 5.032 4.661 5.526 with(PlantGrowth, tapply(weight, group, sd)) ctrl trt1 trt2 0.5830914 0.7936757 0.4425733 boxplot(weight~group, col="red", data=PlantGrowth) out = lm (weight ~ group, data=PlantGrowth) out Call: lm(formula = weight ~ group, data = PlantGrowth) Coefficients: (Intercept) grouptrt1 grouptrt2 5.032 -0.371 0.494 anova(out) Analysis of Variance Table Response: weight Df Sum Sq Mean Sq F value Pr(>F) group 2 3.7663 1.8832 4.8461 0.01591 * Residuals 27 10.4921 0.3886 --- Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 install.packages("multcomp") library(multcomp) out을 general linear hypothesis test에 적용 dunnett = glht(out, linfct=mcp(group="Dunnett")) dunnett General Linear Hypotheses Multiple Comparisons of Means: Dunnett Contrasts Linear Hypotheses: Estimate trt1 - ctrl == 0 -0.371 trt2 - ctrl == 0 0.494 > summary(dunnett) Simultaneous Tests for General Linear Hypotheses Multiple Comparisons of Means: Dunnett Contrasts Fit: lm(formula = weight ~ group, data = PlantGrowth) Linear Hypotheses: Estimate Std. Error t value Pr(>|t|) trt1 - ctrl == 0 -0.3710 0.2788 -1.331 0.323 trt2 - ctrl == 0 0.4940 0.2788 1.772 0.153 (Adjusted p values reported -- single-step method) ====== Reference ====== [[https://statistics.laerd.com/statistical-guides/one-way-anova-statistical-guide.php|One-way ANOVA]] in Laerd.com [[https://statistics.laerd.com/spss-tutorials/one-way-anova-using-spss-statistics.php|One-way ANOVA using SPSS]] in Laerd.com