Carregar o conjunto de dados iris

data("iris")

Visualizar as primeiras linhas do dataset

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

Selecionar apenas as variáveis numéricas para a PCA

iris_num <- iris %>% select(-Species)

Padronizar os dados

iris_scaled <- scale(iris_num)

Visualizar as primeiras linhas dos dados padronizados

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

Executar a PCA

pca_result <- prcomp(iris_scaled, center = TRUE, scale. = TRUE)

Resumo dos resultados da PCA

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

Variância explicada por cada componente

pca_var <- pca_result$sdev^2
pca_var_explained <- pca_var / sum(pca_var)

Visualizar a variância explicada

pca_var_explained
## [1] 0.729624454 0.228507618 0.036689219 0.005178709

Plotar a variância explicada

fviz_eig(pca_result)

Adicionar os componentes principais ao dataset original

iris_pca <- as.data.frame(pca_result$x)
iris_pca$Species <- iris$Species

Visualizar o gráfico dos componentes principais

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