# 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 = TRUE)
data
## Tablet Pelarut Nilai
## 1 1 1 46.18
## 2 2 1 57.69
## 3 3 1 48.61
## 4 1 2 54.54
## 5 2 2 71.57
## 6 3 2 51.01
## 7 1 3 56.63
## 8 2 3 81.51
## 9 3 3 80.02
# PENDEFINISIAN VARIABEL
data$Tablet <- factor(data$Tablet,
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
## Tablet Pelarut Nilai
## 1 CDR Air Biasa 46.18
## 2 Redoxon Air Biasa 57.69
## 3 Enervon-C Air Biasa 48.61
## 4 CDR Air Soda 54.54
## 5 Redoxon Air Soda 71.57
## 6 Enervon-C Air Soda 51.01
## 7 CDR Air Kelapa 56.63
## 8 Redoxon Air Kelapa 81.51
## 9 Enervon-C Air Kelapa 80.02
# UJI NORMALITAS PER MERK TABLET
for(i in levels(data$Tablet)){
cat("\nUji Normalitas untuk Merk Tablet:", i, "\n")
print(shapiro.test(data$Nilai[data$Tablet == i]))
}
##
## Uji Normalitas untuk Merk Tablet: CDR
##
## Shapiro-Wilk normality test
##
## data: data$Nilai[data$Tablet == i]
## W = 0.89286, p-value = 0.3631
##
##
## Uji Normalitas untuk Merk Tablet: Redoxon
##
## Shapiro-Wilk normality test
##
## data: data$Nilai[data$Tablet == i]
## W = 0.99096, p-value = 0.8182
##
##
## Uji Normalitas untuk Merk Tablet: Enervon-C
##
## Shapiro-Wilk normality test
##
## data: data$Nilai[data$Tablet == i]
## W = 0.80695, p-value = 0.1312
# UJI NORMALITAS PER JENIS PELARUT
for(j in levels(data$Pelarut)){
cat("\nUji Normalitas untuk Jenis Pelarut:", j, "\n")
print(shapiro.test(data$Nilai[data$Pelarut == j]))
}
##
## Uji Normalitas untuk Jenis Pelarut: Air Biasa
##
## Shapiro-Wilk normality test
##
## data: data$Nilai[data$Pelarut == j]
## W = 0.89987, p-value = 0.3851
##
##
## Uji Normalitas untuk Jenis Pelarut: Air Soda
##
## Shapiro-Wilk normality test
##
## data: data$Nilai[data$Pelarut == j]
## W = 0.87434, p-value = 0.3079
##
##
## Uji Normalitas untuk Jenis Pelarut: Air Kelapa
##
## Shapiro-Wilk normality test
##
## data: data$Nilai[data$Pelarut == j]
## W = 0.79474, p-value = 0.102
# UJI HOMOGENITAS VARIANSI
# Homogenitas berdasarkan Merk Tablet
leveneTest(Nilai ~ Tablet,
center = mean, data = data)
## Levene's Test for Homogeneity of Variance (center = mean)
## Df F value Pr(>F)
## group 2 2.4902 0.1632
## 6
# Homogenitas berdasarkan Jenis Pelarut
leveneTest(Nilai ~ Pelarut,
center = mean, data = data)
## Levene's Test for Homogeneity of Variance (center = mean)
## Df F value Pr(>F)
## group 2 1.9806 0.2185
## 6
# UJI ANAVA DUA ARAH TANPA INTERAKSI
anava2arah <- function(y, A, B){
a <- nlevels(A)
b <- nlevels(B)
N <- length(y)
n <- N/(a*b)
FK <- sum(y)^2/N
JKT <- sum(y^2) - FK
# Jumlah Kuadrat Faktor A (Merk Tablet)
JK_A <- sum(tapply(y, A, sum)^2)/(b*n) - FK
# Jumlah Kuadrat Faktor B (Jenis Pelarut)
JK_B <- sum(tapply(y, B, sum)^2)/(a*n) - FK
# Jumlah Kuadrat Sel
JKsel <- sum(tapply(y, list(A,B), sum)^2)/n - FK
# Jumlah Kuadrat Interaksi
JK_AB <- JKsel - JK_A - JK_B
# Jumlah Kuadrat Galat
JKG <- JKT - JKsel
db <- c(a-1, b-1, (a-1)*(b-1),
a*b*(n-1), N-1)
JK <- c(JK_A, JK_B, JK_AB, JKG, JKT)
KT <- JK/db
F <- c(KT[1:3]/KT[4], NA, NA)
p <- c(
pf(F[1:3], db[1:3], db[4],
lower.tail = FALSE),
NA, NA
)
hasil <- data.frame(
Sumber = c("Merk Tablet",
"Jenis Pelarut",
"Interaksi",
"Galat",
"Total"),
db, JK, KT, F, p
)
return(hasil)
}
# MENJALANKAN ANAVA
# Model tanpa interaksi
anava2arah_tanpa <- function(y, A, B){
a <- nlevels(A)
b <- nlevels(B)
N <- length(y)
FK <- sum(y)^2/N
JKT <- sum(y^2) - FK
JK_A <- sum(tapply(y, A, sum)^2)/b - FK
JK_B <- sum(tapply(y, B, sum)^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)
p <- c(
pf(F[1:2], db[1:2], db[3],
lower.tail = FALSE),
NA, NA
)
data.frame(
Sumber = c("Merk Tablet",
"Jenis Pelarut",
"Galat",
"Total"),
db, JK, KT, F, p
)
}
# HASIL ANAVA MANUAL
anava2arah_tanpa(data$Nilai,
data$Tablet,
data$Pelarut)
## Sumber db JK KT F p
## 1 Merk Tablet 2 479.9575 239.97874 4.269572 0.10176166
## 2 Jenis Pelarut 2 733.9193 366.95964 6.528748 0.05499073
## 3 Galat 4 224.8270 56.20674 NA NA
## 4 Total 8 1438.7038 179.83797 NA NA
# PEMBANDING DENGAN FUNGSI BAWAAN R
uji_anava <- aov(Nilai ~ Tablet + Pelarut,
data = data)
anova(uji_anava)
## Analysis of Variance Table
##
## Response: Nilai
## Df Sum Sq Mean Sq F value Pr(>F)
## Tablet 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