Karena file dalam format .dbf dan berukuran besar untuk mengaksesnya gunakan package foreign.
library(foreign)
data <- read.dbf("blok43.dbf")
head(data)
## RENUM R101 R102 R105 R203 R301 FOOD NONFOOD EXPEND KAPITA
## 1 285340 11 1 2 1 4 1795114.3 1183000.0 2978114.3 744528.6
## 2 285346 11 1 2 1 4 2108331.4 868198.3 2976529.8 744132.4
## 3 285337 11 1 2 1 3 1810200.0 1074350.0 2884550.0 961516.7
## 4 285334 11 1 2 1 2 1561971.4 790975.0 2352946.4 1176473.2
## 5 285331 11 1 2 1 2 1178940.0 778891.7 1957831.7 978915.8
## 6 285319 11 1 2 1 1 411428.6 347100.0 758528.6 758528.6
## KALORI_KAP PROTE_KAP LEMAK_KAP KARBO_KAP WERT WEIND WI1 WI2
## 1 2435.711 63.90107 49.25109 396.8879 35.18946 140.75786 9976 177146
## 2 2451.215 78.39737 48.24964 404.1182 36.64960 146.59842 9976 60810
## 3 2495.909 74.53511 45.31679 419.1078 35.52082 106.56246 9976 99379
## 4 3384.523 109.18344 82.58239 506.0941 35.02336 70.04672 9976 141157
## 5 3554.871 105.33573 58.97906 611.9319 30.97004 61.94007 9976 123223
## 6 2751.892 77.70753 51.27606 451.6912 37.98458 37.98458 9976 154278
Penjelasan Variabel:
str(data)
## 'data.frame': 340032 obs. of 18 variables:
## $ RENUM : int 285340 285346 285337 285334 285331 285319 285322 285325 285343 285328 ...
## $ R101 : int 11 11 11 11 11 11 11 11 11 11 ...
## $ R102 : int 1 1 1 1 1 1 1 1 1 1 ...
## $ R105 : int 2 2 2 2 2 2 2 2 2 2 ...
## $ R203 : int 1 1 1 1 1 1 1 1 1 1 ...
## $ R301 : int 4 4 3 2 2 1 5 4 4 3 ...
## $ FOOD : num 1795114 2108331 1810200 1561971 1178940 ...
## $ NONFOOD : num 1183000 868198 1074350 790975 778892 ...
## $ EXPEND : num 2978114 2976530 2884550 2352946 1957832 ...
## $ KAPITA : num 744529 744132 961517 1176473 978916 ...
## $ KALORI_KAP: num 2436 2451 2496 3385 3555 ...
## $ PROTE_KAP : num 63.9 78.4 74.5 109.2 105.3 ...
## $ LEMAK_KAP : num 49.3 48.2 45.3 82.6 59 ...
## $ KARBO_KAP : num 397 404 419 506 612 ...
## $ WERT : num 35.2 36.6 35.5 35 31 ...
## $ WEIND : num 140.8 146.6 106.6 70 61.9 ...
## $ WI1 : int 9976 9976 9976 9976 9976 9976 9976 9976 9976 9976 ...
## $ WI2 : int 177146 60810 99379 141157 123223 154278 90478 206467 24522 279725 ...
## - attr(*, "data_types")= chr [1:18] "N" "N" "N" "N" ...
Data yang ditampilkan merupakan sebuah data frame dari hasil survei yang berisi 340.032 observasi dan 18 variabel. Setiap baris pada data merepresentasikan satu rumah tangga, sementara setiap kolom merepresentasikan informasi tertentu tentang rumah tangga seperti yang telah dijelaskan sebelumnya.
colSums(is.na(data))
## RENUM R101 R102 R105 R203 R301 FOOD
## 0 0 0 0 0 0 0
## NONFOOD EXPEND KAPITA KALORI_KAP PROTE_KAP LEMAK_KAP KARBO_KAP
## 0 0 0 0 0 0 0
## WERT WEIND WI1 WI2
## 0 0 0 0
Data SUSENAS tersebut tidak ada data kosong maka tidak diperlukan untuk menghapusnya.
summary(data)
## RENUM R101 R102 R105 R203
## Min. : 1 Min. :11.00 Min. : 1.00 Min. :1.000 Min. :1
## 1st Qu.: 85009 1st Qu.:18.00 1st Qu.: 4.00 1st Qu.:1.000 1st Qu.:1
## Median :170017 Median :35.00 Median :10.00 Median :2.000 Median :1
## Mean :170017 Mean :43.05 Mean :21.68 Mean :1.579 Mean :1
## 3rd Qu.:255024 3rd Qu.:64.00 3rd Qu.:23.00 3rd Qu.:2.000 3rd Qu.:1
## Max. :340032 Max. :94.00 Max. :79.00 Max. :2.000 Max. :1
## R301 FOOD NONFOOD EXPEND
## Min. : 1.000 Min. : 114857 Min. : 38208 Min. : 182190
## 1st Qu.: 3.000 1st Qu.: 1295486 1st Qu.: 857667 1st Qu.: 2277443
## Median : 4.000 Median : 1916079 Median : 1403417 Median : 3429452
## Mean : 3.757 Mean : 2226646 Mean : 2142186 Mean : 4368832
## 3rd Qu.: 5.000 3rd Qu.: 2785714 3rd Qu.: 2393183 3rd Qu.: 5212515
## Max. :29.000 Max. :31272857 Max. :193333898 Max. :201254112
## KAPITA KALORI_KAP PROTE_KAP LEMAK_KAP
## Min. : 114515 Min. :1000 Min. : 4.166 Min. : 2.023
## 1st Qu.: 656004 1st Qu.:1737 1st Qu.: 47.371 1st Qu.: 38.230
## Median : 997299 Median :2116 Median : 59.678 Median : 51.136
## Mean : 1308460 Mean :2217 Mean : 64.088 Mean : 55.374
## 3rd Qu.: 1543848 3rd Qu.:2580 3rd Qu.: 75.468 3rd Qu.: 67.453
## Max. :94740858 Max. :4500 Max. :364.666 Max. :293.561
## KARBO_KAP WERT WEIND WI1
## Min. : 25.66 Min. : 1.165 Min. : 1.165 Min. : 1
## 1st Qu.: 254.84 1st Qu.: 67.080 1st Qu.: 212.398 1st Qu.: 7180
## Median : 312.18 Median : 141.845 Median : 474.874 Median :15780
## Mean : 327.74 Mean : 222.376 Mean : 798.704 Mean :15840
## 3rd Qu.: 382.61 3rd Qu.: 296.702 3rd Qu.: 1011.605 3rd Qu.:24378
## Max. :1042.51 Max. :2082.520 Max. :22907.723 Max. :32974
## WI2
## Min. : 1
## 1st Qu.: 71016
## Median :156026
## Mean :156601
## 3rd Qu.:241034
## Max. :326043
FOOD (Pengeluaran makanan): Nilai minimum adalah 114857, sedangkan maksimum adalah 31272857. Median (nilai tengah) adalah 1916079, artinya setengah rumah tangga memiliki pengeluaran makanan di bawah jumlah tersebut.
NONFOOD (Pengeluaran non-makanan): Rentang nilai dari 857667 hingga 201254112, dengan median 13429512. Ini menunjukkan variasi besar dalam pengeluaran non-makanan.
EXPEND (Total pengeluaran): Minimum 182190, maksimum 201254112, dan rata-rata 4368824, menunjukkan bahwa mayoritas rumah tangga memiliki pengeluaran total dalam kisaran ini.
KAPITA (Pengeluaran per kapita): Nilai per kapita bervariasi dari 114515 hingga 94740858, dengan median 997299. Ini memberikan gambaran tentang distribusi pengeluaran per individu.
KALORI_KAP (Kalori per kapita): Distribusi konsumsi kalori harian per kapita berkisar dari 1.165 hingga 4.500, dengan median 2.116.
PROTE_KAP (Protein per kapita): Konsumsi protein per kapita harian bervariasi dari 4.166 hingga 364.666, dengan median 59.678 gram.
LEMAK_KAP (Lemak per kapita): Konsumsi lemak berkisar dari 2.023 hingga 293.561, dengan median 51.136 gram.
KARBO_KAP (Karbohidrat per kapita): Konsumsi karbohidrat berkisar dari 25.66 hingga 1042.51, dengan median 312.18 gram.
WERT: Bobot rumah tangga bervariasi dari 67.080 hingga 2082.520.
WEIND: Bobot individu bervariasi dari 212.398 hingga 22907.723.
Masukkan variabel numerik yang akan dianalisis dengan PCA
data_pca <- data[, c("KAPITA", "KALORI_KAP", "PROTE_KAP", "LEMAK_KAP", "KARBO_KAP", "R301")]
data_pca_scaled <- scale(data_pca)
pca_result <- prcomp(data_pca_scaled, center = TRUE, scale. = TRUE)
summary(pca_result)
## Importance of components:
## PC1 PC2 PC3 PC4 PC5 PC6
## Standard deviation 1.9120 0.9313 0.8718 0.69075 0.4737 0.12302
## Proportion of Variance 0.6093 0.1446 0.1267 0.07952 0.0374 0.00252
## Cumulative Proportion 0.6093 0.7539 0.8806 0.96008 0.9975 1.00000
Berdasarkan output analisis PCA yang diatas, terdapat beberapa hasil yaitu:
Standard deviation Nilai standar deviasi dari setiap Principal Component (PC). Semakin besar nilai ini, semakin besar kontribusi komponen tersebut dalam menjelaskan variasi data.
Proportion of Variance Proporsi varians yang dijelaskan oleh masing-masing komponen utama. Nilai ini menunjukkan seberapa besar informasi (variasi) dalam data yang dapat dijelaskan oleh komponen tertentu.
Cumulative Proportion Proporsi kumulatif varians yang dijelaskan oleh semua komponen hingga komponen tertentu. Nilai ini berguna untuk menentukan jumlah komponen utama yang cukup untuk menjelaskan sebagian besar variasi dalam data.
berikut adalah penjelasan mengenai komponen utama (Principal Components) dan varians yang dijelaskan oleh masing-masing komponen:
Berdasarkan nilai Cumulative Proportion, kita dapat melihat bahwa 3 komponen pertama (PC1, PC2, dan PC3) cukup untuk menjelaskan 88,06% dari total variasi data. Ini berarti sebagian besar informasi dalam data dapat direpresentasikan oleh 3 komponen utama saja. PC1 memiliki kontribusi yang jauh lebih besar dibandingkan dengan komponen lainnya, yang menunjukkan bahwa dimensi pertama (PC1) adalah yang paling informatif.
screeplot(pca_result, type = "lines", main = "Scree Plot")
### Biplot
library(ggplot2)
biplot(pca_result, scale = 0) # Gunakan data PCA
### Scatter Plot
data_pca <- as.data.frame(pca_result$x)
ggplot(data_pca, aes(x = PC1, y = PC2)) +
geom_point() +
theme_minimal() +
labs(title = "Scatter Plot PC1 vs PC2", x = "PC1", y = "PC2")
set.seed(123)
data_reduced <- pca_result$x[, 1:3]
kmeans_result <- kmeans(data_reduced, centers = 3, nstart = 25)
library(factoextra)
## Welcome! Want to learn more? See two factoextra-related books at https://goo.gl/ve3WBa
fviz_cluster(kmeans_result, data = data_reduced, geom = "point", stand = FALSE)
Berdasarkan visualisasi hasil clustering K-Means:
Jumlah Cluster: Data dikelompokkan menjadi 3 cluster, yang diidentifikasi oleh warna dan bentuk berbeda (merah, hijau, biru).
Dimensi Visualisasi:
Karakteristik Cluster:
Berdasarkan hasil analisis data yang dilakukan melalui teknik Principal Component Analysis (PCA) dan clustering, diperoleh beberapa temuan penting sebagai berikut:
Analisis Principal Component Analysis (PCA):
Teknik PCA berhasil mereduksi dimensi data menjadi dua komponen utama,
yaitu PC1 dan PC2, yang secara kumulatif mampu menjelaskan sekitar 85.6%
variasi dalam data. PC1 menyumbang 69.2% variasi, sementara PC2
menyumbang 16.4%. Hal ini menunjukkan bahwa sebagian besar informasi
dalam data asli dapat direpresentasikan secara memadai oleh dua komponen
utama ini. Dengan menggunakan PCA, kompleksitas data dapat
disederhanakan tanpa kehilangan informasi penting, yang juga memudahkan
dalam analisis dan visualisasi data.
Analisis Clustering:
Hasil clustering menggunakan metode K-Means menunjukkan bahwa data dapat
dikelompokkan menjadi tiga cluster yang memiliki karakteristik
berbeda:
Temuan Umum:
Pola pengelompokan dalam data menunjukkan bahwa terdapat perbedaan
signifikan antara kelompok-kelompok yang terbentuk. Dengan memahami
karakteristik masing-masing cluster, hasil ini dapat dimanfaatkan untuk
berbagai tujuan, seperti penyusunan kebijakan, alokasi sumber daya, atau
pengembangan strategi intervensi yang lebih tepat sasaran.