Praktikum Uji Normalitas

Soal 1: Uji Normalitas Data Tunggal

# Data penjualan harian
penjualan <- c(45, 52, 47, 50, 49, 53, 54, 48, 51, 50,
               55, 46, 49, 47, 52, 50, 48, 53, 54, 49)

# Histogram
hist(penjualan,
     main = "Histogram Penjualan Harian",
     xlab = "Jumlah Penjualan (unit)",
     ylab = "Frekuensi",
     col = "lightblue",
     border = "black")

# QQ-plot
qqnorm(penjualan,
       main = "QQ-Plot Penjualan Harian")
qqline(penjualan, col = "red", lwd = 2)

### Hipotesis pengujian

H_0 : Data penjualan berdistribusi normal. H_1 : Data penjualan tidak berdistribusi normal.

Taraf signifikansi yang digunakan adalah α=0,05.

# Uji Shapiro-Wilk
shapiro.test(penjualan)
## 
##  Shapiro-Wilk normality test
## 
## data:  penjualan
## W = 0.96996, p-value = 0.754

Berdasarkan hasil uji Shapiro-Wilk diperoleh nilai W = 0,96996 dengan p-value = 0,754. Karena p-value > 0,05, maka H0 diterima dan H1 ditolak. Artinya, tidak terdapat bukti yang cukup bahwa data penjualan harian tidak berdistribusi normal. Dengan demikian, data penjualan harian berdistribusi normal.

# Uji Kolmogorov-Smirnov
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
## 
##  Asymptotic one-sample Kolmogorov-Smirnov test
## 
## data:  scale(penjualan)
## D = 0.11402, p-value = 0.9573
## alternative hypothesis: two-sided

Berdasarkan hasil uji Kolmogorov-Smirnov diperoleh nilai D = 0,11402 dengan p-value = 0,9573. Karena p-value > 0,05, maka H0 diterima dan H1 ditolak. Artinya, tidak terdapat bukti yang cukup bahwa data penjualan harian tidak berdistribusi normal. Dengan demikian, data penjualan harian berdistribusi normal.

Berdasarkan kedua uji tersebut, yaitu Shapiro-Wilk dan Kolmogorov-Smirnov, diperoleh p-value > 0,05. Oleh karena itu, maka H0 diterima dan H1 ditolak, sehingga data penjualan harian dapat dianggap berdistribusi normal.

Soal 2: Uji Normalitas pada Dua Variabel

###Hipotesis pengujian A. Variabel Berat Badan H_0 : Variabel berat badan berdistribusi normal. H_1 : Variabel berat badan tidak berdistribusi normal.

B. Variabel Tinggi Badan H_0 : Variabel tinggi badan berdistribusi normal. H_1 : Variabel tinggi badan tidak 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)

data <- list(
  Berat = berat,
  Tinggi = tinggi
)

hasil_uji <- lapply(data, 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

Berat Badan Berdasarkan hasil uji Shapiro-Wilk, diperoleh nilai W = 0,98257 dengan p-value = 0,8889. Karena p-value > 0,05, maka H0 diterima dan H1 ditolak. Artinya, tidak terdapat bukti yang cukup bahwa data berat badan tidak berdistribusi normal. Dengan demikian, data berat badan dapat dianggap berdistribusi normal.

Tinggi Badan Berdasarkan hasil uji Shapiro-Wilk, diperoleh nilai W = 0,96475 dengan p-value = 0,4071. Karena p-value > 0,05, maka H0 diterima dan H1 ditolak. Artinya, tidak terdapat bukti yang cukup bahwa data tinggi badan tidak berdistribusi normal. Dengan demikian, data tinggi badan dapat dianggap berdistribusi normal.

#QQ Plot Berat Badan 
qqnorm(berat,
       main = "QQ-Plot Berat Badan",
       xlab = "Theoretical Quantiles",
       ylab = "Sample Quantiles")

qqline(berat, col = "red", lwd = 2)

Berdasarkan QQ-plot, titik-titik data berat badan secara umum berada di sekitar garis diagonal. Hal tersebut menunjukkan bahwa data berat badan memiliki pola yang mendekati distribusi normal. Hasil visualisasi ini juga sejalan dengan uji Shapiro-Wilk yang menghasilkan p-value sebesar 0,8889 > 0,05.

#QQ Plot Tinggi Badan 
qqnorm(tinggi,
       main = "QQ-Plot Tinggi Badan",
       xlab = "Theoretical Quantiles",
       ylab = "Sample Quantiles")

qqline(tinggi, col = "red", lwd = 2)

Berdasarkan QQ-Plot tinggi badan, sebagian besar titik pengamatan berada di sekitar garis diagonal. Meskipun terdapat sedikit penyimpangan pada bagian ujung, secara umum titik-titik masih mengikuti pola garis diagonal. Hal ini menunjukkan bahwa data tinggi badan cenderung berdistribusi normal.

variabel mana yang lebih mendekati distribusi normal ?

Berdasarkan hasil uji Shapiro-Wilk dan QQ-plot, berat badan dan tinggi badan sama-sama dapat dianggap berdistribusi normal. Namun, jika dibandingkan, berat badan lebih mendekati distribusi normal karena memiliki nilai statistik Shapiro-Wilk yang lebih besar (W = 0,98257) dan p-value yang lebih besar (0,8889) dibandingkan tinggi badan (W = 0,96475; p-value = 0,4071). Hasil QQ-plot juga menunjukkan bahwa titik-titik pada kedua variabel secara umum mengikuti garis diagonal.

Soal 3. Uji Normalitas pada Dataset Bawaan R (mtcars)

# Memanggil dataset bawaan R
data <- mtcars

# Memilih variabel yang akan diuji
variabel <- data[, c("mpg", "hp", "wt")]

# Uji Shapiro-Wilk untuk setiap variabel
hasil_uji <- lapply(variabel, shapiro.test)
hasil_uji
## $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
hasil <- data.frame(
  Variabel = c("mpg", "hp", "wt"),
  W = c(
    shapiro.test(data$mpg)$statistic,
    shapiro.test(data$hp)$statistic,
    shapiro.test(data$wt)$statistic
  ),
  p_value = c(
    shapiro.test(data$mpg)$p.value,
    shapiro.test(data$hp)$p.value,
    shapiro.test(data$wt)$p.value
  )
)

hasil$Kesimpulan <- ifelse(
  hasil$p_value > 0.05,
  "Data Berdistribusi Normal",
  "Data Tidak Berdistribusi normal"
)

print(hasil)
##   Variabel         W    p_value                      Kesimpulan
## 1      mpg 0.9475647 0.12288136       Data Berdistribusi Normal
## 2       hp 0.9334193 0.04880824 Data Tidak Berdistribusi normal
## 3       wt 0.9432577 0.09265499       Data Berdistribusi Normal

Interpretasi Variabel mpg Berdasarkan hasil uji Shapiro-Wilk, variabel mpg memiliki nilai W = 0,94756 dan p-value = 0,1229. Karena p-value > 0,05, maka H0 diterima dan H1 ditolak. Artinya, tidak terdapat bukti yang cukup bahwa variabel mpg tidak berdistribusi normal. Dengan demikian, variabel mpg dapat dianggap berdistribusi normal.

Interpretasi Variabel hp Berdasarkan hasil uji Shapiro-Wilk, variabel hp memiliki nilai W = 0,93342 dan p-value = 0,04881. Karena p-value < 0,05, maka H0 ditolak dan terima H1. Artinya, terdapat bukti yang cukup bahwa variabel hp tidak berdistribusi normal. Dengan demikian, variabel hp tidak berdistribusi normal.

Interpretasi Variabel wt Berdasarkan hasil uji Shapiro-Wilk, variabel wt memiliki nilai W = 0,94326 dan p-value = 0,09265. Karena p-value > 0,05, maka H0 diterima dan H1 ditolak. Artinya, tidak terdapat bukti yang cukup bahwa variabel wt tidak berdistribusi normal. Dengan demikian, variabel wt dapat dianggap berdistribusi normal.

# Density plot mpg
plot(density(data$mpg),
     main = "Density Plot MPG",
     xlab = "MPG",
     ylab = "Density",
     col = "red",
     lwd = 2)

curve(dnorm(x, mean(data$mpg), sd(data$mpg)),
      add = TRUE,
      col = "blue",
      lwd = 2)

legend("topright",
       legend = c("Density Data", "Kurva Normal"),
       col = c("red", "blue"),
       lwd = 2)

plot(density(data$hp),
     main = "Density Plot Horsepower",
     xlab = "Horsepower",
     ylab = "Density",
     col = "red",
     lwd = 2)

curve(dnorm(x, mean(data$hp), sd(data$hp)),
      add = TRUE,
      col = "blue",
      lwd = 2)

legend("topright",
       legend = c("Density Data", "Kurva Normal"),
       col = c("red", "blue"),
       lwd = 2)

plot(density(data$wt),
     main = "Density Plot Weight",
     xlab = "Weight",
     ylab = "Density",
     col = "red",
     lwd = 2)

curve(dnorm(x, mean(data$wt), sd(data$wt)),
      add = TRUE,
      col = "blue",
      lwd = 2)

legend("topright",
       legend = c("Density Data", "Kurva Normal"),
       col = c("red", "blue"),
       lwd = 2)

Pertanyaan Reflektif

1. Mengapa penting melakukan uji normalitas sebelum analisis inferensial seperti uji-t atau ANOVA?

Uji normalitas penting dilakukan untuk mengetahui apakah data memenuhi asumsi distribusi normal sebelum menggunakan analisis inferensial tertentu. Uji-t dan ANOVA merupakan metode statistik parametrik yang memiliki asumsi tertentu mengenai distribusi data atau residual. Oleh karena itu, pemeriksaan normalitas membantu memastikan bahwa metode analisis yang digunakan sesuai dengan karakteristik data.

Jika asumsi yang diperlukan tidak terpenuhi, hasil analisis parametrik dapat menjadi kurang sesuai. Oleh karena itu, pemeriksaan asumsi perlu dilakukan sebelum menarik kesimpulan berdasarkan hasil uji statis

2. Jika data tidak berdistribusi normal, metode apa yang dapat digunakan sebagai alternatif?

Jika data tidak berdistribusi normal, salah satu alternatif yang dapat digunakan adalah uji non-parametrik. Metode non-parametrik dapat digunakan ketika asumsi normalitas tidak terpenuhi. Contohnya adalah uji Mann-Whitney, Wilcoxon, dan Kruskal-Wallis, sesuai dengan jenis analisis dan data yang digunakan.