library(tidyverse)
library(ggplot2)

# 1. Cargar datos
wine <- read.csv("wine.csv")

# 2. Separar variable de clase
cultivar <- as.factor(wine$Cultivar)

# 3. Mantener solo variables numéricas
wine_num <- wine %>% select(-Cultivar)

# ===============================
# PCA
# ===============================

# PCA con datos estandarizados
pca_wine <- prcomp(wine_num, scale. = TRUE)

# Data para gráfico PCA
pca_df <- data.frame(
  PC1 = pca_wine$x[,1],
  PC2 = pca_wine$x[,2],
  Cultivar = cultivar
)

# Gráfico PCA
ggplot(pca_df, aes(PC1, PC2, color = Cultivar)) +
  geom_point(size = 2) +
  labs(
    title = "PCA – Wine Dataset",
    x = "Componente Principal 1",
    y = "Componente Principal 2"
  ) +
  theme_minimal()

# ===============================
# MDS
# ===============================

# Distancias con datos estandarizados
dist_wine <- dist(scale(wine_num))

# MDS clásico a 2 dimensiones
mds_wine <- cmdscale(dist_wine, k = 2)

# Data para gráfico MDS
mds_df <- data.frame(
  Dim1 = mds_wine[,1],
  Dim2 = mds_wine[,2],
  Cultivar = cultivar
)

# Gráfico MDS
ggplot(mds_df, aes(Dim1, Dim2, color = Cultivar)) +
  geom_point(size = 2) +
  labs(
    title = "MDS – Wine Dataset",
    x = "Dimensión 1",
    y = "Dimensión 2"
  ) +
  theme_minimal()

Conclusiones

El análisis PCA permite observar una clara separación entre los distintos cultivares del vino, indicando que las variables químicas explican adecuadamente la variabilidad entre clases.

Por otro lado, el análisis MDS confirma esta separación al preservar las distancias originales entre observaciones, mostrando agrupamientos consistentes con los cultivares.