#CONTOH ANAVA 1 ARAH SAMPEL SAMA
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
data=read.table(file.choose(),header=TRUE)
data
data$Mesin=factor(data$Mesin,levels=1:6,labels=c("M1","M2","M3","M4","M5","M6"))
data
#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)
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)
## Warning: package 'agricolae' was built under R version 4.5.3
#Memanggil Data
data=read.table(file.choose(), header=T)
data
#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
# 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)
leveneTest(Data~VitaminC, center=mean, data=data)
leveneTest(Data~Dosis*VitaminC, center=mean,data=data)
#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)
uji_anava=aov(Data~VitaminC*Dosis,data=data)
anova(uji_anava)