Introducción El presente análisis corresponde al Grupo N° 06, integrado por: Gloria Mantilla Varas Sarita Churango Zárate Denilson Pongo Palomino El objetivo de esta práctica es realizar un análisis exploratorio del conjunto de datos Wine Quality (Red), el cual contiene variables fisicoquímicas y una calificación de calidad para vinos tintos.
Carga de Datos Se carga la base de datos desde la ruta local. El dataset contiene 1,599 observaciones y 12 variables.
df55 <- read.csv("D:/Met_Mora/Version_04/CursoAnalytic/winequality-red.csv")
names(df55)
## [1] "fixed.acidity" "volatile.acidity" "citric.acid"
## [4] "residual.sugar" "chlorides" "free.sulfur.dioxide"
## [7] "total.sulfur.dioxide" "density" "pH"
## [10] "sulphates" "alcohol" "quality"
str(df55)
## 'data.frame': 1599 obs. of 12 variables:
## $ fixed.acidity : num 7.4 7.8 7.8 11.2 7.4 7.4 7.9 7.3 7.8 7.5 ...
## $ volatile.acidity : num 0.7 0.88 0.76 0.28 0.7 0.66 0.6 0.65 0.58 0.5 ...
## $ citric.acid : num 0 0 0.04 0.56 0 0 0.06 0 0.02 0.36 ...
## $ residual.sugar : num 1.9 2.6 2.3 1.9 1.9 1.8 1.6 1.2 2 6.1 ...
## $ chlorides : num 0.076 0.098 0.092 0.075 0.076 0.075 0.069 0.065 0.073 0.071 ...
## $ free.sulfur.dioxide : num 11 25 15 17 11 13 15 15 9 17 ...
## $ total.sulfur.dioxide: num 34 67 54 60 34 40 59 21 18 102 ...
## $ density : num 0.998 0.997 0.997 0.998 0.998 ...
## $ pH : num 3.51 3.2 3.26 3.16 3.51 3.51 3.3 3.39 3.36 3.35 ...
## $ sulphates : num 0.56 0.68 0.65 0.58 0.56 0.56 0.46 0.47 0.57 0.8 ...
## $ alcohol : num 9.4 9.8 9.8 9.8 9.4 9.4 9.4 10 9.5 10.5 ...
## $ quality : int 5 5 5 6 5 5 5 7 7 5 ...
dim(df55)
## [1] 1599 12
class(df55)
## [1] "data.frame"
head(df55)
## fixed.acidity volatile.acidity citric.acid residual.sugar chlorides
## 1 7.4 0.70 0.00 1.9 0.076
## 2 7.8 0.88 0.00 2.6 0.098
## 3 7.8 0.76 0.04 2.3 0.092
## 4 11.2 0.28 0.56 1.9 0.075
## 5 7.4 0.70 0.00 1.9 0.076
## 6 7.4 0.66 0.00 1.8 0.075
## free.sulfur.dioxide total.sulfur.dioxide density pH sulphates alcohol
## 1 11 34 0.9978 3.51 0.56 9.4
## 2 25 67 0.9968 3.20 0.68 9.8
## 3 15 54 0.9970 3.26 0.65 9.8
## 4 17 60 0.9980 3.16 0.58 9.8
## 5 11 34 0.9978 3.51 0.56 9.4
## 6 13 40 0.9978 3.51 0.56 9.4
## quality
## 1 5
## 2 5
## 3 5
## 4 6
## 5 5
## 6 5
Interpretación: El dataset cuenta con 11 variables numéricas continuas (propiedades fisicoquímicas del vino) y una variable discreta (quality) que representa la calidad del vino en una escala de 0 a 10.
summary(df55)
## fixed.acidity volatile.acidity citric.acid residual.sugar
## Min. : 4.60 Min. :0.1200 Min. :0.000 Min. : 0.900
## 1st Qu.: 7.10 1st Qu.:0.3900 1st Qu.:0.090 1st Qu.: 1.900
## Median : 7.90 Median :0.5200 Median :0.260 Median : 2.200
## Mean : 8.32 Mean :0.5278 Mean :0.271 Mean : 2.539
## 3rd Qu.: 9.20 3rd Qu.:0.6400 3rd Qu.:0.420 3rd Qu.: 2.600
## Max. :15.90 Max. :1.5800 Max. :1.000 Max. :15.500
## chlorides free.sulfur.dioxide total.sulfur.dioxide density
## Min. :0.01200 Min. : 1.00 Min. : 6.00 Min. :0.9901
## 1st Qu.:0.07000 1st Qu.: 7.00 1st Qu.: 22.00 1st Qu.:0.9956
## Median :0.07900 Median :14.00 Median : 38.00 Median :0.9968
## Mean :0.08747 Mean :15.87 Mean : 46.47 Mean :0.9967
## 3rd Qu.:0.09000 3rd Qu.:21.00 3rd Qu.: 62.00 3rd Qu.:0.9978
## Max. :0.61100 Max. :72.00 Max. :289.00 Max. :1.0037
## pH sulphates alcohol quality
## Min. :2.740 Min. :0.3300 Min. : 8.40 Min. :3.000
## 1st Qu.:3.210 1st Qu.:0.5500 1st Qu.: 9.50 1st Qu.:5.000
## Median :3.310 Median :0.6200 Median :10.20 Median :6.000
## Mean :3.311 Mean :0.6581 Mean :10.42 Mean :5.636
## 3rd Qu.:3.400 3rd Qu.:0.7300 3rd Qu.:11.10 3rd Qu.:6.000
## Max. :4.010 Max. :2.0000 Max. :14.90 Max. :8.000
Hallazgos principales: La calidad promedio del vino se sitúa en torno a 5.6, con un rango entre 3 y 8. Variables como residual sugar y free sulfur dioxide presentan alta dispersión (valores máximos muy superiores al tercer cuartil), lo que sugiere la presencia de valores atípicos. El pH se mantiene en un rango relativamente estable (2.74 - 4.01).
columns <- dim(df55)[2]
par(mfrow = c(3, ceiling(columns/3)))
for (i in 1:columns) {
if (is.numeric(df55[[i]]) == TRUE && names(df55)[i] != "quality") {
hist(
df55[[i]],
main = names(df55)[i],
xlab = "",
ylab = "Frecuencia",
col = "lightblue",
border = "white"
)
} else {
barplot(
table(df55[[i]]),
main = names(df55)[i],
ylab = "Frecuencia",
col = "lightblue",
border = "white"
)
}
}
Interpretación: La mayoría de las variables presentan distribuciones asimétricas positivas (cola hacia la derecha), como residual sugar, chlorides y sulphates. La variable quality tiene una distribución aproximadamente normal, concentrada en los valores 5, 6 y 7.
par(mfrow = c(3, 4))
for (i in 1:11) {
x <- df55[, i]
if (is.numeric(x) == TRUE) {
boxplot(
x,
main = names(df55)[i],
xlab = "",
col = "lightblue"
)
}
}
Interpretación: Se observan valores atípicos significativos en fixed acidity, volatile acidity, citric acid, residual sugar, chlorides, free sulfur dioxide, total sulfur dioxide y sulphates. Estos outliers podrían deberse a errores de medición o a vinos con características realmente atípicas. Sería recomendable evaluar su impacto antes de modelar.
tabla_calidad <- data.frame(
Calidad = names(table(df55$quality)),
Cantidad = as.vector(table(df55$quality)),
Porcentaje = round(as.vector(prop.table(table(df55$quality)) * 100), 2)
)
tabla_calidad
## Calidad Cantidad Porcentaje
## 1 3 10 0.63
## 2 4 53 3.31
## 3 5 681 42.59
## 4 6 638 39.90
## 5 7 199 12.45
## 6 8 18 1.13
par(mfrow = c(1, 1))
barplot(
tabla_calidad$Porcentaje,
main = "Distribución porcentual de la calidad del vino",
ylab = "Frecuencia (%)",
col = "lightblue",
border = "white",
names.arg = as.character(tabla_calidad$Calidad)
)
Interpretación: El 82.5% de los vinos tienen una calidad de 5 o 6, lo que indica una muestra con predominio de vinos de calidad media. Solo el 1.25% de los vinos alcanzan una calidad de 3 (muy baja) y el 0.63% una calidad de 8 (muy alta). La distribución es aproximadamente simétrica alrededor de la media, sin sesgo marcado.