# 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)
x <- c(50, 55, 60, 65, 70, 75, 80, 85, 90, 310)
data <- data.frame(nilai = x)
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()
)
ordinary_mean <- winsorized_mean(x, 0)
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
#
==============================================================================
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
))
}
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
R <- hasil$R_w
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.
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.
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.