ANOVA 분석을 통한 와인의 색상에 따른 알코올 농도의 차이 분석
# #1. 가설 설정
# 귀무가설 H₀ : 와인의 색상에 따라 알코올 농도의 차이는 없다.
# 대립가설 H₁ : 와인의 색상에 따라 알코올 농도의 차이가 있다.
# #2. 데이터 확인
wine <- read.csv('wine.csv', header = T)
head(wine)
nrow(wine) # 117개
# #3. 와인 색상별 데이터 구간을 low, medium, high로 나누기
wine$ColorCat <- cut(
wine$Color,
breaks = quantile(wine$Color, probs = seq(0, 1, by = 1 / 3)),
include.lowest = T,
labels = c('low', 'medium', 'high')
)
View(wine)
# #4. 기술 통계량 계산
tapply(wine$Alcohol, wine$ColorCat, mean)
# low : 12.25102
# medium : 13.26237
# high : 13.46932
# #5. ANOVA 분석
anova_color <- aov(Alcohol ~ ColorCat, data = wine)
summary(anova_color)
# p-value: <0.0000000000000002
# p-value가 매우 작으므로, 색상 카테고리에 따른 알코올 농도 차이가
# 통계적으로 유의미하다고 볼 수 있음
# #6. 사후 검정
TukeyHSD(anova_color)
# medium - low: 차이 1.011, p-value = 0.000
# high - low: 차이 1.218, p-value = 0.000
# high - medium: 차이 0.207, p-value = 0.161
# #7. 정규성 검정
shapiro.test(residuals(anova_color))
# p-value = 0.8993
# 데이터가 정규성을 따르는 것으로 보임
graphics.off()
par(pty = "s")
qqnorm(residuals(anova_color))
qqline(residuals(anova_color))
# 대부분의 점들이 대각선에 가깝게 위치하고 있으므로
# 정규성을 만족하는 것으로 보임
# #8. 등분산성 검정
bartlett.test(Alcohol ~ ColorCat, data = wine)
# p-value = 0.1158
# 분산이 서로 유사한 것으로 보임
# #9. 데이터 시각화
graphics.off()
par(pty = "s")
boxplot(Alcohol ~ ColorCat, data = wine,
xlab = 'Color Category', ylab = 'Alcohol',
col = c('indianred', 'brown', 'darkred')
)
x축 : 와인 색상별 카테고리 (Low, Medium, High)
y축 : 알코올 농도
# #10. 결과 해석
summary_result <- summary(anova_color)
p_value <- summary_result[[1]][['Pr(>F)']][1]
p_value # 0.000000000000000000000281909
if(p_value < 0.05) {
print('와인의 색상에 따른 알코올 농도 차이가 통계적으로 유의미합니다.')
} else {
print('와인의 색상에 따른 알코올 농도 차이는 통계적으로 유의미하지 않습니다.')
}
결론 : 와인의 색상에 따른 알코올 농도 차이가 통계적으로 유의미하다고 볼 수 있다.