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
data <- read.dbf("C:/Users/LENOVO/Downloads/blok43.dbf")
View(data)
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
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
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
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
# 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.
Warna merah menunjukkan korelasi positif yang kuat, sementara warna biru menunjukkan korelasi negatif yang kuat.
Warna putih menunjukkan tidak ada korelasi.
Analisis Korelasi
FOOD memiliki korelasi positif yang kuat dengan EXPEND, ΚΑΡΙΤΑ, KALORI_KAP, PROTE_KAP, LEMAK_KAP, dan KARBO_KAP. Ini berarti semakin tinggi pengeluaran makanan, semakin tinggi pula variabel-variabel lainnya seperti kalori, protein, lemak, dan karbohidrat.
EXPEND memiliki korelasi positif yang kuat dengan ΚΑΡΙΤΑ, KALORI_KAP, PROTE_KAP, LEMAK_KAP, dan KARBO_KAP. Ini berarti semakin tinggi pengeluaran, semakin tinggi pula variabel-variabel lainnya.
ΚΑΡΙΤΑ memiliki korelasi positif yang kuat dengan KALORI_KAP, PROTE_KAP, LEMAK_KAP, dan KARBO_KAP.
KALORI_KAP memiliki korelasi positif yang kuat dengan PROTE_KAP, LEMAK_KAP, dan KARBO_KAP.
WEIND dan WI1 memiliki korelasi positif yang kuat dengan W12.
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.
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.
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 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.
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 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.
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 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.