#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