1 Configuración y carga de datos

paquetes <- c("tidyverse", "janitor", "knitr", "kableExtra", "scales")
faltantes <- setdiff(paquetes, rownames(installed.packages()))
if (length(faltantes)) install.packages(faltantes)
invisible(lapply(paquetes, library, character.only = TRUE))
ruta <- "C:/Users/cordo/OneDrive/Desktop/ESTADISITCA/Oil__Gas____Other_Regulated_Wells__Beginning_1860.csv"
datos_originales <- readr::read_csv2(ruta, show_col_types = FALSE)

2 Extracción y limpieza de la variable

nombres <- names(datos_originales)
vacios <- is.na(nombres) | trimws(nombres) == ""
nombres[vacios] <- paste0("columna_sin_nombre_", which(vacios))
names(datos_originales) <- make.unique(nombres)
datos <- janitor::clean_names(datos_originales)
columna_region <- grep("^region$", names(datos), value = TRUE)
if (!length(columna_region)) columna_region <- grep("region", names(datos), value = TRUE)
if (!length(columna_region)) stop("No se encontró la columna Región en la base de datos.")
region_bruta <- datos %>% transmute(region = as.character(.data[[columna_region[1]]]))
n_total <- nrow(region_bruta)
region_limpia <- region_bruta %>%
  mutate(region = stringr::str_to_title(stringr::str_squish(region)),
         region = na_if(region, ""),
         region = if_else(region %in% c("Na", "N/A", "Null"), NA_character_, region)) %>%
  filter(!is.na(region))
n_validas <- nrow(region_limpia)
n_perdidas <- n_total - n_validas

3 Identificación de la variable

La variable Región es cualitativa nominal, porque sus categorías no tienen un orden natural. Su medida de tendencia central aplicable es la moda.

4 Tabla de distribución de frecuencias

tabla_frec <- region_limpia %>%
  count(region, name = "n_i", sort = TRUE) %>%
  mutate(h_i = n_i / sum(n_i), p_i = 100 * h_i)
tabla_final <- bind_rows(tabla_frec, tibble(region = "Total", n_i = n_validas,
                                           h_i = sum(tabla_frec$h_i), p_i = sum(tabla_frec$p_i)))
tabla_final %>%
  knitr::kable(format = "html", escape = FALSE,
    caption = "Cuadro N.° 1. Distribución de frecuencias absolutas, relativas y porcentuales de los pozos de petróleo, gas y otros regulados, según región, estado de Nueva York, EE. UU., registros desde 1860.",
    col.names = c("Región", "Frecuencia absoluta (n<sub>i</sub>)",
                  "Frecuencia relativa (h<sub>i</sub>)", "Frecuencia porcentual (p<sub>i</sub> %)"),
    digits = c(0, 0, 4, 2), align = c("l", "r", "r", "r")) %>%
  kableExtra::kable_styling(bootstrap_options = c("striped", "condensed"), full_width = FALSE) %>%
  kableExtra::row_spec(0, bold = TRUE, background = "#D9D9D9") %>%
  kableExtra::row_spec(nrow(tabla_final), bold = TRUE, background = "#D9D9D9") %>%
  kableExtra::footnote(general = "Fuente: Oil, Gas & Other Regulated Wells: Beginning 1860.", general_title = "")
Cuadro N.° 1. Distribución de frecuencias absolutas, relativas y porcentuales de los pozos de petróleo, gas y otros regulados, según región, estado de Nueva York, EE. UU., registros desde 1860.
Región Frecuencia absoluta (ni) Frecuencia relativa (hi) Frecuencia porcentual (pi %)
9 39894 0.8421 84.21
8 5206 0.1099 10.99
7 1684 0.0355 3.55
2 247 0.0052 0.52
6 114 0.0024 0.24
3 112 0.0024 0.24
4 96 0.0020 0.20
5 19 0.0004 0.04
1 4 0.0001 0.01
Total 47376 1.0000 100.00
Fuente: Oil, Gas & Other Regulated Wells: Beginning 1860.

5 Representación gráfica

5.1 Diagrama de barras de frecuencias absolutas

ggplot(datos_grafico, aes(x = grupo, y = n_i, fill = grupo)) +
  geom_col(width = 0.7) +
  geom_text(aes(label = scales::comma(n_i)), vjust = -0.4, size = 4) +
  scale_fill_manual(values = colores) +
  scale_y_continuous(labels = scales::comma, expand = expansion(mult = c(0, 0.15))) +
  labs(title = "Gráfico N.° 5.1. Distribución de pozos regulados según región, Nueva York, EE. UU., registros desde 1860", x = "Región",
       y = "Número de pozos", caption = fuente_grafico) + tema_grafico

5.2 Diagrama de barras porcentual

ggplot(datos_grafico, aes(x = grupo, y = p_i, fill = grupo)) +
  geom_col(width = 0.7) +
  geom_text(aes(label = sprintf("%.2f%%", p_i)), vjust = -0.4, size = 4) +
  scale_fill_manual(values = colores) +
  scale_y_continuous(labels = function(x) paste0(x, "%"), expand = expansion(mult = c(0, 0.15))) +
  labs(title = "Gráfico N.° 5.2. Distribución porcentual de pozos regulados según región, Nueva York, EE. UU., registros desde 1860", x = "Región",
       y = "Porcentaje de pozos (%)", caption = fuente_grafico) + tema_grafico

5.3 Diagrama circular porcentual

ggplot(datos_grafico, aes(x = "", y = p_i, fill = grupo)) +
  geom_col(width = 1, color = "white") +
  coord_polar(theta = "y") +
  scale_fill_manual(values = colores) +
  geom_text(aes(label = ifelse(p_i >= 3, sprintf("%.2f%%", p_i), "")),
            position = position_stack(vjust = 0.5), size = 3.7, color = "white", fontface = "bold") +
  labs(title = "Gráfico N.° 5.3. Participación porcentual de pozos regulados según región, Nueva York, EE. UU., registros desde 1860", fill = "Región",
       caption = fuente_grafico) +
  theme_void(base_family = "serif") +
  theme(plot.title = element_text(face = "bold", color = "#800021", hjust = 0.5),
        legend.position = "right", plot.caption = element_text(hjust = 0, size = 9))

6 Tabla de indicadores

frecuencia_maxima <- max(tabla_frec$n_i)
modas <- tabla_frec %>% filter(n_i == frecuencia_maxima)
moda_texto <- paste(modas$region, collapse = ", ")
porcentaje_moda <- 100 * frecuencia_maxima / n_validas
tabla_indicadores <- tibble(
  Indicador = c("Tamaño muestral (n)", "Número de categorías", "Moda",
                "Frecuencia de la moda", "Porcentaje de la moda"),
  Valor = c(scales::comma(n_validas), as.character(nrow(tabla_frec)), moda_texto,
            scales::comma(frecuencia_maxima), sprintf("%.2f%%", porcentaje_moda))
)
tabla_indicadores %>%
  knitr::kable(format = "html", align = c("l", "l"),
    caption = "Cuadro N.° 2. Indicadores estadísticos de la variable cualitativa nominal Región, calculados a partir de los pozos de petróleo, gas y otros regulados, estado de Nueva York, EE. UU., registros desde 1860.") %>%
  kableExtra::kable_styling(bootstrap_options = c("striped", "condensed"), full_width = FALSE,
                            position = "center") %>%
  kableExtra::row_spec(0, bold = TRUE, color = "white", background = "#1E4967") %>%
  kableExtra::footnote(general = "Fuente: Oil, Gas & Other Regulated Wells: Beginning 1860.", general_title = "")
Cuadro N.° 2. Indicadores estadísticos de la variable cualitativa nominal Región, calculados a partir de los pozos de petróleo, gas y otros regulados, estado de Nueva York, EE. UU., registros desde 1860.
Indicador Valor
Tamaño muestral (n) 47,376
Número de categorías 9
Moda 9
Frecuencia de la moda 39,894
Porcentaje de la moda 84.21%
Fuente: Oil, Gas & Other Regulated Wells: Beginning 1860.

7 Conclusión

La variable Región es cualitativa nominal y presenta 9 categorías en 47,376 registros válidos. La moda corresponde a 9, con una frecuencia de 39,894 pozos (84.21% del total). El análisis permite identificar la concentración de registros por región.

Autor: Jennifer Cordones