#CONTOH ANAVA 1 ARAH SAMPEL SAMA
library(car)
## Loading required package: carData
data=read.table(file.choose(),header=TRUE)
data
## Data Mesin
## 1 17.5 1
## 2 16.9 1
## 3 15.8 1
## 4 18.6 1
## 5 16.4 2
## 6 19.2 2
## 7 17.7 2
## 8 15.4 2
## 9 20.3 3
## 10 15.7 3
## 11 17.8 3
## 12 18.9 3
## 13 14.6 4
## 14 16.7 4
## 15 20.8 4
## 16 18.9 4
## 17 17.5 5
## 18 19.2 5
## 19 16.5 5
## 20 20.5 5
## 21 18.3 6
## 22 16.2 6
## 23 17.5 6
## 24 20.1 6
data$Mesin=factor(data$Mesin,levels=1:6,labels=c("M1","M2","M3","M4","M5","M6"))
data
## Data Mesin
## 1 17.5 M1
## 2 16.9 M1
## 3 15.8 M1
## 4 18.6 M1
## 5 16.4 M2
## 6 19.2 M2
## 7 17.7 M2
## 8 15.4 M2
## 9 20.3 M3
## 10 15.7 M3
## 11 17.8 M3
## 12 18.9 M3
## 13 14.6 M4
## 14 16.7 M4
## 15 20.8 M4
## 16 18.9 M4
## 17 17.5 M5
## 18 19.2 M5
## 19 16.5 M5
## 20 20.5 M5
## 21 18.3 M6
## 22 16.2 M6
## 23 17.5 M6
## 24 20.1 M6
#Pengecekan Normalitas
shapiro.test(data$Data[data$Mesin == "M1"])
##
## Shapiro-Wilk normality test
##
## data: data$Data[data$Mesin == "M1"]
## W = 0.9993, p-value = 0.9981
shapiro.test(data$Data[data$Mesin == "M2"])
##
## Shapiro-Wilk normality test
##
## data: data$Data[data$Mesin == "M2"]
## W = 0.98391, p-value = 0.9245
shapiro.test(data$Data[data$Mesin == "M3"])
##
## Shapiro-Wilk normality test
##
## data: data$Data[data$Mesin == "M3"]
## W = 0.98916, p-value = 0.9531
shapiro.test(data$Data[data$Mesin == "M4"])
##
## Shapiro-Wilk normality test
##
## data: data$Data[data$Mesin == "M4"]
## W = 0.98887, p-value = 0.9516
shapiro.test(data$Data[data$Mesin == "M5"])
##
## Shapiro-Wilk normality test
##
## data: data$Data[data$Mesin == "M5"]
## W = 0.9709, p-value = 0.847
shapiro.test(data$Data[data$Mesin == "M6"])
##
## Shapiro-Wilk normality test
##
## data: data$Data[data$Mesin == "M6"]
## W = 0.99095, p-value = 0.9623
#Pengecekan homogenitas var
leveneTest(Data~Mesin,data=data,center=mean)
## Levene's Test for Homogeneity of Variance (center = mean)
## Df F value Pr(>F)
## group 5 0.8909 0.5077
## 18
anava_manual<- function(variabel_y, variabel_grup) {
variabel_grup <- as.factor(variabel_grup)
#Total seluruh pengamatan
N <- length(variabel_y)
#Jumlah kelompok (perlakuan)
k <- nlevels(variabel_grup)
#Total keseluruhan (T..)
T_total <- sum(variabel_y)
#Memisalkan faktor
nama_grup <- levels(variabel_grup)
#Vektor untuk menyimpan total data dan banyak entri data per faktor
Ti <- numeric(k)
ni <- numeric(k)
for (i in 1:k) {
nama_kelompok <- nama_grup[i]
data_kelompok <- variabel_y[variabel_grup == nama_kelompok]
Ti[i] <- sum(data_kelompok)
ni[i] <- length(data_kelompok)
}
cat("Total Seluruh Pengamatan (N) :", N, "\n")
cat("Jumlah Kelompok Perlakuan (k) :", k, "\n")
cat("Total Keseluruhan T.. :", T_total, "\n\n")
cat("\nHasil Perhitungan total:\n")
print(data.frame(Kelompok = nama_grup, Total_Ti = Ti, Jumlah_ni = ni))
#Menghitung JKT
JKT <- sum(variabel_y^2) - (T_total^2 / N)
#Menghitung JKK
JKK <- sum((Ti^2) / ni) - (T_total^2 / N)
#Menghitung JKG
JKG <- JKT - JKK
#df
db_perlakuan <- k - 1
db_galat <- N - k
db_total <- N - 1
#KTP dan KTG
KT_perlakuan <- JKK / db_perlakuan
KT_galat <- JKG / db_galat
#Fhitung
F_hitung <- KT_perlakuan / KT_galat
p_value <- pf(F_hitung, db_perlakuan, db_galat, lower.tail = FALSE)
#Output Tabel
tabel_anava <- data.frame(
"Sumber_Keragaman" = c("Perlakuan", "Galat", "Total"),
"Jumlah_Kuadrat" = c(JKK, JKG, JKT),
"Derajat_Bebas" = c(db_perlakuan, db_galat, db_total),
"Kuadrat_Tengah" = c(KT_perlakuan, KT_galat, NA),
"F_hitung" = c(F_hitung, NA, NA),
"p_value" = c(p_value, NA, NA)
)
print(tabel_anava, row.names = FALSE, digits = 4)
}
anava_manual(variabel_y = data$Data, variabel_grup = data$Mesin)
## Total Seluruh Pengamatan (N) : 24
## Jumlah Kelompok Perlakuan (k) : 6
## Total Keseluruhan T.. : 427
##
##
## Hasil Perhitungan total:
## Kelompok Total_Ti Jumlah_ni
## 1 M1 68.8 4
## 2 M2 68.7 4
## 3 M3 72.7 4
## 4 M4 71.0 4
## 5 M5 73.7 4
## 6 M6 72.1 4
## Sumber_Keragaman Jumlah_Kuadrat Derajat_Bebas Kuadrat_Tengah F_hitung p_value
## Perlakuan 5.338 5 1.068 0.3068 0.9024
## Galat 62.640 18 3.480 NA NA
## Total 67.978 23 NA NA NA
#Membandingkan dengan fungsi aov
anava=aov(Data~Mesin,data=data)
summary(anava)
## Df Sum Sq Mean Sq F value Pr(>F)
## Mesin 5 5.34 1.068 0.307 0.902
## Residuals 18 62.64 3.480
#ANAVA 2 ARAH DENGAN INTERAKSI
#PACKAGES
library(car)
library(agricolae)
#Memanggil Data
data=read.table(file.choose(), header=T)
data
## VitaminC Dosis Data
## 1 1 1 15.0
## 2 1 1 21.0
## 3 1 1 17.0
## 4 1 1 9.7
## 5 1 1 14.0
## 6 1 1 10.0
## 7 1 1 8.2
## 8 1 1 9.4
## 9 1 1 16.5
## 10 1 1 9.7
## 11 1 2 19.7
## 12 1 2 23.3
## 13 1 2 23.6
## 14 1 2 26.4
## 15 1 2 20.0
## 16 1 2 25.2
## 17 1 2 25.8
## 18 1 2 21.2
## 19 1 2 14.5
## 20 1 2 27.3
## 21 1 3 25.5
## 22 1 3 26.4
## 23 1 3 22.4
## 24 1 3 24.5
## 25 1 3 24.8
## 26 1 3 30.9
## 27 1 3 26.4
## 28 1 3 27.3
## 29 1 3 29.4
## 30 1 3 23.0
## 31 2 1 4.2
## 32 2 1 11.5
## 33 2 1 7.3
## 34 2 1 5.8
## 35 2 1 6.4
## 36 2 1 10.0
## 37 2 1 11.0
## 38 2 1 11.0
## 39 2 1 5.2
## 40 2 1 7.0
## 41 2 2 16.5
## 42 2 2 16.5
## 43 2 2 15.2
## 44 2 2 17.3
## 45 2 2 22.5
## 46 2 2 17.3
## 47 2 2 13.6
## 48 2 2 14.5
## 49 2 2 18.8
## 50 2 2 15.5
## 51 2 3 23.6
## 52 2 3 18.5
## 53 2 3 33.9
## 54 2 3 25.5
## 55 2 3 26.4
## 56 2 3 32.5
## 57 2 3 26.7
## 58 2 3 21.5
## 59 2 3 23.3
## 60 2 3 29.5
#Pendefinisian Variabel
data$VitaminC=factor(data$VitaminC,levels=1:2,labels=c("OJ","VC"))
data$Dosis=factor(data$Dosis,levels=1:3,labels=c("0.5","1","2"))
data
## VitaminC Dosis Data
## 1 OJ 0.5 15.0
## 2 OJ 0.5 21.0
## 3 OJ 0.5 17.0
## 4 OJ 0.5 9.7
## 5 OJ 0.5 14.0
## 6 OJ 0.5 10.0
## 7 OJ 0.5 8.2
## 8 OJ 0.5 9.4
## 9 OJ 0.5 16.5
## 10 OJ 0.5 9.7
## 11 OJ 1 19.7
## 12 OJ 1 23.3
## 13 OJ 1 23.6
## 14 OJ 1 26.4
## 15 OJ 1 20.0
## 16 OJ 1 25.2
## 17 OJ 1 25.8
## 18 OJ 1 21.2
## 19 OJ 1 14.5
## 20 OJ 1 27.3
## 21 OJ 2 25.5
## 22 OJ 2 26.4
## 23 OJ 2 22.4
## 24 OJ 2 24.5
## 25 OJ 2 24.8
## 26 OJ 2 30.9
## 27 OJ 2 26.4
## 28 OJ 2 27.3
## 29 OJ 2 29.4
## 30 OJ 2 23.0
## 31 VC 0.5 4.2
## 32 VC 0.5 11.5
## 33 VC 0.5 7.3
## 34 VC 0.5 5.8
## 35 VC 0.5 6.4
## 36 VC 0.5 10.0
## 37 VC 0.5 11.0
## 38 VC 0.5 11.0
## 39 VC 0.5 5.2
## 40 VC 0.5 7.0
## 41 VC 1 16.5
## 42 VC 1 16.5
## 43 VC 1 15.2
## 44 VC 1 17.3
## 45 VC 1 22.5
## 46 VC 1 17.3
## 47 VC 1 13.6
## 48 VC 1 14.5
## 49 VC 1 18.8
## 50 VC 1 15.5
## 51 VC 2 23.6
## 52 VC 2 18.5
## 53 VC 2 33.9
## 54 VC 2 25.5
## 55 VC 2 26.4
## 56 VC 2 32.5
## 57 VC 2 26.7
## 58 VC 2 21.5
## 59 VC 2 23.3
## 60 VC 2 29.5
# Normalitas per Dosis
for(j in levels(data$Dosis)){
cat("\nUji Normalitas untuk Dosis:", j, "\n")
print(shapiro.test(data$Data[data$Dosis==j]))
}
##
## Uji Normalitas untuk Dosis: 0.5
##
## Shapiro-Wilk normality test
##
## data: data$Data[data$Dosis == j]
## W = 0.94393, p-value = 0.2842
##
##
## Uji Normalitas untuk Dosis: 1
##
## Shapiro-Wilk normality test
##
## data: data$Data[data$Dosis == j]
## W = 0.93134, p-value = 0.1639
##
##
## Uji Normalitas untuk Dosis: 2
##
## Shapiro-Wilk normality test
##
## data: data$Data[data$Dosis == j]
## W = 0.97775, p-value = 0.9019
# Normalitas per VitaminC
for(i in levels(data$VitaminC)){
cat("\nUji Normalitas untuk VitaminC:", i, "\n")
print(shapiro.test(data$Data[data$VitaminC==i]))
}
##
## Uji Normalitas untuk VitaminC: OJ
##
## Shapiro-Wilk normality test
##
## data: data$Data[data$VitaminC == i]
## W = 0.91852, p-value = 0.02456
##
##
## Uji Normalitas untuk VitaminC: VC
##
## Shapiro-Wilk normality test
##
## data: data$Data[data$VitaminC == i]
## W = 0.9654, p-value = 0.422
#Homogenitas variansi#
leveneTest(Data~Dosis, center=mean, data=data)
## Levene's Test for Homogeneity of Variance (center = mean)
## Df F value Pr(>F)
## group 2 0.7283 0.4871
## 57
leveneTest(Data~VitaminC, center=mean, data=data)
## Levene's Test for Homogeneity of Variance (center = mean)
## Df F value Pr(>F)
## group 1 1.048 0.3102
## 58
leveneTest(Data~Dosis*VitaminC, center=mean,data=data)
## Levene's Test for Homogeneity of Variance (center = mean)
## Df F value Pr(>F)
## group 5 1.794 0.1296
## 54
#Uji ANOVA#
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
JK_A <- sum(tapply(y, A, sum)^2)/(b*n) - FK
JK_B <- sum(tapply(y, B, sum)^2)/(a*n) - FK
JKsel <- sum(tapply(y, list(A,B), sum)^2)/n - FK
JK_AB <- JKsel - JK_A - JK_B
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)
data.frame(Sumber=c("A","B","A*B","Galat","Total"), db, JK, KT, F, p)
}
anava2arah(data$VitaminC, data$Dosis, y=data$Data)
## Sumber db JK KT F p
## 1 A 1 200.2027 200.20267 15.56432 2.319100e-04
## 2 B 2 2462.7123 1231.35617 95.72909 1.758891e-18
## 3 A*B 2 106.2143 53.10717 4.12870 2.145235e-02
## 4 Galat 54 694.5980 12.86293 NA NA
## 5 Total 59 3463.7273 58.70724 NA NA
uji_anava=aov(Data~VitaminC*Dosis,data=data)
anova(uji_anava)
## Analysis of Variance Table
##
## Response: Data
## Df Sum Sq Mean Sq F value Pr(>F)
## VitaminC 1 200.20 200.20 15.5643 0.0002319 ***
## Dosis 2 2462.71 1231.36 95.7291 < 2.2e-16 ***
## VitaminC:Dosis 2 106.21 53.11 4.1287 0.0214524 *
## Residuals 54 694.60 12.86
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1