# ==============================================================================
# Nama  : Maulana Ainu Rohmah
# NRP   : 5003251077
# Kelas : D
# ==============================================================================


# ==============================================================================
# Soal 1 - Winsorized Mean
# ==============================================================================
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)
  k <- floor(n*alpha)
  
  sum <- 0
  for(i in 1:n){
    if(i <= k){
      sum <- sum + x[k + 1]
    } else if(i > k && i <= (n - k)){
      sum <- sum + x[i]
    } else if(i > (n - k)){
      sum <- sum + x[n - k]
    } else {
      print("error")
    }
  }
  
  mean <- sum/n
  return(mean)
}

winsorized_mean(x, 0)
## [1] 81.86667
winsorized_mean(x, 0.2)
## [1] 69.73333
# ==============================================================================
# ==============================================================================
# VISUALISASI DATA NO.1
# ==============================================================================
x_sort <- sort(x)
n2 <- length(x_sort)
k2 <- floor(n2 * 0.2)

x_wins <- x_sort

for(i in 1:k2){
  x_wins[i] <- x_sort[k2 + 1]
}
for(i in (n2 - k2 + 1):n2){
  x_wins[i] <- x_sort[n2 - k2]
}

boxplot(x_sort, x_wins,
        names = c("Data Asli", "Winsorized"),
        col = c("lightblue", "pink"),
        main = "Perbandingan Sebelum dan Sesudah Winsorizing")

# ==============================================================================
# INTERPRETASI DATA NO.1
# ==============================================================================
# Boxplot menunjukkan adanya outlier pada data asli, yaitu nilai 12 dan 310(ekstrem). Setelah winsorizing, outlier tersebut tidak lagi muncul dan distribusi data menjadi lebih stabil. Hal ini menunjukkan bahwa winsorizing efektif dalam mengurangi pengaruh nilai ekstrem.
# ==============================================================================
# Soal 2 - Weighted Multivariate Descriptive Statistics
# ==============================================================================

df <- read.csv("C:/Users/Lenovo/Downloads/Quiz 1 Komstat/data_quiz1.csv")
X <- as.matrix(df[, c("x1", "x2", "x3")])
w <- df$w

weighted_corr <- function(X, w){
  n <- length(w)
  nw <- 0
  for(i in 1:n){
    nw <- nw + w[i]
  }
  
  w <- matrix(w, ncol = 1)
  W <- diag(as.vector(w))
  
  x_bar_w = (t(X) %*% w) / nw
  
  satu <- matrix(1, n, 1)
  D = X - satu %*% t(x_bar_w)
  S_w = (t(D) %*% W %*% D) / nw
  
  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
  ))
}

hasil <- weighted_corr(X, w)

hasil$x_bar_w
##        [,1]
## x1 73.88530
## x2 65.39059
## x3 17.00938
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
hasil$s_w
##       x1       x2       x3 
## 6.177671 6.411527 4.598649
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 NO.2
# ==============================================================================

plot(X[,1], X[,2],
     xlab = "x1 - Kualitas Udara",
     ylab = "x2 - Kualitas Air",
     main = "Scatter Plot x1 vs x2",
     pch = 19,
     col = "pink",
     cex = 1.5)

plot(X[,3], X[,2],
     xlab = "x3 - Ruang Terbuka Hijau",
     ylab = "x2 - Kualitas Air",
     main = "Scatter Plot x3 vs x2",
     pch = 19,
     col = "lightblue",
     cex = 1.5)

plot(X[,3], X[,1],
     xlab = "x3 - Ruang Terbuka Hijau",
     ylab = "x1 - Kualitas Udara",
     main = "Scatter Plot x3 vs x1",
     pch = 19,
     col = "black",
     cex = 1.5)

# ==============================================================================
# INTERPRETASI DATA NO. 2
# ==============================================================================
# - Hubungan antara x1 (Kualitas Udara) dengan x2 (Kualitas Air) yaitu menunjukkan pola menurun yang mengartikan bahwa kedua variabel memiliki korelasi negatif yang kuat.
# - Hubungan antara x3 (Ruang Terbuka Hijau) dengan x2 (Kualitas Air) yaitu menunjukkan pola meningkat yang mengartikan bahwa kedua variabel memiliki korelasi positif yang kuat. Semakin banyak Ruang Terbuka Hijau, maka semakin tinggi/bagus Kualitas Airnya, begitu juga sebaliknya (Semakin sedikit Ruang Terbuka Hijau, Kualitas Airnya semakin rendah).
# - Hubungan antara x3 (Ruang Terbuka Hijau) dengan x1 (Kualitas Udara) yaitu menunjukkan pola menurun yang mengartikan bahwa kedua variabel memiliki korelasi negatif yang kuat. Semakin banyak Ruang Terbuka Hijau, maka semakin rendah/bagus Kualitas Udaranya, begitu juga sebaliknya (Semakin sedikit Ruang Terbuka Hijau, Kualitas Udaranya semakin buruk).