1 1. Introducción

La deforestación constituye una problemática ambiental que afecta los ecosistemas, la biodiversidad y la regulación de los recursos naturales. Su estudio requiere herramientas que permitan organizar la información, identificar patrones y comprender los factores relacionados con la pérdida de cobertura forestal. La estadística descriptiva y la teoría de la probabilidad permiten estudiar el comportamiento de diferentes indicadores ambientales y representar la incertidumbre asociada con los fenómenos observados.

El presente estudio analiza una base de datos relacionada con el monitoreo de la deforestación en Colombia. Mediante variables aleatorias discretas y continuas, se calcularán medidas estadísticas, se examinarán distribuciones de probabilidad y se resolverán situaciones probabilísticas relacionadas con los focos de calor, los cuadrantes críticos, las distancias a las carreteras y los tiempos de arribo. El propósito es aplicar los conceptos de la asignatura Métodos Estadísticos a un problema ambiental.

2 2. Descripción del caso

El monitoreo de la deforestación permite identificar zonas que requieren atención ambiental y analizar indicadores asociados con la actividad humana, las condiciones del terreno y la respuesta ante posibles eventos. La presencia de focos de calor, la cantidad de cuadrantes críticos vecinos y la distancia a las vías de acceso pueden aportar información para describir las características de las zonas estudiadas.

En este caso se utiliza una base de datos con información asociada al monitoreo ambiental. Cada registro representa una cuadrícula identificada mediante un código y contiene indicadores cuantitativos y categóricos. El análisis se concentra en cuatro variables que permiten estudiar conteos de eventos y magnitudes continuas.

La pregunta estadística que orienta el estudio es: ¿cómo se comportan las variables seleccionadas y qué probabilidades pueden estimarse a partir de su distribución en la base de datos?

3 3. Definición del experimento aleatorio

Para este estudio, el experimento consiste en seleccionar aleatoriamente un registro de la base de datos y observar los valores de las variables seleccionadas. El espacio muestral corresponde al conjunto de resultados posibles de esas variables en los 2.500 registros disponibles.

Las variables observadas son el número de focos de calor por semana, el número de cuadrantes críticos vecinos, la distancia a la carretera en kilómetros y el tiempo de arribo en días. Las dos primeras son discretas porque representan conteos enteros; las dos últimas son continuas porque representan magnitudes que pueden tomar valores decimales dentro de un intervalo.

La interpretación probabilística se limita a la base analizada. Para generalizar los resultados a todas las zonas de Colombia sería necesario conocer el diseño de muestreo y la representatividad de los registros.

4 4. Base de datos

4.1 4.1. Carga de la información

La información se encuentra en el archivo Excel monitoreo_deforestacion_colombia.xlsx. La base contiene 2.500 observaciones y 16 variables, entre ellas el departamento, los focos de calor, las alertas de deforestación, las hectáreas deforestadas, la distancia a carreteras y el tiempo de arribo.

archivo <- "monitoreo_deforestacion_colombia.xlsx"

if (!file.exists(archivo)) {
  stop("No se encontró el Excel. Guárdalo en la misma carpeta del archivo R Markdown.")
}

datos <- read_excel(archivo)

cat("Número de registros:", nrow(datos), "\n")
## Número de registros: 2500
cat("Número de variables:", ncol(datos), "\n")
## Número de variables: 16
cat("Registros duplicados:", sum(duplicated(datos)), "\n")
## Registros duplicados: 0

4.2 4.2. Primeros registros

knitr::kable(
  head(datos, 10),
  caption = "Primeros diez registros de la base de datos",
  digits = 3
) |>
  kableExtra::kable_styling(
    bootstrap_options = c("striped", "hover", "condensed"),
    full_width = FALSE
  )
Primeros diez registros de la base de datos
id_cuadricula departamento focos_calor_semana alertas_deforestacion vias_acceso_ilegales cuencas_afectadas vuelos_patrullaje_mes denuncias_comunitarias cuadrantes_criticos_vecinos hectareas_deforestadas temperatura_brillo_kelvin distancia_carretera_km tiempo_arribo_dias indice_ndvi precipitacion_semanal_mm pendiente_terreno_grados
COL-AMZ-0001 Meta 4 2 2 4 8 0 1 8.32 313.23 4.34 7.09 0.630 28.1 22.5
COL-AMZ-0002 Guaviare 3 3 1 2 4 0 6 6.06 308.68 22.01 2.07 0.792 35.9 13.8
COL-AMZ-0003 Guaviare 1 4 2 4 4 2 2 1.20 308.98 19.48 1.64 0.593 46.4 13.1
COL-AMZ-0004 Guaviare 4 3 0 3 5 0 2 7.41 312.59 10.97 7.58 0.604 16.0 3.1
COL-AMZ-0005 Meta 2 1 1 1 4 2 4 0.85 306.60 20.36 0.60 0.541 82.8 16.3
COL-AMZ-0006 Guaviare 3 1 1 3 6 2 2 5.54 307.50 18.40 4.39 0.581 44.1 14.0
COL-AMZ-0007 Putumayo 1 4 1 1 5 0 1 3.11 307.35 28.72 9.35 0.728 43.6 16.6
COL-AMZ-0008 Caquetá 2 2 1 2 4 0 3 1.66 314.34 5.46 5.02 0.654 41.3 13.6
COL-AMZ-0009 Meta 5 4 2 1 3 0 3 4.33 315.88 20.41 4.28 0.596 65.0 10.7
COL-AMZ-0010 Guaviare 1 3 1 1 4 1 1 5.84 310.15 3.32 11.72 0.577 58.8 12.4

4.3 4.3. Estructura y calidad de los datos

estructura <- data.frame(
  Variable = names(datos),
  Tipo = sapply(datos, function(x) paste(class(x), collapse = ", ")),
  Valores_faltantes = sapply(datos, function(x) sum(is.na(x))),
  Valores_unicos = sapply(datos, function(x) length(unique(x)))
)

knitr::kable(
  estructura,
  caption = "Estructura y calidad de las variables",
  digits = 3
)
Estructura y calidad de las variables
Variable Tipo Valores_faltantes Valores_unicos
id_cuadricula id_cuadricula character 0 2500
departamento departamento character 0 5
focos_calor_semana focos_calor_semana numeric 0 13
alertas_deforestacion alertas_deforestacion numeric 0 11
vias_acceso_ilegales vias_acceso_ilegales numeric 0 6
cuencas_afectadas cuencas_afectadas numeric 0 4
vuelos_patrullaje_mes vuelos_patrullaje_mes numeric 0 11
denuncias_comunitarias denuncias_comunitarias numeric 0 6
cuadrantes_criticos_vecinos cuadrantes_criticos_vecinos numeric 0 7
hectareas_deforestadas hectareas_deforestadas numeric 0 1099
temperatura_brillo_kelvin temperatura_brillo_kelvin numeric 0 1362
distancia_carretera_km distancia_carretera_km numeric 0 1685
tiempo_arribo_dias tiempo_arribo_dias numeric 0 1247
indice_ndvi indice_ndvi numeric 0 490
precipitacion_semanal_mm precipitacion_semanal_mm numeric 0 765
pendiente_terreno_grados pendiente_terreno_grados numeric 0 257
cat("Total de celdas vacías:", sum(is.na(datos)), "\n")
## Total de celdas vacías: 0
cat("Filas completamente duplicadas:", sum(duplicated(datos)), "\n")
## Filas completamente duplicadas: 0
if (sum(is.na(datos)) == 0) {
  cat("No se encontraron valores faltantes.")
} else {
  cat("Se encontraron valores faltantes que deben considerarse en el análisis.")
}
## No se encontraron valores faltantes.

4.4 4.4. Fuente y limitaciones

La base utilizada corresponde al archivo Excel proporcionado para el estudio de caso. La documentación de referencia describe la información como una emulación de mediciones de monitoreo ambiental inspiradas en el Sistema de Monitoreo de Bosques y Carbono del IDEAM. Por tanto, no se debe asumir que los registros individuales corresponden a mediciones oficiales verificadas.

La base contiene 2.500 registros y 16 variables. El periodo exacto de observación y el procedimiento de generación de cada registro no quedan establecidos únicamente con el archivo, por lo que no se atribuye un periodo específico sin documentación adicional. La principal limitación es que los resultados describen la base suministrada y no necesariamente representan el comportamiento real de todas las regiones de Colombia.

5 5. Variables aleatorias

Se seleccionaron dos variables discretas y dos continuas. La elección permite estudiar tanto la frecuencia de eventos como las magnitudes medidas en una escala continua.

Variable Clasificación Justificación
focos_calor_semana Discreta Representa el conteo de focos de calor registrados por observación.
cuadrantes_criticos_vecinos Discreta Representa una cantidad entera de cuadrantes críticos vecinos.
distancia_carretera_km Continua Representa una distancia en kilómetros y puede tomar valores decimales.
tiempo_arribo_dias Continua Representa una duración en días y puede tomar valores decimales.

5.1 5.1. Verificación de las variables

variables <- c(
  "focos_calor_semana",
  "cuadrantes_criticos_vecinos",
  "distancia_carretera_km",
  "tiempo_arribo_dias"
)

faltantes <- setdiff(variables, names(datos))

if (length(faltantes) > 0) {
  stop(paste("No se encontraron estas columnas:", paste(faltantes, collapse = ", ")))
}

if (!all(sapply(datos[variables], is.numeric))) {
  stop("Una o más variables seleccionadas no son numéricas.")
}

resumen_tipos <- data.frame(
  Variable = variables,
  Tipo = c("Discreta", "Discreta", "Continua", "Continua"),
  Unidad = c("Conteo", "Conteo", "Kilómetros", "Días")
)

knitr::kable(resumen_tipos, caption = "Clasificación de las variables seleccionadas")
Clasificación de las variables seleccionadas
Variable Tipo Unidad
focos_calor_semana Discreta Conteo
cuadrantes_criticos_vecinos Discreta Conteo
distancia_carretera_km Continua Kilómetros
tiempo_arribo_dias Continua Días

5.2 5.2. Espacio muestral de cada variable

El espacio muestral empírico de una variable corresponde al conjunto de valores distintos observados en la base. Para las variables discretas se trata de valores enteros de conteo; para las continuas, los valores registrados forman un conjunto de observaciones dentro de sus respectivos intervalos.

espacios <- lapply(datos[variables], function(x) sort(unique(x[!is.na(x)])))

data.frame(
  Variable = names(espacios),
  Cantidad_valores_distintos = sapply(espacios, length),
  Minimo_observado = sapply(datos[variables], min, na.rm = TRUE),
  Maximo_observado = sapply(datos[variables], max, na.rm = TRUE)
) |>
  knitr::kable(
    caption = "Resumen de los valores observados en cada variable",
    digits = 3
  )
Resumen de los valores observados en cada variable
Variable Cantidad_valores_distintos Minimo_observado Maximo_observado
focos_calor_semana focos_calor_semana 13 0.0 12.00
cuadrantes_criticos_vecinos cuadrantes_criticos_vecinos 7 0.0 6.00
distancia_carretera_km distancia_carretera_km 1685 0.5 29.98
tiempo_arribo_dias tiempo_arribo_dias 1247 0.5 66.97

6 6. Análisis descriptivo

El análisis descriptivo permite resumir la tendencia central, la dispersión y la forma de los datos. Se calcularán la media, la mediana, la varianza, la desviación estándar, los valores mínimo y máximo y los cuartiles.

6.1 6.1. Medidas estadísticas

estadisticas <- function(x) {
  x <- x[is.finite(x)]

  c(
    N = length(x),
    Media = mean(x),
    Mediana = median(x),
    Varianza = var(x),
    Desviacion_estandar = sd(x),
    Minimo = min(x),
    Q1 = unname(quantile(x, 0.25)),
    Q3 = unname(quantile(x, 0.75)),
    Maximo = max(x)
  )
}

tabla_estadisticas <- as.data.frame(
  t(sapply(datos[variables], estadisticas))
)

tabla_estadisticas$Variable <- rownames(tabla_estadisticas)
rownames(tabla_estadisticas) <- NULL

tabla_estadisticas <- tabla_estadisticas |>
  select(Variable, everything())

knitr::kable(
  tabla_estadisticas,
  digits = 3,
  caption = "Medidas descriptivas de las cuatro variables"
)
Medidas descriptivas de las cuatro variables
Variable N Media Mediana Varianza Desviacion_estandar Minimo Q1 Q3 Maximo
focos_calor_semana 2500 3.144 3.000 3.185 1.785 0.0 2.000 4.000 12.00
cuadrantes_criticos_vecinos 2500 2.048 2.000 1.497 1.224 0.0 1.000 3.000 6.00
distancia_carretera_km 2500 15.063 15.050 72.903 8.538 0.5 7.765 22.525 29.98
tiempo_arribo_dias 2500 7.012 4.895 46.003 6.783 0.5 2.348 9.180 66.97

La media representa el promedio de los valores observados; la mediana divide los datos ordenados en dos partes iguales. La varianza y la desviación estándar describen la dispersión, mientras que los cuartiles permiten reconocer cómo se distribuyen los datos. Estas medidas se interpretan teniendo en cuenta la unidad de cada variable.

6.2 6.2. Distribución de los focos de calor

ggplot(datos, aes(x = focos_calor_semana)) +
  geom_histogram(
    binwidth = 1,
    boundary = -0.5,
    color = "white"
  ) +
  labs(
    title = "Distribución de los focos de calor por semana",
    x = "Número de focos de calor",
    y = "Frecuencia"
  ) +
  theme_minimal(base_size = 12)

El histograma permite identificar los valores más frecuentes y observar si existe asimetría. Al tratarse de un conteo, los valores se interpretan como cantidades de focos de calor y no como mediciones continuas.

6.3 6.3. Distribución de los cuadrantes críticos vecinos

ggplot(datos, aes(x = cuadrantes_criticos_vecinos)) +
  geom_histogram(
    binwidth = 1,
    boundary = -0.5,
    color = "white"
  ) +
  labs(
    title = "Distribución de los cuadrantes críticos vecinos",
    x = "Número de cuadrantes críticos vecinos",
    y = "Frecuencia"
  ) +
  theme_minimal(base_size = 12)

Este gráfico permite comparar la frecuencia de los distintos conteos y observar si predominan valores pequeños o grandes. El patrón observado será útil para evaluar si un modelo discreto resulta razonable.

6.4 6.4. Distribución de la distancia a la carretera

ggplot(datos, aes(x = distancia_carretera_km)) +
  geom_histogram(
    bins = 30,
    color = "white"
  ) +
  labs(
    title = "Distribución de la distancia a la carretera",
    x = "Distancia (km)",
    y = "Frecuencia"
  ) +
  theme_minimal(base_size = 12)

La forma del histograma permite evaluar la simetría, la concentración de las distancias y la posible presencia de una cola hacia los valores altos. La forma observada es importante para seleccionar un modelo continuo.

6.5 6.5. Distribución del tiempo de arribo

ggplot(datos, aes(x = tiempo_arribo_dias)) +
  geom_histogram(
    bins = 30,
    color = "white"
  ) +
  labs(
    title = "Distribución del tiempo de arribo",
    x = "Tiempo de arribo (días)",
    y = "Frecuencia"
  ) +
  theme_minimal(base_size = 12)

El tiempo de arribo representa una duración. Su histograma permite examinar si la mayoría de las observaciones se concentra en tiempos cortos o si existen registros con duraciones elevadas.

6.6 6.6. Diagramas de caja

datos_largos <- datos |>
  select(all_of(variables)) |>
  tidyr::pivot_longer(
    cols = everything(),
    names_to = "Variable",
    values_to = "Valor"
  )

ggplot(datos_largos, aes(x = Variable, y = Valor)) +
  geom_boxplot() +
  facet_wrap(~ Variable, scales = "free", ncol = 2) +
  labs(
    title = "Diagramas de caja de las variables seleccionadas",
    x = "Variable",
    y = "Valor observado"
  ) +
  theme_minimal(base_size = 11) +
  theme(axis.text.x = element_blank())

Los diagramas de caja permiten observar la mediana, el rango intercuartílico y posibles valores atípicos. Debido a que las variables tienen unidades y escalas diferentes, cada panel utiliza una escala propia.

6.7 6.7. Esperanza, varianza y desviación estándar empíricas

Para una muestra de observaciones, la media se utiliza como estimación de la esperanza matemática. La varianza muestral y la desviación estándar muestral describen la dispersión de los datos.

momentos <- data.frame(
  Variable = variables,
  Esperanza_estimada = sapply(datos[variables], mean, na.rm = TRUE),
  Varianza_muestral = sapply(datos[variables], var, na.rm = TRUE),
  Desviacion_estandar = sapply(datos[variables], sd, na.rm = TRUE)
)

knitr::kable(
  momentos,
  digits = 3,
  caption = "Estimaciones empíricas de los momentos"
)
Estimaciones empíricas de los momentos
Variable Esperanza_estimada Varianza_muestral Desviacion_estandar
focos_calor_semana focos_calor_semana 3.144 3.185 1.785
cuadrantes_criticos_vecinos cuadrantes_criticos_vecinos 2.048 1.497 1.224
distancia_carretera_km distancia_carretera_km 15.063 72.903 8.538
tiempo_arribo_dias tiempo_arribo_dias 7.012 46.003 6.783

La esperanza estimada indica el valor promedio esperado según las observaciones de la base. La varianza expresa la dispersión en unidades al cuadrado y la desviación estándar lo hace en las mismas unidades de la variable.

7 7. Distribuciones de probabilidad

Una distribución de probabilidad describe cómo se asignan probabilidades a los posibles valores de una variable aleatoria. Para variables discretas se emplea una función de masa de probabilidad y para variables continuas se utiliza una función de densidad.

Los modelos se evaluarán de manera exploratoria. La selección definitiva requiere considerar la forma de los datos, los supuestos teóricos y el contexto de las variables.

7.1 7.1. Distribución de Poisson para los focos de calor

La distribución de Poisson se utiliza para modelar conteos de eventos cuando estos ocurren con una tasa media constante en una unidad de observación y se cumplen supuestos de independencia y homogeneidad. En este caso se examina como modelo candidato para los focos de calor.

El parámetro se estima mediante la media muestral:

\[ \hat{\lambda}=\bar{x} \]

Para una variable de Poisson, la esperanza y la varianza teóricas son iguales a \(\lambda\). Por ello, comparar la media y la varianza observadas ofrece una primera evaluación de la adecuación del modelo.

x_focos <- datos$focos_calor_semana
x_focos <- x_focos[is.finite(x_focos)]

if (any(x_focos < 0) || any(abs(x_focos - round(x_focos)) > 1e-8)) {
  stop("La variable focos_calor_semana debe contener conteos enteros no negativos.")
}

lambda_focos <- mean(x_focos)

tabla_poisson <- data.frame(
  Medida = c(
    "Media observada",
    "Varianza observada",
    "Parámetro lambda estimado",
    "Media teórica Poisson",
    "Varianza teórica Poisson"
  ),
  Valor = c(
    mean(x_focos),
    var(x_focos),
    lambda_focos,
    lambda_focos,
    lambda_focos
  )
)

knitr::kable(tabla_poisson, digits = 3, caption = "Evaluación inicial del modelo de Poisson")
Evaluación inicial del modelo de Poisson
Medida Valor
Media observada 3.144
Varianza observada 3.185
Parámetro lambda estimado 3.144
Media teórica Poisson 3.144
Varianza teórica Poisson 3.144
valores_focos <- 0:max(x_focos)

frecuencias_focos <- as.data.frame(table(
  factor(x_focos, levels = valores_focos)
))

names(frecuencias_focos) <- c("Focos", "Frecuencia")
frecuencias_focos$Focos <- as.numeric(as.character(frecuencias_focos$Focos))
frecuencias_focos$Probabilidad_poisson <- dpois(
  frecuencias_focos$Focos,
  lambda = lambda_focos
)
frecuencias_focos$Frecuencia_esperada <-
  frecuencias_focos$Probabilidad_poisson * length(x_focos)

ggplot(frecuencias_focos, aes(x = Focos)) +
  geom_col(aes(y = Frecuencia / length(x_focos)), alpha = 0.7) +
  geom_line(
    aes(y = Probabilidad_poisson),
    linewidth = 1
  ) +
  geom_point(aes(y = Probabilidad_poisson), size = 2) +
  labs(
    title = "Frecuencias relativas y modelo de Poisson",
    x = "Número de focos de calor",
    y = "Probabilidad o frecuencia relativa",
    caption = "La curva representa las probabilidades teóricas de Poisson."
  ) +
  theme_minimal(base_size = 12)

La distribución de Poisson se considerará una aproximación útil si sus probabilidades son razonablemente coherentes con las frecuencias observadas y sus supuestos resultan plausibles. Una diferencia importante entre la media y la varianza puede indicar que el modelo simple no describe adecuadamente los datos.

7.2 7.2. Distribución para los cuadrantes críticos vecinos

También se examina una distribución de Poisson como modelo candidato para el conteo de cuadrantes críticos vecinos. Su parámetro se estima con la media observada.

x_cuadrantes <- datos$cuadrantes_criticos_vecinos
x_cuadrantes <- x_cuadrantes[is.finite(x_cuadrantes)]

if (any(x_cuadrantes < 0) ||
    any(abs(x_cuadrantes - round(x_cuadrantes)) > 1e-8)) {
  stop("La variable cuadrantes_criticos_vecinos debe ser un conteo entero no negativo.")
}

lambda_cuadrantes <- mean(x_cuadrantes)

tabla_cuadrantes <- data.frame(
  Medida = c(
    "Media observada",
    "Varianza observada",
    "Parámetro lambda estimado",
    "Media teórica Poisson",
    "Varianza teórica Poisson"
  ),
  Valor = c(
    mean(x_cuadrantes),
    var(x_cuadrantes),
    lambda_cuadrantes,
    lambda_cuadrantes,
    lambda_cuadrantes
  )
)

knitr::kable(
  tabla_cuadrantes,
  digits = 3,
  caption = "Evaluación inicial de Poisson para cuadrantes críticos"
)
Evaluación inicial de Poisson para cuadrantes críticos
Medida Valor
Media observada 2.048
Varianza observada 1.497
Parámetro lambda estimado 2.048
Media teórica Poisson 2.048
Varianza teórica Poisson 2.048
valores_cuadrantes <- 0:max(x_cuadrantes)

tabla_prob_cuadrantes <- data.frame(
  Valor = valores_cuadrantes,
  Frecuencia_relativa = vapply(
    valores_cuadrantes,
    function(v) mean(x_cuadrantes == v),
    numeric(1)
  ),
  Probabilidad_poisson = dpois(
    valores_cuadrantes,
    lambda = lambda_cuadrantes
  )
)

ggplot(tabla_prob_cuadrantes, aes(x = Valor)) +
  geom_col(aes(y = Frecuencia_relativa), alpha = 0.7) +
  geom_line(aes(y = Probabilidad_poisson), linewidth = 1) +
  geom_point(aes(y = Probabilidad_poisson), size = 2) +
  labs(
    title = "Cuadrantes críticos: datos observados y Poisson",
    x = "Número de cuadrantes críticos vecinos",
    y = "Probabilidad o frecuencia relativa"
  ) +
  theme_minimal(base_size = 12)

La comparación entre la distribución empírica y la distribución teórica permite determinar si Poisson ofrece una descripción razonable. La decisión no se toma únicamente por la forma del gráfico: también deben considerarse los supuestos del modelo.

7.3 7.3. Distribución exponencial para el tiempo de arribo

La distribución exponencial puede utilizarse para modelar duraciones positivas cuando se considera una tasa constante de ocurrencia y una propiedad de falta de memoria. Se evaluará como modelo candidato para el tiempo de arribo.

Su parámetro de tasa se estima mediante:

\[ \hat{\lambda}=\frac{1}{\bar{x}} \]

La esperanza teórica es \(1/\lambda\) y la varianza teórica es \(1/\lambda^2\).

x_tiempo <- datos$tiempo_arribo_dias
x_tiempo <- x_tiempo[is.finite(x_tiempo)]

if (any(x_tiempo <= 0)) {
  stop("El modelo exponencial requiere tiempos estrictamente positivos.")
}

lambda_tiempo <- 1 / mean(x_tiempo)

tabla_exponencial <- data.frame(
  Medida = c(
    "Media observada",
    "Varianza observada",
    "Tasa estimada lambda",
    "Media teórica exponencial",
    "Varianza teórica exponencial"
  ),
  Valor = c(
    mean(x_tiempo),
    var(x_tiempo),
    lambda_tiempo,
    1 / lambda_tiempo,
    1 / lambda_tiempo^2
  )
)

knitr::kable(
  tabla_exponencial,
  digits = 3,
  caption = "Evaluación inicial de la distribución exponencial"
)
Evaluación inicial de la distribución exponencial
Medida Valor
Media observada 7.012
Varianza observada 46.003
Tasa estimada lambda 0.143
Media teórica exponencial 7.012
Varianza teórica exponencial 49.170
ggplot(data.frame(tiempo = x_tiempo), aes(x = tiempo)) +
  geom_histogram(
    aes(y = after_stat(density)),
    bins = 30,
    color = "white"
  ) +
  stat_function(
    fun = dexp,
    args = list(rate = lambda_tiempo),
    linewidth = 1
  ) +
  labs(
    title = "Tiempo de arribo y densidad exponencial",
    x = "Tiempo de arribo (días)",
    y = "Densidad"
  ) +
  theme_minimal(base_size = 12)

La curva exponencial se compara con la forma del histograma. Si existe una diferencia notable entre ambos, el modelo debe considerarse una aproximación limitada y no una descripción definitiva de los tiempos de arribo.

7.4 7.4. Evaluación exploratoria de la distancia a la carretera

La distancia a la carretera es una variable continua positiva. Se puede examinar una distribución exponencial como candidata, aunque su pertinencia debe evaluarse a partir de la forma de los datos y del contexto. No se asumirá que es uniforme o exponencial sin comprobarlo.

x_distancia <- datos$distancia_carretera_km
x_distancia <- x_distancia[is.finite(x_distancia)]

if (any(x_distancia <= 0)) {
  stop("La comparación exponencial requiere distancias estrictamente positivas.")
}

lambda_distancia <- 1 / mean(x_distancia)

ggplot(data.frame(distancia = x_distancia), aes(x = distancia)) +
  geom_histogram(
    aes(y = after_stat(density)),
    bins = 30,
    color = "white"
  ) +
  stat_function(
    fun = dexp,
    args = list(rate = lambda_distancia),
    linewidth = 1
  ) +
  labs(
    title = "Distancias observadas y densidad exponencial candidata",
    x = "Distancia a la carretera (km)",
    y = "Densidad"
  ) +
  theme_minimal(base_size = 12)

La distribución exponencial es solo un modelo candidato para esta variable. La distancia depende de la ubicación geográfica y de la estructura de las vías, por lo que una distribución teórica simple podría no representar adecuadamente su comportamiento.

8 8. Cálculos de probabilidad

En esta sección se presentan ejemplos de probabilidades calculadas a partir de los datos y de los modelos candidatos. Se distingue entre probabilidades empíricas, obtenidas de las frecuencias observadas, y probabilidades teóricas, calculadas mediante una distribución.

8.1 8.1. Probabilidades empíricas para los focos de calor

Se calcula la proporción de registros con más de tres focos de calor y la proporción con cero focos. Estas probabilidades describen la frecuencia relativa en la base analizada.

p_mas_tres_focos <- mean(x_focos > 3)
p_cero_focos <- mean(x_focos == 0)

tabla_prob_focos <- data.frame(
  Evento = c(
    "Más de 3 focos de calor",
    "Cero focos de calor"
  ),
  Probabilidad_empirica = c(
    p_mas_tres_focos,
    p_cero_focos
  )
)

knitr::kable(
  tabla_prob_focos,
  digits = 4,
  caption = "Probabilidades empíricas para los focos de calor"
)
Probabilidades empíricas para los focos de calor
Evento Probabilidad_empirica
Más de 3 focos de calor 0.3824
Cero focos de calor 0.0412

La probabilidad empírica se obtiene dividiendo el número de registros que cumplen la condición entre el total de observaciones válidas. Por ejemplo, la probabilidad de observar más de tres focos corresponde a la proporción de registros con conteos superiores a tres.

8.2 8.2. Probabilidades teóricas de Poisson

Con el parámetro estimado para los focos de calor, se calculan la probabilidad de observar exactamente dos focos y la probabilidad de observar más de tres.

p_dos_focos <- dpois(2, lambda = lambda_focos)
p_mas_tres_poisson <- ppois(
  3,
  lambda = lambda_focos,
  lower.tail = FALSE
)

tabla_prob_poisson <- data.frame(
  Evento = c(
    "Exactamente 2 focos",
    "Más de 3 focos"
  ),
  Probabilidad_teorica = c(
    p_dos_focos,
    p_mas_tres_poisson
  )
)

knitr::kable(
  tabla_prob_poisson,
  digits = 4,
  caption = "Probabilidades calculadas mediante Poisson"
)
Probabilidades calculadas mediante Poisson
Evento Probabilidad_teorica
Exactamente 2 focos 0.2131
Más de 3 focos 0.3850

Estas probabilidades son teóricas y dependen del supuesto de Poisson. Su validez práctica depende de que el modelo describa razonablemente la variable observada.

8.3 8.3. Probabilidades empíricas para los cuadrantes críticos

Se estima la probabilidad de que un registro tenga al menos cinco cuadrantes críticos vecinos y la probabilidad de que tenga como máximo dos.

p_al_menos_cinco <- mean(x_cuadrantes >= 5)
p_maximo_dos <- mean(x_cuadrantes <= 2)

tabla_prob_cuadrantes <- data.frame(
  Evento = c(
    "Al menos 5 cuadrantes críticos vecinos",
    "Como máximo 2 cuadrantes críticos vecinos"
  ),
  Probabilidad_empirica = c(
    p_al_menos_cinco,
    p_maximo_dos
  )
)

knitr::kable(
  tabla_prob_cuadrantes,
  digits = 4,
  caption = "Probabilidades empíricas para cuadrantes críticos"
)
Probabilidades empíricas para cuadrantes críticos
Evento Probabilidad_empirica
Al menos 5 cuadrantes críticos vecinos 0.0276
Como máximo 2 cuadrantes críticos vecinos 0.6612

Las probabilidades obtenidas permiten describir qué tan frecuentes son los registros con cantidades altas o bajas de cuadrantes críticos vecinos dentro de la base de datos.

8.4 8.4. Probabilidades para el tiempo de arribo

Para una variable exponencial con tasa \(\lambda\), la probabilidad de que el tiempo sea superior a \(t\) se calcula como:

\[ P(X>t)=e^{-\lambda t} \]

Se calculará la probabilidad teórica de que el tiempo de arribo supere cinco días y la probabilidad de que no supere tres días.

p_mas_cinco_dias <- pexp(
  5,
  rate = lambda_tiempo,
  lower.tail = FALSE
)

p_hasta_tres_dias <- pexp(
  3,
  rate = lambda_tiempo
)

tabla_prob_tiempo <- data.frame(
  Evento = c(
    "Tiempo superior a 5 días",
    "Tiempo de hasta 3 días"
  ),
  Probabilidad_teorica = c(
    p_mas_cinco_dias,
    p_hasta_tres_dias
  )
)

knitr::kable(
  tabla_prob_tiempo,
  digits = 4,
  caption = "Probabilidades teóricas del tiempo de arribo"
)
Probabilidades teóricas del tiempo de arribo
Evento Probabilidad_teorica
Tiempo superior a 5 días 0.4901
Tiempo de hasta 3 días 0.3481

Estos valores dependen del supuesto exponencial. Para contrastarlos con los datos, también se calcula la proporción empírica de tiempos superiores a cinco días.

comparacion_tiempo <- data.frame(
  Evento = "Tiempo superior a 5 días",
  Probabilidad_empirica = mean(x_tiempo > 5),
  Probabilidad_exponencial = p_mas_cinco_dias
)

knitr::kable(
  comparacion_tiempo,
  digits = 4,
  caption = "Comparación de probabilidad empírica y exponencial"
)
Comparación de probabilidad empírica y exponencial
Evento Probabilidad_empirica Probabilidad_exponencial
Tiempo superior a 5 días 0.49 0.4901

La comparación permite identificar si el modelo exponencial produce una estimación cercana a la frecuencia observada. Una diferencia grande sugiere que deben examinarse otros modelos o considerarse las limitaciones de la base.

8.5 8.5. Probabilidad empírica para la distancia a la carretera

Se calcula la proporción de registros cuya distancia a la carretera supera los 10 kilómetros.

p_distancia_mayor_diez <- mean(x_distancia > 10)

tabla_prob_distancia <- data.frame(
  Evento = "Distancia superior a 10 km",
  Probabilidad_empirica = p_distancia_mayor_diez
)

knitr::kable(
  tabla_prob_distancia,
  digits = 4,
  caption = "Probabilidad empírica de una distancia superior a 10 km"
)
Probabilidad empírica de una distancia superior a 10 km
Evento Probabilidad_empirica
Distancia superior a 10 km 0.6628

Esta probabilidad corresponde a la proporción de observaciones que cumplen la condición. Se interpreta como una descripción de la base y no como una probabilidad oficial para todas las zonas de Colombia.

9 9. Interpretación de los resultados

Las medidas descriptivas permiten resumir los valores típicos y la variabilidad de las cuatro variables. En las variables discretas, los promedios representan cantidades medias de eventos o cuadrantes críticos. En las variables continuas, la media y la desviación estándar describen la magnitud y la dispersión de las distancias y los tiempos.

Las probabilidades empíricas representan frecuencias relativas observadas en los registros. En cambio, las probabilidades teóricas de Poisson y exponencial dependen de los supuestos de sus modelos. La cercanía entre las probabilidades empíricas y teóricas constituye una señal inicial de ajuste, aunque no demuestra por sí sola que el modelo sea correcto.

Para evaluar Poisson se compara la media observada con la varianza, dado que ambas deben coincidir teóricamente en este modelo. Para la distribución exponencial se comparan el histograma, los momentos y las probabilidades empíricas con las estimaciones teóricas. Si las diferencias son importantes, la conclusión apropiada es que el modelo candidato presenta limitaciones.

Los resultados deben interpretarse dentro del alcance de la base utilizada. Debido a que la documentación disponible describe los datos como una emulación de mediciones de monitoreo ambiental, no es correcto extrapolar automáticamente las probabilidades calculadas a todas las regiones de Colombia ni presentarlas como estadísticas oficiales del IDEAM.

9.1 9.1. Resumen automático de los principales resultados

resumen <- data.frame(
  Indicador = c(
    "Promedio de focos de calor",
    "Promedio de cuadrantes críticos vecinos",
    "Distancia media a la carretera (km)",
    "Tiempo medio de arribo (días)",
    "Probabilidad empírica de más de 3 focos",
    "Probabilidad empírica de distancia superior a 10 km",
    "Probabilidad empírica de tiempo superior a 5 días"
  ),
  Resultado = c(
    mean(x_focos),
    mean(x_cuadrantes),
    mean(x_distancia),
    mean(x_tiempo),
    mean(x_focos > 3),
    mean(x_distancia > 10),
    mean(x_tiempo > 5)
  )
)

knitr::kable(
  resumen,
  digits = 4,
  caption = "Resumen de indicadores y probabilidades"
)
Resumen de indicadores y probabilidades
Indicador Resultado
Promedio de focos de calor 3.1440
Promedio de cuadrantes críticos vecinos 2.0476
Distancia media a la carretera (km) 15.0633
Tiempo medio de arribo (días) 7.0121
Probabilidad empírica de más de 3 focos 0.3824
Probabilidad empírica de distancia superior a 10 km 0.6628
Probabilidad empírica de tiempo superior a 5 días 0.4900

10 10. Conclusiones

El estudio permitió aplicar herramientas de estadística descriptiva y teoría de la probabilidad al análisis de una base de datos relacionada con el monitoreo de la deforestación. Se trabajó con dos variables discretas, correspondientes a conteos, y dos variables continuas, correspondientes a distancias y tiempos. Esta selección permitió calcular medidas de tendencia central y dispersión, elaborar representaciones gráficas y estudiar diferentes probabilidades.

Las probabilidades empíricas describen la frecuencia de determinados eventos dentro de los registros disponibles. Los modelos de Poisson y exponencial proporcionan formas teóricas de calcular probabilidades, pero su uso debe justificarse mediante la comparación entre los datos observados, los momentos y las probabilidades estimadas. Por esta razón, las distribuciones se trataron como modelos candidatos y no como supuestos automáticamente verdaderos.

En conclusión, la estadística permite organizar la información, describir el comportamiento de las variables y cuantificar la incertidumbre asociada con eventos ambientales. Sin embargo, las conclusiones están limitadas por la procedencia y las características de la base de datos. Para realizar inferencias sobre el territorio colombiano se necesitarían registros oficiales verificables, información sobre el periodo de observación y un diseño de muestreo adecuado.

11 Referencias

La referencia al IDEAM se incluye como contexto institucional del tema y no como certificación de que los registros del Excel sean datos oficiales descargados de dicha entidad.