3강 - 이원분산분석 (Two-way ANOVA)
두 요인의 주효과와 상호작용을 한 번에 검정한다
목차
- 이원분산분석이란?
- 왜 일원 ANOVA를 두 번 하면 안 되는가?
- 이원 ANOVA가 답하는 세 가지 질문
- 핵심 개념
- 주효과 (Main Effect)
- 상호작용효과 (Interaction Effect)
- 그래프로 보는 상호작용
- 상호작용이 유의할 때의 해석 전략
- 전제 조건
- 균형 설계 vs 비균형 설계
- 가설 설정
- 변동의 분해 — 수식과 원리
- 기본 용어와 기호
- 변동 분해 구조
- 각 제곱합(SS) 수식
- 자유도 (df)
- 평균 제곱(MS)과 F값
- 이원 ANOVA 요약표
- 상호작용이 유의할 때 — 단순주효과 분석
- 단순주효과 (Simple Main Effect)란?
- 분석 방법
- 해석 순서
- 효과크기 — 편에타제곱
- 사후검정
- 주효과의 사후검정
- 상호작용 유의 시의 사후검정
- 제곱합의 유형 (Type I, II, III SS)
- 왜 유형이 나뉘는가?
- Type I SS (순차적 제곱합)
- Type II SS (계층적 제곱합)
- Type III SS (편제곱합)
- 세 유형의 비교
- 수식으로 보는 차이
- Type III에서 코딩이 중요한 이유
- 실무 권장
- 일원 ANOVA와의 비교
- 실습 자료
이원분산분석이란?
두 개의 독립변인(요인)이 종속변인에 미치는 영향을 동시에 검정하는 방법이다. 일원 ANOVA가 하나의 요인만 분석했다면, 이원 ANOVA는 두 요인의 주효과와 상호작용효과를 한 번에 분석한다.
왜 일원 ANOVA를 두 번 하면 안 되는가?
예를 들어 “포지션(수비/공격)“과 “리그(K리그/프리미어리그)“가 스프린트 속도에 영향을 주는지 알고 싶다고 하자.
일원 ANOVA를 두 번(포지션별, 리그별) 따로 하면 두 가지 문제가 생긴다.
- 두 요인 간 상호작용을 탐지할 수 없다.
- 한 요인의 효과를 분석할 때 다른 요인의 변동이 잡음()에 포함되어 검정력이 떨어진다.
반면 이원 ANOVA는 포지션 리그를 동시에 분석하므로, 두 주효과와 상호작용효과를 모두 검정하고, 다른 요인의 변동을 분리해 내므로 잔차(잡음)가 줄어 검정력이 향상된다.
이원 ANOVA가 답하는 세 가지 질문
- 요인 A의 주효과 — 포지션에 따라 스프린트 속도에 차이가 있는가?
- 요인 B의 주효과 — 리그에 따라 스프린트 속도에 차이가 있는가?
- A B 상호작용효과 — 포지션의 효과가 리그에 따라 달라지는가?
핵심 개념
주효과 (Main Effect)
한 요인의 수준(level)에 따른 종속변인의 평균 차이다. 다른 요인의 수준을 모두 합쳐서(평균 내서) 비교한다.
포지션의 주효과를 볼 때는 다음과 같이 계산한다.
- 수비수(DF) 평균 = (K리그 수비 + 프리미어리그 수비) / 2
- 공격수(FW) 평균 = (K리그 공격 + 프리미어리그 공격) / 2
이 두 평균이 유의하게 다른가를 보는 것이 포지션의 주효과다. 즉 요인의 각 수준별 **주변 평균(marginal mean)**의 차이가 주효과다.
상호작용효과 (Interaction Effect)
한 요인의 효과가 다른 요인의 수준에 따라 달라지는 현상이다. “요인 A의 효과가 요인 B의 조건에 의존하는가?”를 묻는다.
상호작용 없음
- 수비수(DF): K리그 30, 프리미어리그 32 (차이 = 2)
- 공격수(FW): K리그 33, 프리미어리그 35 (차이 = 2)
리그 효과(+2)가 포지션과 관계없이 일정하므로 상호작용이 없다.
상호작용 있음
- 수비수(DF): K리그 30, 프리미어리그 32 (차이 = 2)
- 공격수(FW): K리그 33, 프리미어리그 33 (차이 = 0)
리그 효과가 수비수에서만 나타난다. 포지션에 따라 리그 효과가 다르므로 상호작용이 있다.
그래프로 보는 상호작용
포지션을 가로축, 속도를 세로축에 두고 리그별로 선을 그렸을 때,
- 두 선이 평행하면 상호작용이 없다.
- 두 선이 교차하거나 수렴(비평행)하면 상호작용이 있다.
상호작용이 유의할 때의 해석 전략
상호작용이 유의하면 주효과 해석에 주의가 필요하다. 주효과가 유의하더라도 그 효과가 모든 조건에서 동일하지 않을 수 있기 때문이다. 이때는 **단순주효과 분석(Simple Main Effect)**으로 세부 분석을 한다.
예를 들어 포지션 리그 상호작용이 유의하다면, “포지션의 효과를 K리그에서만 따로, 프리미어리그에서만 따로” 분석한다. 이것이 단순주효과 분석이다.
전제 조건
이원 ANOVA도 일원 ANOVA와 동일한 가정이 필요하다.
| 가정 | 의미 | 검정 방법 | 위반 시 대안 |
|---|---|---|---|
| 독립성 | 관측값이 서로 독립적 | 연구 설계로 확인 | 혼합모형 |
| 정규성 | 각 셀(cell)의 데이터가 정규분포 | Shapiro-Wilk (각 셀별) | 비모수 검정, 변환 |
| 등분산성 | 모든 셀의 분산이 동일 | Levene 검정 | Welch 보정, 변환 |
**셀(cell)**은 두 요인의 수준 조합이다. 포지션(2) 리그(2) = 4개 셀(수비-K리그, 수비-프리미어리그, 공격-K리그, 공격-프리미어리그)이며, 전제조건 검정은 각 셀별로 수행한다.
균형 설계 vs 비균형 설계
- 균형 설계(Balanced Design): 모든 셀의 표본 크기가 같다(예: 각 셀 10명). Type I, II, III SS가 동일한 결과를 내고, 가정 위반에 강건(robust)하다.
- 비균형 설계(Unbalanced Design): 셀마다 표본 크기가 다르다. Type III SS 사용이 권장되며(SPSS, R 기본값), 두 요인이 서로 혼재(confounding)될 수 있다.
가설 설정
이원 ANOVA에서는 세 쌍의 가설을 동시에 검정한다.
요인 A의 주효과
요인 B의 주효과
A B 상호작용효과
- : 요인 A와 B 사이에 상호작용이 없다(A의 효과가 B의 모든 수준에서 동일하다).
- : 요인 A와 B 사이에 상호작용이 있다(A의 효과가 B의 수준에 따라 달라진다).
변동의 분해 — 수식과 원리
기본 용어와 기호
| 기호 | 의미 |
|---|---|
| 요인 A의 수준 수 | |
| 요인 B의 수준 수 | |
| 각 셀의 표본 크기 (균형 설계 시) | |
| 전체 표본 수 () | |
| 요인 A의 번째 수준의 주변 평균 | |
| 요인 B의 번째 수준의 주변 평균 | |
| 셀의 평균 | |
| 전체 평균 (Grand Mean) |
변동 분해 구조
일원 ANOVA에서 였다면, 이원 ANOVA에서는 집단 간 변동()을 세 부분으로 추가 분해한다.
즉 전체 변동 = 요인 A 효과 + 요인 B 효과 + 상호작용 효과 + 잔차(오차)다. 일원 ANOVA의 에는 모든 집단 간 차이가 뭉뚱그려져 있었는데, 이원 ANOVA는 그 차이의 원인을 (1) 요인 A, (2) 요인 B, (3) 두 요인의 조합(상호작용)으로 구분한다.
각 제곱합(SS) 수식
요인 A의 제곱합
요인 A의 각 수준 주변 평균이 전체 평균에서 떨어진 정도다. 은 각 수준에 속한 전체 관측치 수(가중치)이며, 가 크면 요인 A의 수준에 따라 종속변인 평균이 많이 다른 것이다.
요인 B의 제곱합
요인 B의 각 수준 주변 평균이 전체 평균에서 떨어진 정도다.
상호작용 제곱합
셀 평균에서 두 요인의 주효과를 제거한 후 남는 변동이다. 각 항을 뜯어 보면,
- : 실제 셀 평균
- : 상호작용이 없다면 예측되는 셀 평균(두 주효과의 합)
- : 실제 셀 평균과 예측된 셀 평균의 차이 = 상호작용에 의한 편차
직관적으로 상호작용은 “실제 셀 평균 (전체 평균 + A의 효과 + B의 효과)”, 곧 두 주효과만으로 설명되지 않는 나머지다.
잔차 제곱합 (오차)
각 셀 안에서 개별 데이터가 해당 셀 평균에서 떨어진 정도다. 요인 A, B, 상호작용으로도 설명되지 않는 순수 개인차(오차)이며, 는 항상 성립한다.
자유도 (df)
자유도란 “자유롭게 변할 수 있는 값의 개수”다. 전체 정보 중에서 이미 사용된(고정된) 정보를 빼고 남은 수라고 생각하면 된다.
| 변동원 | 자유도 | 설명 |
|---|---|---|
| 요인 A의 수준 수 | ||
| 요인 B의 수준 수 | ||
| 주효과 자유도의 곱 | ||
| 셀 수 (셀 내 표본 수 ) | ||
| 전체 표본 수 |
— 개의 데이터가 있지만 전체 평균이라는 1개 제약이 걸린다. 전체 평균이 정해지면 마지막 1개는 자동 결정되므로 자유롭게 변하는 값은 개다. (세 수의 합이 15로 고정되면 앞의 두 수는 자유롭지만 세 번째는 자동 결정 → 자유도 2.)
— 요인 A에는 개 수준이 있고 각 수준의 주변 평균을 비교하지만, 이 평균들은 전체 평균이라는 제약을 받는다. 개 평균 중 마지막 1개는 나머지로부터 결정되므로 이다. 도 같은 논리다.
— 상호작용은 셀 평균에서 두 주효과를 제거한 나머지다. 전체 셀 수 에서 이미 사용된 정보를 뺀다.
예를 들어 포지션(2) 리그(2)면 , 포지션(3) 리그(3)면 다.
— 총 개 셀이 있고 각 셀에는 개 데이터가 있다. 각 셀 안에서 셀 평균이 1개 제약이므로 셀당 자유도는 , 전체는 이다.
자유도도 제곱합처럼 분해된다: . 포지션(2) 리그(2), 각 셀 , 일 때 로 검증된다.
평균 제곱(MS)과 F값
각 효과에 대해 MS를 구하고 각각 F값을 산출한다.
세 개의 F값을 각각 별도로 검정한다. 는 요인 A 주효과, 는 요인 B 주효과, 는 상호작용효과의 유의성을 검정한다.
이원 ANOVA 요약표
| 변동원 (Source) | SS | df | MS | F |
|---|---|---|---|---|
| 요인 A | ||||
| 요인 B | ||||
| A B | ||||
| 오차 (Within) | ||||
| 전체 (Total) |
상호작용이 유의할 때 — 단순주효과 분석
단순주효과 (Simple Main Effect)란?
한 요인의 특정 수준에서 다른 요인의 효과만 따로 분석하는 것이다. 상호작용이 유의할 때 “어떤 조건에서 효과가 나타나는가”를 구체적으로 파악한다.
- 요인 A(포지션)의 단순주효과: K리그에서 포지션 간 차이가 있는가? 프리미어리그에서 포지션 간 차이가 있는가?
- 요인 B(리그)의 단순주효과: 수비수에서 리그 간 차이가 있는가? 공격수에서 리그 간 차이가 있는가?
분석 방법
각 수준별로 독립적인 일원 ANOVA 또는 t검정을 실시한다. 오차항()은 원래 이원 ANOVA의 를 사용하는 것이 일반적이며(pooled error term), 다중비교 보정(Bonferroni 등)을 적용한다.
예를 들어 요인 B(리그)의 단순주효과를 보면, 수비수는 K리그(30.0) vs 프리미어리그(32.0)로 차이 2.0, 공격수는 K리그(33.0) vs 프리미어리그(33.0)로 차이 0.0이다. 곧 “리그의 효과는 수비수에서만 나타난다”고 해석한다.
해석 순서
- 상호작용효과를 먼저 확인한다. 유의하지 않으면 주효과를 각각 해석하고 사후검정으로 넘어간다.
- 상호작용이 유의하면 단순주효과 분석을 실시한다.
- 단순주효과가 유의한 수준에서 (3수준 이상일 때) 사후검정을 한다.
- 주효과 해석 시 “상호작용이 있으므로 조건부로 해석”임을 명시한다.
효과크기 — 편에타제곱
이원 ANOVA에서는 **편에타제곱()**을 사용한다. 일반 가 아닌 를 쓰는 이유는 다음과 같다.
이 경우 다른 요인의 효과가 에 포함되어 있어 과소추정된다. 반면,
는 다른 요인의 변동을 제거하고 해당 효과의 순수 설명력을 계산한다.
| 효과 | 수식 |
|---|---|
| 요인 A | |
| 요인 B | |
| A B |
해석 기준(Cohen): 작은 효과, 중간 효과, 큰 효과.
사후검정
주효과의 사후검정
요인의 수준이 3개 이상이고 주효과가 유의할 때 실시한다. 2수준(예: 수비/공격)이면 이미 어디가 다른지 명확하므로 사후검정이 불필요하다. Tukey HSD, Bonferroni 등 일원 ANOVA와 동일한 방법을 쓴다.
상호작용 유의 시의 사후검정
단순주효과 분석 후, 유의한 단순주효과 내에서 쌍별 비교를 한다. 다중비교 보정은 필수다.
제곱합의 유형 (Type I, II, III SS)
왜 유형이 나뉘는가?
이원 ANOVA에서 를 분해할 때, 균형 설계에서는 요인 간이 직교(orthogonal)하여 겹침 없이 깔끔하게 분해된다. 그러나 비균형 설계에서는 요인 A와 B의 효과가 “겹치는” 영역이 생긴다. 이 겹치는 부분을 A에 줄 것인지 B에 줄 것인지, 그 처리 방식의 차이가 Type I, II, III다.
비균형은 특정 조건에서 선수가 부상으로 탈락하거나, 데이터가 일부 누락되거나, 자연적으로 집단 크기가 다를 때(예: 포지션별 선수 수) 발생한다.
Type I SS (순차적 제곱합)
모델에 투입된 순서대로 각 요인의 SS를 계산한다. 먼저 들어간 요인이 겹치는 영역을 독차지한다(투입 순서 A → B → AB).
- : A를 먼저 투입하여 A가 설명하는 모든 변동(겹치는 부분 포함)
- : A를 이미 빼고 난 후 B가 추가로 설명하는 변동
- : A, B를 빼고 난 후 상호작용이 추가로 설명하는 변동
케이크를 순서대로 나눠 가지는 것과 같다. A가 먼저 원하는 만큼 가져가고 B는 남은 것에서 가져가므로, A의 SS가 과대추정되고 B의 SS가 과소추정된다. 순서를 바꾸면 결과가 달라진다. 투입 순서에 이론적/시간적 근거가 있을 때 사용하며(예: 선천적 성별 효과를 먼저 통제한 후 훈련 방법의 추가 효과), R의 anova() 기본값이다.
Type II SS (계층적 제곱합)
각 주효과의 SS를 계산할 때 같은 수준의 다른 주효과는 통제하되, 상호작용은 포함하지 않는다.
- : B를 통제한 후 A의 고유 효과 (AB는 고려하지 않음)
- : A를 통제한 후 B의 고유 효과 (AB는 고려하지 않음)
- : A와 B를 통제한 후 상호작용의 고유 효과
겹치는 부분은 둘 다 안 가져가므로 순서에 영향받지 않는다(Type I 문제 해결). 다만 상호작용이 있으면 주효과 추정이 부정확할 수 있어, 상호작용이 없다고 가정할 수 있을 때 사용한다. R의 car::Anova() 기본값이다.
Type III SS (편제곱합)
각 효과의 SS를 계산할 때 다른 모든 효과(주효과 + 상호작용)를 통제하여 각 효과의 순수한 고유 기여분만 추출한다.
- : B와 AB를 모두 통제한 후 A만의 고유 효과
- : A와 AB를 모두 통제한 후 B만의 고유 효과
- : A와 B를 모두 통제한 후 상호작용만의 고유 효과
겹치는 부분은 누구에게도 배정하지 않으므로 가장 보수적이지만, 순서에 무관하고 상호작용 유무에도 안정적이다. 대부분의 상황에서 기본 권장되며 SPSS의 기본값이다. R에서는 sum coding 설정 후 Anova(model, type=3)으로 지정한다.
세 유형의 비교
| Type I (순차적) | Type II (계층적) | Type III (편) | |
|---|---|---|---|
| 겹침 처리 | 먼저 투입된 요인이 독차지 | 겹침은 아무에게도 안 줌, 상호작용 무시 | 겹침은 아무에게도 안 줌, 상호작용 포함 |
| 순서 의존 | O | X | X |
| 상호작용 고려 | 마지막에 계산 | 주효과 계산 시 무시 | 주효과 계산 시 포함 |
| 비균형 설계 | 순서에 따라 다른 결과 | 상호작용 없으면 최적 | 가장 안전 |
| 소프트웨어 기본값 | R anova() | R car::Anova() | SPSS, SAS |
균형 설계에서는 세 유형이 모두 동일한 결과를 낸다.
수식으로 보는 차이
모형이 일 때, 를 “괄호 안 항들로 설명되는 변동”이라 하면,
Type I (순서 A → B → AB):
Type II:
Type III:
Type III에서 코딩이 중요한 이유
Type III SS는 회귀계수가 0인지를 검정하는데, 범주형 변수를 숫자로 변환하는 코딩 방식에 따라 회귀계수의 의미가 달라진다. 따라서 코딩을 잘못 쓰면 Type III 결과가 왜곡된다.
**Treatment Coding(더미 코딩, Python/R 기본값)**은 하나의 수준을 기준(reference)으로 잡고 나머지를 기준 대비 차이로 표현한다. 포지션(수비/미드/공격)에서 수비를 기준으로 하면 = 수비 평균, = 미드 수비, = 공격 수비다.
**Sum Coding(합계 코딩, SPSS/SAS 기본값)**은 기준 집단 없이 각 수준을 전체 평균(Grand Mean) 대비 차이로 표현한다. 각 열의 합이 0이 되며, = 전체 평균, = 전체 평균 대비 차이다.
Type III SS는 “이고 인가?”를 검정한다. 그런데,
- Treatment + Type III: ”?”은 “미드 = 수비이고 공격 = 수비인가?”가 되어 기준 집단과만 비교한다. “포지션 전체의 효과”가 아니라 “기준 집단에서의 효과”로 왜곡된다.
- Sum + Type III: ”?”은 “모든 수준의 평균이 전체 평균과 같은가?”가 되어, 우리가 원하는 “포지션의 주효과가 있는가?”를 정확히 검정한다.
정리하면, Type I과 II는 코딩 방식에 관계없이 SS가 동일하지만, Type III에서만 코딩이 결과에 영향을 주므로 Sum Coding이 필수다.
실무 권장
- 설계가 균형이면 Type I = II = III이므로 아무거나 써도 된다.
- 비균형 + 상호작용 유의면 Type III를 사용한다(상호작용을 통제하고 주효과 추정).
- 비균형 + 상호작용 비유의면 Type II(검정력이 약간 높음) 또는 Type III(더 보수적이나 안전)를 쓴다.
확신이 없으면 Type III가 가장 안전하며, 논문에서는 어떤 Type을 사용했는지 반드시 명시한다.
일원 ANOVA와의 비교
| 구분 | 일원 ANOVA | 이원 ANOVA |
|---|---|---|
| 독립변인 수 | 1개 | 2개 |
| 검정하는 효과 | 1개 (주효과) | 3개 (주효과 2 + 상호작용 1) |
| 변동 분해 | ||
| 오차항() | 집단 차이 외 모든 변동 | 두 요인 + 상호작용 제거 후 남은 변동 → 더 작음 |
| 검정력 | 상대적으로 낮음 | 요인 B와 상호작용 분리 → 향상 |
| 효과크기 | (편에타제곱) | |
| 사후 분석 | 사후검정 | 단순주효과 분석 + 사후검정 |