Taller 2: Modelos Lineales Generalizados.

2. La librería (GLMsData) y contiene la base de datos (ants). Está contiene información de la riqueza en hormigas de zonas de 64 metros cuadrados, en 22 pantanos y 22 bosques que rodean diferentes zonas de EEUU. Las variables medidas son: Site nombre del sitio de la muestra (está variable no la tenga en cuenta para el análisis), Srich riqueza de especies encontradas (número de especies diferentes encontradas), Latitude la latitud del sitio, Elevation, la elevación en metros cuadrados del sitio de estudio y el tipo de Habitat de las hormigas pantano o bosque.

Explicación del dataframe ants: Este dataframe presenta datos sobre la Riqueza de Especies de Hormigas en Nueva Inglaterra. Se han realizado estudios para evaluar cuántas especies de hormigas existen en distintos tipos de hábitats, como pantanos y bosques.

Los datos analizados provienen de muestreos realizados en 44 sitios diferentes en Nueva Inglaterra, específicamente en los estados de Connecticut, Massachusetts y Vermont. Estos muestreos se llevaron a cabo en cuadrantes de 64 metros cuadrados y se centraron en 22 pantanos y 22 bosques.

El conjunto de datos ants incluye cinco variables clave:

Site: Abreviatura del nombre del sitio donde se recolectaron los datos. Srich: Riqueza de especies, que indica cuántas especies de hormigas se encontraron en cada sitio. Habitat: Tipo de hábitat (pantano (Bog) o bosque (Forest)). Latitude: Latitud en grados decimales del sitio de muestreo. Elevation: Elevación en metros sobre el nivel del mar del sitio.

La investigación sobre la riqueza de especies de hormigas es esencial para comprender la biodiversidad de los ecosistemas y el impacto de factores como el hábitat, la latitud y la elevación en la diversidad de especies. Este estudio en Nueva Inglaterra ofrece datos importantes sobre la distribución de hormigas en diferentes hábitats y cómo los factores ambientales influyen en su diversidad, lo que contribuye al conocimiento ecológico y a la conservación y manejo de los ecosistemas.

A) Realice y Estime el ‘mejor’ modelo de regresión para predecir la probabilidad de que las hormigas habiten un bosque. Muestre las medidas de bondad de ajuste.

#A1. Cargar Librerías y Datos: 
suppressPackageStartupMessages(library(dplyr))
suppressPackageStartupMessages(library(ggplot2))
suppressPackageStartupMessages(library(GLMsData))
suppressPackageStartupMessages(library(car))
suppressPackageStartupMessages(library(MASS, exclude = "select"))
suppressPackageStartupMessages(library(DescTools))

# Cargar la base de datos
data(ants)  # Asegúrate de que la base de datos esté disponible
glimpse(ants)
Rows: 44
Columns: 5
$ Site      <fct> TPB, HBC, CKB, SKP, CB, RP, PK, OB, SWR, ARC, BH, QP, HAW, W…
$ Srich     <int> 6, 16, 18, 17, 9, 15, 7, 12, 14, 9, 10, 10, 4, 5, 7, 7, 4, 6…
$ Habitat   <fct> Forest, Forest, Forest, Forest, Forest, Forest, Forest, Fore…
$ Latitude  <dbl> 41.97, 42.00, 42.03, 42.05, 42.05, 42.17, 42.19, 42.23, 42.2…
$ Elevation <int> 389, 8, 152, 1, 210, 78, 47, 491, 121, 95, 274, 335, 543, 32…

CONCLUSIONES

El dataframe tiene 44 filas y 5 columnas.

Diversidad de sitios (Site): el conjunto de datos incluye varios sitios (TPB, HBC, CKB, etc.), lo que indica una amplia gama de ubicaciones para el estudio, todos identificados como con hábitats forestales. A continuacion se coloca su abreviatura y nombre.

Abreviatura Nombre del Sitio
TPB Tully Pond Bog
HBC Hockanum Bog
CKB Cockaponset Bog
SKP Skippack
CB Cedar Bog
RP Rocky Point
PK Pine Knoll
OB Oak Bog
SWR Swamp River
ARC Arcadia
BH Barlow Hollow
QP Quinebaug Pond
HAW Hawley
WIN Windsor
SPR Spring Hill
SNA Snafu
PEA Pease
CHI Chimney Hill
MOL Molasses Swamp
COL Cold Spring
MOO Moosup
CAR Carver

Riqueza de especies: La columna “Riqueza de especies” muestra la riqueza de especies en diferentes sitios, que varía desde un mínimo de 6 hasta un máximo de 18. Esto sugiere diferentes niveles de biodiversidad en diferentes ubicaciones.

Distribución geográfica: Los valores de latitud indican que todos los sitios están relativamente cerca unos de otros, lo que sugiere que podrían compartir condiciones climáticas y ecológicas similares.

Variación de elevación: La columna “Elevación” muestra un rango significativo (de 1 a 491 metros), que podría influir en la composición y riqueza de especies en cada sitio.

Correlaciones potenciales: analizar la relación entre la riqueza de especies, la elevación y la latitud podría proporcionar información sobre cómo estos factores afectan la biodiversidad en las áreas forestales.

# Crear un vector con nombres únicos
unique_names <- make.unique(as.character(ants$Site))

# Asigna los nombres únicos como nombres de fila
rownames(ants) <- unique_names

# Luego, elimina la columna 'Site'
ants$Site <- NULL

head(ants)
    Srich Habitat Latitude Elevation
TPB     6  Forest    41.97       389
HBC    16  Forest    42.00         8
CKB    18  Forest    42.03       152
SKP    17  Forest    42.05         1
CB      9  Forest    42.05       210
RP     15  Forest    42.17        78
# Convertir Variables
ants$Habitat <- ifelse(ants$Habitat == "Forest", 1, 0)  # 1 para "Forest", 0 para "Bog"

head(ants)
    Srich Habitat Latitude Elevation
TPB     6       1    41.97       389
HBC    16       1    42.00         8
CKB    18       1    42.03       152
SKP    17       1    42.05         1
CB      9       1    42.05       210
RP     15       1    42.17        78
# Crear modelo inicial de Poisson
modelo_poi_ants <- glm(Srich ~ ., data = ants, family = poisson(link='log')); summary(modelo_poi_ants)

Call:
glm(formula = Srich ~ ., family = poisson(link = "log"), data = ants)

Coefficients:
             Estimate Std. Error z value Pr(>|z|)    
(Intercept) 11.936812   2.621497    4.55  5.3e-06 ***
Habitat      0.635439   0.119566    5.31  1.1e-07 ***
Latitude    -0.235793   0.061664   -3.82  0.00013 ***
Elevation   -0.001141   0.000375   -3.04  0.00234 ** 
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

(Dispersion parameter for poisson family taken to be 1)

    Null deviance: 102.76  on 43  degrees of freedom
Residual deviance:  40.69  on 40  degrees of freedom
AIC: 209

Number of Fisher Scoring iterations: 4
# Crear modelo de regresión binomial negativa
modelo_nb_ants <- glm.nb(Srich ~ ., data = ants); summary(modelo_nb_ants)
Warning in theta.ml(Y, mu, sum(w), w, limit = control$maxit, trace =
control$trace > : iteration limit reached
Warning in theta.ml(Y, mu, sum(w), w, limit = control$maxit, trace =
control$trace > : iteration limit reached

Call:
glm.nb(formula = Srich ~ ., data = ants, init.theta = 37888.17088, 
    link = log)

Coefficients:
             Estimate Std. Error z value Pr(>|z|)    
(Intercept) 11.936677   2.621721    4.55  5.3e-06 ***
Habitat      0.635435   0.119578    5.31  1.1e-07 ***
Latitude    -0.235790   0.061669   -3.82  0.00013 ***
Elevation   -0.001141   0.000375   -3.04  0.00234 ** 
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

(Dispersion parameter for Negative Binomial(37888) family taken to be 1)

    Null deviance: 102.743  on 43  degrees of freedom
Residual deviance:  40.682  on 40  degrees of freedom
AIC: 211

Number of Fisher Scoring iterations: 1

              Theta:  37888 
          Std. Err.:  1681590 
Warning while fitting theta: iteration limit reached 

 2 x log-likelihood:  -201 

Modelo de Regresión Binomial Negativa:

Srich = 11.936677 + 0.635435 * Habitat - 0.235790 * Latitude - 0.001141 * Elevation

Modelo de Regresión Poisson:

Srich = 11.936812 + 0.635439 * Habitat - 0.235793 * Latitude - 0.001141 * Elevation

Comparación de Modelos

Característica Modelo de Poisson Modelo Binomial Negativo
Llamada glm(formula = Srich ~ ., family = poisson(link = "log"), data = ants) glm.nb(formula = Srich ~ ., data = ants)
Intercepto 11.936812 (p < 0.001) 11.936677 (p < 0.001)
Habitat 0.635439 (p < 0.001) 0.635435 (p < 0.001)
Latitud -0.235793 (p < 0.001) -0.235790 (p < 0.001)
Elevación -0.001141 (p = 0.002) -0.001141 (p = 0.002)
Parámetro de Dispersión 1 (suponido) 37888 (estimado)
Desviación Nula 102.76 102.743
Desviación Residual 40.69 40.682
AIC 209 211
Iteraciones de Fisher 4 1
Advertencias Ninguna Límite de iteración alcanzado
Log-verosimilitud -204.5 -201

Interpretación

  • Significancia de Coeficientes: Ambos modelos presentan coeficientes significativos para las variables explicativas, indicando que el hábitat, la latitud y la elevación tienen efectos sobre la riqueza de especies (Srich).

  • AIC y Ajuste: Aunque el AIC del modelo de Poisson es más bajo (209) que el del modelo binomial negativo (211), esto no necesariamente indica un mejor ajuste, especialmente si hay sobredispersión en los datos.

  • Parámetro de Dispersión: El modelo binomial negativo incluye un parámetro de dispersión (theta), que indica que los datos pueden tener más variabilidad de la que el modelo de Poisson puede manejar. Esto es importante si hay indicios de sobredispersión en los datos.

  • Desviaciones: Ambas desviaciones nula y residual son muy similares, lo que sugiere que ambos modelos ajustan de manera similar a los datos.

  • Elección del Modelo: Si los datos presentan sobredispersión (como podría sugerir el alto valor de theta en el modelo binomial negativo), este modelo puede ser más apropiado, a pesar de un AIC ligeramente mayor.

  • Pruebas Adicionales: Se recomienda realizar pruebas de ajuste y análisis de residuos para determinar la idoneidad del modelo elegido.

Establecer el mejor modelo utilizando AIC

# Establecer el mejor modelo utilizando AIC
# Realizar la selección de variables
step(modelo_nb_ants)
Start:  AIC=209
Srich ~ Habitat + Latitude + Elevation

            Df Deviance AIC
<none>             40.7 209
- Elevation  1     50.3 217
- Latitude   1     56.6 223
- Habitat    1     70.4 237

Call:  glm.nb(formula = Srich ~ Habitat + Latitude + Elevation, data = ants, 
    init.theta = 37888.17088, link = log)

Coefficients:
(Intercept)      Habitat     Latitude    Elevation  
   11.93668      0.63544     -0.23579     -0.00114  

Degrees of Freedom: 43 Total (i.e. Null);  40 Residual
Null Deviance:      103 
Residual Deviance: 40.7     AIC: 211
step(modelo_poi_ants)
Start:  AIC=209
Srich ~ Habitat + Latitude + Elevation

            Df Deviance AIC
<none>             40.7 209
- Elevation  1     50.3 217
- Latitude   1     56.6 223
- Habitat    1     70.4 237

Call:  glm(formula = Srich ~ Habitat + Latitude + Elevation, family = poisson(link = "log"), 
    data = ants)

Coefficients:
(Intercept)      Habitat     Latitude    Elevation  
   11.93681      0.63544     -0.23579     -0.00114  

Degrees of Freedom: 43 Total (i.e. Null);  40 Residual
Null Deviance:      103 
Residual Deviance: 40.7     AIC: 209
# Ajustar el mejor modelo de regresión Binomial Negativo

mejor_modelo_nb_ants <- glm.nb(Srich ~ ., data = ants); summary(mejor_modelo_nb_ants)
Warning in theta.ml(Y, mu, sum(w), w, limit = control$maxit, trace =
control$trace > : iteration limit reached
Warning in theta.ml(Y, mu, sum(w), w, limit = control$maxit, trace =
control$trace > : iteration limit reached

Call:
glm.nb(formula = Srich ~ ., data = ants, init.theta = 37888.17088, 
    link = log)

Coefficients:
             Estimate Std. Error z value Pr(>|z|)    
(Intercept) 11.936677   2.621721    4.55  5.3e-06 ***
Habitat      0.635435   0.119578    5.31  1.1e-07 ***
Latitude    -0.235790   0.061669   -3.82  0.00013 ***
Elevation   -0.001141   0.000375   -3.04  0.00234 ** 
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

(Dispersion parameter for Negative Binomial(37888) family taken to be 1)

    Null deviance: 102.743  on 43  degrees of freedom
Residual deviance:  40.682  on 40  degrees of freedom
AIC: 211

Number of Fisher Scoring iterations: 1

              Theta:  37888 
          Std. Err.:  1681590 
Warning while fitting theta: iteration limit reached 

 2 x log-likelihood:  -201 
# Ajustar el mejor modelo de regresión Poisson

mejor_modelo_poi_ants <- glm(Srich ~., data = ants, family = poisson(link='log')); summary(mejor_modelo_poi_ants)

Call:
glm(formula = Srich ~ ., family = poisson(link = "log"), data = ants)

Coefficients:
             Estimate Std. Error z value Pr(>|z|)    
(Intercept) 11.936812   2.621497    4.55  5.3e-06 ***
Habitat      0.635439   0.119566    5.31  1.1e-07 ***
Latitude    -0.235793   0.061664   -3.82  0.00013 ***
Elevation   -0.001141   0.000375   -3.04  0.00234 ** 
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

(Dispersion parameter for poisson family taken to be 1)

    Null deviance: 102.76  on 43  degrees of freedom
Residual deviance:  40.69  on 40  degrees of freedom
AIC: 209

Number of Fisher Scoring iterations: 4

Modelo Ajustado

Fórmula: Srich = 11.93668 + 0.63544 * Habitat - 0.23579 * Latitude - 0.00114 * Elevation

Fórmula: Srich = 11.93681 + 0.63544 * Habitat - 0.23579 * Latitude - 0.00114 * Elevation

Comparación del mejor modelo

Comparación de Modelos

Característica Modelo Binomial Negativo Modelo de Poisson
Llamada glm.nb(formula = Srich ~ ., data = ants) glm(formula = Srich ~ ., family = poisson(link = "log"), data = ants)
Intercepto 11.936677 (p < 0.001) 11.936812 (p < 0.001)
Habitat 0.635435 (p < 0.001) 0.635439 (p < 0.001)
Latitud -0.235790 (p < 0.001) -0.235793 (p < 0.001)
Elevación -0.001141 (p = 0.002) -0.001141 (p = 0.002)
Parámetro de Dispersión 37888 (estimado) 1 (suponido)
Desviación Nula 102.743 102.76
Desviación Residual 40.682 40.69
AIC 211 209
Iteraciones de Fisher 1 4
Log-verosimilitud -201 -204.5
Advertencias Límite de iteración alcanzado Ninguna

Interpretación

  • Significancia de Coeficientes: Ambos modelos presentan coeficientes significativos para las variables explicativas, indicando que el hábitat, la latitud y la elevación son relevantes para la riqueza de especies (Srich).

  • AIC: Aunque el AIC del modelo de Poisson es ligeramente más bajo (209) que el del modelo binomial negativo (211), la inclusión del parámetro de dispersión en el modelo binomial negativo sugiere que es más adecuado si hay sobredispersión en los datos.

  • Desviaciones: Las desviaciones nula y residual son muy similares entre los modelos, lo que sugiere que ambos ajustan de manera comparable a los datos.

  • Elección del Modelo: A pesar de un AIC ligeramente mayor, el modelo binomial negativo es preferible si hay indicios de sobredispersión en los datos, ya que proporciona una mayor flexibilidad.

  • Recomendaciones: Se sugiere realizar pruebas adicionales de ajuste y examinar residuos para confirmar la idoneidad del modelo elegido.

Graficar las predicciones del modelo inicial y final Binomial Negativo ants

# Configurar el área de gráficos para comparar modelos
par(mfrow=c(1, 2))

# Graficar las predicciones del modelo inicial
plot(predict(modelo_nb_ants), 
     col="blue", 
     main="Predicciones del Modelo Inicial",
     xlab = "Índice", 
     ylab = "Predicciones")
grid()  # Agregar cuadrícula

# Graficar las predicciones del mejor modelo
plot(predict(mejor_modelo_nb_ants), 
     col="red", 
     main="Predicciones del Mejor Modelo",
     xlab = "Índice", 
     ylab = "Predicciones")
grid()  # Agregar cuadrícula

Graficar las predicciones del modelo inicial y final Poisson ants

# Configurar el área de gráficos para comparar modelos
par(mfrow=c(1, 2))

# Graficar las predicciones del modelo inicial
plot(predict(modelo_poi_ants), 
     col="blue", 
     main="Predicciones del Modelo Inicial",
     xlab = "Índice", 
     ylab = "Predicciones")
grid()  # Agregar cuadrícula

# Graficar las predicciones del mejor modelo
plot(predict(mejor_modelo_poi_ants), 
     col="red", 
     main="Predicciones del Mejor Modelo",
     xlab = "Índice", 
     ylab = "Predicciones")
grid()  # Agregar cuadrícula

Medidas de bondad de ajuste

1. Pseudo R^2

pseudo_nb_ants=PseudoR2(mejor_modelo_nb_ants)
pseudo_poi_ants=PseudoR2(mejor_modelo_poi_ants)

# Imprimir los resultados usando cat
cat("Pseudo R² del Modelo Binomial Negativo:", pseudo_nb_ants, "\n")
Pseudo R² del Modelo Binomial Negativo: 0.1626 
cat("Pseudo R² del Modelo de Poisson:", pseudo_poi_ants, "\n")
Pseudo R² del Modelo de Poisson: 0.2359 

CONCLUSIONES PSEUDO R²

El Pseudo R² de McFadden es una medida que indica la proporción de variación explicada por el modelo. Los valores de Pseudo R² suelen ser más bajos en comparación con los R² de modelos lineales, y un valor más alto sugiere un mejor ajuste. En este caso, el modelo de Poisson presenta un Pseudo R² más alto (0.2359) en comparación con el modelo binomial negativo (0.1626). Esto sugiere que el modelo de Poisson explica una mayor proporción de la variación en los datos.

A pesar de que el modelo binomial negativo es útil para abordar la sobredispersión en los datos, el modelo de Poisson parece ajustarse mejor según esta medida de bondad de ajuste. Sin embargo, es importante tener en cuenta que un Pseudo R² más alto no siempre indica un modelo preferible si los supuestos de los modelos no se cumplen. Es crucial verificar la presencia de sobredispersión y la adecuación del modelo a los datos. Consideraciones Finales:

Si hay evidencia de sobredispersión en los datos, el modelo binomial negativo sigue siendo relevante a pesar de su menor Pseudo R². En este caso, se recomienda realizar análisis adicionales, como evaluar residuos y realizar pruebas de ajuste, para confirmar la validez del modelo. Al seleccionar un modelo, considera múltiples métricas de evaluación y no te limites a una sola medida, ya que cada una proporciona una perspectiva diferente sobre la calidad del ajuste.

2. Prueba de la Deviance

mejor_modelo_nb_ants:

Null deviance: 102.743 on 43 degrees of freedom Residual deviance: 40.682 on 40 degrees of freedom

options(scipen = 999)
# Calcular las diferencias
devianza = 102.743 - 40.682
grados_libertad = 43 - 40

# Calcular la desviación
deviance_mejor_modelo_nb_ants = 1 - pchisq(devianza, grados_libertad)

# Imprimir el resultado usando cat
cat("Desviación del Mejor Modelo Binomial Negativo:", deviance_mejor_modelo_nb_ants, 
    "con", grados_libertad, "grados de libertad\n")
Desviación del Mejor Modelo Binomial Negativo: 0.0000000000002132 con 3 grados de libertad

mejor_modelo_poi_ants:

Null deviance: 102.76 on 43 degrees of freedom Residual deviance: 40.69 on 40 degrees of freedom AIC: 209

options(scipen = 999)
# Calcular las diferencias
devianza = 102.76 - 40.69
grados_libertad = 43 - 40

# Calcular la desviación
deviance_mejor_modelo_nb_ants = 1 - pchisq(devianza, grados_libertad)

# Imprimir el resultado usando cat
cat("Desviación del Mejor Modelo Binomial Negativo:", deviance_mejor_modelo_nb_ants, 
    "con", grados_libertad, "grados de libertad\n")
Desviación del Mejor Modelo Binomial Negativo: 0.0000000000002123 con 3 grados de libertad

CONCLUSIONES

Ambos valores de desviación son extremadamente cercanos a cero, lo que indica que el modelo binomial negativo se ajusta muy bien a los datos. La desviación cercana a cero sugiere que la diferencia entre los datos observados y los valores esperados bajo el modelo es mínima.

La mención de 3 grados de libertad implica que se están comparando dos modelos donde el número de parámetros que difieren es 3. Esto es importante para evaluar si el modelo proporciona un ajuste significativamente mejor en comparación con un modelo nulo o más simple.

Aunque ambos valores son prácticamente equivalentes, su proximidad a cero refuerza la idea de que ambos modelo son adecuados.

3. Prueba sobre los Coeficientes Estimados

mejor_modelo_nb_ants

Coefficients: Estimate Std. Error z value Pr(>|z|)
(Intercept) 11.936812 2.621497 4.55 0.00000528 Habitat 0.635439 0.119566 5.31 0.00000011 Latitude -0.235793 0.061664 -3.82 0.00013 * Elevation -0.001141 0.000375 -3.04 0.00234

Rechace Ho: Todos los coeficientes tienen valores p muy bajos, lo que indica que hay evidencia sólida para rechazar la hipótesis nula de que cada coeficiente es igual a cero. Esto sugiere que todas las variables consideradas son predictores importantes de la riqueza de especies.

mejor_modelo_poi_ants

Coefficients: Estimate Std. Error z value Pr(>|z|)
(Intercept) 11.936812 2.621497 4.55 0.00000528 Habitat 0.635439 0.119566 5.31 0.00000011 Latitude -0.235793 0.061664 -3.82 0.00013 * Elevation -0.001141 0.000375 -3.04 0.00234

Rechace Ho: Todos los coeficientes tienen valores p muy bajos, lo que indica que hay evidencia sólida para rechazar la hipótesis nula de que cada coeficiente es igual a cero. Esto resalta la importancia de las variables consideradas como predictores en la riqueza de especies.

B) Existe algún dato atípico o influyente? Muestre los estadísticos que sustenten dicha afirmación.

mejor_modelo_nb_ants

# Configurar el área de gráficos para mostrar dos gráficos
par(mfrow=c(1, 2))

# Graficar los residuos absolutos del modelo
plot(abs(residuals(mejor_modelo_nb_ants)), 
     main="Residuos Absolutos", 
     ylab="Residuos", 
     xlab="Índice")
abline(h=2, col="red")  # Línea de corte en 2

# Graficar los residuos de Pearson
plot(abs(residuals(mejor_modelo_nb_ants, type="pearson")), 
     main="Residuos de Pearson", 
     ylab="Residuos", 
     xlab="Índice")
abline(h=2, col="red")  # Línea de corte en 2

DF para residuos_mejor_modelo_nb_ants

# Crear un dataframe para los residuos
atipicos_nb_ants <- data.frame(
  deviance_nb_ants = abs(residuals(mejor_modelo_nb_ants)),
  pearson_nb_ants = abs(residuals(mejor_modelo_nb_ants, type="pearson"))
)

# Filtrar los puntos atípicos
atipicos_filtrados_nb_ants <- atipicos_nb_ants[atipicos_nb_ants$deviance > 2 & atipicos_nb_ants$pearson > 2, ]; atipicos_filtrados_nb_ants
      deviance_nb_ants pearson_nb_ants
CKB.1            2.601           3.017

CONCLUSIONES

la deviance de 2.601 sugiere que el modelo se ajusta adecuadamente a los datos. Es importante comparar este valor con el valor esperado bajo una distribución chi-cuadrado con los grados de libertad correspondientes para obtener una evaluación más completa.

mejor_modelo_poi_ants

# Configurar el área de gráficos para mostrar dos gráficos
par(mfrow=c(1, 2))

# Graficar los residuos absolutos del modelo
plot(abs(residuals(mejor_modelo_poi_ants)), 
     main="Residuos Absolutos", 
     ylab="Residuos", 
     xlab="Índice")
abline(h=2, col="red")  # Línea de corte en 2

#Graficar los residuos de Pearson
plot(abs(residuals(mejor_modelo_poi_ants, type="pearson")), 
     main="Residuos de Pearson", 
     ylab="Residuos", 
     xlab="Índice")
abline(h=2, col="red")  # Línea de corte en 2

DF para residuos_mejor_modelo_poi_ants

# Crear un dataframe para los residuos
atipicos_poi_ants <- data.frame(
  deviance = abs(residuals(mejor_modelo_poi_ants)),
  pearson = abs(residuals(mejor_modelo_poi_ants, type="pearson"))
)

# Filtrar los puntos atípicos
atipicos_poi_ants <- atipicos_poi_ants[atipicos_poi_ants$deviance > 2 & atipicos_poi_ants$pearson > 2, ]; atipicos_poi_ants
      deviance pearson
CKB.1    2.601   3.018

CONCLUSIONES

CKB: Con un valor de deviance de 2.60147 y un estadístico de Pearson de 3.01752, CKB es uno de los casos más destacados como potencialmente atípico, sugiriendo una discrepancia notable entre los datos observados y los predicciones del modelo.

PK: Tiene un valor de deviance de 2.20939 y un estadístico de Pearson de 1.87142, lo que también indica un ajuste cuestionable y sugiere que los datos de este sitio podrían no seguir el patrón esperado.

Sitios como HBC (0.44277 de deviance y 0.45133 de Pearson) y BH (0.24454 de deviance y 0.24780 de Pearson) presentan valores bajos, sugiriendo que estos datos se ajustan bien al modelo y no son considerados atípicos.

La identificación de sitios atípicos como CKB y PK podría señalar problemas en la recopilación de datos, la necesidad de considerar factores adicionales que el modelo actual no capta, o características ecológicas únicas de esos sitios.

No se cumplen los supuestos del modelo para los puntos OB y CKB.1, ya que tienen residuos estudentizados elevados. Esto sugiere que estos puntos son influyentes y podrían afectar la validez del modelo.

GRAFICOS INTERACTIVOS MODELO BINARIO NEGATIVO

# Instala y carga el paquete plotly
suppressPackageStartupMessages(library(plotly))

# Calcular los residuos
deviance_mejor_modelo_nb_ants <- abs(residuals(mejor_modelo_nb_ants))
pearson_mejor_modelo_nb_ants <- abs(residuals(mejor_modelo_nb_ants, type = "pearson"))

# Crear gráficos interactivos
p1 <- plot_ly(x = seq_along(deviance_mejor_modelo_nb_ants), y = deviance_mejor_modelo_nb_ants, type = 'scatter', mode = 'lines+markers', 
              name = 'Residuos Absolutos', marker = list(color = 'blue')) %>%
      layout(title = "Residuos Absolutos",
             xaxis = list(title = "Índice"),
             yaxis = list(title = "Valor de Residuos")) %>%
      add_lines(y = rep(2, length(deviance_mejor_modelo_nb_ants)), line = list(color = 'red', dash = 'dash'), name = "Línea de Corte")

p2 <- plot_ly(x = seq_along(pearson_mejor_modelo_nb_ants), y = pearson_mejor_modelo_nb_ants, type = 'scatter', mode = 'lines+markers', 
              name = 'Residuos de Pearson', marker = list(color = 'green')) %>%
      layout(title = "Residuos de Pearson",
             xaxis = list(title = "Índice"),
             yaxis = list(title = "Valor de Residuos")) %>%
      add_lines(y = rep(2, length(pearson_mejor_modelo_nb_ants)), line = list(color = 'red', dash = 'dash'), name = "Línea de Corte")

# Mostrar gráficos
p1
A marker object has been specified, but markers is not in the mode
Adding markers to the mode...
p2
A marker object has been specified, but markers is not in the mode
Adding markers to the mode...

GRAFICOS INTERACTIVOS MODELO POISSON

# Instala y carga el paquete plotly
suppressPackageStartupMessages(library(plotly))

# Calcular los residuos
deviance_mejor_modelo_poi_ants <- abs(residuals(mejor_modelo_poi_ants))
pearson_mejor_modelo_poi_ants <- abs(residuals(mejor_modelo_poi_ants, type = "pearson"))

# Crear gráficos interactivos
p1 <- plot_ly(x = seq_along(deviance_mejor_modelo_poi_ants), y = deviance_mejor_modelo_poi_ants, type = 'scatter', mode = 'lines+markers', 
              name = 'Residuos Absolutos', marker = list(color = 'blue')) %>%
      layout(title = "Residuos Absolutos",
             xaxis = list(title = "Índice"),
             yaxis = list(title = "Valor de Residuos")) %>%
      add_lines(y = rep(2, length(deviance_mejor_modelo_poi_ants)), line = list(color = 'red', dash = 'dash'), name = "Línea de Corte")

p2 <- plot_ly(x = seq_along(pearson_mejor_modelo_poi_ants), y = pearson_mejor_modelo_poi_ants, type = 'scatter', mode = 'lines+markers', 
              name = 'Residuos de Pearson', marker = list(color = 'green')) %>%
      layout(title = "Residuos de Pearson",
             xaxis = list(title = "Índice"),
             yaxis = list(title = "Valor de Residuos")) %>%
      add_lines(y = rep(2, length(pearson_mejor_modelo_poi_ants)), line = list(color = 'red', dash = 'dash'), name = "Línea de Corte")

# Mostrar gráficos
p1
A marker object has been specified, but markers is not in the mode
Adding markers to the mode...
p2
A marker object has been specified, but markers is not in the mode
Adding markers to the mode...

DETECCION DE DATOS INFLUYENTES MODELO BINOMIAL NEGATIVO

suppressPackageStartupMessages(library(car))
par(mfrow=c(1,1))
#influence.measures(mejor_modelo_grazing)
influencePlot(mejor_modelo_nb_ants)

      StudRes     Hat     CookD
OB     1.5441 0.15413 0.1215866
COL    0.1404 0.18690 0.0011963
CAR   -0.0783 0.15781 0.0002971
CKB.1  2.9532 0.07156 0.1889448
PK.1  -2.4006 0.08841 0.0931290

CONCLUSION

No se cumplen los supuestos del modelo para los puntos CKB.1 y OB, ya que presentan residuos estudentizados altos y una influencia significativa en los resultados. Los otros puntos (COL, CAR, y PK.1) sí cumplen con los supuestos del modelo.

DETECCION DE DATOS INFLUYENTES MODELO POISSON

suppressPackageStartupMessages(library(car))
par(mfrow=c(1,1))
#influence.measures(mejor_modelo_grazing)
influencePlot(mejor_modelo_poi_ants)

       StudRes     Hat    CookD
OB     1.53218 0.15413 0.121613
COL    0.14340 0.18690 0.001197
CAR   -0.07996 0.15781 0.000297
CKB.1  2.73303 0.07156 0.188978
PK.1  -2.28496 0.08841 0.093147

CONCLUSIONES

No se cumplen los supuestos del modelo para los puntos OB y CKB.1, ya que tienen residuos estudentizados elevados. Esto sugiere que estos puntos son influyentes y podrían afectar la validez del modelo.

CALCULO DE LA CORRELACION

# Crear un data frame con las variables deseadas
correlation_data_ants <- data.frame(
  Habitat = ants$Habitat,
  Latitude = ants$Latitude,
  Elevation = ants$Elevation,
  Srich = ants$Srich
)

# Calcular la correlación
correlation_matrix_ants <- cor(correlation_data_ants, use = "complete.obs"); correlation_matrix_ants
          Habitat Latitude Elevation   Srich
Habitat    1.0000   0.0000    0.0000  0.5145
Latitude   0.0000   1.0000    0.1790 -0.4384
Elevation  0.0000   0.1790    1.0000 -0.3812
Srich      0.5145  -0.4384   -0.3812  1.0000

GRAFICO INTERACTIVO DE CORRELACIÓN

suppressPackageStartupMessages(library(plotly))
suppressPackageStartupMessages(library(ggplot2))
suppressPackageStartupMessages(library(reshape2))

# Calcular la matriz de correlación
cor_matrix <- cor(data.frame(Srich = ants$Srich, Habitat = ants$Habitat, 
                              Latitude = ants$Latitude, Elevation = ants$Elevation))

# Convertir la matriz de correlación en un formato largo
cor_long <- melt(cor_matrix)

# Crear el gráfico de correlación interactivo
p <- plot_ly(data = cor_long, x = ~Var1, y = ~Var2, z = ~value, type = "heatmap", 
              colorscale = "Viridis") %>%
  layout(title = "Matriz de Correlación",
         xaxis = list(title = ""),
         yaxis = list(title = ""))
p

C) Estime la probabilidad de que las hormigas estudiadas se encuentren en un bosque, si se encuentran 4 especies en la zona de estudio y la latitud de la zona es 45.2 y elevation 233.

Modelo Regresion Binomial Negativo:

Srich = 11.936677 + 0.635435 * Habitat - 0.235790 * Latitude - 0.001141 * Elevation

Modelo Regresion Poisson:

Srich = 11.936812 + 0.635439 * Habitat - 0.235793 * Latitude - 0.001141 * Elevation

# Crear un dataframe para la nueva zona
nueva_zona_nb <- data.frame(
  Srich = 4,          # Número de especies
  Latitude = 45.2,    # Latitud
  Elevation = 233,    # Elevación
  Habitat = 1         # 1 para "Forest"
)

# Predecir la probabilidad usando el mejor modelo
probabilidad_bosque_nb <- predict(mejor_modelo_nb_ants, newdata = nueva_zona_nb, type = "response")
#probabilidad_bosque_nb

#Mostrar la probabilidad usando cat
cat("La probabilidad de que las hormigas se encuentren en un bosque con", 
    nueva_zona_nb$Srich, "especies, una latitud de", 
    nueva_zona_nb$Latitude, "y una elevación de", 
    nueva_zona_nb$Elevation, "es:", probabilidad_bosque_nb, "\n")
La probabilidad de que las hormigas se encuentren en un bosque con 4 especies, una latitud de 45.2 y una elevación de 233 es: 5.199