=========================================================

LIBRARY

=========================================================

library(psych) # MSA, PCA, FA library(dplyr) # data wrangling library(FactoMineR) # PCA library(factoextra) # visualisasi

=========================================================

IMPORT DATA

=========================================================

data <- read.csv(“dehydration_processed_features.csv”)

head(data) str(data)

cek missing value

sum(is.na(data))

=========================================================

AMBIL DATA NUMERIK

=========================================================

data_num <- data[, sapply(data, is.numeric)] head(data_num)

=========================================================

UJI ASUMSI PCA / FA

=========================================================

1. Korelasi antar variabel

cor(data_num)

2. Measure of Sampling Adequacy (KMO / MSA)

r <- cor(data_num) KMO(r)

Menghapus variabel temp_mean

data_num <- data_num[-8]

Cek ulang KMO setelah penghapusan variabel

r <- cor(data_num) KMO(r)

3. Bartlett Test of Sphericity

bartlett.test(data_num)

=========================================================

PRINCIPAL COMPONENT ANALYSIS (PCA)

=========================================================

—————–

PCA MANUAL

—————–

Standarisasi data

scale_data <- scale(data_num)

Matriks kovarians

r <- cov(scale_data)

Eigenvalue dan eigenvector

pc <- eigen(r)

cat(“Eigen values:”) pc$values

cat(“Eigen vectors:”) pc$vectors

Proporsi dan kumulatif varians

sumvar <- sum(pc\(values) propvar <- sapply(pc\)values, function(x) x / sumvar) * 100

cumvar <- data.frame( eigen_value = pc$values, proporsi = propvar ) %>% mutate(kumulatif = cumsum(proporsi))

row.names(cumvar) <- paste0(“PC”, 1:ncol(data_num)) cumvar

Skor PCA

scores <- as.matrix(scale_data) %*% pc$vectors scores

—————–

PCA DENGAN FUNCTION principal()

—————–

pc <- principal(data_num, nfactors = 3, rotate = “none”) pc

Eigenvector dari loading

L <- as.matrix(pc\(loadings) lambda <- pc\)values lambda_k <- lambda[1:ncol(L)]

V <- sweep(L, 2, sqrt(lambda_k), “/”) V

Skor PCA

scores <- scale_data %*% as.matrix(V) scores

—————–

PCA DENGAN FactoMineR

—————–

pca_result <- PCA( scale_data, scale.unit = TRUE, graph = FALSE, ncp = ncol(data_num) )

Ringkasan hasil PCA

pca_result\(eig pca_result\)svd\(V pca_result\)ind\(coord pca_result\)var

=========================================================

VISUALISASI PCA

=========================================================

fviz_eig( pca_result, addlabels = TRUE, ncp = “p”, barfill = “skyblue”, barcolor = “darkblue”, linecolor = “red” )

=========================================================

FACTOR ANALYSIS (FA)

=========================================================

—————–

FA MANUAL

—————–

varcov <- cov(scale_data) pc <- eigen(varcov)

cat(“Eigen values:”) pc$values

cat(“Eigen vectors:”) pc$vectors

Factor loadings manual

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) cat(“Factor loadings:”) L

—————–

FA DENGAN principal()

—————–

fa <- principal(scale_data, nfactors = 3, rotate = “none”) fa fa$loadings

fa.diagram(fa$loadings)

Rotasi varimax

fa_1 <- principal(scale_data, nfactors = 3, rotate = “varimax”) fa_1

Skor faktor

scores <- scale_data %% solve(cor(scale_data)) %% as.matrix(fa$loadings) scores

—————–

FA DENGAN fa()

—————–

FA <- fa( scale_data, covar = TRUE, nfactors = 3, rotate = “none”, fm = “pm” )

load <- FA$loadings load

FA$scores

fa.diagram(load)