#code1
# Data
x <- c(12, 45, 52, 58, 61, 63, 67, 70, 72, 75, 78, 82, 88, 95, 310)
# Fungsi sorting manual
sort_manual <- function(x) {
n <- length(x)
for (i in 1:(n-1)) {
for (j in (i+1):n) {
if (x[i] > x[j]) {
temp <- x[i]
x[i] <- x[j]
x[j] <- temp
}
}
}
return(x)
}
# Fungsi winsorized mean
winsorized_mean <- function(x, alpha) {
x <- sort_manual(x)
n <- length(x)
k <- floor(n * alpha)
total <- 0
for (i in 1:n) {
if (i <= k) {
total <- total + x[k+1]
} else if (i <= n-k) {
total <- total + x[i]
} else {
total <- total + x[n-k]
}
}
return(total/n)
}
#hasilperhitungan
mean_biasa <- winsorized_mean(x, 0)
winsor_20 <- winsorized_mean(x, 0.2)
mean_biasa
## [1] 81.86667
winsor_20
## [1] 69.73333
#visualisasi
boxplot(x, main="Boxplot Data Produksi", col="lightblue")
#interpretasi
Nilai rata-rata biasa terlihat lebih besar karena dipengaruhi oleh adanya nilai ekstrem, yaitu 310, yang cukup jauh dibandingkan data lainnya. Setelah dilakukan winsorizing sebesar 20%, nilai ekstrem tersebut disesuaikan dengan nilai terdekat yang lebih wajar, sehingga rata-rata yang dihasilkan menjadi lebih stabil dan lebih mencerminkan kondisi sebagian besar data.
#code2
df <- read.csv("data_quiz1.csv")
X <- as.matrix(df[, c("x1", "x2", "x3")])
w <- df$w
weighted_corr <- function(X, w) {
n <- length(w)
W <- diag(w)
satu <- matrix(1, n, 1)
nw <- sum(w)
# mean tertimbang
xbar <- (t(X) %*% W %*% satu) / nw
# deviasi
D <- X - satu %*% t(xbar)
# covariance
Sw <- (t(D) %*% W %*% D) / nw
# standar deviasi
sw <- sqrt(diag(Sw))
# korelasi
Rw <- solve(diag(sw)) %*% Sw %*% solve(diag(sw))
return(list(
mean = xbar,
cov = Sw,
sd = sw,
cor = Rw
))
}
#hasil
hasil <- weighted_corr(X, w)
hasil$mean
## [,1]
## x1 73.88530
## x2 65.39059
## x3 17.00938
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
hasil$sd
## x1 x2 x3
## 6.177671 6.411527 4.598649
hasil$cor
## [,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
pairs(X, main="Scatter Plot Antar Variabel")
library(corrplot)
## corrplot 0.95 loaded
corrplot(hasil$cor, method="circle")
#interpretasi
Berdasarkan hasil perhitungan, terlihat bahwa hubungan antar variabel cukup kuat. Variabel kualitas udara (x1) dan kualitas air (x2) memiliki korelasi negatif yang tinggi, yang menunjukkan bahwa ketika nilai salah satu variabel meningkat, variabel lainnya cenderung menurun. Di sisi lain, kualitas air (x2) dan ruang terbuka hijau (x3) memiliki korelasi positif yang sangat kuat, sehingga keduanya cenderung meningkat secara bersamaan. Hal ini menunjukkan bahwa indikator kualitas lingkungan memiliki keterkaitan satu sama lain dalam menggambarkan kondisi tiap daerah.