상세 컨텐츠

본문 제목

R에서 일원배치분산분석(One-Way ANOVA)

프로그래밍/Big Data

by 삶의 재발견 2018. 1. 18. 11:48

본문

반응형

일원배치 분산분석(One-Way ANOVA)을 수행할 때 주의해야 할 사항은 다음 3가지 입니다.


1. 독립성: 독립변수의 그룹군은 상호 독립적이어야 함

2. 정규성: 독립변수에 대한 종속변수는 정규분포를 만족해야 함

3. 등분산성: 독립변수에 대한 종속변수의 분산은 각 군마다 동일해야 함


따라서 R을 이용한 One-Way ANOVA에서도 위의 가정을 확인 후 진행을 해야 합니다.


iris 데이터에서 Species별 Sepal.Width에 대한 분석을 예로들어 진행하면 다음과 같습니다.


1. 먼저 정규성 검증을 위해서는 Shapiro-Wilk를 수행합니다.


> tapply(iris$Sepal.Width, iris$Species, shapiro.test)


$setosa


Shapiro-Wilk normality test


data:  X[[i]]

W = 0.97172, p-value = 0.2715


$versicolor


Shapiro-Wilk normality test


data:  X[[i]]

W = 0.97413, p-value = 0.338


$virginica


Shapiro-Wilk normality test


data:  X[[i]]

W = 0.96739, p-value = 0.1809


3개 그룹의 p-value가 모두 0.05 이상이므로 독립변수가 정규성을 충족합니다.


2. 종속변수의 등분산성을 검증을 위해 bartlett과 levene 검증을 수행합니다.


> 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보다 크므로 등분산성을 충족합니다.


> library(car)   # Levene 검증을 위해 car 패키지를 활용해야 합니다.

> leveneTest(Sepal.Width~Species, data=iris)

Levene's Test for Homogeneity of Variance (center = median)

       Df F value Pr(>F)

group   2  0.5902 0.5555

      147     


p-value가 0.05보다 크므로 등분산성을 충족합니다.


3. 정규성과 등분산성을 충족하므로 One-Way ANOVA를 수행합니다.


One-Way ANOVA 수행을 위한 여러 함수가 있지만, 가장 편리하고 많은 정보를 주는 oneway()를 추천합니다.

userfriendlyscience 패키지를 설치하고 실행해야 합니다.


> library(userfriendlyscience)

> oneway(iris$Species, 

       y = iris$Sepal.Width, 

       fullDescribe=TRUE, 

       corrections=TRUE)


### Oneway Anova for y=Sepal.Width and x=Species (groups: setosa, versicolor, virginica)


Omega squared: 95% CI = [.28; .49], point estimate = .39

Eta Squared: 95% CI = [.3; .48], point estimate = .4


                                   SS  Df   MS     F     p

Between groups (error + effect) 11.34   2 5.67 49.16 <.001

Within groups (error only)      16.96 147 0.12            


### Welch correction for nonhomogeneous variances:


F[2, 97.4] = 45.01, p < .001.


### Brown-Forsythe correction for nonhomogeneous variances:


F[2, 142.65] = 49.16, p < .001.


4. 마지막으로 결과를 해석합니다.


F값이 49.16이며 p-value가 0.05 이하이므로 그룹별 평균의 차이가 통계적으로 유의미합니다.

만일 독립변수의 등분산성이 충족되지 않는 경우에는 밑에 있는 Welch와 Brown-Forsythe의  p-value를 참조해야 합니다.


5. 추가


3단계에서 Levene를 생략하고 다음과 같이 oneway()에서 Levene를 실행할 수 도 있습니다.


> oneway(iris$Species, 

       y = iris$Sepal.Width, 

       levene=TRUE, 

       fullDescribe=TRUE, 

       corrections=TRUE)



반응형

관련글 더보기