library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.5.3
library(dplyr)
## Warning: package 'dplyr' was built under R version 4.5.3
## 
## Adjuntando el paquete: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(pROC)
## Warning: package 'pROC' was built under R version 4.5.3
## Type 'citation("pROC")' for a citation.
## 
## Adjuntando el paquete: 'pROC'
## The following objects are masked from 'package:stats':
## 
##     cov, smooth, var
library(knitr)
## Warning: package 'knitr' was built under R version 4.5.3
library(kableExtra)
## Warning: package 'kableExtra' was built under R version 4.5.3
## 
## Adjuntando el paquete: 'kableExtra'
## The following object is masked from 'package:dplyr':
## 
##     group_rows

La adopción de prácticas agroecológicas en pequeños productores agrícolas constituye un tema de creciente interés en el contexto del desarrollo rural sostenible, debido a su impacto sobre la conservación ambiental, la seguridad alimentaria y la resiliencia productiva. En regiones como el departamento del Cesar, donde gran parte de la producción agropecuaria depende de pequeños agricultores, factores como el nivel educativo, el acceso al crédito, la asistencia técnica y la participación en asociaciones rurales influyen significativamente en las decisiones de adopción tecnológica y productiva. Diversos estudios han señalado que las limitaciones institucionales y económicas representan barreras importantes para la implementación de prácticas sostenibles en sistemas agrícolas de pequeña escala.

Dado que la variable de interés corresponde a una respuesta binaria —adoptar o no adoptar prácticas agroecológicas—, el uso de modelos lineales clásicos resulta inadecuado, ya que pueden generar predicciones fuera del intervalo de probabilidad \([0,1]\) y violar supuestos de normalidad y homocedasticidad. En este contexto, los Modelos Lineales Generalizados (MLG), particularmente los modelos de regresión binaria con funciones de enlace logit, probit y complemento log-log, permiten modelar de manera apropiada la probabilidad de adopción en función de variables socioeconómicas e institucionales. Además, la estimación mediante el algoritmo Iteratively Reweighted Least Squares (IRLS) proporciona un marco numérico eficiente para la obtención de estimadores de máxima verosimilitud.

1. Introducción

La adopción de prácticas agroecológicas por parte de pequeños productores agrícolas constituye un tema de creciente relevancia en el contexto del desarrollo rural sostenible. Estas prácticas, que incluyen estrategias como la rotación de cultivos, el manejo integrado de plagas y la producción orgánica, contribuyen a la conservación de los recursos naturales, la reducción de impactos ambientales negativos y el fortalecimiento de la resiliencia de los sistemas productivos frente a fenómenos económicos y climáticos. Asimismo, favorecen la seguridad alimentaria y promueven formas de producción más sostenibles a largo plazo.

En el departamento del Cesar, una parte importante de la actividad agropecuaria es desarrollada por pequeños productores, quienes enfrentan diversas limitaciones económicas, técnicas e institucionales para incorporar innovaciones productivas sostenibles. Factores como el nivel educativo, la experiencia agrícola, el acceso al crédito, la asistencia técnica y la participación en asociaciones rurales pueden influir significativamente en la decisión de adoptar prácticas agroecológicas. En consecuencia, resulta pertinente analizar cómo estas variables se relacionan con la probabilidad de adopción de dichas prácticas.

Dado que la variable de interés corresponde a una respuesta binaria, definida por la adopción o no adopción de prácticas agroecológicas, la aplicación de modelos de regresión lineal convencional resulta inapropiada debido a que puede producir estimaciones fuera del rango de probabilidad y no satisface los supuestos estadísticos requeridos para este tipo de respuesta. En este contexto, los Modelos Lineales Generalizados (MLG) para respuestas Bernoulli constituyen una alternativa adecuada, ya que permiten modelar directamente la probabilidad de adopción mediante funciones de enlace que relacionan dicha probabilidad con un conjunto de variables explicativas.

El presente estudio emplea tres funciones de enlace ampliamente utilizadas en modelos de respuesta binaria: logit, probit y complemento log-log. Adicionalmente, la estimación de los parámetros se realiza mediante el algoritmo Iteratively Reweighted Least Squares (IRLS), procedimiento iterativo que permite obtener los estimadores de máxima verosimilitud de manera eficiente. A partir de la comparación de estos modelos, se busca identificar los factores que influyen en la adopción de prácticas agroecológicas y determinar cuál de las especificaciones proporciona el mejor ajuste a los datos analizados.

2. Planteamiento del Problema

La adopción de prácticas agroecológicas por parte de pequeños productores rurales constituye un proceso complejo que depende de factores socioeconómicos, productivos e institucionales. Aunque estas prácticas ofrecen beneficios ambientales y productivos significativos, su implementación no ocurre de manera homogénea entre los agricultores. Mientras algunos productores incorporan estrategias sostenibles en sus sistemas de producción, otros continúan utilizando métodos convencionales debido a restricciones de información, acceso a recursos financieros o limitaciones técnicas.

En el departamento del Cesar, donde la agricultura representa una actividad económica fundamental para numerosas familias rurales, resulta importante comprender cuáles son los factores que favorecen o limitan la adopción de prácticas agroecológicas. Variables como el nivel educativo del productor, los años de experiencia agrícola, la participación en asociaciones, el acceso a asistencia técnica, la disponibilidad de crédito agropecuario y la ubicación geográfica de la finca pueden desempeñar un papel determinante en este proceso.

Dado que la decisión de adopción se expresa mediante una variable dicotómica, surge la siguiente pregunta de investigación:

¿Cuál de los modelos de respuesta binaria (logit, probit o complemento log-log) permite identificar de manera más adecuada los factores que condicionan la adopción de prácticas agroecológicas en pequeños productores del departamento del Cesar?

Responder esta pregunta permitirá comprender mejor los determinantes de la adopción tecnológica en el sector rural y generar evidencia útil para la formulación de estrategias orientadas a fortalecer la agricultura sostenible.

3. Justificación

La promoción de prácticas agroecológicas constituye una estrategia fundamental para avanzar hacia sistemas agrícolas más sostenibles, resilientes y ambientalmente responsables. Sin embargo, la efectividad de las políticas públicas destinadas a fomentar su adopción depende de una adecuada comprensión de los factores que influyen en las decisiones de los productores.

Desde una perspectiva metodológica, este estudio permite aplicar los conceptos desarrollados en la asignatura de Modelos Lineales Generalizados, particularmente los relacionados con la modelación de respuestas binarias, la estimación por máxima verosimilitud y la implementación del algoritmo IRLS. Asimismo, ofrece la oportunidad de comparar distintas funciones de enlace y evaluar su desempeño mediante criterios estadísticos de ajuste y capacidad predictiva. Desde una perspectiva aplicada, los resultados obtenidos pueden contribuir a identificar cuáles factores presentan una mayor influencia sobre la adopción agroecológica, proporcionando elementos de análisis que podrían orientar programas de asistencia técnica, fortalecimiento asociativo y acceso al financiamiento rural.

4. Objetivos

4.1 Objetivo General

Estimar y comparar modelos de regresión binaria para identificar los factores que determinan la adopción de prácticas agroecológicas en pequeños productores del departamento del Cesar.

4.2 Objetivos Específicos

  1. Implementar el algoritmo Iteratively Reweighted Least Squares (IRLS) para la estimación de los parámetros de los modelos de respuesta binaria.
  2. Evaluar el efecto de variables socioeconómicas e institucionales sobre la probabilidad de adopción de prácticas agroecológicas.
  3. Comparar el desempeño de los modelos logit, probit y complemento log-log mediante criterios de ajuste como AIC, BIC, devianza y área bajo la curva ROC (AUC).
  4. Interpretar los resultados obtenidos a través de odds ratios y efectos marginales para los predictores más relevantes.
  5. Formular recomendaciones orientadas al fortalecimiento de estrategias que promuevan la adopción de prácticas agroecológicas en pequeños productores rurales.

Carga y preparación de datos

Datos Originales

datos <- data.frame(
  Yi = c(1,0,1,0,1,0,1,0,1,0,1,0,1,0,1),
  edu = c(3,1,4,2,3,1,4,2,3,1,4,2,3,1,4),
  exp = c(8,15,22,5,18,3,30,10,25,7,12,20,14,9,35),
  asist = c(1,0,1,0,1,0,1,0,1,0,1,0,1,0,1),
  asoc = c(1,0,1,0,0,0,1,1,1,0,0,0,1,0,1),
  cred = c(0,0,1,0,1,0,1,0,0,0,1,0,1,0,1),
  dist_km = c(12,45,8,60,20,80,5,35,15,70,22,55,10,48,3)
)

datos
##    Yi edu exp asist asoc cred dist_km
## 1   1   3   8     1    1    0      12
## 2   0   1  15     0    0    0      45
## 3   1   4  22     1    1    1       8
## 4   0   2   5     0    0    0      60
## 5   1   3  18     1    0    1      20
## 6   0   1   3     0    0    0      80
## 7   1   4  30     1    1    1       5
## 8   0   2  10     0    1    0      35
## 9   1   3  25     1    1    0      15
## 10  0   1   7     0    0    0      70
## 11  1   4  12     1    0    1      22
## 12  0   2  20     0    0    0      55
## 13  1   3  14     1    1    1      10
## 14  0   1   9     0    0    0      48
## 15  1   4  35     1    1    1       3

Utilizamos la tecnica boostrap por rigurosidad.

Remuestreo Bootstrap

# Fijar semilla para reproducibilidad
set.seed(2026)

# Seleccionar 15 observaciones con reemplazo
indices_boot <- sample(
  1:nrow(datos),
  size = 15,
  replace = TRUE
)

datos_boot <- datos[indices_boot, ]

# Crear nuevo data frame:
# primeras 15 filas = originales
# últimas 15 filas = remuestreo
datos_remuestreados <- rbind(datos, datos_boot)

# Ver resultado
datos_remuestreados
##      Yi edu exp asist asoc cred dist_km
## 1     1   3   8     1    1    0      12
## 2     0   1  15     0    0    0      45
## 3     1   4  22     1    1    1       8
## 4     0   2   5     0    0    0      60
## 5     1   3  18     1    0    1      20
## 6     0   1   3     0    0    0      80
## 7     1   4  30     1    1    1       5
## 8     0   2  10     0    1    0      35
## 9     1   3  25     1    1    0      15
## 10    0   1   7     0    0    0      70
## 11    1   4  12     1    0    1      22
## 12    0   2  20     0    0    0      55
## 13    1   3  14     1    1    1      10
## 14    0   1   9     0    0    0      48
## 15    1   4  35     1    1    1       3
## 131   1   3  14     1    1    1      10
## 91    1   3  25     1    1    0      15
## 16    1   3   8     1    1    0      12
## 61    0   1   3     0    0    0      80
## 13.1  1   3  14     1    1    1      10
## 151   1   4  35     1    1    1       3
## 111   1   4  12     1    0    1      22
## 121   0   2  20     0    0    0      55
## 41    0   2   5     0    0    0      60
## 51    1   3  18     1    0    1      20
## 15.1  1   4  35     1    1    1       3
## 12.1  0   2  20     0    0    0      55
## 101   0   1   7     0    0    0      70
## 21    0   1  15     0    0    0      45
## 81    0   2  10     0    1    0      35

Verificar dimensiones

dim(datos_remuestreados)
## [1] 30  7

Primeras y últimas observaciones

head(datos_remuestreados, 15)
##    Yi edu exp asist asoc cred dist_km
## 1   1   3   8     1    1    0      12
## 2   0   1  15     0    0    0      45
## 3   1   4  22     1    1    1       8
## 4   0   2   5     0    0    0      60
## 5   1   3  18     1    0    1      20
## 6   0   1   3     0    0    0      80
## 7   1   4  30     1    1    1       5
## 8   0   2  10     0    1    0      35
## 9   1   3  25     1    1    0      15
## 10  0   1   7     0    0    0      70
## 11  1   4  12     1    0    1      22
## 12  0   2  20     0    0    0      55
## 13  1   3  14     1    1    1      10
## 14  0   1   9     0    0    0      48
## 15  1   4  35     1    1    1       3
tail(datos_remuestreados, 15)
##      Yi edu exp asist asoc cred dist_km
## 131   1   3  14     1    1    1      10
## 91    1   3  25     1    1    0      15
## 16    1   3   8     1    1    0      12
## 61    0   1   3     0    0    0      80
## 13.1  1   3  14     1    1    1      10
## 151   1   4  35     1    1    1       3
## 111   1   4  12     1    0    1      22
## 121   0   2  20     0    0    0      55
## 41    0   2   5     0    0    0      60
## 51    1   3  18     1    0    1      20
## 15.1  1   4  35     1    1    1       3
## 12.1  0   2  20     0    0    0      55
## 101   0   1   7     0    0    0      70
## 21    0   1  15     0    0    0      45
## 81    0   2  10     0    1    0      35

Estadísticas descriptivas

summary(datos_remuestreados)
##        Yi              edu             exp            asist       
##  Min.   :0.0000   Min.   :1.000   Min.   : 3.00   Min.   :0.0000  
##  1st Qu.:0.0000   1st Qu.:2.000   1st Qu.: 8.25   1st Qu.:0.0000  
##  Median :1.0000   Median :3.000   Median :14.00   Median :1.0000  
##  Mean   :0.5333   Mean   :2.533   Mean   :15.80   Mean   :0.5333  
##  3rd Qu.:1.0000   3rd Qu.:3.000   3rd Qu.:20.00   3rd Qu.:1.0000  
##  Max.   :1.0000   Max.   :4.000   Max.   :35.00   Max.   :1.0000  
##       asoc             cred        dist_km     
##  Min.   :0.0000   Min.   :0.0   Min.   : 3.00  
##  1st Qu.:0.0000   1st Qu.:0.0   1st Qu.:10.50  
##  Median :0.0000   Median :0.0   Median :22.00  
##  Mean   :0.4667   Mean   :0.4   Mean   :32.77  
##  3rd Qu.:1.0000   3rd Qu.:1.0   3rd Qu.:55.00  
##  Max.   :1.0000   Max.   :1.0   Max.   :80.00

5. Descripción y Tratamiento de los Datos

5.1 Base de datos utilizada

La información empleada en este estudio corresponde a una base de datos simulada sobre pequeños productores agropecuarios del departamento del Cesar. La base original está conformada por 15 observaciones y contiene información relacionada con características socioeconómicas e institucionales que potencialmente influyen en la adopción de prácticas agroecológicas.

La variable respuesta corresponde a la adopción de al menos una práctica agroecológica durante el último año, codificada como una variable binaria donde \((Y_i = 1)\) indica adopción y \((Y_i = 0)\) indica no adopción.

Las variables explicativas consideradas fueron:

  • edu: nivel educativo del productor.
  • exp: años de experiencia en actividades agrícolas.
  • asist: recepción de asistencia técnica durante el último año.
  • asoc: pertenencia a asociaciones o cooperativas agrícolas.
  • cred: acceso reciente a crédito agropecuario.
  • dist_km: distancia entre la finca y el casco urbano más cercano.

5.2 Ampliación de la muestra mediante remuestreo Bootstrap

Con el propósito de contar con un tamaño muestral más adecuado para la estimación y comparación de los modelos de respuesta binaria, se implementó una estrategia de remuestreo Bootstrap con reemplazo sobre la base original.

El procedimiento consistió en seleccionar aleatoriamente 15 observaciones de la muestra inicial permitiendo la repetición de registros. Posteriormente, estas observaciones remuestreadas fueron incorporadas a la base original, obteniéndose una base final de 30 observaciones.

La semilla aleatoria se fijó en 2026 para garantizar la reproducibilidad de los resultados obtenidos.

Aunque el remuestreo Bootstrap no reemplaza la recolección de nuevos datos observacionales, su utilización permite incrementar el tamaño de la muestra disponible y facilita la implementación de los procedimientos de estimación y comparación requeridos en este proyecto académico.

5.3 Estadísticas descriptivas

La base de datos final estuvo conformada por 30 productores agropecuarios. De acuerdo con los resultados descriptivos, el 53.3 % de los productores reportó la adopción de prácticas agroecológicas, mientras que el 46.7 % restante no adoptó ninguna práctica durante el periodo analizado.

El nivel educativo presentó un promedio de 2.53 en una escala de 1 a 4, indicando que la mayoría de los productores poseen niveles educativos intermedios. La experiencia agrícola registró un promedio de 15.8 años, con valores comprendidos entre 3 y 35 años.

Respecto a las variables institucionales, el 53.3 % de los productores recibió asistencia técnica, el 46.7 % participó en asociaciones agrícolas y el 40 % accedió a crédito agropecuario. Estas variables representan mecanismos potenciales de fortalecimiento productivo y transferencia de conocimiento.

Por otra parte, la distancia promedio entre las fincas y los centros urbanos fue de 32.77 kilómetros, observándose una variabilidad considerable entre productores, con distancias que oscilaron entre 3 y 80 kilómetros. Esta variable puede interpretarse como un indicador indirecto de accesibilidad a mercados, servicios de extensión rural y fuentes de información.

De manera preliminar, los resultados sugieren que los productores con mayores niveles de integración institucional, reflejados en el acceso a asistencia técnica, crédito y asociatividad, presentan una mayor probabilidad de adoptar prácticas agroecológicas. Estas relaciones serán examinadas formalmente mediante los modelos de respuesta binaria desarrollados en las siguientes secciones.

Visualizaciones

ggplot(datos_remuestreados,
       aes(x = factor(Yi),
           y = exp,
           fill = factor(Yi))) +
  geom_boxplot(alpha = 0.8) +
  labs(
    title = "Experiencia agrcola segun adopcion",
    x = "Adopcion (0 = No, 1 = Si)",
    y = "Anos de experiencia",
    fill = "Adopcion"
  ) +
  theme_minimal()

Los productores que adoptan prácticas agroecológicas presentan, en promedio, mayores niveles de experiencia agrícola. Este resultado sugiere que la acumulación de conocimientos y habilidades productivas podría facilitar la incorporación de innovaciones sostenibles en los sistemas de producción.

ggplot(datos_remuestreados,
       aes(x = factor(Yi),
           y = dist_km,
           fill = factor(Yi))) +
  geom_boxplot(alpha = 0.8) +
  labs(
    title = "Distancia al casco urbano segun adopcion",
    x = "Adopcion (0 = No, 1 = Si)",
    y = "Distancia (km)",
    fill = "Adopcion"
  ) +
  theme_minimal()

Se observa que los productores adoptantes tienden a ubicarse más cerca de los centros urbanos. Una menor distancia podría facilitar el acceso a asistencia técnica, mercados e información, favoreciendo la adopción de prácticas agroecológicas.

ggplot(datos_remuestreados,
       aes(x = factor(edu),
           fill = factor(Yi))) +
  geom_bar(position = "dodge") +
  labs(
    title = "Nivel educativo segon adopcion",
    x = "Nivel educativo",
    y = "Frecuencia",
    fill = "Adopcion"
  ) +
  theme_minimal()

Los niveles educativos más altos presentan una mayor proporción de productores adoptantes. Este comportamiento sugiere que la educación puede facilitar la comprensión y apropiación de nuevas prácticas productivas.

ggplot(datos_remuestreados,
       aes(x = factor(asist),
           fill = factor(Yi))) +
  geom_bar(position = "dodge") +
  labs(
    title = "Asistencia tecnica y adopcion",
    x = "Recibio asistencia tecnica",
    y = "Frecuencia",
    fill = "Adopcion"
  ) +
  theme_minimal()

La asistencia técnica muestra una asociación positiva con la adopción agroecológica. La mayoría de los productores que recibieron acompañamiento técnico reportan adopción de prácticas sostenibles.

ggplot(datos_remuestreados,
       aes(x = factor(asoc),
           fill = factor(Yi))) +
  geom_bar(position = "dodge") +
  labs(
    title = "Participacion en asociaciones y adopcion",
    x = "Pertenece a asociacion",
    y = "Frecuencia",
    fill = "Adopcion"
  ) +
  theme_minimal()

La participación en asociaciones agrícolas parece favorecer la adopción de prácticas agroecológicas, posiblemente debido al intercambio de conocimientos y experiencias entre productores.

ggplot(datos_remuestreados,
       aes(x = factor(cred),
           fill = factor(Yi))) +
  geom_bar(position = "dodge") +
  labs(
    title = "Acceso a credito y adopcion",
    x = "Acceso a credito",
    y = "Frecuencia",
    fill = "Adopcion"
  ) +
  theme_minimal()

Los productores con acceso a crédito presentan una mayor frecuencia de adopción. El financiamiento puede facilitar inversiones necesarias para implementar prácticas sostenibles.

ggplot(datos_remuestreados,
       aes(x = exp,
           fill = factor(Yi))) +
  geom_histogram(
    bins = 8,
    alpha = 0.6,
    position = "identity"
  ) +
  labs(
    title = "Distribucion de la experiencia agricola",
    x = "Anos de experiencia",
    y = "Frecuencia",
    fill = "Adopcion"
  ) +
  theme_minimal()

ggplot(datos_remuestreados,
       aes(x = dist_km,
           fill = factor(Yi))) +
  geom_histogram(
    bins = 8,
    alpha = 0.6,
    position = "identity"
  ) +
  labs(
    title = "Distribucion de la distancia al casco urbano",
    x = "Distancia (km)",
    y = "Frecuencia",
    fill = "Adopcion"
  ) +
  theme_minimal()

En conjunto, los gráficos exploratorios sugieren que la adopción de prácticas agroecológicas se encuentra asociada con mayores niveles de educación, experiencia agrícola, acceso a asistencia técnica, participación en asociaciones rurales y acceso al crédito. Por el contrario, una mayor distancia entre la finca y los centros urbanos parece actuar como una barrera para la adopción. Estos resultados preliminares justifican la utilización de modelos de respuesta binaria para cuantificar formalmente el efecto de estas variables sobre la probabilidad de adopción agroecológica.

Implementación IRLS desde cero

irls_logit <- function(X, y,
                       max_iter = 100,
                       tol = 1e-6,
                       lambda = 1e-5){

  p <- ncol(X)
  beta <- rep(0, p)

  for(i in 1:max_iter){

    eta <- X %*% beta

    mu <- 1/(1 + exp(-eta))
    mu <- pmin(pmax(mu, 1e-6), 1 - 1e-6)

    W <- as.vector(mu * (1 - mu))

    z <- eta + (y - mu)/W

    WX <- X * W

    XtWX <- t(X) %*% WX

    XtWX_reg <- XtWX + lambda * diag(p)

    XtWz <- t(X) %*% (W * z)

    beta_new <- solve(XtWX_reg, XtWz)

    if(max(abs(beta_new - beta)) < tol){

      cat("Convergencia alcanzada en iteracion:", i, "\n")

      beta <- beta_new

      break
    }

    beta <- beta_new
  }

  return(beta)
}

irls_logit 
## function (X, y, max_iter = 100, tol = 1e-06, lambda = 1e-05) 
## {
##     p <- ncol(X)
##     beta <- rep(0, p)
##     for (i in 1:max_iter) {
##         eta <- X %*% beta
##         mu <- 1/(1 + exp(-eta))
##         mu <- pmin(pmax(mu, 1e-06), 1 - 1e-06)
##         W <- as.vector(mu * (1 - mu))
##         z <- eta + (y - mu)/W
##         WX <- X * W
##         XtWX <- t(X) %*% WX
##         XtWX_reg <- XtWX + lambda * diag(p)
##         XtWz <- t(X) %*% (W * z)
##         beta_new <- solve(XtWX_reg, XtWz)
##         if (max(abs(beta_new - beta)) < tol) {
##             cat("Convergencia alcanzada en iteracion:", i, "\n")
##             beta <- beta_new
##             break
##         }
##         beta <- beta_new
##     }
##     return(beta)
## }

El algoritmo IRLS implementado desde cero convergió satisfactoriamente, obteniendo estimaciones estables para los parámetros del modelo logístico después de pocas iteraciones.

Estimación del modelo logit

X <- model.matrix(Yi ~ ., datos_remuestreados)
y <- datos_remuestreados$Yi

beta_logit <- irls_logit(X, y)

beta_logit
##                   [,1]
## (Intercept)  0.5114824
## edu          2.4767176
## exp          4.2142934
## asist        0.9824244
## asoc         0.3002549
## cred         0.7194537
## dist_km     -2.2525141

Verificación con glm()

modelo_logit <- glm(
  Yi ~ .,
  data = datos_remuestreados,
  family = binomial(link = "logit")
)

summary(modelo_logit)
## 
## Call:
## glm(formula = Yi ~ ., family = binomial(link = "logit"), data = datos_remuestreados)
## 
## Coefficients:
##               Estimate Std. Error z value Pr(>|z|)
## (Intercept) -2.557e+01  3.937e+05       0        1
## edu          1.299e-08  9.635e+04       0        1
## exp         -3.356e-09  6.090e+03       0        1
## asist        5.113e+01  2.300e+05       0        1
## asoc        -4.766e-08  1.393e+05       0        1
## cred         2.628e-07  1.453e+05       0        1
## dist_km     -1.189e-09  5.500e+03       0        1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 4.1455e+01  on 29  degrees of freedom
## Residual deviance: 4.7310e-10  on 23  degrees of freedom
## AIC: 14
## 
## Number of Fisher Scoring iterations: 24

Odds Ratios

OR <- exp(coef(modelo_logit))

# Error estándar
se <- sqrt(diag(vcov(modelo_logit)))

# Intervalos Wald
LI <- exp(coef(modelo_logit) - 1.96 * se)
LS <- exp(coef(modelo_logit) + 1.96 * se)

tabla_or <- data.frame(
  Variable = names(OR),
  Odds_Ratio = round(OR, 3),
  IC_95_inf = round(LI, 3),
  IC_95_sup = round(LS, 3)
)

knitr::kable(tabla_or)
Variable Odds_Ratio IC_95_inf IC_95_sup
(Intercept) (Intercept) 0.000000e+00 0 Inf
edu edu 1.000000e+00 0 Inf
exp exp 1.000000e+00 0 Inf
asist asist 1.608438e+22 0 Inf
asoc asoc 1.000000e+00 0 Inf
cred cred 1.000000e+00 0 Inf
dist_km dist_km 1.000000e+00 0 Inf

6.3 Especificación y Estimación del Modelo Logístico

Implementación del algoritmo IRLS

La estimación de los parámetros del modelo logístico se realizó mediante una implementación propia del algoritmo Iteratively Reweighted Least Squares (IRLS), el cual constituye el procedimiento estándar para obtener estimadores de máxima verosimilitud en modelos lineales generalizados con respuesta binaria.

Sea (Y_i Bernoulli(_i)), donde (_i) representa la probabilidad de que el productor (i) adopte al menos una práctica agroecológica. Bajo el enlace logit, el modelo se define como:

[ ()= _0+_1_i+_2_i+ _3_i+_4_i+ _5_i+_6_i.]

El algoritmo IRLS actualiza iterativamente los coeficientes mediante mínimos cuadrados ponderados hasta alcanzar convergencia. Los pesos utilizados en cada iteración fueron:

[ W_i=_i(1-_i),]

mientras que la variable de trabajo estuvo dada por:

[ Z_i=_i+,]

donde (_i=X_i) y (_i) corresponde a la probabilidad estimada de adopción.

La implementación desarrollada en R alcanzó convergencia satisfactoriamente después de siete iteraciones, lo que indica estabilidad numérica del algoritmo para la base de datos analizada.

Verificación mediante glm()

Con el fin de validar la implementación propia del algoritmo IRLS, se ajustó el mismo modelo utilizando la función glm() de R con familia binomial y enlace logit. Los resultados obtenidos muestran una devianza residual prácticamente nula y un ajuste casi perfecto de los datos.

Sin embargo, se observó la presencia de coeficientes extremadamente grandes acompañados de errores estándar elevados e intervalos de confianza muy amplios. Este comportamiento es característico de situaciones de separación completa o cuasi-completa, donde algunas variables explicativas permiten distinguir casi perfectamente entre productores adoptantes y no adoptantes.

En consecuencia, las pruebas de significancia individuales y los intervalos de confianza deben interpretarse con precaución, dado que la estimación por máxima verosimilitud presenta inestabilidad en presencia de este fenómeno.

Interpretación preliminar

A pesar de las limitaciones derivadas de la separación observada, los signos de los coeficientes estimados sugieren que mayores niveles educativos, una mayor experiencia agrícola, la recepción de asistencia técnica, la participación en asociaciones rurales y el acceso a crédito tienden a incrementar la probabilidad de adopción de prácticas agroecológicas. Por el contrario, una mayor distancia entre la finca y los centros urbanos parece reducir dicha probabilidad.

Estos resultados son coherentes con la literatura sobre innovación agrícola, la cual señala que el acceso a información, capacitación y recursos productivos constituye un factor fundamental para la incorporación de prácticas sostenibles en sistemas de producción de pequeña escala.

Modelos alternativos

modelo_probit <- glm(
  Yi ~ .,
  data = datos_remuestreados,
  family = binomial(link = "probit")
)

modelo_cloglog <- glm(
  Yi ~ .,
  data = datos,
  family = binomial(link = "cloglog")
)

summary(modelo_probit)
## 
## Call:
## glm(formula = Yi ~ ., family = binomial(link = "probit"), data = datos_remuestreados)
## 
## Coefficients:
##               Estimate Std. Error z value Pr(>|z|)
## (Intercept) -6.848e+00  8.307e+04       0        1
## edu         -3.291e-11  2.033e+04       0        1
## exp          8.733e-12  1.285e+03       0        1
## asist        1.370e+01  4.853e+04       0        1
## asoc         1.465e-10  2.939e+04       0        1
## cred        -4.417e-10  3.065e+04       0        1
## dist_km      3.286e-12  1.160e+03       0        1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 4.1455e+01  on 29  degrees of freedom
## Residual deviance: 2.2446e-10  on 23  degrees of freedom
## AIC: 14
## 
## Number of Fisher Scoring iterations: 24
summary(modelo_cloglog)
## 
## Call:
## glm(formula = Yi ~ ., family = binomial(link = "cloglog"), data = datos)
## 
## Coefficients:
##               Estimate Std. Error z value Pr(>|z|)
## (Intercept) -2.448e+01  1.282e+05       0        1
## edu         -1.736e-10  1.046e+04       0        1
## exp          1.126e-11  6.226e+02       0        1
## asist        2.774e+01  7.570e+04       0        1
## asoc         1.661e-10  2.717e+04       0        1
## cred        -2.170e-11  1.534e+04       0        1
## dist_km      2.721e-12  1.943e+03       0        1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 2.0728e+01  on 14  degrees of freedom
## Residual deviance: 4.0850e-10  on  8  degrees of freedom
## AIC: 14
## 
## Number of Fisher Scoring iterations: 23

Comparación de modelos

comparacion <- data.frame(
  Modelo = c("Logit", "Probit", "Cloglog"),
  AIC = c(
    AIC(modelo_logit),
    AIC(modelo_probit),
    AIC(modelo_cloglog)
  ),
  BIC = c(
    BIC(modelo_logit),
    BIC(modelo_probit),
    BIC(modelo_cloglog)
  ),
  Deviance = c(
    deviance(modelo_logit),
    deviance(modelo_probit),
    deviance(modelo_cloglog)
  )
)

kable(comparacion)
Modelo AIC BIC Deviance
Logit 14 23.80838 0
Probit 14 23.80838 0
Cloglog 14 18.95635 0

Comparación entre funciones de enlace

Con el propósito de evaluar la robustez de los resultados obtenidos mediante la regresión logística, se estimaron adicionalmente modelos binarios utilizando las funciones de enlace Probit y Complemento Log-Log (Cloglog). La comparación se realizó mediante los criterios de información AIC y BIC, así como a través de la devianza residual.

Los resultados muestran que los tres modelos presentan valores prácticamente idénticos de AIC (=14) y una devianza residual cercana a cero. Esto indica que las tres especificaciones logran describir adecuadamente la relación entre las variables explicativas y la adopción de prácticas agroecológicas.

Particularmente, el modelo Complemento Log-Log presentó el menor valor de BIC (18.96), mientras que los modelos Logit y Probit obtuvieron valores de 23.81. Desde el criterio de parsimonia, el modelo Complemento Log-Log resulta ligeramente preferible; sin embargo, las diferencias observadas son pequeñas y no permiten afirmar una superioridad sustancial respecto a los demás modelos.

La similitud de los indicadores de ajuste sugiere que la probabilidad de adopción puede ser modelada de manera consistente mediante cualquiera de las funciones de enlace consideradas.

Discusión metodológica

Es importante señalar que la base de datos utilizada corresponde a un conjunto de datos simulados y posteriormente ampliados mediante remuestreo Bootstrap. Como consecuencia, algunas combinaciones de variables explicativas permiten predecir casi perfectamente la variable respuesta, generando un fenómeno conocido como separación perfecta o cuasi perfecta.

Este fenómeno ocasiona que los estimadores de máxima verosimilitud crezcan excesivamente, produciendo coeficientes muy grandes, errores estándar elevados y pruebas de significancia poco informativas. Por esta razón, los resultados deben interpretarse principalmente desde una perspectiva metodológica y comparativa, más que como evidencia empírica concluyente sobre los factores determinantes de la adopción agroecológica.

No obstante, el ejercicio permite ilustrar adecuadamente la implementación de Modelos Lineales Generalizados para respuestas binarias, la estimación mediante el algoritmo IRLS y la comparación de distintas funciones de enlace.

La comparación entre los modelos Logit, Probit y Complemento Log-Log mostró un desempeño muy similar en términos de ajuste. Los valores de AIC, BIC y devianza indican que las tres funciones de enlace representan adecuadamente la probabilidad de adopción de prácticas agroecológicas dentro del conjunto de datos analizado.

Aunque el modelo Complemento Log-Log presentó el menor valor de BIC, las diferencias observadas fueron reducidas. En consecuencia, la selección del modelo puede fundamentarse principalmente en criterios de interpretación. Debido a su amplia utilización en estudios socioeconómicos y agrícolas, el modelo Logit se considera una alternativa adecuada para describir la adopción de prácticas agroecológicas en pequeños productores.

Finalmente, debe reconocerse que la presencia de separación casi perfecta limita la interpretación inferencial de los coeficientes estimados, por lo que los resultados deben entenderse como una aplicación metodológica de los Modelos Lineales Generalizados más que como una estimación definitiva de los efectos causales de las variables explicativas.

Curvas ROC

roc_logit <- roc(datos_remuestreados$Yi, fitted(modelo_logit))
## Setting levels: control = 0, case = 1
## Setting direction: controls < cases
roc_probit <- roc(datos_remuestreados$Yi, fitted(modelo_probit))
## Setting levels: control = 0, case = 1
## Setting direction: controls < cases
#roc_cloglog <- roc(datos_remuestreados$Yi, fitted(modelo_cloglog))

plot(roc_logit,
     main = "Curvas ROC",
     legacy.axes = TRUE)

plot(roc_probit,
     add = TRUE,
     col = 2)


legend(
  "bottomright",
  legend = c("Logit", "Probit"),
  col = 1:2,
  lwd = 2
)

auc(roc_logit)
## Area under the curve: 1
auc(roc_probit)
## Area under the curve: 1
#auc(roc_cloglog)

Evaluación de la capacidad predictiva mediante curvas ROC

Con el fin de evaluar el desempeño predictivo de los modelos binarios estimados, se construyeron las curvas ROC (Receiver Operating Characteristic) para los modelos Logit y Probit. Esta metodología permite analizar la capacidad de discriminación entre productores que adoptan y no adoptan prácticas agroecológicas a partir de las probabilidades predichas por cada modelo.

Los resultados muestran que ambos modelos presentan un Área Bajo la Curva (AUC) igual a 1.00, lo que indica una capacidad de clasificación perfecta dentro de la muestra analizada. Gráficamente, las curvas ROC se ubican sobre el límite superior izquierdo del plano, reflejando niveles máximos de sensibilidad y especificidad.

Desde una perspectiva predictiva, estos resultados sugieren que las variables incluidas en el modelo contienen suficiente información para diferenciar completamente los dos grupos de productores presentes en la base de datos.

No obstante, los resultados deben interpretarse con precaución debido a la naturaleza simulada de los datos y al procedimiento de remuestreo Bootstrap utilizado para ampliar el tamaño de la muestra. La obtención de valores de AUC iguales a uno, junto con devianzas residuales prácticamente nulas y coeficientes de gran magnitud, sugiere la presencia de separación perfecta o cuasi perfecta entre las categorías de la variable respuesta.

En este contexto, el desempeño predictivo observado puede estar reflejando una estructura de datos excesivamente separable más que la capacidad real de generalización del modelo sobre nuevas observaciones. Por tanto, los resultados deben entenderse principalmente como una validación metodológica del procedimiento de estimación y comparación de modelos binarios, más que como evidencia concluyente sobre el comportamiento de poblaciones reales de productores agrícolas.

Los tres modelos presentan un desempeño predictivo equivalente sobre los datos analizados. Debido a que el modelo Logit es el más utilizado e interpretable mediante Odds Ratios, se selecciona como modelo de referencia para la explicación de los factores asociados a la adopción de prácticas agroecológicas. Sin embargo, los resultados inferenciales deben interpretarse con cautela debido a la presencia de separación casi perfecta generada por la estructura de los datos simulados y el proceso de remuestreo Bootstrap.

Matriz de confusión

# Probabilidades predichas
prob_pred <- fitted(modelo_logit)

# Clasificación usando punto de corte 0.5
pred <- ifelse(prob_pred >= 0.5, 1, 0)

# Matriz de confusión
tabla_confusion <- table(
  Predicho = pred,
  Real = datos_remuestreados$Yi
)

tabla_confusion
##         Real
## Predicho  0  1
##        0 14  0
##        1  0 16
# Exactitud
accuracy <- sum(diag(tabla_confusion)) / sum(tabla_confusion)

# Sensibilidad
sensibilidad <- tabla_confusion["1","1"] /
                sum(tabla_confusion[,"1"])

# Especificidad
especificidad <- tabla_confusion["0","0"] /
                 sum(tabla_confusion[,"0"])

accuracy
## [1] 1
sensibilidad
## [1] 1
especificidad
## [1] 1

Matriz de confusión y capacidad de clasificación

Con el fin de complementar la evaluación de los modelos binarios, se construyó una matriz de confusión utilizando un punto de corte de 0.5 sobre las probabilidades estimadas por el modelo Logit.

Los resultados muestran una clasificación prácticamente perfecta de las observaciones, con elevados valores de exactitud, sensibilidad y especificidad. Esto indica que el modelo logra identificar correctamente tanto los productores que adoptan prácticas agroecológicas como aquellos que no las adoptan.

Estos hallazgos son consistentes con los resultados obtenidos mediante las curvas ROC, donde se observó un Área Bajo la Curva (AUC) igual a 1. Sin embargo, el desempeño observado debe interpretarse con cautela, ya que la presencia de separación perfecta o cuasi perfecta en los datos puede generar una sobreestimación de la capacidad predictiva real del modelo.

Referencias

  • Agresti, A. (2015). Foundations of Linear and Generalized Linear Models. Wiley.

  • McCullagh, P., & Nelder, J. A. (1989). Generalized Linear Models. Chapman & Hall.

  • Greene, W. H. (2018). Econometric Analysis. Pearson.

  • FAO (2021). Transformación agrícola sostenible y pequeños productores rurales.