Análisis exploratorio de Wine Quality
#Leer BD
BD <- read.csv("C:/Users/artur/OneDrive/Escritorio/Data/winequality-red.csv")
#Nombres
names(BD)
## [1] "fixed.acidity" "volatile.acidity" "citric.acid"
## [4] "residual.sugar" "chlorides" "free.sulfur.dioxide"
## [7] "total.sulfur.dioxide" "density" "pH"
## [10] "sulphates" "alcohol" "quality"
#Cambio nombres para mejor legibilidad
names(BD) <- c("Acidez Fija", "Acidez Volatil", "Acido Citrico",
"Azucar Residual", "Cloruros", "Azufre Libre",
"Azufre Total", "Densidad", "pH",
"Sulfatos", "Alcohol", "Calidad")
#Resumen
summary(BD)
## Acidez Fija Acidez Volatil Acido Citrico Azucar Residual
## 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
## Cloruros Azufre Libre Azufre Total Densidad
## 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 Sulfatos Alcohol Calidad
## 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
#Estructura
str(BD)
## 'data.frame': 1599 obs. of 12 variables:
## $ Acidez Fija : num 7.4 7.8 7.8 11.2 7.4 7.4 7.9 7.3 7.8 7.5 ...
## $ Acidez Volatil : num 0.7 0.88 0.76 0.28 0.7 0.66 0.6 0.65 0.58 0.5 ...
## $ Acido Citrico : num 0 0 0.04 0.56 0 0 0.06 0 0.02 0.36 ...
## $ Azucar Residual: num 1.9 2.6 2.3 1.9 1.9 1.8 1.6 1.2 2 6.1 ...
## $ Cloruros : num 0.076 0.098 0.092 0.075 0.076 0.075 0.069 0.065 0.073 0.071 ...
## $ Azufre Libre : num 11 25 15 17 11 13 15 15 9 17 ...
## $ Azufre Total : num 34 67 54 60 34 40 59 21 18 102 ...
## $ Densidad : 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 ...
## $ Sulfatos : 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 ...
## $ Calidad : int 5 5 5 6 5 5 5 7 7 5 ...
Analisis visual del comportamiento de cada atributo
BDN <- NULL
BDC <- NULL
BDO <- NULL
boxplots <- function(datos) {columnas <- dim(BD)[2]
par(mfrow = c(3, 4), mar = c(3, 3, 3, 1))
for (i in 1:columnas) {
texto = paste("Análisis del atributo ", colnames(BD)[i])
boxplot(BD[ , i],
main = texto,
col = "palegreen1",
horizontal = FALSE)
}
par(mfrow = c(1, 1))}
boxplots(BD)

histo_pie <- function(datos) {
columnas <<- dim(BD)[2]
par(mfrow = c(3,4))
for (i in 1:columnas) {
if(is.numeric(BD[ ,i])== TRUE)
{
texto = paste("Analisis del atributo ",colnames(BD)[i])
hist(BD[ ,i],
main = texto,
col = i,
xlab = colnames(BD)[i])
BDN <<- c(BDN,i)
}else {
texto = paste("Analisis del atributo ",colnames(BD)[i])
pie(table(BD[ ,i]),
main = texto)
BDC <<- c(BDC,i)
}
}
}
histo_pie(BD)

Analisis_completo <- function(datos) {
columnas <<- dim(BD)[2]
par(mfrow = c(3,4))
for(i in 1:columnas){
if(colnames(BD)[i]=="Calidad"){
texto <<- paste("Analisis del atributo", colnames(BD)[i])
barplot(table(BD[,i]),
main = texto,
col = "mediumpurple2",
xlab = "Nivel de calidad",
ylab = "Frecuencia")
BDO <<- c(BDO,i)
}else if(is.numeric(BD[,i])==TRUE){
texto <- paste("Analisis del atributo", colnames(BD)[i])
hist(BD[,i],
main = texto,
col = i,
xlab = "Rango de valores",
ylab = "Frecuencia")
boxplot(BD[,i],
main = texto,
col = i)
BDN <<- c(BDN,i)
}else{
texto <<- paste("Analisis del atributo", colnames(BD)[i])
pie(table(BD[,i]),
main = texto)
BDC <<- c(BDC,i)
}
}
}
Analisis_completo(BD)


Variables cualitativas
colnames(BD)[BDC]
## character(0)
Variables ordinales
colnames(BD)[BDO]
## [1] "Calidad"
Variables numéricas continuas
colnames(BD)[BDN]
## [1] "Acidez Fija" "Acidez Volatil" "Acido Citrico" "Azucar Residual"
## [5] "Cloruros" "Azufre Libre" "Azufre Total" "Densidad"
## [9] "pH" "Sulfatos" "Alcohol" "Calidad"
## [13] "Acidez Fija" "Acidez Volatil" "Acido Citrico" "Azucar Residual"
## [17] "Cloruros" "Azufre Libre" "Azufre Total" "Densidad"
## [21] "pH" "Sulfatos" "Alcohol"