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

# 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

Dense Plot

ggplot(data_industri, aes(x = X1, y=X2)) +
  geom_point() +     
  geom_density2d() + 
  theme_minimal() +  
  labs(title = "Dense Plot", x = "X1", y = "X2")

Uji Normalitas Ganda Menggunakan Mardia`s Skewness

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.

Uji Normalitas Ganda Menggunakan Henze-Zikler Test

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).

Uji Normalitas Ganda Menggunakan Royston

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")

Kesimpulan

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.