# 1. Uji normalitas pada data tunggal
penjualan <- c(45, 52, 47, 50, 49, 53, 54, 48, 51, 50, 
               55, 46, 49, 47, 52, 50, 48, 53, 54, 49)
penjualan
##  [1] 45 52 47 50 49 53 54 48 51 50 55 46 49 47 52 50 48 53 54 49
par(mfrow=c(1,2)) 
hist(penjualan, main="Histogram Penjualan", xlab="Unit", col="lightblue", border="black")
qqnorm(penjualan, main="Q-Q Plot Penjualan")
qqline(penjualan, col="red", lwd=2)

par(mfrow=c(1,1))
# Uji Shapiro-Wilk dan Kolmogorov-Smirnov
shapiro_res <- shapiro.test(penjualan)
ks_res <- ks.test(scale(penjualan), "pnorm")
## Warning in ks.test.default(scale(penjualan), "pnorm"): ties should not be
## present for the one-sample Kolmogorov-Smirnov test
shapiro_res
## 
##  Shapiro-Wilk normality test
## 
## data:  penjualan
## W = 0.96996, p-value = 0.754
ks_res
## 
##  Asymptotic one-sample Kolmogorov-Smirnov test
## 
## data:  scale(penjualan)
## D = 0.11402, p-value = 0.9573
## alternative hypothesis: two-sided
# 2. Uji normalitas pada dua variabel
berat <- c(55, 60, 62, 58, 64, 70, 68, 72, 59, 61,
           63, 65, 66, 67, 71, 69, 60, 58, 62, 64,
           73, 75, 77, 68, 70, 72, 74, 69, 63, 65)

tinggi <- c(160, 162, 164, 158, 166, 172, 170, 175, 161, 163,
            165, 167, 169, 171, 173, 174, 160, 159, 164, 166,
            176, 178, 180, 172, 174, 176, 177, 171, 165, 167)

data_responden <- list(Berat_Badan = berat, Tinggi_Badan = tinggi)
data_responden
## $Berat_Badan
##  [1] 55 60 62 58 64 70 68 72 59 61 63 65 66 67 71 69 60 58 62 64 73 75 77 68 70
## [26] 72 74 69 63 65
## 
## $Tinggi_Badan
##  [1] 160 162 164 158 166 172 170 175 161 163 165 167 169 171 173 174 160 159 164
## [20] 166 176 178 180 172 174 176 177 171 165 167
hasil_uji_dua_var <- lapply(data_responden, shapiro.test)
hasil_uji_dua_var
## $Berat_Badan
## 
##  Shapiro-Wilk normality test
## 
## data:  X[[i]]
## W = 0.98257, p-value = 0.8889
## 
## 
## $Tinggi_Badan
## 
##  Shapiro-Wilk normality test
## 
## data:  X[[i]]
## W = 0.96475, p-value = 0.4071
par(mfrow=c(1,2))
qqnorm(berat, main="Q-Q Plot Berat Badan")
qqline(berat, col="blue", lwd=2)
qqnorm(tinggi, main="Q-Q Plot Tinggi Badan")
qqline(tinggi, col="green", lwd=2)

par(mfrow=c(1,1))
# Uji normalitas pada dataset R
library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
data_mtcars <- mtcars  
hasil_mtcars <- data_mtcars %>%
  select(mpg, hp, wt) %>%
  summarise(across(everything(), ~shapiro.test(.)$p.value))

hasil_mtcars 
##         mpg         hp         wt
## 1 0.1228814 0.04880824 0.09265499
par(mfrow = c(1, 3)) 
variabel_list <- c("mpg", "hp", "wt")

for (var in variabel_list) {  
  x <- data_mtcars[[var]]     
  max_y <- max(max(density(x)$y), dnorm(mean(x), mean(x), sd(x)))
  
  plot(density(x), 
       main = paste("Density Plot:", var), 
       xlab = var, 
       ylab = "Density", 
       col = "blue", 
       lwd = 2,
       ylim = c(0, max_y))
  
  x_range <- seq(min(x), max(x), length.out = 100)
  y_norm <- dnorm(x_range, mean = mean(x), sd = sd(x))
  lines(x_range, y_norm, col = "red", lwd = 2, lty = 2)
  
  legend("topright", legend = c("Data", "Normal"), 
         col = c("blue", "red"), lty = c(1, 2), cex = 0.8)
}

par(mfrow = c(1, 1))