Data
data <- read.csv('penduduk_pekerjaan_februari (1).csv')
str(data)
## 'data.frame': 51 obs. of 10 variables:
## $ Waktu : chr "Februari 2023" "Februari 2023" "Februari 2023" "Februari 2023" ...
## $ Sektor : chr "Pertanian Kehutanan dan Perikanan" "Pertambangan dan Penggalian" "Industri Pengolahan" "Pengadaan Listrik dan Gas" ...
## $ Tidak.belum.pernah.sekolah: int 2016794 13879 114699 0 23885 39515 177386 15858 53652 0 ...
## $ Tidak.belum.tamat.SD : int 10528874 186440 1322013 3430 99892 688755 1742856 311336 828104 2228 ...
## $ SD : int 17930218 422309 3731113 8992 143519 2878426 5254636 1009679 2465278 60785 ...
## $ SLTP : int 6282301 316722 3983215 22910 61610 2379327 6301936 1335026 2410897 89249 ...
## $ SMU : int 2700504 412868 4760634 169278 138037 1399559 6558742 1665395 2256812 441668 ...
## $ SMK : int 916784 209701 3743531 86345 55214 873263 3985056 992288 1617033 256446 ...
## $ Diploma : int 80287 32768 238284 14939 13711 68506 585292 198291 190213 61655 ...
## $ Univ : int 238810 102224 936508 51254 32736 278397 1632910 307298 324829 280451 ...
summary(data)
## Waktu Sektor Tidak.belum.pernah.sekolah
## Length:51 Length:51 Min. : 0
## Class :character Class :character 1st Qu.: 1865
## Mode :character Mode :character Median : 8884
## Mean : 122445
## 3rd Qu.: 37625
## Max. :2016794
## Tidak.belum.tamat.SD SD SLTP SMU
## Min. : 2228 Min. : 8992 Min. : 22910 Min. : 102005
## 1st Qu.: 23750 1st Qu.: 96048 1st Qu.: 101767 1st Qu.: 383339
## Median : 101770 Median : 211619 Median : 246583 Median :1074763
## Mean : 956959 Mean : 2048371 Mean :1510684 Mean :1684013
## 3rd Qu.: 720935 3rd Qu.: 2537445 3rd Qu.:2359234 3rd Qu.:1907586
## Max. :10528874 Max. :17930218 Max. :7456890 Max. :7124333
## SMK Diploma Univ
## Min. : 36569 Min. : 5064 Min. : 32736
## 1st Qu.: 235552 1st Qu.: 63341 1st Qu.: 243625
## Median : 402244 Median :128481 Median : 415564
## Mean :1011549 Mean :194817 Mean : 838048
## 3rd Qu.:1099429 3rd Qu.:252589 3rd Qu.: 834984
## Max. :4996922 Max. :794965 Max. :5388124
data_num <- data[, sapply(data, is.numeric)]
library(psych)
describe(data_num)
## vars n mean sd median trimmed
## Tidak.belum.pernah.sekolah 1 51 122444.8 404718.6 8884 22309.51
## Tidak.belum.tamat.SD 2 51 956958.5 2312940.9 101770 366273.37
## SD 3 51 2048370.8 3893538.3 211619 1097031.66
## SLTP 4 51 1510684.3 2141447.9 246583 1068617.15
## SMU 5 51 1684012.5 1896390.4 1074763 1325390.56
## SMK 6 51 1011549.3 1279231.5 402244 727405.24
## Diploma 7 51 194817.2 204284.2 128481 154849.49
## Univ 8 51 838048.1 1204726.9 415564 561347.41
## mad min max range skew kurtosis
## Tidak.belum.pernah.sekolah 12258.14 0 2016794 2016794 3.85 13.76
## Tidak.belum.tamat.SD 144110.20 2228 10528874 10526646 3.33 10.06
## SD 282330.04 8992 17930218 17921226 2.80 7.54
## SLTP 268767.21 22910 7456890 7433980 1.47 0.93
## SMU 1087211.34 102005 7124333 7022328 1.49 1.21
## SMK 468351.86 36569 4996922 4960353 1.81 2.20
## Diploma 154853.12 5064 794965 789901 1.59 1.75
## Univ 448108.44 32736 5388124 5355388 2.55 6.20
## se
## Tidak.belum.pernah.sekolah 56671.94
## Tidak.belum.tamat.SD 323876.51
## SD 545204.41
## SLTP 299862.68
## SMU 265547.78
## SMK 179128.24
## Diploma 28605.51
## Univ 168695.51
data_scaled <- scale(data_num)
summary(data_scaled)
## Tidak.belum.pernah.sekolah Tidak.belum.tamat.SD SD
## Min. :-0.3025 Min. :-0.4128 Min. :-0.5238
## 1st Qu.:-0.2979 1st Qu.:-0.4035 1st Qu.:-0.5014
## Median :-0.2806 Median :-0.3697 Median :-0.4717
## Mean : 0.0000 Mean : 0.0000 Mean : 0.0000
## 3rd Qu.:-0.2096 3rd Qu.:-0.1020 3rd Qu.: 0.1256
## Max. : 4.6807 Max. : 4.1384 Max. : 4.0790
## SLTP SMU SMK Diploma
## Min. :-0.6948 Min. :-0.8342 Min. :-0.7622 Min. :-0.9289
## 1st Qu.:-0.6579 1st Qu.:-0.6859 1st Qu.:-0.6066 1st Qu.:-0.6436
## Median :-0.5903 Median :-0.3213 Median :-0.4763 Median :-0.3247
## Mean : 0.0000 Mean : 0.0000 Mean : 0.0000 Mean : 0.0000
## 3rd Qu.: 0.3963 3rd Qu.: 0.1179 3rd Qu.: 0.0687 3rd Qu.: 0.2828
## Max. : 2.7767 Max. : 2.8688 Max. : 3.1154 Max. : 2.9378
## Univ
## Min. :-0.668460
## 1st Qu.:-0.493409
## Median :-0.350689
## Mean : 0.000000
## 3rd Qu.:-0.002543
## Max. : 3.776853
boxplot(data_scaled,
main = "Distribusi Jumlah Pekerja Berdasarkan Tingkat Pendidikan",
ylab = "Jumlah Pekerja Terstandarisasi",
col = "lightblue",
las = 2,
cex.axis = 0.8)

Pada tahap ini, kita melihat karakteristik dasar dari struktur data
tenaga kerja sektoral. Fokus utamanya adalah memahami sebaran data
melalui statistika deskriptif (seperti rata-rata, nilai
minimum/maksimum, skewness, dan kurtosis). Analisis ini penting untuk
mengidentifikasi adanya ketimpangan distribusi jumlah pekerja antar
jenjang pendidikan, serta melihat seberapa ekstrem variasi data sebelum
dilakukan pemodelan multivariat lebih lanjut.
a) Asumsi
cor_matrix <- cor(data_scaled)
cor_matrix
## Tidak.belum.pernah.sekolah Tidak.belum.tamat.SD
## Tidak.belum.pernah.sekolah 1.00000000 0.96722522
## Tidak.belum.tamat.SD 0.96722522 1.00000000
## SD 0.92604447 0.98247836
## SLTP 0.68662462 0.80459249
## SMU 0.40280202 0.54794766
## SMK 0.14564394 0.29398707
## Diploma -0.02115622 0.04591253
## Univ -0.07052882 -0.06285527
## SD SLTP SMU SMK
## Tidak.belum.pernah.sekolah 0.92604447 0.68662462 0.4028020 0.1456439
## Tidak.belum.tamat.SD 0.98247836 0.80459249 0.5479477 0.2939871
## SD 1.00000000 0.89100084 0.6610450 0.4390760
## SLTP 0.89100084 1.00000000 0.9077509 0.7728091
## SMU 0.66104504 0.90775091 1.0000000 0.9308142
## SMK 0.43907605 0.77280910 0.9308142 1.0000000
## Diploma 0.10536209 0.29342245 0.4756725 0.4826767
## Univ -0.05472388 0.00435518 0.1974445 0.1334251
## Diploma Univ
## Tidak.belum.pernah.sekolah -0.02115622 -0.07052882
## Tidak.belum.tamat.SD 0.04591253 -0.06285527
## SD 0.10536209 -0.05472388
## SLTP 0.29342245 0.00435518
## SMU 0.47567248 0.19744445
## SMK 0.48267667 0.13342509
## Diploma 1.00000000 0.36690086
## Univ 0.36690086 1.00000000
KMO(data_scaled)
## Kaiser-Meyer-Olkin factor adequacy
## Call: KMO(r = data_scaled)
## Overall MSA = 0.65
## MSA for each item =
## Tidak.belum.pernah.sekolah Tidak.belum.tamat.SD
## 0.91 0.62
## SD SLTP
## 0.63 0.69
## SMU SMK
## 0.59 0.65
## Diploma Univ
## 0.92 0.19
cortest.bartlett(cor_matrix, n = nrow(data_scaled))
## $chisq
## [1] 750.8065
##
## $p.value
## [1] 4.507152e-140
##
## $df
## [1] 28
Karena rentang jumlah pekerja pada tiap jenjang sangat jauh berbeda
(misalnya, jutaan pekerja pada lulusan SD berbanding dengan hanya ribuan
pada lulusan Diploma), data wajib distandarisasi terlebih dahulu agar
skala analisisnya setara. Selanjutnya, dilakukan uji asumsi Matriks
Korelasi & Uji Bartlett yang mengonfirmasi adanya multikolinearitas,
sehingga reduksi dimensi menggunakan PCA sangat tepat dilakukan. Dan
menggunakan Uji KMO (Kaiser-Meyer-Olkin), variabel “Univ” dieliminasi
karena skor MSA-nya di bawah standar, menandakan pola sebarannya terlalu
unik dan tidak berkorelasi kuat dengan jenjang pendidikan lainnya.
Hapus kolom “Univ”
data_scaled <- data_scaled[, colnames(data_scaled) != "Univ"]
b) PCA
pca_result <- prcomp(data_scaled, scale. = FALSE)
cat("RINGKASAN PCA\n")
## RINGKASAN PCA
summary(pca_result)
## Importance of components:
## PC1 PC2 PC3 PC4 PC5 PC6 PC7
## Standard deviation 2.1432 1.3140 0.77175 0.19944 0.17050 0.11592 0.04902
## Proportion of Variance 0.6562 0.2467 0.08509 0.00568 0.00415 0.00192 0.00034
## Cumulative Proportion 0.6562 0.9028 0.98790 0.99358 0.99774 0.99966 1.00000
eigenvalues <- pca_result$sdev^2
cat("\nEIGENVALUES\n")
##
## EIGENVALUES
print(round(eigenvalues, 3))
## [1] 4.593 1.727 0.596 0.040 0.029 0.013 0.002
plot(1:length(eigenvalues), eigenvalues,
type = "b",
main = "Scree Plot PCA: Kualifikasi Pendidikan",
xlab = "Nomor Komponen Utama (PC)",
ylab = "Nilai Eigenvalue",
col = "blue", lwd = 2, pch = 19)
abline(h = 1, col = "red", lty = 2, lwd = 2)

PCA secara efektif mereduksi 7 variabel jenjang pendidikan menjadi 2
komponen utama saja (karena hanya PC1 dan PC2 yang memiliki Eigenvalue
> 1) dan berhasil menyelamatkan 90,28% informasi dari keseluruhan
data asli.
c) FA
fa_result <- fa(data_scaled,
nfactors = 2,
rotate = "varimax",
fm = "ml")
print(fa_result, cut = 0.3)
## Factor Analysis using method = ml
## Call: fa(r = data_scaled, nfactors = 2, rotate = "varimax", fm = "ml")
## Standardized loadings (pattern matrix) based upon correlation matrix
## ML1 ML2 h2 u2 com
## Tidak.belum.pernah.sekolah 0.98 0.96 0.0403 1.0
## Tidak.belum.tamat.SD 0.99 1.00 0.0050 1.0
## SD 0.95 1.00 0.0047 1.2
## SLTP 0.72 0.68 0.98 0.0160 2.0
## SMU 0.42 0.89 0.96 0.0385 1.4
## SMK 0.97 0.96 0.0367 1.1
## Diploma 0.50 0.25 0.7507 1.0
##
## ML1 ML2
## SS loadings 3.56 2.55
## Proportion Var 0.51 0.36
## Cumulative Var 0.51 0.87
## Proportion Explained 0.58 0.42
## Cumulative Proportion 0.58 1.00
##
## Mean item complexity = 1.2
## Test of the hypothesis that 2 factors are sufficient.
##
## df null model = 21 with the objective function = 15.55 with Chi Square = 728.3
## df of the model are 8 and the objective function was 0.88
##
## The root mean square of the residuals (RMSR) is 0.01
## The df corrected root mean square of the residuals is 0.02
##
## The harmonic n.obs is 51 with the empirical chi square 0.2 with prob < 1
## The total n.obs was 51 with Likelihood Chi Square = 40.07 with prob < 3.1e-06
##
## Tucker Lewis Index of factoring reliability = 0.877
## RMSEA index = 0.28 and the 90 % confidence intervals are 0.2 0.373
## BIC = 8.61
## Fit based upon off diagonal values = 1
## Measures of factor score adequacy
## ML1 ML2
## Correlation of (regression) scores with factors 1.00 0.99
## Multiple R square of scores with factors 1.00 0.98
## Minimum correlation of possible factor scores 0.99 0.97
Berdasarkan 2 komponen optimal tersebut, ekstraksi dilanjutkan
menggunakan Factor Analysis (FA) dengan rotasi Varimax untuk mempertegas
pengelompokannya. Hasil matriks loading FA secara nyata mengungkap dua
struktur laten pada sebaran tenaga kerja kita: Faktor 1 secara kuat
mengelompokkan pekerja berpendidikan dasar (Tidak Sekolah hingga SMP)
yang identik dengan pekerja operasional fisik, sedangkan Faktor 2
mengelompokkan pekerja berpendidikan menengah ke atas (SMU, SMK, dan
Diploma) yang merepresentasikan pekerja teknis dan administratif.