# ============================================================
# UJI NORMALITAS
# Nama : Muhammad Taufiqul Hafizh Muttaqin
# NIM  : 2409106099
# ============================================================

# 1. Instalasi package (jalankan sekali saja jika belum terpasang)
# install.packages("nortest")
# install.packages("tseries")

# 2. Memanggil package
 library(nortest)
 library(tseries)
## Registered S3 method overwritten by 'quantmod':
##   method            from
##   as.zoo.data.frame zoo
# 3. Memasukkan data nilai ujian matematika
nilai <- c(40, 50, 50, 60, 60, 60, 70, 70,
           70, 70, 80, 80, 80, 90, 90, 100)

# 4. Statistik deskriptif
cat("STATISTIK DESKRIPTIF\\n")
## STATISTIK DESKRIPTIF\n
cat("Jumlah data :", length(nilai), "\\n")
## Jumlah data : 16 \n
cat("Rata-rata   :", mean(nilai), "\\n")
## Rata-rata   : 70 \n
cat("Median      :", median(nilai), "\\n")
## Median      : 70 \n
cat("Standar deviasi:", sd(nilai), "\\n\\n")
## Standar deviasi: 16.32993 \n\n
# 5. Hipotesis pengujian
# H0: Data berasal dari populasi yang berdistribusi normal.
# H1: Data tidak berasal dari populasi yang berdistribusi normal.
# Taraf signifikansi (alpha) = 0.05

alpha <- 0.05

# 6. Uji Kolmogorov-Smirnov dengan koreksi Lilliefors
hasil_lilliefors <- lillie.test(nilai)

cat("HASIL UJI LILLIEFORS\\n")
## HASIL UJI LILLIEFORS\n
print(hasil_lilliefors)
## 
##  Lilliefors (Kolmogorov-Smirnov) normality test
## 
## data:  nilai
## D = 0.125, p-value = 0.7235
if (hasil_lilliefors$p.value > alpha) {
  cat("Keputusan: Gagal menolak H0. Tidak terdapat bukti yang cukup")
  cat(" bahwa data tidak berdistribusi normal.\\n\\n")
} else {
  cat("Keputusan: Tolak H0. Terdapat bukti bahwa data tidak")
  cat(" berdistribusi normal.\\n\\n")
}
## Keputusan: Gagal menolak H0. Tidak terdapat bukti yang cukup bahwa data tidak berdistribusi normal.\n\n
# 7. Uji Jarque-Bera
hasil_jarque_bera <- jarque.bera.test(nilai)

cat("HASIL UJI JARQUE-BERA\\n")
## HASIL UJI JARQUE-BERA\n
print(hasil_jarque_bera)
## 
##  Jarque Bera Test
## 
## data:  nilai
## X-squared = 0.30827, df = 2, p-value = 0.8572
if (hasil_jarque_bera$p.value > alpha) {
  cat("Keputusan: Gagal menolak H0. Tidak terdapat bukti yang cukup")
  cat(" bahwa data tidak berdistribusi normal.\\n\\n")
} else {
  cat("Keputusan: Tolak H0. Terdapat bukti bahwa data tidak")
  cat(" berdistribusi normal.\\n\\n")
}
## Keputusan: Gagal menolak H0. Tidak terdapat bukti yang cukup bahwa data tidak berdistribusi normal.\n\n
# 8. Q-Q Plot
qqnorm(nilai,
       main = "Q-Q Plot Nilai Ujian Matematika",
       xlab = "Kuantil Teoretis",
       ylab = "Kuantil Sampel")
qqline(nilai, col = "red", lwd = 2)

# 9. Kesimpulan
cat("KESIMPULAN\\n")
## KESIMPULAN\n
if (hasil_lilliefors$p.value > alpha &&
    hasil_jarque_bera$p.value > alpha) {
  cat("Berdasarkan uji Lilliefors dan Jarque-Bera pada taraf")
  cat(" signifikansi 5%, kedua p-value lebih besar dari 0.05.")
  cat(" Dengan demikian, H0 gagal ditolak dan tidak terdapat")
  cat(" bukti yang cukup untuk menyatakan bahwa data tidak")
  cat(" berdistribusi normal.\\n")
} else {
  cat("Setidaknya salah satu pengujian menghasilkan p-value")
  cat(" kurang dari atau sama dengan 0.05. Periksa hasil")
  cat(" pengujian dan Q-Q Plot untuk menilai normalitas data.\\n")
}
## Berdasarkan uji Lilliefors dan Jarque-Bera pada taraf signifikansi 5%, kedua p-value lebih besar dari 0.05. Dengan demikian, H0 gagal ditolak dan tidak terdapat bukti yang cukup untuk menyatakan bahwa data tidak berdistribusi normal.\n