14장: 분산분석
Reporting Date: August. 8, 2024
셋 이상의 모집단 간의 평균을 비교하는 방법으로서 널리 사용되는
분산분석 ( Analysis of Variance, ANOVA ) 에 대해 다루고자 한다.
목차
1. 자료의 입력
2. 일원배치 분산분석법
예제1
2-1. 처리제곱합(Treatments Sum of Squares, SStr)2-2. 오차제곱합(Error Sum of Squares, SSE)2-3. 총제곱합(Total Sum of Squares, SST)
2-4. 분산분석표(ANOVA table)
2-5. 제곱합의 간편 계산식
3. 일원배치 분산분석법의 추론
3-1. F 분포
예제4
1 . 자 료 의 입 력
## 교재 출처 최하단에 표시 ##
# 예제 4: 예제 1의 자료를 가지고 파이썬을 이용하여 분산분석을 수행하라.
# 예제 1: 안경의 표면 손상을 방지하려고 A, B, C, D의 네 종류의 코팅처리에 대하여
# 표면보호에 얼마나 효과가 있는지를 비교하여 보았다.
import numpy as np
import pandas as pd
y = np.array([10, 15, 8, 12, 15, 14, 18, 21, 15, 17, 16,
14, 15, 17, 15, 18, 12, 15, 17, 15, 16, 15])
treat = np.repeat([ 'A', 'B', 'C', 'D'], [5, 4, 7, 6])
data = pd.DataFrame({'y' : y, 'treat' : treat})
# 이 자료로부터 네 종류 코팅처리의 평균 마모도에 차이가 있다고 할 수 있는가?
2 . 일 원 배 치 분 산 분 석 법 ( one-way ANOVA )
모집단 간의 변동과 모집단 내의 변동으로만 나누어 분석하는 방법에 대해 다루고자 한다.
분산분석 기법이 실제로는 상당히 복잡한 문제에도 적용되는 통계적 기법이나
여기서는 두 가지 변동 요인만을 고려하기로 한다.
여러 가지 처리를 동시에 비교하는 것은
시간과 비용 면에서 효율적일 수 있다.
전체 n = n₁, n₂, …, nₖ 개의 실험단위를 아래와 같이 배치를 한다:
n₁ 개의 실험단위 ⇨ 처리 1,
n₂ 개의 실험단위 ⇨ 처리 2,
⋮
nₖ 개의 실험단위 ⇨ 처리 k
원칙적으로 전체 n 개의 실험단위에서 자료를 얻는 순서는 완전 랜덤하게 한다.
이것의 특별한 경우, k = 2 인 경우가 바로 12 장에서 다뤘던 두 모집단의 비교이다.
다음의 표는 각각의 처리에서 측정한 반응치들로 이루어진 자료의 구조를 보여 준다:
( yᵢⱼ ⇨ i 번째 처리의 j 번째 관측값 )
예제1
이 자료로부터 네 종류 코팅처리의 평균 마모도에 차이가 있다고 할 수 있는가?
분석을 하기 위해 먼저 각 관측값들을 구성요소들로 분해해야 한다:
표에 있는 자료를 이용하여 위와 같이 분해하면 다음의 행렬모양이 된다:
2 - 1 . 처 리 제 곱 합 ( Treatments Sum of Squares, SStr )
만일 네 가지의 코팅에서 얻어진 평균 마모도에 차이가 없다면,
처리효과의 행렬의 값들이 거의 0 에 가까워져야만 할 것이다.
전체 처리효과들의 변동을 측정하는 양으로
이 행렬에 속하는 모든 원소들의 제곱합을 계산하면 다음과 같다:
2 - 2 . 오 차 제 곱 합 ( Error Sum of Squares, SSE )
잔차는 각 관측값과 그 관측값이 속한 처리평균과의 편차이다.
잔차에 의한 변동들은 모든 잔차들의 제곱합으로 측정한다:
2 - 3 . 총제곱합( Total Sum of Squares, SST )
총평균에 대한 편차는 다음의 행렬로 주어진다:
이 자료에서 나타난 총변동은 이 모든 편차들의 제곱합으로 측정된다:
총제곱합 164는 처리제곱합 68에 오차제곱합 94를 더한 값이다:
이제 각 제곱합에 연관된 자유도를 분해해보자:
위 식을 바탕으로 각각의 자유도는 다음과 같다:
2 - 4 . 분 산 분 석 표 ( ANOVA table )
제곱합과 자유도를 분해한 것을 정리한 표.
이 표에는 보통 평균제곱 ( Mean Square ) 이라는 항목이 추가되어 있는데
이는 다음과 같이 정의된다:
k개의 처리를 비교하기 위한 분산분석표:
2 - 5 . 제 곱 합 의 간 편 계 산 식
3 . 일 원 배 치 분 산 분 석 법 의 추 론
처리 효과들 사이에 차이가 있는지를 통계적으로 검정하려면 실험 모집단에 대한 모형이 있어야 한다.
비교하려는 처리가 k개이고 각 처리에서 반복측정을 nᵢ ( i = 1, ⋯, k ) 번 할 때,
i 번째 처리에서 j 번째 관측한 반응값을 Yᵢⱼ 라고 하면 Yᵢⱼ 는 다음과 같이 표현할 수 있다:
- μ 는 i 번째 자리의 모평균이고, 오차항 εᵢⱼ 은 모두 서로 독립이다.
- 정규분포 N ( 0 , σ ² ) 을 따른다.
3 - 1 . F 분 포
k 개의 모집단의 모평균이 차이가 없다는 귀무가설을 식으로 나타내면 다음과 같다:
위 귀무가설이 맞을 경우, 처리효과의 값들이 작아질 것이고
이것의 함수인 평균처리제곱도 작아질 것이다.
따라서 평균처리제곱의 크고 작음에 따라 귀무가설의 기각여부를 결정하여야 하는데,
그 기준이으로 공통분산 σ ² 의 추정치인 평균오차제곱 ( MSE = s ² )이 쓰인다.
위 비율은 F 분포에 대한 검정 통계량이 된다:
F 분포는 카이제곱분포와 마찬가지로
양수의 구간에서만 확률값을 갖는 분포이며, 대칭이 아니다.
분포의 모양은 카이제곱분포와 달리
분자와 분모 두 개의 자유도에 의하여 결정된다:
검정통계량의 분포는 귀무가설 ( H ₀ ) 이 맞을 때
자유도가 ( k – 1, n – k )인 F 분포를 따르고 유의수준 α 의 기각역은 다음과 같다:
예제4
분산분석을 수행하라.
# statsmodels 라이브러리를 설치 (아래 모듈 임포트가 안될 경우 사용)
pip install statsmodels
import statsmodels.api as sm
import statsmodels.formula.api as smf
# 모델 적합하기
ImFit = smf.ols('y ~ treat', data=data).fit()
# ANOVA 수행하기
sm.stats.anova_lm(ImFit)
## 해석: 각 변동 요인별로 자유도(df), 제곱합(sum_sq),
## 평균제곱(mean_sq), F값과 유의확률(PR(>F))인 P–값을 보여준다.
## 처리(treat)의 P–값이 0.1814이므로
## 처리들의 효과는 유의수준 5%나 2.5%에서도 서로 같지 않다고 결론내릴 수 있다.
Mapo금빛나루 | | 공유 마당 (copyright.or.kr)
아래 첨자 / 첨자 기호 (piliapp.com)
Symbols (wumbo.net)
참고용 블로그: 작은 숫자 특수문자 첨자 및 분수숫자 모음
교제: 통계학: 파이썬을 이용한 분석