Análisis exploratorio

Se realizó el análisis exploratorio del conjunto de datos utilizado en el caso Winequality-red. Para automatizar el proceso se construyó una función en R que identifica automáticamente el tipo de variable (numérica o categórica) y genera estadísticas descriptivas junto con dos gráficos por variable (histograma y boxplot para numéricas; gráfico de barras y gráfico circular para categóricas).

El análisis se ejecutó sobre todas las variables del dataset, permitiendo identificar su distribución, rangos, valores atípicos y patrones relevantes para la toma de decisiones.

data <- read.csv("winequality-red.csv")

#str(data)

analizar_variable <- function(x,variable) {
print(paste("Clase:", class(x)))
  
  par(mfrow = c(1,2))  # 1 fila, 2 gráficos
  if(is.numeric(x)){
    print(summary(x))
    print(paste("Rango:", round(diff(range(x)),2)))
    print(paste("Varianza:", round(var(x),2)))
    print(paste("Desviación estándar:", round(sd(x),2)))
    hist(x, main = paste("Histograma de", variable), xlab=variable, ylab="Frecuencia")
    boxplot(x, main = paste("Boxplot de", variable))
  }
  else{
    print(table(x))
    barplot(table(x), main = paste("Frecuencias de", variable))
  }
}


aplicar_a_variables <- function(data, funcion){
  for (col in names(data)) {
#    cat("\n-----------------------------------------------\n")
    cat("Variable:", col, "\n")

    funcion(data[[col]],col)   

    }
}

aplicar_a_variables(data, analizar_variable)
## Variable: fixed.acidity 
## [1] "Clase: numeric"
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##    4.60    7.10    7.90    8.32    9.20   15.90 
## [1] "Rango: 11.3"
## [1] "Varianza: 3.03"
## [1] "Desviación estándar: 1.74"

## Variable: volatile.acidity 
## [1] "Clase: numeric"
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##  0.1200  0.3900  0.5200  0.5278  0.6400  1.5800 
## [1] "Rango: 1.46"
## [1] "Varianza: 0.03"
## [1] "Desviación estándar: 0.18"

## Variable: citric.acid 
## [1] "Clase: numeric"
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   0.000   0.090   0.260   0.271   0.420   1.000 
## [1] "Rango: 1"
## [1] "Varianza: 0.04"
## [1] "Desviación estándar: 0.19"

## Variable: residual.sugar 
## [1] "Clase: numeric"
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   0.900   1.900   2.200   2.539   2.600  15.500 
## [1] "Rango: 14.6"
## [1] "Varianza: 1.99"
## [1] "Desviación estándar: 1.41"

## Variable: chlorides 
## [1] "Clase: numeric"
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.01200 0.07000 0.07900 0.08747 0.09000 0.61100 
## [1] "Rango: 0.6"
## [1] "Varianza: 0"
## [1] "Desviación estándar: 0.05"

## Variable: free.sulfur.dioxide 
## [1] "Clase: numeric"
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##    1.00    7.00   14.00   15.87   21.00   72.00 
## [1] "Rango: 71"
## [1] "Varianza: 109.41"
## [1] "Desviación estándar: 10.46"

## Variable: total.sulfur.dioxide 
## [1] "Clase: numeric"
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##    6.00   22.00   38.00   46.47   62.00  289.00 
## [1] "Rango: 283"
## [1] "Varianza: 1082.1"
## [1] "Desviación estándar: 32.9"

## Variable: density 
## [1] "Clase: numeric"
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##  0.9901  0.9956  0.9968  0.9967  0.9978  1.0037 
## [1] "Rango: 0.01"
## [1] "Varianza: 0"
## [1] "Desviación estándar: 0"

## Variable: pH 
## [1] "Clase: numeric"
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   2.740   3.210   3.310   3.311   3.400   4.010 
## [1] "Rango: 1.27"
## [1] "Varianza: 0.02"
## [1] "Desviación estándar: 0.15"

## Variable: sulphates 
## [1] "Clase: numeric"
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##  0.3300  0.5500  0.6200  0.6581  0.7300  2.0000 
## [1] "Rango: 1.67"
## [1] "Varianza: 0.03"
## [1] "Desviación estándar: 0.17"

## Variable: alcohol 
## [1] "Clase: numeric"
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##    8.40    9.50   10.20   10.42   11.10   14.90 
## [1] "Rango: 6.5"
## [1] "Varianza: 1.14"
## [1] "Desviación estándar: 1.07"

## Variable: quality 
## [1] "Clase: integer"
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   3.000   5.000   6.000   5.636   6.000   8.000 
## [1] "Rango: 5"
## [1] "Varianza: 0.65"
## [1] "Desviación estándar: 0.81"