본문 바로가기
데이터 과학 시리즈/실무자를 위한

ANOVA 일원분산 분석이란?

by Career hacker 2021. 3. 22.
반응형

ANOVA 일원분산 분석이란?

안녕하세요. Career hacker입니다. 오늘부터 분산분석(Analysis of Variance;ANOVA) 방법을 알아보겠습니다. 오늘은 그 첫 순서로 일원분산분석(one-way ANOVA)에 대해 알아보겠습니다.

 

1. 분산분석이란?

분산분석은 연속형 종속변수(반응변수)와 범주형 독립변수(설명변수)를 갖는 데이터를 분석하기 위한 방법입니다. 실험계획법에서 집중적으로 연구한 분야이기도 합니다. 그러다 보니 종속변수라는 말보단 반응변수를 더 많이 사용합니다. 또한 독립변수도 요인(factor)라고 합니다.

 

범주형 독립변수는 질적 변수입니다. 즉, 성별, 거주 지역, 정치 성향과 같이 일정한 수준(level)을 갖는 변수들입니다. 가령 성별의 수준은 두 가지로 남, 여가 각각이에 해당합니다. 정치 성향은 진보, 중도, 보수로 나눈다면 수준은 세 가지가 됩니다. 즉, 각 범주형 독립변수가 갖는 값 유형이 바로 수준이 되는 것입니다.

 

[예제] A 쇼핑몰은 모바일 이용 고객을 대상으로 세 가지 유형의 오퍼 중 어떤 오퍼가 가장 효과가 높은지 확인하여 캠페인 하려 한다. 이를 위해 모바일 앱 설치 고객 30명을 임의추출하였고 A, B, C 총 세 가지 유형의 오퍼를 각 10명에게 보냈다. 각 고객의 오퍼 수령 후 24시간 내에 구매 금액을 측정 오퍼 유형에 따른 평균 구매금액 차이가 있는지 확인하려 한다.

 

[데이터]

구분

오퍼 유형(요인; factor)

A
(
수준; level)

B

C

구매 금액
(반응변수;
response)

59,700

35,200

50,900

61,500

34,500

48,800

59,500

38,100

49,600

60,000

34,500

49,800

60,200

32,200

48,800

59,100

33,000

50,000

59,300

33,200

50,200

59,600

32,000

48,300

60,100

32,100

50,800

57,400

34,200

50,200

 

분산분석은 범주형 독립변수의 수준이 3개 이상인 경우에 사용하는 방법입니다. 수준이 2인 경우 이표본 t-검정(two-sample t-test)를 이용합니다. 수준이 3개인 경우도 t-검정을 각 조합별로 한 번씩 하면 되는 거 아닐까요? 누구나 그렇게 생각할 수 있습니다. 하지만, 그렇게 할 경우 제1종 오류(type 1 error)를 통제하는 데에 문제가 생기게 됩니다. 통상 우리는 귀무가설이 참인데 대립가설이 참이라고 할 오류를 유의수준 0.05, 0.1, 0.01 등으로 통제하여 검정을 진행합니다.

 

하지만 t-검정을 이용해 각 조합별 유의수준을 0.05로 통제한다면 각 비교마다 5%의 오차가 발생할 가능성을 갖게 되고 이 조합수가 커질수록 전체적인 오차 가능성은 증가하게 되어 실험에 대한 1종 오류 통제가 불가능해집니다. 즉, "각 수준의 평균에 차이가 있는가?"에 대한 정확한 검정이 불가능해지는 것입니다. 이런 이유로 수준이 세 개 이상인 경우 분산분석을 이용해 각 수준 간의 모평균이 같은지 확인하게 되는 것입니다.

 

2. 일원분산분석 모형(one-way ANOVA model)

데이터가 위와 같을 때 어떻게 모형을 설정할 수 있을까요? 우선 "분산분석은 회귀분석의 특수한 경우"라는 점을 고려해 회귀모형에서 한 번 출발해 보도록 하겠습니다.

p 개의 독립변수를 갖는 데이터의 다중선형회귀모형(multiple linear regression)은 위와 같은 구조를 갖습니다. 자 그럼 위 모형을 일원분산분석으로 한정해 보겠습니다. 우선 절편(intercept)에 해당한 β0는 각 독립변수들이 고정되어 있을 때의 반응변수 y의 평균적인 변동이죠? 그런 의미에서 β0를 평균(mean)의 영문 첫 글자인 M의 그리 스어에 해당하는 μ(mu;뮤)로 바꾸도록 하겠습니다. 그리고 일원분산분석이기 때문에 독립변수는 우리는 수준이 i 개인 범주형 변수 하나입니다. 우선 다음과 같이 나타내 보겠습니다.

일단 이렇게 나타낼 수 있을 것 같습니다. 그런데 x가 가질 수 있는 값을 생각해 보면 각 수준에 따른 효과겠지요? 앞선 예를 기준으로 말씀드리면 오퍼 유형이 A 인지 B 인지 C 인지 여부입니다. 즉, x는 3가지 유형의 값만 가질 수 있습니다. 즉, 개별 관측치가 j 개이고 수준이 i인 경우 모형은 다음과 같이 재정의 될 수 있습니다.

 

위 모형의 τ(tau; 타우)는 처리(treatment)의 t에 해당하는 그리스어를 따와서 만든 처리효과(treatment effect)를 나타냅니다(실험 계획 번에서 주로 이렇게 사용). 엄청 복잡하게 설명했지만 [예제]에 적용하면 다음과 같이 모형을 세울 수 있습니다.

 

 

3. 일원분산분석의 가정과 위반

좀 이해가 되시나요? 이 모형을 통해서 알 수 있는 사실들이 몇 가지 있습니다. 우선 오차항의 분산은 동일하다는 것입니다. 이렇게 오차항의 분산이 처리수준에 따라 동일함을 가정하는 것을 등분산(equal variance) 가정이라고 합니다. 그리고 각 관측치는 정규분포를 가정합니다. 마지막으로 각 처리 수준 간 관측 데이터는 서로 독립임을 가정합니다.

 

(1) 등분산성 문제가 발생하는 경우

첫 번째 처리 수준을 잘 못 선정한 경우 분산이 다를 수 있습니다. 일단 처리 수준은 내 관측치들은 동질적이어야 합니다. 그런데 처리 수준을 선택할 때 이질적인 집단이 포함되어 있다면 문제가 생길 수 있겠습니다. 예를 들면, 처리 수준을 온도 구간으로 10℃~20℃, 21℃ ~30℃, 10℃ 미만과 100℃ 이상 이렇게 잡았다고 가정해 보겠습니다. 만약 온도 구간에 따라 반응 변수가 커지는 경향을 갖는다면, 마지막 수준(10℃ 미만과 100℃ )의 분산은 엄청 커지겠죠? 이질적인 관측치들이 모여 있기 때문입니다.

 

두 번째는 스케일이 다른 경우를 생각해 볼 수 있습니다. 분산은 단위에 영향을 받는 척도 모수입니다. 가령 A 그룹은 만 원단위로 데이터를 기록하고 B 그룹은 1000만 원단위로 데이터를 기록한 뒤 분석한다면 당연히 분산 차이가 크기 때문에 등분산 가정을 만족할 수 없습니다.

 

(2) 오차의 독립성이 위반되는 경우

처리 수준 간 독립성이 위반될 수 있는 예는 우선 A 수준에서의 상태가 B 수준에 영향을 주는 경우가 그에 해당합니다. 가령 A 오퍼를 받은 사람이 B 오퍼를 중복으로 받는 경우 독립성 문제가 발생할 수 있습니다. 오퍼를 줄 때 디바이스 id를 기준으로 하면, 같은 고객이 서로 다른 오퍼를 순차적으로 혹은 동시에 받게 됩니다. 그리고 이에 대한 구매금액은 A 오퍼 집단과 B 오퍼 집단에 모두 기록되게 됩니다. 즉, 이 둘은 서로 독립이 아니게 되는 것입니다. 이 외에도 시간에 따라 관측되는 실험이나 각 그룹별 관측치가 겹치는 경우 독립성 문제가 발생할 수 있습니다.

 

(3) 정규성 문제가 발생하는 경우

자료가 정규분포를 따르지 않는 경우의 대표적인 예는 고려되지 않은 요인이 있는 경우가 있을 수 있습니다. 각 중학교 1, 2, 3학년 학생의 키가 서로 다른가를 확인하기 위해 실험을 계획했다고 가정해 봅시다. 이때 각 학년 학생의 키는 평균적으로 당연히 3학년 학생이 클 것으로 기대됩니다. 하지만 자료의 분포는 정규분포를 따르지 않을 가능성이 매우 높습니다. 왜냐하면 키는 성별에 영향을 많이 받기 때문입니다. 즉, 평균은 174cm 일지라도 남녀를 구분하여 보는 것이 더 정확한 검정이 가능한 것입니다. 이 경우 키는 쌍봉분포를 이루게 됩니다.

 


4. 실험계획법의 3가지 원칙

앞선 문제들을 막기 위해 실험계획법(design of experiment; DOE)에서는 다음 3가지 기본 원칙을 제시하고 있습니다.

 

(1) 랜덤화

랜덤화는 실험 대상(앞선 예의 오퍼 대상 고객)을 임의로 추출하라는 것입니다. 즉, 표본추출에 임의성(randomness)를 적용하는 방법인데요. 우리가 고려하지 못한 요인들에 대한 효과를 차단하기 위한 방법입니다. 예를 들면, 아침 자율 학습 시간(30분, 40분, 1시간)에 따른 학업성취도 차가를 비교하는 경우를 생각해 보도록 하겠습니다. 실험 대상을 선정해 한 집단에는 30분, 한 집단에는 40분, 마지막 집단에는 1시간을 할당할 것입니다. 그런데 이때 임의 화가 반영되지 않아 30분 자율 학습 시간 집단이에 특목고 학생들이 몰렸다면? 어떻게 될까요? 자율 학습 시간 효과와 관계없이 기존 학업성취도에 의해 30분 자율 학습하는 것이 좋다는 결론에 이를 수 있습니다. 즉, 우리가 고려하지 못 한 요인에 의해 알고자 하는 요인의 효과가 가리어지게 되는 것입니다. 이런 다른 요인에 의한 효과를 막기 위해 임의화(randomization)을 이용합니다. 즉, 임의로 각 수준별 n 명을 선정하는 것이입니다.

 

(2) 블록화

블록화는 실험단위들이 균일하지 않은 경우 실험의 정도(precision)을 높이고 편향(bias)를 제거하기 위한 방법입니다. 앞선 학업성취도 예를 들어 설명하면, 학업성취도에 영향을 주는 요인 가령 학교 유형(자사고, 특목고, 일반고 등), 학생의 지능지수(IQ) 등을 모형에 포함시키는 것입니다. 즉, 영향을 주는 요인들을 함께 고려함으로 우리가 알고자 하는 요인의 효과를 명확하게 보는 것이 바로 블록화입니다. 통상 블록(block)은 우리가 관심 있는즉, 실험의 목적인 아침 자율학습 시간 외 요인들(관심은 없지만 학업성취도에 영향을 주는)을 말합니다.

 

(3) 반복화

통계에 기반한 모든 검정과 추정은 반복 관찰 수가 많으면 그 정도가 높아집니다. 왜일까요? 표본평균의 분산은 표본 수가 커지면 0으로 수렴합니다. 즉, 표본평균이 모 평균가 같아지기 때문에 변동이 없다는 것입니다. 그럼 더 정확한 비교가 되겠죠? 상식적으로 생각해 보아도 관찰 횟수를 늘리면 당연히 더 정확한 검정이 가능할 것입니다. 단지 그 횟수를 얼마나 할 것인가는 제약사항에 따라 다를 것입니다. 대부분 검정을 하는 목적은 소표본을 통해 주장하고자 하는 바를 지지하기 위함입니다. 사기업의 경우 파일럿 테스트가 이에 해당할 수 있는데 파일럿 테스트를 1,000만 명 이렇게 하면 비용과 리스크가 너무 크겠죠? 그래서 반복수가 많은 게 좋다는 것은 모두 알지만 무한정 늘릴 수 없는 것입니다.

반응형

댓글