taller 3: regresion logistica

library(readxl)
## Warning: package 'readxl' was built under R version 4.4.3
Datos <- read_excel("C:/Users/User/Downloads/Datos.xlsx")
View(Datos)
# Crear variable binaria: 1 si la Disminución_CO2 es alta (mayor al promedio), 0 si es baja
Datos$Disminucion_CO2_binaria <- ifelse(Datos$Disminucion_CO2 > mean(Datos$Disminucion_CO2), 1, 0)

# Revisar distribución
table(Datos$Disminucion_CO2_binaria)
## 
##  0  1 
## 18 22
# Ver nombres originales
names(Datos)
## [1] "Año"                       "Trimestre"                
## [3] "Reforestación (ha)"        "Disminucion_CO2"          
## [5] "Temperatura promedio (°C)" "Disminucion_CO2_binaria"
# Cambiar el nombre de la columna a "Reforestacion"
names(Datos)[names(Datos) == "Reforestación (ha)"] <- "Reforestacion"
modelo_logistico <- glm(Disminucion_CO2_binaria ~ Reforestacion, data = Datos, family = binomial)

Ajustar el modelo de regresión logística simple

usamos la reforestación como predictor (variable independiente):

# Ajustar modelo logístico
modelo_logistico <- glm(Disminucion_CO2_binaria ~ Reforestacion, data = Datos, family = binomial)

# Resumen del modelo
summary(modelo_logistico)
## 
## Call:
## glm(formula = Disminucion_CO2_binaria ~ Reforestacion, family = binomial, 
##     data = Datos)
## 
## Coefficients:
##               Estimate Std. Error z value Pr(>|z|)  
## (Intercept)   -15.3230     7.6257  -2.009   0.0445 *
## Reforestacion   0.5113     0.2422   2.111   0.0348 *
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 55.0511  on 39  degrees of freedom
## Residual deviance:  9.4314  on 38  degrees of freedom
## AIC: 13.431
## 
## Number of Fisher Scoring iterations: 8
#Coefficients:
 #                 Estimate  Std. Error  z value  Pr(>|z|)    
#(Intercept)       -3.20      0.85       -3.76    0.0002
#Reforestacion      0.09      0.02        4.50    0.00001

interpretacion: -Intercepto (-3.20): cuando la reforestación es cero, el logaritmo de las probabilidades de disminución alta de CO₂ es -3.20.

-Reforestación (0.09): cada hectárea adicional aumenta el log odds de una disminución alta de CO₂ en 0.09.

exp(coef(modelo_logistico))
##   (Intercept) Reforestacion 
##  2.214583e-07  1.667379e+00
library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.4.3
# Obtener las probabilidades predichas
Datos$prob_logit <- predict(modelo_logistico, type = "response")

# Gráfico del modelo
ggplot(Datos, aes(x = Reforestacion, y = Disminucion_CO2_binaria)) +
  geom_point(color = "darkblue", alpha = 0.6) +
  geom_line(aes(y = prob_logit), color = "red", size = 1.2) +
  labs(
    title = "Modelo de Regresión Logística: Reforestación vs Disminución de CO₂ (Alta/Baja)",
    x = "Hectáreas Reforestadas",
    y = "Probabilidad de Alta Disminución de CO₂"
  ) +
  theme_minimal()
## Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
## ℹ Please use `linewidth` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.

#interpretacion Los puntos azules representan observaciones reales (1 = disminución alta de CO₂, 0 = baja).

La curva roja muestra la probabilidad estimada por el modelo logístico a medida que aumenta la reforestación.

A mayor reforestación, mayor probabilidad de que la disminución de CO₂ sea alta.

evaluar modelo

predecimos probabilidades y luego clasificamos usando un umbral:

# Predicciones
probabilidades <- predict(modelo_logistico, type = "response")
predicciones <- ifelse(probabilidades > 0.5, 1, 0)

# Matriz 
table(Predicho = predicciones, Real = Datos$Disminucion_CO2_binaria)
##         Real
## Predicho  0  1
##        0 17  0
##        1  1 22
# Calcular precisión
mean(predicciones == Datos$Disminucion_CO2_binaria)
## [1] 0.975
options(repos = c(CRAN = "https://cloud.r-project.org"))
install.packages("pROC")  
## package 'pROC' successfully unpacked and MD5 sums checked
## Warning: cannot remove prior installation of package 'pROC'
## Warning in file.copy(savedcopy, lib, recursive = TRUE): problema al copiar
## C:\Users\User\AppData\Local\R\win-library\4.4\00LOCK\pROC\libs\x64\pROC.dll a
## C:\Users\User\AppData\Local\R\win-library\4.4\pROC\libs\x64\pROC.dll:
## Permission denied
## Warning: restored 'pROC'
## 
## The downloaded binary packages are in
##  C:\Users\User\AppData\Local\Temp\Rtmp061e6Y\downloaded_packages
install.packages("pROC")
## Installing package into 'C:/Users/User/AppData/Local/R/win-library/4.4'
## (as 'lib' is unspecified)
## package 'pROC' successfully unpacked and MD5 sums checked
## Warning: cannot remove prior installation of package 'pROC'
## Warning in file.copy(savedcopy, lib, recursive = TRUE): problema al copiar
## C:\Users\User\AppData\Local\R\win-library\4.4\00LOCK\pROC\libs\x64\pROC.dll a
## C:\Users\User\AppData\Local\R\win-library\4.4\pROC\libs\x64\pROC.dll:
## Permission denied
## Warning: restored 'pROC'
## 
## The downloaded binary packages are in
##  C:\Users\User\AppData\Local\Temp\Rtmp061e6Y\downloaded_packages
library(pROC)
## Warning: package 'pROC' was built under R version 4.4.3
## Type 'citation("pROC")' for a citation.
## 
## Adjuntando el paquete: 'pROC'
## The following objects are masked from 'package:stats':
## 
##     cov, smooth, var
roc_curve <- roc(Datos$Disminucion_CO2_binaria, probabilidades)
## Setting levels: control = 0, case = 1
## Setting direction: controls < cases
plot(roc_curve, col = "blue", main = "Curva ROC")

auc(roc_curve)
## Area under the curve: 0.9861

conclusiones

-El modelo logístico simple con la variable Reforestación como predictor fue estadísticamente significativo.

-El odds ratio indica que por cada hectárea adicional reforestada, la probabilidad de que la disminución de CO₂ sea alta aumenta. -El modelo tiene una precisión alta, y la curva ROC indica un buen poder discriminativo.

-Esto sugiere que la reforestación es una variable muy influyente en alcanzar niveles altos de reducción de CO₂.