library(psych) # MSA, PCA, FA library(dplyr) # data wrangling library(FactoMineR) # PCA library(factoextra) # visualisasi
data <- read.csv(“dehydration_processed_features.csv”)
head(data) str(data)
sum(is.na(data))
data_num <- data[, sapply(data, is.numeric)] head(data_num)
cor(data_num)
r <- cor(data_num) KMO(r)
data_num <- data_num[-8]
r <- cor(data_num) KMO(r)
bartlett.test(data_num)
scale_data <- scale(data_num)
r <- cov(scale_data)
pc <- eigen(r)
cat(“Eigen values:”) pc$values
cat(“Eigen vectors:”) pc$vectors
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
scores <- as.matrix(scale_data) %*% pc$vectors scores
pc <- principal(data_num, nfactors = 3, rotate = “none”) pc
L <- as.matrix(pc\(loadings) lambda <- pc\)values lambda_k <- lambda[1:ncol(L)]
V <- sweep(L, 2, sqrt(lambda_k), “/”) V
scores <- scale_data %*% as.matrix(V) scores
pca_result <- PCA( scale_data, scale.unit = TRUE, graph = FALSE, ncp = ncol(data_num) )
pca_result\(eig pca_result\)svd\(V pca_result\)ind\(coord pca_result\)var
fviz_eig( pca_result, addlabels = TRUE, ncp = “p”, barfill = “skyblue”, barcolor = “darkblue”, linecolor = “red” )
varcov <- cov(scale_data) pc <- eigen(varcov)
cat(“Eigen values:”) pc$values
cat(“Eigen vectors:”) pc$vectors
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 <- principal(scale_data, nfactors = 3, rotate = “none”) fa fa$loadings
fa.diagram(fa$loadings)
fa_1 <- principal(scale_data, nfactors = 3, rotate = “varimax”) fa_1
scores <- scale_data %% solve(cor(scale_data)) %% as.matrix(fa$loadings) scores
FA <- fa( scale_data, covar = TRUE, nfactors = 3, rotate = “none”, fm = “pm” )
load <- FA$loadings load
FA$scores
fa.diagram(load)