x <- c(12, 45, 52, 58, 61, 63, 67, 70, 72, 75, 78, 82, 88, 95, 310)
df <- data.frame(X = x)
df
## X
## 1 12
## 2 45
## 3 52
## 4 58
## 5 61
## 6 63
## 7 67
## 8 70
## 9 72
## 10 75
## 11 78
## 12 82
## 13 88
## 14 95
## 15 310
winsorized_mean <- function(x, alpha){
x = sort(x)
n = length(x)
k = floor(n*alpha)
mean_manual <- function(x){
total <- 0
for(i in 1:n){
total <- total + x[i]
}
return(total/n)
}
Y <- x
for(i in 1:n){
if(i <= k){
Y[i] <- x[k+1]
}else if(i > k && i <= (n-k)){
Y[i] <- x[i]
}else if(i > n-k){
Y[i] <- x[n-k]
}
}
return(mean_manual(Y))
}
ordinary_mean <- winsorized_mean(x, 0)
ordinary_mean
## [1] 81.86667
winsorized_mean20 <- winsorized_mean(x, 0.2)
winsorized_mean20
## [1] 69.73333
library(ggplot2)
ggplot(df, aes(X)) +
geom_histogram(binwidth = 10, fill = "orange") +
labs(
title = "Distribusi Output Produksi Mesin",
x = "Output",
y = "Frekuensi"
) +
theme_minimal()
Berdasarkan hasil visualisasi histogram, dapat dilihat bahwa nilai 310 merupakan outlier yang sangat jauh dari nilai nilai lainnya
Nilai ini dapat mempengaruhi rata rata biasa (ordinary mean) sehingga menghasilkan estimasi yang bias. Dengan menggunakan Winsorized mean 20%, nilai ekstrem diganti dengan nilai non-ekstrem terdekat sehingga menghasilkan ukuran tendensi sentral yang lebih stabil
df <- read.csv("data_quiz1.csv")
X <- as.matrix(df[, c("x1", "x2", "x3")])
data_frame <- data.frame(X)
data_frame
## x1 x2 x3
## 1 86 55 10.2
## 2 78 64 15.8
## 3 83 58 11.5
## 4 75 68 17.3
## 5 80 60 13.6
## 6 74 66 16.8
## 7 66 74 23.5
## 8 77 62 14.7
## 9 69 72 21.2
## 10 73 67 19.4
## 11 79 59 12.8
## 12 81 57 11.3
## 13 72 65 16.1
## 14 67 73 22.3
## 15 58 80 28.5
## 16 68 70 19.8
## 17 71 67 18.4
## 18 76 63 15.2
## 19 79 61 13.9
## 20 82 56 10.8
## 21 77 62 14.5
## 22 75 65 16.0
## 23 74 66 16.5
## 24 73 68 18.1
## 25 61 78 26.3
## 26 70 63 15.3
## 27 76 58 12.5
## 28 74 64 15.0
## 29 82 55 10.0
## 30 63 75 25.8
## 31 65 72 24.2
## 32 57 82 30.1
## 33 64 74 24.5
## 34 62 77 27.0
## 35 60 79 28.8
## 36 61 78 27.5
## 37 54 85 32.5
## 38 84 60 11.8
w <- df$w
weighted_corr <- function(X, w) {
W <- diag(w)
sum_manual <- function(w){
total <- 0
n <- length(w)
for(i in 1:n){
total <- total + w[i]
}
return(total)
}
x_bar_w <- 1/sum_manual(w)*(t(X) %*% W %*% matrix(1, nrow(X), 1))
D <- X - matrix(1, nrow(X), 1) %*% t(x_bar_w)
S_w <- 1/sum_manual(w)*(t(D) %*% W %*% D)
s_w <- sqrt(diag(S_w))
R_w <- solve(diag(s_w)) %*% S_w %*% solve(diag(s_w))
return(list(
W = W,
x_bar_w = x_bar_w,
S_w = S_w,
s_w = s_w,
R_w = R_w
))
}
result <- weighted_corr(X, w)
vector_mean <- result$x_bar_w
vector_mean
## [,1]
## x1 73.88530
## x2 65.39059
## x3 17.00938
matrix_var <- result$S_w
matrix_var
## x1 x2 x3
## x1 38.16362 -37.75105 -27.15386
## x2 -37.75105 41.10767 29.16587
## x3 -27.15386 29.16587 21.14757
vector_sd <- result$s_w
vector_sd
## x1 x2 x3
## 6.177671 6.411527 4.598649
matrix_kor <- result$R_w
matrix_kor
## [,1] [,2] [,3]
## [1,] 1.0000000 -0.9531095 -0.9558207
## [2,] -0.9531095 1.0000000 0.9891979
## [3,] -0.9558207 0.9891979 1.0000000
ggplot(df, aes(x = x1, y = x2)) +
geom_point(color = "blue") +
labs(
title = "Hubungan Kualitas Udara dan Kualitas Air",
x = "Indeks Kualitas Udara",
y = "Indeks Kualitas Air"
) +
theme_minimal()
Scatter plot antara indeks kualitas udara dan indeks kualitas air menunjukkan hubungan antara kedua indikator lingkungan tersebut. Jika titik-titik cenderung membentuk pola menurun, maka terdapat korelasi negatif yang menunjukkan bahwa daerah dengan kualitas udara yang baik memiliki kualitas air yang menurun.
ggplot(df, aes(x = x1, y = x3)) +
geom_point(color = "darkgreen") +
labs(
title = "Hubungan Kualitas Udara dan Ruang Terbuka Hijau",
x = "Indeks Kualitas Udara",
y = "Rasio Ruang Terbuka Hijau"
) +
theme_minimal()
Scatter plot antara indeks kualitas udara dan rasio ruang terbuka hijau menunjukkan bahwa daerah dengan rasio ruang terbuka hijau yang lebih tinggi memiliki kualitas udara yang lebih buruk.
ggplot(df, aes(x = x2, y = x3)) +
geom_point(color = "orange") +
labs(
title = "Hubungan Kualitas Air dan Ruang Terbuka Hijau",
x = "Indeks Kualitas Air",
y = "Rasio Ruang Terbuka Hijau"
) +
theme_minimal()
Scatter plot antara indeks kualitas air dan rasio ruang terbuka hijau menunjukkan hubungan antara keberadaan ruang hijau dan kualitas air. Jika pola hubungan positif terlihat, maka ruang terbuka hijau dapat berperan dalam menjaga kualitas air melalui fungsi resapan dan pengendalian lingkungan.
library(corrplot)
## corrplot 0.95 loaded
corrplot(matrix_kor,
method = "color",
type = "upper",
addCoef.col = "black")
Berdasarkan heatmap korelasi tertimbang, dapat dilihat hubungan antar indikator kualitas lingkungan, yaitu indeks kualitas udara, indeks kualitas air, dan rasio ruang terbuka hijau.
Jika korelasi antar variabel bernilai positif dan cukup besar, maka dapat disimpulkan bahwa peningkatan satu indikator lingkungan cenderung diikuti oleh peningkatan indikator lainnya. Hal ini menunjukkan bahwa kualitas lingkungan hidup pada suatu daerah memiliki keterkaitan antar komponennya.
Sebaliknya, jika nilai korelasi kecil, maka hubungan antar indikator tersebut relatif lemah.