Dataset World Happiness Report 2020 merupakan Kumpulan data komprehensif yang merinci skor dan faktor kebahagiaan di berbagai negara pada tahun 2020.
sumber dataset : https://opendata.datahub.io/@datopian/world-happiness-dataset-2020/r/8424ba0c-cdf1-482b-bd55-426cc70a17ff
#load dataset
data <- read.csv("D:/coding/coding sem 4/Analisis Multivariat/tugas harian/tugas 2/World_happiness_dataset_2020-TN1Hm9.csv")
PCA dan FA tidak menggunakan fitur kategorik dan juga fitur yang menjadi suatu target.jika didalam dataset ini terdapat 2 fitur kategorik dan 1 fitur target berupa rating kebahagiaan
# hapus kolom numerik
data <- data[, !(names(data) %in% c("Country.name", "Regional.indicator","Ladder.score"))]
Varians konstan adalah kondisi ketika suatu variabel memiliki nilai yang sama atau hampir sama pada seluruh observasi, sehingga tidak menunjukkan variasi,sehingga perlu dirop.
# hapus variance konstan
var_kolom <- apply(data, 2, var)
data <- data[, var_kolom != 0]
PCA dan FA harus menangani missing value terlebih dahulu sebelum analisis dilakukan
#cek misval
sum(is.na(data))
## [1] 0
sebelum melakukan asumsi,harus dilakukan korelasi untuk mengetahui apakah terdapat fitur yang berkorelasi sempurna maupun fitur yang berkorelasi tinggi
# korelasi
cor_matrix <- cor(data)
library(corrplot)
corrplot(cor_matrix,
method = "color",
type = "upper",
addCoef.col = "black",
tl.col = "black",
tl.srt = 45)
analisis atau cek fitur yang memiliki korelasi sempurna (1 atau -1)
high_cor <- which(abs(cor_matrix) > 0.99 & upper.tri(cor_matrix), arr.ind = TRUE)
data.frame(
fitur1 = rownames(cor_matrix)[high_cor[,1]],
fitur2 = colnames(cor_matrix)[high_cor[,2]],
korelasi = cor_matrix[high_cor]
)
## fitur1 fitur2
## 1 upperwhisker lowerwhisker
## 2 Logged.GDP.per.capita Explained.by..Log.GDP.per.capita
## 3 Social.support Explained.by..Social.support
## 4 Healthy.life.expectancy Explained.by..Healthy.life.expectancy
## 5 Freedom.to.make.life.choices Explained.by..Freedom.to.make.life.choices
## 6 Generosity Explained.by..Generosity
## 7 Perceptions.of.corruption Explained.by..Perceptions.of.corruption
## korelasi
## 1 0.9983566
## 2 1.0000000
## 3 1.0000000
## 4 1.0000000
## 5 1.0000000
## 6 1.0000000
## 7 -1.0000000
karena fitur yang memiliki korelasi sempurna dapat memengaruhi hasil overall MSA paadauji KMO paka sebaiknya dihapus salah satu fitur jika terdapat korelasi sempurna
# hapus korelasi > 90%
fitur_hapus <- colnames(cor_matrix)[high_cor[,2]]
data <- data[, !(names(data) %in% fitur_hapus)]
dapat dilihat data berkurang dari 20 menjadi 9 fitur,yang selanjutnya dilaukan asumsi
str(data)
## 'data.frame': 153 obs. of 9 variables:
## $ Standard.error.of.ladder.score: num 0.0312 0.0335 0.035 0.0596 0.0348 ...
## $ upperwhisker : num 7.87 7.71 7.63 7.62 7.56 ...
## $ Logged.GDP.per.capita : num 10.6 10.8 11 10.8 11.1 ...
## $ Social.support : num 0.954 0.956 0.943 0.975 0.952 ...
## $ Healthy.life.expectancy : num 71.9 72.4 74.1 73 73.2 ...
## $ Freedom.to.make.life.choices : num 0.949 0.951 0.921 0.949 0.956 ...
## $ Generosity : num -0.0595 0.0662 0.1059 0.2469 0.1345 ...
## $ Perceptions.of.corruption : num 0.195 0.168 0.304 0.712 0.263 ...
## $ Dystopia...residual : num 2.76 2.43 2.35 2.46 2.17 ...
cek kembali apakah terdapat korelasi yang tinggi jiak iya maka layak dilakukan PCA atau FA
# korelasi
cor_matrix <- cor(data)
library(corrplot)
corrplot(cor_matrix,
method = "color",
type = "upper",
addCoef.col = "black",
tl.col = "black",
tl.srt = 45)
cek multikolinearitas bersifat opsional
#cek vif
library(car)
model <- lm(data = data)
vif(model)
## upperwhisker Logged.GDP.per.capita
## 1578.77360 180.74659
## Social.support Healthy.life.expectancy
## 107.11613 82.15446
## Freedom.to.make.life.choices Generosity
## 27.87922 15.05721
## Perceptions.of.corruption Dystopia...residual
## 16.80917 424.61115
jika outlier cukup ekstrem maka sebaiknya ditangani dahulu,jika tidak terlalu ekstrem bisa diabaikan
#cek outlier
boxplot(data, las=2)
df_scaled <- scale(data)
which(abs(df_scaled) > 3, arr.ind = TRUE)
## row col
## [1,] 42 1
## [2,] 60 1
## [3,] 131 1
## [4,] 149 1
## [5,] 149 4
## [6,] 153 6
## [7,] 84 7
## [8,] 133 7
## [9,] 1 8
## [10,] 2 8
## [11,] 31 8
## [12,] 150 8
## [13,] 147 9
Kaiser-Meyer-Olkin (KMO) Test adalah uji statistik yang digunakan untuk mengukur kelayakan data sebelum dilakukan Factor Analysis (FA) atau PCA berbasis korelasi
#cek kamo
library(psych)
KMO(data)
## Kaiser-Meyer-Olkin factor adequacy
## Call: KMO(r = data)
## Overall MSA = 0.16
## MSA for each item =
## Standard.error.of.ladder.score upperwhisker
## 0.14 0.25
## Logged.GDP.per.capita Social.support
## 0.24 0.22
## Healthy.life.expectancy Freedom.to.make.life.choices
## 0.24 0.14
## Generosity Perceptions.of.corruption
## 0.02 0.09
## Dystopia...residual
## 0.03
karena overall MSA belum memenuhi syarat kelayakan untuk dilakukan FA dimana belum memenuhi ambang bats 50%.maka dilakukan drop fitur yang memiliki niali msa terendah dan dilakukan KMO ulang
data <- data[ , !(names(data) %in% "Generosity")]
KMO(data)
## Kaiser-Meyer-Olkin factor adequacy
## Call: KMO(r = data)
## Overall MSA = 0.34
## MSA for each item =
## Standard.error.of.ladder.score upperwhisker
## 0.61 0.37
## Logged.GDP.per.capita Social.support
## 0.43 0.39
## Healthy.life.expectancy Freedom.to.make.life.choices
## 0.46 0.28
## Perceptions.of.corruption Dystopia...residual
## 0.19 0.06
karena overall MSA belum juga memenuhi syarat kelayakan .maka dilakukan drop fitur lagi,yaitu fitur yang memiliki niali msa terendah dan dilakukan KMO ulang untuk yang kesekian kali
data <- data[ , !(names(data) %in% "Dystopia...residual")]
KMO(data)
## Kaiser-Meyer-Olkin factor adequacy
## Call: KMO(r = data)
## Overall MSA = 0.86
## MSA for each item =
## Standard.error.of.ladder.score upperwhisker
## 0.88 0.85
## Logged.GDP.per.capita Social.support
## 0.85 0.87
## Healthy.life.expectancy Freedom.to.make.life.choices
## 0.88 0.86
## Perceptions.of.corruption
## 0.76
tersisa 7 fitur yang akan digunakan untuk asumsi selanjutnya dan PCA dan FA
#cek fitur
str(data)
## 'data.frame': 153 obs. of 7 variables:
## $ Standard.error.of.ladder.score: num 0.0312 0.0335 0.035 0.0596 0.0348 ...
## $ upperwhisker : num 7.87 7.71 7.63 7.62 7.56 ...
## $ Logged.GDP.per.capita : num 10.6 10.8 11 10.8 11.1 ...
## $ Social.support : num 0.954 0.956 0.943 0.975 0.952 ...
## $ Healthy.life.expectancy : num 71.9 72.4 74.1 73 73.2 ...
## $ Freedom.to.make.life.choices : num 0.949 0.951 0.921 0.949 0.956 ...
## $ Perceptions.of.corruption : num 0.195 0.168 0.304 0.712 0.263 ...
Bartlett’s Test of Sphericity adalah uji statistik yang digunakan untuk mengetahui apakah terdapat korelasi yang signifikan antarvariabel dalam suatu dataset.
Secara khusus, uji ini menguji hipotesis nol bahwa matriks korelasi adalah matriks identitas, artinya tidak ada korelasi antarvariabel. Jika nilai p-value < 0,05, maka hipotesis nol ditolak dan dapat disimpulkan bahwa terdapat korelasi yang signifikan antarvariabel.
#cek bartlett test
cortest.bartlett(data)
## $chisq
## [1] 699.4342
##
## $p.value
## [1] 1.748644e-134
##
## $df
## [1] 21
dalam melakukan PCA dan FA maka data perlu dilakukan standarisasi
#standarisasi
df <- scale(data)
head(df)
## Standard.error.of.ladder.score upperwhisker Logged.GDP.per.capita
## [1,] -1.230938 2.089298 1.118155
## [2,] -1.102467 1.944770 1.230285
## [3,] -1.018769 1.869355 1.401668
## [4,] 0.334235 1.862809 1.229085
## [5,] -1.028492 1.803487 1.491442
## [6,] -1.415976 1.755248 1.262501
## Social.support Healthy.life.expectancy Freedom.to.make.life.choices
## [1,] 1.198886 1.056313 1.407737
## [2,] 1.212563 1.127394 1.427026
## [3,] 1.104339 1.368253 1.171414
## [4,] 1.366357 1.212051 1.405357
## [5,] 1.183710 1.240499 1.463584
## [6,] 1.073810 1.113001 1.062838
## Perceptions.of.corruption
## [1,] -3.0694079
## [2,] -3.2232856
## [3,] -2.4512522
## [4,] -0.1222252
## [5,] -2.6825114
## [6,] -2.1030884
Principal Component Analysis (PCA) adalah metode statistik yang digunakan untuk mereduksi dimensi data dengan mengubah sejumlah variabel yang saling berkorelasi menjadi beberapa komponen baru yang disebut principal components.
matriks kovarians dari data standar = matriks korelasi
r = cov(df)
Eigenvalue Menunjukkan berapa besar varians yang dijelaskan oleh masing-masing komponen utama.
Eigenvector menunjukkan arah atau bobot pembentuk komponen utama.
#Menghitung eigenvalue dan eigenvector
pc <- eigen(r)
print('eigen values:')
## [1] "eigen values:"
pc$values
## [1] 4.2720135 0.9544377 0.7103214 0.4964478 0.2384790 0.1842875 0.1440131
print('eigen vectors:')
## [1] "eigen vectors:"
pc$vectors
## [,1] [,2] [,3] [,4] [,5] [,6]
## [1,] 0.3263050 -0.18843070 -0.69661683 0.558978349 -0.0799252 -0.2307260
## [2,] -0.4291452 -0.04126034 -0.29222350 0.226666668 0.1137030 0.8139650
## [3,] -0.4355723 0.22798871 0.02748992 0.248897226 -0.2335920 -0.2848877
## [4,] -0.4154357 0.27407445 -0.22627570 -0.008973231 0.7135743 -0.3711232
## [5,] -0.4350721 0.18074581 0.04578129 0.200431489 -0.5814054 -0.1455882
## [6,] -0.3139738 -0.48494918 -0.44934941 -0.628655767 -0.2031962 -0.1517025
## [7,] 0.2432739 0.75355892 -0.41636909 -0.372497279 -0.1939309 0.1453392
## [,7]
## [1,] -0.02577997
## [2,] 0.04349983
## [3,] 0.74824207
## [4,] -0.23258205
## [5,] -0.61363378
## [6,] 0.06942239
## [7,] 0.04600728
library(dplyr)
#Menghitung proporsi varians dan kumulatif
sumvar <- sum(pc$values) #jumlah eigenval
propvar <- sapply(pc$values, function(x)x/sumvar)*100 #proporsi
cumvar <- data.frame(cbind(pc$values, propvar)) %>% mutate(cum = cumsum(propvar))#kumulatif
colnames(cumvar)[1] <- "eigen_value"
row.names(cumvar) <- paste0("PC",c(1:ncol(data))) #memberi nama pc1,dsb
print(cumvar)
## eigen_value propvar cum
## PC1 4.2720135 61.028764 61.02876
## PC2 0.9544377 13.634825 74.66359
## PC3 0.7103214 10.147449 84.81104
## PC4 0.4964478 7.092111 91.90315
## PC5 0.2384790 3.406842 95.30999
## PC6 0.1842875 2.632679 97.94267
## PC7 0.1440131 2.057330 100.00000
print('eigen vectors:')
## [1] "eigen vectors:"
pc$vectors
## [,1] [,2] [,3] [,4] [,5] [,6]
## [1,] 0.3263050 -0.18843070 -0.69661683 0.558978349 -0.0799252 -0.2307260
## [2,] -0.4291452 -0.04126034 -0.29222350 0.226666668 0.1137030 0.8139650
## [3,] -0.4355723 0.22798871 0.02748992 0.248897226 -0.2335920 -0.2848877
## [4,] -0.4154357 0.27407445 -0.22627570 -0.008973231 0.7135743 -0.3711232
## [5,] -0.4350721 0.18074581 0.04578129 0.200431489 -0.5814054 -0.1455882
## [6,] -0.3139738 -0.48494918 -0.44934941 -0.628655767 -0.2031962 -0.1517025
## [7,] 0.2432739 0.75355892 -0.41636909 -0.372497279 -0.1939309 0.1453392
## [,7]
## [1,] -0.02577997
## [2,] 0.04349983
## [3,] 0.74824207
## [4,] -0.23258205
## [5,] -0.61363378
## [6,] 0.06942239
## [7,] 0.04600728
print('PC result')
## [1] "PC result"
scores <- as.matrix(df) %*% pc$vectors
scores
## [,1] [,2] [,3] [,4] [,5]
## [1,] -3.93164232 -2.07548432 0.70020911 0.523137338 0.625305166
## [2,] -3.95663700 -2.17687892 0.71159290 0.649415284 0.566765601
## [3,] -3.76337102 -1.43086083 0.50896043 0.644121985 0.196423158
## [4,] -2.79165048 -0.03969664 -1.57769228 0.307697961 -0.093566778
## [5,] -3.90276428 -1.72313586 0.47864371 0.522252269 0.285135078
## [6,] -3.54087099 -1.12252187 0.71422687 0.249270038 0.328867130
## [7,] -3.55322700 -1.85421974 0.59026013 0.569573728 0.267242560
## [8,] -3.53177697 -1.98385060 0.51650875 0.699938716 0.420633203
## [9,] -3.15394145 -0.57819300 0.27382815 0.155261309 0.045125898
## [10,] -3.53400841 -1.06835266 0.73377320 0.454421899 -0.041476256
## [11,] -3.26632692 -1.25457504 0.15125515 0.419298640 0.026795159
## [12,] -3.22585955 -1.04314827 0.07839687 0.513629995 0.122898192
## [13,] -2.88759900 -0.64532610 0.53816511 0.681025531 0.335438503
## [14,] -1.98035247 1.07909611 -0.10281293 0.561458420 -0.096552008
## [15,] -1.99574480 0.08846080 -0.92456444 -0.589298578 -0.202359434
## [16,] -3.28379938 -1.10605046 0.44273272 0.754895074 0.236573336
## [17,] -2.85068483 -0.73460470 0.52168692 0.424054842 0.014036090
## [18,] -2.07430317 0.26814852 -0.42997375 0.303284876 0.098314218
## [19,] -1.77387667 1.04367561 -0.53689656 -0.107877459 -0.061680089
## [20,] -2.43889105 0.19075655 0.43465848 0.278307368 0.020417165
## [21,] -2.30836674 -0.65923662 -0.14239751 -0.228369621 -0.260904256
## [22,] -2.51408385 -0.13400990 -0.44615550 -0.190207213 -0.147265585
## [23,] -2.54300848 0.07869337 0.34858111 0.365385965 0.016358037
## [24,] -1.10155259 0.28756430 -0.53584991 -0.311393113 -0.325178798
## [25,] -1.74880718 0.76266615 0.25339516 0.266879525 -0.025507012
## [26,] -1.85099509 -0.32040650 -0.29546866 -0.172359782 0.221772002
## [27,] -1.45530088 -0.09514337 -0.59045642 0.374627495 -0.043369916
## [28,] -1.84831966 1.08250908 0.11299481 0.455732067 -0.225591984
## [29,] -0.45670037 -0.42696113 -1.05137587 -0.497023567 -0.106589141
## [30,] -1.29450184 1.80749373 0.20925177 0.704637198 -0.320799661
## [31,] -3.82001921 -2.14967875 1.42071673 0.894327703 -0.208068375
## [32,] -1.08841015 0.49469330 -0.04175952 -0.270687239 0.373928562
## [33,] -2.06104722 0.47367916 -0.81850807 -0.705488109 -0.216374087
## [34,] -0.31984520 -0.23528014 -0.65204285 -0.019453922 -0.116780613
## [35,] -0.27513289 0.46925556 -0.95169526 -0.720401976 -0.116061299
## [36,] -1.21816744 0.49730344 -1.23706790 -0.112585514 -0.258068946
## [37,] -1.26696872 1.62630312 -0.11772928 -0.168015196 0.094383650
## [38,] -1.37025669 -1.64452238 -0.64429754 -0.451667728 0.750219419
## [39,] -1.02726178 1.10333223 -0.08090750 0.196638928 -0.114385110
## [40,] -1.10772829 -0.28333910 -1.85180581 0.767757326 -0.463981424
## [41,] -1.20585012 1.08335338 -0.05558095 0.181034090 0.344847100
## [42,] 0.15939361 0.20008508 -3.44957242 1.431941428 0.008824301
## [43,] -1.73830800 0.09514950 0.25173088 -0.402128486 -0.139302609
## [44,] -0.71151085 0.58437539 -0.92737546 -0.197956131 -0.040412787
## [45,] -1.10199294 0.99051959 -0.25766995 0.300193755 -1.041249659
## [46,] -0.45460063 -0.71734019 -0.81572347 0.089574729 0.151231608
## [47,] -0.75928638 0.92174474 -0.63536354 -0.555541895 -0.521016255
## [48,] -1.37157966 0.21676354 -0.57789132 0.023235837 -0.436298804
## [49,] -1.07314136 0.21638384 -1.04879563 -0.290541080 0.093794618
## [50,] -1.17563424 0.54825597 -0.15274088 -0.252703577 0.588052416
## [51,] -1.98648239 -0.11026757 0.25324740 -0.377790072 0.284205595
## [52,] -0.48830417 -0.55938146 -0.59828589 -0.847612271 0.331737391
## [53,] -0.98227866 1.59694947 0.10301696 -0.046233996 0.266910744
## [54,] -1.11787121 0.59201814 -0.66639710 -1.041375955 -0.119561544
## [55,] -0.94358645 0.67051929 -0.70197595 -0.162192932 -0.070133670
## [56,] -0.01533229 -0.27704992 -1.12243285 -0.234537090 -0.207354524
## [57,] -0.96140306 1.38219431 0.70977315 0.222862099 0.530273399
## [58,] -0.62408435 0.12487461 -0.57488821 -0.377211950 -0.319308222
## [59,] -1.34490939 0.80293898 -0.95434526 -0.402351925 -0.697547594
## [60,] 0.58142976 -0.09849726 -3.55882834 1.452086220 -0.073110715
## [61,] -0.75960815 1.46982456 0.88241470 1.090903480 -0.732329247
## [62,] -1.91628845 0.34712575 0.40947549 0.289100237 -0.546296059
## [63,] -0.24038770 0.60159097 -0.94199633 -0.118125733 -0.449216199
## [64,] -0.48357555 1.06070929 -0.11926277 0.225100615 0.061784335
## [65,] -0.04688350 -0.09472888 -0.53155363 -0.833162522 -0.095036653
## [66,] 1.05502328 -0.28166067 0.46742975 -0.223471489 0.080032971
## [67,] -0.66066051 0.27493532 -0.78764517 -0.720804066 0.151922193
## [68,] -0.46238624 -0.15034167 -1.18007322 0.171022803 0.032912124
## [69,] 0.09369052 1.63646311 0.23823452 0.223762474 -0.131381227
## [70,] 0.20366587 1.13602119 0.13623943 -0.470595938 0.225561629
## [71,] -0.32982355 -0.77603159 0.87320115 -0.875084569 0.602093126
## [72,] -0.25562215 1.10639224 0.49891841 0.687364812 0.052733325
## [73,] -0.54609559 1.29158322 0.25339299 -0.257642426 0.433651522
## [74,] -0.14808774 0.20026767 -0.65978089 -1.548887762 0.371384213
## [75,] -0.67315588 0.69969664 1.24300205 0.617448195 0.777741977
## [76,] -1.26052989 -0.01175904 0.35311964 0.590751593 -0.795147281
## [77,] -0.12189785 1.98467536 0.92751930 1.223815596 -0.475948592
## [78,] -2.04968188 -0.54207828 1.08642992 1.143627983 -0.727732597
## [79,] -0.70770450 1.67775328 0.36135105 -0.188893877 -0.254253750
## [80,] -0.05137395 -0.23219514 -0.12420952 0.456988712 0.242387287
## [81,] -0.14902548 1.32724044 0.30109411 -0.258478455 0.972845022
## [82,] -0.73656035 0.32049241 -0.44441904 -0.710400916 -0.659905139
## [83,] -0.80188378 -0.06973553 -0.01334827 -1.612127208 -0.221217556
## [84,] 0.05470951 0.27938953 -0.40869391 -1.040681102 -0.131757506
## [85,] 2.48209132 -0.64448291 -0.46172546 0.098056421 0.478622562
## [86,] 3.03098961 -1.34737164 -0.17515436 0.344120888 -0.901264502
## [87,] -0.45438932 0.35460471 -1.27834058 0.160313032 -0.265265224
## [88,] 1.96330519 -0.58084846 -0.38271600 0.647647880 -0.342380830
## [89,] -0.71543754 -0.45213978 1.24541822 -0.190040129 0.141493240
## [90,] 0.04678278 1.11835035 0.12884057 -0.257253885 -0.334437434
## [91,] 1.40683787 -0.13956448 -0.34717826 -0.609224467 0.107577874
## [92,] 0.78909312 -0.39722205 -0.13022933 -0.327538510 0.102667132
## [93,] -0.12945802 1.20007712 1.25521248 0.643355555 0.045295182
## [94,] -1.02301425 0.09325573 0.73639123 -1.372291916 -0.675996554
## [95,] -0.72240953 1.10341691 0.22615335 -1.356696896 0.802344969
## [96,] -0.42663010 1.60000403 -0.08684919 -0.417518488 0.295068160
## [97,] 1.10771236 -0.12390403 0.26940423 -0.144287918 -1.440087771
## [98,] 2.12756742 -0.30528998 -0.53555752 -0.363964788 0.365704676
## [99,] 0.62877029 1.18658087 -0.08764184 0.867804490 0.444593992
## [100,] 0.71143541 1.50029552 1.71368818 1.391084796 0.335596563
## [101,] 1.54822396 0.19454541 0.43531817 -0.166611450 0.156409826
## [102,] 2.54426195 -0.68030533 -0.17527206 0.255922200 0.080858444
## [103,] 2.89373782 -1.35177024 -0.42460779 -0.035752538 0.149518227
## [104,] 0.31130808 -1.17483911 0.51667757 -1.246435791 0.041038642
## [105,] 0.66936530 0.52465238 -0.03851176 -0.224939761 -1.433966336
## [106,] 0.65641190 -0.71704759 -0.86932133 -1.418576466 -0.252886513
## [107,] 0.38600202 -1.08925139 0.61713932 -1.222794449 -0.655624143
## [108,] 0.96138230 0.68132304 -0.04904398 0.195865246 0.104491381
## [109,] 0.88707915 0.44652311 -0.37739653 -0.246931148 0.714329114
## [110,] 1.56639059 0.58985150 -0.30479583 1.176336888 -0.068084106
## [111,] 0.71841434 1.92722373 1.03966376 0.516912849 0.040970899
## [112,] 2.38611195 -0.38195502 0.35819315 0.063386175 0.749094727
## [113,] 2.28402254 -0.96762279 0.06463374 -0.035107613 0.483434821
## [114,] 2.46802719 -0.14862606 -0.17738240 -0.359806246 0.801456152
## [115,] 1.91511764 0.02354357 0.06167799 -0.903792561 0.747827024
## [116,] 0.74874749 0.35116892 0.29785088 0.316535032 -0.478439679
## [117,] 0.63417013 -0.64591825 1.02977746 -0.435154439 -1.044018077
## [118,] 0.79508327 0.36494698 0.91774641 0.829850549 -0.737863665
## [119,] 0.43383496 -0.03645214 0.24381908 0.242431316 -0.196916763
## [120,] 2.21745543 -1.66226179 -0.92298314 -0.445650475 0.497384548
## [121,] 1.69614501 -0.47410425 -0.58719577 -0.574279805 -0.359898465
## [122,] 1.08014958 0.39558870 -0.39433687 -0.369221649 0.668193306
## [123,] 0.72525687 1.48479906 0.26977439 -0.125072989 0.375784530
## [124,] 2.81297930 -0.39741654 -0.88936902 -0.003482398 0.271741870
## [125,] 1.30070577 0.77762705 0.39696984 0.171771600 0.485743070
## [126,] 2.28487622 -0.12162426 -0.36896404 -0.310784240 0.615600449
## [127,] 3.66888961 -0.24032718 0.20135280 0.530535144 0.717148221
## [128,] 1.30205451 1.23741893 1.08335812 0.466747183 -0.827761145
## [129,] 1.99722749 0.60371577 1.04646181 0.601133183 0.978771348
## [130,] 0.20991400 0.49191719 -0.19428314 -0.711820467 -0.497311875
## [131,] 3.85534304 -0.96443690 -1.59036326 0.909026480 0.359464537
## [132,] 2.08995061 -0.13937833 0.17731016 0.697555972 0.959344924
## [133,] 0.49823534 -0.99617957 0.50029291 -1.261132093 0.256785554
## [134,] 3.28063644 0.02581540 0.16750531 1.380935844 -0.104536713
## [135,] 3.22988714 -0.58721840 0.81742371 0.015307183 -0.302237807
## [136,] 1.62357396 -0.17046331 1.06761348 -1.068073697 0.419759632
## [137,] 2.83936436 0.46392826 1.03484230 0.321693684 0.149573357
## [138,] 0.89870263 0.54705111 1.31010473 -0.601831831 -0.209460851
## [139,] 3.25763274 -0.31137875 0.25841537 -0.784789865 0.281973459
## [140,] 4.61420326 -1.92497225 -0.27214503 1.553630420 -0.405949470
## [141,] 2.15411283 -0.49747793 0.05001500 -0.873769772 -0.007020910
## [142,] 4.06177024 -0.70168707 -0.04160439 1.918199157 -0.076336720
## [143,] 3.09054135 -0.24709574 -0.83237668 -0.250199940 1.080083082
## [144,] 1.25515914 -0.57682072 1.40855558 -2.000121914 -1.137898125
## [145,] 3.12704708 -1.38623957 0.19145227 -0.619778289 -0.859995719
## [146,] 2.35515223 0.64272487 0.93206929 -0.084627857 1.026598788
## [147,] 1.15262490 -0.09098090 0.03682830 -0.560454967 -0.151086411
## [148,] 2.00789785 -1.37075767 0.42790646 -0.537869136 -0.061118155
## [149,] 6.26860087 -1.40262531 -0.96976926 0.866703199 -1.165382122
## [150,] 1.48790879 -3.76587859 1.91662889 -0.364748994 -0.781741068
## [151,] 2.45626046 0.05558039 0.46580630 -0.613083003 0.528922313
## [152,] 5.27462862 -0.24164224 0.14782581 2.092533921 0.010107855
## [153,] 4.61745145 1.38167410 3.14787480 -0.346367144 -0.417887357
## [,6] [,7]
## [1,] 0.407693044 -0.011247351
## [2,] 0.187751349 0.010515252
## [3,] 0.214312017 0.028458891
## [4,] 0.174485970 0.022462770
## [5,] 0.048573529 0.162593682
## [6,] 0.368290235 0.101816755
## [7,] 0.114584799 0.039774381
## [8,] -0.003597393 -0.232800631
## [9,] 0.350093328 0.035411898
## [10,] 0.123790614 0.521218817
## [11,] 0.092952973 -0.066990198
## [12,] 0.053136712 -0.090317649
## [13,] 0.263984044 -0.074549622
## [14,] 0.671035110 -0.191512051
## [15,] 0.659323933 -0.367743845
## [16,] -0.100965000 0.268109421
## [17,] 0.276713484 0.112313300
## [18,] 0.265724610 0.570600547
## [19,] 0.543807619 0.125657226
## [20,] 0.310874203 0.070928573
## [21,] 0.195352166 0.949177004
## [22,] 0.013840733 -0.006614213
## [23,] -0.006300834 -0.202821923
## [24,] 0.470914399 0.030636245
## [25,] 0.186098786 0.360502250
## [26,] -0.009606101 -0.120392645
## [27,] -0.068368258 0.710042990
## [28,] 0.056642290 -0.312163995
## [29,] 0.569507045 -0.160778910
## [30,] 0.344763511 -0.195997055
## [31,] -0.866214857 0.022337292
## [32,] 0.447718430 -0.104429998
## [33,] -0.154760890 0.013863397
## [34,] 0.614497483 -0.316595504
## [35,] 0.699909009 0.100187297
## [36,] -0.045845933 -0.054350414
## [37,] 0.271032606 0.129938624
## [38,] -0.106833423 -0.546801629
## [39,] 0.280995574 -0.106338145
## [40,] -0.529046443 0.443514354
## [41,] 0.099701852 0.220933881
## [42,] -0.633154588 0.516456144
## [43,] 0.061672791 0.141836324
## [44,] 0.173132070 -0.211389828
## [45,] 0.202752600 -0.046976459
## [46,] 0.195010641 -0.817059527
## [47,] 0.341948064 0.355834239
## [48,] -0.210878055 0.928031300
## [49,] -0.159880694 0.148235981
## [50,] -0.043298703 0.316226359
## [51,] -0.326967750 0.119347599
## [52,] 0.274448857 0.062101356
## [53,] 0.127451884 0.145619136
## [54,] 0.071369494 0.025764824
## [55,] -0.090676492 -0.157185251
## [56,] 0.272838993 -0.735065947
## [57,] 0.168053404 0.126857721
## [58,] 0.144304489 -0.354709540
## [59,] -0.305910530 -0.116202485
## [60,] -0.724172596 -0.604293054
## [61,] 0.219898817 -0.079013856
## [62,] -0.418746001 -0.234375269
## [63,] 0.050935217 -0.191549663
## [64,] 0.031573369 -0.215364715
## [65,] 0.331117975 -0.099848411
## [66,] 0.982170222 0.251846821
## [67,] -0.189589578 -0.119551175
## [68,] -0.450291396 0.012551207
## [69,] 0.395996816 -0.239433414
## [70,] 0.460846289 -0.407417048
## [71,] 0.347826861 -0.789687837
## [72,] -0.015248263 -0.214883097
## [73,] -0.090367953 0.392614422
## [74,] 0.167097709 -0.704283605
## [75,] -0.109069187 -0.116246650
## [76,] -0.519518774 -0.151133118
## [77,] 0.142288167 -0.280737953
## [78,] -0.899361175 -0.195014673
## [79,] -0.063432317 -0.114970142
## [80,] -0.234412105 0.429386391
## [81,] -0.015822183 0.010999911
## [82,] -0.375829854 0.452440466
## [83,] -0.098992642 -0.556281440
## [84,] -0.036440051 0.335258624
## [85,] 0.743821533 0.867969107
## [86,] 1.237718067 0.453433093
## [87,] -0.926097175 -0.566388547
## [88,] 0.456725990 0.341626782
## [89,] -0.313117216 0.099731157
## [90,] -0.112466418 -0.140908206
## [91,] 0.400204948 0.211709189
## [92,] 0.099356130 -0.760165586
## [93,] -0.164291354 0.177738880
## [94,] -0.242402120 -0.060880984
## [95,] -0.442244489 0.271443104
## [96,] -0.533234221 -0.066704993
## [97,] 0.493149804 0.063582116
## [98,] 0.533778948 0.480501347
## [99,] -0.356726545 -0.631596593
## [100,] 0.095772888 -0.158000079
## [101,] 0.464469635 -0.201723265
## [102,] 0.609431194 0.148851934
## [103,] 0.729397106 -0.280657820
## [104,] -0.072178750 0.367231025
## [105,] -0.026339449 -0.015716437
## [106,] -0.249639921 -0.232788302
## [107,] 0.074257967 -0.357590175
## [108,] -0.286071917 0.640427009
## [109,] -0.435170174 0.653410354
## [110,] -0.322458012 0.614386123
## [111,] -0.089971950 -0.327195464
## [112,] 0.482210918 -0.143645027
## [113,] 0.355798046 -0.275340634
## [114,] 0.400270777 0.157956038
## [115,] 0.287300688 0.949095170
## [116,] -0.367118162 -0.293654890
## [117,] 0.004809489 0.271379708
## [118,] -0.267997980 0.285650387
## [119,] -0.631974874 -0.428022708
## [120,] -0.067435546 -0.367183150
## [121,] -0.085096490 -0.208351544
## [122,] -0.565342055 0.535952617
## [123,] -0.473541803 -0.378522118
## [124,] 0.173144326 -0.549717759
## [125,] -0.247005811 -0.502126661
## [126,] -0.048759696 -0.339138676
## [127,] 0.593810707 0.442180752
## [128,] -0.090984748 -0.085769499
## [129,] -0.063495578 -0.159306746
## [130,] -0.941063202 -0.192482856
## [131,] -0.043709466 -0.503671434
## [132,] -0.488240487 0.986171977
## [133,] -0.629384282 0.150946493
## [134,] 0.170267274 -0.157630113
## [135,] 0.583926052 -0.003555908
## [136,] 0.024219505 -0.533438793
## [137,] 0.362469293 -0.688905971
## [138,] -0.367832975 0.326269879
## [139,] 0.248610716 0.171058024
## [140,] 0.100821068 -0.440265899
## [141,] -0.546900606 0.292740815
## [142,] -0.275115322 -0.282751953
## [143,] -0.768735027 0.547589901
## [144,] -0.359146774 0.532083486
## [145,] -0.171009255 -0.375921044
## [146,] -0.663905318 -0.471658869
## [147,] -1.464610700 0.741104725
## [148,] -0.909617979 -0.092805399
## [149,] 0.665559504 0.743104762
## [150,] -0.908493459 -0.411356837
## [151,] -0.853915729 -0.150764423
## [152,] -0.626160906 0.127094519
## [153,] 0.470465198 0.276601152
Factor Analysis (FA) adalah metode statistik untuk mengidentifikasi faktor laten (variabel tersembunyi) yang mendasari korelasi antar beberapa variabel teramati. Tujuannya adalah menjelaskan hubungan antar variabel melalui sejumlah faktor yang jumlahnya lebih sedikit daripada variabel asli.
varcov = cov(df)
pc = eigen(varcov)
cat("eigen value:")
## eigen value:
pc$values
## [1] 4.2720135 0.9544377 0.7103214 0.4964478 0.2384790 0.1842875 0.1440131
cat("eigen vector:")
## eigen vector:
pc$vectors
## [,1] [,2] [,3] [,4] [,5] [,6]
## [1,] 0.3263050 -0.18843070 -0.69661683 0.558978349 -0.0799252 -0.2307260
## [2,] -0.4291452 -0.04126034 -0.29222350 0.226666668 0.1137030 0.8139650
## [3,] -0.4355723 0.22798871 0.02748992 0.248897226 -0.2335920 -0.2848877
## [4,] -0.4154357 0.27407445 -0.22627570 -0.008973231 0.7135743 -0.3711232
## [5,] -0.4350721 0.18074581 0.04578129 0.200431489 -0.5814054 -0.1455882
## [6,] -0.3139738 -0.48494918 -0.44934941 -0.628655767 -0.2031962 -0.1517025
## [7,] 0.2432739 0.75355892 -0.41636909 -0.372497279 -0.1939309 0.1453392
## [,7]
## [1,] -0.02577997
## [2,] 0.04349983
## [3,] 0.74824207
## [4,] -0.23258205
## [5,] -0.61363378
## [6,] 0.06942239
## [7,] 0.04600728
sp = sum(pc$values[1:3])
L1 = sqrt(pc$values[1])*pc$vectors[,1]
L2 = sqrt(pc$values[2])*pc$vectors[,2]
L3 = sqrt(pc$values[3])*pc$vectors[,3]
L = cbind(L1,L2,L3)
colnames(L) <- c("L1", "L2", "L3")
L
## L1 L2 L3
## [1,] 0.6744348 -0.18408799 -0.58711263
## [2,] -0.8869937 -0.04030942 -0.24628763
## [3,] -0.9002778 0.22273432 0.02316866
## [4,] -0.8586579 0.26775794 -0.19070645
## [5,] -0.8992439 0.17658021 0.03858473
## [6,] -0.6489477 -0.47377269 -0.37871424
## [7,] 0.5028191 0.73619186 -0.35091824
# Convert ke loadings object agar cutoff bekerja
L_loadings <- structure(L, class = "loadings")
cat("=== Factor Loading SEBELUM Rotasi ===\n")
## === Factor Loading SEBELUM Rotasi ===
print(L_loadings, cutoff = 0.3)
##
## Loadings:
## L1 L2 L3
## [1,] 0.674 -0.587
## [2,] -0.887
## [3,] -0.900
## [4,] -0.859
## [5,] -0.899
## [6,] -0.649 -0.474 -0.379
## [7,] 0.503 0.736 -0.351
##
## L1 L2 L3
## SS loadings 4.272 0.954 0.710
## Proportion Var 0.610 0.136 0.101
## Cumulative Var 0.610 0.747 0.848
karena terjadi croos- loading maka perlu dilakukan rotasi
# Setelah PCA, lakukan rotasi
library(psych)
pc_rotated <- varimax(L)
cat("\n=== Factor Loading SETELAH Rotasi ===\n")
##
## === Factor Loading SETELAH Rotasi ===
print(pc_rotated$loadings, cutoff = 0.3)
##
## Loadings:
## L1 L2 L3
## [1,] 0.303 -0.845
## [2,] -0.854 -0.307
## [3,] -0.786 0.479
## [4,] -0.871
## [5,] -0.767 0.476
## [6,] -0.626 -0.600
## [7,] 0.915
##
## L1 L2 L3
## SS loadings 3.183 1.359 1.395
## Proportion Var 0.455 0.194 0.199
## Cumulative Var 0.455 0.649 0.848
cat("\n=== SS Loadings & Variance ===\n")
##
## === SS Loadings & Variance ===
print(pc_rotated)
## $loadings
##
## Loadings:
## L1 L2 L3
## [1,] 0.303 0.169 -0.845
## [2,] -0.854 -0.307 0.161
## [3,] -0.786 -0.116 0.479
## [4,] -0.871 0.295
## [5,] -0.767 -0.161 0.476
## [6,] -0.626 -0.600 -0.193
## [7,] 0.915 -0.275
##
## L1 L2 L3
## SS loadings 3.183 1.359 1.395
## Proportion Var 0.455 0.194 0.199
## Cumulative Var 0.455 0.649 0.848
##
## $rotmat
## [,1] [,2] [,3]
## [1,] 0.8312141 0.3521366 -0.4302127
## [2,] -0.2232920 0.9201291 0.3217191
## [3,] 0.5091403 -0.1713544 0.8434535
berikut diagram FA sebelum rotasi
library(psych)
fa_norotate <- fa(df, nfactors = 3, rotate = "none", fm = "ml")
print(fa_norotate$loadings, cutoff = 0.3)
##
## Loadings:
## ML2 ML1 ML3
## Standard.error.of.ladder.score -0.438 -0.332 0.398
## upperwhisker 0.821 0.469
## Logged.GDP.per.capita 0.795 0.387
## Social.support 0.807
## Healthy.life.expectancy 0.769 0.404
## Freedom.to.make.life.choices 0.411 0.449
## Perceptions.of.corruption -0.995
##
## ML2 ML1 ML3
## SS loadings 2.915 1.905 0.416
## Proportion Var 0.416 0.272 0.059
## Cumulative Var 0.416 0.689 0.748
fa.diagram(fa_norotate)
berikut diagram FA setelah rotasi
library(psych)
# Lakukan FA dengan fungsi fa()
fa_result <- fa(df, nfactors = 3, rotate = "varimax")
# Buat diagram
fa.diagram(fa_result, simple = FALSE, cut = 0.3)
Berikut Plot elbow dari hasil PCA
eigen_values <- pc$values
plot(eigen_values,
type = "b",
pch = 19,
xlab = "Principal Component",
ylab = "Eigenvalue",
main = "Scree Plot PCA")
abline(h = 1, col = "red", lty = 2)