Tabla de Distribución
de Frecuencia
Tabla de distribución de frecuencias.
Tabla General
TDF_Mesa <- data.frame(
Li = round(breaks_table[1:K], 2),
Ls = round(breaks_table[2:(K+1)], 2),
MC = round((breaks_table[1:K] + breaks_table[2:(K+1)]) / 2, 2),
ni = ni,
hi = hi,
Ni_asc = Ni_asc,
Ni_desc = Ni_desc,
Hi_asc = Hi_asc,
Hi_desc = Hi_desc
)
TDF_Mesa %>%
gt(rowname_col = "Li") %>%
tab_header(
title = md("**DISTRIBUCIÓN DE FRECUENCIAS: ELEV_MESA_ROT**"),
subtitle = md("Variable: **elev_mesa_rot**")
) %>%
tab_source_note(source_note = "Fuente: Datos ANP 2018") %>%
grand_summary_rows(
columns = c(ni, hi),
fns = list("TOTAL" = ~sum(., na.rm = TRUE))
) %>%
fmt_number(
columns = c(ni, Ni_asc, Ni_desc),
decimals = 0,
use_seps = TRUE
) %>%
fmt_number(
columns = c(hi, Hi_asc, Hi_desc),
decimals = 2
) %>%
cols_label(
Ls = "Lím. Sup", MC = "Marca Clase (Xi)",
ni = "ni", hi = "hi (%)",
Ni_asc = "Ni (Asc)", Ni_desc = "Ni (Desc)",
Hi_asc = "Hi (Asc)", Hi_desc = "Hi (Desc)"
) %>%
tab_stubhead(label = "Lím. Inf") %>%
cols_align(align = "center", columns = everything()) %>%
tab_style(
style = cell_text(align = "center"),
locations = cells_stub()
) %>%
tab_style(
style = list(cell_fill(color = "#1F4E5B"), cell_text(color = "white", weight = "bold")),
locations = list(cells_title(), cells_column_labels(), cells_stubhead())
) %>%
tab_options(
table.border.top.style = "none",
table.border.bottom.color = "#2E4053",
column_labels.border.bottom.color = "#2E4053",
data_row.padding = px(6)
)
| DISTRIBUCIÓN DE FRECUENCIAS: ELEV_MESA_ROT |
| Variable: elev_mesa_rot |
| Lím. Inf |
Lím. Sup |
Marca Clase (Xi) |
ni |
hi (%) |
Ni (Asc) |
Ni (Desc) |
Hi (Asc) |
Hi (Desc) |
| 0.00 |
66.27 |
33.13 |
20,359 |
70.60 |
20,359 |
28,838 |
70.60 |
100.00 |
| 66.27 |
132.53 |
99.40 |
6,242 |
21.65 |
26,601 |
8,479 |
92.24 |
29.40 |
| 132.53 |
198.80 |
165.67 |
1,531 |
5.31 |
28,132 |
2,237 |
97.55 |
7.76 |
| 198.80 |
265.07 |
231.93 |
403 |
1.40 |
28,535 |
706 |
98.95 |
2.45 |
| 265.07 |
331.33 |
298.20 |
65 |
0.23 |
28,600 |
303 |
99.17 |
1.05 |
| 331.33 |
397.60 |
364.47 |
69 |
0.24 |
28,669 |
238 |
99.41 |
0.83 |
| 397.60 |
463.87 |
430.73 |
22 |
0.08 |
28,691 |
169 |
99.49 |
0.59 |
| 463.87 |
530.13 |
497.00 |
19 |
0.07 |
28,710 |
147 |
99.56 |
0.51 |
| 530.13 |
596.40 |
563.27 |
25 |
0.09 |
28,735 |
128 |
99.64 |
0.44 |
| 596.40 |
662.67 |
629.53 |
21 |
0.07 |
28,756 |
103 |
99.72 |
0.36 |
| 662.67 |
728.93 |
695.80 |
19 |
0.07 |
28,775 |
82 |
99.78 |
0.28 |
| 728.93 |
795.20 |
762.07 |
15 |
0.05 |
28,790 |
63 |
99.83 |
0.22 |
| 795.20 |
861.47 |
828.33 |
27 |
0.09 |
28,817 |
48 |
99.93 |
0.17 |
| 861.47 |
927.73 |
894.60 |
14 |
0.05 |
28,831 |
21 |
99.98 |
0.07 |
| 927.73 |
994.00 |
960.87 |
7 |
0.02 |
28,838 |
7 |
100.00 |
0.02 |
| TOTAL |
— |
— |
28838 |
100 |
— |
— |
— |
— |
| Fuente: Datos ANP 2018 |
Tabla
Simplificada
min_val <- 0
max_val <- ceiling(max(Variable) / 100) * 100
breaks_table <- seq(min_val, max_val, by = 100)
K <- length(breaks_table) - 1
ni <- as.vector(table(cut(Variable, breaks = breaks_table, include.lowest = TRUE, right = FALSE)))
hi <- (ni / sum(ni)) * 100
Ni_asc <- cumsum(ni)
Ni_desc <- rev(cumsum(rev(ni)))
Hi_asc <- cumsum(hi)
Hi_desc <- rev(cumsum(rev(hi)))
TDF_Mesa <- data.frame(
Li = round(breaks_table[1:K], 2),
Ls = round(breaks_table[2:(K+1)], 2),
MC = round((breaks_table[1:K] + breaks_table[2:(K+1)]) / 2, 2),
ni = ni,
hi = hi,
Ni_asc = Ni_asc,
Ni_desc = Ni_desc,
Hi_asc = Hi_asc,
Hi_desc = Hi_desc
)
TDF_Mesa %>%
gt(rowname_col = "Li") %>%
tab_header(
title = md("**DISTRIBUCIÓN DE FRECUENCIAS SIMPLIFICADA: ELEV_MESA_ROT**"),
subtitle = md("Variable: **elev_mesa_rot**")
) %>%
tab_source_note(source_note = "Fuente: Datos ANP 2018") %>%
grand_summary_rows(
columns = c(ni, hi),
fns = list("TOTAL" = ~sum(., na.rm = TRUE))
) %>%
fmt_number(
columns = c(ni, Ni_asc, Ni_desc),
decimals = 0,
use_seps = TRUE
) %>%
fmt_number(
columns = c(hi, Hi_asc, Hi_desc),
decimals = 2
) %>%
cols_label(
Ls = "Lím. Sup", MC = "Marca Clase (Xi)",
ni = "ni", hi = "hi (%)",
Ni_asc = "Ni (Asc)", Ni_desc = "Ni (Desc)",
Hi_asc = "Hi (Asc)", Hi_desc = "Hi (Desc)"
) %>%
tab_stubhead(label = "Lím. Inf") %>%
cols_align(align = "center", columns = everything()) %>%
tab_style(
style = cell_text(align = "center"),
locations = cells_stub()
) %>%
tab_style(
style = list(cell_fill(color = "#1F4E5B"), cell_text(color = "white", weight = "bold")),
locations = list(cells_title(), cells_column_labels(), cells_stubhead())
) %>%
tab_options(
table.border.top.style = "none",
table.border.bottom.color = "#2E4053",
column_labels.border.bottom.color = "#2E4053",
data_row.padding = px(6)
)
| DISTRIBUCIÓN DE FRECUENCIAS SIMPLIFICADA: ELEV_MESA_ROT |
| Variable: elev_mesa_rot |
| Lím. Inf |
Lím. Sup |
Marca Clase (Xi) |
ni |
hi (%) |
Ni (Asc) |
Ni (Desc) |
Hi (Asc) |
Hi (Desc) |
| 0 |
100 |
50 |
24,204 |
83.93 |
24,204 |
28,838 |
83.93 |
100.00 |
| 100 |
200 |
150 |
3,944 |
13.68 |
28,148 |
4,634 |
97.61 |
16.07 |
| 200 |
300 |
250 |
425 |
1.47 |
28,573 |
690 |
99.08 |
2.39 |
| 300 |
400 |
350 |
98 |
0.34 |
28,671 |
265 |
99.42 |
0.92 |
| 400 |
500 |
450 |
32 |
0.11 |
28,703 |
167 |
99.53 |
0.58 |
| 500 |
600 |
550 |
33 |
0.11 |
28,736 |
135 |
99.65 |
0.47 |
| 600 |
700 |
650 |
30 |
0.10 |
28,766 |
102 |
99.75 |
0.35 |
| 700 |
800 |
750 |
24 |
0.08 |
28,790 |
72 |
99.83 |
0.25 |
| 800 |
900 |
850 |
31 |
0.11 |
28,821 |
48 |
99.94 |
0.17 |
| 900 |
1000 |
950 |
17 |
0.06 |
28,838 |
17 |
100.00 |
0.06 |
| TOTAL |
— |
— |
28838 |
100 |
— |
— |
— |
— |
| Fuente: Datos ANP 2018 |
Gráficas De
Distribución De Frecuencias
col_gris_azulado <- "#5D6D7E"
col_ejes <- "#2E4053"
max_var <- max(Variable)
breaks_50 <- seq(0, max_var + 50, by = 100)
limite_x <- c(0, max(max_var, 100))
GRÁFICO 1: Histograma
Absoluto
par(mar = c(8, 5, 4, 2))
hist(Variable,
breaks = breaks_50,
main = "Gráfica No.1: Distribución de Mesa Rotatoria (elev_mesa_rot)",
xlab = "Mesa Rotatoria - elev_mesa_rot (m)",
ylab = "Frecuencia Absoluta",
col = col_gris_azulado,
border = "white",
axes = FALSE,
ylim = c(0, max(table(cut(Variable, breaks = breaks_50, include.lowest = TRUE, right = FALSE))) * 1.1),
xlim = limite_x)
axis(1, at = seq(0, limite_x[2], by = 100), las = 2, cex.axis = 0.7)
axis(2)
grid(nx = NA, ny = NULL, col = "#D7DBDD", lty = "dotted")

GRÁFICO 2: Histograma
Global
par(mar = c(8, 5, 4, 2))
hist(Variable,
breaks = breaks_50,
main = "Gráfica N°2: Distribución de Mesa Rotatoria (elev_mesa_rot)l",
xlab = "Mesa Rotatoria - elev_mesa_rot (m)",
ylab = "Total Pozos",
col = col_gris_azulado,
border = "white",
axes = FALSE,
ylim = c(0, length(Variable)),
xlim = limite_x)
axis(1, at = seq(0, limite_x[2], by = 100), las = 2, cex.axis = 0.7)
axis(2)
grid(nx = NA, ny = NULL, col = "#D7DBDD", lty = "dotted")

GRÁFICO 3:
Porcentajes (Local)
par(mar = c(8, 5, 4, 2))
h_base_g3 <- hist(Variable, breaks = breaks_50, plot = FALSE)
h_base_g3$counts <- (h_base_g3$counts / length(Variable)) * 100
plot(h_base_g3,
main = "Gráfica N°3: Distribución Porcentual de Mesa Rotatoria (elev_mesa_rot)",
xlab = "Mesa Rotatoria - elev_mesa_rot (m)", ylab = "Porcentaje (%)",
col = col_gris_azulado, border = "white", axes = FALSE, freq = TRUE,
ylim = c(0, 60),
xlim = limite_x)
axis(1, at = seq(0, limite_x[2], by = 100), las = 2, cex.axis = 0.7)
axis(2)
text(x = h_base_g3$mids[h_base_g3$mids <= limite_x[2]],
y = h_base_g3$counts[h_base_g3$mids <= limite_x[2]],
label = paste0(round(h_base_g3$counts[h_base_g3$mids <= limite_x[2]], 1), "%"),
pos = 3, cex = 0.6, col = col_ejes)

GRÁFICO 4: Global
Porcentual
par(mar = c(8, 5, 4, 2))
# 1. Creamos el histograma base para porcentajes
h_base_g4 <- hist(Variable, breaks = breaks_50, plot = FALSE)
h_base_g4$counts <- (h_base_g4$counts / length(Variable)) * 100
# 2. Dibujamos directamente con hist
plot(h_base_g4,
main = "Gráfica No.4: Distribución Porcentual de Mesa Rotatoria (elev_mesa_rot)",
xlab = "Mesa Rotatoria - elev_mesa_rot (m)", ylab = "% del Total",
col = col_gris_azulado, border = "white", axes = FALSE, freq = TRUE,
ylim = c(0, 100),
xlim = limite_x)
axis(1, at = seq(0, limite_x[2], by = 100), las = 2, cex.axis = 0.7)
axis(2)
text(x = h_base_g4$mids[h_base_g4$mids <= limite_x[2]],
y = h_base_g4$counts[h_base_g4$mids <= limite_x[2]],
label = paste0(round(h_base_g4$counts[h_base_g4$mids <= limite_x[2]], 1), "%"),
pos = 3, cex = 0.6, col = col_ejes)

GRÁFICO 5:
Boxplot
col_gris_azulado <- "#5D6D7E"
col_acento <- "#C0392B"
par(mar = c(8, 5, 4, 2))
boxplot(Variable, horizontal = TRUE, col = col_gris_azulado,
main = "Gráfica No.5: Diagrama de Caja (elev_mesa_rot)",
xlab = "Mesa Rotatoria - elev_mesa_rot (m)", outline = TRUE, outpch = 19,
outcol = col_acento, axes = FALSE, xlim = c(0.7, 1.3),
ylim = limite_x)
axis(1, at = seq(0, limite_x[2], by = 100), las = 2, cex.axis = 0.7)
box()

GRÁFICO 6:
Ojivas
col_azul_oscuro <- "#2E4053"
col_rojo_fuerte <- "#C0392B"
par(mar = c(8, 5, 4, 8), xpd = TRUE)
x_vals_ojiva <- breaks_table
plot(x_vals_ojiva, c(0, Ni_asc), type = "o", col = col_azul_oscuro,
lwd=2, pch=19, axes=F,
main = "Gráfica No.6: Ojivas Ascendente y Descendente (elev_mesa_rot)",
xlab = "Mesa Rotatoria - elev_mesa_rot (m)", ylab = "Frecuencia acumulada")
lines(x_vals_ojiva, c(Ni_desc, 0), type = "o", col = col_rojo_fuerte,
lwd=2, pch=19)
axis(1, at = seq(0, max(breaks_table), by = 100), las = 2, cex.axis = 0.6)
axis(2)
legend("right", legend = c("Ascendente", "Descendente"),
col = c(col_azul_oscuro, col_rojo_fuerte),
lty = 1, pch = 19, cex = 0.7, lwd=2,
inset = c(-0.15, 0), bty="n")
grid()

Indicadores
Estadísticos
media_val <- mean(Variable)
mediana_val <- median(Variable)
sd_val <- sd(Variable)
status_atipicos <- if(length(boxplot.stats(Variable)$out) > 0) {
paste0(length(boxplot.stats(Variable)$out), " [", round(min(boxplot.stats(Variable)$out), 2), "; ", round(max(boxplot.stats(Variable)$out), 2), "]")
} else { "0 (Sin atípicos)" }
df_resumen <- data.frame(
Variable = "elev_mesa_rot",
Rango = paste0("[", round(min(Variable), 2), "; ", round(max(Variable), 2), "]"),
X = media_val,
Me = mediana_val,
Mo = paste(round(TDF_Mesa$MC[TDF_Mesa$hi == max(TDF_Mesa$hi)], 2), collapse = ", "),
Varianza = var(Variable),
sd = sd_val,
CV = (sd_val / abs(media_val)) * 100,
As = skewness(Variable, type = 2),
K = kurtosis(Variable, type = 2),
Atipicos = status_atipicos
)
df_resumen %>%
gt() %>%
tab_header(title = md("CONCLUSIONES Y ESTADÍSTICOS"), subtitle = "Variable: elev_mesa_rot") %>%
cols_label(
X = "X",
Me = "Me",
Mo = "Mo",
sd = "sd",
CV = "CV",
As = "As",
K = "K",
Atipicos = "Valores atípicos"
) %>%
fmt_number(columns = c(X, Me, Varianza, sd, CV, K), decimals = 2) %>%
fmt_number(columns = As, decimals = 4) %>%
cols_width(
Variable ~ px(140),
Rango ~ px(110),
Mo ~ px(100),
Atipicos ~ px(140),
everything() ~ px(85)
) %>%
tab_options(
column_labels.background.color = "#2E4053",
table.border.top.style = "solid",
table.border.bottom.style = "solid",
heading.border.bottom.style = "solid",
column_labels.border.top.style = "solid",
column_labels.border.bottom.style = "solid",
data_row.padding = px(8)
) %>%
tab_style(
style = list(
cell_text(weight = "bold", color = "white"),
cell_borders(sides = c("left", "right"), color = "#D3D3D3", weight = px(1))
),
locations = cells_column_labels()
) %>%
tab_style(
style = cell_borders(sides = c("left", "right"), color = "#D3D3D3", weight = px(1)),
locations = cells_body()
)
| CONCLUSIONES Y ESTADÍSTICOS |
| Variable: elev_mesa_rot |
| Variable |
Rango |
X |
Me |
Mo |
Varianza |
sd |
CV |
As |
K |
Valores atípicos |
| elev_mesa_rot |
[0; 994] |
56.16 |
32.00 |
50 |
4,829.68 |
69.50 |
123.76 |
5.4490 |
49.24 |
1269 [164.79; 994] |