This is an R Markdown Notebook. When you execute code within the notebook, the results appear beneath the code.

Try executing this chunk by clicking the Run button within the chunk or by placing your cursor inside it and pressing Ctrl+Shift+Enter.

# ==============================================================================
# TEMPLATE JAWABAN KUIS
# Komputasi Statistika, Kelas D
# Prodi S1 Statistika FSAD ITS - Semester Genap 2025/2026
# Kamis, 12 Maret 2026
# ==============================================================================
# Nama  : Atmariani Nova Larasati
# NRP   : 5003251102
# Kelas : Komputasi Statistika, 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) {
  x_sorted <- sort(x)
  n <- length(x)
  k <- floor(alpha * n)
  y <- x_sorted
  
  if(k > 0){
    y[1:k] <- x_sorted[k+1]
    y[(n-k+1):n] <- x_sorted[n-k]
  }
  
  total <- 0
  for(i in 1:n){
    total <- total + y[i]
  }
  
  mean_w <- total / n
  
  return(mean_w)
}

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

# Ordinary mean
n <- length(x)
total <- 0

for(i in 1:n){
  total <- total + x[i]
}

ordinary_mean <- total / n
ordinary_mean
## [1] 81.86667
# Winsorized mean 20%
winsor_mean_20 <- winsorized_mean(x, 0.2)
winsor_mean_20
## [1] 69.73333
# Visualisasi data
boxplot(x, main="Boxplot Data", col="lightblue")

hist(x, main="Histogram Data", col="lightgreen")

# Analisis
# Berdasarkan hasil perhitungan, nilai mean biasa lebih besar dibandingkan winsorized mean. Hal ini menunjukkan bahwa rata-rata sangat dipengaruhi oleh nilai ekstrem yang terdapat dalam data, yaitu 310. Nilai tersebut berada jauh di atas data lainnya sehingga menarik nilai mean ke arah yang lebih tinggi. Dari visualisasi boxplot terlihat adanya pencilan (outlier) yang cukup jauh dari distribusi utama data. Histogram juga menunjukkan bahwa sebagian besar data terkonsentrasi di rentang tertentu, sementara terdapat satu nilai yang sangat besar. Kondisi ini menunjukkan bahwa data tidak simetris dan memiliki distribusi yang condong ke kanan. Winsorized mean bekerja dengan cara menyesuaikan nilai ekstrem sehingga tidak terlalu mempengaruhi rata-rata. Dengan α = 0.2, sebagian data terendah dan tertinggi diganti dengan nilai tertentu sehingga distribusi menjadi lebih stabil. Hal ini menyebabkan nilai winsorized mean lebih kecil dibandingkan mean biasa.

# Interpretasi
# Dari analisis yang dilakukan, dapat dipahami bahwa mean biasa kurang cocok digunakan pada data yang mengandung outlier karena hasilnya dapat menyesatkan. Winsorized mean menjadi alternatif yang lebih baik karena mampu mengurangi pengaruh nilai ekstrem. Oleh karena itu, dalam kondisi data seperti ini, winsorized mean lebih representatif dalam menggambarkan pusat data.



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

# --- Baca data CSV ---
df <- read.csv("C:/Users/USER/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) {
    n <- nrow(X)
    p <- ncol(X)
    
    W <- diag(w)
    
    # hitung total bobot tanpa sum()
    n_w <- 0
    for(i in 1:length(w)){
      n_w <- n_w + w[i]
    }
    
    # mean tertimbang
    x_bar_w <- (t(X) %*% w) / n_w
    
    # matriks deviasi
    one <- matrix(1, n, 1)
    D <- X - one %*% t(x_bar_w)
    
    # kovarians tertimbang
    S_w <- (t(D) %*% W %*% D) / n_w
    
    # standar deviasi tertimbang
    s_w <- sqrt(diag(S_w))
    
    # matriks korelasi
    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
hasil <- weighted_corr(X, w)

# Tampilkan vektor mean tertimbang
hasil$x_bar_w
##        [,1]
## x1 73.88530
## x2 65.39059
## x3 17.00938
# Tampilkan matriks varians-kovarians tertimbang
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
hasil$s_w
##       x1       x2       x3 
## 6.177671 6.411527 4.598649
# Tampilkan matriks korelasi tertimbang
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
# Visualisasi data
pairs(X, main="Scatterplot Matrix")

library(corrplot)
## corrplot 0.95 loaded
corrplot(hasil$R_w, method="circle")

# Analisis
# Berdasarkan hasil perhitungan weighted mean, terlihat bahwa setiap variabel memiliki nilai rata-rata yang telah mempertimbangkan bobot masing-masing observasi. Hal ini menunjukkan bahwa data dengan bobot lebih besar memberikan pengaruh yang lebih besar terhadap hasil rata-rata. Matriks varians-kovarians tertimbang menunjukkan adanya hubungan antar variabel dalam bentuk variasi bersama. Nilai kovarians yang positif mengindikasikan bahwa variabel bergerak searah, sedangkan nilai negatif menunjukkan hubungan berlawanan arah. Standar deviasi tertimbang menunjukkan tingkat penyebaran data. Variabel dengan nilai standar deviasi yang lebih besar memiliki variasi yang lebih tinggi dibandingkan variabel lainnya. Dari visualisasi scatterplot matrix, dapat dilihat pola hubungan antar variabel. Beberapa variabel menunjukkan kecenderungan hubungan linear, baik positif maupun negatif. Hal ini diperkuat dengan matriks korelasi tertimbang yang menunjukkan kekuatan hubungan antar variabel.

# Interpretasi
# Hasil analisis menunjukkan bahwa penggunaan pembobotan memberikan gambaran yang lebih akurat terhadap kondisi data. Weighted mean mencerminkan rata-rata yang lebih representatif, sementara weighted correlation menunjukkan hubungan antar variabel dengan mempertimbangkan kontribusi masing-masing observasi. Dengan demikian, metode statistik tertimbang sangat penting digunakan ketika data memiliki bobot yang berbeda-beda, karena hasil analisis akan lebih sesuai dengan kondisi sebenarnya.