#############################################################################
# ===========================================================================
# Nama : Ghaitsaa Nadiah Haura
# Kelas : Ilmu Komunikasi A, 2025, Semester 3
# NIM : 2502056019
# BAB 7

# UJI KESAMAAN VARIANS POPULASI
# Uji Kesamaan Varians Populasi dengan Uji Levene

# ===========================================================================
# CONTOH KASUS 1
# ===========================================================================

# Nilai F tabel
qf(.95, df1 = 2, df2 = 15)
## [1] 3.68232
# Membaca data
varians <- read.csv("varians.csv", sep = ";", header = TRUE)

# Menampilkan data
varians
##    Nilai Kelas
## 1     70     1
## 2     80     1
## 3     87     1
## 4     77     1
## 5     80     1
## 6     80     2
## 7     85     2
## 8     70     2
## 9     77     2
## 10    85     2
## 11    60     2
## 12    80     2
## 13    70     3
## 14    87     3
## 15    90     3
## 16    77     3
## 17    76     3
## 18    87     3
# =====================================================================================
# UJI LEVENE DENGAN PACKAGE car
# =====================================================================================

library(car)
## Loading required package: carData
hasil_levene <- leveneTest(
  varians$Nilai,
  as.factor(varians$Kelas)
)

hasil_levene
## Levene's Test for Homogeneity of Variance (center = median)
##       Df F value Pr(>F)
## group  2  0.4267 0.6604
##       15
# Mengambil p-value
p_value_car <- hasil_levene[1, 3]

cat("\nP-value Uji Levene =", p_value_car, "\n")
## 
## P-value Uji Levene = 0.6603586
# ==========================================================
# KEPUTUSAN UJI LEVENE
# ==========================================================

if (p_value_car >= 0.05) {
  
  cat("Keputusan: H0 diterima.\n")
  cat("Kesimpulan: Varians populasi dianggap sama/homogen.\n")
  
} else {
  
  cat("Keputusan: H0 ditolak.\n")
  cat("Kesimpulan: Varians populasi tidak sama/tidak homogen.\n")
}
## Keputusan: H0 diterima.
## Kesimpulan: Varians populasi dianggap sama/homogen.
# ==========================================================
# UJI LEVENE DENGAN PACKAGE lawstat
# Berdasarkan median
# ==========================================================

library(lawstat)
## 
## Attaching package: 'lawstat'
## The following object is masked from 'package:car':
## 
##     levene.test
hasil_median <- levene.test(
  varians[, "Nilai"],
  varians[, "Kelas"],
  location = "median",
  correction.method = "zero.correction"
)

hasil_median
## 
##  Modified robust Brown-Forsythe Levene-type test based on the absolute
##  deviations from the median with modified structural zero removal method
##  and correction factor
## 
## data:  varians[, "Nilai"]
## Test Statistic = 0.4372, p-value = 0.6557
# ==========================================================
# UJI LEVENE DENGAN PACKAGE lawstat
# Berdasarkan mean
# ==========================================================

hasil_mean <- levene.test(
  varians[, "Nilai"],
  varians[, "Kelas"],
  location = "mean",
  correction.method = "zero.correction"
)

hasil_mean
## 
##  Classical Levene's test based on the absolute deviations from the mean
##  ( zero.correction not applied because the location is not set to median
##  )
## 
## data:  varians[, "Nilai"]
## Test Statistic = 0.64903, p-value = 0.5366
# ==========================================================
# CONTOH KASUS 2
# ==========================================================

# Membaca data kasus kedua
simpan <- read.csv(
  "varians2.csv",
  header = TRUE,
  sep = ";"
)

# Menampilkan data
simpan
##    Nilai Kelas
## 1     30     1
## 2     40     1
## 3     50     1
## 4     60     1
## 5     70     1
## 6     80     1
## 7     90     1
## 8     10     2
## 9     20     2
## 10    30     2
## 11    40     2
## 12    50     2
## 13    60     2
## 14    70     2
# ==========================================================
# STATISTIK DESKRIPTIF KASUS 2
# ==========================================================

# Membuat ringkasan berdasarkan Kelas
rata_rata <- tapply(
  simpan$Nilai,
  simpan$Kelas,
  mean
)

varians_data <- tapply(
  simpan$Nilai,
  simpan$Kelas,
  var
)

jumlah_data <- tapply(
  simpan$Nilai,
  simpan$Kelas,
  sum
)

cat("\n====================================\n")
## 
## ====================================
cat("STATISTIK DESKRIPTIF KASUS 2\n")
## STATISTIK DESKRIPTIF KASUS 2
cat("====================================\n")
## ====================================
cat("Rata-rata:\n")
## Rata-rata:
print(rata_rata)
##  1  2 
## 60 40
cat("\nVarians:\n")
## 
## Varians:
print(varians_data)
##        1        2 
## 466.6667 466.6667
cat("\nJumlah:\n")
## 
## Jumlah:
print(jumlah_data)
##   1   2 
## 420 280
# Nilai F tabel
qf(.95, df1 = 1, df2 = 12)
## [1] 4.747225
# ==========================================================
# UJI LEVENE KASUS 2
# ==========================================================

hasil_kasus2 <- levene.test(
  simpan[, "Nilai"],
  simpan[, "Kelas"],
  location = "mean",
  correction.method = "zero.correction"
)

hasil_kasus2
## 
##  Classical Levene's test based on the absolute deviations from the mean
##  ( zero.correction not applied because the location is not set to median
##  )
## 
## data:  simpan[, "Nilai"]
## Test Statistic = 1.4336e-32, p-value = 1