1. Carga de Datos y Librerías

library(readxl)
library(dplyr)
library(gt)

Datos <- read_excel("dataset_mundial_petro.xlsx")

2. Variable 1: Latitud Geográfica (°)

Identificación: Variable Cuantitativa Continua. La latitud determina la ubicación norte-sur de los yacimientos de petróleo y gas a nivel mundial.

Tabla de Distribución de Frecuencias

Variable_Lat <- na.omit(as.numeric(Datos$Latitude))
n_total      <- length(Variable_Lat)
BASE         <- 10

min_int  <- floor(min(Variable_Lat) / BASE) * BASE
max_int  <- ceiling(max(Variable_Lat) / BASE) * BASE
cortes   <- seq(from = min_int, to = max_int, by = BASE)
K_int    <- length(cortes) - 1

ni_int <- as.vector(table(cut(Variable_Lat, breaks = cortes,
                               include.lowest = TRUE, right = FALSE)))
hi_int <- (ni_int / n_total) * 100

df_tabla_lat <- data.frame(
  Li      = cortes[1:K_int],
  Ls      = cortes[2:(K_int+1)],
  MC      = (cortes[1:K_int] + cortes[2:(K_int+1)]) / 2,
  ni      = ni_int,
  hi      = hi_int,
  Ni_asc  = cumsum(ni_int),
  Ni_desc = rev(cumsum(rev(ni_int))),
  Hi_asc  = cumsum(hi_int),
  Hi_desc = rev(cumsum(rev(hi_int)))
)

df_tabla_lat %>%
  mutate(across(everything(), ~as.character(round(as.numeric(.), 2)))) %>%
  rbind(c("TOTAL", "-", "-", n_total, "100", "-", "-", "-", "-")) %>%
  gt() %>%
  tab_header(
    title    = md("**TABLA N° 1: DISTRIBUCIÓN DE FRECUENCIAS DE LATITUD (°)**"),
    subtitle = "Análisis Geográfico Global de Yacimientos de Petróleo y Gas"
  ) %>%
  tab_source_note(source_note = "Autor: Grupo 5") %>%
  cols_label(
    Li = "Lim. Inf", Ls = "Lim. Sup", MC = "Marca Clase",
    ni = "ni", hi = "hi (%)",
    Ni_asc = "Ni \u2191", Ni_desc = "Ni \u2193",
    Hi_asc = "Hi \u2191", Hi_desc = "Hi \u2193"
  ) %>%
  cols_align(align = "center", columns = everything()) %>%
  tab_options(column_labels.background.color = "#F0F0F0",
              column_labels.font.weight = "bold")
TABLA N° 1: DISTRIBUCIÓN DE FRECUENCIAS DE LATITUD (°)
Análisis Geográfico Global de Yacimientos de Petróleo y Gas
Lim. Inf Lim. Sup Marca Clase ni hi (%) Ni ↑ Ni ↓ Hi ↑ Hi ↓
-60 -50 -55 21 0.28 21 7537 0.28 100
-50 -40 -45 58 0.77 79 7516 1.05 99.72
-40 -30 -35 136 1.8 215 7458 2.85 98.95
-30 -20 -25 112 1.49 327 7322 4.34 97.15
-20 -10 -15 68 0.9 395 7210 5.24 95.66
-10 0 -5 241 3.2 636 7142 8.44 94.76
0 10 5 713 9.46 1349 6901 17.9 91.56
10 20 15 243 3.22 1592 6188 21.12 82.1
20 30 25 985 13.07 2577 5945 34.19 78.88
30 40 35 1986 26.35 4563 4960 60.54 65.81
40 50 45 1056 14.01 5619 2974 74.55 39.46
50 60 55 1610 21.36 7229 1918 95.91 25.45
60 70 65 265 3.52 7494 308 99.43 4.09
70 80 75 43 0.57 7537 43 100 0.57
TOTAL - - 7537 100 - - - -
Autor: Grupo 5

Gráfica de Frecuencias — Latitud

par(mar = c(6, 6, 4, 2))
barplot(df_tabla_lat$hi,
        names.arg = df_tabla_lat$MC,
        col = "#B0C4DE", border = "black",
        ylim = c(0, max(df_tabla_lat$hi) * 1.3),
        space = 0, axes = FALSE, las = 2, cex.names = 0.7)
axis(2, las = 2)
grid(nx = NA, ny = NULL, col = "#D7DBDD", lty = "dotted")
mtext("Porcentaje (%)", side = 2, line = 3.5, cex = 0.8)
mtext("Latitud (°)",    side = 1, line = 3.5, cex = 0.8)
mtext("Gráfica N°1: Distribución de Frecuencia por Latitud",
      side = 3, line = 1.5, adj = 0.5, cex = 1, font = 2)
abline(h = 0, col = "black", lwd = 1.5)
mtext("Autor: Grupo 5", side = 1, line = 4.5, adj = 1, cex = 0.7, font = 3)

Intervalo de Confianza — Latitud

x_bar_lat <- mean(Variable_Lat)
sigma_lat <- sd(Variable_Lat)
E_lat     <- 1.96 * (sigma_lat / sqrt(n_total))

data.frame(
  Parametro      = "Latitud Promedio Mundial (\u00b0)",
  Lim_Inferior   = x_bar_lat - E_lat,
  Media_Muestral = x_bar_lat,
  Lim_Superior   = x_bar_lat + E_lat,
  Error_Estandar = paste0("+/- ", round(E_lat, 4)),
  Confianza      = "95% (Z=1.96)"
) %>%
  gt() %>%
  tab_header(
    title    = md("**TABLA N° 2: ESTIMACIÓN DE LA MEDIA POBLACIONAL — LATITUD**"),
    subtitle = "Inferencia Estadística para la Variable Latitud"
  ) %>%
  tab_source_note(source_note = "Autor: Grupo 5") %>%
  fmt_number(columns = 2:4, decimals = 3) %>%
  tab_style(
    style     = list(cell_fill(color = "#E8F8F5"),
                     cell_text(color = "#145A32", weight = "bold")),
    locations = cells_body(columns = Media_Muestral)
  ) %>%
  tab_options(column_labels.background.color = "#F0F0F0",
              column_labels.font.weight = "bold", table.width = pct(100))
TABLA N° 2: ESTIMACIÓN DE LA MEDIA POBLACIONAL — LATITUD
Inferencia Estadística para la Variable Latitud
Parametro Lim_Inferior Media_Muestral Lim_Superior Error_Estandar Confianza
Latitud Promedio Mundial (°) 31.738 32.254 32.769 +/- 0.5154 95% (Z=1.96)
Autor: Grupo 5

3. Variable 2: Longitud Geográfica (°)

Identificación: Variable Cuantitativa Continua. La longitud indica la posición este-oeste de los yacimientos, permitiendo identificar concentraciones por cuencas y regiones continentales.

Tabla de Distribución de Frecuencias

Variable_Lon <- na.omit(as.numeric(Datos$Longitude))
n_total2     <- length(Variable_Lon)
BASE2        <- 30

min_int2 <- floor(min(Variable_Lon) / BASE2) * BASE2
max_int2 <- ceiling(max(Variable_Lon) / BASE2) * BASE2
cortes2  <- seq(from = min_int2, to = max_int2, by = BASE2)
K_int2   <- length(cortes2) - 1

ni_int2 <- as.vector(table(cut(Variable_Lon, breaks = cortes2,
                                include.lowest = TRUE, right = FALSE)))
hi_int2 <- (ni_int2 / n_total2) * 100

df_tabla_lon <- data.frame(
  Li      = cortes2[1:K_int2],
  Ls      = cortes2[2:(K_int2+1)],
  MC      = (cortes2[1:K_int2] + cortes2[2:(K_int2+1)]) / 2,
  ni      = ni_int2,
  hi      = hi_int2,
  Ni_asc  = cumsum(ni_int2),
  Ni_desc = rev(cumsum(rev(ni_int2))),
  Hi_asc  = cumsum(hi_int2),
  Hi_desc = rev(cumsum(rev(hi_int2)))
)

df_tabla_lon %>%
  mutate(across(everything(), ~as.character(round(as.numeric(.), 2)))) %>%
  rbind(c("TOTAL", "-", "-", n_total2, "100", "-", "-", "-", "-")) %>%
  gt() %>%
  tab_header(
    title    = md("**TABLA N° 3: DISTRIBUCIÓN DE FRECUENCIAS DE LONGITUD (°)**"),
    subtitle = "Análisis Geográfico Global de Yacimientos de Petróleo y Gas"
  ) %>%
  tab_source_note(source_note = "Autor: Grupo 5") %>%
  cols_label(
    Li = "Lim. Inf", Ls = "Lim. Sup", MC = "Marca Clase",
    ni = "ni", hi = "hi (%)",
    Ni_asc = "Ni \u2191", Ni_desc = "Ni \u2193",
    Hi_asc = "Hi \u2191", Hi_desc = "Hi \u2193"
  ) %>%
  cols_align(align = "center", columns = everything()) %>%
  tab_options(column_labels.background.color = "#F0F0F0",
              column_labels.font.weight = "bold")
TABLA N° 3: DISTRIBUCIÓN DE FRECUENCIAS DE LONGITUD (°)
Análisis Geográfico Global de Yacimientos de Petróleo y Gas
Lim. Inf Lim. Sup Marca Clase ni hi (%) Ni ↑ Ni ↓ Hi ↑ Hi ↓
-180 -150 -165 16 0.21 16 7537 0.21 100
-150 -120 -135 224 2.97 240 7521 3.18 99.79
-120 -90 -105 3848 51.05 4088 7297 54.24 96.82
-90 -60 -75 952 12.63 5040 3449 66.87 45.76
-60 -30 -45 139 1.84 5179 2497 68.71 33.13
-30 0 -15 111 1.47 5290 2358 70.19 31.29
0 30 15 1160 15.39 6450 2247 85.58 29.81
30 60 45 520 6.9 6970 1087 92.48 14.42
60 90 75 214 2.84 7184 567 95.32 7.52
90 120 105 286 3.79 7470 353 99.11 4.68
120 150 135 58 0.77 7528 67 99.88 0.89
150 180 165 9 0.12 7537 9 100 0.12
TOTAL - - 7537 100 - - - -
Autor: Grupo 5

Gráfica de Frecuencias — Longitud

par(mar = c(6, 6, 4, 2))
barplot(df_tabla_lon$hi,
        names.arg = df_tabla_lon$MC,
        col = "#A9CCE3", border = "black",
        ylim = c(0, max(df_tabla_lon$hi) * 1.3),
        space = 0, axes = FALSE, las = 2, cex.names = 0.7)
axis(2, las = 2)
grid(nx = NA, ny = NULL, col = "#D7DBDD", lty = "dotted")
mtext("Porcentaje (%)", side = 2, line = 3.5, cex = 0.8)
mtext("Longitud (°)",   side = 1, line = 3.5, cex = 0.8)
mtext("Gráfica N°2: Distribución de Frecuencia por Longitud",
      side = 3, line = 1.5, adj = 0.5, cex = 1, font = 2)
abline(h = 0, col = "black", lwd = 1.5)
mtext("Autor: Grupo 5", side = 1, line = 4.5, adj = 1, cex = 0.7, font = 3)

Intervalo de Confianza — Longitud

x_bar_lon <- mean(Variable_Lon)
sigma_lon <- sd(Variable_Lon)
E_lon     <- 1.96 * (sigma_lon / sqrt(n_total2))

data.frame(
  Parametro      = "Longitud Promedio Mundial (\u00b0)",
  Lim_Inferior   = x_bar_lon - E_lon,
  Media_Muestral = x_bar_lon,
  Lim_Superior   = x_bar_lon + E_lon,
  Error_Estandar = paste0("+/- ", round(E_lon, 4)),
  Confianza      = "95% (Z=1.96)"
) %>%
  gt() %>%
  tab_header(
    title    = md("**TABLA N° 4: ESTIMACIÓN DE LA MEDIA POBLACIONAL — LONGITUD**"),
    subtitle = "Inferencia Estadística para la Variable Longitud"
  ) %>%
  tab_source_note(source_note = "Autor: Grupo 5") %>%
  fmt_number(columns = 2:4, decimals = 3) %>%
  tab_style(
    style     = list(cell_fill(color = "#EBF5FB"),
                     cell_text(color = "#1A5276", weight = "bold")),
    locations = cells_body(columns = Media_Muestral)
  ) %>%
  tab_options(column_labels.background.color = "#F0F0F0",
              column_labels.font.weight = "bold", table.width = pct(100))
TABLA N° 4: ESTIMACIÓN DE LA MEDIA POBLACIONAL — LONGITUD
Inferencia Estadística para la Variable Longitud
Parametro Lim_Inferior Media_Muestral Lim_Superior Error_Estandar Confianza
Longitud Promedio Mundial (°) −56.186 −54.653 −53.120 +/- 1.5329 95% (Z=1.96)
Autor: Grupo 5

4. Variable 3: Año de Descubrimiento

Identificación: Variable Cuantitativa Continua. Permite analizar la evolución temporal de los descubrimientos de petróleo y gas a nivel mundial a lo largo de más de 150 años de exploración.

Tabla de Distribución de Frecuencias

Variable_Disc <- na.omit(as.numeric(Datos$`Discovery year`))
n_total3      <- length(Variable_Disc)
BASE3         <- 20

min_int3 <- floor(min(Variable_Disc) / BASE3) * BASE3
max_int3 <- ceiling(max(Variable_Disc) / BASE3) * BASE3
cortes3  <- seq(from = min_int3, to = max_int3, by = BASE3)
K_int3   <- length(cortes3) - 1

ni_int3 <- as.vector(table(cut(Variable_Disc, breaks = cortes3,
                                include.lowest = TRUE, right = FALSE)))
hi_int3 <- (ni_int3 / n_total3) * 100

df_tabla_disc <- data.frame(
  Li      = cortes3[1:K_int3],
  Ls      = cortes3[2:(K_int3+1)],
  MC      = (cortes3[1:K_int3] + cortes3[2:(K_int3+1)]) / 2,
  ni      = ni_int3,
  hi      = hi_int3,
  Ni_asc  = cumsum(ni_int3),
  Ni_desc = rev(cumsum(rev(ni_int3))),
  Hi_asc  = cumsum(hi_int3),
  Hi_desc = rev(cumsum(rev(hi_int3)))
)

df_tabla_disc %>%
  mutate(across(everything(), ~as.character(round(as.numeric(.), 2)))) %>%
  rbind(c("TOTAL", "-", "-", n_total3, "100", "-", "-", "-", "-")) %>%
  gt() %>%
  tab_header(
    title    = md("**TABLA N° 5: DISTRIBUCIÓN DE FRECUENCIAS — AÑO DE DESCUBRIMIENTO**"),
    subtitle = "Evolución Temporal de Descubrimientos de Petróleo y Gas"
  ) %>%
  tab_source_note(source_note = "Autor: Grupo 5") %>%
  cols_label(
    Li = "Lim. Inf", Ls = "Lim. Sup", MC = "Marca Clase",
    ni = "ni", hi = "hi (%)",
    Ni_asc = "Ni \u2191", Ni_desc = "Ni \u2193",
    Hi_asc = "Hi \u2191", Hi_desc = "Hi \u2193"
  ) %>%
  cols_align(align = "center", columns = everything()) %>%
  tab_options(column_labels.background.color = "#F0F0F0",
              column_labels.font.weight = "bold")
TABLA N° 5: DISTRIBUCIÓN DE FRECUENCIAS — AÑO DE DESCUBRIMIENTO
Evolución Temporal de Descubrimientos de Petróleo y Gas
Lim. Inf Lim. Sup Marca Clase ni hi (%) Ni ↑ Ni ↓ Hi ↑ Hi ↓
1860 1880 1870 6 0.12 6 4935 0.12 100
1880 1900 1890 10 0.2 16 4929 0.32 99.88
1900 1920 1910 140 2.84 156 4919 3.16 99.68
1920 1940 1930 235 4.76 391 4779 7.92 96.84
1940 1960 1950 901 18.26 1292 4544 26.18 92.08
1960 1980 1970 1398 28.33 2690 3643 54.51 73.82
1980 2000 1990 1109 22.47 3799 2245 76.98 45.49
2000 2020 2010 1021 20.69 4820 1136 97.67 23.02
2020 2040 2030 115 2.33 4935 115 100 2.33
TOTAL - - 4935 100 - - - -
Autor: Grupo 5

Gráfica de Frecuencias — Año de Descubrimiento

par(mar = c(6, 6, 4, 2))
barplot(df_tabla_disc$hi,
        names.arg = df_tabla_disc$MC,
        col = "#C39BD3", border = "black",
        ylim = c(0, max(df_tabla_disc$hi) * 1.3),
        space = 0, axes = FALSE, las = 2, cex.names = 0.7)
axis(2, las = 2)
grid(nx = NA, ny = NULL, col = "#D7DBDD", lty = "dotted")
mtext("Porcentaje (%)",        side = 2, line = 3.5, cex = 0.8)
mtext("Año de Descubrimiento", side = 1, line = 3.5, cex = 0.8)
mtext("Gráfica N°3: Distribución de Frecuencia por Año de Descubrimiento",
      side = 3, line = 1.5, adj = 0.5, cex = 1, font = 2)
abline(h = 0, col = "black", lwd = 1.5)
mtext("Autor: Grupo 5", side = 1, line = 4.5, adj = 1, cex = 0.7, font = 3)

Intervalo de Confianza — Año de Descubrimiento

x_bar_disc <- mean(Variable_Disc)
sigma_disc <- sd(Variable_Disc)
E_disc     <- 1.96 * (sigma_disc / sqrt(n_total3))

data.frame(
  Parametro      = "A\u00f1o de Descubrimiento Promedio",
  Lim_Inferior   = x_bar_disc - E_disc,
  Media_Muestral = x_bar_disc,
  Lim_Superior   = x_bar_disc + E_disc,
  Error_Estandar = paste0("+/- ", round(E_disc, 4)),
  Confianza      = "95% (Z=1.96)"
) %>%
  gt() %>%
  tab_header(
    title    = md("**TABLA N° 6: ESTIMACIÓN DE LA MEDIA POBLACIONAL — AÑO DE DESCUBRIMIENTO**"),
    subtitle = "Inferencia Estadística para el A\u00f1o de Descubrimiento"
  ) %>%
  tab_source_note(source_note = "Autor: Grupo 5") %>%
  fmt_number(columns = 2:4, decimals = 3) %>%
  tab_style(
    style     = list(cell_fill(color = "#F5EEF8"),
                     cell_text(color = "#6C3483", weight = "bold")),
    locations = cells_body(columns = Media_Muestral)
  ) %>%
  tab_options(column_labels.background.color = "#F0F0F0",
              column_labels.font.weight = "bold", table.width = pct(100))
TABLA N° 6: ESTIMACIÓN DE LA MEDIA POBLACIONAL — AÑO DE DESCUBRIMIENTO
Inferencia Estadística para el Año de Descubrimiento
Parametro Lim_Inferior Media_Muestral Lim_Superior Error_Estandar Confianza
Año de Descubrimiento Promedio 1,975.703 1,976.438 1,977.173 +/- 0.7351 95% (Z=1.96)
Autor: Grupo 5