En el presente documento se analiza la base de datos de los diferentes componentes del vino.
A continuación importamos los datos en formato csv.
BD <- read.csv("~/Angela/BA_PUCP/2.Programacion_Estadistica/winequality-red.csv")
En este paso se muestra la composición de la data en análisis.
str(BD)
## '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 ...
Contamos con 12 variables y 1599 registros. De las variables, 11 de ellas son numéricas (cuantitativas continuas) y 1 es numérica pero del tipo categorico.
Damos una breve revisión de los estadísticos descriptivos básicos de cada variable componente de la data. Retiramos del análisis a la variable “Quality” ubicado en la columna 12, si bien es una variable numérica, es de tipo cualitativa y requiere de otros métodos para su análisis.
summary(BD[,-12])
## 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
## Min. :2.740 Min. :0.3300 Min. : 8.40
## 1st Qu.:3.210 1st Qu.:0.5500 1st Qu.: 9.50
## Median :3.310 Median :0.6200 Median :10.20
## Mean :3.311 Mean :0.6581 Mean :10.42
## 3rd Qu.:3.400 3rd Qu.:0.7300 3rd Qu.:11.10
## Max. :4.010 Max. :2.0000 Max. :14.90
Con la función summary podemos obtener los estadísticos descriptivos básicos de cada una de las variables: - Ninguna de las variables analizadas tiene presencia de missing. - Se observan algunas variables con presencia de datos outliers
Convertimos la variable “quality” a factor para poder procesarla.
## '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 : Factor w/ 6 levels "3","4","5","6",..: 3 3 3 4 3 3 3 5 5 3 ...
Damos una breve revisión de los estadísticos descriptivos básicos de cada variable de la data. Retiramos del análisis a la variable “Quality”, si bien es una variable numerica, ésta es del tipo cualitativa y requiere de otros métodos para su análisis.
columnas <-dim(BD)[2]
par(mfrow=c(1,3))
for (i in 1:columnas) {
if(is.numeric(BD[,i])==TRUE)
{
texto <-paste ("Analisis descriptivo: ",colnames(BD)[i])
texto1 <-paste ("Diagrama boxplot: ",colnames(BD)[i])
hist(BD[,i],col = "lightcyan", main=texto)
boxplot(BD[,i],col ="orange", main =texto1)
plot(BD[,i],col=i, main="Grafico dispersión")
}
else
{
texto2<- paste("Analisis categoricas: ", colnames(BD)[i])
pie(table(BD[,i]),col= table(BD[,i]), main = texto2, label = table(BD[,i]))
barplot(table(BD[,i]), col= table(BD[,i]), main= texto2, font.main=4,legend = rownames(table(BD[,i])))
}
}
for (i in 1:columnas) {
if(is.factor(BD[,i])==TRUE)
{
print(table(BD[,i]))
}
}
##
## 3 4 5 6 7 8
## 10 53 681 638 199 18
Al tratarse de una variable del tipo categorica,