penjualan <- c(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))
# 1. Histogram
hist(penjualan,
main = "Histogram Penjualan",
xlab = "Jumlah Penjualan (unit)",
col = "pink",
border = "lightblue")
# 2. QQ-Plot
qqnorm(penjualan, main = "Q-Q Plot Penjualan")
qqline(penjualan, col = "coral3", lwd = 2)
## Uji Shapiro-Wilk dan Uji Kolmogrov-Smirnov
# Uji Shapiro-Wilk
uji_sw <- shapiro.test(penjualan)
print(uji_sw)
##
## Shapiro-Wilk normality test
##
## data: penjualan
## W = 0.96996, p-value = 0.754
# Uji Kolmogorov-Smirnov
uji_ks <- 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
print(uji_ks)
##
## Asymptotic one-sample Kolmogorov-Smirnov test
##
## data: scale(penjualan)
## D = 0.11402, p-value = 0.9573
## alternative hypothesis: two-sided
# Menampilkan nilai p-value secara langsung
cat("p-value Shapiro-Wilk :", uji_sw$p.value, "\n")
## p-value Shapiro-Wilk : 0.754028
cat("p-value Kolmogorov-Smirnov :", uji_ks$p.value, "\n")
## p-value Kolmogorov-Smirnov : 0.9572511
1.Uji Shapiro-Wilk, diperoleh nilai W=0,970 dengan p-value 0,754 2. Uji Kolmogorov-Smirnov, diperoleh nilai D=0,114 dengan p-value 0.931 3. Karena kedua nilai p-value > 0.05 maka H0 gagal ditolak. Artinya data jumlah penjualan harian berdistribusi normal.
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)
# Menggabungkan ke dalam sebuah list atau data frame
data_list <- list(Berat = berat, Tinggi = tinggi)
# Menggunakan lapply() untuk uji Shapiro-Wilk pada kedua variabel
hasil_uji <- lapply(data_list, shapiro.test)
hasil_uji
## $Berat
##
## Shapiro-Wilk normality test
##
## data: X[[i]]
## W = 0.98257, p-value = 0.8889
##
##
## $Tinggi
##
## Shapiro-Wilk normality test
##
## data: X[[i]]
## W = 0.96475, p-value = 0.4071
# Menampilkan ringkasan nilai p-value dan W
sapply(hasil_uji, function(x) c(W = x$statistic, p_value = x$p.value))
## Berat Tinggi
## W.W 0.9825681 0.9647532
## p_value 0.8889398 0.4071377
par(mfrow = c(1, 2))
# QQ-Plot Variabel Berat
qqnorm(berat, main = "Q-Q Plot Berat Badan", pch = 19, col = "cadetblue4")
qqline(berat, col = "brown3", lwd = 2)
# QQ-Plot Variabel Tinggi
qqnorm(tinggi, main = "Q-Q Plot Tinggi Badan", pch = 19, col = "burlywood4")
qqline(tinggi, col = "aquamarine4", lwd = 2)
## Perbandingan dan Kesimpulan
# Menampilkan ringkasan nilai p-value dan W
sapply(hasil_uji, function(x) c(W = x$statistic, p_value = x$p.value))
## Berat Tinggi
## W.W 0.9825681 0.9647532
## p_value 0.8889398 0.4071377
data <- mtcars
shapiro.test(data$mpg)
##
## Shapiro-Wilk normality test
##
## data: data$mpg
## W = 0.94756, p-value = 0.1229
shapiro.test(data$hp)
##
## Shapiro-Wilk normality test
##
## data: data$hp
## W = 0.93342, p-value = 0.04881
shapiro.test(data$wt)
##
## Shapiro-Wilk normality test
##
## data: data$wt
## W = 0.94326, p-value = 0.09265
par(mfrow = c(1, 3))
# Daftar variabel yang akan diplot
vars <- c("mpg", "hp", "wt")
labels <- c("Miles per Gallon (mpg)", "Horsepower (hp)", "Weight (wt)")
for (i in 1:3) {
x <- data[[vars[i]]]
# Plot kurva densitas empiris data
plot(density(x),
main = paste("Density Plot:", vars[i]),
xlab = labels[i],
col = "lightblue",
lwd = 2)
# Membuat kurva distribusi normal teoritis sebagai overlay
x_seq <- seq(min(x), max(x), length.out = 100)
y_norm <- dnorm(x_seq, mean = mean(x), sd = sd(x))
lines(x_seq, y_norm, col = "pink", lty = 2, lwd = 2)
# Menambahkan legenda
legend("topright", legend = c("Empirical", "Normal"),
col = c("lightblue", "pink"), lty = c(1, 2), lwd = 2, cex = 0.8)
}
## Membuat tabel ringkas hasil uji
library(dplyr)
## Warning: package 'dplyr' was built under R version 4.5.2
##
## 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
# Daftar variabel yang diuji
variabel <- c("mpg", "hp", "wt")
# Membuat tabel ringkas secara langsung
tabel_ringkas <- data.frame(
Variabel = variabel,
`Statistik W` = sapply(data[variabel], function(x) round(shapiro.test(x)$statistic, 4)),
`p-value` = sapply(data[variabel], function(x) round(shapiro.test(x)$p.value, 4)),
row.names = NULL,
check.names = FALSE
)
# Menambahkan kolom kesimpulan
tabel_ringkas$Kesimpulan <- ifelse(tabel_ringkas$`p-value` > 0.05,
"Berdistribusi Normal",
"Tidak Berdistribusi Normal")
# Tampilkan tabel
print(tabel_ringkas)
## Variabel Statistik W p-value Kesimpulan
## 1 mpg 0.9476 0.1229 Berdistribusi Normal
## 2 hp 0.9334 0.0488 Tidak Berdistribusi Normal
## 3 wt 0.9433 0.0927 Berdistribusi Normal
Menggunakan Uji Non-Parametrik (Metode Utama): Uji non-parametrik tidak bergantung pada bentuk distribusi populasi tertentu (berbasis peringkat/rank): Alternatif Uji-t Satu Sampel / Berpasangan: Uji Peringkat Bertanda Wilcoxon (Wilcoxon Signed-Rank Test). Alternatif Uji-t Dua Sampel Bebas: Uji Mann-Whitney U / Wilcoxon Rank-Sum (Mann-Whitney U Test). Alternatif One-Way ANOVA: Uji Kruskal-Wallis (Kruskal-Wallis Test). Alternatif Repeated Measures ANOVA: Uji Friedman (Friedman Test). Alternatif Korelasi Pearson: Korelasi Spearman Rank atau Kendall’s Tau.
Transformasi Data: Mengubah skala data agar mendekati bentuk normal sebelum diuji kembali, contohnya: Transformasi Logaritmik (log(x)) ln(x) untuk data yang menceng ke kanan (right-skewed). Transformasi Akar Kuadrat (akar x) Transformasi Box-Cox.
Metode Resampling (Bootstrapping / Permutasi): Menggunakan teknik komputasi modern seperti bootstrapping untuk mengestimasi selang kepercayaan (confidence intervals) dan signifikansi tanpa asumsi distribusi tertentu.