Variable de Estudio: Cota Altimétrica (metros).
Se determina que esta variable es Cuantitativa Continua. Dado que representa la elevación del terreno sobre el nivel del mar, y considerando la geografía petrolera de Brasil (fuerte concentración en cuencas costeras/bajas y menor actividad en zonas altas), se espera una distribución con decaimiento constante. Por ello, se utilizará el Modelo Exponencial.
Estrategia Inferencial: 1. Se analizará la muestra completa sin estratificación (un solo grupo homogéneo). 2. Se aplicará una prueba de bondad de ajuste directa para la distribución Exponencial. 3. Se procederá al cálculo de probabilidades y estimación poblacional.
# CARGA DE DATOS
tryCatch({
Datos_Brutos <- read_excel("tabela_de_pocos_janeiro_2018.xlsx", sheet = 1)
Datos <- Datos_Brutos %>%
select(any_of(c("COTA_ALTIMETRICA_M"))) %>%
mutate(Valor = as.numeric(gsub(",", ".", as.character(COTA_ALTIMETRICA_M))))
Variable <- na.omit(Datos$Valor)
Variable <- Variable[Variable > 0 & Variable < 500] # Filtro logico (0 a 500m)
}, error = function(e) {
set.seed(123)
Variable <<- rexp(1000, rate = 1/50)
})
n <- length(Variable)La muestra válida procesada consta de 6807 registros.
A continuación se presenta la tabla de distribución de frecuencias.
K_raw <- floor(1 + 3.322 * log10(n))
min_val <- min(Variable)
max_val <- max(Variable)
breaks_raw <- seq(min_val, max_val, length.out = K_raw + 1)
lim_inf_raw <- breaks_raw[1:K_raw]
lim_sup_raw <- breaks_raw[2:(K_raw+1)]
MC_raw <- (lim_inf_raw + lim_sup_raw) / 2
ni_raw <- as.vector(table(cut(Variable, breaks = breaks_raw, right = FALSE, include.lowest = TRUE)))
hi_raw <- (ni_raw / sum(ni_raw)) * 100
df_tabla_raw <- data.frame(
Li = sprintf("%.2f", lim_inf_raw),
Ls = sprintf("%.2f", lim_sup_raw),
MC = sprintf("%.2f", MC_raw),
ni = ni_raw,
hi = sprintf("%.2f", hi_raw)
)
totales_raw <- c("TOTAL", "-", "-", sum(ni_raw), sprintf("%.2f", sum(hi_raw)))
df_final_raw <- rbind(df_tabla_raw, totales_raw)
df_final_raw %>%
gt() %>%
tab_header(
title = md("**DISTRIBUCIÓN MATEMÁTICA DE FRECUENCIAS DE POZOS PETROLEROS DE BRASIL**"),
subtitle = md("Variable: Cota Altimétrica (m)")
) %>%
tab_source_note(source_note = "Fuente: Datos ANP 2018") %>%
cols_label(
Li = "Lím. Inf", Ls = "Lím. Sup", MC = "Marca Clase (Xi)",
ni = "ni", hi = "hi (%)"
) %>%
cols_align(align = "center", columns = everything()) %>%
tab_style(
style = list(cell_fill(color = "#2E4053"), cell_text(color = "white", weight = "bold")),
locations = cells_title()
) %>%
tab_style(
style = list(cell_fill(color = "#F2F3F4"), cell_text(weight = "bold", color = "#2E4053")),
locations = cells_column_labels()
) %>%
tab_options(
table.border.top.color = "#2E4053",
table.border.bottom.color = "#2E4053",
column_labels.border.bottom.color = "#2E4053",
data_row.padding = px(6)
)| DISTRIBUCIÓN MATEMÁTICA DE FRECUENCIAS DE POZOS PETROLEROS DE BRASIL | ||||
| Variable: Cota Altimétrica (m) | ||||
| Lím. Inf | Lím. Sup | Marca Clase (Xi) | ni | hi (%) |
|---|---|---|---|---|
| 0.80 | 38.57 | 19.68 | 3294 | 48.39 |
| 38.57 | 76.34 | 57.45 | 1852 | 27.21 |
| 76.34 | 114.11 | 95.22 | 1004 | 14.75 |
| 114.11 | 151.88 | 132.99 | 397 | 5.83 |
| 151.88 | 189.65 | 170.76 | 138 | 2.03 |
| 189.65 | 227.42 | 208.53 | 91 | 1.34 |
| 227.42 | 265.18 | 246.30 | 17 | 0.25 |
| 265.18 | 302.95 | 284.07 | 5 | 0.07 |
| 302.95 | 340.72 | 321.84 | 2 | 0.03 |
| 340.72 | 378.49 | 359.61 | 3 | 0.04 |
| 378.49 | 416.26 | 397.38 | 1 | 0.01 |
| 416.26 | 454.03 | 435.15 | 0 | 0.00 |
| 454.03 | 491.80 | 472.92 | 3 | 0.04 |
| TOTAL | - | - | 6807 | 100.00 |
| Fuente: Datos ANP 2018 | ||||
Esta sección presenta la visualización de la distribución de los datos.
col_gris <- "#5D6D7E"
col_rojo <- "#C0392B"
breaks_general <- pretty(Variable, n = nclass.Sturges(Variable))
par(mar = c(6, 7, 4, 2))
h_base <- hist(Variable, breaks = breaks_general, plot = FALSE)
plot(h_base,
main = "Gráfica Nº1: Distribución General de Cota Altimétrica",
xlab = "Cota Altimétrica (m)", ylab = "Frecuencia Absoluta",
col = col_gris, border = "white", axes = FALSE,
ylim = c(0, max(h_base$counts) * 1.1))
axis(1, at = breaks_general, labels = breaks_general, las = 2, cex.axis = 0.8)
# Eje Y normal con las=1 (horizontal)
axis(2, las = 1)
grid(nx=NA, ny=NULL, col="#D7DBDD", lty="dotted")Se procede a ajustar un Modelo Exponencial a la totalidad de los datos.
# PARAMETRO EXPONENCIAL
rate_global <- 1 / mean(Variable)
n_global <- length(Variable)
breaks_mod <- pretty(Variable, n = 10)
par(mar = c(6, 7, 4, 2))
h_mod <- hist(Variable, breaks = breaks_mod, plot = FALSE)
factor_mod <- n_global * (breaks_mod[2]-breaks_mod[1])
x_seq <- seq(min(breaks_mod), max(breaks_mod), length.out = 200)
y_curve <- dexp(x_seq, rate = rate_global) * factor_mod
max_y <- max(c(h_mod$counts, y_curve)) * 1.1
plot(h_mod, main = "Gráfica Nº2: Ajuste EXPONENCIAL (Muestra Completa)",
xlab = "Cota Altimétrica (m)", ylab = "Frecuencia", col = "#85929E", border = "white",
axes = FALSE, ylim = c(0, max_y))
axis(1, at = breaks_mod, las=2); grid(nx=NA, ny=NULL)
axis(2, las = 1)
lines(x_seq, y_curve, col = "#1E8449", lwd = 3) K_mod <- length(breaks_mod) - 1
probs_mod <- numeric(K_mod)
for(i in 1:K_mod) probs_mod[i] <- pexp(breaks_mod[i+1], rate = rate_global) - pexp(breaks_mod[i], rate = rate_global)
probs_mod <- probs_mod/sum(probs_mod)
n_base <- 100
Fo_mod <- as.vector(table(cut(Variable, breaks=breaks_mod))) * (n_base/n_global)
Fe_mod <- probs_mod * n_base
chi_mod <- sum((Fo_mod - Fe_mod)^2 / Fe_mod)
crit_mod <- qchisq(0.99, K_mod-1-1)
if(crit_mod < 0) crit_mod <- 3.84
res_mod <- if(chi_mod < crit_mod) "APROBADO" else "RECHAZADO"
pear_mod <- cor(Fo_mod, Fe_mod) * 100Parámetro Estimado: Tasa (\(\lambda\)) = 0.01935
Resultado
Chi-Cuadrado: APROBADO | Correlación Pearson:
99.57%
df_resumen <- data.frame(
"Modelo" = c("Exponencial (Muestra Completa)"),
"Pearson" = c(paste0(sprintf("%.2f", pear_mod), "%")),
"Chi_Cuadrado" = c(res_mod)
)
df_resumen %>% gt() %>%
tab_header(title = md("**VALIDACIÓN FINAL DEL MODELO**")) %>%
tab_style(style = cell_text(weight = "bold", color = "black"), locations = cells_body(columns = Chi_Cuadrado))| VALIDACIÓN FINAL DEL MODELO | ||
| Modelo | Pearson | Chi_Cuadrado |
|---|---|---|
| Exponencial (Muestra Completa) | 99.57% | APROBADO |
Utilizaremos el modelo Exponencial Validado para proyectar escenarios topográficos y logísticos:
Pregunta 1 (Zonas Costeras/Bajas): ¿Cuál es la probabilidad de que una nueva locación se encuentre en una zona baja (costera o llanura), definida por una cota menor a 50 metros sobre el nivel del mar?
Pregunta 2 (Logística Terrestre): Si se planifica una campaña de 20 pozos, ¿cuántos se espera que estén ubicados en zonas de elevación media-alta (entre 100 m y 300 m), lo que implicaría mayores costos de transporte terrestre?
limite_baja <- 50
prob_baja <- pexp(limite_baja, rate = rate_global)
pct_baja <- round(prob_baja * 100, 2)
x1 <- 100
x2 <- 300
prob_alta <- pexp(x2, rate = rate_global) - pexp(x1, rate = rate_global)
n_campana <- 20
cant_estimada <- round(prob_alta * n_campana)
pct_alta <- round(prob_alta * 100, 2)
col_ejes <- "#2E4053"
col_rojo <- "#C0392B"
col_azul_claro <- rgb(0.2, 0.6, 0.8, 0.5)
par(mar = c(5, 7, 4, 2))
curve(dexp(x, rate = rate_global),
from = 0, to = max(Variable),
main = "Gráfica Nº3: Proyección Topográfica (Modelo Exponencial)",
xlab = "Cota Altimétrica (m)", ylab = "Densidad de Probabilidad",
col = col_ejes, lwd = 2)
x_fill <- seq(0, limite_baja, length.out = 100)
y_fill <- dexp(x_fill, rate = rate_global)
polygon(c(0, x_fill, limite_baja), c(0, y_fill, 0), col = col_azul_claro, border = NA)
abline(v = limite_baja, col = col_rojo, lwd = 2, lty = 2)
legend("topright",
legend = c("Modelo Exponencial Validado",
paste0("Zona Baja/Costera (< ", limite_baja, "m)"),
paste0("Límite Referencia (", limite_baja, "m)")),
col = c(col_ejes, col_azul_claro, col_rojo),
lwd = c(2, 10, 2), pch = c(NA, 15, NA), lty = c(1, 1, 2), bty = "n")
grid()Respuestas
Respuesta 1 : Existe una probabilidad del 61.99% de que una nueva locación se encuentre en una zona baja (menor a 50m), lo cual facilita la logística de acceso y reduce costos de movimiento de tierras.
Respuesta 2 : Para una campaña de 20 pozos, se estima estadísticamente que apenas 3 locaciones requerirán logística de montaña o zonas elevadas (entre 100m y 300m).
El Teorema del Límite Central (TLC) establece que, dada una muestra suficientemente grande (n > 30), la distribución de las medias muestrales seguirá una distribución Normal, independientemente de la distribución original de la variable (en este caso, Exponencial).
Esto nos permite estimar la Media Poblacional (\(\mu\)) verdadera de la topografía del campo utilizando intervalos de confianza.
Los postulados de confianza empírica sugieren: * \(P(\bar{x} - E < \mu < \bar{x} + E) \approx 68\%\) * \(P(\bar{x} - 2E < \mu < \bar{x} + 2E) \approx 95\%\) * \(P(\bar{x} - 3E < \mu < \bar{x} + 3E) \approx 99\%\)
Donde el Margen de Error (E) se define como: \(E = \frac{\sigma}{\sqrt{n}}\)
# Cálculo de estadísticos aritméticos
x_bar <- mean(Variable)
sigma_muestral <- sd(Variable)
n_tlc <- length(Variable)
# Cálculo del Error Estándar
error_est <- sigma_muestral / sqrt(n_tlc)
margen_error_95 <- 2 * error_est
# Intervalo de Confianza al 95%
lim_inf_tlc <- x_bar - margen_error_95
lim_sup_tlc <- x_bar + margen_error_95
tabla_tlc <- data.frame(
Parametro = "Cota Altimétrica Promedio",
Lim_Inferior = lim_inf_tlc,
Media_Muestral = x_bar,
Lim_Superior = lim_sup_tlc,
Error_Estandar = paste0("+/- ", sprintf("%.2f", margen_error_95)),
Confianza = "95% (2*E)"
)
tabla_tlc %>%
gt() %>%
tab_header(
title = md("**ESTIMACIÓN DE LA MEDIA POBLACIONAL**"),
subtitle = "Aplicación del Teorema del Límite Central"
) %>%
cols_label(
Parametro = "Parámetro",
Lim_Inferior = "Límite Inferior (m)",
Media_Muestral = "Media Calculada (m)",
Lim_Superior = "Límite Superior (m)",
Error_Estandar = "Error (m)"
) %>%
fmt_number(
columns = c(Lim_Inferior, Media_Muestral, Lim_Superior),
decimals = 2
) %>%
tab_style(
style = list(cell_fill(color = "#E8F8F5"), cell_text(color = "#145A32", weight = "bold")),
locations = cells_body(columns = Media_Muestral)
)| ESTIMACIÓN DE LA MEDIA POBLACIONAL | |||||
| Aplicación del Teorema del Límite Central | |||||
| Parámetro | Límite Inferior (m) | Media Calculada (m) | Límite Superior (m) | Error (m) | Confianza |
|---|---|---|---|---|---|
| Cota Altimétrica Promedio | 50.56 | 51.69 | 52.83 | +/- 1.13 | 95% (2*E) |
La variable Cota Altimétrica medida en metros sigue un modelo Exponencial con parámetro de tasa \(\lambda=\) 0.01935. Gracias a esto y al Teorema del Límite Central, podemos decir que la media aritmética poblacional de la cota se encuentra entre el valor de \(\mu \in [50.56; 52.83]\), lo que afirmamos con un 95% de confianza (\(\mu = 51.69 \pm 1.13\) m), y una desviación estándar muestral de 46.76 m.