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
Penjelasan: Vector penjualan berisi jumlah penjualan harian selama 20 hari yang akan diuji normalitasnya.
hist(
penjualan,
main = "Histogram Data Penjualan",
xlab = "Jumlah Penjualan",
ylab = "Frekuensi",
breaks = 7
)
Interpretasi: Histogram digunakan sebagai pemeriksaan awal terhadap
bentuk distribusi data penjualan. Distribusi yang relatif simetris dan
terpusat dapat menjadi indikasi awal bahwa data mendekati distribusi
normal.
qqnorm(
penjualan,
main = "Q-Q Plot Data Penjualan"
)
qqline(
penjualan,
col = "red",
lwd = 2
)
Interpretasi: Pada Q-Q plot, normalitas dapat dilihat dari kedekatan
titik-titik data terhadap garis referensi. Semakin dekat titik terhadap
garis, semakin kuat indikasi bahwa data mengikuti distribusi normal.
hasil_shapiro <- shapiro.test(penjualan)
hasil_shapiro
##
## Shapiro-Wilk normality test
##
## data: penjualan
## W = 0.96996, p-value = 0.754
Interpretasi: Hasil uji Shapiro-Wilk menunjukkan p-value lebih besar dari 0,05. Oleh karena itu, H0 tidak ditolak sehingga data penjualan dapat dianggap berdistribusi normal.
hasil_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
hasil_ks
##
## Asymptotic one-sample Kolmogorov-Smirnov test
##
## data: scale(penjualan)
## D = 0.11402, p-value = 0.9573
## alternative hypothesis: two-sided
Interpretasi: Berdasarkan uji Kolmogorov–Smirnov, p-value lebih besar dari 0,05 sehingga H0 tidak ditolak. Dengan demikian, data penjualan juga memenuhi asumsi distribusi normal berdasarkan uji ini.
hasil_soal1 <- data.frame(
Uji = c(
"Shapiro-Wilk",
"Kolmogorov-Smirnov"
),
Statistik = c(
unname(hasil_shapiro$statistic),
unname(hasil_ks$statistic)
),
P_Value = c(
hasil_shapiro$p.value,
hasil_ks$p.value
)
)
hasil_soal1$Kesimpulan <- ifelse(
hasil_soal1$P_Value > 0.05,
"Normal",
"Tidak Normal"
)
hasil_soal1$Statistik <- round(
hasil_soal1$Statistik, 4
)
hasil_soal1$P_Value <- round(
hasil_soal1$P_Value, 4
)
hasil_soal1
## Uji Statistik P_Value Kesimpulan
## 1 Shapiro-Wilk 0.970 0.7540 Normal
## 2 Kolmogorov-Smirnov 0.114 0.9573 Normal
Kesimpulan: Berdasarkan visualisasi histogram dan Q-Q plot serta hasil uji Shapiro-Wilk dan Kolmogorov–Smirnov, data penjualan harian tidak menunjukkan penyimpangan yang signifikan dari distribusi normal. Oleh karena itu, data penjualan dapat dianggap memenuhi asumsi normalitas.
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_normalitas <- list(
Berat = berat,
Tinggi = tinggi
)
hasil_shapiro2 <- lapply(
data_normalitas,
shapiro.test
)
hasil_shapiro2
## $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
tabel_soal2 <- data.frame(
Variabel = names(data_normalitas),
W = sapply(
hasil_shapiro2,
function(x) unname(x$statistic)
),
P_Value = sapply(
hasil_shapiro2,
function(x) x$p.value
)
)
tabel_soal2$Kesimpulan <- ifelse(
tabel_soal2$P_Value > 0.05,
"Normal",
"Tidak Normal"
)
tabel_soal2$W <- round(
tabel_soal2$W, 4
)
tabel_soal2$P_Value <- round(
tabel_soal2$P_Value, 4
)
tabel_soal2
## Variabel W P_Value Kesimpulan
## Berat Berat 0.9826 0.8889 Normal
## Tinggi Tinggi 0.9648 0.4071 Normal
par(mfrow = c(1, 2))
qqnorm(
berat,
main = "Q-Q Plot Berat Badan"
)
qqline(
berat,
col = "red",
lwd = 2
)
qqnorm(
tinggi,
main = "Q-Q Plot Tinggi Badan"
)
qqline(
tinggi,
col = "red",
lwd = 2
)
par(mfrow = c(1, 1))
Interpretasi: Hasil uji Shapiro-Wilk menunjukkan bahwa variabel berat badan dan tinggi badan sama-sama mempunyai p-value lebih besar dari 0,05. Oleh karena itu, kedua variabel dapat dianggap memenuhi asumsi normalitas. Untuk tugas dosen yang meminta variabel mana yang lebih mendekati normal, berdasarkan hasil Shapiro-Wilk, berat mempunyai p-value lebih tinggi daripada tinggi. Q-Q plot juga digunakan untuk mendukung penilaian tersebut dengan melihat kedekatan titik terhadap garis referensi.
Kesimpulan Kesimpulan: Berat badan dan tinggi badan keduanya memenuhi asumsi distribusi normal. Berdasarkan hasil Shapiro-Wilk, berat badan menunjukkan indikasi normalitas yang lebih kuat dibandingkan tinggi badan.
data_mtcars <- mtcars
head(
data_mtcars[c("mpg", "hp", "wt")]
)
## mpg hp wt
## Mazda RX4 21.0 110 2.620
## Mazda RX4 Wag 21.0 110 2.875
## Datsun 710 22.8 93 2.320
## Hornet 4 Drive 21.4 110 3.215
## Hornet Sportabout 18.7 175 3.440
## Valiant 18.1 105 3.460
variabel_mtcars <- data_mtcars[
c("mpg", "hp", "wt")
]
hasil_mtcars <- lapply(
variabel_mtcars,
shapiro.test
)
hasil_mtcars
## $mpg
##
## Shapiro-Wilk normality test
##
## data: X[[i]]
## W = 0.94756, p-value = 0.1229
##
##
## $hp
##
## Shapiro-Wilk normality test
##
## data: X[[i]]
## W = 0.93342, p-value = 0.04881
##
##
## $wt
##
## Shapiro-Wilk normality test
##
## data: X[[i]]
## W = 0.94326, p-value = 0.09265
tabel_mtcars <- data.frame(
Variabel = names(variabel_mtcars),
Statistik_W = sapply(
hasil_mtcars,
function(x) unname(x$statistic)
),
P_Value = sapply(
hasil_mtcars,
function(x) x$p.value
)
)
tabel_mtcars$Kesimpulan <- ifelse(
tabel_mtcars$P_Value > 0.05,
"Normal",
"Tidak Normal"
)
tabel_mtcars$Statistik_W <- round(
tabel_mtcars$Statistik_W, 4
)
tabel_mtcars$P_Value <- round(
tabel_mtcars$P_Value, 4
)
tabel_mtcars
## Variabel Statistik_W P_Value Kesimpulan
## mpg mpg 0.9476 0.1229 Normal
## hp hp 0.9334 0.0488 Tidak Normal
## wt wt 0.9433 0.0927 Normal
par(mfrow = c(1, 3))
for (nama_var in c("mpg", "hp", "wt")) {
x <- data_mtcars[[nama_var]]
mu <- mean(x)
sigma <- sd(x)
plot(
density(x),
main = paste("Density", nama_var),
xlab = nama_var,
lwd = 2
)
curve(
dnorm(
x,
mean = mu,
sd = sigma
),
add = TRUE,
col = "red",
lwd = 2
)
}
par(mfrow = c(1, 1))
Interpretasi: Pada taraf signifikansi 5%, variabel mpg memiliki p-value sekitar 0,1229 dan wt sekitar 0,0927. Karena kedua p-value lebih besar dari 0,05, kedua variabel dapat dianggap memenuhi asumsi normalitas. Variabel hp memiliki p-value sekitar 0,0488 yang lebih kecil dari 0,05, sehingga H0 ditolak dan hp tidak memenuhi asumsi normalitas.
Kesimpulan Kesimpulan: Dari tiga variabel mtcars yang diuji, mpg dan wt memenuhi asumsi normalitas, sedangkan hp menunjukkan penyimpangan yang signifikan dari distribusi normal.
Uji normalitas penting karena beberapa metode statistik parametrik, seperti uji-t dan ANOVA, menggunakan asumsi normalitas dalam proses inferensinya. Pemeriksaan normalitas membantu memastikan bahwa metode statistik yang digunakan sesuai sehingga hasil pengujian dan kesimpulan yang diperoleh dapat dipercaya. Selain uji statistik, pemeriksaan grafik seperti histogram dan Q-Q plot juga penting untuk membantu menilai bentuk distribusi data.
Jika data tidak memenuhi asumsi normalitas, dapat digunakan metode nonparametrik yang tidak mensyaratkan distribusi normal. Contohnya adalah Mann–Whitney U/Wilcoxon rank-sum sebagai alternatif uji-t dua sampel independen, Wilcoxon signed-rank untuk data berpasangan, dan Kruskal–Wallis sebagai alternatif ANOVA satu arah. Transformasi data juga dapat dipertimbangkan apabila sesuai dengan karakteristik data.