내가 하는 통계 분석/R

[내가 하는 통계 분석] Welch's ANOVA in R

산격동 너구리 2021. 2. 8. 00:51

안녕하세요, 산격동 너구리입니다.

 

 

이번 포스팅은,

 

R을 이용한 "Welch's ANOVA"입니다.

 

저번 포스팅에서 독립표본 T 검정에서 등분산성이 만족되지 않을 때, Welch's T 검정을 한다고 말씀드렸습니다.

 

마찬가지로 ANOVA를 사용하려는데, 등분산성이 만족되지 않을 때, Welch's ANOVA를 사용하시면 됩니다.


개요

 

 

 Welch's ANOVA란??
3개 이상의 집단에 대한 평균 검정

ANOVA에서 등분산성 가정이 충족되지 않을 때 사용함.

 

 

 가정
정규성 가정 : 각각의 그룹에서 표본은 정규성을 가진다.

독립성 가정 : 표본은 서로 독립적이어야 한다.

만약 등분산성 가정이 충족된다면, ANOVA를 하시면 됩니다.

 

 가설
$H_0$ : 모든 모집단의 평균은 동일하다.

$H_1$ : 모든 모집단의 평균이 동일한 것은 아니다.

예제

07. [산격동 너구리] ANOVA 예제.csv
0.00MB

ANOVA와 동일한 파일로 진행하겠습니다.

 

A, B, C 고등학교 학생들의 하루 공부 시간을 조사했을 때,

 

고등학교 간에 공부 시간이 차이가 있는지 확인해보겠습니다.

 

위의 파일을 이용하였고, 통계적 유의수준은 0.05로 두었습니다.

 

데이터 불러오기
## 데이터 불러오기
data = read.csv("C:/Users/USER/Desktop/새 폴더/예제 파일/07. [산격동 너구리] ANOVA 예제.csv", header= T)

 

가정

1. 정규성 가정 확인

# 1) 정규성 가정
shapiro.test(subset(data, group == 'A')$time)
shapiro.test(data[data$group == 'B', 'time'])
shapiro.test(data[data$group == 'C', ]$time)

모든 그룹에서 p-value가 0.05보다 크므로 귀무가설을 채택합니다.

 

따라서, 모든 그룹에서 정규성 가정을 만족하는 것으로 판단할 수 있습니다.

 

 

2. 등분산성 가정 확인

# 2) 등분산성 가정
library(lawstat)
levene.test(data$time, data$group, location = "mean") # p-value = 0.801 > 0.05

p-value가 0.05보다 크므로 귀무가설을 채택합니다.

 

따라서, 세 그룹의 분산은 동일한 것으로 판단할 수 있습니다.

 

하지만, 현재 포스팅에서는 등분산성 가정이 만족되지 않았다고 생각하고 진행하겠습니다.

 

쉽게, 등분산성 검정에서 p-value가 0.05미만인 경우라고 보시면 됩니다.

 

 

3. 독립성 가정 확인

 

제가 알기로는 독립성 가정을 확인하는 검정은 따로 없습니다.

 

독립성 가정은 말 그대로 두 그룹이 독립적인지를 의미하는 것이므로

 

예시 상황에서는 표본 추출에서 문제가 없으면 독립성 가정을 만족했다고 볼 수 있겠습니다.

 

여기서는 만족했다고 생각하겠습니다.

 

가설
$H_0$ : 세 고등학교 학생들의 평균 학습 시간은 전부 같다.

$H_1$ : 세 고등학교 학생들의 평균 학습 시간이 전부 같은 것은 아니다.

예제를 위해 임의로 지정한 가설입니다.

 

상황에 맞추어 적절히 변형하시길 바랍니다.

 

Welch's ANOVA
## Welch's ANOVA
model_fin = oneway.test(time ~ group, data = data, var.equal = F)
model_fin

"group"변수에 대한 p-value가 0.05 미만이므로 귀무가설을 기각합니다.

 

따라서, "세 고등학교 학생들의 평균 공부시간에는 유의한 차이가 있다"라는 결론을 낼 수 있습니다.

 

 

이 때, 모든 고등학교가 서로 유의한 차이를 가질 수도 있지만,

 

하나의 고등학교만 유의한 차이를 보일 수도 있습니다.

 

그렇기 때문에 이것만으로는

 

세 고등학교 중 어느 고등학교가 유의한 차이를 보이는지에 대해서는 정확히 알 수가 없습니다.

 

이 때 사용하는 것이 사후분석입니다.

 

그 중 하나인 Games-Howell 방법으로 해보겠습니다.

 

사후 분석
## 사후분석
# devtools::install_github("matherion/userfriendlyscience", dependencies=TRUE) # 아래 코드가 작동되지 않으면 이 코드를 실행해보세요.
# install.packages("userfriendlyscience")
library(userfriendlyscience)
posthocTGH(data$time, data$group, method = "games-howell", conf.level = 0.95)

맨 마지막에 보면,

 

"B-A"는 p-value가 0.99이고, "C-A"와 "C-B"는 p-value가 <0.01임을 확인할 수 있습니다.

 

따라서, 

 

"C 고등학교 학생들의 공부시간이 A, B 고등학교 학생들의 공부시간보다 유의하게 높음"을 알 수 있으며,

 

"A, B 고등학교 학생들의 공부 시간은 유의한 차이가 없음"을 확인할 수 있습니다.

 


 

이것으로 R을 이용한 Welch's ANOVA에 대해 마치도록 하겠습니다.

 

이상, 산격동 너구리였습니다.

 

감사합니다.

 

 

 

* 잘못된 정보 및 오타가 포함되어 있을 수 있습니다.

  그대로 받아들이시기보다는 다른 사람의 의견도 참고하셔서 분석하시길 바랍니다.

 

* 포스팅 내용 및 통계 분석 관련 질문은 언제나 환영입니다.

  가능한 선에서 최대한 답변하도록 하겠습니다.