Regresión Lineal simple

# Borrar el environment
rm(list = ls())

# Librerías
library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr     1.2.1     ✔ readr     2.2.0
## ✔ forcats   1.0.1     ✔ stringr   1.6.0
## ✔ ggplot2   4.0.2     ✔ tibble    3.3.1
## ✔ lubridate 1.9.5     ✔ tidyr     1.3.2
## ✔ purrr     1.2.1     
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag()    masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(readxl)

Introducción

Se estudiará la relación que existe entre el contenido de nitrógeno y el contenido de carbono en diferentes muestras de suelo del conjunto de datos recoletados del archivo waynick.soil. Estas muestras fueron tomadas en dos campos agrícolas (Davis y Oakley) con tipos de suelo distintos, por lo que es posible observar cómo cambian ambas variables según las características del terreno.

Para desarrollar el estudio se utilizarán herramientas estadísticas en R, como la correlación de Pearson y la regresión lineal simple. Con estos métodos se busca identificar si existe una relación entre el nitrógeno y el carbono, es decir, si al aumentar una variable la otra también tiende a aumentar. Además, se realizará un gráfico de dispersión con una línea de regresión para representar visualmente el comportamiento de los datos.

Carga y exploración de los datos

# Cargar datos
data("waynick.soil")
## Warning in data("waynick.soil"): data set 'waynick.soil' not found
# Cargar datos
waynick.soil <- read_excel("PARCIAL/waynick.soil_data_simple_regression.xlsx")

# Ver primeras filas
head(waynick.soil)
## # A tibble: 6 × 6
##   field sample     x     y nitro carbon
##   <chr>  <dbl> <dbl> <dbl> <dbl>  <dbl>
## 1 Davis      1     0   210 0.104  1.17 
## 2 Davis      2     0   180 0.086  1.05 
## 3 Davis      3     0   150 0.08   0.958
## 4 Davis      4     0   120 0.092  1.07 
## 5 Davis      5     0    90 0.099  1.07 
## 6 Davis      6     0    60 0.098  1.13
# Estructura de los datos
str(waynick.soil)
## tibble [200 × 6] (S3: tbl_df/tbl/data.frame)
##  $ field : chr [1:200] "Davis" "Davis" "Davis" "Davis" ...
##  $ sample: num [1:200] 1 2 3 4 5 6 7 8 9 10 ...
##  $ x     : num [1:200] 0 0 0 0 0 0 0 0 30 30 ...
##  $ y     : num [1:200] 210 180 150 120 90 60 30 0 210 180 ...
##  $ nitro : num [1:200] 0.104 0.086 0.08 0.092 0.099 0.098 0.107 0.117 0.105 0.093 ...
##  $ carbon: num [1:200] 1.167 1.048 0.958 1.069 1.071 ...
# Resumen
summary(waynick.soil)
##     field               sample             x             y      
##  Length:200         Min.   :  1.00   Min.   :  0   Min.   :  0  
##  Class :character   1st Qu.: 25.75   1st Qu.: 60   1st Qu.: 60  
##  Mode  :character   Median : 50.50   Median :135   Median :105  
##                     Mean   : 50.50   Mean   :135   Mean   :105  
##                     3rd Qu.: 75.25   3rd Qu.:210   3rd Qu.:150  
##                     Max.   :100.00   Max.   :270   Max.   :210  
##      nitro             carbon      
##  Min.   :0.02100   Min.   :0.1790  
##  1st Qu.:0.03100   1st Qu.:0.4085  
##  Median :0.07000   Median :0.8995  
##  Mean   :0.06657   Mean   :0.7765  
##  3rd Qu.:0.10100   3rd Qu.:1.1002  
##  Max.   :0.12400   Max.   :1.9970

Correlación de Pearson

# Calcular correlación
correlacion <- cor(waynick.soil$nitro,
                   waynick.soil$carbon,
                   use = "complete.obs")

# Redondear
correlacion_r <- round(correlacion, 3)

# Mostrar resultado
cat("Coeficiente de correlación de Pearson (r):",
    correlacion_r)
## Coeficiente de correlación de Pearson (r): 0.963

Interpretación

El coeficiente de correlación de Pearson obtenido fue r = 0.963, esto nos indica que existe una relación positiva bastante fuerte entre el contenido de nitrógeno y el contenido de carbono en las muestras de suelo analizadas. Esto significa que, cuando el contenido de nitrógeno aumenta, el contenido de carbono también tiende a aumentar de manera muy similar. La correlación es cercana a 1, que quiere decir que ambas variables están altamente asociadas y presentan un comportamiento muy relacionado dentro de los suelos estudiados.

Además, este resultado sugiere que el nitrógeno y el carbono comparten una relación importante en la composición del suelo, posiblemente debido a procesos biológicos y a la presencia de materia orgánica. Aunque la relación es muy fuerte, no implica necesariamente causalidad, ya que pueden existir otros factores del suelo que también influyen en ambas variables. Entre estos pueden incluirse las condiciones climáticas (como temperatura y humedad), el tipo de suelo (textura y estructura), la actividad microbiana, el manejo agrícola (fertilización o cultivo) y la profundidad de muestreo. Todos estos elementos pueden afectar tanto el contenido de nitrógeno como el de carbono, modificando su comportamiento dentro del suelo.

Modelo de regresión lineal

# Ajuste del modelo
modelo <- lm(carbon ~ nitro,
             data = waynick.soil)

# Resumen del modelo
summary(modelo)
## 
## Call:
## lm(formula = carbon ~ nitro, data = waynick.soil)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.19877 -0.04211 -0.01243  0.03057  0.93390 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  0.10534    0.01502   7.015 3.56e-11 ***
## nitro       10.08169    0.19969  50.488  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.09873 on 198 degrees of freedom
## Multiple R-squared:  0.9279, Adjusted R-squared:  0.9276 
## F-statistic:  2549 on 1 and 198 DF,  p-value: < 2.2e-16

Interpretación

El modelo de regresión lineal nos muestra una relación positiva muy fuerte entre el nitrógeno y el carbono del suelo. Esto significa que cuando el nitrógeno aumenta, el carbono también tiende a aumentar. Además, el coeficiente del nitrógeno (10.08) nos indica que por cada unidad adicional de nitrógeno, el carbono aumenta aproximadamente 10 unidades. Por otro lado, el modelo es estadísticamente significativo con p < 2e-16, lo que significa que la relación entre el nitrógeno y el carbono es muy poco probable que haya ocurrido por un situación de azar. Es decir, que existe evidencia sólida de que el nitrógeno realmente está asociado con los cambios en el carbono del suelo.

Además, el valor de R² = 0.9279 indica que el 92.79% de la variación del carbono puede explicarse por el nitrógeno. Esto es un valor muy alto, lo que quiere decir que el modelo logra describir casi todo el comportamiento del carbono a partir del nitrógeno, dejando solo una pequeña parte sin explicar, esto muestra que el nitrógeno nos sirve para predecir el carbono en el suelo, debido a que es un indicador bastante fuerte, es decir, con solo conocer el nivel de nitrógeno se puede estimar con una alta precisión el contenido de carbono.

Análisis de varianza (ANOVA)

# ANOVA
anova(modelo)
## Analysis of Variance Table
## 
## Response: carbon
##            Df Sum Sq Mean Sq F value    Pr(>F)    
## nitro       1 24.847 24.8471    2549 < 2.2e-16 ***
## Residuals 198  1.930  0.0097                      
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Interpretación

El análisis de varianza nos muestra que el nitrógeno tiene un efecto altamente significativo sobre el carbono del suelo. Esto se evidencia en el valor F = 2549, que es muy alto, lo que indica que la variación explicada por el modelo es mucho mayor que la variación que no se logra explicar. Además, el p-value menor a 2.2e-16 indica que la relación entre el nitrógeno y el carbono es estadísticamente significativa, es decir, es prácticamente imposible que esta relación haya ocurrido por casualidad. Esto nos permite validar que el modelo tiene un alto nivel de validez, por lo cual puede ser utilizado con confianza.

En comparación, la variabilidad explicada por el nitrógeno es mucho mayor que la variabilidad de los residuos. Esto significa que el modelo logra representar muy bien el comportamiento del carbono a partir del nitrógeno, confirmando que es una variable clave para explicar su variación en el suelo.

Ecuación de la recta

# Coeficientes
intercepto <- round(coef(modelo)[1], 4)
pendiente  <- round(coef(modelo)[2], 4)

# R cuadrado
r2 <- round(summary(modelo)$r.squared, 4)

# Mostrar ecuación
cat("Ecuación del modelo:\n")
## Ecuación del modelo:
cat(paste("carbon =", intercepto, "+",
          pendiente, "* nitro"))
## carbon = 0.1053 + 10.0817 * nitro
cat("\n\nR² =", r2)
## 
## 
## R² = 0.9279

Interpretación

En la ecuación del modelo de regresión lineal es carbon = 0.1053 + 10.0817 × nitro, lo que indica una relación positiva muy fuerte entre el nitrógeno y el carbono del suelo. Esto significa que cuando el nitrógeno aumenta, el carbono también aumenta de forma importante, aproximadamente 10.08 unidades por cada unidad adicional de nitrógeno.

Por otro lado, el valor de R² = 0.9279 muestra que el 92.79% de la variación del carbono puede ser explicada por el nitrógeno. Esto indica que el modelo tiene una muy alta capacidad explicativa y que el nitrógeno es una variable clave para entender el comportamiento del carbono en el suelo.

Gráfico de dispersión y regresión lineal

ggplot(waynick.soil,
       aes(x = nitro,
           y = carbon)) +
  
  geom_point(color = "darkorange",
             size = 2,
             alpha = 0.7) +
  
  geom_smooth(method = "lm",
              se = TRUE,
              color = "green") +
  
  annotate("text",
           x = min(waynick.soil$nitro),
           y = max(waynick.soil$carbon),
           hjust = 0,
           label = paste("r =", correlacion_r,
                         "\nR² =", r2),
           size = 4) +
  
  labs(title = "Relación entre nitrógeno y carbono",
       x = "Contenido de nitrógeno (%)",
       y = "Contenido de carbono (%)") +
  
  theme_bw()
## `geom_smooth()` using formula = 'y ~ x'

Interpretación

El gráfico nos muestra la relación entre el contenido de nitrógeno y el contenido de carbono en las muestras de suelo. Cada punto representa una observación, y la línea verde representa la tendencia general del modelo de regresión lineal.

Se observa una relación positiva muy clara, cuando el nitrógeno aumenta, el carbono también aumenta. Esto coincide con los resultados estadísticos obtenidos anteriormente, donde se encontró una correlación alta (r = 0.963) y un R² de 0.9279, lo que indica que el modelo explica muy bien el comportamiento de los datos. Además, se puede ver que la mayoría de los puntos están cerca de la línea de regresión, lo que indica un buen ajuste del modelo. Aunque hay algunas variaciones en ciertos puntos, la tendencia general es muy consistente, lo que confirma que el nitrógeno es un excelente indicador del carbono en el suelo.

Conclusión

Se encontró una relación positiva muy fuerte entre el contenido de nitrógeno (nitro) y el contenido de carbono (carbon) en el suelo. Esto indica que, en general, cuando el nitrógeno aumenta, el carbono también tiende a aumentar de forma consistente. Los resultados estadísticos confirman esta relación: la correlación de Pearson fue muy alta (r = 0.963) y el modelo de regresión lineal presentó un R² de 0.9279, lo que significa que el nitrógeno explica gran parte de la variación del carbono. En conjunto, estos resultados muestran que el nitrógeno es un excelente predictor del carbono en este tipo de suelos.

Regresion lineal multiple

# Librerías
library(tidyverse)
library(corrplot)
## corrplot 0.95 loaded
library(PerformanceAnalytics)
## Loading required package: xts
## Loading required package: zoo
## 
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
## 
##     as.Date, as.Date.numeric
## 
## ######################### Warning from 'xts' package ##########################
## #                                                                             #
## # The dplyr lag() function breaks how base R's lag() function is supposed to  #
## # work, which breaks lag(my_xts). Calls to lag(my_xts) that you type or       #
## # source() into this session won't work correctly.                            #
## #                                                                             #
## # Use stats::lag() to make sure you're not using dplyr::lag(), or you can add #
## # conflictRules('dplyr', exclude = 'lag') to your .Rprofile to stop           #
## # dplyr from breaking base R's lag() function.                                #
## #                                                                             #
## # Code in packages is not affected. It's protected by R's namespace mechanism #
## # Set `options(xts.warn_dplyr_breaks_lag = FALSE)` to suppress this warning.  #
## #                                                                             #
## ###############################################################################
## 
## Attaching package: 'xts'
## The following objects are masked from 'package:dplyr':
## 
##     first, last
## 
## Attaching package: 'PerformanceAnalytics'
## The following object is masked from 'package:graphics':
## 
##     legend

Introducción

En este documento se analiza el conjunto de datos Wine Quality - Red Wine, el cual contiene información sobre diferentes propiedades fisicoquímicas de vinos tintos portugueses de la región de Vinho Verde. Además de las características químicas del vino, el dataset incluye una calificación de calidad obtenida mediante evaluación sensorial.

El propósito del análisis es estudiar cómo variables como la acidez, el pH, los sulfatos, el alcohol y otras propiedades del vino se relacionan con su calidad final. Para ello, se utilizan herramientas estadísticas en R, como el análisis de correlación y la regresión lineal múltiple, con el fin de identificar cuáles variables influyen de manera significativa sobre la calidad del vino tinto.

También se realizan gráficos de correlación y el ajuste de un modelo de regresión lineal para interpretar el comportamiento de los datos y evaluar la capacidad predictiva del modelo obtenido.

Descripción del dataset

El conjunto de datos Wine Quality - Red Wine contiene información sobre vinos tintos portugueses de la región de Vinho Verde. Fue creado para analizar la relación entre las propiedades fisicoquímicas del vino y la calidad asignada mediante evaluación sensorial.

Cada fila del dataset representa una muestra de vino tinto. Para cada muestra se registran variables químicas como la acidez fija y volátil, el ácido cítrico, el azúcar residual, los cloruros, el dióxido de azufre libre y total, la densidad, el pH, los sulfatos y el contenido de alcohol.

La variable principal del estudio es quality, que representa la calidad del vino en una escala numérica basada en la evaluación sensorial. El objetivo del dataset es analizar cómo estas propiedades químicas permiten explicar o predecir la calidad del vino.

Carga y descripción de los datos

# Cargar dataset
wine <- read_excel("PARCIAL/red_wine_data_multiple_linear_regression.xlsx")

# Ver primeras filas
head(wine)
## # A tibble: 6 × 12
##   fixed.acidity volatile.acidity citric.acid residual.sugar chlorides
##           <dbl>            <dbl>       <dbl>          <dbl>     <dbl>
## 1           7.4             0.7         0               1.9     0.076
## 2           7.8             0.88        0               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.7         0               1.9     0.076
## 6           7.4             0.66        0               1.8     0.075
## # ℹ 7 more variables: free.sulfur.dioxide <dbl>, total.sulfur.dioxide <dbl>,
## #   density <dbl>, pH <dbl>, sulphates <dbl>, alcohol <dbl>, quality <dbl>
# Estructura de los datos
str(wine)
## tibble [1,599 × 12] (S3: tbl_df/tbl/data.frame)
##  $ fixed.acidity       : num [1:1599] 7.4 7.8 7.8 11.2 7.4 7.4 7.9 7.3 7.8 7.5 ...
##  $ volatile.acidity    : num [1:1599] 0.7 0.88 0.76 0.28 0.7 0.66 0.6 0.65 0.58 0.5 ...
##  $ citric.acid         : num [1:1599] 0 0 0.04 0.56 0 0 0.06 0 0.02 0.36 ...
##  $ residual.sugar      : num [1:1599] 1.9 2.6 2.3 1.9 1.9 1.8 1.6 1.2 2 6.1 ...
##  $ chlorides           : num [1:1599] 0.076 0.098 0.092 0.075 0.076 0.075 0.069 0.065 0.073 0.071 ...
##  $ free.sulfur.dioxide : num [1:1599] 11 25 15 17 11 13 15 15 9 17 ...
##  $ total.sulfur.dioxide: num [1:1599] 34 67 54 60 34 40 59 21 18 102 ...
##  $ density             : num [1:1599] 0.998 0.997 0.997 0.998 0.998 ...
##  $ pH                  : num [1:1599] 3.51 3.2 3.26 3.16 3.51 3.51 3.3 3.39 3.36 3.35 ...
##  $ sulphates           : num [1:1599] 0.56 0.68 0.65 0.58 0.56 0.56 0.46 0.47 0.57 0.8 ...
##  $ alcohol             : num [1:1599] 9.4 9.8 9.8 9.8 9.4 9.4 9.4 10 9.5 10.5 ...
##  $ quality             : num [1:1599] 5 5 5 6 5 5 5 7 7 5 ...
# Resumen estadístico
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
# Nombres de 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"

Diagrama de correlación múltiple

# Matriz de correlación
correlaciones <- cor(wine)

# Gráfico de correlación
corrplot(
  correlaciones,
  method = "color",
  type = "upper",
  order = "hclust",
  tl.col = "black",
  tl.srt = 45
)

Interpretación

Este gráfico es una matriz de correlación, y sirve para ver qué tan relacionadas están las variables del vino entre sí. Los colores indican la fuerza y dirección de la relación: el azul oscuro significa una relación positiva fuerte (cuando una variable aumenta, la otra también), mientras que el rojo indica una relación negativa fuerte (cuando una aumenta, la otra disminuye). Los colores más claros indican relaciones débiles o casi nulas.

En relación con la calidad del vino (quality), se puede observar que el alcohol tiene una relación positiva, lo que significa que los vinos con mayor contenido de alcohol tienden a tener mejor calidad. También los sulphates muestran una relación positiva moderada con la calidad, aunque no tan fuerte como el alcohol.

Por otro lado, la acidez volátil (volatile.acidity) tiene una relación negativa con la calidad, lo que indica que cuando esta acidez aumenta, la calidad del vino tiende a disminuir. Esto sugiere que niveles altos de esta variable no son deseables en vinos de mejor calidad.

Finalmente, variables como el azúcar residual, el pH y los sulfuros (free y total sulfur dioxide) muestran relaciones más débiles con la calidad, lo que significa que no influyen tanto de forma directa en la puntuación del vino. En general, el gráfico ayuda a identificar que el alcohol y la acidez volátil son las variables más importantes relacionadas con la calidad del vino.

Matriz de dispersión

chart.Correlation(
  wine,
  histogram = T,
  pch = 19
)

## Interpretación: Este gráfico es una matriz de correlación de Pearson, y permite ver cómo se relacionan todas las variables del vino entre sí. En cada cuadro se muestra la relación entre dos variables: los puntos negros representan los datos, la línea roja muestra la tendencia, y los números indican la fuerza de la correlación. Cuando el valor está más cerca de 1, la relación es fuerte y positiva; cuando está cerca de -1, es fuerte y negativa; y cuando está cerca de 0, no hay una relación clara.

En general, se observa que el alcohol tiene una relación positiva con la calidad del vino, lo que significa que a mayor contenido de alcohol, mayor suele ser la calidad. También los sulfatos muestran una relación positiva moderada con la calidad, aunque menos fuerte.

Por otro lado, la acidez volátil presenta una relación negativa con la calidad, lo que indica que cuando esta aumenta, la calidad del vino tiende a disminuir. Esto es importante porque sugiere que niveles altos de esta variable afectan negativamente la evaluación del vino.

Las demás variables, como el azúcar residual, el pH y los sulfuros, muestran relaciones más débiles o inconsistentes con la calidad, lo que indica que no influyen de manera tan directa. En resumen, el gráfico ayuda a identificar que las variables más importantes relacionadas con la calidad del vino son el alcohol (positiva) y la acidez volátil (negativa).

Modelo de regresión lineal múltiple

# Modelo vacío (solo intercepto)
RLM_vacio <- lm(quality ~ 1, data = wine)
summary(RLM_vacio)
## 
## Call:
## lm(formula = quality ~ 1, data = wine)
## 
## Residuals:
##    Min     1Q Median     3Q    Max 
## -2.636 -0.636  0.364  0.364  2.364 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)   5.6360     0.0202   279.1   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.8076 on 1598 degrees of freedom
# Modelo completo (todas las variables)
RLM_Completo <- lm(quality ~ ., data = wine)
summary(RLM_Completo)
## 
## Call:
## lm(formula = quality ~ ., data = wine)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -2.68911 -0.36652 -0.04699  0.45202  2.02498 
## 
## Coefficients:
##                        Estimate Std. Error t value Pr(>|t|)    
## (Intercept)           2.197e+01  2.119e+01   1.036   0.3002    
## fixed.acidity         2.499e-02  2.595e-02   0.963   0.3357    
## volatile.acidity     -1.084e+00  1.211e-01  -8.948  < 2e-16 ***
## citric.acid          -1.826e-01  1.472e-01  -1.240   0.2150    
## residual.sugar        1.633e-02  1.500e-02   1.089   0.2765    
## chlorides            -1.874e+00  4.193e-01  -4.470 8.37e-06 ***
## free.sulfur.dioxide   4.361e-03  2.171e-03   2.009   0.0447 *  
## total.sulfur.dioxide -3.265e-03  7.287e-04  -4.480 8.00e-06 ***
## density              -1.788e+01  2.163e+01  -0.827   0.4086    
## pH                   -4.137e-01  1.916e-01  -2.159   0.0310 *  
## sulphates             9.163e-01  1.143e-01   8.014 2.13e-15 ***
## alcohol               2.762e-01  2.648e-02  10.429  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.648 on 1587 degrees of freedom
## Multiple R-squared:  0.3606, Adjusted R-squared:  0.3561 
## F-statistic: 81.35 on 11 and 1587 DF,  p-value: < 2.2e-16
AIC(RLM_Completo)
## [1] 3164.277
# Forward selection
RLM_Forward <- step(RLM_vacio,
                    scope = list(lower = RLM_vacio, upper = RLM_Completo),
                    direction = "forward")
## Start:  AIC=-682.5
## quality ~ 1
## 
##                        Df Sum of Sq     RSS      AIC
## + alcohol               1   236.295  805.87 -1091.65
## + volatile.acidity      1   158.967  883.20  -945.14
## + sulphates             1    65.865  976.30  -784.89
## + citric.acid           1    53.405  988.76  -764.61
## + total.sulfur.dioxide  1    35.707 1006.46  -736.24
## + density               1    31.887 1010.28  -730.19
## + chlorides             1    17.318 1024.85  -707.29
## + fixed.acidity         1    16.038 1026.13  -705.29
## + pH                    1     3.473 1038.69  -685.84
## + free.sulfur.dioxide   1     2.674 1039.49  -684.61
## <none>                              1042.17  -682.50
## + residual.sugar        1     0.197 1041.97  -680.80
## 
## Step:  AIC=-1091.65
## quality ~ alcohol
## 
##                        Df Sum of Sq    RSS     AIC
## + volatile.acidity      1    94.074 711.80 -1288.1
## + sulphates             1    44.977 760.89 -1181.5
## + citric.acid           1    31.953 773.92 -1154.3
## + pH                    1    26.362 779.51 -1142.8
## + fixed.acidity         1    24.623 781.25 -1139.3
## + total.sulfur.dioxide  1     8.270 797.60 -1106.2
## + density               1     5.203 800.67 -1100.0
## <none>                              805.87 -1091.7
## + chlorides             1     0.611 805.26 -1090.9
## + free.sulfur.dioxide   1     0.325 805.55 -1090.3
## + residual.sugar        1     0.041 805.83 -1089.7
## 
## Step:  AIC=-1288.14
## quality ~ alcohol + volatile.acidity
## 
##                        Df Sum of Sq    RSS     AIC
## + sulphates             1   19.6916 692.10 -1331.0
## + total.sulfur.dioxide  1    6.3730 705.42 -1300.5
## + pH                    1    5.9515 705.84 -1299.6
## + fixed.acidity         1    5.7061 706.09 -1299.0
## + density               1    1.9410 709.86 -1290.5
## <none>                              711.80 -1288.1
## + free.sulfur.dioxide   1    0.6621 711.13 -1287.6
## + chlorides             1    0.3762 711.42 -1287.0
## + citric.acid           1    0.1936 711.60 -1286.6
## + residual.sugar        1    0.0101 711.79 -1286.2
## 
## Step:  AIC=-1331
## quality ~ alcohol + volatile.acidity + sulphates
## 
##                        Df Sum of Sq    RSS     AIC
## + total.sulfur.dioxide  1    8.2176 683.89 -1348.1
## + chlorides             1    7.4925 684.61 -1346.4
## + fixed.acidity         1    3.3282 688.78 -1336.7
## + pH                    1    3.0454 689.06 -1336.0
## + free.sulfur.dioxide   1    1.1129 690.99 -1331.6
## <none>                              692.10 -1331.0
## + citric.acid           1    0.2522 691.85 -1329.6
## + density               1    0.2222 691.88 -1329.5
## + residual.sugar        1    0.0143 692.09 -1329.0
## 
## Step:  AIC=-1348.1
## quality ~ alcohol + volatile.acidity + sulphates + total.sulfur.dioxide
## 
##                       Df Sum of Sq    RSS     AIC
## + chlorides            1    8.0370 675.85 -1365.0
## + pH                   1    3.3094 680.58 -1353.8
## + fixed.acidity        1    2.1037 681.78 -1351.0
## + free.sulfur.dioxide  1    1.3557 682.53 -1349.3
## <none>                             683.89 -1348.1
## + residual.sugar       1    0.2634 683.62 -1346.7
## + density              1    0.1077 683.78 -1346.3
## + citric.acid          1    0.0730 683.81 -1346.3
## 
## Step:  AIC=-1365
## quality ~ alcohol + volatile.acidity + sulphates + total.sulfur.dioxide + 
##     chlorides
## 
##                       Df Sum of Sq    RSS     AIC
## + pH                   1    5.9189 669.93 -1377.1
## + fixed.acidity        1    2.4065 673.44 -1368.7
## + free.sulfur.dioxide  1    1.2403 674.61 -1365.9
## <none>                             675.85 -1365.0
## + residual.sugar       1    0.5531 675.30 -1364.3
## + citric.acid          1    0.1615 675.69 -1363.4
## + density              1    0.1526 675.70 -1363.4
## 
## Step:  AIC=-1377.06
## quality ~ alcohol + volatile.acidity + sulphates + total.sulfur.dioxide + 
##     chlorides + pH
## 
##                       Df Sum of Sq    RSS     AIC
## + free.sulfur.dioxide  1   2.39413 667.54 -1380.8
## <none>                             669.93 -1377.1
## + citric.acid          1   0.80525 669.13 -1377.0
## + residual.sugar       1   0.28390 669.65 -1375.7
## + density              1   0.04468 669.89 -1375.2
## + fixed.acidity        1   0.01040 669.92 -1375.1
## 
## Step:  AIC=-1380.79
## quality ~ alcohol + volatile.acidity + sulphates + total.sulfur.dioxide + 
##     chlorides + pH + free.sulfur.dioxide
## 
##                  Df Sum of Sq    RSS     AIC
## <none>                        667.54 -1380.8
## + citric.acid     1   0.47480 667.06 -1379.9
## + residual.sugar  1   0.16673 667.37 -1379.2
## + density         1   0.03079 667.51 -1378.9
## + fixed.acidity   1   0.00663 667.53 -1378.8
summary(RLM_Forward)
## 
## Call:
## lm(formula = quality ~ alcohol + volatile.acidity + sulphates + 
##     total.sulfur.dioxide + chlorides + pH + free.sulfur.dioxide, 
##     data = wine)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -2.68918 -0.36757 -0.04653  0.46081  2.02954 
## 
## Coefficients:
##                        Estimate Std. Error t value Pr(>|t|)    
## (Intercept)           4.4300987  0.4029168  10.995  < 2e-16 ***
## alcohol               0.2893028  0.0167958  17.225  < 2e-16 ***
## volatile.acidity     -1.0127527  0.1008429 -10.043  < 2e-16 ***
## sulphates             0.8826651  0.1099084   8.031 1.86e-15 ***
## total.sulfur.dioxide -0.0034822  0.0006868  -5.070 4.43e-07 ***
## chlorides            -2.0178138  0.3975417  -5.076 4.31e-07 ***
## pH                   -0.4826614  0.1175581  -4.106 4.23e-05 ***
## free.sulfur.dioxide   0.0050774  0.0021255   2.389    0.017 *  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.6477 on 1591 degrees of freedom
## Multiple R-squared:  0.3595, Adjusted R-squared:  0.3567 
## F-statistic: 127.6 on 7 and 1591 DF,  p-value: < 2.2e-16
AIC(RLM_Forward)
## [1] 3158.977
# Backward elimination
RLM_Backward <- step(RLM_Completo,
                     scope = list(lower = RLM_vacio, upper = RLM_Completo),
                     direction = "backward")
## Start:  AIC=-1375.49
## quality ~ fixed.acidity + volatile.acidity + citric.acid + residual.sugar + 
##     chlorides + free.sulfur.dioxide + total.sulfur.dioxide + 
##     density + pH + sulphates + alcohol
## 
##                        Df Sum of Sq    RSS     AIC
## - density               1     0.287 666.70 -1376.8
## - fixed.acidity         1     0.389 666.80 -1376.5
## - residual.sugar        1     0.498 666.91 -1376.3
## - citric.acid           1     0.646 667.06 -1375.9
## <none>                              666.41 -1375.5
## - free.sulfur.dioxide   1     1.694 668.10 -1373.4
## - pH                    1     1.957 668.37 -1372.8
## - chlorides             1     8.391 674.80 -1357.5
## - total.sulfur.dioxide  1     8.427 674.84 -1357.4
## - sulphates             1    26.971 693.38 -1314.0
## - volatile.acidity      1    33.620 700.03 -1298.8
## - alcohol               1    45.672 712.08 -1271.5
## 
## Step:  AIC=-1376.8
## quality ~ fixed.acidity + volatile.acidity + citric.acid + residual.sugar + 
##     chlorides + free.sulfur.dioxide + total.sulfur.dioxide + 
##     pH + sulphates + alcohol
## 
##                        Df Sum of Sq    RSS     AIC
## - fixed.acidity         1     0.108 666.81 -1378.5
## - residual.sugar        1     0.231 666.93 -1378.2
## - citric.acid           1     0.654 667.35 -1377.2
## <none>                              666.70 -1376.8
## - free.sulfur.dioxide   1     1.829 668.53 -1374.4
## - pH                    1     4.325 671.02 -1368.5
## - total.sulfur.dioxide  1     8.728 675.43 -1358.0
## - chlorides             1     8.761 675.46 -1357.9
## - sulphates             1    27.287 693.98 -1314.7
## - volatile.acidity      1    35.000 701.70 -1297.0
## - alcohol               1   119.669 786.37 -1114.8
## 
## Step:  AIC=-1378.54
## quality ~ volatile.acidity + citric.acid + residual.sugar + chlorides + 
##     free.sulfur.dioxide + total.sulfur.dioxide + pH + sulphates + 
##     alcohol
## 
##                        Df Sum of Sq    RSS     AIC
## - residual.sugar        1     0.257 667.06 -1379.9
## - citric.acid           1     0.565 667.37 -1379.2
## <none>                              666.81 -1378.5
## - free.sulfur.dioxide   1     1.901 668.71 -1376.0
## - pH                    1     7.065 673.87 -1363.7
## - chlorides             1     9.940 676.75 -1356.9
## - total.sulfur.dioxide  1    10.031 676.84 -1356.7
## - sulphates             1    27.673 694.48 -1315.5
## - volatile.acidity      1    36.234 703.04 -1295.9
## - alcohol               1   120.633 787.44 -1114.7
## 
## Step:  AIC=-1379.93
## quality ~ volatile.acidity + citric.acid + chlorides + free.sulfur.dioxide + 
##     total.sulfur.dioxide + pH + sulphates + alcohol
## 
##                        Df Sum of Sq    RSS     AIC
## - citric.acid           1     0.475 667.54 -1380.8
## <none>                              667.06 -1379.9
## - free.sulfur.dioxide   1     2.064 669.13 -1377.0
## - pH                    1     7.138 674.20 -1364.9
## - total.sulfur.dioxide  1     9.828 676.89 -1358.5
## - chlorides             1     9.832 676.89 -1358.5
## - sulphates             1    27.446 694.51 -1317.5
## - volatile.acidity      1    35.977 703.04 -1297.9
## - alcohol               1   122.667 789.73 -1112.0
## 
## Step:  AIC=-1380.79
## quality ~ volatile.acidity + chlorides + free.sulfur.dioxide + 
##     total.sulfur.dioxide + pH + sulphates + alcohol
## 
##                        Df Sum of Sq    RSS     AIC
## <none>                              667.54 -1380.8
## - free.sulfur.dioxide   1     2.394 669.93 -1377.1
## - pH                    1     7.073 674.61 -1365.9
## - total.sulfur.dioxide  1    10.787 678.32 -1357.2
## - chlorides             1    10.809 678.35 -1357.1
## - sulphates             1    27.060 694.60 -1319.2
## - volatile.acidity      1    42.318 709.85 -1284.5
## - alcohol               1   124.483 792.02 -1109.4
summary(RLM_Backward)
## 
## Call:
## lm(formula = quality ~ volatile.acidity + chlorides + free.sulfur.dioxide + 
##     total.sulfur.dioxide + pH + sulphates + alcohol, data = wine)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -2.68918 -0.36757 -0.04653  0.46081  2.02954 
## 
## Coefficients:
##                        Estimate Std. Error t value Pr(>|t|)    
## (Intercept)           4.4300987  0.4029168  10.995  < 2e-16 ***
## volatile.acidity     -1.0127527  0.1008429 -10.043  < 2e-16 ***
## chlorides            -2.0178138  0.3975417  -5.076 4.31e-07 ***
## free.sulfur.dioxide   0.0050774  0.0021255   2.389    0.017 *  
## total.sulfur.dioxide -0.0034822  0.0006868  -5.070 4.43e-07 ***
## pH                   -0.4826614  0.1175581  -4.106 4.23e-05 ***
## sulphates             0.8826651  0.1099084   8.031 1.86e-15 ***
## alcohol               0.2893028  0.0167958  17.225  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.6477 on 1591 degrees of freedom
## Multiple R-squared:  0.3595, Adjusted R-squared:  0.3567 
## F-statistic: 127.6 on 7 and 1591 DF,  p-value: < 2.2e-16
AIC(RLM_Backward)
## [1] 3158.977
# Stepwise (both directions)
RLM_Stepwise <- step(RLM_vacio,
                     scope = list(lower = RLM_vacio, upper = RLM_Completo),
                     direction = "both")
## Start:  AIC=-682.5
## quality ~ 1
## 
##                        Df Sum of Sq     RSS      AIC
## + alcohol               1   236.295  805.87 -1091.65
## + volatile.acidity      1   158.967  883.20  -945.14
## + sulphates             1    65.865  976.30  -784.89
## + citric.acid           1    53.405  988.76  -764.61
## + total.sulfur.dioxide  1    35.707 1006.46  -736.24
## + density               1    31.887 1010.28  -730.19
## + chlorides             1    17.318 1024.85  -707.29
## + fixed.acidity         1    16.038 1026.13  -705.29
## + pH                    1     3.473 1038.69  -685.84
## + free.sulfur.dioxide   1     2.674 1039.49  -684.61
## <none>                              1042.17  -682.50
## + residual.sugar        1     0.197 1041.97  -680.80
## 
## Step:  AIC=-1091.65
## quality ~ alcohol
## 
##                        Df Sum of Sq     RSS     AIC
## + volatile.acidity      1    94.074  711.80 -1288.1
## + sulphates             1    44.977  760.89 -1181.5
## + citric.acid           1    31.953  773.92 -1154.3
## + pH                    1    26.362  779.51 -1142.8
## + fixed.acidity         1    24.623  781.25 -1139.3
## + total.sulfur.dioxide  1     8.270  797.60 -1106.2
## + density               1     5.203  800.67 -1100.0
## <none>                               805.87 -1091.7
## + chlorides             1     0.611  805.26 -1090.9
## + free.sulfur.dioxide   1     0.325  805.55 -1090.3
## + residual.sugar        1     0.041  805.83 -1089.7
## - alcohol               1   236.295 1042.17  -682.5
## 
## Step:  AIC=-1288.14
## quality ~ alcohol + volatile.acidity
## 
##                        Df Sum of Sq    RSS      AIC
## + sulphates             1    19.692 692.10 -1331.00
## + total.sulfur.dioxide  1     6.373 705.42 -1300.52
## + pH                    1     5.952 705.84 -1299.56
## + fixed.acidity         1     5.706 706.09 -1299.01
## + density               1     1.941 709.86 -1290.50
## <none>                              711.80 -1288.14
## + free.sulfur.dioxide   1     0.662 711.13 -1287.63
## + chlorides             1     0.376 711.42 -1286.98
## + citric.acid           1     0.194 711.60 -1286.57
## + residual.sugar        1     0.010 711.79 -1286.16
## - volatile.acidity      1    94.074 805.87 -1091.65
## - alcohol               1   171.402 883.20  -945.14
## 
## Step:  AIC=-1331
## quality ~ alcohol + volatile.acidity + sulphates
## 
##                        Df Sum of Sq    RSS      AIC
## + total.sulfur.dioxide  1     8.218 683.89 -1348.10
## + chlorides             1     7.493 684.61 -1346.40
## + fixed.acidity         1     3.328 688.78 -1336.70
## + pH                    1     3.045 689.06 -1336.05
## + free.sulfur.dioxide   1     1.113 690.99 -1331.57
## <none>                              692.10 -1331.00
## + citric.acid           1     0.252 691.85 -1329.58
## + density               1     0.222 691.88 -1329.51
## + residual.sugar        1     0.014 692.09 -1329.03
## - sulphates             1    19.692 711.80 -1288.14
## - volatile.acidity      1    68.789 760.89 -1181.48
## - alcohol               1   166.109 858.21  -989.03
## 
## Step:  AIC=-1348.1
## quality ~ alcohol + volatile.acidity + sulphates + total.sulfur.dioxide
## 
##                        Df Sum of Sq    RSS     AIC
## + chlorides             1     8.037 675.85 -1365.0
## + pH                    1     3.309 680.58 -1353.8
## + fixed.acidity         1     2.104 681.78 -1351.0
## + free.sulfur.dioxide   1     1.356 682.53 -1349.3
## <none>                              683.89 -1348.1
## + residual.sugar        1     0.263 683.62 -1346.7
## + density               1     0.108 683.78 -1346.3
## + citric.acid           1     0.073 683.81 -1346.3
## - total.sulfur.dioxide  1     8.218 692.10 -1331.0
## - sulphates             1    21.536 705.42 -1300.5
## - volatile.acidity      1    66.047 749.93 -1202.7
## - alcohol               1   145.552 829.44 -1041.6
## 
## Step:  AIC=-1365
## quality ~ alcohol + volatile.acidity + sulphates + total.sulfur.dioxide + 
##     chlorides
## 
##                        Df Sum of Sq    RSS     AIC
## + pH                    1     5.919 669.93 -1377.1
## + fixed.acidity         1     2.407 673.44 -1368.7
## + free.sulfur.dioxide   1     1.240 674.61 -1365.9
## <none>                              675.85 -1365.0
## + residual.sugar        1     0.553 675.30 -1364.3
## + citric.acid           1     0.162 675.69 -1363.4
## + density               1     0.153 675.70 -1363.4
## - chlorides             1     8.037 683.89 -1348.1
## - total.sulfur.dioxide  1     8.762 684.61 -1346.4
## - sulphates             1    29.201 705.05 -1299.4
## - volatile.acidity      1    58.869 734.72 -1233.5
## - alcohol               1   119.894 795.74 -1105.9
## 
## Step:  AIC=-1377.06
## quality ~ alcohol + volatile.acidity + sulphates + total.sulfur.dioxide + 
##     chlorides + pH
## 
##                        Df Sum of Sq    RSS     AIC
## + free.sulfur.dioxide   1     2.394 667.54 -1380.8
## <none>                              669.93 -1377.1
## + citric.acid           1     0.805 669.13 -1377.0
## + residual.sugar        1     0.284 669.65 -1375.7
## + density               1     0.045 669.89 -1375.2
## + fixed.acidity         1     0.010 669.92 -1375.1
## - pH                    1     5.919 675.85 -1365.0
## - total.sulfur.dioxide  1     9.233 679.16 -1357.2
## - chlorides             1    10.647 680.58 -1353.8
## - sulphates             1    27.445 697.38 -1314.9
## - volatile.acidity      1    44.972 714.90 -1275.2
## - alcohol               1   125.812 795.74 -1103.9
## 
## Step:  AIC=-1380.79
## quality ~ alcohol + volatile.acidity + sulphates + total.sulfur.dioxide + 
##     chlorides + pH + free.sulfur.dioxide
## 
##                        Df Sum of Sq    RSS     AIC
## <none>                              667.54 -1380.8
## + citric.acid           1     0.475 667.06 -1379.9
## + residual.sugar        1     0.167 667.37 -1379.2
## + density               1     0.031 667.51 -1378.9
## + fixed.acidity         1     0.007 667.53 -1378.8
## - free.sulfur.dioxide   1     2.394 669.93 -1377.1
## - pH                    1     7.073 674.61 -1365.9
## - total.sulfur.dioxide  1    10.787 678.32 -1357.2
## - chlorides             1    10.809 678.35 -1357.1
## - sulphates             1    27.060 694.60 -1319.2
## - volatile.acidity      1    42.318 709.85 -1284.5
## - alcohol               1   124.483 792.02 -1109.4
summary(RLM_Stepwise)
## 
## Call:
## lm(formula = quality ~ alcohol + volatile.acidity + sulphates + 
##     total.sulfur.dioxide + chlorides + pH + free.sulfur.dioxide, 
##     data = wine)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -2.68918 -0.36757 -0.04653  0.46081  2.02954 
## 
## Coefficients:
##                        Estimate Std. Error t value Pr(>|t|)    
## (Intercept)           4.4300987  0.4029168  10.995  < 2e-16 ***
## alcohol               0.2893028  0.0167958  17.225  < 2e-16 ***
## volatile.acidity     -1.0127527  0.1008429 -10.043  < 2e-16 ***
## sulphates             0.8826651  0.1099084   8.031 1.86e-15 ***
## total.sulfur.dioxide -0.0034822  0.0006868  -5.070 4.43e-07 ***
## chlorides            -2.0178138  0.3975417  -5.076 4.31e-07 ***
## pH                   -0.4826614  0.1175581  -4.106 4.23e-05 ***
## free.sulfur.dioxide   0.0050774  0.0021255   2.389    0.017 *  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.6477 on 1591 degrees of freedom
## Multiple R-squared:  0.3595, Adjusted R-squared:  0.3567 
## F-statistic: 127.6 on 7 and 1591 DF,  p-value: < 2.2e-16
AIC(RLM_Stepwise)
## [1] 3158.977
# Modelo propio (uno solo)
RLM_propio <- lm(quality ~ alcohol + sulphates + citric.acid + pH,
                 data = wine)
summary(RLM_propio)
## 
## Call:
## lm(formula = quality ~ alcohol + sulphates + citric.acid + pH, 
##     data = wine)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -2.81727 -0.36726 -0.09651  0.50237  2.13121 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  2.66466    0.45890   5.807 7.68e-09 ***
## alcohol      0.35427    0.01705  20.777  < 2e-16 ***
## sulphates    0.79642    0.10644   7.483 1.20e-13 ***
## citric.acid  0.33538    0.11109   3.019  0.00258 ** 
## pH          -0.40356    0.13900  -2.903  0.00374 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.6826 on 1594 degrees of freedom
## Multiple R-squared:  0.2874, Adjusted R-squared:  0.2856 
## F-statistic: 160.7 on 4 and 1594 DF,  p-value: < 2.2e-16
AIC(RLM_propio)
## [1] 3323.476
# Tabla de modelos

tabla_modelos <- data.frame(
  Modelo = c("Vacío", "Completo", "Forward", "Backward", "Stepwise", "Propio"),

  R2 = c(
    summary(RLM_vacio)$r.squared,
    summary(RLM_Completo)$r.squared,
    summary(RLM_Forward)$r.squared,
    summary(RLM_Backward)$r.squared,
    summary(RLM_Stepwise)$r.squared,
    summary(RLM_propio)$r.squared
  ),

  R2_Ajustado = c(
    summary(RLM_vacio)$adj.r.squared,
    summary(RLM_Completo)$adj.r.squared,
    summary(RLM_Forward)$adj.r.squared,
    summary(RLM_Backward)$adj.r.squared,
    summary(RLM_Stepwise)$adj.r.squared,
    summary(RLM_propio)$adj.r.squared
  ),

  AIC = c(
    AIC(RLM_vacio),
    AIC(RLM_Completo),
    AIC(RLM_Forward),
    AIC(RLM_Backward),
    AIC(RLM_Stepwise),
    AIC(RLM_propio)
  )
)

tabla_modelos
##     Modelo        R2 R2_Ajustado      AIC
## 1    Vacío 0.0000000   0.0000000 3857.269
## 2 Completo 0.3605517   0.3561195 3164.277
## 3  Forward 0.3594709   0.3566527 3158.977
## 4 Backward 0.3594709   0.3566527 3158.977
## 5 Stepwise 0.3594709   0.3566527 3158.977
## 6   Propio 0.2873978   0.2856096 3323.476

ANOVA

anova(RLM_Stepwise)
## Analysis of Variance Table
## 
## Response: quality
##                        Df Sum Sq Mean Sq  F value    Pr(>F)    
## alcohol                 1 236.29 236.295 563.1819 < 2.2e-16 ***
## volatile.acidity        1  94.07  94.074 224.2154 < 2.2e-16 ***
## sulphates               1  19.69  19.692  46.9327 1.047e-11 ***
## total.sulfur.dioxide    1   8.22   8.218  19.5857 1.027e-05 ***
## chlorides               1   8.04   8.037  19.1552 1.284e-05 ***
## pH                      1   5.92   5.919  14.1070 0.0001789 ***
## free.sulfur.dioxide     1   2.39   2.394   5.7061 0.0170216 *  
## Residuals            1591 667.54   0.420                       
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Interpretación

Las características que mayor influencia tienen sobre la calidad del vino son la acidez volátil (F = 378.Las características que mayor influencia tienen sobre la calidad del vino son la acidez volátil (F = 378.88), el alcohol (F = 296.69) y los sulfatos (F = 121.96), los tres con valores p inferiores a 2.2e-16, lo que los convierte en predictores altamente significativos. El dióxido de azufre total (F = 59.75) y los cloruros (F = 27.47) también son significativos, aunque con un impacto notablemente menor, mientras que el dióxido de azufre libre (F = 7.27, p = 0.007) presenta una influencia leve pero estadísticamente válida.

El pH es la única variable que no resulta significativa (F = 0.87, p = 0.35), lo que indica que no contribuye de manera relevante a explicar la calidad del vino y podría eliminarse del modelo sin afectar su capacidad predictiva.

Coeficientes del modelo

# Coeficientes
coef(RLM_Stepwise)
##          (Intercept)              alcohol     volatile.acidity 
##          4.430098698          0.289302753         -1.012752700 
##            sulphates total.sulfur.dioxide            chlorides 
##          0.882665133         -0.003482245         -2.017813817 
##                   pH  free.sulfur.dioxide 
##         -0.482661444          0.005077370
summary(RLM_Stepwise)$coefficients
##                          Estimate   Std. Error    t value     Pr(>|t|)
## (Intercept)           4.430098698 0.4029168141  10.995070 3.726733e-27
## alcohol               0.289302753 0.0167957884  17.224720 4.236397e-61
## volatile.acidity     -1.012752700 0.1008429430 -10.042871 4.721084e-23
## sulphates             0.882665133 0.1099084470   8.030913 1.864837e-15
## total.sulfur.dioxide -0.003482245 0.0006867825  -5.070376 4.434834e-07
## chlorides            -2.017813817 0.3975417351  -5.075728 4.313717e-07
## pH                   -0.482661444 0.1175580514  -4.105729 4.234962e-05
## free.sulfur.dioxide   0.005077370 0.0021255302   2.388754 1.702156e-02

R-cuadrado ajustado

# R cuadrado ajustado
r2_ajustado <- summary(RLM_Stepwise)$adj.r.squared

cat("R-cuadrado ajustado =", round(r2_ajustado, 4))
## R-cuadrado ajustado = 0.3567

Interpretación

Los coeficientes indican la dirección y magnitud del efecto de cada variable sobre la calidad del vino. Las variables que más reducen la calidad son los cloruros (−2.02) y la acidez volátil (−1.01), seguidas del pH (−0.48); es decir, a mayor valor de estas variables, menor calidad esperada. Por el contrario, los sulfatos (0.88) y el alcohol (0.29) tienen un efecto positivo, mientras que los dióxidos de azufre libre y total presentan coeficientes muy cercanos a cero, lo que confirma su influencia mínima sobre la calidad. El R² ajustado de 0.357 indica que el modelo explica aproximadamente el 35.7% de la variabilidad en la calidad del vino, lo que sugiere que, si bien las variables incluidas capturan una parte importante de la variación, existe un 64.3% que depende de factores no considerados en el modelo, como características organolépticas, origen de la uva u otras variables no medidas.

Variables significativas

summary(RLM_Stepwise)$coefficients
##                          Estimate   Std. Error    t value     Pr(>|t|)
## (Intercept)           4.430098698 0.4029168141  10.995070 3.726733e-27
## alcohol               0.289302753 0.0167957884  17.224720 4.236397e-61
## volatile.acidity     -1.012752700 0.1008429430 -10.042871 4.721084e-23
## sulphates             0.882665133 0.1099084470   8.030913 1.864837e-15
## total.sulfur.dioxide -0.003482245 0.0006867825  -5.070376 4.434834e-07
## chlorides            -2.017813817 0.3975417351  -5.075728 4.313717e-07
## pH                   -0.482661444 0.1175580514  -4.105729 4.234962e-05
## free.sulfur.dioxide   0.005077370 0.0021255302   2.388754 1.702156e-02

Interpretación

Todos los predictores del modelo resultan estadísticamente significativos, incluyendo el pH, que en el ANOVA no lo era. La variable con mayor efecto negativo sobre la calidad es la acidez volátil (β = −1.01, p = 4.72e-23) y los cloruros (β = −2.02, p = 4.31e-07), lo que indica que vinos con alta acidez volátil o alto contenido de cloruros tienden a tener menor calidad. En sentido contrario, el alcohol es el predictor positivo más relevante (β = 0.29, p = 4.24e-61), seguido de los sulfatos (β = 0.88, p = 1.86e-15), confirmando que mayores niveles de estas variables se asocian con mejor calidad.

El dióxido de azufre libre (β = 0.005) y el total (β = −0.003) son significativos estadísticamente pero con coeficientes prácticamente nulos, lo que significa que su efecto real sobre la calidad es mínimo aunque detectable. Vale destacar que el pH resultó significativo en este análisis (p = 4.23e-05), a diferencia del ANOVA, lo que sugiere que su efecto sobre la calidad emerge cuando se controla simultáneamente por las demás variables del modelo.

Gráfico diagnóstico del modelo

plot(RLM_Stepwise)

## Interpretación El gráfico de Residuals vs Fitted muestra que los residuos no se distribuyen de forma completamente aleatoria, sino que presentan un patrón en bandas horizontales, lo cual es esperable dado que la variable respuesta (calidad) es discreta y no continua. La línea roja se mantiene relativamente plana, lo que sugiere que no hay una tendencia sistemática grave, aunque la varianza no es perfectamente constante.

El Q-Q Residuals revela que los residuos se desvían de la normalidad en las colas, especialmente en los extremos, donde los puntos se alejan de la línea diagonal punteada. Esto indica que el modelo subestima o sobreestima la calidad en los vinos con puntuaciones muy bajas o muy altas, lo cual es una limitación importante del modelo lineal aplicado a una variable de escala ordinal.

El gráfico Scale-Location confirma cierta heteroscedasticidad, ya que la dispersión de los residuos no es uniforme a lo largo de los valores ajustados, observándose el mismo patrón en bandas. Finalmente, el gráfico de Residuals vs Leverage muestra que las observaciones 653, 152 y 93 tienen valores de leverage relativamente altos y podrían estar ejerciendo influencia desproporcionada sobre el modelo, por lo que valdría la pena examinarlas con mayor detalle.

Conclusión

El análisis del conjunto de datos Wine Quality - Red Wine permitió identificar las propiedades fisicoquímicas que mayor influencia ejercen sobre la calidad del vino tinto portugués de la región de Vinho Verde. A través de la regresión lineal múltiple, se encontró que la acidez volátil, el alcohol y los sulfatos son los predictores más determinantes, donde el alcohol y los sulfatos favorecen la calidad mientras que una alta acidez volátil la deteriora. Variables como los cloruros, el pH y los dióxidos de azufre, aunque estadísticamente significativas, presentan un impacto considerablemente menor sobre la calificación final.

No obstante, el modelo presenta limitaciones que deben considerarse. El R² ajustado de 0.357 refleja que las variables fisicoquímicas incluidas explican apenas el 35.7% de la variabilidad en la calidad, lo que indica que factores no medidos, como características organolépticas, el proceso de elaboración o el origen específico de la uva, juegan un papel relevante. Sumado a esto, el diagnóstico de residuos evidenció desviaciones de normalidad en las colas y un patrón heteroscedástico propio de una variable respuesta de naturaleza ordinal y discreta, lo que sugiere que modelos alternativos como la regresión ordinal o métodos de clasificación serían más apropiados para capturar adecuadamente la estructura de estos datos.