Se cargan las librerías necesarias y el dataset Global Oil and Gas Extraction Tracker (GOGET), que contiene registros de unidades de extracción de petróleo y gas a nivel mundial.
library(readxl)
library(dplyr)
library(gt)
library(ggplot2)
library(scales)
library(e1071)
setwd("C:/Users/DETPC/Downloads")
datos <- read_excel("dataset_mundial_petro.xlsx") %>%
filter(!is.na(Latitude))
cat("Registros válidos:", nrow(datos), "\n")## Registros válidos: 7537
## Variables: 32
Se extrae la variable Latitude (Latitud). Es una variable de escala cuantitativa continua, ya que puede tomar cualquier valor decimal dentro de un rango geográfico definido (-90° a 90°).
## Variable analizada: Latitude
## Total de observaciones (n): 7537
## Valor mínimo: -53.9713
## Valor máximo: 73.4344
Para una variable continua, se construye una distribución de frecuencias agrupada en clases (intervalos), utilizando la Regla de Sturges para determinar el número óptimo de clases.
\[ k = 1 + 3.322 \times \log_{10}(n) \]
rango <- max(lat) - min(lat)
k <- ceiling(1 + 3.322 * log10(n))
amplitud <- rango / k
cat("Rango (R):", round(rango, 4), "\n")## Rango (R): 127.4057
## Número de clases (k): 14
## Amplitud de clase (A): 9.1004
limite_inf <- min(lat)
tabla_freq <- data.frame(i = 1:k) %>%
mutate(
Li = limite_inf + (i - 1) * amplitud,
Ls = limite_inf + i * amplitud,
Marca = (Li + Ls) / 2
)
# Asignar cada observación a su clase
tabla_freq$ni <- sapply(1:k, function(j) {
if (j < k) {
sum(lat >= tabla_freq$Li[j] & lat < tabla_freq$Ls[j])
} else {
sum(lat >= tabla_freq$Li[j] & lat <= tabla_freq$Ls[j])
}
})
tabla_freq <- tabla_freq %>%
mutate(
Ni = cumsum(ni),
hi_prop = ni / n,
hi_pct = hi_prop * 100,
Hi_pct = cumsum(hi_pct)
) %>%
select(i, Li, Ls, Marca, ni, Ni, hi_pct, hi_prop, Hi_pct)
cat("Verificación — Σnᵢ:", sum(tabla_freq$ni), "(debe ser", n, ")\n")## Verificación — Σnᵢ: 7536 (debe ser 7537 )
## Verificación — Σhᵢ%: 99.99 (debe ser 100)
tabla_freq %>%
gt() %>%
tab_header(
title = md("**Tabla N. 1**"),
subtitle = md("Distribución de frecuencias de la Latitud — yacimientos de petróleo y gas")
) %>%
cols_label(
i = md("**N°**"),
Li = md("**Límite inferior**"),
Ls = md("**Límite superior**"),
Marca = md("**Marca de clase**"),
ni = md("**nᵢ**"),
Ni = md("**Nᵢ**"),
hi_pct = md("**(%)**"),
hi_prop = md("**(proporción)**"),
Hi_pct = md("**Hᵢ (%)**")
) %>%
tab_spanner(label = md("**hᵢ**"), columns = c(hi_pct, hi_prop)) %>%
fmt_number(columns = c(Li, Ls, Marca), decimals = 2) %>%
fmt_number(columns = c(ni, Ni), decimals = 0, use_seps = TRUE) %>%
fmt_number(columns = hi_pct, decimals = 2) %>%
fmt_number(columns = hi_prop, decimals = 4) %>%
fmt_number(columns = Hi_pct, decimals = 2) %>%
grand_summary_rows(
columns = c(ni, hi_pct, hi_prop),
fns = list(label = "Total", fn = "sum"),
fmt = list(
~ fmt_number(., columns = ni, decimals = 0, use_seps = TRUE),
~ fmt_number(., columns = hi_pct, decimals = 2),
~ fmt_number(., columns = hi_prop, decimals = 4)
)
) %>%
tab_source_note("Autor: Grupo 5") %>%
tab_options(
table.width = pct(100),
table.font.size = px(12),
table.font.names = "Arial",
heading.title.font.size = px(15),
heading.subtitle.font.size = px(12),
heading.align = "center",
heading.background.color = "#AAAAAA",
column_labels.font.weight = "bold",
column_labels.background.color = "#FFFFFF",
column_labels.border.top.color = "#AAAAAA",
column_labels.border.bottom.color = "#AAAAAA",
table.border.top.color = "#AAAAAA",
table.border.bottom.color = "#AAAAAA"
) %>%
tab_style(
style = cell_text(color = "white", weight = "bold"),
locations = cells_title(groups = c("title", "subtitle"))
) %>%
tab_style(
style = cell_text(weight = "bold"),
locations = list(cells_column_labels(), cells_column_spanners(), cells_grand_summary())
)| Tabla N. 1 | |||||||||
| Distribución de frecuencias de la Latitud — yacimientos de petróleo y gas | |||||||||
| N° | Límite inferior | Límite superior | Marca de clase | nᵢ | Nᵢ |
hᵢ
|
Hᵢ (%) | ||
|---|---|---|---|---|---|---|---|---|---|
| (%) | (proporción) | ||||||||
| 1 | −53.97 | −44.87 | −49.42 | 79 | 79 | 1.05 | 0.0105 | 1.05 | |
| 2 | −44.87 | −35.77 | −40.32 | 121 | 200 | 1.61 | 0.0161 | 2.65 | |
| 3 | −35.77 | −26.67 | −31.22 | 27 | 227 | 0.36 | 0.0036 | 3.01 | |
| 4 | −26.67 | −17.57 | −22.12 | 124 | 351 | 1.65 | 0.0165 | 4.66 | |
| 5 | −17.57 | −8.47 | −13.02 | 65 | 416 | 0.86 | 0.0086 | 5.52 | |
| 6 | −8.47 | 0.63 | −3.92 | 245 | 661 | 3.25 | 0.0325 | 8.77 | |
| 7 | 0.63 | 9.73 | 5.18 | 662 | 1,323 | 8.78 | 0.0878 | 17.55 | |
| 8 | 9.73 | 18.83 | 14.28 | 211 | 1,534 | 2.80 | 0.0280 | 20.35 | |
| 9 | 18.83 | 27.93 | 23.38 | 480 | 2,014 | 6.37 | 0.0637 | 26.72 | |
| 10 | 27.93 | 37.03 | 32.48 | 2,389 | 4,403 | 31.70 | 0.3170 | 58.42 | |
| 11 | 37.03 | 46.13 | 41.58 | 559 | 4,962 | 7.42 | 0.0742 | 65.84 | |
| 12 | 46.13 | 55.23 | 50.68 | 1,717 | 6,679 | 22.78 | 0.2278 | 88.62 | |
| 13 | 55.23 | 64.33 | 59.78 | 727 | 7,406 | 9.65 | 0.0965 | 98.26 | |
| 14 | 64.33 | 73.43 | 68.88 | 130 | 7,536 | 1.72 | 0.0172 | 99.99 | |
| Total | — | — | — | — | 7,536 | — | 99.99 | 0.9999 | — |
| Autor: Grupo 5 | |||||||||
pie_label <- paste0("n = ", format(n, big.mark = ","),
" | Fuente: Global Energy Monitor — GOGET 2023")
tema_base <- theme_minimal(base_size = 12) +
theme(
legend.position = "none",
plot.title = element_text(face = "bold", size = 13),
plot.caption = element_text(color = "#888888", size = 9, hjust = 0),
axis.title = element_text(face = "bold", size = 11),
axis.text.x = element_text(face = "bold"),
panel.grid.major.x = element_blank(),
panel.grid.major.y = element_line(color = "#EEEEEE"),
panel.grid.minor = element_blank(),
plot.background = element_rect(fill = "white", color = NA)
)ggplot(tabla_freq, aes(x = Marca, y = ni)) +
geom_col(width = amplitud * 0.95, fill = "#2E86C1", color = "white") +
geom_text(aes(label = ni), vjust = -0.4, size = 3.5, fontface = "bold") +
scale_x_continuous(breaks = round(c(tabla_freq$Li, tabla_freq$Ls[k]), 1)) +
scale_y_continuous(expand = expansion(mult = c(0, 0.12))) +
labs(title = "Gráfica N. 1: Histograma de frecuencias — Latitud",
x = "Latitud (grados)", y = "Frecuencia Absoluta (nᵢ)",
caption = pie_label) +
tema_base +
theme(axis.text.x = element_text(angle = 45, hjust = 1))ggplot(tabla_freq, aes(x = Marca, y = ni)) +
geom_line(color = "#2E86C1", linewidth = 1) +
geom_point(color = "#1A5276", size = 2.5) +
geom_text(aes(label = ni), vjust = -0.8, size = 3.5, fontface = "bold") +
scale_x_continuous(breaks = round(tabla_freq$Marca, 1)) +
scale_y_continuous(expand = expansion(mult = c(0, 0.15))) +
labs(title = "Gráfica N. 2: Polígono de frecuencias — Latitud",
x = "Marca de clase (Latitud)", y = "Frecuencia Absoluta (nᵢ)",
caption = pie_label) +
tema_base +
theme(axis.text.x = element_text(angle = 45, hjust = 1))ggplot(tabla_freq, aes(x = Ls, y = Ni)) +
geom_line(color = "#1A5276", linewidth = 1) +
geom_point(color = "#2E86C1", size = 2.5) +
geom_text(aes(label = Ni), vjust = -0.8, size = 3.5, fontface = "bold") +
scale_x_continuous(breaks = round(c(min(lat), tabla_freq$Ls), 1)) +
scale_y_continuous(labels = label_comma(),
expand = expansion(mult = c(0, 0.12))) +
labs(title = "Gráfica N. 3: Ojiva — Frecuencia acumulada de la Latitud",
x = "Latitud (límite superior de clase)", y = "Frecuencia Acumulada (Nᵢ)",
caption = pie_label) +
tema_base +
theme(axis.text.x = element_text(angle = 45, hjust = 1))ggplot(datos, aes(x = "", y = Latitude)) +
geom_boxplot(fill = "#AED6F1", color = "#1A5276", width = 0.3, outlier.color = "#E74C3C") +
coord_flip() +
labs(title = "Gráfica N. 4: Diagrama de caja — Latitud",
x = "", y = "Latitud (grados)",
caption = pie_label) +
tema_base +
theme(axis.text.y = element_blank())La variable Latitud es cuantitativa continua. Se calculan las medidas de tendencia central, dispersión, asimetría y curtosis sobre los datos no agrupados.
media <- mean(lat)
mediana <- median(lat)
moda_clase <- tabla_freq$Marca[which.max(tabla_freq$ni)]
varianza <- var(lat)
desv_est <- sd(lat)
cv <- (desv_est / media) * 100
asimetria <- skewness(lat)
curtosis <- kurtosis(lat)
cat("Media (X):", round(media, 4), "\n")## Media (X): 32.2538
## Mediana (Me): 32.5302
## Moda (clase modal, marca): 32.4826
## Varianza (V): 521.1647
## Desviación Estándar (Sd): 22.829
## Coeficiente de Variación (%): 70.78
## Asimetría (As): -1.2217
## Curtosis (K): 1.6975
data.frame(
"Variable" = "Latitude",
"Rango" = "D=[-90°, 90°]",
"Media (X)" = round(media, 4),
"Mediana (Me)" = round(mediana, 4),
"Moda (Mo)" = round(moda_clase, 4),
"Varianza (V)" = round(varianza, 4),
"Desv. Est. (Sd)" = round(desv_est, 4),
"C.V. (%)" = round(cv, 2),
"Asimetría (As)" = round(asimetria, 4),
"Curtosis (K)" = round(curtosis, 4),
check.names = FALSE
) %>%
gt() %>%
tab_header(
title = md("**Tabla N°2 de Conclusiones — Latitud en yacimientos de petróleo y gas**")
) %>%
tab_source_note("Autor: Grupo 5") %>%
tab_options(
table.width = pct(100),
table.font.size = px(12),
table.font.names = "Arial",
heading.align = "center",
heading.title.font.size = px(13),
heading.background.color = "#AAAAAA",
heading.border.bottom.color = "#AAAAAA",
column_labels.font.weight = "normal",
column_labels.background.color = "#FFFFFF",
column_labels.border.top.color = "#CCCCCC",
column_labels.border.top.width = px(1),
column_labels.border.bottom.color = "#CCCCCC",
column_labels.border.bottom.width = px(1),
table_body.border.bottom.color = "#CCCCCC",
table_body.border.bottom.width = px(1),
table.border.top.color = "#AAAAAA",
table.border.top.width = px(1),
table.border.bottom.color = "#AAAAAA",
table.border.bottom.width = px(1),
source_notes.font.size = px(11),
source_notes.border.lr.color = "transparent",
data_row.padding = px(5)
) %>%
tab_style(
style = cell_text(color = "white", weight = "bold"),
locations = cells_title(groups = "title")
) %>%
tab_style(
style = cell_text(color = "#333333", align = "center"),
locations = cells_column_labels()
) %>%
tab_style(
style = cell_text(color = "#333333", align = "center"),
locations = cells_body(columns = c("Media (X)", "Mediana (Me)", "Moda (Mo)",
"Varianza (V)", "Desv. Est. (Sd)",
"C.V. (%)", "Asimetría (As)", "Curtosis (K)"))
)| Tabla N°2 de Conclusiones — Latitud en yacimientos de petróleo y gas | |||||||||
| Variable | Rango | Media (X) | Mediana (Me) | Moda (Mo) | Varianza (V) | Desv. Est. (Sd) | C.V. (%) | Asimetría (As) | Curtosis (K) |
|---|---|---|---|---|---|---|---|---|---|
| Latitude | D=[-90°, 90°] | 32.2538 | 32.5302 | 32.4826 | 521.1647 | 22.829 | 70.78 | -1.2217 | 1.6975 |
| Autor: Grupo 5 | |||||||||
La variable “Latitud” presenta una media de aproximadamente 32.25°, con una mediana cercana de 32.53°, lo que sugiere una distribución ligeramente asimétrica hacia la izquierda (asimetría negativa), confirmada por el coeficiente de asimetría obtenido. La desviación estándar de aproximadamente 22.83° y un coeficiente de variación cercano al 70.8% indican una alta dispersión de las unidades de extracción de petróleo y gas a lo largo del eje latitudinal, reflejando que estas se distribuyen ampliamente entre el hemisferio sur y el hemisferio norte, con mayor concentración en latitudes del hemisferio norte (zona templada-tropical), coherente con la ubicación de las principales regiones productoras de hidrocarburos a nivel mundial.