#0 Membuat Data Frame
data_pakan_ikan <- data.frame(
  Jenis_Ikan = as.factor(rep(c("Lele", "Nila", "Karper", "Bawal", "Gurami"), each = 4)),
  Pakan = as.factor(rep(c("0.25 kg", "0.5 kg", "0.75 kg", "1 kg"), times = 5)),
  Pertumbuhan = c(19.6, 28.2, 26.6, 24.8, 
                  13.6, 16.0, 17.6, 19.8, 
                  13.2, 15.0, 16.8, 18.6, 
                  11.8, 15.4, 18.4, 21.2, 
                  12.6, 14.8, 14.2, 13.6)
)
#0 ANOVA
anova_pakan_ikan <- aov(Pertumbuhan ~ Pakan + Jenis_Ikan, data = data_pakan_ikan)
summary(anova_pakan_ikan)
##             Df Sum Sq Mean Sq F value   Pr(>F)    
## Pakan        3  85.83   28.61   7.767  0.00381 ** 
## Jenis_Ikan   4 282.81   70.70  19.195 3.77e-05 ***
## Residuals   12  44.20    3.68                     
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#Ftabel
F_tabel_perlakuan <- qf(0.05, df1 = 3, df2 = 12, lower.tail = FALSE)
F_tabel_perlakuan
## [1] 3.490295
F_tabel_kelompok <- qf(0.05, df1 = 4, df2 = 12, lower.tail = FALSE)
F_tabel_kelompok
## [1] 3.259167
#1 Uji Asumsi Kenormalan

#1.1 Eksploratif

plot(anova_pakan_ikan, which = 2)

# Q-Q Plot untuk memeriksa normalitas residual
qqnorm(anova_pakan_ikan$residuals)
qqline(anova_pakan_ikan$residuals, col = 'red')

#Histogram
hist(anova_pakan_ikan$residuals, breaks = 4, main = "Histogram Residual ANOVA", 
     xlab = "Residuals", col = "brown", border = "black")

#1.2 Uji Formal Normalitas Hipotesis

#Shapiro-Wilk
shapiro.test(x = anova_pakan_ikan$residuals)
## 
##  Shapiro-Wilk normality test
## 
## data:  anova_pakan_ikan$residuals
## W = 0.94999, p-value = 0.367
#2 Uji Asumsi Nilai Harapan Sisaan = 0
t.test(anova_pakan_ikan$residuals, 
       mu = 0, 
       conf.level = 0.95)
## 
##  One Sample t-test
## 
## data:  anova_pakan_ikan$residuals
## t = -1.9532e-16, df = 19, p-value = 1
## alternative hypothesis: true mean is not equal to 0
## 95 percent confidence interval:
##  -0.713828  0.713828
## sample estimates:
##     mean of x 
## -6.661338e-17
#3 Asumsi Kehomogenan Ragam

#3.1 Eksploratif
plot(anova_pakan_ikan,which=1)

#3.2 Uji Formal

#Bartlett’s Test
bartlett.test(Pertumbuhan ~ Pakan, data = data_pakan_ikan)
## 
##  Bartlett test of homogeneity of variances
## 
## data:  Pertumbuhan by Pakan
## Bartlett's K-squared = 1.399, df = 3, p-value = 0.7058
bartlett.test(Pertumbuhan ~ Jenis_Ikan, data = data_pakan_ikan)
## 
##  Bartlett test of homogeneity of variances
## 
## data:  Pertumbuhan by Jenis_Ikan
## Bartlett's K-squared = 5.0096, df = 4, p-value = 0.2863
library(car)
## Loading required package: carData
leveneTest(Pertumbuhan ~ Pakan, data = data_pakan_ikan)
## Levene's Test for Homogeneity of Variance (center = median)
##       Df F value Pr(>F)
## group  3  0.0954 0.9614
##       16
leveneTest(Pertumbuhan ~ Jenis_Ikan, data = data_pakan_ikan)
## Levene's Test for Homogeneity of Variance (center = median)
##       Df F value Pr(>F)
## group  4  1.3063 0.3122
##       15
#4 Asumsi Saling Bebas

#4.1 Eksploratif

#Plot Sisaan vs Order
plot(anova_pakan_ikan$residuals, type = 'o', main = "Plot Residuals", 
     xlab = "Index", ylab = "Residuals", col = "blue", pch = 16)

#Plot ACF
acf(anova_pakan_ikan$residuals, main = "ACF Residuals", col = "grey", lwd = 2)

#Plot PACF
pacf(anova_pakan_ikan$residuals, main = "PACF Residuals", col = "pink", lwd = 2)

#4.2 Uji Formal

#Durbin-Watson test
library(lmtest)
## Loading required package: zoo
## 
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
## 
##     as.Date, as.Date.numeric
dwtest(anova_pakan_ikan, alternative = "two.sided")  
## 
##  Durbin-Watson test
## 
## data:  anova_pakan_ikan
## DW = 1.6172, p-value = 0.09591
## alternative hypothesis: true autocorrelation is not 0
#5 Asumsi Keaditifan

#5.1 Eksploratif

library(ggplot2)
ggplot(data_pakan_ikan, aes(x = Pakan, y = Pertumbuhan, colour = Jenis_Ikan)) + 
  geom_point(aes(y = Pertumbuhan)) + 
  geom_line(aes(y = Pertumbuhan, group = Jenis_Ikan)) + 
  theme_bw() +
  labs(title = "Pengaruh Perlakuan terhadap Pertumbuhan", 
       x = "Perlakuan (Jenis Pakan)", 
       y = "Pertumbuhan (kg)", 
       colour = "Kelompok (Jenis Ikan)") +
  theme(axis.text.x = element_text(angle = 45, hjust = 1)) 

#5.2 Uji Formal

#Uji Tukey
library(reshape2) 
library(additivityTests) 
anova_pakan_ikan_wide <- dcast(data_pakan_ikan, Jenis_Ikan ~ Pakan, value.var = "Pertumbuhan")
Y <- as.matrix(anova_pakan_ikan_wide[-1])
tukey.test(Y, alpha = 0.05)
## 
## Tukey test on 5% alpha-level:
## 
## Test statistic: 1.043 
## Critival value: 4.844 
## The additivity hypothesis cannot be rejected.
#6 Asumsi Uji Lanjut

#Uji Duncan

library(agricolae)
hasil_duncan_perlakuan <- duncan.test(anova_pakan_ikan, "Pakan", alpha = 0.05)

print(hasil_duncan_perlakuan)
## $statistics
##    MSerror Df  Mean       CV
##   3.683333 12 17.59 10.91075
## 
## $parameters
##     test name.t ntr alpha
##   Duncan  Pakan   4  0.05
## 
## $duncan
##      Table CriticalRange
## 2 3.081307      2.644664
## 3 3.225244      2.768204
## 4 3.312453      2.843055
## 
## $means
##         Pertumbuhan      std r        se  Min  Max  Q25  Q50  Q75
## 0.25 kg       14.16 3.115766 5 0.8582929 11.8 19.6 12.6 13.2 13.6
## 0.5 kg        17.88 5.787227 5 0.8582929 14.8 28.2 15.0 15.4 16.0
## 0.75 kg       18.72 4.678889 5 0.8582929 14.2 26.6 16.8 17.6 18.4
## 1 kg          19.60 4.081666 5 0.8582929 13.6 24.8 18.6 19.8 21.2
## 
## $comparison
## NULL
## 
## $groups
##         Pertumbuhan groups
## 1 kg          19.60      a
## 0.75 kg       18.72      a
## 0.5 kg        17.88      a
## 0.25 kg       14.16      b
## 
## attr(,"class")
## [1] "group"
hasil_duncan_kelompok <- duncan.test(anova_pakan_ikan, "Jenis_Ikan", alpha = 0.05)
print(hasil_duncan_kelompok)
## $statistics
##    MSerror Df  Mean       CV
##   3.683333 12 17.59 10.91075
## 
## $parameters
##     test     name.t ntr alpha
##   Duncan Jenis_Ikan   5  0.05
## 
## $duncan
##      Table CriticalRange
## 2 3.081307      2.956824
## 3 3.225244      3.094946
## 4 3.312453      3.178632
## 5 3.370172      3.234019
## 
## $means
##        Pertumbuhan       std r        se  Min  Max   Q25  Q50   Q75
## Bawal        16.70 4.0348482 4 0.9596006 11.8 21.2 14.50 16.9 19.10
## Gurami       13.80 0.9380832 4 0.9596006 12.6 14.8 13.35 13.9 14.35
## Karper       15.90 2.3237900 4 0.9596006 13.2 18.6 14.55 15.9 17.25
## Lele         24.80 3.7345236 4 0.9596006 19.6 28.2 23.50 25.7 27.00
## Nila         16.75 2.6147020 4 0.9596006 13.6 19.8 15.40 16.8 18.15
## 
## $comparison
## NULL
## 
## $groups
##        Pertumbuhan groups
## Lele         24.80      a
## Nila         16.75      b
## Bawal        16.70      b
## Karper       15.90      b
## Gurami       13.80      b
## 
## attr(,"class")
## [1] "group"