Load Data
data <- read.csv("kelayakan-pendidikan-indonesia.csv")
# Cek struktur
str(data)
## 'data.frame': 39 obs. of 15 variables:
## $ Provinsi : chr "Prov. D.K.I. Jakarta" "Prov. Jawa Barat" "Prov. Jawa Tengah" "Prov. D.I. Yogyakarta" ...
## $ Sekolah : int 2224 19553 18618 1846 18980 3532 9751 4206 3815 2464 ...
## $ Siswa : int 756455 4487262 2595050 270610 2530849 489863 1524481 592365 776574 368620 ...
## $ Mengulang : int 1202 4778 6909 357 4694 1406 4896 4643 4446 2006 ...
## $ Putus.Sekolah : int 869 5675 2399 75 3327 905 4390 858 1388 835 ...
## $ Kepala.Sekolah.dan.Guru..S1. : int 1089 5007 2337 326 2950 2062 3279 1022 2214 1177 ...
## $ Kepala.Sekolah.dan.Guru...S1.: int 38305 209252 167535 19771 180465 47490 108599 47064 50310 26403 ...
## $ Tenaga.Kependidikan.SM. : int 6967 27487 21325 4536 21116 6024 12157 9043 7296 4562 ...
## $ Tenaga.Kependidikan..SM. : int 1569 3353 2473 866 3818 1096 2015 2167 1334 794 ...
## $ Rombongan.Belajar : int 27830 169704 127266 13719 134724 25829 74970 31481 35120 18911 ...
## $ Ruang.kelas.baik. : int 23320 59592 51050 8217 58679 10261 33726 12164 15935 6857 ...
## $ Ruang.kelas.rusak.ringan. : int 3886 46006 42356 3878 42896 7483 21203 9121 8745 5787 ...
## $ Ruang.kelas.rusak.sedang. : int 717 34432 26321 1827 24218 6076 14880 7904 6458 4701 ...
## $ Ruang.kelas.rusak.berat. : int 345 14397 13457 548 14389 3122 9371 3600 3719 2377 ...
## $ X : logi NA NA NA NA NA NA ...
# Lihat 6 baris pertama
head(data)
## Provinsi Sekolah Siswa Mengulang Putus.Sekolah
## 1 Prov. D.K.I. Jakarta 2224 756455 1202 869
## 2 Prov. Jawa Barat 19553 4487262 4778 5675
## 3 Prov. Jawa Tengah 18618 2595050 6909 2399
## 4 Prov. D.I. Yogyakarta 1846 270610 357 75
## 5 Prov. Jawa Timur 18980 2530849 4694 3327
## 6 Prov. Aceh 3532 489863 1406 905
## Kepala.Sekolah.dan.Guru..S1. Kepala.Sekolah.dan.Guru...S1.
## 1 1089 38305
## 2 5007 209252
## 3 2337 167535
## 4 326 19771
## 5 2950 180465
## 6 2062 47490
## Tenaga.Kependidikan.SM. Tenaga.Kependidikan..SM. Rombongan.Belajar
## 1 6967 1569 27830
## 2 27487 3353 169704
## 3 21325 2473 127266
## 4 4536 866 13719
## 5 21116 3818 134724
## 6 6024 1096 25829
## Ruang.kelas.baik. Ruang.kelas.rusak.ringan. Ruang.kelas.rusak.sedang.
## 1 23320 3886 717
## 2 59592 46006 34432
## 3 51050 42356 26321
## 4 8217 3878 1827
## 5 58679 42896 24218
## 6 10261 7483 6076
## Ruang.kelas.rusak.berat. X
## 1 345 NA
## 2 14397 NA
## 3 13457 NA
## 4 548 NA
## 5 14389 NA
## 6 3122 NA
Data Numerik
data_num <- data[, sapply(data, is.numeric)]
head(data_num)
## Sekolah Siswa Mengulang Putus.Sekolah Kepala.Sekolah.dan.Guru..S1.
## 1 2224 756455 1202 869 1089
## 2 19553 4487262 4778 5675 5007
## 3 18618 2595050 6909 2399 2337
## 4 1846 270610 357 75 326
## 5 18980 2530849 4694 3327 2950
## 6 3532 489863 1406 905 2062
## Kepala.Sekolah.dan.Guru...S1. Tenaga.Kependidikan.SM.
## 1 38305 6967
## 2 209252 27487
## 3 167535 21325
## 4 19771 4536
## 5 180465 21116
## 6 47490 6024
## Tenaga.Kependidikan..SM. Rombongan.Belajar Ruang.kelas.baik.
## 1 1569 27830 23320
## 2 3353 169704 59592
## 3 2473 127266 51050
## 4 866 13719 8217
## 5 3818 134724 58679
## 6 1096 25829 10261
## Ruang.kelas.rusak.ringan. Ruang.kelas.rusak.sedang. Ruang.kelas.rusak.berat.
## 1 3886 717 345
## 2 46006 34432 14397
## 3 42356 26321 13457
## 4 3878 1827 548
## 5 42896 24218 14389
## 6 7483 6076 3122
Cleaning Data
data_clean <- subset(data_num)
data_clean <- na.omit(data_clean)
head(data_clean)
## Sekolah Siswa Mengulang Putus.Sekolah Kepala.Sekolah.dan.Guru..S1.
## 1 2224 756455 1202 869 1089
## 2 19553 4487262 4778 5675 5007
## 3 18618 2595050 6909 2399 2337
## 4 1846 270610 357 75 326
## 5 18980 2530849 4694 3327 2950
## 6 3532 489863 1406 905 2062
## Kepala.Sekolah.dan.Guru...S1. Tenaga.Kependidikan.SM.
## 1 38305 6967
## 2 209252 27487
## 3 167535 21325
## 4 19771 4536
## 5 180465 21116
## 6 47490 6024
## Tenaga.Kependidikan..SM. Rombongan.Belajar Ruang.kelas.baik.
## 1 1569 27830 23320
## 2 3353 169704 59592
## 3 2473 127266 51050
## 4 866 13719 8217
## 5 3818 134724 58679
## 6 1096 25829 10261
## Ruang.kelas.rusak.ringan. Ruang.kelas.rusak.sedang. Ruang.kelas.rusak.berat.
## 1 3886 717 345
## 2 46006 34432 14397
## 3 42356 26321 13457
## 4 3878 1827 548
## 5 42896 24218 14389
## 6 7483 6076 3122
Statistika Deskriptif
deskriptif_table <- data.frame(
Mean = colMeans(data_clean),
SD = apply(data_clean, 2, sd),
Min = apply(data_clean, 2, min),
Max = apply(data_clean, 2, max)
)
deskriptif_table
## Mean SD Min Max
## Sekolah 3817.4872 4862.821 124 19553
## Siswa 617043.8718 865035.151 17789 4487262
## Mengulang 2840.8205 2312.422 56 9801
## Putus.Sekolah 1155.0513 1167.779 75 5675
## Kepala.Sekolah.dan.Guru..S1. 1311.9231 1016.535 76 5007
## Kepala.Sekolah.dan.Guru...S1. 40251.8462 48430.708 450 209252
## Tenaga.Kependidikan.SM. 5773.7949 6128.029 15 27487
## Tenaga.Kependidikan..SM. 907.3846 933.152 5 3818
## Rombongan.Belajar 29318.2051 37231.367 913 169704
## Ruang.kelas.baik. 12033.0000 14751.313 594 59592
## Ruang.kelas.rusak.ringan. 8254.8974 11249.082 169 46006
## Ruang.kelas.rusak.sedang. 6110.0000 7480.669 9 34432
## Ruang.kelas.rusak.berat. 3102.8462 3753.431 5 14397
Boxplot
# Boxplot semua variabel
boxplot(data_clean,
las=2,
main="Boxplot Indikator Kelayakan Pendidikan",
col="lightblue")
Correlation Matrix
data_num <- data[, sapply(data, is.numeric)]
cor_matrix <- cor(data_num, use = "complete.obs")
corrplot::corrplot(cor_matrix, tl.col = "black", tl.srt = 45, tl.cex = 0.5)
cor_matrix <- cor(data_clean)
cor_matrix
## Sekolah Siswa Mengulang Putus.Sekolah
## Sekolah 1.0000000 0.9491825 0.4997904 0.8390197
## Siswa 0.9491825 1.0000000 0.4301100 0.8794910
## Mengulang 0.4997904 0.4301100 1.0000000 0.5949705
## Putus.Sekolah 0.8390197 0.8794910 0.5949705 1.0000000
## Kepala.Sekolah.dan.Guru..S1. 0.8020612 0.8329825 0.5708334 0.9143727
## Kepala.Sekolah.dan.Guru...S1. 0.9901760 0.9691094 0.4791943 0.8702298
## Tenaga.Kependidikan.SM. 0.9545359 0.9472240 0.4637156 0.8305182
## Tenaga.Kependidikan..SM. 0.8797440 0.8551191 0.4179650 0.7560207
## Rombongan.Belajar 0.9896526 0.9828619 0.4801447 0.8726851
## Ruang.kelas.baik. 0.9722768 0.9555405 0.4388873 0.8385903
## Ruang.kelas.rusak.ringan. 0.9980559 0.9563858 0.4954332 0.8416510
## Ruang.kelas.rusak.sedang. 0.9791939 0.9571531 0.5253642 0.8714539
## Ruang.kelas.rusak.berat. 0.9795044 0.9140779 0.5701514 0.8766157
## Kepala.Sekolah.dan.Guru..S1.
## Sekolah 0.8020612
## Siswa 0.8329825
## Mengulang 0.5708334
## Putus.Sekolah 0.9143727
## Kepala.Sekolah.dan.Guru..S1. 1.0000000
## Kepala.Sekolah.dan.Guru...S1. 0.8385191
## Tenaga.Kependidikan.SM. 0.8117900
## Tenaga.Kependidikan..SM. 0.7158143
## Rombongan.Belajar 0.8330831
## Ruang.kelas.baik. 0.7891396
## Ruang.kelas.rusak.ringan. 0.7994672
## Ruang.kelas.rusak.sedang. 0.8517316
## Ruang.kelas.rusak.berat. 0.8466676
## Kepala.Sekolah.dan.Guru...S1.
## Sekolah 0.9901760
## Siswa 0.9691094
## Mengulang 0.4791943
## Putus.Sekolah 0.8702298
## Kepala.Sekolah.dan.Guru..S1. 0.8385191
## Kepala.Sekolah.dan.Guru...S1. 1.0000000
## Tenaga.Kependidikan.SM. 0.9710424
## Tenaga.Kependidikan..SM. 0.9099820
## Rombongan.Belajar 0.9958449
## Ruang.kelas.baik. 0.9816425
## Ruang.kelas.rusak.ringan. 0.9902833
## Ruang.kelas.rusak.sedang. 0.9802397
## Ruang.kelas.rusak.berat. 0.9693666
## Tenaga.Kependidikan.SM. Tenaga.Kependidikan..SM.
## Sekolah 0.9545359 0.8797440
## Siswa 0.9472240 0.8551191
## Mengulang 0.4637156 0.4179650
## Putus.Sekolah 0.8305182 0.7560207
## Kepala.Sekolah.dan.Guru..S1. 0.8117900 0.7158143
## Kepala.Sekolah.dan.Guru...S1. 0.9710424 0.9099820
## Tenaga.Kependidikan.SM. 1.0000000 0.9436006
## Tenaga.Kependidikan..SM. 0.9436006 1.0000000
## Rombongan.Belajar 0.9664659 0.8910603
## Ruang.kelas.baik. 0.9530706 0.9105711
## Ruang.kelas.rusak.ringan. 0.9533017 0.8742349
## Ruang.kelas.rusak.sedang. 0.9546413 0.8627490
## Ruang.kelas.rusak.berat. 0.9354582 0.8584940
## Rombongan.Belajar Ruang.kelas.baik.
## Sekolah 0.9896526 0.9722768
## Siswa 0.9828619 0.9555405
## Mengulang 0.4801447 0.4388873
## Putus.Sekolah 0.8726851 0.8385903
## Kepala.Sekolah.dan.Guru..S1. 0.8330831 0.7891396
## Kepala.Sekolah.dan.Guru...S1. 0.9958449 0.9816425
## Tenaga.Kependidikan.SM. 0.9664659 0.9530706
## Tenaga.Kependidikan..SM. 0.8910603 0.9105711
## Rombongan.Belajar 1.0000000 0.9815397
## Ruang.kelas.baik. 0.9815397 1.0000000
## Ruang.kelas.rusak.ringan. 0.9913384 0.9715240
## Ruang.kelas.rusak.sedang. 0.9804983 0.9323891
## Ruang.kelas.rusak.berat. 0.9644656 0.9371655
## Ruang.kelas.rusak.ringan.
## Sekolah 0.9980559
## Siswa 0.9563858
## Mengulang 0.4954332
## Putus.Sekolah 0.8416510
## Kepala.Sekolah.dan.Guru..S1. 0.7994672
## Kepala.Sekolah.dan.Guru...S1. 0.9902833
## Tenaga.Kependidikan.SM. 0.9533017
## Tenaga.Kependidikan..SM. 0.8742349
## Rombongan.Belajar 0.9913384
## Ruang.kelas.baik. 0.9715240
## Ruang.kelas.rusak.ringan. 1.0000000
## Ruang.kelas.rusak.sedang. 0.9787677
## Ruang.kelas.rusak.berat. 0.9738711
## Ruang.kelas.rusak.sedang.
## Sekolah 0.9791939
## Siswa 0.9571531
## Mengulang 0.5253642
## Putus.Sekolah 0.8714539
## Kepala.Sekolah.dan.Guru..S1. 0.8517316
## Kepala.Sekolah.dan.Guru...S1. 0.9802397
## Tenaga.Kependidikan.SM. 0.9546413
## Tenaga.Kependidikan..SM. 0.8627490
## Rombongan.Belajar 0.9804983
## Ruang.kelas.baik. 0.9323891
## Ruang.kelas.rusak.ringan. 0.9787677
## Ruang.kelas.rusak.sedang. 1.0000000
## Ruang.kelas.rusak.berat. 0.9725283
## Ruang.kelas.rusak.berat.
## Sekolah 0.9795044
## Siswa 0.9140779
## Mengulang 0.5701514
## Putus.Sekolah 0.8766157
## Kepala.Sekolah.dan.Guru..S1. 0.8466676
## Kepala.Sekolah.dan.Guru...S1. 0.9693666
## Tenaga.Kependidikan.SM. 0.9354582
## Tenaga.Kependidikan..SM. 0.8584940
## Rombongan.Belajar 0.9644656
## Ruang.kelas.baik. 0.9371655
## Ruang.kelas.rusak.ringan. 0.9738711
## Ruang.kelas.rusak.sedang. 0.9725283
## Ruang.kelas.rusak.berat. 1.0000000
Bartlett Test
cortest.bartlett(cor_matrix, n = nrow(data_num))
## $chisq
## [1] 1470.663
##
## $p.value
## [1] 7.594455e-256
##
## $df
## [1] 78
KMO
KMO(cor_matrix)
## Kaiser-Meyer-Olkin factor adequacy
## Call: KMO(r = cor_matrix)
## Overall MSA = 0.87
## MSA for each item =
## Sekolah Siswa
## 0.87 0.80
## Mengulang Putus.Sekolah
## 0.81 0.89
## Kepala.Sekolah.dan.Guru..S1. Kepala.Sekolah.dan.Guru...S1.
## 0.90 0.89
## Tenaga.Kependidikan.SM. Tenaga.Kependidikan..SM.
## 0.88 0.85
## Rombongan.Belajar Ruang.kelas.baik.
## 0.83 0.86
## Ruang.kelas.rusak.ringan. Ruang.kelas.rusak.sedang.
## 0.90 0.87
## Ruang.kelas.rusak.berat.
## 0.91
data_std <- scale(data_clean)
PCA
pca <- prcomp(data_std)
summary(pca)
## Importance of components:
## PC1 PC2 PC3 PC4 PC5 PC6 PC7
## Standard deviation 3.3703 0.91305 0.5935 0.44693 0.31511 0.26374 0.23053
## Proportion of Variance 0.8738 0.06413 0.0271 0.01537 0.00764 0.00535 0.00409
## Cumulative Proportion 0.8738 0.93789 0.9650 0.98036 0.98799 0.99334 0.99743
## PC8 PC9 PC10 PC11 PC12 PC13
## Standard deviation 0.13926 0.08705 0.05996 0.04401 0.02595 0.01446
## Proportion of Variance 0.00149 0.00058 0.00028 0.00015 0.00005 0.00002
## Cumulative Proportion 0.99892 0.99951 0.99978 0.99993 0.99998 1.00000
Eigen Value
eigenvalue <- eigen(cor(data_std))$values
eigenvalue
## [1] 1.135893e+01 8.336614e-01 3.522737e-01 1.997471e-01 9.929471e-02
## [6] 6.955900e-02 5.314404e-02 1.939452e-02 7.577404e-03 3.595004e-03
## [11] 1.936844e-03 6.732783e-04 2.092071e-04
Scree Plot
plot(eigenvalue, type="b",
main="Scree Plot",
xlab="Komponen",
ylab="Eigenvalue")
abline(h=1, col="red", lty=2)
FA
fa_result <- fa(data_std,
nfactors = 1,
rotate = "none",
fm = "ml")
print(fa_result)
## Factor Analysis using method = ml
## Call: fa(r = data_std, nfactors = 1, rotate = "none", fm = "ml")
## Standardized loadings (pattern matrix) based upon correlation matrix
## ML1 h2 u2 com
## Sekolah 0.99 0.99 0.0130 1
## Siswa 0.97 0.95 0.0548 1
## Mengulang 0.49 0.24 0.7601 1
## Putus.Sekolah 0.87 0.75 0.2455 1
## Kepala.Sekolah.dan.Guru..S1. 0.83 0.69 0.3071 1
## Kepala.Sekolah.dan.Guru...S1. 1.00 1.00 0.0046 1
## Tenaga.Kependidikan.SM. 0.97 0.94 0.0618 1
## Tenaga.Kependidikan..SM. 0.90 0.81 0.1938 1
## Rombongan.Belajar 1.00 1.00 0.0044 1
## Ruang.kelas.baik. 0.98 0.96 0.0392 1
## Ruang.kelas.rusak.ringan. 0.99 0.99 0.0120 1
## Ruang.kelas.rusak.sedang. 0.98 0.97 0.0342 1
## Ruang.kelas.rusak.berat. 0.97 0.95 0.0546 1
##
## ML1
## SS loadings 11.21
## Proportion Var 0.86
##
## Mean item complexity = 1
## Test of the hypothesis that 1 factor is sufficient.
##
## df null model = 78 with the objective function = 44.79 with Chi Square = 1470.66
## df of the model are 65 and the objective function was 12
##
## The root mean square of the residuals (RMSR) is 0.04
## The df corrected root mean square of the residuals is 0.04
##
## The harmonic n.obs is 39 with the empirical chi square 5.07 with prob < 1
## The total n.obs was 39 with Likelihood Chi Square = 386.08 with prob < 3.7e-47
##
## Tucker Lewis Index of factoring reliability = 0.717
## RMSEA index = 0.355 and the 90 % confidence intervals are 0.326 0.396
## BIC = 147.95
## Fit based upon off diagonal values = 1
## Measures of factor score adequacy
## ML1
## Correlation of (regression) scores with factors 1
## Multiple R square of scores with factors 1
## Minimum correlation of possible factor scores 1
Visualisasi Barplot Factor Loading
barplot(fa_result$loadings[,1],
main="Factor Loading",
ylab="Loading",
las=2)