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.
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?
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.
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
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
)
| 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 |
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
)
| 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.
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.
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. |
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")
| 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 |
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
)
| 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 |
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.
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"
)
| 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.
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.
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.
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.
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.
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.
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"
)
| 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.
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.
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")
| 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.
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"
)
| 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.
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"
)
| 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.
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.
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.
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"
)
| 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.
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"
)
| 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.
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"
)
| 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.
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"
)
| 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"
)
| 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.
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"
)
| 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.
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.
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"
)
| 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 |
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.
monitoreo_deforestacion_colombia.xlsx. Base suministrada
para el estudio de caso; la documentación del caso la describe como una
emulación de mediciones de monitoreo ambiental.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.