==============================================================================

TEMPLATE JAWABAN KUIS

Komputasi Statistika, Kelas D

Prodi S1 Statistika FSAD ITS - Semester Genap 2025/2026

Kamis, 12 Maret 2026

==============================================================================

Nama : Bagas Adyatma Sani

NRP : 5003251124

Kelas : D

==============================================================================

==============================================================================

Soal 1 [TOTAL 50 poin] - Winsorized Mean

==============================================================================

# 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) {
  # TULIS KODE ANDA DI SINI
  x <- sort (x)
  n <- length(x)
  k <- floor(n*alpha)
  y <- x
  
  if(k>0){
    for( i in 1:k){
      y[i] <- x[k+1]
    }
    for(i in (n-k+1):n){
      y[i] <- x[n-k]
    }
    
  }
  summanual=0
  for (i in 1:n){
    summanual=summanual+y[i]
  }
  ratarata = summanual/n
  
  return(ratarata)
}

#interpetasi data ##menggunakan boxplot

library(ggplot2)

data <- data.frame(nilai = x)

library(ggplot2)

data

x <- c(50, 55, 60, 65, 70, 75, 80, 85, 90, 310)
data <- data.frame(nilai = x)

hitung statistik penting

mean_x <- mean(x)
median_x <- median(x)

##Visualisasi menggunakan boxplot

ggplot(data, aes(x = "", y = nilai)) +
  geom_boxplot(fill = "#69b3a2", width = 0.3, outlier.colour = "red", outlier.size = 3) +
  
  # titik mean
  stat_summary(fun = mean, geom = "point", shape = 18, size = 4, color = "blue") +
  
  # label outlier
  geom_text(data = subset(data, nilai > 200),
            aes(label = nilai),
            hjust = -0.3, color = "red") +
  
  labs(
    title = "Boxplot Nilai dengan Identifikasi Outlier",
    subtitle = "Outlier terdeteksi berdasarkan metode IQR",
    x = "",
    y = "Nilai"
  ) +
  
  theme_minimal() +
  
  theme(
    plot.title = element_text(face = "bold", size = 14),
    plot.subtitle = element_text(size = 11),
    axis.text.x = element_blank()
  )

— [b] Hitung ordinary mean (alpha=0) dan Winsorized mean 20% (alpha=0.2) —

Ordinary mean

TULIS KODE ANDA DI SINI

ordinary_mean <- winsorized_mean(x, 0)

Winsorized mean 20%

TULIS KODE ANDA DI SINI

winsorized_mean0.2<-winsorized_mean(x, 0.2)

mean_biasa <- mean(x)
mean_wins <- winsorized_mean(x, 0.1)

##Visualisasi menggunakan Histogram
ggplot(data, aes(x = nilai)) +
  geom_histogram(bins = 8, fill = "lightgray", color = "black") +
  
  geom_vline(aes(xintercept = mean_biasa, color = "Mean Biasa"),
             linetype = "dashed", size = 1) +
  
  geom_vline(aes(xintercept = mean_wins, color = "Winsorized Mean"),
             linetype = "dashed", size = 1) +
  
  scale_color_manual(
    name = "Keterangan",
    values = c("Mean Biasa" = "red",
               "Winsorized Mean" = "blue")
  ) +
  
  labs(
    title = "Perbandingan Mean dan Winsorized Mean",
    subtitle = "Mean terpengaruh outlier, winsorized lebih robust",
    x = "Nilai",
    y = "Frekuensi"
  ) +
  
  theme_minimal()
## Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
## ℹ Please use `linewidth` instead.
## This warning is displayed once per session.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.

# ============================================================================== # Soal 2 [TOTAL 60 poin] - Weighted Multivariate Descriptive Statistics # ==============================================================================

— Baca data CSV —

df <- read.csv("D:/KOMSTAT/Quiz/data_quiz1.csv")
X <- as.matrix(df[, c("x1","x2","x3")])
w <- df$w


# --- [a] Buatlah fungsi weighted_corr(X, w) ---

nw <- function(x){
  hasil<-0
  n <- length(x)
for(i in 1:n){
  hasil<-hasil+x[i]
} 
  return(hasil)
}

weighted_corr <- function(X, w) {
  # TULIS KODE ANDA DI SINI
  n <- nrow(X)
  p <- ncol(X)
  W <- diag(w)
  lw<- length(w)
  n_w <- nw(w)
  satu <- matrix (1,n,1)
  x_bar_w <- (t(X)%*% W %*% satu) /n_w
  D <- X-satu%*%t(x_bar_w)
  S_w <- (t(D) %*% W %*% D)/ n_w
  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
  ))
}

— [b] Aplikasikan fungsi pada data —

Panggil fungsi

TULIS KODE ANDA DI SINI

hasil<-weighted_corr(X, w)

Tampilkan vektor mean tertimbang

TULIS KODE ANDA DI SINI

hasil$x_bar_w
##        [,1]
## x1 73.88530
## x2 65.39059
## x3 17.00938

Tampilkan matriks varians-kovarians tertimbang

TULIS KODE ANDA DI SINI

hasil$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

TULIS KODE ANDA DI SINI

hasil$s_w
##       x1       x2       x3 
## 6.177671 6.411527 4.598649

Tampilkan matriks korelasi tertimbang

TULIS KODE ANDA DI SINI

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

Ambil matriks korelasi tertimbang

R <- hasil$R_w

Ambil masing-masing korelasi

r_x1x2 <- R[1,2]
r_x1x3 <- R[1,3]
r_x2x3 <- R[2,3]

#Visualisasi menggunakan bubble plot # Hubungan Kualitas Udara vs Kualitas Air dengan Bobot Wilayah

v1 <- ggplot(df, aes(x = x1, y = x2, size = w, color = w)) +
  geom_point(alpha = 0.7) +
  scale_color_gradient(low = "yellow", high = "red") +
  
  geom_smooth(method = "lm", se = FALSE, color = "black") +
  
  labs(
    title = paste0("x1 vs x2 | r = ", round(r_x1x2, 3)),
    x = "Kualitas Udara",
    y = "Kualitas Air"
  ) +
  
theme_minimal()
v1
## `geom_smooth()` using formula = 'y ~ x'
## Warning: The following aesthetics were dropped during statistical transformation: size.
## ℹ This can happen when ggplot fails to infer the correct grouping structure in
##   the data.
## ℹ Did you forget to specify a `group` aesthetic or to convert a numerical
##   variable into a factor?

#ANALISIS V1 ## Berdasarkan visualisasi bubble plot, terlihat pola hubungan antara kualitas udara (x1) dan kualitas air (x2). Sebaran titik menunjukkan kecenderungan turun yang mengindikasikan adanya hubungan negatif antar kedua variabel.

##Nilai korelasi tertimbang sebesar r = -0.953 menunjukkan bahwa hubungan antara kualitas udara dan kualitas air termasuk kategori lemah r<0. ##Ukuran dan warna titik merepresentasikan bobot wilayah, sehingga observasi dengan bobot lebih besar memiliki pengaruh lebih signifikan terhadap pola hubungan yang terbentuk.

Hubungan Kualitas Udara vs Rasio Ruang Terbuka Hijau dengan Bobot Wilayah

v2 <- ggplot(df, aes(x = x1, y = x3, size = w, color = w)) +
  geom_point(alpha = 0.7) +
  scale_color_gradient(low = "yellow", high = "red") +
  
  geom_smooth(method = "lm", se = FALSE, color = "black") +
  
  labs(
    title = paste0("Hubungan Kualitas Udara vs Rasio Ruang Terbuka Hijau dengan Bobot Wilayah | r = ", round(r_x1x3, 3)),
    x = "Kualitas Udara",
    y = "Rasio RTH"
  ) +
  
  theme_minimal()
v2
## `geom_smooth()` using formula = 'y ~ x'
## Warning: The following aesthetics were dropped during statistical transformation: size.
## ℹ This can happen when ggplot fails to infer the correct grouping structure in
##   the data.
## ℹ Did you forget to specify a `group` aesthetic or to convert a numerical
##   variable into a factor?

#ANALISIS V2 ## Berdasarkan visualisasi bubble plot, hubungan antara kualitas udara (x1) dan rasio ruang terbuka hijau (x3) menunjukkan pola menurun yang jelas, di mana titik-titik data cenderung bergerak dari kiri atas ke kanan bawah, mengindikasikan hubungan negatif antar variabel. Hal ini diperkuat oleh nilai korelasi tertimbang sebesar r = -0,956, yang menunjukkan bahwa hubungan tersebut sangat kuat dan berlawanan arah. Artinya, peningkatan kualitas udara cenderung diikuti oleh penurunan rasio ruang terbuka hijau, atau sebaliknya. Garis regresi yang memiliki kemiringan negatif semakin menegaskan pola tersebut. Selain itu, ukuran dan warna titik yang merepresentasikan bobot menunjukkan bahwa observasi dengan bobot lebih besar turut memperkuat pola hubungan ini, sehingga hasil analisis menjadi lebih representatif dalam menggambarkan kondisi sebenarnya.

Hubungan Kualitas Air vs Rasio Ruang Terbuka Hijau dengan Bobot Wilayah

v3 <- ggplot(df, aes(x = x2, y = x3, size = w, color = w)) +
  geom_point(alpha = 0.7) +
  scale_color_gradient(low = "#FFD93D", high = "#FF8C42") +
  
  geom_smooth(method = "lm", se = FALSE, color = "black") +
  
  labs(
    title = paste0("x2 vs x3 | r = ", round(r_x2x3, 3)),
    x = "Kualitas Air",
    y = "Rasio RTH"
  ) +
  
  theme_minimal()
v3
## `geom_smooth()` using formula = 'y ~ x'
## Warning: The following aesthetics were dropped during statistical transformation: size.
## ℹ This can happen when ggplot fails to infer the correct grouping structure in
##   the data.
## ℹ Did you forget to specify a `group` aesthetic or to convert a numerical
##   variable into a factor?

#ANALISIS V3 ## Berdasarkan visualisasi bubble plot, hubungan antara kualitas air (x2) dan rasio ruang terbuka hijau (x3) menunjukkan pola meningkat yang sangat jelas, di mana titik-titik data cenderung membentuk garis dari kiri bawah ke kanan atas, menandakan hubungan positif antar variabel. Hal ini diperkuat oleh nilai korelasi tertimbang sebesar r = 0,989, yang menunjukkan bahwa hubungan tersebut sangat kuat dan searah. Artinya, peningkatan kualitas air di suatu wilayah cenderung diikuti oleh peningkatan rasio ruang terbuka hijau. Garis regresi yang memiliki kemiringan positif yang tajam semakin memperjelas kekuatan hubungan ini. Selain itu, ukuran dan warna titik yang merepresentasikan bobot menunjukkan bahwa observasi dengan bobot lebih besar mengikuti pola yang sama, sehingga memberikan kontribusi signifikan dalam memperkuat hasil korelasi tertimbang dan membuat analisis menjadi lebih representatif.