Para iniciar el procesamiento estadístico inferencial, se verifica la estructura global del conjunto de datos correspondientes a los bloques contractuales y arrendamientos de hidrocarburos en el estado de Kansas.
# Selección manual del archivo
datos <- read_csv(file.choose(), show_col_types = FALSE)
cat("Base de datos cargada correctamente.\n")
## Base de datos cargada correctamente.
cat("Total de registros evaluados (filas):", nrow(datos), "\n")
## Total de registros evaluados (filas): 47757
Se realiza el aislamiento de la variable cualitativa ordinal Nivel de Profundidad (PROFUNDIDAD), clasificada en tres niveles: Superficial, Medio y Profundo, según los valores registrados en la columna DEPTH_LEVEL.
Clasificación en tres categorías ordinales:
datos <- datos %>%
mutate(
PROFUNDIDAD = case_when(
DEPTH_LEVEL == "SHALLOW" ~ "Superficial",
DEPTH_LEVEL == "MEDIUM" ~ "Medio",
DEPTH_LEVEL == "DEEP" ~ "Profundo",
TRUE ~ "No registrado"
)
) %>%
filter(PROFUNDIDAD != "No registrado")
Se calcula la distribución de frecuencias absolutas (\(n_i\)) y porcentuales (\(h_i\%\)) para las tres categorías de la variable cualitativa ordinal, respetando la estructura de tres columnas estipulada por la cátedra.
# 1. Frecuencias absolutas
frecuencias_base <- datos %>%
mutate(PROFUNDIDAD = factor(PROFUNDIDAD, levels = c("Superficial", "Medio", "Profundo"))) %>%
group_by(Nivel_Profundidad = PROFUNDIDAD, .drop = FALSE) %>%
summarise(Frecuencia_ni = n(), .groups = "drop") %>%
arrange(Nivel_Profundidad)
# 2. Porcentaje
tabla_final <- frecuencias_base %>%
mutate(Porcentaje_hi = (Frecuencia_ni / sum(Frecuencia_ni)) * 100)
# 3. Fila TOTAL
total_fila <- data.frame(
Nivel_Profundidad = "TOTAL",
Frecuencia_ni = sum(tabla_final$Frecuencia_ni),
Porcentaje_hi = sum(tabla_final$Porcentaje_hi)
)
# 4. Formateo
resultado <- bind_rows(
tabla_final %>% mutate(Porcentaje_hi = sprintf("%.2f", Porcentaje_hi)),
total_fila %>% mutate(Porcentaje_hi = sprintf("%.2f", Porcentaje_hi))
)
# 5. Tabla final
kable(
resultado,
caption = "Tabla N°1 de Distribución de Frecuencias de la Variable Cualitativa Ordinal: Nivel de Profundidad",
col.names = c("Nivel de Profundidad", "Frecuencia (ni)", "Porcentaje (hi%)"),
align = c("l", "c", "c")
)
| Nivel de Profundidad | Frecuencia (ni) | Porcentaje (hi%) |
|---|---|---|
| Superficial | 15986 | 33.47 |
| Medio | 15852 | 33.19 |
| Profundo | 15919 | 33.33 |
| TOTAL | 47757 | 100.00 |
Se presentan tres gráficas en escala de grises que permiten analizar visualmente la distribución de la variable cualitativa ordinal Nivel de Profundidad de los Pozos.
par(mar = c(8, 6, 5, 2))
barplot(tabla_final$Frecuencia_ni,
main = "",
xlab = "",
ylab = "",
col = c("gray30", "gray60", "gray85"),
ylim = c(0, max(tabla_final$Frecuencia_ni) * 1.15),
names.arg = as.character(tabla_final$Nivel_Profundidad),
cex.names = 0.9,
las = 2)
mtext("Frecuencia (ni)", side = 2, line = 4.5, cex = 1, font = 1)
mtext("Nivel de Profundidad", side = 1, line = 6, cex = 1)
mtext("Gráfica N°1: Distribución de Frecuencias Absolutas por Nivel de Profundidad de los Pozos",
side = 3, line = 2, adj = 0.5, cex = 0.9, font = 2)
par(mar = c(8, 6, 5, 2))
bp2 <- barplot(tabla_final$Porcentaje_hi,
main = "",
xlab = "",
ylab = "Porcentaje %",
col = c("gray30", "gray60", "gray85"),
ylim = c(0, max(tabla_final$Porcentaje_hi) * 1.2),
names.arg = as.character(tabla_final$Nivel_Profundidad),
cex.names = 0.9,
las = 2)
mtext("Nivel de Profundidad", side = 1, line = 6, cex = 1)
mtext("Gráfica N°2: Distribución Porcentual por Nivel de Profundidad de los Pozos",
side = 3, line = 2, adj = 0.5, cex = 0.9, font = 2)
text(x = bp2,
y = tabla_final$Porcentaje_hi,
labels = paste0(round(tabla_final$Porcentaje_hi, 2), "%"),
pos = 3, cex = 0.9, col = "black")
par(mar = c(5, 2, 4, 10), xpd = TRUE)
colores_grises <- c("gray30", "gray60", "gray85")
pie(tabla_final$Porcentaje_hi,
main = "",
radius = 1,
labels = paste0(round(tabla_final$Porcentaje_hi, 2), "%"),
col = colores_grises,
cex = 0.9)
mtext("Gráfica N°3: Distribución Porcentual por Nivel de Profundidad de los Pozos",
side = 3, line = 2, adj = 0.5, cex = 0.9, font = 2)
legend(x = 1.2,
y = 1,
legend = as.character(tabla_final$Nivel_Profundidad),
fill = colores_grises,
cex = 0.85,
title = "Nivel de Profundidad",
bty = "n")
Para la variable cualitativa ordinal Nivel de Profundidad, los indicadores numéricos de tendencia central se limitan a la moda, ya que la media, mediana, varianza y demás medidas de dispersión no aplican para este tipo de variable.
# Moda: categoría con mayor frecuencia
moda_profundidad <- as.character(tabla_final$Nivel_Profundidad[which.max(tabla_final$Frecuencia_ni)])
# Tabla de indicadores
tabla_indicadores <- data.frame(
"Variable" = "Nivel de Profundidad",
"Rango" = "Superficial, Medio, Profundo",
"Media (X)" = "-",
"Mediana (Me)" = "-",
"Moda (Mo)" = moda_profundidad,
"Varianza (V)" = "-",
"Desv. Est. (Sd)"= "-",
"C.V. (%)" = "-",
"Asimetría (As)" = "-",
"Curtosis (K)" = "-",
check.names = FALSE
)
# Tabla GT de indicadores
tabla_indicadores_gt <- tabla_indicadores %>%
gt() %>%
tab_header(
title = md("**Tabla N°2 de Indicadores Estadísticos: Nivel de Profundidad de los Pozos**")
) %>%
tab_source_note(source_note = "Autor: Fernando Almeida") %>%
tab_options(
column_labels.background.color = "#F0F0F0",
heading.title.font.size = px(15)
)
tabla_indicadores_gt
| Tabla N°2 de Indicadores Estadísticos: Nivel de Profundidad de los Pozos | |||||||||
| Variable | Rango | Media (X) | Mediana (Me) | Moda (Mo) | Varianza (V) | Desv. Est. (Sd) | C.V. (%) | Asimetría (As) | Curtosis (K) |
|---|---|---|---|---|---|---|---|---|---|
| Nivel de Profundidad | Superficial, Medio, Profundo | - | - | Superficial | - | - | - | - | - |
| Autor: Fernando Almeida | |||||||||
Autor: Fernando Almeida