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.