#PACKAGES
library(car)
## Warning: package 'car' was built under R version 4.5.3
## Loading required package: carData
## Warning: package 'carData' was built under R version 4.5.3
library(agricolae)
## Warning: package 'agricolae' was built under R version 4.5.3
#Memanggil Data
data=read.table(file.choose(), header=T)
data
##   Merek Pelarut  Data
## 1     1       1 46.18
## 2     1       2 54.54
## 3     1       3 56.63
## 4     2       1 57.69
## 5     2       2 71.57
## 6     2       3 81.51
## 7     3       1 48.61
## 8     3       2 51.01
## 9     3       3 80.02
data$Merek <- factor(data$Merek, levels=1:3,
                     labels=c("CDR","Redoxon","Enervon-C"))
data$Pelarut <- factor(data$Pelarut, levels=1:3,
                       labels=c("Air Biasa","Air Soda","Air Kelapa"))
data
##       Merek    Pelarut  Data
## 1       CDR  Air Biasa 46.18
## 2       CDR   Air Soda 54.54
## 3       CDR Air Kelapa 56.63
## 4   Redoxon  Air Biasa 57.69
## 5   Redoxon   Air Soda 71.57
## 6   Redoxon Air Kelapa 81.51
## 7 Enervon-C  Air Biasa 48.61
## 8 Enervon-C   Air Soda 51.01
## 9 Enervon-C Air Kelapa 80.02
#Pengecekan Normalitas per Merek
for(i in levels(data$Merek)){
  cat("\nUji Normalitas untuk Merek:", i, "\n")
  print(shapiro.test(data$Data[data$Merek==i]))
}
## 
## Uji Normalitas untuk Merek: CDR 
## 
##  Shapiro-Wilk normality test
## 
## data:  data$Data[data$Merek == i]
## W = 0.89286, p-value = 0.3631
## 
## 
## Uji Normalitas untuk Merek: Redoxon 
## 
##  Shapiro-Wilk normality test
## 
## data:  data$Data[data$Merek == i]
## W = 0.99096, p-value = 0.8182
## 
## 
## Uji Normalitas untuk Merek: Enervon-C 
## 
##  Shapiro-Wilk normality test
## 
## data:  data$Data[data$Merek == i]
## W = 0.80695, p-value = 0.1312
#Pengecekan Normalitas per Pelarut
for(j in levels(data$Pelarut)){
  cat("\nUji Normalitas untuk Pelarut:", j, "\n")
  print(shapiro.test(data$Data[data$Pelarut==j]))
}
## 
## Uji Normalitas untuk Pelarut: Air Biasa 
## 
##  Shapiro-Wilk normality test
## 
## data:  data$Data[data$Pelarut == j]
## W = 0.89987, p-value = 0.3851
## 
## 
## Uji Normalitas untuk Pelarut: Air Soda 
## 
##  Shapiro-Wilk normality test
## 
## data:  data$Data[data$Pelarut == j]
## W = 0.87434, p-value = 0.3079
## 
## 
## Uji Normalitas untuk Pelarut: Air Kelapa 
## 
##  Shapiro-Wilk normality test
## 
## data:  data$Data[data$Pelarut == j]
## W = 0.79474, p-value = 0.102
#Pengecekan Homogenitas Variansi
leveneTest(Data ~ Merek,   data=data, center=mean)
## Levene's Test for Homogeneity of Variance (center = mean)
##       Df F value Pr(>F)
## group  2  2.4902 0.1632
##        6
leveneTest(Data ~ Pelarut, data=data, center=mean)
## Levene's Test for Homogeneity of Variance (center = mean)
##       Df F value Pr(>F)
## group  2  1.9806 0.2185
##        6
#Membentuk matriks Y (3 x 3) dari data
Y <- tapply(data$Data, list(data$Merek, data$Pelarut), sum)
names(dimnames(Y)) <- c("Faktor_Baris","Faktor_Kolom")
Y
##             Faktor_Kolom
## Faktor_Baris Air Biasa Air Soda Air Kelapa
##    CDR           46.18    54.54      56.63
##    Redoxon       57.69    71.57      81.51
##    Enervon-C     48.61    51.01      80.02
dim(Y)    # harus 3 3
## [1] 3 3
#ANAVA 2 ARAH TANPA INTERAKSI (fungsi manual modul)
anava2arah_tanpa <- function(Y, alpha=0.05){
  a <- nrow(Y)
  b <- ncol(Y)
  N <- a*b
  
  FK   <- sum(Y)^2/N
  JKT  <- sum(Y^2) - FK
  JK_A <- sum(rowSums(Y)^2)/b - FK
  JK_B <- sum(colSums(Y)^2)/a - FK
  JKG  <- JKT - JK_A - JK_B
  
  db <- c(a-1, b-1, (a-1)*(b-1), N-1)
  JK <- c(JK_A, JK_B, JKG, JKT)
  KT <- JK/db
  F  <- c(KT[1:2]/KT[3], NA, NA)
  Ft <- c(qf(1-alpha, db[1:2], db[3]), NA, NA)
  p  <- c(pf(F[1:2], db[1:2], db[3], lower.tail=FALSE), NA, NA)
  
  hasil <- data.frame(Sumber=c("Merek (Baris)","Pelarut (Kolom)","Galat","Total"),
                      db, JK, KT, F_hit=F, F_tabel=Ft, p_value=p)
  print(hasil, digits=5, na.print="", row.names=FALSE)
}
anava2arah_tanpa(Y)
##           Sumber db      JK      KT  F_hit F_tabel  p_value
##    Merek (Baris)  2  479.96 239.979 4.2696  6.9443 0.101762
##  Pelarut (Kolom)  2  733.92 366.960 6.5287  6.9443 0.054991
##            Galat  4  224.83  56.207     NA      NA       NA
##            Total  8 1438.70 179.838     NA      NA       NA
#PEMBANDING DENGAN FUNGSI BAWAAN R
uji_anava <- aov(Data ~ Merek + Pelarut, data=data)
anova(uji_anava)
## Analysis of Variance Table
## 
## Response: Data
##           Df Sum Sq Mean Sq F value  Pr(>F)  
## Merek      2 479.96  239.98  4.2696 0.10176  
## Pelarut    2 733.92  366.96  6.5287 0.05499 .
## Residuals  4 224.83   56.21                  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1