library(readxl)
c5 <- read_excel("C:/Download/7_sales_data.xlsx", sheet = "data1")
c5$영업사원 <- as.factor(c5$영업사원)
c5## # A tibble: 18 × 2
## 영업사원 매출
## <fct> <dbl>
## 1 영업사원1 13
## 2 영업사원2 25
## 3 영업사원3 14
## 4 영업사원1 5
## 5 영업사원2 25
## 6 영업사원3 15
## 7 영업사원1 11
## 8 영업사원2 25
## 9 영업사원3 11
## 10 영업사원1 5
## 11 영업사원2 14
## 12 영업사원3 10
## 13 영업사원1 8
## 14 영업사원2 18
## 15 영업사원3 14
## 16 영업사원1 14
## 17 영업사원2 13
## 18 영업사원3 12
# summary(c5)
# is.data.frame(c5)
# length(c5)데이터의 분포를 박스 플롯으로 시각화하고 주요 기술통계를 본다.
# boxplot
boxplot(c5$매출 ~ c5$영업사원,
main = "Boxplot of evaluation for each salesperson",
xlab = "Factor Levels : Salesperson",
ylab = "Sales")# descriptive statistics by group
tapply(c5$매출, c5$영업사원, summary)## $영업사원1
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 5.000 5.750 9.500 9.333 12.500 14.000
##
## $영업사원2
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 13.0 15.0 21.5 20.0 25.0 25.0
##
## $영업사원3
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 10.00 11.25 13.00 12.67 14.00 15.00
제안별 수용도에서 하나 이상의 차이가 있는지 확인하기 위해ANOVA를 수행한다.
# one-wayANOVA
result <- aov(매출 ~ 영업사원, data = c5)
summary(result)## Df Sum Sq Mean Sq F value Pr(>F)
## 영업사원 2 357.3 178.67 10.28 0.00154 **
## Residuals 15 260.7 17.38
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
# anova(result)
model.tables(result) # 전체 평균 대비 각 그룹 수용도의 차이## Tables of effects
##
## 영업사원
## 영업사원
## 영업사원1 영업사원2 영업사원3
## -4.667 6.000 -1.333
잔차의 정규성을 확인하기 위해서 aov() 함수의 결과에서 residuals를 뽑아서 정규성에 대해 가설검정을 해본다. p-값> 0.05이므로 잔차의 정규성을 기각하지 못했다.
# plot(result)
shapiro.test(result$residuals)##
## Shapiro-Wilk normality test
##
## data: result$residuals
## W = 0.93544, p-value = 0.2418
등분산성을 가설검정할 때 요인의 수준이 2 개인 경우에는 두 모집단의 분산의 차이 검정을 F-분포를 사용하여 수행할 수 있다. 이 경우에는 var.test() 함수를 이용하여 가설검정을 수행하였다. 그러나 요인의 수준이 3 개 이상인 경우에는 bartlet.test()을 사용한다. p-값>0.05이므로 등분산 가정을 기각하지 못했다.
# Bartlett test to test the null hypothesis of equal group variances: 등분산 검정
bartlett.test(매출 ~ 영업사원, data = c5)##
## Bartlett test of homogeneity of variances
##
## data: 매출 by 영업사원
## Bartlett's K-squared = 4.5187, df = 2, p-value = 0.1044
ANOVA 분석을 통해 평균이 같다는 귀무가설이 기각되면, 어는 수준 간의 차이에 의해 귀무가설이 기각되었는지 살펴보아야 한다. 이를 살펴보는 방법 중 하나가 가능한 모든 두 수준 간에 평균의 차이가 있었는지를 가설검정해 보는 것이다. 이는 두 모집단 간의 모평균 비교와 같아진다. 다만 수준이 많은 경우 단순히 두 수준 간의 평균의 차이를 가설검정하는 것은 여러 개의 가설을 동시적으로 검정하는 것이 되어서 기각역 또는 p-값의 조정이 필요하다. R의 기본 기능에 포함되어 있는 TukeyHSD() 함수는 이러한 수준별 쌍 비교를 수행해 준다.
##------------------------------------------------------------------
## multiple comparison
## - Tukey's HSD(honestly significant difference) test : TukeyHSD()
##------------------------------------------------------------------
TukeyHSD(result)## Tukey multiple comparisons of means
## 95% family-wise confidence level
##
## Fit: aov(formula = 매출 ~ 영업사원, data = c5)
##
## $영업사원
## diff lwr upr p adj
## 영업사원2-영업사원1 10.666667 4.415126 16.918207 0.0013249
## 영업사원3-영업사원1 3.333333 -2.918207 9.584874 0.3731837
## 영업사원3-영업사원2 -7.333333 -13.584874 -1.081793 0.0209627