Uji normalitas merupakan salah satu uji prasyarat (uji asumsi) yang paling sering digunakan dalam statistika inferensial. Sebelum melakukan analisis statistik parametrik seperti uji-t, ANOVA, atau regresi linear, perlu dipastikan bahwa data yang digunakan berasal dari populasi yang berdistribusi normal. Laporan ini membahas konsep dasar distribusi normal, uji Shapiro-Wilk sebagai metode pengujiannya, serta penerapannya pada data bangkitan (simulasi) menggunakan R.
Distribusi normal (Gaussian) adalah distribusi probabilitas kontinu yang paling banyak digunakan dalam statistika, dengan kurva berbentuk lonceng (bell-shaped) yang simetris terhadap nilai rata-ratanya. Fungsi kepadatan peluangnya dirumuskan sebagai:
\[ f(x) = \frac{1}{\sigma\sqrt{2\pi}} \, e^{-\frac{(x-\mu)^2}{2\sigma^2}} \]
dengan \(\mu\) adalah rata-rata (mean) populasi dan \(\sigma\) adalah simpangan baku (standar deviasi) populasi.
Ciri-ciri data yang berdistribusi normal:
Banyak metode statistik parametrik (uji-t, ANOVA, regresi linear, dsb.) dibangun di atas asumsi bahwa data atau residualnya berdistribusi normal. Jika asumsi ini dilanggar:
Terdapat dua pendekatan umum untuk menguji normalitas:
a. Pendekatan Visual (Deskriptif)
Kelemahan pendekatan visual adalah sifatnya subjektif, tergantung interpretasi orang yang membaca grafik.
b. Pendekatan Formal (Uji Statistik)
Pendekatan formal lebih objektif karena menghasilkan nilai statistik uji dan \(p\text{-value}\) yang bisa dibandingkan dengan taraf signifikansi tertentu.
Uji Shapiro-Wilk (Shapiro & Wilk, 1965) adalah salah satu uji normalitas yang paling banyak direkomendasikan, terutama untuk ukuran sampel kecil hingga menengah (umumnya \(n \leq 50\), meskipun tetap valid untuk \(n\) lebih besar). Uji ini dianggap memiliki power (kemampuan mendeteksi ketidaknormalan) yang lebih baik dibanding metode lain seperti Kolmogorov-Smirnov.
Statistik uji Shapiro-Wilk dirumuskan sebagai:
\[ W = \frac{\left( \sum_{i=1}^{n} a_i x_{(i)} \right)^2}{\sum_{i=1}^{n} (x_i - \bar{x})^2} \]
dengan \(x_{(i)}\) adalah data yang telah diurutkan (order statistics), \(a_i\) adalah konstanta yang diperoleh dari mean, varians, dan kovarians dari order statistics suatu sampel berdistribusi normal, dan \(\bar{x}\) adalah rata-rata sampel.
Nilai \(W\) berkisar antara 0 dan 1. Semakin mendekati 1, semakin kuat indikasi bahwa data mengikuti distribusi normal.
Hipotesis uji:
\[ \begin{aligned} H_0 &: \text{Data berasal dari populasi berdistribusi normal} \\ H_1 &: \text{Data tidak berasal dari populasi berdistribusi normal} \end{aligned} \]
Kriteria keputusan (pada taraf signifikansi \(\alpha = 0.05\)):
Keunggulan:
shapiro.test().Keterbatasan:
Untuk menerapkan konsep di atas, dibangkitkan data sebanyak 50
observasi menggunakan fungsi rnorm() di R, yang
menghasilkan data acak berdistribusi normal dengan rata-rata dan
simpangan baku tertentu. set.seed(123) digunakan agar hasil
dapat direproduksi.
set.seed(123)
n <- 50
data_uji <- rnorm(n, mean = 70, sd = 10) # misal: nilai ujian
data_uji <- round(data_uji, 1)
df <- data.frame(id = 1:n, nilai = data_uji)
str(df)
## 'data.frame': 50 obs. of 2 variables:
## $ id : int 1 2 3 4 5 6 7 8 9 10 ...
## $ nilai: num 64.4 67.7 85.6 70.7 71.3 87.2 74.6 57.3 63.1 65.5 ...
head(df)
## id nilai
## 1 1 64.4
## 2 2 67.7
## 3 3 85.6
## 4 4 70.7
## 5 5 71.3
## 6 6 87.2
summary(df)
## id nilai
## Min. : 1.00 Min. :50.30
## 1st Qu.:13.25 1st Qu.:64.40
## Median :25.50 Median :69.30
## Mean :25.50 Mean :70.34
## 3rd Qu.:37.75 3rd Qu.:76.97
## Max. :50.00 Max. :91.70
Tabel Statistik Deskriptif
tabel_deskriptif <- data.frame(
Statistik = c("n", "Mean", "Median", "Std. Deviasi", "Minimum", "Maksimum"),
Nilai = c(
nrow(df),
round(mean(df$nilai), 2),
round(median(df$nilai), 2),
round(sd(df$nilai), 2),
round(min(df$nilai), 2),
round(max(df$nilai), 2)
)
)
knitr::kable(tabel_deskriptif, caption = "Ringkasan Statistik Deskriptif Data Simulasi")
| Statistik | Nilai |
|---|---|
| n | 50.00 |
| Mean | 70.34 |
| Median | 69.30 |
| Std. Deviasi | 9.27 |
| Minimum | 50.30 |
| Maksimum | 91.70 |
Nilai skewness dan kurtosis dapat menjadi indikator awal normalitas data secara numerik, sebelum dilakukan uji formal.
if (!requireNamespace("moments", quietly = TRUE)) {
install.packages("moments", repos = "https://cloud.r-project.org")
}
library(moments)
skew_val <- skewness(df$nilai)
kurt_val <- kurtosis(df$nilai)
cat("Skewness:", round(skew_val, 4), "\n")
## Skewness: 0.1673
cat("Kurtosis:", round(kurt_val, 4), "\n")
## Kurtosis: 2.579
Interpretasi awal: Data dikatakan cenderung simetris (mendekati normal) jika nilai skewness mendekati 0, dan kurtosis mendekati 3 (atau excess kurtosis mendekati 0).
par(mfrow = c(1, 2))
hist(
df$nilai,
breaks = 10,
col = "#ecf0f1",
border = "#2c3e50",
main = "Histogram Data",
xlab = "Nilai",
freq = FALSE
)
curve(dnorm(x, mean = mean(df$nilai), sd = sd(df$nilai)),
col = "red", lwd = 2, add = TRUE)
boxplot(
df$nilai,
col = "#3498db",
main = "Boxplot Data",
ylab = "Nilai"
)
par(mfrow = c(1, 1))
Cara membaca: Kurva merah pada histogram adalah kurva normal teoritis berdasarkan mean dan standar deviasi data. Jika batang histogram mengikuti pola kurva merah, itu indikasi awal data mendekati normal. Boxplot membantu melihat kesimetrisan dan ada tidaknya outlier ekstrem.
Berdasarkan dasar teori pada Bagian B, berikut tahapan penerapan uji Shapiro-Wilk terhadap data simulasi.
\[ \begin{aligned} H_0 &: \text{Data berdistribusi normal} \\ H_1 &: \text{Data tidak berdistribusi normal} \end{aligned} \]
Taraf signifikansi yang digunakan adalah \(\alpha = 0.05\).
uji_sw <- shapiro.test(df$nilai)
uji_sw
##
## Shapiro-Wilk normality test
##
## data: df$nilai
## W = 0.98925, p-value = 0.9271
Dari hasil di atas diperoleh nilai \(\displaystyle W = 0.9892\) dengan \(\displaystyle p\text{-value} = 0.9271\).
Q-Q Plot membandingkan kuantil data observasi dengan kuantil teoritis distribusi normal. Semakin dekat titik-titik dengan garis diagonal merah, semakin kuat indikasi normalitas.
qqnorm(df$nilai, pch = 19, col = "#8e44ad", main = "Normal Q-Q Plot")
qqline(df$nilai, col = "red", lwd = 2)
grid()
Pada histogram, batang-batang data secara umum mengikuti pola kurva normal teoritis (garis merah), dan boxplot tidak menunjukkan outlier ekstrem yang mencolok. Pada Normal Q-Q Plot, titik-titik data tersebar mengikuti garis diagonal merah, yang mengindikasikan kesesuaian dengan distribusi normal secara visual.
Nilai skewness sebesar 0.1673 menunjukkan bahwa data relatif simetris, sedangkan nilai kurtosis sebesar 2.579 mendekati nilai kurtosis distribusi normal (3).
Ringkasan Hasil
| Uji | Statistik_W | p_value | Status | |
|---|---|---|---|---|
| W | Shapiro-Wilk | 0.989 | 0.9271 | Normal |
Karena nilai \(\displaystyle p\text{-value} = 0.9271\) lebih besar dari \(\alpha = 0.05\), maka keputusan yang diambil adalah gagal tolak H0, sehingga dapat disimpulkan bahwa data berdistribusi normal pada taraf signifikansi 5%.