library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.4.2
library(MVN)
## Warning: package 'MVN' was built under R version 4.4.3
Berikut data diambil dari Garperz (1992) dalam Simatupang (2002) X1 = Konstribusi industri manufaktur dalam produk domestik regional bruto (%) X2 = Banyaknya tenaga kerja dalam sektor industri manufaktur (%) Apakah data ini menyebar bivariate normal? Jelaskan!
# Masukkan data ke dalam vektor
X1 <- c(8.8, 8.5, 7.7, 4.9, 9.6, 10, 11.5, 11.6, 11.2, 10.7, 10, 6.8)
X2 <- c(2589, 1186, 291, 1276, 6633, 12125, 36717, 43319, 10530, 3931, 1536, 61400)
# Gabungkan ke dalam data frame
data_industri <- data.frame(X1, X2)
# Lihat isi data
print(data_industri)
## X1 X2
## 1 8.8 2589
## 2 8.5 1186
## 3 7.7 291
## 4 4.9 1276
## 5 9.6 6633
## 6 10.0 12125
## 7 11.5 36717
## 8 11.6 43319
## 9 11.2 10530
## 10 10.7 3931
## 11 10.0 1536
## 12 6.8 61400
# Jika ingin dalam bentuk matrix
data_matrix <- cbind(X1, X2)
print(data_matrix)
## X1 X2
## [1,] 8.8 2589
## [2,] 8.5 1186
## [3,] 7.7 291
## [4,] 4.9 1276
## [5,] 9.6 6633
## [6,] 10.0 12125
## [7,] 11.5 36717
## [8,] 11.6 43319
## [9,] 11.2 10530
## [10,] 10.7 3931
## [11,] 10.0 1536
## [12,] 6.8 61400
ggplot(data_industri, aes(x = X1, y=X2)) +
geom_point() +
geom_density2d() +
theme_minimal() +
labs(title = "Dense Plot", x = "X1", y = "X2")
mardia <- mvn(data_industri, mvn_test = c("mardia"))
plot(mardia, diagnostic = "multivariate", type = "qq")
Dari hasil R diatas akan dilakukan pengujian hipotesis terhadap mardia skewness test sebagai berikut : H0 : Peubah ganda mengikuti distribusi normal H1 : Peubah ganda tidak mengikuti distribusi normal
mardia
## $multivariate_normality
## Test Statistic p.value Method MVN
## 1 Mardia Skewness 11.122 0.025 asymptotic ✗ Not normal
## 2 Mardia Kurtosis 0.590 0.555 asymptotic ✓ Normal
##
## $univariate_normality
## Test Variable Statistic p.value Normality
## 1 Anderson-Darling X1 0.312 0.505 ✓ Normal
## 2 Anderson-Darling X2 1.382 <0.001 ✗ Not normal
##
## $descriptives
## Variable n Mean Std.Dev Median Min Max 25th 75th Skew
## 1 X1 12 9.275 2.041 9.8 4.9 11.6 8.3 10.825 -0.77
## 2 X2 12 15127.750 20400.481 5282.0 291.0 61400.0 1471.0 18273.000 1.30
## Kurtosis
## 1 2.758
## 2 3.227
##
## $data
## X1 X2
## 1 8.8 2589
## 2 8.5 1186
## 3 7.7 291
## 4 4.9 1276
## 5 9.6 6633
## 6 10.0 12125
## 7 11.5 36717
## 8 11.6 43319
## 9 11.2 10530
## 10 10.7 3931
## 11 10.0 1536
## 12 6.8 61400
##
## $subset
## NULL
##
## $outlierMethod
## [1] "none"
##
## attr(,"class")
## [1] "mvn"
Berdasarkan hasil uji normalitas multivariat dengan metode Mardia diperoleh nilai p-value untuk skewness sebesar 0,025 < α = 0,05 sehingga H0 ditolak, sedangkan untuk kurtosis diperoleh p-value sebesar 0,555 > α = 0,05 sehingga H0 diterima. Hasil ini menunjukkan bahwa terdapat penyimpangan pada aspek skewness meskipun kurtosis masih memenuhi asumsi normalitas. Uji normalitas univariat juga memperlihatkan bahwa variabel X1 berdistribusi normal (p-value = 0,505 > 0,05), sedangkan variabel X2 tidak berdistribusi normal (p-value < 0,001 < 0,05). Bisa disimpulkan bahwa secara keseluruhan data tidak berdistribusi normal bivariate.
henze <- mvn(data_industri, mvn_test = c("hz"))
plot(henze, diagnostic = "multivariate", type = "qq")
henze
## $multivariate_normality
## Test Statistic p.value Method MVN
## 1 Henze-Zirkler 1 0.004 asymptotic ✗ Not normal
##
## $univariate_normality
## Test Variable Statistic p.value Normality
## 1 Anderson-Darling X1 0.312 0.505 ✓ Normal
## 2 Anderson-Darling X2 1.382 <0.001 ✗ Not normal
##
## $descriptives
## Variable n Mean Std.Dev Median Min Max 25th 75th Skew
## 1 X1 12 9.275 2.041 9.8 4.9 11.6 8.3 10.825 -0.77
## 2 X2 12 15127.750 20400.481 5282.0 291.0 61400.0 1471.0 18273.000 1.30
## Kurtosis
## 1 2.758
## 2 3.227
##
## $data
## X1 X2
## 1 8.8 2589
## 2 8.5 1186
## 3 7.7 291
## 4 4.9 1276
## 5 9.6 6633
## 6 10.0 12125
## 7 11.5 36717
## 8 11.6 43319
## 9 11.2 10530
## 10 10.7 3931
## 11 10.0 1536
## 12 6.8 61400
##
## $subset
## NULL
##
## $outlierMethod
## [1] "none"
##
## attr(,"class")
## [1] "mvn"
hasil uji Henze–Zirkler diperoleh nilai p-value sebesar 0,004 < α = 0,05 sehingga H0 ditolak. Hal ini menunjukkan bahwa data tidak mengikuti distribusi bivariate normal. Uji normalitas univariat mendukung hasil tersebut, di mana variabel X1 terdistribusi normal (p-value = 0,505 > 0,05), sedangkan variabel X2 tidak terdistribusi normal (p-value < 0,001 < 0,05).
royston <- mvn(data_industri, mvn_test = ("royston"))
plot(royston, diagnostic = "multivariate", type = "persp")
royston
## $multivariate_normality
## Test Statistic p.value Method MVN
## 1 Royston 10.101 0.006 asymptotic ✗ Not normal
##
## $univariate_normality
## Test Variable Statistic p.value Normality
## 1 Anderson-Darling X1 0.312 0.505 ✓ Normal
## 2 Anderson-Darling X2 1.382 <0.001 ✗ Not normal
##
## $descriptives
## Variable n Mean Std.Dev Median Min Max 25th 75th Skew
## 1 X1 12 9.275 2.041 9.8 4.9 11.6 8.3 10.825 -0.77
## 2 X2 12 15127.750 20400.481 5282.0 291.0 61400.0 1471.0 18273.000 1.30
## Kurtosis
## 1 2.758
## 2 3.227
##
## $data
## X1 X2
## 1 8.8 2589
## 2 8.5 1186
## 3 7.7 291
## 4 4.9 1276
## 5 9.6 6633
## 6 10.0 12125
## 7 11.5 36717
## 8 11.6 43319
## 9 11.2 10530
## 10 10.7 3931
## 11 10.0 1536
## 12 6.8 61400
##
## $subset
## NULL
##
## $outlierMethod
## [1] "none"
##
## attr(,"class")
## [1] "mvn"
hasil uji normalitas multivariat dengan metode Royston diperoleh nilai p-value sebesar 0,006 < α = 0,05 sehingga H0 ditolak. Hal ini menunjukkan bahwa data tidak mengikuti distribusi bivariate normal. Hasil uji univariat mendukung temuan tersebut, di mana variabel X1 terdistribusi normal (p-value = 0,505 > 0,05), sementara variabel X2 tidak terdistribusi normal (p-value < 0,001 < 0,05).
plot(royston, diagnostic = "multivariate", type = "contour")
Berdasarkan beberapa uji normalitas ganda di atas, yaitu dengan Dense Plot, Mardia`s Skewness, Henze-Zikler Test, dan Royston, dapat disimpulkan bahwa data tidak menyebar bivariate normal. Sehingga perlu dilakukan penanganan lanjutan terhadap data tersebut.