1 Data 불러오기


getwd()
## [1] "C:/data"
library(readxl)
sales_data <- read_excel("sales_data.xlsx", sheet = "data")

2 데이터 시각화 및 주요 기술통계


데이터의 분포를 박스 플롯으로 시각화하고 주요 기술통계를 본다.


# boxplot

boxplot(Sales ~ Salesperson, 
        data = sales_data,
        main = "Boxplot of evaluation for each question", 
        xlab = "Factor Levels : questions", 
        ylab = "evauation")


# descriptive statistics by group
tapply(sales_data$Sales  , sales_data$Salesperson , summary)
## $salesperson1
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   5.000   5.750   9.500   9.333  12.500  14.000 
## 
## $salesperson2
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##    13.0    15.0    21.5    20.0    25.0    25.0 
## 
## $salesperson3
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   10.00   11.25   13.00   12.67   14.00   15.00


3 ANOVA 수행


제안별 수용도에서 하나 이상의 차이가 있는지 확인하기 위해 ANOVA를 수행한다.


# one-wayANOVA
result <- aov( Sales ~ Salesperson, data = sales_data )
summary(result)
##             Df Sum Sq Mean Sq F value  Pr(>F)   
## Salesperson  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
## 
##  Salesperson 
## Salesperson
## salesperson1 salesperson2 salesperson3 
##       -4.667        6.000       -1.333

일원 분산분석 결과 최소한 하나 이상의 오퍼에 대한 수용도 차이가 있다고 보인다. (p<0.05이므로)

Salesperson별 평균 대비 상대적 값을 본 결과, salesperson2의 실적이 높은 반면 1,3의 실적은 낮은 것으로 보인다.


4 정규성 검정


잔차의 정규성을 확인하기 위해서 aov() 함수의 결과에서 residuals를 뽑아서 정규성에 대해 가설검정을 해본다.


# plot(result)
shapiro.test(result$residuals)
## 
##  Shapiro-Wilk normality test
## 
## data:  result$residuals
## W = 0.93544, p-value = 0.2418


p-값> 0.05이므로 잔차의 정규성을 기각하지 못했다.


5 등분산성 검정


등분산성을 가설검정할 때 요인의 수준이 2 개인 경우에는 두 모집단의 분산의 차이 검정을 F-분포를 사용하여 수행할 수 있다. 이 경우에는 var.test() 함수를 이용하여 가설검정을 수행하였다. 그러나 요인의 수준이 3 개 이상인 경우에는 bartlet.test()을 사용한다.


# Bartlett test to test the null hypothesis of equal group variances: 등분산 검정
bartlett.test( Sales ~ Salesperson, data = sales_data )
## 
##  Bartlett test of homogeneity of variances
## 
## data:  Sales by Salesperson
## Bartlett's K-squared = 4.5187, df = 2, p-value = 0.1044


p-값>0.05이므로 등분산 가정을 기각하지 못했다.


6 다중 비교


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 = Sales ~ Salesperson, data = sales_data)
## 
## $Salesperson
##                                diff        lwr       upr     p adj
## salesperson2-salesperson1 10.666667   4.415126 16.918207 0.0013249
## salesperson3-salesperson1  3.333333  -2.918207  9.584874 0.3731837
## salesperson3-salesperson2 -7.333333 -13.584874 -1.081793 0.0209627

salesperson3과 1은 차이가 없다. 나머지 비교에서는 모두 차이가 있다. 따라서 다음과 같은 순서로 요약할 수 있다.

\[salesperson2>salesperson3=salesperson1\]


##------------------------------------------------------------------
## multiple comparison 
## - Scheffe test : scheffe.test()
##------------------------------------------------------------------

# install.packages('agricolae')
library(agricolae)

scheffe.test(result,"Salesperson",alpha = 0.05,group=TRUE,console=TRUE)
## 
## Study: result ~ "Salesperson"
## 
## Scheffe Test for Sales 
## 
## Mean Square Error  : 17.37778 
## 
## Salesperson,  means
## 
##                  Sales      std r       se Min Max   Q25  Q50  Q75
## salesperson1  9.333333 3.932768 6 1.701851   5  14  5.75  9.5 12.5
## salesperson2 20.000000 5.727128 6 1.701851  13  25 15.00 21.5 25.0
## salesperson3 12.666667 1.966384 6 1.701851  10  15 11.25 13.0 14.0
## 
## Alpha: 0.05 ; DF Error: 15 
## Critical Value of F: 3.68232 
## 
## Minimum Significant Difference: 6.53149 
## 
## Means with the same letter are not significantly different.
## 
##                  Sales groups
## salesperson2 20.000000      a
## salesperson3 12.666667      b
## salesperson1  9.333333      b


또 다른 다중 비교 방법인 scheffe test 결과도 동일한 판단을 했다.

\[salesperson2>salesperson3=salesperson1\]