trimmed_mean <- function(x, alpha = 0.1) {
n <- length(x)
k<- floor(n * alpha)
sum_manual <- function(x, n, k){
result <- 0
for(i in (k+1):(n-k)){
result <- result + x[i]
}
return(result)
}
TM <- (1 / (n - 2*k)) * sum_manual(x, n, k)
return(TM)
}
x <- c(850, 920, 1100, 1250, 1300, 1400, 1500, 1550, 1600, 1750, 2100, 8500)
sortedx <- sort(x)
ord_mean <- trimmed_mean(sortedx, 0)
ord_mean
## [1] 1985
trim_mean <- trimmed_mean(sortedx)
trim_mean
## [1] 1447
stripchart(sortedx,
method = "jitter",
pch = 19,
col = "dodgerblue",
main = "Household Expenditures: Ordinary vs. 10% Trimmed Mean",
xlab = "Expenditure (Thousands IDR)",
xlim = c(0, 9000),
frame.plot = FALSE)
abline(v = ord_mean, col = "red", lwd = 2, lty = 2)
abline(v = trim_mean, col = "darkgreen", lwd = 2, lty = 1)
legend("topright",
legend = c("Data Points", "Ordinary Mean", "10% Trimmed Mean"),
col = c("dodgerblue", "red", "darkgreen"),
pch = c(19, NA, NA),
lty = c(NA, 2, 1),
lwd = c(NA, 2, 2),
bty = "n")
weighted_multi_desc <- function(X, w){
W <- diag(w)
n <- nrow(X)
nw <- 0
onematrix <- matrix(rep(1, n), ncol = 1)
for(i in 1:n){
nw <- nw + w[i]
}
Xbarw <- 1 / nw * (t(X) %*% W %*% onematrix)
D <- X - (onematrix %*% t(Xbarw))
S_w <- 1 / (nw - 1) * (t(D) %*% W %*% D)
sw <- sqrt(diag(S_w))
return(list(W1 = W,
w_mean = Xbarw,
x_cov = S_w,
w_std = sw))
}
data <- read.csv("data_quiz.csv", header = TRUE)
X <- as.matrix(data[, c("Income", "Expenditure", "HH_Size")])
w <- data$Weight
weighted_multi_desc(X, w)
## $W1
## [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] [,13]
## [1,] 5 0 0 0 0 0 0 0 0 0 0 0 0
## [2,] 0 7 0 0 0 0 0 0 0 0 0 0 0
## [3,] 0 0 10 0 0 0 0 0 0 0 0 0 0
## [4,] 0 0 0 5 0 0 0 0 0 0 0 0 0
## [5,] 0 0 0 0 6 0 0 0 0 0 0 0 0
## [6,] 0 0 0 0 0 4 0 0 0 0 0 0 0
## [7,] 0 0 0 0 0 0 6 0 0 0 0 0 0
## [8,] 0 0 0 0 0 0 0 13 0 0 0 0 0
## [9,] 0 0 0 0 0 0 0 0 6 0 0 0 0
## [10,] 0 0 0 0 0 0 0 0 0 5 0 0 0
## [11,] 0 0 0 0 0 0 0 0 0 0 7 0 0
## [12,] 0 0 0 0 0 0 0 0 0 0 0 18 0
## [13,] 0 0 0 0 0 0 0 0 0 0 0 0 11
## [14,] 0 0 0 0 0 0 0 0 0 0 0 0 0
## [15,] 0 0 0 0 0 0 0 0 0 0 0 0 0
## [16,] 0 0 0 0 0 0 0 0 0 0 0 0 0
## [17,] 0 0 0 0 0 0 0 0 0 0 0 0 0
## [18,] 0 0 0 0 0 0 0 0 0 0 0 0 0
## [19,] 0 0 0 0 0 0 0 0 0 0 0 0 0
## [20,] 0 0 0 0 0 0 0 0 0 0 0 0 0
## [21,] 0 0 0 0 0 0 0 0 0 0 0 0 0
## [22,] 0 0 0 0 0 0 0 0 0 0 0 0 0
## [23,] 0 0 0 0 0 0 0 0 0 0 0 0 0
## [24,] 0 0 0 0 0 0 0 0 0 0 0 0 0
## [25,] 0 0 0 0 0 0 0 0 0 0 0 0 0
## [26,] 0 0 0 0 0 0 0 0 0 0 0 0 0
## [27,] 0 0 0 0 0 0 0 0 0 0 0 0 0
## [28,] 0 0 0 0 0 0 0 0 0 0 0 0 0
## [29,] 0 0 0 0 0 0 0 0 0 0 0 0 0
## [30,] 0 0 0 0 0 0 0 0 0 0 0 0 0
## [31,] 0 0 0 0 0 0 0 0 0 0 0 0 0
## [,14] [,15] [,16] [,17] [,18] [,19] [,20] [,21] [,22] [,23] [,24] [,25]
## [1,] 0 0 0 0 0 0 0 0 0 0 0 0
## [2,] 0 0 0 0 0 0 0 0 0 0 0 0
## [3,] 0 0 0 0 0 0 0 0 0 0 0 0
## [4,] 0 0 0 0 0 0 0 0 0 0 0 0
## [5,] 0 0 0 0 0 0 0 0 0 0 0 0
## [6,] 0 0 0 0 0 0 0 0 0 0 0 0
## [7,] 0 0 0 0 0 0 0 0 0 0 0 0
## [8,] 0 0 0 0 0 0 0 0 0 0 0 0
## [9,] 0 0 0 0 0 0 0 0 0 0 0 0
## [10,] 0 0 0 0 0 0 0 0 0 0 0 0
## [11,] 0 0 0 0 0 0 0 0 0 0 0 0
## [12,] 0 0 0 0 0 0 0 0 0 0 0 0
## [13,] 0 0 0 0 0 0 0 0 0 0 0 0
## [14,] 6 0 0 0 0 0 0 0 0 0 0 0
## [15,] 0 9 0 0 0 0 0 0 0 0 0 0
## [16,] 0 0 7 0 0 0 0 0 0 0 0 0
## [17,] 0 0 0 6 0 0 0 0 0 0 0 0
## [18,] 0 0 0 0 12 0 0 0 0 0 0 0
## [19,] 0 0 0 0 0 7 0 0 0 0 0 0
## [20,] 0 0 0 0 0 0 20 0 0 0 0 0
## [21,] 0 0 0 0 0 0 0 18 0 0 0 0
## [22,] 0 0 0 0 0 0 0 0 9 0 0 0
## [23,] 0 0 0 0 0 0 0 0 0 11 0 0
## [24,] 0 0 0 0 0 0 0 0 0 0 10 0
## [25,] 0 0 0 0 0 0 0 0 0 0 0 23
## [26,] 0 0 0 0 0 0 0 0 0 0 0 0
## [27,] 0 0 0 0 0 0 0 0 0 0 0 0
## [28,] 0 0 0 0 0 0 0 0 0 0 0 0
## [29,] 0 0 0 0 0 0 0 0 0 0 0 0
## [30,] 0 0 0 0 0 0 0 0 0 0 0 0
## [31,] 0 0 0 0 0 0 0 0 0 0 0 0
## [,26] [,27] [,28] [,29] [,30] [,31]
## [1,] 0 0 0 0 0 0
## [2,] 0 0 0 0 0 0
## [3,] 0 0 0 0 0 0
## [4,] 0 0 0 0 0 0
## [5,] 0 0 0 0 0 0
## [6,] 0 0 0 0 0 0
## [7,] 0 0 0 0 0 0
## [8,] 0 0 0 0 0 0
## [9,] 0 0 0 0 0 0
## [10,] 0 0 0 0 0 0
## [11,] 0 0 0 0 0 0
## [12,] 0 0 0 0 0 0
## [13,] 0 0 0 0 0 0
## [14,] 0 0 0 0 0 0
## [15,] 0 0 0 0 0 0
## [16,] 0 0 0 0 0 0
## [17,] 0 0 0 0 0 0
## [18,] 0 0 0 0 0 0
## [19,] 0 0 0 0 0 0
## [20,] 0 0 0 0 0 0
## [21,] 0 0 0 0 0 0
## [22,] 0 0 0 0 0 0
## [23,] 0 0 0 0 0 0
## [24,] 0 0 0 0 0 0
## [25,] 0 0 0 0 0 0
## [26,] 9 0 0 0 0 0
## [27,] 0 10 0 0 0 0
## [28,] 0 0 6 0 0 0
## [29,] 0 0 0 7 0 0
## [30,] 0 0 0 0 8 0
## [31,] 0 0 0 0 0 16
##
## $w_mean
## [,1]
## Income 4.186869
## Expenditure 3.350505
## HH_Size 3.832997
##
## $x_cov
## Income Expenditure HH_Size
## Income 0.8703337 0.6840776 -0.4882477
## Expenditure 0.6840776 0.5384541 -0.3843073
## HH_Size -0.4882477 -0.3843073 0.2926238
##
## $w_std
## Income Expenditure HH_Size
## 0.9329168 0.7337943 0.5409471
income <- X[, "Income"]
expenditure <- X[, "Expenditure"]
plot(income, expenditure,
main = "Income vs. Expenditure by Kecamatan",
xlab = "Monthly Income (Million IDR)",
ylab = "Monthly Expenditure (Million IDR)",
pch = 19, # Solid circle
col = adjustcolor("darkorange", alpha.f = 0.7),
cex = w / 8,
frame.plot = FALSE)
legend("topleft",
legend = "Larger dots = Higher Population Weight",
bty = "n",
text.col = "black")