Nomor 1

# Input Parameter
mu <- c(0, 2)
Sigma <- matrix(c(2, sqrt(2)/2, sqrt(2)/2, 1), 2, 2)

# Generate Random Bivariate Normal
library(MASS)
bvn1 <- mvrnorm(500, mu = mu, Sigma = Sigma )
head(bvn1, 10)
##              [,1]     [,2]
##  [1,] -1.03950381 1.441832
##  [2,] -0.90705563 1.164982
##  [3,]  3.18226021 2.802930
##  [4,] -1.02797812 2.592629
##  [5,]  2.79600094 2.706602
##  [6,] -1.49752027 3.085969
##  [7,]  0.84078650 1.924910
##  [8,]  0.58283599 1.694129
##  [9,]  0.35528058 2.648239
## [10,] -0.06721738 1.873636
# (b) Ekspresi jarak kuadrat
jarak_kuadrat <- mahalanobis(bvn1, center = colMeans(bvn1), cov = cov(bvn1))
head(jarak_kuadrat,10)
##  [1] 0.64758708 0.82321127 5.44476365 1.72017514 4.19820047 4.52424753
##  [7] 0.55143728 0.52786857 0.40138462 0.02161567
# (c) Kontur ellips dengan probabilitas 50%
library(mixtools)
plot(bvn1, xlab="X1",ylab="X2", main = "Kontur Ellipsoid Normal Bivariat 
     dengan Probabilitas 50%")
ellipse(mu, Sigma, 0.5, col="red", lwd=2)

Nomor 2

# import data
library(readxl)
PDRB_ADHB_2023 <- read_excel("C:/Users/anggi/Documents/KULIAH/SEMESTER 5/APG/PRAKTIKUM 3/PDRB_ADHB_2023.xlsx")

x1 <- PDRB_ADHB_2023$P
x2 <- PDRB_ADHB_2023$Q
x3 <- PDRB_ADHB_2023$R
pdrb <- cbind(x1,x2,x3)

# Cek Normalitas Data Multivariat
library(MVN)
#uji Royston
UjiRoy <- mvn(pdrb, mvnTest = "royston", multivariatePlot = "qq")
UjiRoy
## $multivariateNormality
##      Test        H      p value MVN
## 1 Royston 57.03905 1.042193e-13  NO
## 
## $univariateNormality
##               Test  Variable Statistic   p value Normality
## 1 Anderson-Darling    x1        6.3353  <0.001      NO    
## 2 Anderson-Darling    x2        5.8808  <0.001      NO    
## 3 Anderson-Darling    x3        8.7529  <0.001      NO    
## 
## $Descriptives
##     n      Mean  Std.Dev Median Min    Max    25th     75th     Skew  Kurtosis
## x1 38 17388.079 29799.90 7988.0 656 150213 3025.25 13921.75 2.917140  8.746808
## x2 38  7121.500 12713.33 3453.5 396  76588 1439.50  6957.00 4.327410 20.553914
## x3 38  9915.474 26027.01 2528.0 133 149694  956.75  5206.50 4.274544 19.275075
#Uji Mardia
UjiMar <- mvn(pdrb, mvnTest = "mardia", multivariatePlot = "qq")

UjiMar
## $multivariateNormality
##              Test        Statistic              p value Result
## 1 Mardia Skewness 263.897528346024 6.45735543090546e-51     NO
## 2 Mardia Kurtosis 22.4785207610662                    0     NO
## 3             MVN             <NA>                 <NA>     NO
## 
## $univariateNormality
##               Test  Variable Statistic   p value Normality
## 1 Anderson-Darling    x1        6.3353  <0.001      NO    
## 2 Anderson-Darling    x2        5.8808  <0.001      NO    
## 3 Anderson-Darling    x3        8.7529  <0.001      NO    
## 
## $Descriptives
##     n      Mean  Std.Dev Median Min    Max    25th     75th     Skew  Kurtosis
## x1 38 17388.079 29799.90 7988.0 656 150213 3025.25 13921.75 2.917140  8.746808
## x2 38  7121.500 12713.33 3453.5 396  76588 1439.50  6957.00 4.327410 20.553914
## x3 38  9915.474 26027.01 2528.0 133 149694  956.75  5206.50 4.274544 19.275075
# Optional: Transformasi jika data tidak normal
library(car)
pow <- powerTransform (pdrb)
summary(pow)
## bcPower Transformations to Multinormality 
##    Est Power Rounded Pwr Wald Lwr Bnd Wald Upr Bnd
## x1    0.0778           0      -0.0660       0.2217
## x2    0.0391           0      -0.1160       0.1942
## x3   -0.0080           0      -0.1187       0.1027
## 
## Likelihood ratio test that transformation parameters are equal to 0
##  (all log transformations)
##                                LRT df    pval
## LR test, lambda = (0 0 0) 2.800423  3 0.42343
## 
## Likelihood ratio test that no transformations are needed
##                                LRT df       pval
## LR test, lambda = (1 1 1) 299.6812  3 < 2.22e-16
pdrb_t <- log(pdrb)
#Uji Royston
UjiRoy_t <- mvn(pdrb_t, mvnTest = "royston", multivariatePlot = "qq")

UjiRoy_t
## $multivariateNormality
##      Test         H   p value MVN
## 1 Royston 0.5131584 0.6204803 YES
## 
## $univariateNormality
##               Test  Variable Statistic   p value Normality
## 1 Anderson-Darling    x1        0.3056    0.5505    YES   
## 2 Anderson-Darling    x2        0.1604    0.9435    YES   
## 3 Anderson-Darling    x3        0.3562    0.4397    YES   
## 
## $Descriptives
##     n     Mean  Std.Dev   Median      Min      Max     25th     75th      Skew
## x1 38 8.877243 1.332537 8.985427 6.486161 11.91981 8.014525 9.541152 0.1879969
## x2 38 8.156595 1.162994 8.146830 5.981414 11.24620 7.271660 8.847470 0.2354952
## x3 38 7.842287 1.532502 7.829989 4.890349 11.91635 6.863488 8.557288 0.4682832
##      Kurtosis
## x1 -0.4082591
## x2 -0.2332129
## x3  0.1489837

Nomor 3

# Data perusahaan terbesar
data <- matrix(c(108.28, 17.05, 1484.10,
                 152.36, 16.59, 750.33,
                 95.04, 10.91, 766.42,
                 65.45, 14.14, 1110.46,
                 62.97, 9.52, 1031.29,
                 263.99, 25.33, 195.26,
                 265.19, 18.54, 193.83,
                 285.06, 15.73, 191.11,
                 92.01, 8.10, 1175.16,
                 165.68, 11.13, 211.15), ncol = 3, byrow = TRUE)

colnames(data) <- c("sales", "profits", "assets")

# (a) Pemeriksaan normalitas multivariat
# Uji Roytoson
library(MVN)
result <- mvn(data, mvnTest = "royston", multivariatePlot = "qq")

result
## $multivariateNormality
##      Test        H   p value MVN
## 1 Royston 3.197212 0.1437248 YES
## 
## $univariateNormality
##               Test  Variable Statistic   p value Normality
## 1 Anderson-Darling   sales      0.5944    0.0887    YES   
## 2 Anderson-Darling  profits     0.2713    0.5890    YES   
## 3 Anderson-Darling  assets      0.5669    0.1053    YES   
## 
## $Descriptives
##          n    Mean    Std.Dev  Median    Min     Max     25th      75th
## sales   10 155.603  86.466486 130.320  62.97  285.06  92.7675  239.4125
## profits 10  14.704   5.117647  14.935   8.10   25.33  10.9650   16.9350
## assets  10 710.911 486.882193 758.375 191.11 1484.10 199.2325 1090.6675
##              Skew   Kurtosis
## sales   0.4094674 -1.6803972
## profits 0.5589459 -0.6667657
## assets  0.1027204 -1.7232822
# Uji Shapiro
library(RVAideMemoire)
mshapiro.test(data)
## 
##  Multivariate Shapiro-Wilk normality test
## 
## data:  (sales,profits,assets)
## W = 0.92772, p-value = 0.4258
# (b) Menghitung jarak Mahalanobis untuk perusahaan baru
new_company <- c(230, 24, 230.5)
mean_vector <- colMeans(data)
cov_matrix <- cov(data)

# Jarak Mahalanobis
mahalanobis_distance <- mahalanobis(new_company, center = mean_vector, cov = cov_matrix)

# Periksa apakah berada di dalam atau di luar kontur 95%
if(mahalanobis_distance <= qchisq(0.95, df = 3)) {
  print("Perusahaan berada di dalam kontur 95%.")
} else {
  print("Perusahaan berada di luar kontur 95%.")
}
## [1] "Perusahaan berada di dalam kontur 95%."