#Importar Archivo
file.choose()
## [1] "C:\\Users\\johan\\Downloads\\taller 2 Analitica de datos Laura .Rmd"
# Cargar los datos
data <- read.csv("C:\\Users\\johan\\Downloads\\winequality-white.csv", sep = ";")
# Verifica que los datos se hayan cargado correctamente
head(data)
##   fixed.acidity volatile.acidity citric.acid residual.sugar chlorides
## 1           7.0             0.27        0.36           20.7     0.045
## 2           6.3             0.30        0.34            1.6     0.049
## 3           8.1             0.28        0.40            6.9     0.050
## 4           7.2             0.23        0.32            8.5     0.058
## 5           7.2             0.23        0.32            8.5     0.058
## 6           8.1             0.28        0.40            6.9     0.050
##   free.sulfur.dioxide total.sulfur.dioxide density   pH sulphates alcohol
## 1                  45                  170  1.0010 3.00      0.45     8.8
## 2                  14                  132  0.9940 3.30      0.49     9.5
## 3                  30                   97  0.9951 3.26      0.44    10.1
## 4                  47                  186  0.9956 3.19      0.40     9.9
## 5                  47                  186  0.9956 3.19      0.40     9.9
## 6                  30                   97  0.9951 3.26      0.44    10.1
##   quality
## 1       6
## 2       6
## 3       6
## 4       6
## 5       6
## 6       6

Tipos de datos

str(data)
## 'data.frame':    4898 obs. of  12 variables:
##  $ fixed.acidity       : num  7 6.3 8.1 7.2 7.2 8.1 6.2 7 6.3 8.1 ...
##  $ volatile.acidity    : num  0.27 0.3 0.28 0.23 0.23 0.28 0.32 0.27 0.3 0.22 ...
##  $ citric.acid         : num  0.36 0.34 0.4 0.32 0.32 0.4 0.16 0.36 0.34 0.43 ...
##  $ residual.sugar      : num  20.7 1.6 6.9 8.5 8.5 6.9 7 20.7 1.6 1.5 ...
##  $ chlorides           : num  0.045 0.049 0.05 0.058 0.058 0.05 0.045 0.045 0.049 0.044 ...
##  $ free.sulfur.dioxide : num  45 14 30 47 47 30 30 45 14 28 ...
##  $ total.sulfur.dioxide: num  170 132 97 186 186 97 136 170 132 129 ...
##  $ density             : num  1.001 0.994 0.995 0.996 0.996 ...
##  $ pH                  : num  3 3.3 3.26 3.19 3.19 3.26 3.18 3 3.3 3.22 ...
##  $ sulphates           : num  0.45 0.49 0.44 0.4 0.4 0.44 0.47 0.45 0.49 0.45 ...
##  $ alcohol             : num  8.8 9.5 10.1 9.9 9.9 10.1 9.6 8.8 9.5 11 ...
##  $ quality             : int  6 6 6 6 6 6 6 6 6 6 ...

Matriz de correlacion de todas las variables

library(corrplot)
## corrplot 0.92 loaded
par(oma = c(1, 1, 1, 1), mar = c(5, 4, 4, 2) + 0.1)
corrplot.mixed(cor(data),
               lower = "circle", 
               upper = "circle",
               tl.pos = "n")
corrplot(cor(data), add = TRUE, method = "circle", 
         type = "upper", tl.pos = "lt", # Etiquetas en la parte superior izquierda
         tl.col = "black", number.cex = 0.7, addCoef.col = "black",
         cl.pos = "n", # Esconde la barra de colores si no es necesaria
         diag = TRUE)

Selección de variables

model_data <- data[, c("residual.sugar", "fixed.acidity", "volatile.acidity", "citric.acid", "alcohol", "pH", "density")]

Construir el modelo de regresión lineal múltiple

modelo <- lm(residual.sugar ~ fixed.acidity + volatile.acidity + citric.acid + alcohol + pH + density, data=model_data)

Resumen del modelo

summary(modelo)
## 
## Call:
## lm(formula = residual.sugar ~ fixed.acidity + volatile.acidity + 
##     citric.acid + alcohol + pH + density, data = model_data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -45.058  -0.838   0.050   0.931  11.828 
## 
## Coefficients:
##                    Estimate Std. Error  t value Pr(>|t|)    
## (Intercept)      -2.335e+03  1.257e+01 -185.775  < 2e-16 ***
## fixed.acidity    -1.913e+00  3.104e-02  -61.641  < 2e-16 ***
## volatile.acidity -1.857e+00  2.243e-01   -8.279  < 2e-16 ***
## citric.acid      -1.101e+00  1.934e-01   -5.694 1.31e-08 ***
## alcohol           2.625e+00  2.963e-02   88.602  < 2e-16 ***
## pH               -9.458e+00  1.637e-01  -57.791  < 2e-16 ***
## density           2.372e+03  1.254e+01  189.249  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.539 on 4891 degrees of freedom
## Multiple R-squared:  0.9081, Adjusted R-squared:  0.908 
## F-statistic:  8053 on 6 and 4891 DF,  p-value: < 2.2e-16

Modelo Matematico \[\text{Residual.sugar} = -2335 + (-1.913 \times \text{fixed.acidity}) + (-1.857 \times \text{volatile.acidity}) + (-1.101 \times \text{citric.acid}) + (2.625 \times \text{alcohol}) + (-9.458 \times \text{pH}) + (2372 \times \text{density})\] # Extraer los coeficientes

coef(modelo)
##      (Intercept)    fixed.acidity volatile.acidity      citric.acid 
##     -2335.136855        -1.913208        -1.857408        -1.100940 
##          alcohol               pH          density 
##         2.625058        -9.458414      2372.251588

Conclusiones sobre el modelo

-El análisis sugiere que las características químicas del vino están fuertemente conectadas con su nivel de azúcar residual, indicando que estos factores pueden ser ajustados para influir en la dulzura final del producto. El modelo es confiable para prever cambios en el azúcar residual, lo que facilita la toma de decisiones en el proceso de vinificación.

Cargar la librería necesaria

library(stats)

Seleccionar las variables cuantitativas

pca_data <- data[, c("residual.sugar", "fixed.acidity", "volatile.acidity", "citric.acid", "alcohol", "pH", "density")]

Realizar el ACP

pca_result <- prcomp(pca_data, scale. = TRUE)

Resumen del ACP

summary(pca_result)
## Importance of components:
##                           PC1    PC2    PC3    PC4    PC5     PC6     PC7
## Standard deviation     1.6024 1.1990 1.0429 0.8815 0.7768 0.70925 0.15401
## Proportion of Variance 0.3668 0.2054 0.1554 0.1110 0.0862 0.07186 0.00339
## Cumulative Proportion  0.3668 0.5722 0.7276 0.8386 0.9247 0.99661 1.00000

Excluye la columna ‘Quality’ y realiza el PCA

pca_data <- prcomp(data[, -which(names(data) == "quality")], scale. = TRUE)
# Biplot: Gráfico de los coeficientes de las componentes y las variables originales
biplot(pca_data, scale = 0, main = "Biplot: Componentes y Variables Originales")

# Gráfico de los coeficientes de las componentes y variables originales
plot(pca_data$rotation[, 1], pca_data$rotation[, 2],
     main = "componentes y variables originales",
     xlab = "Componente 1",
     ylab = "Componente 2",
     col = "blue", pch = 19,
     xlim = c(-1, 1), ylim = c(-1, 1))

# Asignar las etiquetas a las variables
text(pca_data$rotation[, 1], pca_data$rotation[, 2],
     labels = rownames(pca_data$rotation), cex = 1, pos = 3, col = "red")

# Gráfico de barras para la varianza explicada

# la proporcion de varianza explicada por cada componente
var_explicada <- pca_data$sdev^2 / sum(pca_data$sdev^2)
# la varianza acumulada
var_acumulada <- cumsum(var_explicada)
# Crear el gráfico de barras para la varianza explicada
barplot(var_explicada, 
        main = "Analisis de la varianza explicada (grafico)",
        xlab = "numero de componente principal",
        ylab = "Proporcion de varianza explicada",
        col = "lightblue", ylim = c(0, 1))
# Añadir la línea de varianza acumulada al gráfico de barras y usar 'par(new = TRUE)' para sobreponer gráficos
par(new = TRUE)
# Configurar la escala del eje y para la línea
plot(var_acumulada, type = "b", pch = 19, col = "red", lwd = 2, axes = FALSE,
     xlab = "", ylab = "", ylim = c(0, 1))
axis(4, ylim = c(0, 1))
mtext("Varianza acumulada", side = 4, line = 3)

# Restaurar la configuración gráfica original
par(new = FALSE)
# libreria
library(factoextra)
## Loading required package: ggplot2
## Welcome! Want to learn more? See two factoextra-related books at https://goo.gl/ve3WBa
# Ordenar los valores de varianza explicada de mayor a menor
 fviz_screeplot(pca_data, addlabels = TRUE, main = "Varianza Explicada por Componentes Principales")

Conclusiones sobre gráficos obtenidos

  1. Coeficientes de las Componentes y Variables Originales: El gráfico de los coeficientes muestra cómo cada variable contribuye a las componentes principales. Esta información es útil para identificar cuáles características del vino tienen más peso en la variabilidad observada, permitiendo enfocarse en ellas para influir en aspectos clave del producto.

  2. Varianza Explicativa por Cada Componente: La distribución de la varianza explicada sugiere que las primeras componentes capturan la mayor parte de la variabilidad en los datos. Esto simplifica la complejidad del análisis, permitiendo concentrarse en las primeras componentes para una representación efectiva de las diferencias en las características del vino.

  3. Biplot: El biplot visualiza cómo las diferentes variables se relacionan entre sí y con las componentes principales. Esto facilita la identificación de grupos de variables que actúan de manera similar, lo cual puede ser aprovechado para optimizar la producción y mejorar la calidad del vino al enfocarse en estos grupos relacionados.