==============================================================================
# Data
x <- c(12, 45, 52, 58, 61, 63, 67, 70, 72, 75, 78, 82, 88, 95, 310)
# --- [a] Buatlah fungsi winsorized_mean(x, alpha) ---
winsorized_mean <- function(x, alpha) {
n <- length(x)
k <- floor(n * alpha)
x_sort <- sort(x)
if (k > 0) {
lower_bound <- x_sort[k + 1]
upper_bound <- x_sort[n - k]
x_sort[1:k] <- lower_bound
x_sort[(n - k + 1):n] <- upper_bound
}
return(mean(x_sort))
}
# --- [b] Hitung mean ---
ord_mean <- winsorized_mean(x, 0)
print(paste("ordinary mean (a=0):", ord_mean))
## [1] "ordinary mean (a=0): 81.8666666666667"
winsorized_20 <- winsorized_mean(x, 0.2)
print(paste("winsorized mean 20% (a=0.2):", winsorized_20))
## [1] "winsorized mean 20% (a=0.2): 69.7333333333333"
# VISUALISASI DATA
x_asli <- c(12, 45, 52, 58, 61, 63, 67, 70, 72, 75, 78, 82, 88, 95, 310)
x_winsor <- c(58, 58, 58, 58, 61, 63, 67, 70, 72, 75, 78, 82, 88, 95, 95)
df_x <- data.frame(
nilai = c(x_asli, x_winsor),
metode = rep(c("Ordinary (81.87"), "Winsorized (69.73)", 15)
)
# BOXPLOT
boxplot(nilai ~ metode,
data = df_x,
main = "Deteksi Outlier Produksi Mesin",
xlab = "Metode perhitungan",
ylab = "Output Data",
col = "lightblue",
horizontal = FALSE)

#Analisis dan interpretasi boxplot : Boxplot ini menunjukkan bahwa terdapat outlier pada data asli yaitu 310 yang membuat rata-rata menjadi 81.87. Setelah dilakukan winsorizing, outlier tersebut hilang dan menghasilkan rata-rata 69.73 yang lebih stabil.
# ==============================================================================
# Soal 2 [TOTAL 60 poin] - Weighted Multivariate Descriptive Statistics
# ==============================================================================
# --- Persiapan Data ---
# Pastikan path file benar sesuai komputer kamu
df <- read.csv("C:/Users/Acer/Downloads/data_quiz1.csv")
X <- as.matrix(df[, c("x1", "x2", "x3")])
w <- df$w
# --- [a] Buatlah fungsi weighted_corr(X, w) ---
weighted_corr <- function(X, w) {
a <- nrow(X)
b <- ncol(X)
n_w <- sum(w)
# 1. Hitung Mean Tertimbang
x_bar_w <- numeric(b)
for(j in 1:b){
x_bar_w[j] <- sum(w * X[, j]) / n_w
}
# 2. Hitung Matriks Varians-Kovarians Tertimbang (S_w)
S_w <- matrix(0, nrow = b, ncol = b)
for(j in 1:b){
for(k in 1:b){
jumlah_terbobot = 0
for(i in 1:a){
jumlah_terbobot = jumlah_terbobot + w[i] * (X[i, j] - x_bar_w[j]) * (X[i, k] - x_bar_w[k])
}
S_w[j, k] <- jumlah_terbobot / n_w
}
}
# 3. Hitung Matriks Korelasi (R_w)
s_w <- sqrt(diag(S_w))
R_w <- matrix(0, nrow = b, ncol = b)
for(j in 1:b){
for(k in 1:b){
R_w[j, k] <- S_w[j, k] / (s_w[j] * s_w[k])
}
}
return(list(
x_bar_w = x_bar_w,
S_w = S_w,
s_w = s_w,
R_w = R_w
))
}
# --- [b] Aplikasikan fungsi pada data ---
hasil <- weighted_corr(X, w)
# Tampilkan Hasil
print("Vektor mean tertimbang:")
## [1] "Vektor mean tertimbang:"
print(hasil$x_bar_w)
## [1] 73.88530 65.39059 17.00938
print("Matriks Kovarian Tertimbang:")
## [1] "Matriks Kovarian Tertimbang:"
print(hasil$S_w)
## [,1] [,2] [,3]
## [1,] 38.16362 -37.75105 -27.15386
## [2,] -37.75105 41.10767 29.16587
## [3,] -27.15386 29.16587 21.14757
print("Vektor Standar Deviasi Tertimbang (s_w):")
## [1] "Vektor Standar Deviasi Tertimbang (s_w):"
print(hasil$s_w)
## [1] 6.177671 6.411527 4.598649
print("Matriks korelasi tertimbang:")
## [1] "Matriks korelasi tertimbang:"
print(hasil$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
#install.packages("corrplot")
library(corrplot)
## corrplot 0.95 loaded
# Visualisasi Data menggunakan corrplot
cor_matrix <- hasil$R_w
corrplot(cor_matrix,
method = "color",
type = "upper",
addCoef.col = "black",
tl.col = "black",
main = "Matriks Korelasi Tertimbang Lingkungan Jatim")

#Analisis dan interpretasi : Berdasarkan Matriks Korelasi Tertimbang, terdapat korelasi positif yang sangat kuat (0.99) antara Indeks Kualitas Air dan Rasio RTH di Jawa Timur. Hal ini menunjukkan bahwa ketersediaan lahan hijau memiliki peran krusial terhadap terjaganya kualitas air di wilayah tersebut setelah memperhitungkan bobot luas geografis masing-masing daerah.