library("ggcorrplot")
## Warning: package 'ggcorrplot' was built under R version 4.4.1
## Loading required package: ggplot2
library("FactoMineR")
library("factoextra")
## Warning: package 'factoextra' was built under R version 4.4.1
## Welcome! Want to learn more? See two factoextra-related books at https://goo.gl/ve3WBa
library("foreign")
library("psych")
## Warning: package 'psych' was built under R version 4.4.1
## 
## Attaching package: 'psych'
## The following objects are masked from 'package:ggplot2':
## 
##     %+%, alpha
library("corrplot")
## corrplot 0.92 loaded

Preprosesing

data <- read.dbf("C:/Users/LENOVO/Downloads/blok43.dbf")
View(data)

Check nilai nul values

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

Normalisasi data

numerical_data <- data[,7:18]

head(numerical_data)
##        FOOD   NONFOOD    EXPEND    KAPITA KALORI_KAP PROTE_KAP LEMAK_KAP
## 1 1795114.3 1183000.0 2978114.3  744528.6   2435.711  63.90107  49.25109
## 2 2108331.4  868198.3 2976529.8  744132.4   2451.215  78.39737  48.24964
## 3 1810200.0 1074350.0 2884550.0  961516.7   2495.909  74.53511  45.31679
## 4 1561971.4  790975.0 2352946.4 1176473.2   3384.523 109.18344  82.58239
## 5 1178940.0  778891.7 1957831.7  978915.8   3554.871 105.33573  58.97906
## 6  411428.6  347100.0  758528.6  758528.6   2751.892  77.70753  51.27606
##   KARBO_KAP     WERT     WEIND  WI1    WI2
## 1  396.8879 35.18946 140.75786 9976 177146
## 2  404.1182 36.64960 146.59842 9976  60810
## 3  419.1078 35.52082 106.56246 9976  99379
## 4  506.0941 35.02336  70.04672 9976 141157
## 5  611.9319 30.97004  61.94007 9976 123223
## 6  451.6912 37.98458  37.98458 9976 154278
data_normalized <- scale(numerical_data)
head(data_normalized)
##            FOOD    NONFOOD     EXPEND     KAPITA KALORI_KAP    PROTE_KAP
## [1,] -0.3073597 -0.3120619 -0.3489087 -0.4505336  0.3251644 -0.007564241
## [2,] -0.0842699 -0.4144795 -0.3493063 -0.4508501  0.3482512  0.579489978
## [3,] -0.2966148 -0.3474101 -0.3723825 -0.2771784  0.4148061  0.423080698
## [4,] -0.4734163 -0.4396034 -0.5057533 -0.1054461  1.7380703  1.826228911
## [5,] -0.7462315 -0.4435346 -0.6048812 -0.2632779  1.9917400  1.670408825
## [6,] -1.2928935 -0.5840138 -0.9057670 -0.4393488  0.7959985  0.551553663
##       LEMAK_KAP KARBO_KAP       WERT      WEIND        WI1        WI2
## [1,] -0.2482499 0.6734308 -0.7829763 -0.6741392 -0.5961709  0.2112811
## [2,] -0.2888534 0.7438447 -0.7768687 -0.6681548 -0.5961709 -0.9851108
## [3,] -0.4077638 0.8898253 -0.7815903 -0.7091762 -0.5961709 -0.5884697
## [4,]  1.1031460 1.7369676 -0.7836711 -0.7465906 -0.5961709 -0.1588274
## [5,]  0.1461642 2.7676996 -0.8006256 -0.7548968 -0.5961709 -0.3432595
## [6,] -0.1661491 1.2071487 -0.7712847 -0.7794419 -0.5961709 -0.0238919

Analisis Deskriptif

summary(numerical_data)  # Ringkasan statistik dasar
##       FOOD             NONFOOD              EXPEND              KAPITA        
##  Min.   :  114857   Min.   :    38208   Min.   :   182190   Min.   :  114515  
##  1st Qu.: 1295486   1st Qu.:   857667   1st Qu.:  2277443   1st Qu.:  656004  
##  Median : 1916079   Median :  1403417   Median :  3429452   Median :  997299  
##  Mean   : 2226646   Mean   :  2142186   Mean   :  4368832   Mean   : 1308460  
##  3rd Qu.: 2785714   3rd Qu.:  2393183   3rd Qu.:  5212515   3rd Qu.: 1543848  
##  Max.   :31272857   Max.   :193333898   Max.   :201254112   Max.   :94740858  
##    KALORI_KAP     PROTE_KAP         LEMAK_KAP         KARBO_KAP      
##  Min.   :1000   Min.   :  4.166   Min.   :  2.023   Min.   :  25.66  
##  1st Qu.:1737   1st Qu.: 47.371   1st Qu.: 38.230   1st Qu.: 254.84  
##  Median :2116   Median : 59.678   Median : 51.136   Median : 312.18  
##  Mean   :2217   Mean   : 64.088   Mean   : 55.374   Mean   : 327.74  
##  3rd Qu.:2580   3rd Qu.: 75.468   3rd Qu.: 67.453   3rd Qu.: 382.61  
##  Max.   :4500   Max.   :364.666   Max.   :293.561   Max.   :1042.51  
##       WERT              WEIND                WI1             WI2        
##  Min.   :   1.165   Min.   :    1.165   Min.   :    1   Min.   :     1  
##  1st Qu.:  67.080   1st Qu.:  212.398   1st Qu.: 7180   1st Qu.: 71016  
##  Median : 141.845   Median :  474.874   Median :15780   Median :156026  
##  Mean   : 222.376   Mean   :  798.704   Mean   :15840   Mean   :156601  
##  3rd Qu.: 296.702   3rd Qu.: 1011.605   3rd Qu.:24378   3rd Qu.:241034  
##  Max.   :2082.520   Max.   :22907.723   Max.   :32974   Max.   :326043

Histogram untuk semua variabel

par(mfrow = c(2, 3))  # Atur tata letak
for (i in 1:ncol(numerical_data)) {
  hist(numerical_data[, i], main = colnames(numerical_data)[i], xlab = colnames(numerical_data)[i], col = "lightblue", border = "white")
}

par(mfrow = c(1, 1))  # Reset tata letak

Analisis Multivariat

# Matriks Korelasi
cor_matrix <- cor(numerical_data, use = "complete.obs")
print(cor_matrix)
##                    FOOD      NONFOOD      EXPEND       KAPITA  KALORI_KAP
## FOOD        1.000000000  0.517740911  0.75149231  0.418066099  0.22673045
## NONFOOD     0.517740911  1.000000000  0.95351218  0.772343875  0.09027526
## EXPEND      0.751492312  0.953512180  1.00000000  0.742847268  0.14947867
## KAPITA      0.418066099  0.772343875  0.74284727  1.000000000  0.36941869
## KALORI_KAP  0.226730451  0.090275256  0.14947867  0.369418693  1.00000000
## PROTE_KAP   0.280159588  0.167384463  0.22776078  0.437974787  0.83481312
## LEMAK_KAP   0.288545449  0.180906755  0.24114224  0.424440809  0.78922621
## KARBO_KAP   0.118899224 -0.011625832  0.03291588  0.221677506  0.89088568
## WERT        0.006898129  0.049251759  0.04040995  0.067676337  0.04950710
## WEIND       0.162117768  0.099195877  0.13359858 -0.028682382 -0.09035877
## WI1        -0.062743941 -0.001850767 -0.02352813 -0.002901231  0.04840906
## WI2        -0.049602476 -0.009243051 -0.02459969  0.049321921  0.11802787
##              PROTE_KAP  LEMAK_KAP   KARBO_KAP         WERT       WEIND
## FOOD        0.28015959 0.28854545  0.11889922  0.006898129  0.16211777
## NONFOOD     0.16738446 0.18090675 -0.01162583  0.049251759  0.09919588
## EXPEND      0.22776078 0.24114224  0.03291588  0.040409953  0.13359858
## KAPITA      0.43797479 0.42444081  0.22167751  0.067676337 -0.02868238
## KALORI_KAP  0.83481312 0.78922621  0.89088568  0.049507095 -0.09035877
## PROTE_KAP   1.00000000 0.74300231  0.64739852  0.074086053 -0.05995368
## LEMAK_KAP   0.74300231 1.00000000  0.47167564  0.143053645  0.01260213
## KARBO_KAP   0.64739852 0.47167564  1.00000000 -0.019489270 -0.13283894
## WERT        0.07408605 0.14305364 -0.01948927  1.000000000  0.86173512
## WEIND      -0.05995368 0.01260213 -0.13283894  0.861735121  1.00000000
## WI1         0.06709029 0.05770996  0.02521902  0.064078593  0.03705646
## WI2         0.13551442 0.08989224  0.10985727  0.063472548  0.01386697
##                     WI1          WI2
## FOOD       -0.062743941 -0.049602476
## NONFOOD    -0.001850767 -0.009243051
## EXPEND     -0.023528129 -0.024599689
## KAPITA     -0.002901231  0.049321921
## KALORI_KAP  0.048409059  0.118027874
## PROTE_KAP   0.067090286  0.135514415
## LEMAK_KAP   0.057709962  0.089892241
## KARBO_KAP   0.025219020  0.109857269
## WERT        0.064078593  0.063472548
## WEIND       0.037056458  0.013866972
## WI1         1.000000000  0.065022178
## WI2         0.065022178  1.000000000
# Visualisasi Matriks Korelasi
ggcorrplot(cor_matrix, method = "circle", type = "lower", lab = TRUE, lab_size = 3, title = "Heatmap Korelasi")

Keterangan: - Heatmap ini menampilkan korelasi antar variabel.

Analisis Korelasi

Terdapat hubungan positif yang kuat antara pengeluaran makanan, variabel-variabel nutrisi (kalori, protein, lemak, karbohidrat), dan pengeluaran. Selain itu, ada pun korelasi positif yang kuat antara variabel-variabel nutrisi seperti kalori, protein, lemak, dan karbohidrat.

Aplikasi PCA

data.pca <- princomp(data_normalized)
summary(data.pca)
## Importance of components:
##                           Comp.1    Comp.2    Comp.3     Comp.4     Comp.5
## Standard deviation     2.0127811 1.5715277 1.3576726 1.02033047 0.96546043
## Proportion of Variance 0.3376083 0.2058089 0.1536067 0.08675644 0.07767638
## Cumulative Proportion  0.3376083 0.5434172 0.6970239 0.78378032 0.86145670
##                            Comp.6     Comp.7     Comp.8    Comp.9     Comp.10
## Standard deviation     0.79945260 0.71214679 0.47790838 0.4281391 0.299034884
## Proportion of Variance 0.05326053 0.04226288 0.01903309 0.0152753 0.007451844
## Cumulative Proportion  0.91471723 0.95698011 0.97601320 0.9912885 0.998740345
##                            Comp.11      Comp.12
## Standard deviation     0.122946413 1.365536e-07
## Proportion of Variance 0.001259655 1.553911e-15
## Cumulative Proportion  1.000000000 1.000000e+00

Kita melihat bahwa 12 komponen utama telah dihasilkan (Comp.1 hingga Comp.12), yang juga sesuai dengan jumlah variabel dalam data.Di bagian Proporsi Kumulatif, komponen utama pertama menjelaskan hampir 33,76% dari total varians. Yang kedua menjelaskan 20,58% dari total varians.Yang ketiga menjelaskan 15,36% dari total varians. Proporsi kumulatif Comp.1, Comp.2, dan Comp.3 menjelaskan hampir 69,7% dari total varians. Ini berarti bahwa ketiga komponen utama pertama dapat secara akurat mewakili data.

Visualisasi PCA

Scree Plot

fviz_eig(data.pca, addlabels = TRUE)

Plot ini menunjukkan nilai eigen dalam kurva ke bawah, dari tertinggi ke terendah. Tiga komponen pertama dapat dianggap sebagai yang paling signifikan karena mengandung hampir 69,7% dari total informasi data.

Biplot variabel

Biplot memungkinkan visualisasi kesamaan dan perbedaan antar sampel sekaligus menunjukkan pengaruh setiap variabel terhadap masing-masing komponen utama.

# Graph of the variables
fviz_pca_var(data.pca, col.var = "black")

Grafik biplot ini menunjukkan bagaimana variabel-variabel saling berhubungan dan berkontribusi terhadap dua dimensi utama (Dim1 dan Dim2).

  • Dim1 (33.8%) dipengaruhi kuat oleh variabel seperti FOOD, NONFOOD, EXPEND, KAPITA, serta asupan gizi seperti KALORI_KAP, LEMAK_KAP, dan PROTE_KAP, yang saling berkaitan positif.

  • Dim2 (20.6%) lebih mencerminkan pengaruh dari variabel seperti WEIND dan WERT, yang berkontribusi berbeda dibandingkan variabel lain.

Arah panah menunjukkan hubungan antar variabel:

  • Variabel yang panahnya dekat atau searah, seperti KALORI_KAP, LEMAK_KAP, dan PROTE_KAP, memiliki hubungan positif kuat.

  • Variabel dengan panah berlawanan arah, seperti FOOD dan WEIND, menunjukkan hubungan negatif.

Secara keseluruhan, grafik ini membantu memahami peran masing-masing variabel dalam membedakan data berdasarkan dua dimensi utama.

Kontribusi setiap variabel

Tujuan dari visualisasi ketiga adalah untuk menentukan seberapa banyak setiap variabel diwakili dalam komponen tertentu. Kualitas representasi seperti itu disebut Cos2 dan sesuai dengan kosinus kuadrat, dan dihitung menggunakan fungsi.fviz_cos2

  • Nilai rendah berarti bahwa variabel tidak diwakili dengan sempurna oleh komponen tersebut.

  • Nilai tinggi, di sisi lain, berarti representasi yang baik dari variabel pada komponen itu.

fviz_cos2(data.pca, choice = "var", axes = 1:2)

Diagram ini menunjukkan kontribusi masing-masing variabel terhadap dua dimensi utama (Dim1 dan Dim2).

  • Variabel dengan nilai Cos2 yang tinggi (mendekati 1), seperti KALORI_KAP, EXPEND, dan NONFOOD, memiliki kontribusi yang sangat baik dalam membentuk kedua dimensi utama. Artinya, variabel-variabel ini paling relevan dalam analisis PCA.

  • Variabel seperti FOOD, WEIND, WERT, W2, dan W1 memiliki nilai Cos2 yang rendah, sehingga kurang terwakili dengan baik dalam dua dimensi utama ini.

Secara keseluruhan, variabel dengan Cos2 tinggi adalah yang paling penting dalam analisis, sedangkan variabel dengan Cos2 rendah mungkin memiliki kontribusi yang lebih kecil terhadap dimensi utama atau lebih berpengaruh pada dimensi lainnya.

Biplot digabungkan dengan cos2

Biplot dan varibel penting dapat digabungkan untuk membuat satu biplot, di mana variabel dengan skor cos2 yang serupa akan memiliki warna yang serupa. Ini dicapai dengan menyempurnakan fungsi sebagai berikut: fviz_pca_var

fviz_pca_var(data.pca, col.var = "cos2",
            gradient.cols = c("black", "orange", "green"),
            repel = TRUE)

Dari biplot di atas:

  • Variabel cos2 tinggi diwarnai hijau: EXPEND, KALORI-KAP, NONFOOD, PROTE_KAP, KAPITA, LEMAK_KAP, KARBO_KAP.

  • VAriabel mid cos2 memiliki warna oranye: FOOD.

  • Variabel cos2 rendah memiliki warna hitam: WEIND, WERT, WI1, WI2.

Kesimpulan

Data Susenas yang dianalisis dengan Analisis Komponen Utama (PCA) membentuk 3 komponen utama dengan presentase 69,7% mewakili dari data asli. Dimensi utama pertama menggambarkan pola konsumsi dan pengeluaran masyarakat, sedangkan dimensi kedua mencerminkan faktor yang lebih spesifik seperti indikator-indikator tertentu (misalnya WEIND dan WERT). Analisis ini memberikan wawasan tentang variabel-variabel yang paling penting dan relevan dalam menjelaskan data.

Saran

Saran untuk penelitian ini adalah untuk memperbaiki kualitas data sebelum melanjutkan analisis lebih lanjut. Nilai KMO yang rendah (0,5) menunjukkan bahwa data yang digunakan mungkin kurang ideal untuk diterapkan dalam analisis PCA. Oleh karena itu, disarankan untuk melakukan pembersihan data lebih mendalam, seperti mengidentifikasi dan menghilangkan variabel yang tidak relevan atau mengandung noise tinggi. Dengan demikian, kualitas data akan meningkat, yang pada gilirannya dapat meningkatkan hasil dari analisis multivariat yang dilakukan. Pembersihan data yang lebih teliti juga dapat membantu memperoleh temuan yang lebih akurat dan dapat diandalkan.