DATA VISUALIZATION
# ==========================================================================
# Nama : Rasta Zelvino Zulkarnain
# NRP : 5003251081
# Kelas : Komputasi Statistika D
# ==========================================================================
# ==========================================================================
# Soal 1- Winsorized Mean
# ==========================================================================
# Data
x <- c(12, 45, 52, 58, 61, 63, 67, 70, 72, 75, 78, 82, 88, 95, 310)
winsorized_mean <- function(x, alpha) {
n <- length (x)
x <- sort(x)
k <- floor(n*alpha)
y <- NULL
for(i in 1:n){
if(i<=k){
y[i] <- x[k+1]
}
else if(k<i && i<=(n-k)){
y[i] <- x[i]
}
else if(i>(n-k)){
y[i] <- x[n-k]
}
}
total <- 0
for(i in 1:n){
total <- total+y[i]
}
rata <- total/n
return(rata)
}
# Ordinary mean
winsorized_mean(x,0)
## [1] 81.86667
# Winsorized mean 20%
winsorized_mean(x,0.2)
## [1] 69.73333
boxplot(x,
main = "Boxplot Output Produksi Mesin",
ylab = "Output Produksi",
col = "lightblue",
border = "black",
outcol ="red",
outpch =16)
Analisis dan Interpretasi:
Diketahui terdapat 15 mesin roduksi yang menghasilkan produk setiap hari. Berdasarkan visualisasi box plot di atas, terlihat bahwa sebagian besar data output produksi berada pada rentang 60 hingga 90. Selain itu, terdapat satu nilai yaitu 310 yang berada jauh dari data lainnya dan muncul sebagai outlier. Nilai ekstrem ini menyebabkan distribusi data menjadi tidak seimbang dan dapat mempengaruhi rata-rata, oleh karena itu penggunaan winzorised mean tepat karena Winsorized mean mengganti nilai-nilai ekstrem dengan nilai non-ekstrem terdekat sehingga menghasilkan estimasi rata-rata yang lebih stabil
# ==========================================================================
# Soal 2 - Weighted Multivariate Descriptive Statistics
# ==========================================================================
# --- Baca data CSV ---
df <- read.csv("data_quiz1.csv")
X <- as.matrix(df[, c("x1", "x2", "x3")])
w <- df$w
weighted_corr <- function(X, w){
W <- diag(w)
nw <- 0
for(i in 1:length(w)){
nw <- nw + w[i]
}
vec1 <- matrix(1, nrow=nrow(X), ncol=1)
x_bar_w <- (1/nw)*t(X) %*% W %*% vec1
D <- X-(vec1 %*% t(x_bar_w))
S_w <- (1/nw)*t(D) %*% W %*% D
s_w <- sqrt(diag(S_w))
V <- diag(s_w)
R_w <- solve(V) %*% S_w %*% solve(V)
return(list(
W = W,
x_bar_w = x_bar_w,
S_w = S_w,
s_w = s_w,
R_w = R_w
))
}
# Panggil fungsi
result <- weighted_corr(X, w)
# Tampilkan matriks korelasi tertimbang
result$x_bar_w
## [,1]
## x1 73.88530
## x2 65.39059
## x3 17.00938
# Tampilkan matriks varians-kovarians tertimbang
result$S_w
## x1 x2 x3
## x1 38.16362 -37.75105 -27.15386
## x2 -37.75105 41.10767 29.16587
## x3 -27.15386 29.16587 21.14757
# Tampilkan vektor standar deviasi tertimbang
result$s_w
## x1 x2 x3
## 6.177671 6.411527 4.598649
# Tampilkan matriks korelasi tertimbang
result$R_w
## [,1] [,2] [,3]
## [1,] 1.0000000 -0.9531095 -0.9558207
## [2,] -0.9531095 1.0000000 0.9891979
## [3,] -0.9558207 0.9891979 1.0000000
library(corrplot)
## corrplot 0.95 loaded
cor_matrix <- cor(df[, c("x1", "x2", "x3")])
corrplot(cor_matrix,
method = "color",
type = "upper",
addCoef.col = "black",
tl.col="black",
col= colorRampPalette(c("#88d1fe", "white", "#fe889b"))(200))
Analisis dan Interpretasi:
Heatmap Korelasi menunjukkan hubungan antara variabel indeks kualitas udara (x1), indeks kualitas air (x2), dan rasio ruang terbuka hijau (x3) melalui gradasi warna dan nilai fill. dari gambar heatmap di atas di ketahui bahwa:
x1 dan x2 berkorelasi negatif yang sangat kuat (-0.97). Artinya ketika kualitas udara meningkat (x1), maka kualitas air cenderung menurun(x2)
x1 dan x3 berkolerasi negatif yang sangat kuat (-0.98). Artinya ketika rasio ruang terbuka hijau meningkat (x3), maka kualitas udara cenderung menurun(x1)
x2 dan x3 berkolerasi positif sangat kuat(0.99). Artinya ketika kualitas air(x2) meningkat, maka rasio ruang terbuka hijau(x3) juga cenderung meningkat.