Load Data

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:

Preprosesing

Memeriksa struktur data

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.

Menghitung jumlah missing values per variabel

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.

Analisis Deskriptif

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

Analisis Multivariat

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)

Analisis 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:

  1. PC1: Komponen pertama menjelaskan 60,93% dari total variasi dalam data.
  2. PC2: Komponen kedua menambahkan 14,46%, sehingga kumulatif menjadi 75,39%.
  3. PC3: Komponen ketiga menambahkan 12,67%, sehingga kumulatif menjadi 88,06%.
  4. PC4: Komponen keempat menambahkan 7,95%, sehingga kumulatif menjadi 96,01%.
  5. PC5: Komponen kelima menambahkan 3,74%, sehingga kumulatif menjadi 99,75%.
  6. PC6: Komponen terakhir hanya menjelaskan 0,25%, melengkapi 100% variasi.

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.

Visualisasi Hasil

Scree Plot

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")

Analisis Kluster

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:

  1. Jumlah Cluster: Data dikelompokkan menjadi 3 cluster, yang diidentifikasi oleh warna dan bentuk berbeda (merah, hijau, biru).

  2. Dimensi Visualisasi:

    • Dim1 (69.2%): Dimensi pertama mencakup ~69.2% variabilitas data.
    • Dim2 (16.4%): Dimensi kedua mencakup ~16.4% variabilitas data.
    • Kedua dimensi ini bersama-sama mencakup ~85.6% dari total informasi data.
  3. Karakteristik Cluster:

    • Cluster 1 (Merah): Tampaknya mewakili kelompok dengan nilai tertentu pada Dim1 yang lebih positif, mungkin mencakup entitas yang memiliki karakteristik berbeda dibandingkan dengan cluster lainnya.
    • Cluster 2 (Hijau): Kelompok terbesar, terdistribusi di sepanjang Dim1 dan memiliki cakupan luas di Dim2. Ini mungkin entitas dengan karakteristik campuran.
    • Cluster 3 (Biru): Terkonsentrasi di daerah yang lebih kecil dengan nilai Dim1 negatif dan Dim2 rendah, menunjukkan entitas yang lebih homogen.

Kesimpulan

Berdasarkan hasil analisis data yang dilakukan melalui teknik Principal Component Analysis (PCA) dan clustering, diperoleh beberapa temuan penting sebagai berikut:

  1. 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.

  2. Analisis Clustering:
    Hasil clustering menggunakan metode K-Means menunjukkan bahwa data dapat dikelompokkan menjadi tiga cluster yang memiliki karakteristik berbeda:

    • Cluster 1 (Merah): Kelompok ini tampaknya memiliki karakteristik yang menonjol di dimensi pertama. Kemungkinan kelompok ini mencerminkan individu atau entitas dengan tingkat konsumsi atau nilai tertentu yang tinggi.
    • Cluster 2 (Hijau): Cluster ini adalah yang terbesar dan memiliki sebaran data yang luas, menunjukkan keragaman karakteristik dalam kelompok tersebut. Kemungkinan cluster ini merepresentasikan kelompok dengan karakteristik rata-rata dari banyak variabel.
    • Cluster 3 (Biru): Cluster terkecil dengan sebaran data yang lebih homogen, menunjukkan karakteristik tertentu yang rendah pada dimensi pertama dan kedua.
  3. 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.