# ==============================
# 1. Input data (long format)
# ==============================
perlakuan <- c(
rep("S1", 6),
rep("S2", 6),
rep("S3", 6),
rep("S4", 6)
)
total <- c(
# S1 (21–23 °C)
35, 95, 57, 72, 73, 31,
# S2 (26–28 °C)
155, 161, 34, 31, 17, 14,
# S3 (30–32 °C)
196, 227, 171, 246, 213, 157,
# S4 (33–35 °C)
2, 4, 11, 4, 5, 3
)
data_echa <- data.frame(perlakuan, total)
# ==============================
# 2. ANOVA biasa
# ==============================
res.aov <- aov(total ~ perlakuan, data = data_echa)
summary(res.aov)
## Df Sum Sq Mean Sq F value Pr(>F)
## perlakuan 3 125401 41800 25.32 5.16e-07 ***
## Residuals 20 33023 1651
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
# ==============================
# 3. Hitung KK manual
# ==============================
anova_tab <- summary(res.aov)[[1]]
MSE <- anova_tab["Residuals","Mean Sq"]
grand_mean <- mean(data_echa$total)
KK <- sqrt(MSE) / grand_mean * 100
cat("MSE =", MSE, "\nGrand Mean =", grand_mean, "\nKK =", KK, "%\n")
## MSE = 1651.15
## Grand Mean = 83.91667
## KK = 48.42226 %
# ==============================
# 4. Transformasi sqrt
# ==============================
data_echa$total_sqrt <- sqrt(data_echa$total)
res.aov_sqrt <- aov(total_sqrt ~ perlakuan, data = data_echa)
summary(res.aov_sqrt)
## Df Sum Sq Mean Sq F value Pr(>F)
## perlakuan 3 437.5 145.8 27.52 2.67e-07 ***
## Residuals 20 106.0 5.3
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
MSE_sqrt <- summary(res.aov_sqrt)[[1]]["Residuals","Mean Sq"]
grand_mean_sqrt <- mean(data_echa$total_sqrt)
KK_sqrt <- sqrt(MSE_sqrt) / grand_mean_sqrt * 100
cat("KK sqrt =", KK_sqrt, "%\n")
## KK sqrt = 29.40656 %
# ==============================
# 5. Transformasi log (log(x+1))
# ==============================
data_echa$total_log <- log(data_echa$total + 1)
res.aov_log <- aov(total_log ~ perlakuan, data = data_echa)
summary(res.aov_log)
## Df Sum Sq Mean Sq F value Pr(>F)
## perlakuan 3 41.00 13.67 35.99 2.98e-08 ***
## Residuals 20 7.59 0.38
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
MSE_log <- summary(res.aov_log)[[1]]["Residuals","Mean Sq"]
grand_mean_log <- mean(data_echa$total_log)
KK_log <- sqrt(MSE_log) / grand_mean_log * 100
cat("KK log =", KK_log, "%\n")
## KK log = 16.65403 %
# ==============================
# 6. Plot diagnostik
# ==============================
par(mfrow=c(1,3))
boxplot(total ~ perlakuan, data=data_echa, main="Asli")
boxplot(total_sqrt ~ perlakuan, data=data_echa, main="√x")
boxplot(total_log ~ perlakuan, data=data_echa, main="log(x+1)")

# ---------------------------------------------------
# Analisis RAL Non-Faktorial
# Data: Perkembangan kumbang Elaeidobius kamerunicus
# Faktor: Suhu (4 perlakuan)
# Ulangan: 6
# Analisis: ANOVA → DMRT 5% → KK
# ---------------------------------------------------
# Install paket jika belum ada
# install.packages("agricolae")
# install.packages("car")
library(agricolae)
library(car)
## Loading required package: carData
# ==============================
# 1. Input Data
# ==============================
perlakuan <- rep(c("S1","S2","S3","S4"), each=6)
total <- c(
# S1 (21–23 °C)
35,95,57,72,73,31,
# S2 (26–28 °C)
155,161,34,31,17,14,
# S3 (30–32 °C)
196,227,171,246,213,157,
# S4 (33–35 °C)
2,4,11,4,5,3
)
data_echa <- data.frame(perlakuan = factor(perlakuan), total = total)
# ==============================
# 2. Statistik Deskriptif
# ==============================
deskriptif <- aggregate(total ~ perlakuan, data=data_echa,
function(x) c(mean=mean(x), sd=sd(x)))
print(deskriptif)
## perlakuan total.mean total.sd
## 1 S1 60.500000 24.541801
## 2 S2 68.666667 69.652471
## 3 S3 201.666667 33.773757
## 4 S4 4.833333 3.188521
# Boxplot awal
boxplot(total ~ perlakuan, data=data_echa,
main="Boxplot Data Asli", ylab="Jumlah Imago")

# ==============================
# 3. Transformasi (jika diperlukan)
# ==============================
# Karena data cenderung tidak homogen, coba transformasi log(x+1)
data_echa$log_total <- log(data_echa$total + 1)
# ==============================
# 4. Cek Asumsi ANOVA
# ==============================
model_log <- aov(log_total ~ perlakuan, data=data_echa)
# Normalitas residual
shapiro_test <- shapiro.test(residuals(model_log))
print(shapiro_test)
##
## Shapiro-Wilk normality test
##
## data: residuals(model_log)
## W = 0.95041, p-value = 0.2765
# Homogenitas varians (Levene Test)
levene_test <- leveneTest(log_total ~ perlakuan, data=data_echa)
print(levene_test)
## Levene's Test for Homogeneity of Variance (center = median)
## Df F value Pr(>F)
## group 3 2.6949 0.07347 .
## 20
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
# ==============================
# 5. ANOVA
# ==============================
anova_model <- aov(log_total ~ perlakuan, data=data_echa)
summary(anova_model)
## Df Sum Sq Mean Sq F value Pr(>F)
## perlakuan 3 41.00 13.67 35.99 2.98e-08 ***
## Residuals 20 7.59 0.38
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
# ==============================
# Hitung KK (Koefisien Keragaman)
# ==============================
# Rumus KK = (sqrt(KT Galat) / mean) * 100%
anova_table <- anova(anova_model)
KT_galat <- anova_table["Residuals","Mean Sq"]
grand_mean <- mean(data_echa$log_total) # pakai data log
KK <- (sqrt(KT_galat) / grand_mean) * 100
cat("Koefisien Keragaman (KK):", round(KK,2), "%\n")
## Koefisien Keragaman (KK): 16.65 %
# Interpretasi KK
if(KK < 10){
cat("KK termasuk baik (<10%) → data layak untuk interpretasi.\n")
} else {
cat("KK > 10% → data kurang homogen.\n")
}
## KK > 10% → data kurang homogen.
# ==============================
# 6. Uji Lanjut (DMRT 5%)
# ==============================
dmrt <- duncan.test(anova_model, "perlakuan", group=TRUE, console=TRUE)
##
## Study: anova_model ~ "perlakuan"
##
## Duncan's new multiple range test
## for log_total
##
## Mean Square Error: 0.3797355
##
## perlakuan, means
##
## log_total std r se Min Max Q25 Q50 Q75
## S1 4.044762 0.4349339 6 0.2515736 3.465736 4.564348 3.702750 4.175451 4.300664
## S2 3.792826 1.0402981 6 0.2515736 2.708050 5.087596 3.034213 3.510542 4.676229
## S3 5.299667 0.1701923 6 0.2515736 5.062595 5.509388 5.181422 5.324590 5.413503
## S4 1.663408 0.4675352 6 0.2515736 1.098612 2.484907 1.442080 1.609438 1.746179
##
## Alpha: 0.05 ; DF Error: 20
##
## Critical Range
## 2 3 4
## 0.7421414 0.7789991 0.8024230
##
## Means with the same letter are not significantly different.
##
## log_total groups
## S3 5.299667 a
## S1 4.044762 b
## S2 3.792826 b
## S4 1.663408 c
# ==============================
# 7. Hasil Kelompok Huruf
# ==============================
print(dmrt$groups)
## log_total groups
## S3 5.299667 a
## S1 4.044762 b
## S2 3.792826 b
## S4 1.663408 c
# ==============================
# 8. Visualisasi dengan Huruf DMRT
# ==============================
bar.group(dmrt$groups, ylim=c(0,6),
xlab="Suhu", ylab="Rataan log(x+1)",
main="Hasil DMRT 5%")

# ---------------------------------------------------
# Analisis RAL Non-Faktorial (Data Asli, tanpa transformasi)
# Data: Perkembangan kumbang Elaeidobius kamerunicus
# Faktor: Suhu (4 perlakuan)
# Ulangan: 6
# Analisis: ANOVA → DMRT 5% → KK
# ---------------------------------------------------
library(agricolae)
library(car)
# ==============================
# 1. Input Data
# ==============================
perlakuan <- rep(c("S1","S2","S3","S4"), each=6)
total <- c(
# S1 (21–23 °C)
35,95,57,72,73,31,
# S2 (26–28 °C)
155,161,34,31,17,14,
# S3 (30–32 °C)
196,227,171,246,213,157,
# S4 (33–35 °C)
2,4,11,4,5,3
)
data_echa <- data.frame(perlakuan = factor(perlakuan), total = total)
# ==============================
# 2. Statistik Deskriptif
# ==============================
deskriptif <- aggregate(total ~ perlakuan, data=data_echa,
function(x) c(mean=mean(x), sd=sd(x)))
print(deskriptif)
## perlakuan total.mean total.sd
## 1 S1 60.500000 24.541801
## 2 S2 68.666667 69.652471
## 3 S3 201.666667 33.773757
## 4 S4 4.833333 3.188521
# Boxplot awal (data asli)
boxplot(total ~ perlakuan, data=data_echa,
main="Boxplot Data Asli", ylab="Jumlah Imago")

# ==============================
# 3. Cek Asumsi ANOVA
# ==============================
model_asli <- aov(total ~ perlakuan, data=data_echa)
# Normalitas residual
shapiro_test <- shapiro.test(residuals(model_asli))
print(shapiro_test)
##
## Shapiro-Wilk normality test
##
## data: residuals(model_asli)
## W = 0.92165, p-value = 0.06352
# Homogenitas varians (Levene Test)
levene_test <- leveneTest(total ~ perlakuan, data=data_echa)
print(levene_test)
## Levene's Test for Homogeneity of Variance (center = median)
## Df F value Pr(>F)
## group 3 2.1376 0.1274
## 20
# ==============================
# 4. ANOVA
# ==============================
anova_model <- aov(total ~ perlakuan, data=data_echa)
summary(anova_model)
## Df Sum Sq Mean Sq F value Pr(>F)
## perlakuan 3 125401 41800 25.32 5.16e-07 ***
## Residuals 20 33023 1651
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
# ==============================
# 5. Hitung KK (Koefisien Keragaman)
# ==============================
# Rumus KK = (sqrt(KT Galat) / mean) * 100%
anova_table <- anova(anova_model)
KT_galat <- anova_table["Residuals","Mean Sq"]
grand_mean <- mean(data_echa$total) # pakai data asli
KK <- (sqrt(KT_galat) / grand_mean) * 100
cat("Koefisien Keragaman (KK):", round(KK,2), "%\n")
## Koefisien Keragaman (KK): 48.42 %
# Interpretasi KK
if(KK < 10){
cat("KK termasuk sangat baik (<10%) → data sangat teliti.\n")
} else if(KK < 20){
cat("KK cukup baik (10–20%) → data masih bisa diterima.\n")
} else if(KK < 30){
cat("KK sedang (20–30%) → hasil masih bisa digunakan dengan hati-hati.\n")
} else {
cat("KK > 30% → ketelitian rendah, data kurang meyakinkan.\n")
}
## KK > 30% → ketelitian rendah, data kurang meyakinkan.
# ==============================
# 6. Uji Lanjut (DMRT 5%)
# ==============================
dmrt <- duncan.test(anova_model, "perlakuan", group=TRUE, console=TRUE)
##
## Study: anova_model ~ "perlakuan"
##
## Duncan's new multiple range test
## for total
##
## Mean Square Error: 1651.15
##
## perlakuan, means
##
## total std r se Min Max Q25 Q50 Q75
## S1 60.500000 24.541801 6 16.5889 31 95 40.50 64.5 72.75
## S2 68.666667 69.652471 6 16.5889 14 161 20.50 32.5 124.75
## S3 201.666667 33.773757 6 16.5889 157 246 177.25 204.5 223.50
## S4 4.833333 3.188521 6 16.5889 2 11 3.25 4.0 4.75
##
## Alpha: 0.05 ; DF Error: 20
##
## Critical Range
## 2 3 4
## 48.93722 51.36764 52.91223
##
## Means with the same letter are not significantly different.
##
## total groups
## S3 201.666667 a
## S2 68.666667 b
## S1 60.500000 b
## S4 4.833333 c
# ==============================
# 7. Hasil Kelompok Huruf
# ==============================
print(dmrt$groups)
## total groups
## S3 201.666667 a
## S2 68.666667 b
## S1 60.500000 b
## S4 4.833333 c
# ==============================
# 8. Visualisasi dengan Huruf DMRT (Data Asli)
# ==============================
bar.group(dmrt$groups,
ylim=c(0, max(data_echa$total)+20),
xlab="Suhu", ylab="Rataan Jumlah Imago",
main="Hasil DMRT 5% (Data Asli)")
