Two Way Anova

set.seed(123)
wilayah <- factor(rep(c("Wilayah A", "Wilayah B", "Wilayah C"), each = 30))
pendidikan <- factor(rep(c("SMA", "Sarjana"), times = 45))
penjualan <- c(rnorm(30, mean = 500, sd = 50),  # Wilayah A, SMA
               rnorm(30, mean = 550, sd = 60),  # Wilayah B, SMA
               rnorm(30, mean = 600, sd = 55),  # Wilayah C, SMA
               rnorm(30, mean = 700, sd = 50),  # Wilayah A, Sarjana
               rnorm(30, mean = 750, sd = 60),  # Wilayah B, Sarjana
               rnorm(30, mean = 800, sd = 55))  # Wilayah C, Sarjana
data <- data.frame(wilayah, pendidikan, penjualan)
head(data)
##     wilayah pendidikan penjualan
## 1 Wilayah A        SMA  471.9762
## 2 Wilayah A    Sarjana  488.4911
## 3 Wilayah A        SMA  577.9354
## 4 Wilayah A    Sarjana  503.5254
## 5 Wilayah A        SMA  506.4644
## 6 Wilayah A    Sarjana  585.7532
boxplot(penjualan ~ wilayah * pendidikan, data = data, 
        main = "Penjualan Berdasarkan Wilayah dan Tingkat Pendidikan",
        xlab = "Wilayah dan Tingkat Pendidikan", ylab = "Penjualan", col = "orange", las = 2)

# Membuat QQ Plot untuk memeriksa normalitas
par(mfrow = c(2, 3))  # Membagi plot menjadi 6 bagian
qqnorm(data$penjualan[data$wilayah == "Wilayah A" & data$pendidikan == "SMA"], main = "Wilayah A - SMA")
qqline(data$penjualan[data$wilayah == "Wilayah A" & data$pendidikan == "SMA"], col = "green")

qqnorm(data$penjualan[data$wilayah == "Wilayah B" & data$pendidikan == "SMA"], main = "Wilayah B - SMA")
qqline(data$penjualan[data$wilayah == "Wilayah B" & data$pendidikan == "SMA"], col = "green")

qqnorm(data$penjualan[data$wilayah == "Wilayah C" & data$pendidikan == "SMA"], main = "Wilayah C - SMA")
qqline(data$penjualan[data$wilayah == "Wilayah C" & data$pendidikan == "SMA"], col = "green")

qqnorm(data$penjualan[data$wilayah == "Wilayah A" & data$pendidikan == "Sarjana"], main = "Wilayah A - Sarjana")
qqline(data$penjualan[data$wilayah == "Wilayah A" & data$pendidikan == "Sarjana"], col = "green")

qqnorm(data$penjualan[data$wilayah == "Wilayah B" & data$pendidikan == "Sarjana"], main = "Wilayah B - Sarjana")
qqline(data$penjualan[data$wilayah == "Wilayah B" & data$pendidikan == "Sarjana"], col = "green")

qqnorm(data$penjualan[data$wilayah == "Wilayah C" & data$pendidikan == "Sarjana"], main = "Wilayah C - Sarjana")
qqline(data$penjualan[data$wilayah == "Wilayah C" & data$pendidikan == "Sarjana"], col = "green")

# Uji normalitas menggunakan Shapiro-Wilk Test untuk setiap kombinasi
shapiro.test(data$penjualan[data$wilayah == "Wilayah A" & data$pendidikan == "SMA"])
## 
##  Shapiro-Wilk normality test
## 
## data:  data$penjualan[data$wilayah == "Wilayah A" & data$pendidikan == "SMA"]
## W = 0.93143, p-value = 0.05361
shapiro.test(data$penjualan[data$wilayah == "Wilayah B" & data$pendidikan == "SMA"])
## 
##  Shapiro-Wilk normality test
## 
## data:  data$penjualan[data$wilayah == "Wilayah B" & data$pendidikan == "SMA"]
## W = 0.94816, p-value = 0.1509
shapiro.test(data$penjualan[data$wilayah == "Wilayah C" & data$pendidikan == "SMA"])
## 
##  Shapiro-Wilk normality test
## 
## data:  data$penjualan[data$wilayah == "Wilayah C" & data$pendidikan == "SMA"]
## W = 0.86482, p-value = 0.001288
shapiro.test(data$penjualan[data$wilayah == "Wilayah A" & data$pendidikan == "Sarjana"])
## 
##  Shapiro-Wilk normality test
## 
## data:  data$penjualan[data$wilayah == "Wilayah A" & data$pendidikan == "Sarjana"]
## W = 0.9314, p-value = 0.0535
shapiro.test(data$penjualan[data$wilayah == "Wilayah B" & data$pendidikan == "Sarjana"])
## 
##  Shapiro-Wilk normality test
## 
## data:  data$penjualan[data$wilayah == "Wilayah B" & data$pendidikan == "Sarjana"]
## W = 0.94832, p-value = 0.1524
shapiro.test(data$penjualan[data$wilayah == "Wilayah C" & data$pendidikan == "Sarjana"])
## 
##  Shapiro-Wilk normality test
## 
## data:  data$penjualan[data$wilayah == "Wilayah C" & data$pendidikan == "Sarjana"]
## W = 0.97031, p-value = 0.5478
anova_result <- aov(penjualan ~ wilayah * pendidikan, data = data)
summary(anova_result)
##                     Df  Sum Sq Mean Sq F value   Pr(>F)    
## wilayah              2  352699  176349  14.012 2.28e-06 ***
## pendidikan           1      36      36   0.003    0.958    
## wilayah:pendidikan   2     331     166   0.013    0.987    
## Residuals          174 2189951   12586                     
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
TukeyHSD(anova_result)
##   Tukey multiple comparisons of means
##     95% family-wise confidence level
## 
## Fit: aov(formula = penjualan ~ wilayah * pendidikan, data = data)
## 
## $wilayah
##                          diff       lwr      upr     p adj
## Wilayah B-Wilayah A  53.36756  4.948196 101.7869 0.0268129
## Wilayah C-Wilayah A 108.42359 60.004227 156.8429 0.0000011
## Wilayah C-Wilayah B  55.05603  6.636671 103.4754 0.0214135
## 
## $pendidikan
##                  diff       lwr      upr     p adj
## SMA-Sarjana 0.8915693 -32.11615 33.89929 0.9575451
## 
## $`wilayah:pendidikan`
##                                             diff        lwr       upr     p adj
## Wilayah B:Sarjana-Wilayah A:Sarjana   56.6718917  -26.80230 140.14608 0.3717583
## Wilayah C:Sarjana-Wilayah A:Sarjana  110.3733818   26.89919 193.84757 0.0026096
## Wilayah A:SMA-Wilayah A:Sarjana        4.3943243  -79.07987  87.86851 0.9999887
## Wilayah B:SMA-Wilayah A:Sarjana       54.4575432  -29.01665 137.93173 0.4179423
## Wilayah C:SMA-Wilayah A:Sarjana      110.8681139   27.39392 194.34230 0.0024532
## Wilayah C:Sarjana-Wilayah B:Sarjana   53.7014901  -29.77270 137.17568 0.4342048
## Wilayah A:SMA-Wilayah B:Sarjana      -52.2775673 -135.75176  31.19662 0.4653997
## Wilayah B:SMA-Wilayah B:Sarjana       -2.2143485  -85.68854  81.25984 0.9999996
## Wilayah C:SMA-Wilayah B:Sarjana       54.1962222  -29.27797 137.67041 0.4235374
## Wilayah A:SMA-Wilayah C:Sarjana     -105.9790574 -189.45325 -22.50487 0.0044683
## Wilayah B:SMA-Wilayah C:Sarjana      -55.9158385 -139.39003  27.55835 0.3872657
## Wilayah C:SMA-Wilayah C:Sarjana        0.4947321  -82.97946  83.96892 1.0000000
## Wilayah B:SMA-Wilayah A:SMA           50.0632189  -33.41097 133.53741 0.5150392
## Wilayah C:SMA-Wilayah A:SMA          106.4737895   22.99960 189.94798 0.0042100
## Wilayah C:SMA-Wilayah B:SMA           56.4105707  -27.06362 139.88476 0.3770858