Pengertian Uji Normalitas

Uji Normalitas adalah sebuah uji yang dilakukan dengan tujuan untuk menilai sebaran data pada sebuah kelompok data atau variabel, apakah sebaran data tersebut berdistribusi normal ataukah tidak.

Distribusi normal berupa kurva berbentuk lonceng yang melebar tak berhingga pada kedua arah positif dan negatifnya.

Ciri-ciri kurva normal :

  • Bentuk kurva normal
  • Menyerupai lonceng (genta/bel).
  • Merupakan suatu poligon yang dilicinkan yang mana ordinat (sumbu tegak) merupakan frekuensi dan absisnya (sumbu alas) memuat nilai variabel.
  • Simetris.
  • Luas daerah merupakan nilai rata-rata (mean).
  • Luas daerah sebelah kiri dan kanan mendekati 50%.
  • Memiliki satu modus (disebut juga bimodal).

Distribusi normal dipengaruhi oleh dua parameter, yaitu mean dan standar deviasi.

Mean menentukan lokasi pusat statistik dan standar deviasi menentukan lebar dari kurva normal.

Pengertian Skewness (kemiringan) pada Distribusi Normal

Skewness diartikan sebagai kemiringan distribusi data, yang dimaksud kemiringan data adalah besarnya pembagian data atau rata-rata sebaran data yang biasanya di wujudkan dengan bentuk lonceng, untuk data yang berdistribusi normal.

Namun demikian dari hasil pengujian data kita bisa bisa mengetahui kecenderungan distribbusi data tersebut apakah bentuk lonceng tersebut sudah simetris atau cenderung miring ke kiri atau miring ke kanan.

Apabila skewness menunjukkan simetri maka dikatakan data membentuk distribusi normal, apabila kemiringan distribusi data agak condong ke kanan ditunjukkan dengan nilai skewness yang negatif, selanjutnya apabila kemiringan distribusi data condong ke kiri yang ditunjukkan bahwa nilai skewness positif.

Visualisasi Skewness

Melakukan uji Normalitas Data sangat mudah

Mari kita mulai dengan data yang sederhana:

Aktifkan dulu library “moments”

library("moments")

Berdasarkan range dari 10 sampai dengan 100, mari kita membuat data acak yang banyak kelipatan persepuluh dan perduapuluhan…

kanan<-c(12,14,15,16,13,14,17,18,25,26,23,27,40,22,42,12,12,73,73,84,85)

Lihat sebaran datanya melalui fungsi stem and leaf

stem(kanan)
## 
##   The decimal point is 1 digit(s) to the right of the |
## 
##   0 | 2223445678
##   2 | 23567
##   4 | 02
##   6 | 33
##   8 | 45

Dari tabel diatas kita melihat data berkumpul ke sebelah atas menunjukkan gambaran arah dari sebaran data.

Sekarang kita buat data yang nilai terbanyak pada perdelapanpuluhan dan persembilanpuluhan…

kiri<-c(12,24,35,36,43,54,67,78,85,93,87,90,92,90,92,82,73,83,84,95,96)

Lihat sebaran datanya melalui fungsi stem and leaf

stem(kiri)
## 
##   The decimal point is 1 digit(s) to the right of the |
## 
##   0 | 2
##   2 | 456
##   4 | 34
##   6 | 738
##   8 | 234570022356

Sekarang kita gunakan data yang jumlahnya relatif seimbang antara angka terendah dan angka tertinggi…

simetris<-c(10,20,30,30,30,40,40,40,50,50,50,50,50,50,50,70,70,70,80,80,80,90,100)

Lihat sebaran datanya melalui fungsi stem and leaf

stem(simetris)
## 
##   The decimal point is 1 digit(s) to the right of the |
## 
##    0 | 0
##    2 | 0000
##    4 | 0000000000
##    6 | 000
##    8 | 0000
##   10 | 0

Tampilan Grafik Uji Normalitas

Mari kita visualisasikan berbagai bentuk grafik uji Normalitas Data tersebut

Fungsi “par” adalah untuk membuat tampilan terbagi menjadi beberapa kolom sesuai dengan yang diinginkan

par(mfrow=c(1,3))

#Positive skew
hist(kanan,main="Positive Skew")
#Negative skew
hist(kiri,main="Negative Skew")
#Symetrical
hist(simetris,main="Symetrical Skew")

Dari data diatas kita bisa membandingkan mana saja data-data yang memiliki kemiringan ke kiri, kanan dan simetris,

Cara lainnya adalah dengan mengetahui nilai skewness pada masing-masing data.

Bila nilainya positif menunjukkan kemiringan (Skewness) distribusi data tersebut ke kanan.

skewness(kanan)
## [1] 1.261758

Bila nilainya negatif menunjukkan kemiringan (Skewness) distribusi data tersebut ke kiri.

skewness(kiri)
## [1] -0.9927919

Bila nilainya mendekati angka 0 menunjukkan kemiringan (Skewness) distribusi data tersebut simetris.

skewness(simetris)
## [1] 0.1992221

Q-Q Plot

Q-Q Plot (Quantile – Quantile (Q-Q) plot) adalah suatu scatter plot yang membandingkan distribusi empiris dengan fitted distribution dalam kaitannya dengan nilai dimensi suatu variabel.

Q-Q plot dapat memplot dengan baik jika dataset diperoleh dari populasi yang sudah diketahui. Q-Q plot dapat digunakan untuk memplot variable secara lebih teliti berdasarkan nilai quantile data.

Tampilan Q-Q Plot Positif

qqnorm(kanan,main="Right Q-Q Plot")
qqline(kanan)

Tampilan Q-Q Plot Negatif

qqnorm(kiri,main="Left Q-Q Plot")
qqline(kiri)

Tampilan Q-Q Plot Simetris

qqnorm(simetris,main = "Normal Q-Q Plot")
qqline(simetris)

Dari ketiga Grafik Q-Q Plot diatas kita bisa melihat bahwa apabila data tersebut terdistribusi Normal maka akan sebaran plot akan mendekati model (garis lurus), sebaliknya apabila sebaran data tersebut tidak terdistribusi Normal maka sebaran plot menjauh dari model (garis lurus).

Tampilan Q-Q Plot lainnya

Gunakan library “ggpubr”

library("ggpubr")
## Warning: package 'ggpubr' was built under R version 3.5.3
## Loading required package: ggplot2
## Warning: package 'ggplot2' was built under R version 3.5.3
## Loading required package: magrittr
## Warning: package 'magrittr' was built under R version 3.5.3
ggdensity(kiri, 
          main = "Left Skewness",
          xlab = "jumlah")

ggqqplot(kiri)

ggdensity(kanan, 
          main = "Right Skewness",
          xlab = "jumlah")

ggqqplot(kanan)

ggdensity(simetris, 
          main = "Normal Skewness",
          xlab = "jumlah")

ggqqplot(simetris)

Tampilan Histogram yang indah

datasim <- data.frame(kanan)
ggplot(datasim, aes(x = kanan), binwidth = 1) + 
  geom_histogram(aes(y = ..density..), fill = 'red', alpha = 0.5) + 
  geom_density(colour = 'blue') + xlab(expression(bold('sampel'))) + 
  ylab(expression(bold('Density')))
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

datasim <- data.frame(simetris)
ggplot(datasim, aes(x = simetris), binwidth = 1) + 
  geom_histogram(aes(y = ..density..), fill = 'red', alpha = 0.5) + 
  geom_density(colour = 'blue') + xlab(expression(bold('sampel'))) + 
  ylab(expression(bold('Density')))
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

Uji Statistik

Ada berbagai metode statistik yang digunakan untuk menguji apakah data tersebut berdistri busi Normal atau tidak.

Prinsip dalam uji normalitas dalam perhitungan statistik adalah menguji Hipotesa:

Kemudian kita melihat p-value pada hasil perhitungannya:

Uji Shapiro-Wilk

shapiro.test(kiri)
## 
##  Shapiro-Wilk normality test
## 
## data:  kiri
## W = 0.83012, p-value = 0.001967
shapiro.test(kanan)
## 
##  Shapiro-Wilk normality test
## 
## data:  kanan
## W = 0.74301, p-value = 9.953e-05
shapiro.test(simetris)
## 
##  Shapiro-Wilk normality test
## 
## data:  simetris
## W = 0.95994, p-value = 0.4622

Uji Normalitas lainnya

library(normtest)
library(nortest)

Liliefors test for normality

lillie.test(kiri)
## 
##  Lilliefors (Kolmogorov-Smirnov) normality test
## 
## data:  kiri
## D = 0.23526, p-value = 0.003616
lillie.test(kanan)
## 
##  Lilliefors (Kolmogorov-Smirnov) normality test
## 
## data:  kanan
## D = 0.28683, p-value = 8.624e-05
lillie.test(simetris)
## 
##  Lilliefors (Kolmogorov-Smirnov) normality test
## 
## data:  simetris
## D = 0.21206, p-value = 0.008651

Jarque-Bera test for normality

jb.norm.test(kiri)
## 
##  Jarque-Bera test for normality
## 
## data:  kiri
## JB = 3.5902, p-value = 0.0645
jb.norm.test(kanan)
## 
##  Jarque-Bera test for normality
## 
## data:  kanan
## JB = 5.5732, p-value = 0.033
jb.norm.test(simetris)
## 
##  Jarque-Bera test for normality
## 
## data:  simetris
## JB = 0.56255, p-value = 0.7055

Shapiro-Francia normality test

sf.test(kiri)
## 
##  Shapiro-Francia normality test
## 
## data:  kiri
## W = 0.83958, p-value = 0.004068
sf.test(kanan)
## 
##  Shapiro-Francia normality test
## 
## data:  kanan
## W = 0.75372, p-value = 0.0003179
sf.test(simetris)
## 
##  Shapiro-Francia normality test
## 
## data:  simetris
## W = 0.9627, p-value = 0.4425

Anderson-Darling normality test

ad.test(kiri)
## 
##  Anderson-Darling normality test
## 
## data:  kiri
## A = 1.4664, p-value = 0.0006258
ad.test(kanan)
## 
##  Anderson-Darling normality test
## 
## data:  kanan
## A = 2.2339, p-value = 6.929e-06
ad.test(simetris)
## 
##  Anderson-Darling normality test
## 
## data:  simetris
## A = 0.50763, p-value = 0.1796

Semoga bermanfaat