data("iris")
head(iris)
## Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## 1 5.1 3.5 1.4 0.2 setosa
## 2 4.9 3.0 1.4 0.2 setosa
## 3 4.7 3.2 1.3 0.2 setosa
## 4 4.6 3.1 1.5 0.2 setosa
## 5 5.0 3.6 1.4 0.2 setosa
## 6 5.4 3.9 1.7 0.4 setosa
iris_num <- iris %>% select(-Species)
iris_scaled <- scale(iris_num)
head(iris_scaled)
## Sepal.Length Sepal.Width Petal.Length Petal.Width
## [1,] -0.8976739 1.01560199 -1.335752 -1.311052
## [2,] -1.1392005 -0.13153881 -1.335752 -1.311052
## [3,] -1.3807271 0.32731751 -1.392399 -1.311052
## [4,] -1.5014904 0.09788935 -1.279104 -1.311052
## [5,] -1.0184372 1.24503015 -1.335752 -1.311052
## [6,] -0.5353840 1.93331463 -1.165809 -1.048667
pca_result <- prcomp(iris_scaled, center = TRUE, scale. = TRUE)
summary(pca_result)
## Importance of components:
## PC1 PC2 PC3 PC4
## Standard deviation 1.7084 0.9560 0.38309 0.14393
## Proportion of Variance 0.7296 0.2285 0.03669 0.00518
## Cumulative Proportion 0.7296 0.9581 0.99482 1.00000
pca_var <- pca_result$sdev^2
pca_var_explained <- pca_var / sum(pca_var)
pca_var_explained
## [1] 0.729624454 0.228507618 0.036689219 0.005178709
fviz_eig(pca_result)
iris_pca <- as.data.frame(pca_result$x)
iris_pca$Species <- iris$Species
ggplot(iris_pca, aes(x = PC1, y = PC2, color = Species)) +
geom_point(size = 3) +
labs(title = "PCA: Componentes Principais 1 e 2", x = "PC1", y = "PC2")
# Visualizar as contribuições das variáveis
fviz_pca_var(pca_result,
col.var = "contrib",
gradient.cols = c("#00AFBB", "#E7B800", "#FC4E07"),
repel = TRUE)
# Criar o gráfico dos indivíduos
fviz_pca_ind(pca_result,
geom.ind = "point", # Mostra os indivíduos como pontos
col.ind = iris$Species, # Cor dos pontos pelas espécies
palette = c("#00AFBB", "#E7B800", "#FC4E07"), # Paleta de cores
addEllipses = TRUE, # Adicionar elipses para cada grupo
ellipse.type = "confidence", # Tipo de elipse (95% de confiança)
legend.title = "Species", # Título da legenda
repel = TRUE) # Evitar sobreposição de rótulos