1. Introducción

Se presenta un análisis exploratorio de datos, que contiene información sobre características del vino tinto y su calidad.

El objetivo es conocer los datos, analizar las variables y observar algunas relaciones.

2. Cargar los datos

wine <- read.csv("C:/Users/Karol/Downloads/winequality-red (1).csv", sep = ",")

3. Descripción general de los datos

3.1 Dimension

La función dim() nos permite conocer el número de filas y columnas.

dim(wine)
## [1] 1599   12

3.2 Nombres de las variables

names(wine)
##  [1] "fixed.acidity"        "volatile.acidity"     "citric.acid"         
##  [4] "residual.sugar"       "chlorides"            "free.sulfur.dioxide" 
##  [7] "total.sulfur.dioxide" "density"              "pH"                  
## [10] "sulphates"            "alcohol"              "quality"

3.3 Estructura de los datos

La función str() permite conocer el tipo de cada variable.

str(wine)
## '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 ...

3.4 Resumen de los datos

summary(wine)
##  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

4. Función para analizar cada variable

A continuación se muestra una función sencilla para analizar las variables.

La función muestra:

analizar_todas <- function(datos) {
  
  for (variable in names(datos)) {
    
    x <- datos[[variable]]
    
    print(paste("===================================="))
    print(paste("VARIABLE:", variable))
    print(paste("===================================="))
    
    print(summary(x))
    
    print(paste("Media:", mean(x)))
    print(paste("Desviación estándar:", sd(x)))
    
    hist(x,
         main = paste("Histograma de", variable),
         xlab = variable)
    
    boxplot(x,
            main = paste("Boxplot de", variable),
            ylab = variable,
            horizontal = TRUE)
  }
}

analizar_histogramas <- function(datos) {
  
  for (variable in names(datos)) {
    
    x <- datos[[variable]]
    
    hist(x,
         main = paste("Histograma de", variable),
         xlab = variable)
    
  }
}

analizar_bloxplot<- function(datos) {
  
  for (variable in names(datos)) {
    
    x <- datos[[variable]]
    
    boxplot(x,
            main = paste("Boxplot de", variable),
            ylab = variable,
            horizontal = TRUE)
    
  }
}

Analisis global

analizar_todas(wine)
## [1] "===================================="
## [1] "VARIABLE: fixed.acidity"
## [1] "===================================="
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##    4.60    7.10    7.90    8.32    9.20   15.90 
## [1] "Media: 8.31963727329581"
## [1] "Desviación estándar: 1.7410963181277"

## [1] "===================================="
## [1] "VARIABLE: volatile.acidity"
## [1] "===================================="
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##  0.1200  0.3900  0.5200  0.5278  0.6400  1.5800 
## [1] "Media: 0.527820512820513"
## [1] "Desviación estándar: 0.179059704153535"

## [1] "===================================="
## [1] "VARIABLE: citric.acid"
## [1] "===================================="
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   0.000   0.090   0.260   0.271   0.420   1.000 
## [1] "Media: 0.270975609756098"
## [1] "Desviación estándar: 0.194801137405319"

## [1] "===================================="
## [1] "VARIABLE: residual.sugar"
## [1] "===================================="
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   0.900   1.900   2.200   2.539   2.600  15.500 
## [1] "Media: 2.53880550343965"
## [1] "Desviación estándar: 1.40992805950728"

## [1] "===================================="
## [1] "VARIABLE: chlorides"
## [1] "===================================="
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.01200 0.07000 0.07900 0.08747 0.09000 0.61100 
## [1] "Media: 0.0874665415884928"
## [1] "Desviación estándar: 0.0470653020100901"

## [1] "===================================="
## [1] "VARIABLE: free.sulfur.dioxide"
## [1] "===================================="
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##    1.00    7.00   14.00   15.87   21.00   72.00 
## [1] "Media: 15.8749218261413"
## [1] "Desviación estándar: 10.4601569698097"

## [1] "===================================="
## [1] "VARIABLE: total.sulfur.dioxide"
## [1] "===================================="
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##    6.00   22.00   38.00   46.47   62.00  289.00 
## [1] "Media: 46.4677923702314"
## [1] "Desviación estándar: 32.8953244782991"

## [1] "===================================="
## [1] "VARIABLE: density"
## [1] "===================================="
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##  0.9901  0.9956  0.9968  0.9967  0.9978  1.0037 
## [1] "Media: 0.996746679174484"
## [1] "Desviación estándar: 0.00188733395384256"

## [1] "===================================="
## [1] "VARIABLE: pH"
## [1] "===================================="
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   2.740   3.210   3.310   3.311   3.400   4.010 
## [1] "Media: 3.31111319574734"
## [1] "Desviación estándar: 0.154386464903543"

## [1] "===================================="
## [1] "VARIABLE: sulphates"
## [1] "===================================="
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##  0.3300  0.5500  0.6200  0.6581  0.7300  2.0000 
## [1] "Media: 0.658148843026892"
## [1] "Desviación estándar: 0.16950697959011"

## [1] "===================================="
## [1] "VARIABLE: alcohol"
## [1] "===================================="
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##    8.40    9.50   10.20   10.42   11.10   14.90 
## [1] "Media: 10.4229831144465"
## [1] "Desviación estándar: 1.06566758184739"

## [1] "===================================="
## [1] "VARIABLE: quality"
## [1] "===================================="
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   3.000   5.000   6.000   5.636   6.000   8.000 
## [1] "Media: 5.63602251407129"
## [1] "Desviación estándar: 0.807569439734705"

Análisis de gráficos

par (mfrow =c(3,4))
analizar_histogramas(wine)

analizar_bloxplot(wine)

5. Análisis de la variable Quality

La variable quality representa la calidad asignada a cada vino.

Primero observamos sus frecuencias.

table(wine$quality)
## 
##   3   4   5   6   7   8 
##  10  53 681 638 199  18

Grafico de barras

barplot(table(wine$quality),
        main = "Calidad de los vinos",
        xlab = "Calidad",
        ylab = "Cantidad")

6. Correlación entre variables

6.1. relación entre alcohol y calidad.

cor(wine$alcohol, wine$quality)
## [1] 0.4761663

Grafico de relación “Alcohol y calidad”

plot(wine$alcohol,
     wine$quality,
     main = "Alcohol y calidad",
     xlab = "Alcohol",
     ylab = "Calidad")

7. Conclusiones

Se realizo un análisis exploratorio sobre diferentes características del vino tinto.

Se analizaron las dimensiones, nombres, estructura y resumen estadístico de los datos.

Se pudo realizar un análisis de cada variable, utilizando estadísticas básicas,histogramas y boxplots.

Finalmente, se analizó la relación entre alcohol y la calidad del vino.