Persiapan Data

set.seed(321)

n <- 100
data_bangkitan <- data.frame(
  pendapatan = c(rnorm(50, 5000000, 1000000),
                 rnorm(50, 10000000, 1500000)),
  pengeluaran = c(rnorm(50, 3000000, 800000),
                  rnorm(50, 6000000, 1000000)),
  usia = c(rnorm(50, 25, 3),
           rnorm(50, 40, 5))
)

head(data_bangkitan)
##   pendapatan pengeluaran     usia
## 1    6704903     1957208 21.10047
## 2    4287961     2265038 31.35948
## 3    4722015     3906639 26.63643
## 4    4880351     3654276 25.46602
## 5    4876039     2060595 22.94296
## 6    5268184     2929228 26.24456
summary(data_bangkitan)
##    pendapatan        pengeluaran           usia      
##  Min.   : 2669069   Min.   : 815650   Min.   :20.61  
##  1st Qu.: 5241349   1st Qu.:3131503   1st Qu.:25.29  
##  Median : 6984420   Median :4352244   Median :31.88  
##  Mean   : 7493710   Mean   :4486572   Mean   :33.02  
##  3rd Qu.: 9881262   3rd Qu.:5840143   3rd Qu.:40.09  
##  Max.   :13431763   Max.   :7805043   Max.   :51.91

Standarisasi Data

data_scaled <- scale(data_bangkitan)

Analisis Hierarchical Clustering

# Hitung jarak antar observasi
dist_mat <- dist(data_scaled, method = "euclidean")

# Lakukan hierarchical clustering
hc <- hclust(dist_mat, method = "ward.D2")

# Plot dendrogram
plot(hc, main = "Dendrogram Hierarchical Clustering", xlab = "", sub = "")

# Tentukan jumlah cluster (misal 2)
rect.hclust(hc, k = 2, border = "red")

# Simpan hasil klasterisasi
cluster_hc <- cutree(hc, k = 2)
table(cluster_hc)
## cluster_hc
##  1  2 
## 50 50

Analisis K-Means Clustering

set.seed(123)
kmeans_result <- kmeans(data_scaled, centers = 2, nstart = 25)

# Lihat hasil
kmeans_result$size
## [1] 50 50
kmeans_result$centers
##   pendapatan pengeluaran       usia
## 1  -0.889514  -0.8610079 -0.8380011
## 2   0.889514   0.8610079  0.8380011
# Tambahkan hasil cluster ke data asli
data_bangkitan$cluster_kmeans <- as.factor(kmeans_result$cluster)
library(ggplot2)

ggplot(data_bangkitan, aes(x = pendapatan, y = pengeluaran, color = cluster_kmeans)) +
  geom_point(size = 3) +
  theme_minimal() +
  labs(title = "Hasil K-Means Clustering", x = "Pendapatan", y = "Pengeluaran")

Analisis K-Medoids (PAM)

library(cluster)
pam_result <- pam(data_scaled, k = 2)

# Visualisasi
clusplot(pam_result, main = "K-Medoids Clustering (PAM)")

Kesimpulan

Hasil analisis menggunakan metode Hierarchical Clustering dan K-Means sama-sama menunjukkan bahwa data terbagi menjadi dua kelompok utama. Kelompok pertama terdiri dari individu dengan pendapatan rata-rata sekitar lima juta rupiah, pengeluaran sekitar tiga juta rupiah, dan usia relatif muda, yaitu sekitar 25 tahun. Kelompok ini dapat diinterpretasikan sebagai kelompok masyarakat muda dengan kondisi ekonomi menengah ke bawah yang cenderung memiliki daya beli dan kebutuhan finansial yang masih terbatas. Sementara itu, kelompok kedua memiliki karakteristik pendapatan yang lebih tinggi, yaitu sekitar sepuluh juta rupiah, dengan pengeluaran sekitar enam juta rupiah dan rata-rata usia sekitar 40 tahun. Kelompok ini mencerminkan individu yang sudah lebih mapan secara ekonomi dan memiliki pola pengeluaran yang lebih besar seiring dengan peningkatan pendapatan dan tanggung jawab finansial.