{r} library(psych) library(FactoMineR) library(factoextra) library(ggplot2) Penjelasan library

{r} data <- read.csv("AirQualityUCI.csv", sep=";", dec=",")

{r} head(data) {r} summary(data) {r} sapply(data, class) {r} colSums(is.na(data)) {r} missing_count <- sapply(data, function(x) sum(x == -200, na.rm = TRUE)) missing_count

Hapus variabel yang kategorikal & fitur mengandung nilai -200 {r} data_numeric <- data[, !(names(data) %in% c("Date","Time","X","X.1", "NMHC.GT."))]

{r} data_numeric[data_numeric == -200] <- NA data_now <- na.omit(data_numeric)

{r} colnames(data_now) {r} summary(data_now)

{r} par(mfrow=c(2,3)) for(i in 1:ncol(data_now)){ hist(data_now[,i], main=colnames(data_now)[i], col="lightblue") } {r} cor_matrix <- cor(data_now) KMO(cor_matrix) cortest.bartlett(cor_matrix, n = nrow(data_now)) {r} data_step1 <- subset(data_now, select = -RH) data_step1

{r} data_clean <- na.omit(data_step1) data_clean {r} colSums(is.na(data_clean)) {r} data_scaled <- scale(data_clean) data_scaled {r} cor_matrix <- cor(data_scaled) cor_matrix

{r} library(psych) KMO(cor_matrix) cortest.bartlett(cor_matrix) {r} data_step2 <- subset(data_clean, select = -AH) data_step2 {r} data_scaled2 <- scale(data_step2) data_scaled2

{r} cor_matrix2 <- cor(data_scaled2)

{r} library(psych) KMO(cor_matrix2) cortest.bartlett(cor_matrix2)

{r} pca_result <- prcomp(data_scaled2, scale. = FALSE) summary(pca_result)

{r} eigenvalues <- pca_result$sdev^2 eigenvalues

{r} plot(eigenvalues, type="b", xlab="Komponen", ylab="Eigenvalue", main="Scree Plot") abline(h=1, col="red", lty=2)

{r} round(pca_result$rotation, 3)

{r} loadings <- pca_result$rotation round(loadings, 3) ```{r} fa_result <- fa(data_scaled2, nfactors = 2, rotate = “varimax”, fm = “ml”)

print(fa_result, cut = 0.3) ```