#Data Analisis Faktor Kesejahteraan Sosial
library(readxl)
Data_AF<- read_excel("Data_AF_Anisa Rahma.xlsx")
print(Data_AF)
## # A tibble: 23 × 6
##      RLS `Melek Huruf`   HLS Kemiskinan Pengangguran `Angka Harapan Hidup`
##    <dbl>         <dbl> <dbl>      <dbl>        <dbl>                 <dbl>
##  1  9.73          98.6  14.1       17.9         6                     65.5
##  2  8.69          97.5  14.3       24.3         6.88                  67.6
##  3  8.89          96.7  14.7       30.8         4.82                  64.6
##  4  9.92          98    14.3       28.4         5.09                  68.5
##  5  8.32          98.8  13.1       62.2         8.07                  68.9
##  6  9.87          99.4  14.6       31.5         4.44                  69.0
##  7  9.87          98.7  14.6       38.5         6.09                  68.2
##  8 10.4           98.8  14.8       58.2         8.28                  70.0
##  9  9.02          95.8  14.5       85.9         5.94                  67.2
## 10  9.31          99.2  14.9       60.3         4.2                   71.5
## # ℹ 13 more rows
#Data Frame
library(REdaS)
## Warning: package 'REdaS' was built under R version 4.4.3
## Loading required package: grid
X1 <- Data_AF$RLS
X2 <- Data_AF$`Melek Huruf`
X3 <- Data_AF$HLS
X4 <- Data_AF$Kemiskinan
X5 <- Data_AF$Pengangguran
X6 <- Data_AF$`Angka Harapan Hidup`
data_pen <- data.frame(X1,X2,X3,X4,X5,X6)
data_pen
##       X1    X2    X3     X4   X5    X6
## 1   9.73 98.59 14.08  17.86 6.00 65.48
## 2   8.69 97.47 14.34  24.33 6.88 67.65
## 3   8.89 96.70 14.69  30.78 4.82 64.64
## 4   9.92 98.00 14.26  28.42 5.09 68.48
## 5   8.32 98.77 13.06  62.16 8.07 68.94
## 6   9.87 99.38 14.61  31.50 4.44 69.05
## 7   9.87 98.69 14.63  38.46 6.09 68.19
## 8  10.35 98.82 14.75  58.18 8.28 69.99
## 9   9.02 95.81 14.49  85.87 5.94 67.15
## 10  9.31 99.23 14.86  60.29 4.20 71.48
## 11  8.73 98.88 14.73 107.02 7.08 69.01
## 12  8.68 96.78 13.66  24.00 4.12 65.30
## 13  8.41 95.68 14.08  18.09 2.70 65.77
## 14  9.04 98.05 13.96  38.25 7.38 69.87
## 15  8.95 97.78 14.16  29.63 5.84 69.45
## 16  8.72 95.52 14.01  12.13 3.12 67.40
## 17 10.01 99.15 13.71  27.93 2.61 69.48
## 18  9.53 97.46 14.98  30.41 4.40 70.41
## 19 13.03 99.61 17.81  19.90 8.62 71.79
## 20 11.19 99.34 14.40   5.13 4.01 70.79
## 21 11.14 99.39 15.64  19.41 7.85 69.63
## 22 11.12 99.42 15.27  23.03 9.15 71.87
## 23  8.22 98.07 14.81  14.06 5.75 64.30
#Uji barlett's testof sphericity
bart_spher(data_pen)
##  Bartlett's Test of Sphericity
## 
## Call: bart_spher(x = data_pen)
## 
##      X2 = 55.147
##      df = 15
## p-value < 2.22e-16

Karena p_value < 0.05 ini berarti terdapat korelasi signifikan antara variabel (uji Bartlett signifikan)

#Uji KMO dan MSA
KMOS(data_pen)
## 
## Kaiser-Meyer-Olkin Statistics
## 
## Call: KMOS(x = data_pen)
## 
## Measures of Sampling Adequacy (MSA):
##        X1        X2        X3        X4        X5        X6 
## 0.5959371 0.7606051 0.6253395 0.2569591 0.7459011 0.7082079 
## 
## KMO-Criterion: 0.6383229

Karena kmo_criterion > 0.5 ini berarti data ini cocok untuk analisis faktor karena > 0.5

Karena skala variabel atau skala pengukurannya berbeda maka menggunakan matriks korelasi. Agar skala pengukuran sama maka dilakukan standarisasi data terlebih dahulu.

#Standarisasi Data, karena skala pengukuran berbeda
z <- data.frame(scale(data_pen))
z
##             X1          X2          X3         X4           X5          X6
## 1   0.11393812  0.37431941 -0.53766202 -0.7038710  0.126047363 -1.35566868
## 2  -0.77963562 -0.50386529 -0.24930158 -0.4394085  0.584896039 -0.39018033
## 3  -0.60779452 -1.10761728  0.13887593 -0.1757634 -0.489226997 -1.72940611
## 4   0.27718717 -0.08829575 -0.33802787 -0.2722289 -0.348443881 -0.02089215
## 5  -1.09754167  0.51545624 -1.66892220  1.1069005  1.205384589  0.18377358
## 6   0.23422690  0.99375327  0.05014964 -0.1463332 -0.687366198  0.23271539
## 7   0.23422690  0.45272876  0.07233121  0.1381582  0.172975069 -0.14992055
## 8   0.64664555  0.55466092  0.20542065  0.9442172  1.314882568  0.65094537
## 9  -0.49609780 -1.80546049 -0.08293979  2.0760516  0.094762226 -0.61264308
## 10 -0.24692820  0.87613925  0.32741929  1.0304639 -0.812506745  1.31388437
## 11 -0.74526740  0.60170653  0.18323907  2.9405622  0.689179829  0.21491837
## 12 -0.78822768 -1.04488980 -1.00347504 -0.4528973 -0.854220261 -1.43575528
## 13 -1.02021317 -1.90739264 -0.53766202 -0.6944697 -1.594635170 -1.22664029
## 14 -0.47891369 -0.04909107 -0.67075145  0.1295744  0.845605514  0.59755430
## 15 -0.55624219 -0.26079631 -0.44893573 -0.2227699  0.042620332  0.41068559
## 16 -0.75385946 -2.03284760 -0.61529752 -0.9380859 -1.375639211 -0.50141170
## 17  0.35451567  0.81341177 -0.94802111 -0.2922577 -1.641562875  0.42403336
## 18 -0.05790298 -0.51170623  0.46050873 -0.1908872 -0.708222956  0.83781408
## 19  2.94931636  1.17409477  3.59920119 -0.6204856  1.492165011  1.45181128
## 20  1.36837819  0.96238953 -0.18275687 -1.2242124 -0.911576346  1.00688577
## 21  1.32541792  1.00159420  1.19250061 -0.6405145  1.090672420  0.49077218
## 22  1.30823381  1.02511701  0.78214152 -0.4925462  1.768517054  1.48740532
## 23 -1.18346222 -0.03340920  0.27196536 -0.8591968 -0.004307374 -1.88068079

Setelah dilakukan standarisasi, maka kita bisa lanjut mencari matriks korelasi.

#Mencari Korelasi
cor<- cor(z)
cor
##            X1         X2          X3          X4        X5        X6
## X1  1.0000000 0.62378740  0.74684256 -0.27400191 0.3677884 0.6401392
## X2  0.6237874 1.00000000  0.37221030  0.03200511 0.4585452 0.6365419
## X3  0.7468426 0.37221030  1.00000000 -0.09890932 0.4249885 0.4103263
## X4 -0.2740019 0.03200511 -0.09890932  1.00000000 0.2747883 0.1373920
## X5  0.3677884 0.45854522  0.42498847  0.27478833 1.0000000 0.3589229
## X6  0.6401392 0.63654185  0.41032628  0.13739205 0.3589229 1.0000000
#Menentukan Nilai Eigen dan Vektor Eigen
eig <- eigen(cor)
eig
## eigen() decomposition
## $values
## [1] 3.0416998 1.2854030 0.7257664 0.5215432 0.2979186 0.1276688
## 
## $vectors
##              [,1]        [,2]        [,3]       [,4]        [,5]        [,6]
## [1,] -0.508624092 -0.30921544 -0.01079228 -0.1389775 -0.02456661  0.79098205
## [2,] -0.458717286  0.08902052  0.43416161  0.4375046 -0.60273922 -0.19609358
## [3,] -0.437126328 -0.19682872 -0.55496996 -0.4348389 -0.26529719 -0.45024428
## [4,]  0.002521485  0.82409313 -0.01796085 -0.4285017 -0.28208948  0.23948569
## [5,] -0.365171264  0.40337433 -0.49644603  0.5602622  0.37801591  0.02628039
## [6,] -0.454361253  0.12601297  0.50657114 -0.3204414  0.58587440 -0.27409988
#Menentukan Faktor Loading
faktor_loading <- eig$vectors %*% diag(sqrt(eig$values))
faktor_loading
##              [,1]       [,2]         [,3]       [,4]        [,5]         [,6]
## [1,] -0.887064308 -0.3505749 -0.009194151 -0.1003667 -0.01340893  0.282624019
## [2,] -0.800024494  0.1009276  0.369870636  0.3159568 -0.32898667 -0.070065757
## [3,] -0.762368850 -0.2231558 -0.472789600 -0.3140317 -0.14480431 -0.160875774
## [4,]  0.004397589  0.9343207 -0.015301191 -0.3094551 -0.15396987  0.085570094
## [5,] -0.636875837  0.4573281 -0.422931937  0.4046099  0.20632836  0.009390188
## [6,] -0.792427367  0.1428680  0.431557712 -0.2314162  0.31978152 -0.097938011
#Menentukan Jumlah Faktor

#Dengan Nilai Eigen > 1
eig$values
## [1] 3.0416998 1.2854030 0.7257664 0.5215432 0.2979186 0.1276688
#Dengan Scree Plot
scree_plot <- function(z) {
  eigen.cor <- eigen(cor(z))
  eigen.values <- eigen.cor$values
  component.number <- 1:length(eigen.values)

  plot(component.number, eigen.values, type = "b", main = "Scree Plot",
       xlab = "Component Number", ylab = "Eigenvalue", col = "blue", pch = 19)
  
  cat("\nScree Plot:\nLihat grafik yang ditampilkan!\n")
}

scree_plot(data_pen)  # Jalankan fungsi

## 
## Scree Plot:
## Lihat grafik yang ditampilkan!

Untuk menentukan jumlah analisis faktor,bisa menggunakan nilai eigen > 1. Pada data diperoleh untuk nilai eigen > 1 ada dua yaitu 3.041 dan 1.285. Ini berarti jika dilihat menggunakan nilai eigen ada dua analisis faktor.

library(psych)
## Warning: package 'psych' was built under R version 4.4.3
# Analisis faktor dengan 2 faktor dan rotasi varimax
fa_result <- fa(z, nfactors = 2, rotate = "varimax", scores = TRUE)
## Warning in fac(r = r, nfactors = nfactors, n.obs = n.obs, rotate = rotate, : An
## ultra-Heywood case was detected.  Examine the results carefully
# Faktor Score
factor_scores <- fa_result$scores
print("Factor Scores:")
## [1] "Factor Scores:"
print(factor_scores)
##               MR1         MR2
##  [1,]  0.09107642 -0.82570050
##  [2,] -0.80605405  0.29292764
##  [3,] -0.82981165 -0.47166776
##  [4,]  0.22602126 -0.53880565
##  [5,] -0.43540977  1.47601665
##  [6,]  0.17095947 -0.05434180
##  [7,]  0.31138767 -0.01524784
##  [8,]  1.05268949  0.52491695
##  [9,] -0.17071300  0.61917343
## [10,] -0.14311429  1.20913234
## [11,] -0.04608855  2.30543311
## [12,] -0.94185381 -0.66910118
## [13,] -1.46210298 -0.78530387
## [14,] -0.24331351  0.66697671
## [15,] -0.55792043  0.35003860
## [16,] -1.20152927 -0.89303297
## [17,]  0.27406131 -0.64613700
## [18,] -0.30038299  0.05585471
## [19,]  2.63555572 -0.86309746
## [20,]  1.11816654 -1.35356942
## [21,]  1.26425794 -0.47424635
## [22,]  1.44163807 -0.02593118
## [23,] -1.44751959  0.11571285
# Faktor Loading
print("Factor Loadings:")
## [1] "Factor Loadings:"
print(fa_result$loadings)
## 
## Loadings:
##    MR1    MR2   
## X1  0.950 -0.352
## X2  0.722  0.134
## X3  0.677 -0.129
## X4         0.746
## X5  0.541  0.350
## X6  0.718  0.169
## 
##                  MR1   MR2
## SS loadings    2.690 0.866
## Proportion Var 0.448 0.144
## Cumulative Var 0.448 0.593
# Komunalitas
print("Communalities:")
## [1] "Communalities:"
print(fa_result$communality)
##        X1        X2        X3        X4        X5        X6 
## 1.0257396 0.5387761 0.4755225 0.5567027 0.4148333 0.5446518

Interpretasi Berdasarkan analisis faktor, Faktor 1 (mencakup variabel tentang pendidikan, kesejahteraan, dan ketenagakerjaan) terdiri dari variabel RLS,Melek Huruf, HLS, Pengangguran, Angka Harapan Hidup dengan SS Loadings 2.700, menjelaskan 44.8% varians. Faktor 2 (kemiskinan) hanya mencakup variabel kemiskinan, dengan SS Loadings 0.883, menjelaskan 14.7% varians. Secara kumulatif, kedua faktor ini menjelaskan 59.5% dari total varians, menunjukkan bahwa pendidikan dan ketenagakerjaan lebih dominan, meskipun kemiskinan tetap menjadi faktor penting dalam kondisi sosial ekonomi di Aceh.