10대, 20대, 30대의 평균 소비액, 정말로 유의미한 차이인지 확인하려면?
오늘은 매우 간단하면서도 유용한 분석 방법을 소개해 보려고 합니다.
일원배치 분산분석(One-way ANOVA)이 바로 그것인데요, 이 분석은 독립된 세 집단 이상의 평균을 비교하고자 할 때 사용하는 분석 방법입니다.
(좀 더 자세히는 평균의 차이가 의미가 있는지를 알아보고자 할 때 사용합니다.)
예를 들어서 설명해 볼까요?
연령대 별로 월 평균 게임에 사용하는 금액을 조사했더니, 10대는 18,200원, 20대는 20,500원 30대는 19,300원을 사용한다는 결과가 나왔다고 가정해 봅시다.
이러한 구매 금액이 정말로 유의미 한 차이인지는 어떻게 확인할 수 있을까요?
1,000원 정도씩 차이가 나는데, 이걸 차이가 있다고 보아야 하는 건지, 차이가 매우 근소하기 때문에 차이가 없다고 보아야 할 것 같기도 하고…
이럴 때 일원배치 분산분석을 사용하면 이러한 집단 간 평균 차이가 통계적으로 의미가 있는 숫자인지 아닌지를 판단할 수 있습니다.
소스: http://www.fomos.kr/esports
일원배치 분산분석은 실무적으로도 자주 사용하는 편입니다. 특히 플레이어 분석을 할때 연령대 별, 게임 이용 기간 대 별 등등 그룹으로 구분해서 보아야 할 때는 거의 필수적으로 사용하기 떄문에 알아두면 쓸모가 많은 분석 방법입니다.
게다가 매우 간단하기까지 한 녀석이죠. 예제로 한번 확인해 볼까요?
일원배치 분산 분석 예제
R에 내장되어 있는 iris 데이터 셋으로 1분만에 일원배치 분산분석을 해 봅시다.
일원배치 분산 분석을 할 때는 aov 함수와 bartlett.test 함수 두가지를 사용합니다.
먼저 aov으로 일원배치 분산분석(ANOVA)을 해 보겠습니다.
기본 적인 문법은 aov(대상변수~그룹변수, data=데이터명)의 순서인데요,
이때 주의해야 할 점은 그룹 변수는 factor 형이어야 한다는 것입니다.
(가지고 계신 데이터 셋으로 분석하실 때는 as.factor함수를 사용해서 변수 유형을 변경해 주세요.)
> analysis<-aov(Sepal.Width~Species, data=iris)
> summary(analysis)
Df Sum Sq Mean Sq F value Pr(>F)
Species 2 11.35 5.672 49.16 <2e-16 ***
Residuals 147 16.96 0.115
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
일원배치 분산분석 결과 P-value 값이 매우 작게 나와 귀무가설이 기각되었네요. (***표시) 이 결과만 보면” iris의 품종(Species) 별로 Sepal.Width 평균은 다르다”라고 판단할 수가 있겠습니다.
단, 일원배치 분산분석이 성립하기 위한 전제 조건이 있는데요, 바로 오차의 등분산성 검정입니다. bartlett.test함수를 사용하면 간단히 확인할 수 있습니다.
bartlett.test(Sepal.Width~Species, data=iris)
Bartlett test of homogeneity of variances
data: Sepal.Width by Species
Bartlett's K-squared = 2.0911, df = 2, p-value = 0.3515
p-value가 0.05보다 크므로 귀무가설을 기각할 수가 없겠네요. 오차의 등분산성 가정을 만족한다고 판단할 수가 있겠습니다.