Matriks Model Linier Umum
y <- matrix(c(18.50, 17.70, 18, 10.70, 11.20, 11.20, 1.6, 2, 1.89), nrow=9, ncol=1)
y
## [,1]
## [1,] 18.50
## [2,] 17.70
## [3,] 18.00
## [4,] 10.70
## [5,] 11.20
## [6,] 11.20
## [7,] 1.60
## [8,] 2.00
## [9,] 1.89
X <- matrix(c(1,1,0,0,1,1,0,0,1,1,0,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,0,1,1,0,0,1,1,0,0,1), nrow=9, ncol=4, byrow=T)
X
## [,1] [,2] [,3] [,4]
## [1,] 1 1 0 0
## [2,] 1 1 0 0
## [3,] 1 1 0 0
## [4,] 1 0 1 0
## [5,] 1 0 1 0
## [6,] 1 0 1 0
## [7,] 1 0 0 1
## [8,] 1 0 0 1
## [9,] 1 0 0 1
Reparameterisasi X’X
xtx <- matrix(c(3,0,0,0,3,0,0,0,3), 3,3)
xtx
## [,1] [,2] [,3]
## [1,] 3 0 0
## [2,] 0 3 0
## [3,] 0 0 3
xtx_i <- solve(xtx)
xtx_i
## [,1] [,2] [,3]
## [1,] 0.3333333 0.0000000 0.0000000
## [2,] 0.0000000 0.3333333 0.0000000
## [3,] 0.0000000 0.0000000 0.3333333
xty <- matrix(c(54.20, 33.10, 5.49), 3, 1)
xty
## [,1]
## [1,] 54.20
## [2,] 33.10
## [3,] 5.49
betha <- xtx_i %*% xty
betha
## [,1]
## [1,] 18.06667
## [2,] 11.03333
## [3,] 1.83000
miu <- (betha[1,]+betha[2,]+betha[3,])/3
miu
## [1] 10.31
miu.ok <- matrix(c(10.31,10.31,10.31),3,1)
miu.ok
## [,1]
## [1,] 10.31
## [2,] 10.31
## [3,] 10.31
betha.ok <- betha - miu.ok
betha.ok
## [,1]
## [1,] 7.7566667
## [2,] 0.7233333
## [3,] -8.4800000
Uji asumsi ANOVA
# Data hasil percobaan
data_ral <- data.frame(
Jenis_Tanaman = factor(rep(c("Daun Singkong", "Daun Bayam", "Daun Selada"), each = 3)),
Kandungan_Klorofil = c(18.50, 17.70, 18.00, 10.70, 11.20, 11.20, 1.60, 2.00, 1.89)
)
# Model ANOVA
anova_model <- aov(Kandungan_Klorofil ~ Jenis_Tanaman, data = data_ral)
# Residual model
residuals_anova <- residuals(anova_model)
# Uji Shapiro-Wilk
shapiro_test <- shapiro.test(residuals_anova)
# Output uji normalitas
cat("4.5.1 Pengujian Asumsi Normalitas Galat\n")
## 4.5.1 Pengujian Asumsi Normalitas Galat
cat("Hipotesis:\n")
## Hipotesis:
cat("H0: e_ij ~ N(μ, σ^2) dengan μ = 0\n")
## H0: e_ij ~ N(μ, σ^2) dengan μ = 0
cat("H1: e_ij ~ N(μ, σ^2) dengan μ ≠ 0\n")
## H1: e_ij ~ N(μ, σ^2) dengan μ ≠ 0
cat("\nHasil Uji Normalitas Galat:\n")
##
## Hasil Uji Normalitas Galat:
cat("Statistik W =", round(shapiro_test$statistic, 3), "\n")
## Statistik W = 0.933
cat("p-value =", round(shapiro_test$p.value, 3), "\n")
## p-value = 0.514
if (shapiro_test$p.value > 0.05) {
cat("Kesimpulan: p-value > 0.05, sehingga H0 diterima. Data residual berdistribusi normal.\n")
} else {
cat("Kesimpulan: p-value <= 0.05, sehingga H0 ditolak. Data residual tidak berdistribusi normal.\n")
}
## Kesimpulan: p-value > 0.05, sehingga H0 diterima. Data residual berdistribusi normal.
# Uji Bartlett untuk homogenitas variansi
bartlett_test <- bartlett.test(Kandungan_Klorofil ~ Jenis_Tanaman, data = data_ral)
# Output uji homogenitas
cat("\n4.5.2 Pengujian Kehomogenan Ragam Galat\n")
##
## 4.5.2 Pengujian Kehomogenan Ragam Galat
cat("Hipotesis:\n")
## Hipotesis:
cat("H0: σ1^2 = σ2^2 = ... = σk^2\n")
## H0: σ1^2 = σ2^2 = ... = σk^2
cat("H1: Paling tidak terdapat satu i di mana σi^2 ≠ σj^2\n")
## H1: Paling tidak terdapat satu i di mana σi^2 ≠ σj^2
cat("\nHasil Uji Bartlett:\n")
##
## Hasil Uji Bartlett:
cat("Statistik Chi-sq =", round(bartlett_test$statistic, 3), "\n")
## Statistik Chi-sq = 0.711
cat("p-value =", round(bartlett_test$p.value, 3), "\n")
## p-value = 0.701
if (bartlett_test$p.value > 0.05) {
cat("Kesimpulan: p-value > 0.05, sehingga H0 diterima. Variansi antar kelompok homogen.\n")
} else {
cat("Kesimpulan: p-value <= 0.05, sehingga H0 ditolak. Variansi antar kelompok tidak homogen.\n")
}
## Kesimpulan: p-value > 0.05, sehingga H0 diterima. Variansi antar kelompok homogen.
# Tambahkan package car untuk Levene's Test
if (!require(car)) install.packages("car")
## Loading required package: 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
library(car)
# Uji Levene
levene_test <- leveneTest(Kandungan_Klorofil ~ Jenis_Tanaman, data = data_ral)
# Output uji homogenitas ragam
cat("\n4.5.2 Pengujian Kehomogenan Ragam Galat (Levene's Test)\n")
##
## 4.5.2 Pengujian Kehomogenan Ragam Galat (Levene's Test)
cat("Hipotesis:\n")
## Hipotesis:
cat("H0: Variansi antar kelompok homogen\n")
## H0: Variansi antar kelompok homogen
cat("H1: Variansi antar kelompok tidak homogen\n")
## H1: Variansi antar kelompok tidak homogen
# Format hasil Levene's Test
tabel_levene <- data.frame(
Faktor = c("Jenis Tanaman"),
"Statistik Uji (F)" = round(levene_test$"F value", 3),
"Nilai-p" = round(levene_test$"Pr(>F)", 3)
)
print(tabel_levene)
## Faktor Statistik.Uji..F. Nilai.p
## 1 Jenis Tanaman 0.258 0.781
## 2 Jenis Tanaman NA NA
# Kesimpulan
if (levene_test$"Pr(>F)"[1] > 0.05) {
cat("\nKesimpulan: p-value > 0.05, sehingga H0 diterima. Variansi antar kelompok homogen.\n")
} else {
cat("\nKesimpulan: p-value <= 0.05, sehingga H0 ditolak. Variansi antar kelompok tidak homogen.\n")
}
##
## Kesimpulan: p-value > 0.05, sehingga H0 diterima. Variansi antar kelompok homogen.
# Hitung NAT (residual kuadrat)
data_ral$NAT <- residuals_anova^2
# Model dengan NAT
model_aditivitas <- lm(Kandungan_Klorofil ~ Jenis_Tanaman + NAT, data = data_ral)
# Tabel ANOVA
anova_aditivitas <- anova(model_aditivitas)
# Output uji aditivitas
cat("\n4.5.3 Pengujian Keaditifan Model\n")
##
## 4.5.3 Pengujian Keaditifan Model
cat("Hipotesis:\n")
## Hipotesis:
cat("H0: ω = 0\n")
## H0: ω = 0
cat("H1: ω ≠ 0\n")
## H1: ω ≠ 0
cat("\nTabel 4.3. Hasil Pengujian Keaditifan Model:\n")
##
## Tabel 4.3. Hasil Pengujian Keaditifan Model:
# Format tabel ANOVA
tabel_aditivitas <- data.frame(
SK = c("Perlakuan", "NAT", "Galat", "Total"),
db = c(anova_aditivitas$Df[1:3], sum(anova_aditivitas$Df)),
JK = round(c(anova_aditivitas$"Sum Sq"[1:3], sum(anova_aditivitas$"Sum Sq")), 3),
KT = round(c(anova_aditivitas$"Mean Sq"[1:3], NA), 3),
F_hit = c(round(anova_aditivitas$"F value"[1:2], 3), "-", "-"),
p_value = c(round(anova_aditivitas$"Pr(>F)"[1:2], 3), "-", "-")
)
print(tabel_aditivitas)
## SK db JK KT F_hit p_value
## 1 Perlakuan 2 397.798 198.899 1719.562 0
## 2 NAT 1 0.000 0.000 0.003 0.956
## 3 Galat 5 0.578 0.116 - -
## 4 Total 8 398.377 NA - -
# Kesimpulan uji NAT
if (anova_aditivitas$"Pr(>F)"[2] > 0.05) {
cat("\nKesimpulan: p-value NAT lebih dari 0.05, H0 diterima. Model dianggap aditif.\n")
} else {
cat("\nKesimpulan: p-value NAT kurang dari atau sama dengan 0.05, H0 ditolak. Model tidak aditif.\n")
}
##
## Kesimpulan: p-value NAT lebih dari 0.05, H0 diterima. Model dianggap aditif.
# Load library
if (!require(car)) install.packages("car")
library(car)
# Data residual dari model ANOVA awal
anova_model <- aov(Kandungan_Klorofil ~ Jenis_Tanaman, data = data_ral)
residuals_abs <- abs(residuals(anova_model)) # Hitung nilai absolut residual
# Tambahkan nilai absolut residual ke dataset sebagai peubah Z
data_ral$Z <- residuals_abs
# ANOVA untuk uji Levene berdasarkan peubah Z
anova_levene <- aov(Z ~ Jenis_Tanaman, data = data_ral)
# Tabel ANOVA untuk uji Levene
anova_table <- anova(anova_levene)
# Output ANOVA
cat("\nTabel 4.4. Analisis Ragam untuk Peubah Z:\n")
##
## Tabel 4.4. Analisis Ragam untuk Peubah Z:
tabel_homogenitas <- data.frame(
SK = c("Perlakuan", "Galat", "Total"),
db = c(anova_table$Df[1], anova_table$Df[2], sum(anova_table$Df)),
JK = round(c(anova_table$"Sum Sq"[1], anova_table$"Sum Sq"[2], sum(anova_table$"Sum Sq")), 3),
KT = round(c(anova_table$"Mean Sq"[1], anova_table$"Mean Sq"[2], NA), 3),
"Statistik Uji F" = c(round(anova_table$"F value"[1], 3), "-", "-")
)
print(tabel_homogenitas)
## SK db JK KT Statistik.Uji.F
## 1 Perlakuan 2 0.028 0.014 0.754
## 2 Galat 6 0.110 0.018 -
## 3 Total 8 0.137 NA -
# Hitung F kritis untuk α = 0.01
f_critical <- qf(0.99, df1 = anova_table$Df[1], df2 = anova_table$Df[2])
cat("\nF-kritis (α = 0.01) =", round(f_critical, 3), "\n")
##
## F-kritis (α = 0.01) = 10.925
# Kesimpulan uji Levene
if (anova_table$"F value"[1] < f_critical) {
cat("Kesimpulan: F-hitung < F-kritis, sehingga H0 diterima. Ragam galat bersifat homogen.\n")
} else {
cat("Kesimpulan: F-hitung >= F-kritis, sehingga H0 ditolak. Ragam galat tidak bersifat homogen.\n")
}
## Kesimpulan: F-hitung < F-kritis, sehingga H0 diterima. Ragam galat bersifat homogen.
# Data ANOVA (Menggunakan data Anda sebelumnya)
data_ral <- data.frame(
Jenis_Tanaman = factor(c(rep("Singkong", 3), rep("Bayam", 3), rep("Selada", 3))),
Kandungan_Klorofil = c(18.50, 17.70, 18.00, 10.70, 11.20, 11.20, 1.60, 2.00, 1.89)
)
# Model Penuh: Semua faktor dimasukkan
model_penuh <- aov(Kandungan_Klorofil ~ Jenis_Tanaman, data = data_ral)
# Model Tereduksi: Tanpa faktor Jenis_Tanaman (Hanya mean total)
model_tereduksi <- aov(Kandungan_Klorofil ~ 1, data = data_ral)
# Bandingkan kedua model
anova_perbandingan <- anova(model_tereduksi, model_penuh)
# Tabel ANOVA untuk model penuh
anova_penuh <- summary(model_penuh)
# Output Tabel ANOVA
cat("\nTabel ANOVA Model Penuh:\n")
##
## Tabel ANOVA Model Penuh:
tabel_penuh <- data.frame(
SK = c("Jenis Tanaman", "Galat"),
db = c(anova_penuh[[1]][["Df"]][1], anova_penuh[[1]][["Df"]][2]),
JK = round(c(anova_penuh[[1]][["Sum Sq"]][1], anova_penuh[[1]][["Sum Sq"]][2]), 3),
KT = round(c(anova_penuh[[1]][["Mean Sq"]][1], anova_penuh[[1]][["Mean Sq"]][2]), 3),
"Statistik Uji F" = c(round(anova_penuh[[1]][["F value"]][1], 3), "-")
)
print(tabel_penuh)
## SK db JK KT Statistik.Uji.F
## 1 Jenis Tanaman 2 397.798 198.899 2062.082
## 2 Galat 6 0.579 0.096 -
# Tabel Perbandingan Model
cat("\nTabel Perbandingan Model (Penuh vs Tereduksi):\n")
##
## Tabel Perbandingan Model (Penuh vs Tereduksi):
tabel_perbandingan <- data.frame(
SK = c("Model Tereduksi", "Model Penuh"),
db = c(anova_perbandingan$Df[1], anova_perbandingan$Df[2]),
JK = round(anova_perbandingan$"Sum of Sq", 3),
KT = c("-", "-"),
"Statistik Uji F" = round(anova_perbandingan$"F", 3),
"Nilai-p" = round(anova_perbandingan$"Pr(>F)", 3)
)
print(tabel_perbandingan)
## SK db JK KT Statistik.Uji.F Nilai.p
## 1 Model Tereduksi NA NA - NA NA
## 2 Model Penuh 2 397.798 - 2062.082 0
# Kesimpulan
if (anova_perbandingan$"Pr(>F)"[2] < 0.05) {
cat("\nKesimpulan: Model penuh lebih baik (Faktor Jenis Tanaman signifikan).\n")
} else {
cat("\nKesimpulan: Tidak ada perbedaan signifikan antara model penuh dan tereduksi.\n")
}
##
## Kesimpulan: Model penuh lebih baik (Faktor Jenis Tanaman signifikan).