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.
Distribusi normal dipengaruhi oleh dua parameter, yaitu mean dan standar deviasi.
Mean menentukan lokasi pusat statistik dan standar deviasi menentukan lebar dari kurva 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.
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
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 (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.
qqnorm(kanan,main="Right Q-Q Plot")
qqline(kanan)
qqnorm(kiri,main="Left Q-Q Plot")
qqline(kiri)
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).
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)
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`.
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:
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
library(normtest)
library(nortest)
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
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
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
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