{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) ```