Regresión lineal múltiple

Multicolinealidad y selección de predictoras

Author

Edimer David Jaramillo

Published

October 10, 2024

Bibliotecas

Code
# - https://interactions.jacob-long.com/
# - https://marginaleffects.com/
# - https://strengejacke.github.io/ggeffects/

library(tidyverse)
library(ggpubr)
library(qqplotr)
library(janitor)

library(corrplot)
library(corrr)
library(DataExplorer)

library(tidymodels)
library(car)

Datos

Code
# Nombres de variables
nombres <- c(
  "depto",
  "mpio",
  "cultivo",
  "estado",
  "tiempo_estab",
  "topografia",
  "drenaje",
  "riego",
  "fertilizantes",
  "fecha_analisis",
  "ph_agua_suelo",
  "materia_org",
  "fosforo",
  "azufre",
  "acidez",
  "aluminio",
  "calcio",
  "magnesio",
  "potasio",
  "sodio",
  "cice",
  "conductividad",
  "hierro_olsen",
  "cobre",
  "manganeso",
  "zinc",
  "boro",
  "hierro_doble",
  "cobre_doble",
  "manganeso_doble",
  "zinc_doble"
)

suelos <-
  read_csv("datos/Resultados_de_An_lisis_de_Laboratorio_Suelos_en_Colombia.csv",
           na = "ND") |>
  select(-c(numfila, Secuencial)) |>
  set_names(nombres) |>
  mutate(
    across(c(depto, mpio), str_to_title),
    across(
      c(cultivo, estado, tiempo_estab, topografia, drenaje, riego),
      str_to_sentence
    ),
    across(
      c(
        fosforo,
        calcio,
        magnesio,
        potasio,
        sodio,
        hierro_olsen,
        cobre,
        manganeso,
        zinc,
        cobre_doble,
        manganeso_doble,
        zinc_doble
      ),
      ~ str_replace_all(
        string = .,
        pattern = ",",
        replacement = "."
      )
    ),
    across(
      c(
        fosforo,
        calcio,
        magnesio,
        potasio,
        sodio,
        hierro_olsen,
        cobre,
        manganeso,
        zinc,
        cobre_doble,
        manganeso_doble,
        zinc_doble
      ),
      ~ str_replace_all(
        string = .,
        pattern = "<",
        replacement = ""
      )
    ),
    across(
      c(
        fosforo,
        calcio,
        magnesio,
        potasio,
        sodio,
        hierro_olsen,
        cobre,
        manganeso,
        zinc,
        cobre_doble,
        manganeso_doble,
        zinc_doble
      ),
      as.numeric
    )
  ) |>
  select(-c(
    fecha_analisis,
    hierro_doble,
    cobre_doble,
    manganeso_doble,
    zinc_doble
  ))

suelos |> head()

Conteo por cultivo

Code
conteo_cultivos <-
  suelos |> 
  count(cultivo, sort = TRUE)

conteo_cultivos

Datos vacíos

Code
plot_missing(suelos)

Filtro de cacao

Code
suelos_cacao <-
  suelos |> 
  filter(cultivo == "Cacao") |> 
  select(-c(aluminio, acidez)) |> 
  filter(ph_agua_suelo <= 10) |> 
  filter(topografia != "Error: #n/a") |> 
  filter(drenaje != "Error: #n/a") |> 
  mutate(drenaje = str_replace_all(drenaje, "Mal drenaje", "Malo"),
         drenaje = str_replace_all(drenaje, "Regular drenaje", "Regular"),
         drenaje = str_replace_all(drenaje, "Buen drenaje", "Bueno")) |> 
  select(-c(mpio, cultivo, fertilizantes, tiempo_estab)) |> 
  na.omit()

suelos_cacao |> head()

Correlogramas

Code
suelos_cacao %>%
  select(where(is.numeric)) %>%
  cor(method = "spearman", use = "pairwise.complete.obs") %>%
  corrplot(
    type = "upper",
    diag = FALSE,
    method = "pie",
    tl.srt = 45,
    tl.cex = 0.7,
    tl.col = "black",
    order = "hclust"
  )

Code
suelos_cacao %>% 
  select(where(is.numeric)) %>% 
  correlate() %>% 
  network_plot()

Diagramas de dispersión

Code
suelos_cacao |> 
  select(where(is.numeric)) |> 
  pivot_longer(cols = -zinc) |> 
  ggplot(aes(x = value, y = zinc)) +
  facet_wrap(~name, scales = "free") +
  geom_point(color = "gray") +
  scale_x_log10() +
  scale_y_log10() +
  geom_smooth(method = "lm", se = FALSE)

Code
suelos_cacao |> 
  select(where(is.numeric)) |> 
  pivot_longer(cols = -zinc) |> 
  ggplot(aes(x = value, y = zinc)) +
  facet_wrap(~name, scales = "free") +
  geom_point(color = "gray") +
  scale_x_log10() +
  scale_y_log10() +
  geom_smooth(method = "lm",
              se = FALSE,
              formula = y ~ poly(x, degree = 2))

Code
suelos_cacao |> 
  select(where(is.numeric)) |> 
  pivot_longer(cols = -zinc) |> 
  ggplot(aes(x = value, y = zinc)) +
  facet_wrap(~name, scales = "free") +
  geom_point(color = "gray") +
  scale_x_log10() +
  scale_y_log10() +
  geom_smooth(method = "lm",
              se = FALSE,
              formula = y ~ poly(x, degree = 3))

Modelo sobreparametrizado

Code
modelo1 <- lm(zinc ~ ., data = suelos_cacao)
modelo1 |> summary()

Call:
lm(formula = zinc ~ ., data = suelos_cacao)

Residuals:
    Min      1Q  Median      3Q     Max 
-41.473  -2.107  -0.431   0.736 180.799 

Coefficients:
                                   Estimate Std. Error t value Pr(>|t|)    
(Intercept)                      -4.3872797  2.0975182  -2.092 0.036516 *  
deptoArauca                       2.0403860  1.1805912   1.728 0.083996 .  
deptoAtlántico                   -0.4433084  8.9343316  -0.050 0.960428    
deptoBogotá, D.c.                 1.0932110  8.9368701   0.122 0.902645    
deptoBolívar                      0.1345318  1.0835696   0.124 0.901196    
deptoBoyacá                       4.1949603  0.8326925   5.038 4.86e-07 ***
deptoCaldas                       0.3782744  1.9786157   0.191 0.848391    
deptoCaquetá                      1.0928408  0.7740672   1.412 0.158061    
deptoCasanare                     1.8462750  1.1911870   1.550 0.121213    
deptoCauca                        1.8864663  0.8068391   2.338 0.019418 *  
deptoCesar                        0.0084254  0.7590194   0.011 0.991144    
deptoChocó                       -1.1737269  6.3262418  -0.186 0.852818    
deptoCórdoba                     -1.3053247  0.6287212  -2.076 0.037926 *  
deptoCundinamarca                 5.0837665  0.5625535   9.037  < 2e-16 ***
deptoGuaviare                     0.6564724  3.2615597   0.201 0.840491    
deptoHuila                       -0.3459463  0.8846283  -0.391 0.695765    
deptoLa Guajira                   1.3638403  1.7150342   0.795 0.426517    
deptoMagdalena                   -0.3264035  2.0179614  -0.162 0.871509    
deptoMeta                         0.6423965  0.7292960   0.881 0.378441    
deptoNariño                       0.6580003  0.6761845   0.973 0.330543    
deptoNorte De Santander           0.4988807  1.3328632   0.374 0.708201    
deptoPutumayo                     1.6524836  0.7959532   2.076 0.037931 *  
deptoRisaralda                    1.9509137  8.9301640   0.218 0.827076    
deptoSantander                    2.2172971  0.6297508   3.521 0.000434 ***
deptoSucre                        0.0763590  4.4902901   0.017 0.986433    
deptoTolima                       1.0684794  1.1555682   0.925 0.355197    
deptoValle Del Cauca             -1.2317134  0.6200574  -1.986 0.047033 *  
estadoNo indica                   1.6185187  0.7542141   2.146 0.031920 *  
estadoPor establecer              1.0360039  0.3013256   3.438 0.000590 ***
topografiaModeradamente ondulado  0.9488325  1.0567726   0.898 0.369301    
topografiaNo indica               0.3383807  1.4122171   0.240 0.810642    
topografiaOndulado               -0.0916470  1.0389345  -0.088 0.929711    
topografiaOndulado y pendiente    5.4827601  6.4164577   0.854 0.392875    
topografiaPendiente               0.2742358  1.0454372   0.262 0.793087    
topografiaPendiente fuerte       -0.3712276  9.0680038  -0.041 0.967347    
topografiaPendiente leve         -0.5309403  3.5376297  -0.150 0.880704    
topografiaPendiente moderada      0.9238678  1.0639023   0.868 0.385227    
topografiaPlano                   0.1958867  1.0260141   0.191 0.848595    
topografiaPlano y ondulado       -0.8347692  6.4081052  -0.130 0.896359    
drenajeMalo                      -0.7018072  1.1715184  -0.599 0.549159    
drenajeNo indica                 -0.7405206  0.4014953  -1.844 0.065178 .  
drenajeRegular                   -0.5751791  0.4049798  -1.420 0.155588    
riegoAspersión y goteo           15.7676715  3.3418718   4.718 2.44e-06 ***
riegoGoteo                        0.5973821  1.5090416   0.396 0.692218    
riegoGravedad                     0.4337615  1.1494031   0.377 0.705906    
riegoManguera                     0.5397311  2.9367527   0.184 0.854189    
riegoNo cuenta con riego          1.3819105  0.7290907   1.895 0.058094 .  
riegoNo indica                    1.0447604  0.7448994   1.403 0.160807    
ph_agua_suelo                     0.3935882  0.2858188   1.377 0.168552    
materia_org                       0.1645417  0.0529389   3.108 0.001892 ** 
fosforo                           0.0106616  0.0027092   3.935 8.41e-05 ***
azufre                           -0.0054096  0.0129869  -0.417 0.677027    
calcio                            0.5797045  0.0843487   6.873 7.00e-12 ***
magnesio                         -0.0187141  0.1106124  -0.169 0.865656    
potasio                           0.9364761  0.6325100   1.481 0.138779    
sodio                            -0.4081059  0.7120399  -0.573 0.566567    
cice                             -0.3729181  0.0769566  -4.846 1.30e-06 ***
conductividad                     0.7545272  0.4713721   1.601 0.109501    
hierro_olsen                      0.0018501  0.0005978   3.095 0.001979 ** 
cobre                             0.4023611  0.0409947   9.815  < 2e-16 ***
manganeso                         0.0312002  0.0135487   2.303 0.021327 *  
boro                              1.0106937  1.0465859   0.966 0.334235    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 8.912 on 5442 degrees of freedom
Multiple R-squared:  0.1484,    Adjusted R-squared:  0.1388 
F-statistic: 15.55 on 61 and 5442 DF,  p-value: < 2.2e-16

Multicolinealidad

Code
modelo1 |> vif()
                    GVIF Df GVIF^(1/(2*Df))
depto         116.047249 26        1.095732
estado          1.814655  2        1.160643
topografia      3.575605 10        1.065780
drenaje         3.016685  3        1.202048
riego           5.379916  6        1.150530
ph_agua_suelo   4.303445  1        2.074475
materia_org     1.520769  1        1.233194
fosforo         1.260945  1        1.122918
azufre          1.603595  1        1.266331
calcio         23.162394  1        4.812732
magnesio        4.825746  1        2.196758
potasio         1.585505  1        1.259168
sodio           1.156245  1        1.075289
cice           25.866525  1        5.085914
conductividad   2.199930  1        1.483216
hierro_olsen    1.959840  1        1.399943
cobre           1.183366  1        1.087826
manganeso       1.173536  1        1.083299
boro            1.343685  1        1.159174

Otro modelo

Code
modelo2 <- lm(zinc ~ ., data = suelos_cacao |> select(-c(calcio, cice)))
modelo2 |> summary()

Call:
lm(formula = zinc ~ ., data = select(suelos_cacao, -c(calcio, 
    cice)))

Residuals:
    Min      1Q  Median      3Q     Max 
-32.955  -2.150  -0.470   0.785 185.746 

Coefficients:
                                   Estimate Std. Error t value Pr(>|t|)    
(Intercept)                      -1.239e+01  1.856e+00  -6.676 2.69e-11 ***
deptoArauca                       2.025e+00  1.186e+00   1.707 0.087851 .  
deptoAtlántico                   -5.386e-01  8.985e+00  -0.060 0.952205    
deptoBogotá, D.c.                 6.977e-01  8.988e+00   0.078 0.938130    
deptoBolívar                     -2.619e-01  1.087e+00  -0.241 0.809606    
deptoBoyacá                       4.372e+00  8.343e-01   5.240 1.67e-07 ***
deptoCaldas                       9.155e-02  1.986e+00   0.046 0.963228    
deptoCaquetá                      7.385e-01  7.734e-01   0.955 0.339715    
deptoCasanare                     1.619e+00  1.198e+00   1.352 0.176567    
deptoCauca                        1.454e+00  8.074e-01   1.801 0.071781 .  
deptoCesar                       -3.943e-01  7.601e-01  -0.519 0.603989    
deptoChocó                       -9.942e-01  6.362e+00  -0.156 0.875825    
deptoCórdoba                     -1.365e+00  6.310e-01  -2.163 0.030599 *  
deptoCundinamarca                 5.036e+00  5.633e-01   8.940  < 2e-16 ***
deptoGuaviare                     3.491e-01  3.280e+00   0.106 0.915231    
deptoHuila                       -3.223e-01  8.896e-01  -0.362 0.717107    
deptoLa Guajira                   1.062e+00  1.724e+00   0.616 0.537759    
deptoMagdalena                   -7.206e-01  2.027e+00  -0.355 0.722288    
deptoMeta                         4.239e-01  7.330e-01   0.578 0.563057    
deptoNariño                       3.948e-01  6.786e-01   0.582 0.560750    
deptoNorte De Santander           5.536e-01  1.340e+00   0.413 0.679613    
deptoPutumayo                     1.189e+00  7.982e-01   1.489 0.136457    
deptoRisaralda                    2.055e+00  8.981e+00   0.229 0.818988    
deptoSantander                    2.425e+00  6.303e-01   3.847 0.000121 ***
deptoSucre                       -7.756e-02  4.516e+00  -0.017 0.986296    
deptoTolima                       1.803e-01  1.155e+00   0.156 0.875986    
deptoValle Del Cauca             -1.594e+00  6.183e-01  -2.578 0.009973 ** 
estadoNo indica                   1.460e+00  7.579e-01   1.927 0.054051 .  
estadoPor establecer              9.827e-01  3.027e-01   3.247 0.001174 ** 
topografiaModeradamente ondulado  1.124e+00  1.062e+00   1.058 0.290167    
topografiaNo indica               5.678e-01  1.420e+00   0.400 0.689257    
topografiaOndulado                1.471e-01  1.044e+00   0.141 0.888008    
topografiaOndulado y pendiente    3.829e+00  6.446e+00   0.594 0.552484    
topografiaPendiente               4.365e-01  1.051e+00   0.415 0.677966    
topografiaPendiente fuerte       -6.155e-01  9.119e+00  -0.067 0.946192    
topografiaPendiente leve         -2.622e-01  3.556e+00  -0.074 0.941237    
topografiaPendiente moderada      1.158e+00  1.069e+00   1.083 0.278947    
topografiaPlano                   3.975e-01  1.032e+00   0.385 0.699989    
topografiaPlano y ondulado       -6.723e-01  6.445e+00  -0.104 0.916920    
drenajeMalo                      -7.728e-01  1.178e+00  -0.656 0.511860    
drenajeNo indica                 -6.400e-01  4.035e-01  -1.586 0.112763    
drenajeRegular                   -5.056e-01  4.070e-01  -1.242 0.214183    
riegoAspersión y goteo            1.632e+01  3.358e+00   4.860 1.21e-06 ***
riegoGoteo                        9.636e-01  1.517e+00   0.635 0.525325    
riegoGravedad                    -2.318e-01  1.153e+00  -0.201 0.840638    
riegoManguera                     4.833e-01  2.954e+00   0.164 0.870019    
riegoNo cuenta con riego          1.747e+00  7.317e-01   2.387 0.017016 *  
riegoNo indica                    1.584e+00  7.457e-01   2.124 0.033698 *  
ph_agua_suelo                     1.812e+00  2.254e-01   8.038 1.11e-15 ***
materia_org                       1.928e-01  5.304e-02   3.634 0.000281 ***
fosforo                           1.068e-02  2.721e-03   3.925 8.77e-05 ***
azufre                           -1.640e-03  1.304e-02  -0.126 0.899938    
magnesio                         -2.319e-01  7.408e-02  -3.130 0.001755 ** 
potasio                           6.176e-01  6.304e-01   0.980 0.327287    
sodio                            -1.235e+00  7.074e-01  -1.745 0.081014 .  
conductividad                     1.859e+00  4.451e-01   4.176 3.02e-05 ***
hierro_olsen                      1.215e-03  5.743e-04   2.115 0.034486 *  
cobre                             4.008e-01  4.123e-02   9.722  < 2e-16 ***
manganeso                         2.718e-02  1.361e-02   1.997 0.045846 *  
boro                              8.355e-01  1.052e+00   0.794 0.427272    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 8.963 on 5444 degrees of freedom
Multiple R-squared:  0.1383,    Adjusted R-squared:  0.129 
F-statistic: 14.81 on 59 and 5444 DF,  p-value: < 2.2e-16
  • Calculamos nuevamente los VIF:
Code
modelo2 |> vif()
                    GVIF Df GVIF^(1/(2*Df))
depto         100.190989 26        1.092641
estado          1.808363  2        1.159635
topografia      3.541918 10        1.065275
drenaje         3.008924  3        1.201532
riego           5.217932  6        1.147603
ph_agua_suelo   2.645686  1        1.626556
materia_org     1.509528  1        1.228628
fosforo         1.257637  1        1.121444
azufre          1.599294  1        1.264632
magnesio        2.140211  1        1.462946
potasio         1.557137  1        1.247853
sodio           1.128271  1        1.062201
conductividad   1.939500  1        1.392659
hierro_olsen    1.787929  1        1.337135
cobre           1.183327  1        1.087808
manganeso       1.170169  1        1.081744
boro            1.343041  1        1.158897

Selección de predictoras

Code
modelo_forward <- modelo2 |> stats::step(direction = "forward")
Start:  AIC=24200.91
zinc ~ depto + estado + topografia + drenaje + riego + ph_agua_suelo + 
    materia_org + fosforo + azufre + magnesio + potasio + sodio + 
    conductividad + hierro_olsen + cobre + manganeso + boro
Code
modelo_forward

Call:
lm(formula = zinc ~ depto + estado + topografia + drenaje + riego + 
    ph_agua_suelo + materia_org + fosforo + azufre + magnesio + 
    potasio + sodio + conductividad + hierro_olsen + cobre + 
    manganeso + boro, data = select(suelos_cacao, -c(calcio, 
    cice)))

Coefficients:
                     (Intercept)                       deptoArauca  
                      -12.392175                          2.024986  
                  deptoAtlántico                 deptoBogotá, D.c.  
                       -0.538593                          0.697669  
                    deptoBolívar                       deptoBoyacá  
                       -0.261904                          4.371597  
                     deptoCaldas                      deptoCaquetá  
                        0.091551                          0.738488  
                   deptoCasanare                        deptoCauca  
                        1.618724                          1.454020  
                      deptoCesar                        deptoChocó  
                       -0.394269                         -0.994212  
                    deptoCórdoba                 deptoCundinamarca  
                       -1.364727                          5.035725  
                   deptoGuaviare                        deptoHuila  
                        0.349119                         -0.322339  
                 deptoLa Guajira                    deptoMagdalena  
                        1.062226                         -0.720605  
                       deptoMeta                       deptoNariño  
                        0.423902                          0.394763  
         deptoNorte De Santander                     deptoPutumayo  
                        0.553617                          1.188808  
                  deptoRisaralda                    deptoSantander  
                        2.055375                          2.424580  
                      deptoSucre                       deptoTolima  
                       -0.077564                          0.180257  
            deptoValle Del Cauca                   estadoNo indica  
                       -1.593834                          1.460437  
            estadoPor establecer  topografiaModeradamente ondulado  
                        0.982673                          1.123835  
             topografiaNo indica                topografiaOndulado  
                        0.567793                          0.147082  
  topografiaOndulado y pendiente               topografiaPendiente  
                        3.829224                          0.436477  
      topografiaPendiente fuerte          topografiaPendiente leve  
                       -0.615501                         -0.262154  
    topografiaPendiente moderada                   topografiaPlano  
                        1.157607                          0.397523  
      topografiaPlano y ondulado                       drenajeMalo  
                       -0.672310                         -0.772808  
                drenajeNo indica                    drenajeRegular  
                       -0.639955                         -0.505638  
          riegoAspersión y goteo                        riegoGoteo  
                       16.319683                          0.963583  
                   riegoGravedad                     riegoManguera  
                       -0.231848                          0.483325  
        riegoNo cuenta con riego                    riegoNo indica  
                        1.746554                          1.584099  
                   ph_agua_suelo                       materia_org  
                        1.811656                          0.192774  
                         fosforo                            azufre  
                        0.010681                         -0.001640  
                        magnesio                           potasio  
                       -0.231909                          0.617606  
                           sodio                     conductividad  
                       -1.234526                          1.858634  
                    hierro_olsen                             cobre  
                        0.001214                          0.400821  
                       manganeso                              boro  
                        0.027176                          0.835472  
Code
modelo_backward <- modelo2 |> stats::step(direction = "backward")
Start:  AIC=24200.91
zinc ~ depto + estado + topografia + drenaje + riego + ph_agua_suelo + 
    materia_org + fosforo + azufre + magnesio + potasio + sodio + 
    conductividad + hierro_olsen + cobre + manganeso + boro

                Df Sum of Sq    RSS   AIC
- topografia    10     540.8 437850 24188
- drenaje        3     261.8 437571 24198
- azufre         1       1.3 437311 24199
- boro           1      50.6 437360 24200
- potasio        1      77.1 437386 24200
<none>                       437309 24201
- sodio          1     244.6 437554 24202
- manganeso      1     320.4 437630 24203
- hierro_olsen   1     359.3 437669 24203
- magnesio       1     787.1 438096 24209
- estado         2     977.7 438287 24209
- materia_org    1    1060.9 438370 24212
- fosforo        1    1237.7 438547 24215
- conductividad  1    1400.5 438710 24217
- riego          6    2322.2 439632 24218
- ph_agua_suelo  1    5189.9 442499 24264
- cobre          1    7592.3 444902 24294
- depto         26   15672.5 452982 24343

Step:  AIC=24187.71
zinc ~ depto + estado + drenaje + riego + ph_agua_suelo + materia_org + 
    fosforo + azufre + magnesio + potasio + sodio + conductividad + 
    hierro_olsen + cobre + manganeso + boro

                Df Sum of Sq    RSS   AIC
- drenaje        3     262.3 438112 24185
- azufre         1       3.5 437854 24186
- boro           1      45.6 437896 24186
- potasio        1     114.5 437965 24187
<none>                       437850 24188
- sodio          1     254.5 438105 24189
- manganeso      1     320.6 438171 24190
- hierro_olsen   1     345.3 438195 24190
- magnesio       1     726.7 438577 24195
- materia_org    1     930.9 438781 24197
- estado         2    1169.2 439019 24198
- fosforo        1    1171.6 439022 24200
- conductividad  1    1481.0 439331 24204
- riego          6    2485.4 440335 24207
- ph_agua_suelo  1    5120.1 442970 24250
- cobre          1    7553.9 445404 24280
- depto         26   16062.0 453912 24334

Step:  AIC=24185.01
zinc ~ depto + estado + riego + ph_agua_suelo + materia_org + 
    fosforo + azufre + magnesio + potasio + sodio + conductividad + 
    hierro_olsen + cobre + manganeso + boro

                Df Sum of Sq    RSS   AIC
- azufre         1       1.8 438114 24183
- boro           1      39.8 438152 24184
- potasio        1     111.1 438223 24184
<none>                       438112 24185
- sodio          1     255.5 438368 24186
- manganeso      1     324.2 438437 24187
- hierro_olsen   1     354.7 438467 24188
- magnesio       1     812.7 438925 24193
- materia_org    1     972.9 439085 24195
- estado         2    1174.6 439287 24196
- fosforo        1    1249.2 439362 24199
- conductividad  1    1407.5 439520 24201
- riego          6    2679.4 440792 24207
- ph_agua_suelo  1    5006.1 443118 24246
- cobre          1    7532.9 445645 24277
- depto         26   18756.4 456869 24364

Step:  AIC=24183.03
zinc ~ depto + estado + riego + ph_agua_suelo + materia_org + 
    fosforo + magnesio + potasio + sodio + conductividad + hierro_olsen + 
    cobre + manganeso + boro

                Df Sum of Sq    RSS   AIC
- boro           1      39.7 438154 24182
- potasio        1     112.8 438227 24182
<none>                       438114 24183
- sodio          1     254.6 438369 24184
- manganeso      1     327.0 438441 24185
- hierro_olsen   1     355.1 438469 24186
- magnesio       1     811.9 438926 24191
- materia_org    1     978.9 439093 24193
- estado         2    1177.5 439292 24194
- fosforo        1    1251.6 439366 24197
- riego          6    2679.6 440794 24205
- conductividad  1    1944.7 440059 24205
- ph_agua_suelo  1    5022.4 443137 24244
- cobre          1    7545.0 445659 24275
- depto         26   18776.3 456890 24362

Step:  AIC=24181.53
zinc ~ depto + estado + riego + ph_agua_suelo + materia_org + 
    fosforo + magnesio + potasio + sodio + conductividad + hierro_olsen + 
    cobre + manganeso

                Df Sum of Sq    RSS   AIC
- potasio        1     134.1 438288 24181
<none>                       438154 24182
- sodio          1     253.0 438407 24183
- manganeso      1     315.6 438470 24184
- hierro_olsen   1     377.9 438532 24184
- magnesio       1     799.4 438953 24190
- materia_org    1     996.8 439151 24192
- estado         2    1195.3 439349 24193
- fosforo        1    1296.6 439451 24196
- riego          6    2730.0 440884 24204
- conductividad  1    2018.1 440172 24205
- ph_agua_suelo  1    5208.3 443362 24245
- cobre          1    7549.5 445703 24274
- depto         26   19403.6 457558 24368

Step:  AIC=24181.22
zinc ~ depto + estado + riego + ph_agua_suelo + materia_org + 
    fosforo + magnesio + sodio + conductividad + hierro_olsen + 
    cobre + manganeso

                Df Sum of Sq    RSS   AIC
<none>                       438288 24181
- sodio          1     229.0 438517 24182
- manganeso      1     324.8 438613 24183
- hierro_olsen   1     405.4 438693 24184
- magnesio       1     678.1 438966 24188
- estado         2    1196.0 439484 24192
- materia_org    1    1093.4 439381 24193
- fosforo        1    1614.7 439903 24200
- riego          6    2713.4 441001 24203
- conductividad  1    2394.7 440683 24209
- ph_agua_suelo  1    5358.4 443646 24246
- cobre          1    7497.4 445785 24273
- depto         26   19359.3 457647 24367
Code
modelo_backward

Call:
lm(formula = zinc ~ depto + estado + riego + ph_agua_suelo + 
    materia_org + fosforo + magnesio + sodio + conductividad + 
    hierro_olsen + cobre + manganeso, data = select(suelos_cacao, 
    -c(calcio, cice)))

Coefficients:
             (Intercept)               deptoArauca            deptoAtlántico  
              -12.177523                  2.159994                 -0.888568  
       deptoBogotá, D.c.              deptoBolívar               deptoBoyacá  
                0.459921                 -0.175340                  4.433103  
             deptoCaldas              deptoCaquetá             deptoCasanare  
                0.327810                  0.370465                  1.408612  
              deptoCauca                deptoCesar                deptoChocó  
                1.334995                 -0.295737                 -1.146652  
            deptoCórdoba         deptoCundinamarca             deptoGuaviare  
               -1.126493                  5.242553                 -0.013290  
              deptoHuila           deptoLa Guajira            deptoMagdalena  
               -0.221229                  0.782076                 -0.583986  
               deptoMeta               deptoNariño   deptoNorte De Santander  
                0.513338                  0.195564                  0.744785  
           deptoPutumayo            deptoRisaralda            deptoSantander  
                1.164261                  1.974895                  2.480274  
              deptoSucre               deptoTolima      deptoValle Del Cauca  
               -0.021342                  0.338824                 -1.578942  
         estadoNo indica      estadoPor establecer    riegoAspersión y goteo  
                1.772721                  1.034770                 17.195827  
              riegoGoteo             riegoGravedad             riegoManguera  
                1.130674                 -0.144701                  0.580898  
riegoNo cuenta con riego            riegoNo indica             ph_agua_suelo  
                1.902647                  1.638671                  1.804709  
             materia_org                   fosforo                  magnesio  
                0.192437                  0.011728                 -0.201723  
                   sodio             conductividad              hierro_olsen  
               -1.189279                  1.950349                  0.001279  
                   cobre                 manganeso  
                0.395472                  0.027225  
Code
modelo_stepwise <- modelo2 |> stats::step(direction = "both")
Start:  AIC=24200.91
zinc ~ depto + estado + topografia + drenaje + riego + ph_agua_suelo + 
    materia_org + fosforo + azufre + magnesio + potasio + sodio + 
    conductividad + hierro_olsen + cobre + manganeso + boro

                Df Sum of Sq    RSS   AIC
- topografia    10     540.8 437850 24188
- drenaje        3     261.8 437571 24198
- azufre         1       1.3 437311 24199
- boro           1      50.6 437360 24200
- potasio        1      77.1 437386 24200
<none>                       437309 24201
- sodio          1     244.6 437554 24202
- manganeso      1     320.4 437630 24203
- hierro_olsen   1     359.3 437669 24203
- magnesio       1     787.1 438096 24209
- estado         2     977.7 438287 24209
- materia_org    1    1060.9 438370 24212
- fosforo        1    1237.7 438547 24215
- conductividad  1    1400.5 438710 24217
- riego          6    2322.2 439632 24218
- ph_agua_suelo  1    5189.9 442499 24264
- cobre          1    7592.3 444902 24294
- depto         26   15672.5 452982 24343

Step:  AIC=24187.71
zinc ~ depto + estado + drenaje + riego + ph_agua_suelo + materia_org + 
    fosforo + azufre + magnesio + potasio + sodio + conductividad + 
    hierro_olsen + cobre + manganeso + boro

                Df Sum of Sq    RSS   AIC
- drenaje        3     262.3 438112 24185
- azufre         1       3.5 437854 24186
- boro           1      45.6 437896 24186
- potasio        1     114.5 437965 24187
<none>                       437850 24188
- sodio          1     254.5 438105 24189
- manganeso      1     320.6 438171 24190
- hierro_olsen   1     345.3 438195 24190
- magnesio       1     726.7 438577 24195
- materia_org    1     930.9 438781 24197
- estado         2    1169.2 439019 24198
- fosforo        1    1171.6 439022 24200
+ topografia    10     540.8 437309 24201
- conductividad  1    1481.0 439331 24204
- riego          6    2485.4 440335 24207
- ph_agua_suelo  1    5120.1 442970 24250
- cobre          1    7553.9 445404 24280
- depto         26   16062.0 453912 24334

Step:  AIC=24185.01
zinc ~ depto + estado + riego + ph_agua_suelo + materia_org + 
    fosforo + azufre + magnesio + potasio + sodio + conductividad + 
    hierro_olsen + cobre + manganeso + boro

                Df Sum of Sq    RSS   AIC
- azufre         1       1.8 438114 24183
- boro           1      39.8 438152 24184
- potasio        1     111.1 438223 24184
<none>                       438112 24185
- sodio          1     255.5 438368 24186
- manganeso      1     324.2 438437 24187
- hierro_olsen   1     354.7 438467 24188
+ drenaje        3     262.3 437850 24188
- magnesio       1     812.7 438925 24193
- materia_org    1     972.9 439085 24195
- estado         2    1174.6 439287 24196
+ topografia    10     541.2 437571 24198
- fosforo        1    1249.2 439362 24199
- conductividad  1    1407.5 439520 24201
- riego          6    2679.4 440792 24207
- ph_agua_suelo  1    5006.1 443118 24246
- cobre          1    7532.9 445645 24277
- depto         26   18756.4 456869 24364

Step:  AIC=24183.03
zinc ~ depto + estado + riego + ph_agua_suelo + materia_org + 
    fosforo + magnesio + potasio + sodio + conductividad + hierro_olsen + 
    cobre + manganeso + boro

                Df Sum of Sq    RSS   AIC
- boro           1      39.7 438154 24182
- potasio        1     112.8 438227 24182
<none>                       438114 24183
- sodio          1     254.6 438369 24184
+ azufre         1       1.8 438112 24185
- manganeso      1     327.0 438441 24185
- hierro_olsen   1     355.1 438469 24186
+ drenaje        3     260.6 437854 24186
- magnesio       1     811.9 438926 24191
- materia_org    1     978.9 439093 24193
- estado         2    1177.5 439292 24194
+ topografia    10     542.6 437572 24196
- fosforo        1    1251.6 439366 24197
- riego          6    2679.6 440794 24205
- conductividad  1    1944.7 440059 24205
- ph_agua_suelo  1    5022.4 443137 24244
- cobre          1    7545.0 445659 24275
- depto         26   18776.3 456890 24362

Step:  AIC=24181.53
zinc ~ depto + estado + riego + ph_agua_suelo + materia_org + 
    fosforo + magnesio + potasio + sodio + conductividad + hierro_olsen + 
    cobre + manganeso

                Df Sum of Sq    RSS   AIC
- potasio        1     134.1 438288 24181
<none>                       438154 24182
- sodio          1     253.0 438407 24183
+ boro           1      39.7 438114 24183
- manganeso      1     315.6 438470 24184
+ azufre         1       1.7 438152 24184
- hierro_olsen   1     377.9 438532 24184
+ drenaje        3     254.9 437899 24184
- magnesio       1     799.4 438953 24190
- materia_org    1     996.8 439151 24192
- estado         2    1195.3 439349 24193
+ topografia    10     536.6 437617 24195
- fosforo        1    1296.6 439451 24196
- riego          6    2730.0 440884 24204
- conductividad  1    2018.1 440172 24205
- ph_agua_suelo  1    5208.3 443362 24245
- cobre          1    7549.5 445703 24274
- depto         26   19403.6 457558 24368

Step:  AIC=24181.22
zinc ~ depto + estado + riego + ph_agua_suelo + materia_org + 
    fosforo + magnesio + sodio + conductividad + hierro_olsen + 
    cobre + manganeso

                Df Sum of Sq    RSS   AIC
<none>                       438288 24181
+ potasio        1     134.1 438154 24182
- sodio          1     229.0 438517 24182
+ boro           1      61.1 438227 24182
+ azufre         1       3.5 438285 24183
- manganeso      1     324.8 438613 24183
+ drenaje        3     248.8 438039 24184
- hierro_olsen   1     405.4 438693 24184
- magnesio       1     678.1 438966 24188
- estado         2    1196.0 439484 24192
- materia_org    1    1093.4 439381 24193
+ topografia    10     578.7 437709 24194
- fosforo        1    1614.7 439903 24200
- riego          6    2713.4 441001 24203
- conductividad  1    2394.7 440683 24209
- ph_agua_suelo  1    5358.4 443646 24246
- cobre          1    7497.4 445785 24273
- depto         26   19359.3 457647 24367
Code
modelo_stepwise

Call:
lm(formula = zinc ~ depto + estado + riego + ph_agua_suelo + 
    materia_org + fosforo + magnesio + sodio + conductividad + 
    hierro_olsen + cobre + manganeso, data = select(suelos_cacao, 
    -c(calcio, cice)))

Coefficients:
             (Intercept)               deptoArauca            deptoAtlántico  
              -12.177523                  2.159994                 -0.888568  
       deptoBogotá, D.c.              deptoBolívar               deptoBoyacá  
                0.459921                 -0.175340                  4.433103  
             deptoCaldas              deptoCaquetá             deptoCasanare  
                0.327810                  0.370465                  1.408612  
              deptoCauca                deptoCesar                deptoChocó  
                1.334995                 -0.295737                 -1.146652  
            deptoCórdoba         deptoCundinamarca             deptoGuaviare  
               -1.126493                  5.242553                 -0.013290  
              deptoHuila           deptoLa Guajira            deptoMagdalena  
               -0.221229                  0.782076                 -0.583986  
               deptoMeta               deptoNariño   deptoNorte De Santander  
                0.513338                  0.195564                  0.744785  
           deptoPutumayo            deptoRisaralda            deptoSantander  
                1.164261                  1.974895                  2.480274  
              deptoSucre               deptoTolima      deptoValle Del Cauca  
               -0.021342                  0.338824                 -1.578942  
         estadoNo indica      estadoPor establecer    riegoAspersión y goteo  
                1.772721                  1.034770                 17.195827  
              riegoGoteo             riegoGravedad             riegoManguera  
                1.130674                 -0.144701                  0.580898  
riegoNo cuenta con riego            riegoNo indica             ph_agua_suelo  
                1.902647                  1.638671                  1.804709  
             materia_org                   fosforo                  magnesio  
                0.192437                  0.011728                 -0.201723  
                   sodio             conductividad              hierro_olsen  
               -1.189279                  1.950349                  0.001279  
                   cobre                 manganeso  
                0.395472                  0.027225  

Comparación de modelos

Code
AIC(modelo_backward, modelo_forward, modelo_stepwise)

Modelo final

Code
modelo_stepwise |> 
  summary()

Call:
lm(formula = zinc ~ depto + estado + riego + ph_agua_suelo + 
    materia_org + fosforo + magnesio + sodio + conductividad + 
    hierro_olsen + cobre + manganeso, data = select(suelos_cacao, 
    -c(calcio, cice)))

Residuals:
    Min      1Q  Median      3Q     Max 
-33.290  -2.063  -0.452   0.714 186.722 

Coefficients:
                           Estimate Std. Error t value Pr(>|t|)    
(Intercept)              -1.218e+01  1.521e+00  -8.005 1.45e-15 ***
deptoArauca               2.160e+00  1.140e+00   1.895 0.058111 .  
deptoAtlántico           -8.886e-01  8.972e+00  -0.099 0.921112    
deptoBogotá, D.c.         4.599e-01  8.974e+00   0.051 0.959127    
deptoBolívar             -1.753e-01  1.062e+00  -0.165 0.868898    
deptoBoyacá               4.433e+00  8.161e-01   5.432 5.81e-08 ***
deptoCaldas               3.278e-01  1.960e+00   0.167 0.867163    
deptoCaquetá              3.705e-01  7.334e-01   0.505 0.613483    
deptoCasanare             1.409e+00  1.152e+00   1.223 0.221457    
deptoCauca                1.335e+00  7.521e-01   1.775 0.075958 .  
deptoCesar               -2.957e-01  7.311e-01  -0.405 0.685854    
deptoChocó               -1.147e+00  6.352e+00  -0.181 0.856746    
deptoCórdoba             -1.126e+00  5.822e-01  -1.935 0.053038 .  
deptoCundinamarca         5.243e+00  5.313e-01   9.867  < 2e-16 ***
deptoGuaviare            -1.329e-02  3.197e+00  -0.004 0.996683    
deptoHuila               -2.212e-01  8.575e-01  -0.258 0.796422    
deptoLa Guajira           7.821e-01  1.692e+00   0.462 0.643876    
deptoMagdalena           -5.840e-01  2.012e+00  -0.290 0.771617    
deptoMeta                 5.133e-01  6.967e-01   0.737 0.461280    
deptoNariño               1.956e-01  6.432e-01   0.304 0.761084    
deptoNorte De Santander   7.448e-01  1.319e+00   0.565 0.572226    
deptoPutumayo             1.164e+00  7.478e-01   1.557 0.119560    
deptoRisaralda            1.975e+00  8.971e+00   0.220 0.825766    
deptoSantander            2.480e+00  6.157e-01   4.028 5.69e-05 ***
deptoSucre               -2.134e-02  4.499e+00  -0.005 0.996215    
deptoTolima               3.388e-01  1.126e+00   0.301 0.763522    
deptoValle Del Cauca     -1.579e+00  5.535e-01  -2.853 0.004349 ** 
estadoNo indica           1.773e+00  7.331e-01   2.418 0.015637 *  
estadoPor establecer      1.035e+00  2.996e-01   3.454 0.000556 ***
riegoAspersión y goteo    1.720e+01  3.310e+00   5.195 2.12e-07 ***
riegoGoteo                1.131e+00  1.489e+00   0.759 0.447699    
riegoGravedad            -1.447e-01  1.122e+00  -0.129 0.897391    
riegoManguera             5.809e-01  2.931e+00   0.198 0.842894    
riegoNo cuenta con riego  1.903e+00  7.094e-01   2.682 0.007341 ** 
riegoNo indica            1.639e+00  7.328e-01   2.236 0.025373 *  
ph_agua_suelo             1.805e+00  2.209e-01   8.170 3.79e-16 ***
materia_org               1.924e-01  5.214e-02   3.691 0.000226 ***
fosforo                   1.173e-02  2.615e-03   4.485 7.44e-06 ***
magnesio                 -2.017e-01  6.941e-02  -2.906 0.003671 ** 
sodio                    -1.189e+00  7.042e-01  -1.689 0.091301 .  
conductividad             1.950e+00  3.571e-01   5.462 4.92e-08 ***
hierro_olsen              1.279e-03  5.691e-04   2.247 0.024656 *  
cobre                     3.955e-01  4.092e-02   9.664  < 2e-16 ***
manganeso                 2.723e-02  1.353e-02   2.012 0.044313 *  
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 8.959 on 5460 degrees of freedom
Multiple R-squared:  0.1364,    Adjusted R-squared:  0.1296 
F-statistic: 20.05 on 43 and 5460 DF,  p-value: < 2.2e-16

Modelos no lineales

Code
mod_nolineal1 <- lm(
  zinc ~ depto + estado + riego + ph_agua_suelo +
    materia_org + poly(fosforo, degree = 2) + poly(magnesio, degree = 2) +
    poly(sodio, degree = 2) + conductividad + hierro_olsen + cobre + manganeso,
  data = suelos_cacao
)

mod_nolineal2 <- lm(
  log1p(zinc) ~ depto + estado + riego + ph_agua_suelo +
    materia_org + poly(fosforo, degree = 2) + poly(magnesio, degree = 2) +
    poly(sodio, degree = 2) + conductividad + hierro_olsen + cobre + manganeso,
  data = suelos_cacao
)

AIC(modelo_stepwise, mod_nolineal1, mod_nolineal2)

Estimaciones del modelo

Code
library(ggeffects)

mod_nolineal2 |> 
  ggpredict(terms = "depto") |> 
  plot() +
  theme(axis.text.x = element_text(angle = 45, hjust = 1))

Code
mod_nolineal2 |> 
  ggpredict(terms = "estado") |> 
  plot()

Code
mod_nolineal2 |> 
  ggpredict(terms = "riego") |> 
  plot() +
  theme(axis.text.x = element_text(angle = 45, hjust = 1))

Code
mod_nolineal2 |> 
  ggpredict(terms = "ph_agua_suelo") |> 
  plot()

Code
mod_nolineal2 |> 
  ggpredict(terms = c("ph_agua_suelo", "estado")) |> 
  plot()

Code
mod_nolineal2 |> 
  ggpredict(terms = c("magnesio")) |> 
  plot() +
  theme(axis.text.x = element_text(angle = 45, hjust = 1))

Code
mod_nolineal2 |> 
  ggpredict(terms = c("magnesio", "estado")) |> 
  plot() +
  theme(axis.text.x = element_text(angle = 45, hjust = 1))