# Soal 1 - Winsorized Mean
# Data
x <- c(12, 45, 52, 58, 61, 63, 67, 70, 72, 75, 78, 82, 88, 95, 310)
# --- [a] Membuat Fungsi Winsorized_Mean(x, alpha) ---
winsorized_mean <- function(x, alpha){
x <- sort(x)
n <- length(x)
k <- floor(n * alpha)
y <- x
for(i in 1:n){
if(i <= k){
y[i] <- x[k+1]
} else if(i > k & i <= n - k){
y[i] <- x[i]
}else{
y[i] <- x[n - k]
}
}
x_barw <- mean(y)
return(x_barw)
}
print(winsorized_mean(x, 0.2))
## [1] 69.73333
hasil <- winsorized_mean(x, 0.2)
print(hasil)
## [1] 69.73333
# --- [b] Menghitung Ordinary Mean (alpha = 0) dan Winsorized Mean 20% (alpha = 0.2) ---
# Ordinary mean
ordinary_mean <- mean(x)
print(ordinary_mean)
## [1] 81.86667
# Winsorized mean 20%
x_w <- winsorized_mean(x, 0.2)
print(winsorized_mean(x, 0.2))
## [1] 69.73333
# --- Visualisasi Boxplot ---
boxplot(x, x_w,
names = c("Data Asli", "Winsorized 20%"),
main = "Perbandingan Data Sebelum dan Sesudah Winsorizing",
ylab = "Nilai")

# --- Visualisasi Histogram ---
par(mfrow=c(1,2))
hist(x,
main="Histogram Data Asli",
xlab="Nilai")
hist(x_w,
main="Histogram Winsorized 20%",
xlab="Nilai")

# --- Analisis ---
cat("\nAnalisis:\n")
##
## Analisis:
cat("Data asli menunjukkan adanya nilai ekstrem yaitu 310 yang berpotensi sebagai outlier. Pada boxplot terlihat bahwa nilai tersebut berada jauh di atas mayoritas data.\n")
## Data asli menunjukkan adanya nilai ekstrem yaitu 310 yang berpotensi sebagai outlier. Pada boxplot terlihat bahwa nilai tersebut berada jauh di atas mayoritas data.
cat("Setelah dilakukan winsorizing dengan α = 0.2, nilai ekstrem digantikan dengan nilai batas terdekat. Hal ini membuat distribusi data menjadi lebih stabil.\n")
## Setelah dilakukan winsorizing dengan α = 0.2, nilai ekstrem digantikan dengan nilai batas terdekat. Hal ini membuat distribusi data menjadi lebih stabil.
# --- Interpretasi Singkat ---
cat("\nInterpretasi:\n")
##
## Interpretasi:
cat("Winsorized mean lebih robust terhadap outlier dibandingkan mean biasa karena mampu mengurangi pengaruh outlier nilai ekstrem (310) tanpa menghapus data. Oleh karena itu, distribusi data nilai rata-rata yang diperoleh menjadi lebih representatif terhadap sebagian besar data.\n")
## Winsorized mean lebih robust terhadap outlier dibandingkan mean biasa karena mampu mengurangi pengaruh outlier nilai ekstrem (310) tanpa menghapus data. Oleh karena itu, distribusi data nilai rata-rata yang diperoleh menjadi lebih representatif terhadap sebagian besar data.
# Soal 2 - Weighted Multivariate Descriptive Statistics
# --- Baca data CSV ---
df <- read.csv("C:/Users/hp/OneDrive/Documents/RStudio Tugas/data_quiz1.csv")
X <- as.matrix(df[, c("x1", "x2", "x3")])
w <- df$w
# --- [a] Membuat fungsi weighted_corr(X, w) ---
weighted_corr <- function(X, w) {
n <- nrow(X)
p <- ncol(X)
W <- diag(w)
nw <- 0
for(i in 1:n){
nw <- nw + w[i]
}
one <- matrix(1, n, 1)
x_bar_w <- (1/nw) * t(X) %*% W %*% one
D <- X - one %*% 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,
mean = x_bar_w,
cov = S_w,
sd = s_w,
corr = R_w
))
}
hasil <- weighted_corr(X, w)
# --- [b] Mengaplikasikan fungsi pada data ---
# Panggil fungsi
hasil <- weighted_corr(X,w)
# Menampilkan vektor mean tertimbang
hasil$mean
## [,1]
## x1 73.88530
## x2 65.39059
## x3 17.00938
# Menampilkan matriks varians-kovarians tertimbang
hasil$cov
## x1 x2 x3
## x1 38.16362 -37.75105 -27.15386
## x2 -37.75105 41.10767 29.16587
## x3 -27.15386 29.16587 21.14757
# Menampilkan vektor standar deviasi tertimbang
hasil$sd
## x1 x2 x3
## 6.177671 6.411527 4.598649
# Menampilkan matriks korelasi tertimbang
hasil$corr
## [,1] [,2] [,3]
## [1,] 1.0000000 -0.9531095 -0.9558207
## [2,] -0.9531095 1.0000000 0.9891979
## [3,] -0.9558207 0.9891979 1.0000000
# --- Visualisasi Scatter Plot Matrix ---
pairs(X,
main = "Scatter Plot Matrix Variabel Lingkungan")

# --- Visualisasi Heatmap Korelasi Tertimbang ---
heatmap(hasil$corr,
main = "Heatmap Korelasi Tertimbang",
symm = TRUE)

# --- Visualisasi Barplot Standar Deviasi ---
barplot(hasil$sd,
names.arg = c("Udara", "Air", "RTH"),
main = "Standar Deviasi Tertimbang",
ylab = "Nilai")
# --- Analisis ---
cat("Analisis:\n")
## Analisis:
cat("Scatter plot matrix menunjukkan pola hubungan antar variabel kualitas lingkungan.\n")
## Scatter plot matrix menunjukkan pola hubungan antar variabel kualitas lingkungan.
cat("Jika titik-titik membentuk pola tertentu, maka terdapat hubungan antar variabel. Heatmap korelasi tertimbang memperlihatkan kekuatan hubungan antar variabel, dimana nilai mendekati 1 menunjukkan hubungan positif kuat, sedangkan nilai mendekati 0 menunjukkan hubungan lemah.\n")
## Jika titik-titik membentuk pola tertentu, maka terdapat hubungan antar variabel. Heatmap korelasi tertimbang memperlihatkan kekuatan hubungan antar variabel, dimana nilai mendekati 1 menunjukkan hubungan positif kuat, sedangkan nilai mendekati 0 menunjukkan hubungan lemah.
cat("Barplot standar deviasi menunjukkan tingkat variasi masing-masing tiap variabel antar kabupaten dan kota.\n")
## Barplot standar deviasi menunjukkan tingkat variasi masing-masing tiap variabel antar kabupaten dan kota.
# --- Interpretasi Singkat ---
cat("\nInterpretasi:\n")
##
## Interpretasi:
cat("Korelasi tertimbang menunjukkan gambaran hubungan antar variabel dengan mempertimbangkan bobot wilayah, sehingga hasilnya lebih representatif secara geografis.\n")
## Korelasi tertimbang menunjukkan gambaran hubungan antar variabel dengan mempertimbangkan bobot wilayah, sehingga hasilnya lebih representatif secara geografis.
cat("Jika terdapat variabel yang memiliki korelasi tinggi, maka variabel saling berkaitan dalam menggambarkan kualitas lingkungan.\n")
## Jika terdapat variabel yang memiliki korelasi tinggi, maka variabel saling berkaitan dalam menggambarkan kualitas lingkungan.
cat("Standar deviasi tertimbang menunjukkan variabilitas antar daerah, sehingga dapat digunakan untuk mengidentifikasi indikator yang paling bervariasi dan membutuhkan perhatian lebih dalam evaluasi lingkungan.\n")
## Standar deviasi tertimbang menunjukkan variabilitas antar daerah, sehingga dapat digunakan untuk mengidentifikasi indikator yang paling bervariasi dan membutuhkan perhatian lebih dalam evaluasi lingkungan.
