library(readxl)
Produccio_n_Campo_Sacha_csv <- read_excel("Producción Campo Sacha.csv.xlsx")
View(Produccio_n_Campo_Sacha_csv)
str(Produccio_n_Campo_Sacha_csv)
## tibble [8,344 × 31] (S3: tbl_df/tbl/data.frame)
## $ mes : chr [1:8344] "Ene" "Ene" "Ene" "Ene" ...
## $ día : num [1:8344] 1 1 1 1 1 1 1 1 1 1 ...
## $ Pozo : chr [1:8344] "SACHA-001A" "SACHA-019A" "SACHA-052B" "SACHA-083A" ...
## $ Campo : chr [1:8344] "SACHA" "SACHA" "SACHA" "SACHA" ...
## $ Reservorio : chr [1:8344] "U" "U" "U INFERIOR" "HOLLIN INFERIOR" ...
## $ Bpd : num [1:8344] NA 53 249 139 186 136 NA 456 161 164 ...
## $ Bppd_BH : num [1:8344] 159 NA NA NA NA NA 155 NA NA NA ...
## $ Bfpd_BE : num [1:8344] NA 534 346 1158 1163 ...
## $ Bfpd_BH : num [1:8344] 695 NA NA NA NA NA 441 NA NA NA ...
## $ Bapd_BE : num [1:8344] NA 481 97 1019 977 ...
## $ Bapd_BH : num [1:8344] 536 NA NA NA NA NA 286 NA NA NA ...
## $ Bsw_BE : num [1:8344] NA 90.1 28 88 84 ...
## $ Bsw_BH : num [1:8344] 77.1 NA NA NA NA ...
## $ Api_BE : num [1:8344] NA 26.7 27.8 27.7 24 20.5 NA 28.5 29.9 26.3 ...
## $ Api_BH : num [1:8344] 27.8 NA NA NA NA NA 23.2 NA NA NA ...
## $ Gas_BE : num [1:8344] NA 10.76 50.55 1.11 27.9 ...
## $ Gas_BH : num [1:8344] 32.3 NA NA NA NA ...
## $ Salinidad_BE : num [1:8344] NA 15920 30227 1600 13000 ...
## $ Salinidad_BH : num [1:8344] 10800 NA NA NA NA NA 3800 NA NA NA ...
## $ Rgl_BE : num [1:8344] NA 20.15 146.1 0.96 23.99 ...
## $ Rgl_BH : num [1:8344] 46.5 NA NA NA NA ...
## $ Gor_BE : num [1:8344] NA 203.02 203.01 7.99 150 ...
## $ Gor_BH : num [1:8344] 203 NA NA NA NA ...
## $ Horas_BE : num [1:8344] NA 4 5 4 4 10 NA 4 10 10 ...
## $ Horas_BH : num [1:8344] 4 NA NA NA NA NA 4 NA NA NA ...
## $ Bomba_BE : chr [1:8344] NA "SF-320|SF-320|SF-900|SFGH2500/520/180/9259" "RC 1000|RC 1000|RC 1000/300/120/9250" "P23/68/30/7000" ...
## $ Bomba_BH : chr [1:8344] "JET 12K/0//0" NA NA NA ...
## $ Frecuencia Operaciones: num [1:8344] NA 65 62 46 59 52 NA 58.5 57 54 ...
## $ Voltaje : num [1:8344] NA 479 457 364 440 452 NA 475 455 439 ...
## $ Amperaje : num [1:8344] NA 29 35 14 59 30 NA 23 35 34 ...
## $ Presión Intake : num [1:8344] NA 484 406 0 345 162 NA 546 338 0 ...
# 1 Extraer la variable continua
frecuencia_operaciones <- Produccio_n_Campo_Sacha_csv$`Frecuencia Operaciones`
frecuencia_operaciones <- as.numeric(frecuencia_operaciones)
frecuencia_operaciones <- na.omit(frecuencia_operaciones)
k <- 1 + (3.3 * log10(length(frecuencia_operaciones)))
k <- floor(k)
min <- min(frecuencia_operaciones)
max <- max(frecuencia_operaciones)
R <- max - min
A <- R / k
# Líneas EXACTAS del ejemplo del enlace:
Li <- round(seq(from = min, to = max - A, by = A), 4)
Ls <- round(seq(from = min + A, to = max, by = A), 4)
MC <- round((Li + Ls) / 2, 2)
ni <- numeric(length(Li))
for (i in 1:length(Li)) {
ni[i] <- sum(frecuencia_operaciones >= Li[i] & frecuencia_operaciones < Ls[i])
}
ni[length(Li)] <- sum(frecuencia_operaciones >= Li[length(Li)] & frecuencia_operaciones <= max)
cat("Suma de ni =", sum(ni), "\n")
## Suma de ni = 7705
hi <- ni / sum(ni) * 100
cat("Suma de hi =", sum(hi), "\n")
## Suma de hi = 100
Niasc <- cumsum(ni)
Nidsc <- rev(cumsum(rev(ni)))
Hiasc <- round(cumsum(hi))
Hidsc <- round(rev(cumsum(rev(hi))))
TDFFrecuencia <- data.frame(Li, Ls, MC, ni, hi, Niasc, Nidsc, Hiasc, Hidsc)
library(gt)
library(dplyr)
##
## Adjuntando el paquete: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
tabla1_sturges <- TDFFrecuencia %>%
gt() %>%
tab_header(
title = md("*Tabla 1: Distribución de Frecuencias*"),
subtitle = md("**Método Sturges - Variable: Frecuencia Operaciones**")
) %>%
tab_source_note(
source_note = md("Campo Sacha")
) %>%
cols_label(
Li = "L. Inferior",
Ls = "L. Superior",
MC = "Marca Clase",
ni = "Frec. Abs.",
hi = "Frec. Rel. %",
Niasc = "Ni Asc.",
Nidsc = "Ni Desc.",
Hiasc = "Hi Asc. %",
Hidsc = "Hi Desc. %"
) %>%
fmt_number(
columns = c(Li, Ls, MC),
decimals = 2
) %>%
fmt_number(
columns = c(hi),
decimals = 2,
pattern = "{x}%"
)
cat("\n=== TABLA 1: MÉTODO STURGES ===\n")
##
## === TABLA 1: MÉTODO STURGES ===
tabla1_sturges
| Tabla 1: Distribución de Frecuencias | ||||||||
| Método Sturges - Variable: Frecuencia Operaciones | ||||||||
| L. Inferior | L. Superior | Marca Clase | Frec. Abs. | Frec. Rel. % | Ni Asc. | Ni Desc. | Hi Asc. % | Hi Desc. % |
|---|---|---|---|---|---|---|---|---|
| 35.00 | 46.00 | 40.50 | 125 | 1.62% | 125 | 7705 | 2 | 100 |
| 46.00 | 57.00 | 51.50 | 3602 | 46.75% | 3727 | 7580 | 48 | 98 |
| 57.00 | 68.00 | 62.50 | 2898 | 37.61% | 6625 | 3978 | 86 | 52 |
| 68.00 | 79.00 | 73.50 | 17 | 0.22% | 6642 | 1080 | 86 | 14 |
| 79.00 | 90.00 | 84.50 | 37 | 0.48% | 6679 | 1063 | 87 | 14 |
| 90.00 | 101.00 | 95.50 | 149 | 1.93% | 6828 | 1026 | 89 | 13 |
| 101.00 | 112.00 | 106.50 | 272 | 3.53% | 7100 | 877 | 92 | 11 |
| 112.00 | 123.00 | 117.50 | 269 | 3.49% | 7369 | 605 | 96 | 8 |
| 123.00 | 134.00 | 128.50 | 66 | 0.86% | 7435 | 336 | 96 | 4 |
| 134.00 | 145.00 | 139.50 | 192 | 2.49% | 7627 | 270 | 99 | 4 |
| 145.00 | 156.00 | 150.50 | 49 | 0.64% | 7676 | 78 | 100 | 1 |
| 156.00 | 167.00 | 161.50 | 2 | 0.03% | 7678 | 29 | 100 | 0 |
| 167.00 | 178.00 | 172.50 | 27 | 0.35% | 7705 | 27 | 100 | 0 |
| Campo Sacha | ||||||||
total_ni <- sum(TDFFrecuencia$ni)
total_hi <- 100
TDFFrecuenciaCompleto <- rbind(
TDFFrecuencia,
data.frame(
Li = " Total",
Ls = " ",
MC = " ",
ni = total_ni,
hi = total_hi,
Niasc = " ",
Nidsc = " ",
Hiasc = " ",
Hidsc = " "
)
)
tabla2_con_total <- TDFFrecuenciaCompleto %>%
gt() %>%
tab_header(
title = md("*Tabla 2: Distribución Completa*"),
subtitle = md("**Variable: Frecuencia Operaciones - Con Total**")
) %>%
tab_source_note(
source_note = md("Fuente: Producción Campo Sacha")
) %>%
tab_style(
style = cell_text(weight = "bold"),
locations = cells_body(rows = Li == " Total")
) %>%
cols_label(
Li = "L. Inferior",
Ls = "L. Superior",
MC = "Marca Clase",
ni = "Frec. Abs.",
hi = "Frec. Rel. %",
Niasc = "Ni Asc.",
Nidsc = "Ni Desc.",
Hiasc = "Hi Asc. %",
Hidsc = "Hi Desc. %"
)
cat("\n=== TABLA 2: CON FILA DE TOTAL ===\n")
##
## === TABLA 2: CON FILA DE TOTAL ===
tabla2_con_total
| Tabla 2: Distribución Completa | ||||||||
| Variable: Frecuencia Operaciones - Con Total | ||||||||
| L. Inferior | L. Superior | Marca Clase | Frec. Abs. | Frec. Rel. % | Ni Asc. | Ni Desc. | Hi Asc. % | Hi Desc. % |
|---|---|---|---|---|---|---|---|---|
| 35 | 46 | 40.5 | 125 | 1.62232317 | 125 | 7705 | 2 | 100 |
| 46 | 57 | 51.5 | 3602 | 46.74886437 | 3727 | 7580 | 48 | 98 |
| 57 | 68 | 62.5 | 2898 | 37.61194030 | 6625 | 3978 | 86 | 52 |
| 68 | 79 | 73.5 | 17 | 0.22063595 | 6642 | 1080 | 86 | 14 |
| 79 | 90 | 84.5 | 37 | 0.48020766 | 6679 | 1063 | 87 | 14 |
| 90 | 101 | 95.5 | 149 | 1.93380921 | 6828 | 1026 | 89 | 13 |
| 101 | 112 | 106.5 | 272 | 3.53017521 | 7100 | 877 | 92 | 11 |
| 112 | 123 | 117.5 | 269 | 3.49123945 | 7369 | 605 | 96 | 8 |
| 123 | 134 | 128.5 | 66 | 0.85658663 | 7435 | 336 | 96 | 4 |
| 134 | 145 | 139.5 | 192 | 2.49188838 | 7627 | 270 | 99 | 4 |
| 145 | 156 | 150.5 | 49 | 0.63595068 | 7676 | 78 | 100 | 1 |
| 156 | 167 | 161.5 | 2 | 0.02595717 | 7678 | 29 | 100 | 0 |
| 167 | 178 | 172.5 | 27 | 0.35042180 | 7705 | 27 | 100 | 0 |
| Total | 7705 | 100.00000000 | ||||||
| Fuente: Producción Campo Sacha | ||||||||
histo_Frecuencia <- hist(frecuencia_operaciones,
main = "Gráfica: Distribución de la Frecuencia Operaciones\nCampo Sacha",
xlab = "Frecuencia Operaciones",
ylab = "Cantidad",
col = "lightblue",
border = "darkblue",
las = 1)
#### Creación de la tabla de distribución de frecuencia
Limites <- histo_Frecuencia$breaks
LimInf <- Limites[1:(length(Limites)-1)]
LimSup <- Limites[2:length(Limites)]
Mc <- histo_Frecuencia$mids
ni_R <- histo_Frecuencia$counts
cat("\nSuma de ni (R automático) =", sum(ni_R), "\n")
##
## Suma de ni (R automático) = 7705
hi_R <- ni_R / sum(ni_R) * 100
cat("Suma de hi (R automático) =", sum(hi_R), "\n")
## Suma de hi (R automático) = 100
Ni_asc <- cumsum(ni_R)
Ni_dsc <- rev(cumsum(rev(ni_R)))
Hi_asc <- round(cumsum(hi_R), 2)
Hi_dsc <- round(rev(cumsum(rev(hi_R))), 2)
TDF_Frecuencia_R <- data.frame(LimInf, LimSup, Mc, ni_R, hi_R,
Ni_asc, Ni_dsc, Hi_asc, Hi_dsc)
tabla3_R_auto <- TDF_Frecuencia_R %>%
gt() %>%
tab_header(
title = md("*Tabla 3: Distribución - Intervalos R*"),
subtitle = md("**Método Automático de R - Variable: Frecuencia Operaciones**")
) %>%
tab_source_note(
source_note = md("Intervalos generados automáticamente por hist()")
) %>%
cols_label(
LimInf = "L. Inferior",
LimSup = "L. Superior",
Mc = "Marca Clase",
ni_R = "Frec. Abs.",
hi_R = "Frec. Rel. %",
Ni_asc = "Ni Asc.",
Ni_dsc = "Ni Desc.",
Hi_asc = "Hi Asc. %",
Hi_dsc = "Hi Desc. %"
) %>%
fmt_number(
columns = c(hi_R, Hi_asc, Hi_dsc),
decimals = 2,
pattern = "{x}%"
)
cat("\n=== TABLA 3: INTERVALOS AUTOMÁTICOS DE R ===\n")
##
## === TABLA 3: INTERVALOS AUTOMÁTICOS DE R ===
tabla3_R_auto
| Tabla 3: Distribución - Intervalos R | ||||||||
| Método Automático de R - Variable: Frecuencia Operaciones | ||||||||
| L. Inferior | L. Superior | Marca Clase | Frec. Abs. | Frec. Rel. % | Ni Asc. | Ni Desc. | Hi Asc. % | Hi Desc. % |
|---|---|---|---|---|---|---|---|---|
| 30 | 40 | 35 | 23 | 0.30% | 23 | 7705 | 0.30% | 100.00% |
| 40 | 50 | 45 | 1071 | 13.90% | 1094 | 7682 | 14.20% | 99.70% |
| 50 | 60 | 55 | 4507 | 58.49% | 5601 | 6611 | 72.69% | 85.80% |
| 60 | 70 | 65 | 1036 | 13.45% | 6637 | 2104 | 86.14% | 27.31% |
| 70 | 80 | 75 | 13 | 0.17% | 6650 | 1068 | 86.31% | 13.86% |
| 80 | 90 | 85 | 30 | 0.39% | 6680 | 1055 | 86.70% | 13.69% |
| 90 | 100 | 95 | 148 | 1.92% | 6828 | 1025 | 88.62% | 13.30% |
| 100 | 110 | 105 | 261 | 3.39% | 7089 | 877 | 92.01% | 11.38% |
| 110 | 120 | 115 | 238 | 3.09% | 7327 | 616 | 95.09% | 7.99% |
| 120 | 130 | 125 | 97 | 1.26% | 7424 | 378 | 96.35% | 4.91% |
| 130 | 140 | 135 | 162 | 2.10% | 7586 | 281 | 98.46% | 3.65% |
| 140 | 150 | 145 | 72 | 0.93% | 7658 | 119 | 99.39% | 1.54% |
| 150 | 160 | 155 | 19 | 0.25% | 7677 | 47 | 99.64% | 0.61% |
| 160 | 170 | 165 | 6 | 0.08% | 7683 | 28 | 99.71% | 0.36% |
| 170 | 180 | 175 | 22 | 0.29% | 7705 | 22 | 100.00% | 0.29% |
| Intervalos generados automáticamente por hist() | ||||||||
total_ni_R <- sum(TDF_Frecuencia_R$ni_R)
total_hi_R <- 100
# Crear tabla con Total
TDF_Frecuencia_R_Completo <- rbind(
TDF_Frecuencia_R,
data.frame(
LimInf = "Total",
LimSup = " ",
Mc = " ",
ni_R = total_ni_R,
hi_R = total_hi_R,
Ni_asc = " ",
Ni_dsc = " ",
Hi_asc = " ",
Hi_dsc = " "
)
)
library(gt)
library(dplyr)
tabla_Frecuencia_Final <- TDF_Frecuencia_R_Completo %>%
gt() %>%
tab_header(
title = md("*Tabla de Distribución de Frecuencias*"),
subtitle = md("**Variable: Frecuencia Operaciones - Campo Sacha**")
)
# Mostrar
tabla_Frecuencia_Final
| Tabla de Distribución de Frecuencias | ||||||||
| Variable: Frecuencia Operaciones - Campo Sacha | ||||||||
| LimInf | LimSup | Mc | ni_R | hi_R | Ni_asc | Ni_dsc | Hi_asc | Hi_dsc |
|---|---|---|---|---|---|---|---|---|
| 30 | 40 | 35 | 23 | 0.29850746 | 23 | 7705 | 0.3 | 100 |
| 40 | 50 | 45 | 1071 | 13.90006489 | 1094 | 7682 | 14.2 | 99.7 |
| 50 | 60 | 55 | 4507 | 58.49448410 | 5601 | 6611 | 72.69 | 85.8 |
| 60 | 70 | 65 | 1036 | 13.44581441 | 6637 | 2104 | 86.14 | 27.31 |
| 70 | 80 | 75 | 13 | 0.16872161 | 6650 | 1068 | 86.31 | 13.86 |
| 80 | 90 | 85 | 30 | 0.38935756 | 6680 | 1055 | 86.7 | 13.69 |
| 90 | 100 | 95 | 148 | 1.92083063 | 6828 | 1025 | 88.62 | 13.3 |
| 100 | 110 | 105 | 261 | 3.38741077 | 7089 | 877 | 92.01 | 11.38 |
| 110 | 120 | 115 | 238 | 3.08890331 | 7327 | 616 | 95.09 | 7.99 |
| 120 | 130 | 125 | 97 | 1.25892278 | 7424 | 378 | 96.35 | 4.91 |
| 130 | 140 | 135 | 162 | 2.10253082 | 7586 | 281 | 98.46 | 3.65 |
| 140 | 150 | 145 | 72 | 0.93445814 | 7658 | 119 | 99.39 | 1.54 |
| 150 | 160 | 155 | 19 | 0.24659312 | 7677 | 47 | 99.64 | 0.61 |
| 160 | 170 | 165 | 6 | 0.07787151 | 7683 | 28 | 99.71 | 0.36 |
| 170 | 180 | 175 | 22 | 0.28552888 | 7705 | 22 | 100 | 0.29 |
| Total | 7705 | 100.00000000 | ||||||
hist(frecuencia_operaciones,
breaks = seq(min, max, A), # Usar TUS intervalos calculados
main = "Gráfica: Frecuencia de la Frecuencia Operaciones\n(Campo Sacha - Intervalos propios)",
col = "blue",
xlab = "Frecuencia Operaciones",
ylab = "Cantidad (ni)",
right = FALSE) # Para que sea [Li, Ls)
hist(frecuencia_operaciones,
breaks = seq(min, max, A),
main = "Gráfica: Frecuencia de la Frecuencia Operaciones\n(Campo Sacha - Global)",
col = "blue",
xlab = "Frecuencia Operaciones",
ylab = "Cantidad",
ylim = c(0, length(frecuencia_operaciones))) # length(frecuencia_operaciones) = tu n total
barplot(TDFFrecuencia$hi, # Tus frecuencias relativas (%)
space = 0, # Sin espacio entre barras
col = "blue",
xlab = "Marca de Clase (MC)",
ylab = "Porcentaje (%)",
names.arg = TDFFrecuencia$MC) # Nombres = Marcas de clase
barplot(TDFFrecuencia$hi,
space = 0,
main = "Gráfica: Porcentaje de la Frecuencia Operaciones\n(Campo Sacha - Global)",
col = "blue",
xlab = "Marca de Clase (MC)",
ylab = "Porcentaje (%)",
names.arg = TDFFrecuencia$MC,
ylim = c(0, 100)) # Fijar eje Y de 0 a 100%
plot(TDFFrecuencia$Ls, TDFFrecuencia$Nidsc,
type = "o", # "o" = puntos con líneas
xlim = c(0, max), # Eje X desde 0 hasta máximo
main = "Gráfica: Ojivas combinadas de la Frecuencia Operaciones\n(Campo Sacha)",
ylab = "Frecuencia Acumulada",
col = "blue",
xlab = "Frecuencia Operaciones",
pch = 16)
# Agregar ojiva ascendente
lines(TDFFrecuencia$Li, TDFFrecuencia$Niasc,
col = "black",
type = "b", # "b" = puntos con líneas (pero discontinuas)
pch = 16)
# Leyenda
legend("right",
legend = c("Ojiva descendente (Nidsc)", "Ojiva ascendente (Niasc)"),
col = c("blue", "black"),
pch = 16,
lty = 1,
cex = 0.8)
#### 4.1.2 Ojivas combinadas (hi) - Porcentajes
# Gráfico principal (ojiva descendente - porcentajes)
plot(TDFFrecuencia$Ls, TDFFrecuencia$Hidsc,
type = "o", # "o" = puntos y líneas
xlim = c(0, max),
main = "Gráfica: Ojivas combinadas de la Frecuencia Operaciones\n(Campo Sacha - Porcentajes)",
ylab = "Porcentaje Acumulado (%)",
col = "blue",
xlab = "Frecuencia Operaciones",
ylim = c(0, 100)) # Porcentajes de 0 a 100%
# Agregar ojiva ascendente (porcentajes) - SIN "add=TRUE"
lines(TDFFrecuencia$Li, TDFFrecuencia$Hiasc,
col = "black",
type = "b") # "b" = puntos con líneas discontinuas
# Leyenda
legend("right",
legend = c("Ojiva descendente (Hidsc)", "Ojiva ascendente (Hiasc)"),
col = c("blue", "black"),
pch = 1, # Tipo de punto
lty = 1, # Tipo de línea
cex = 0.7) # Tamaño de texto
### 4.2 Diagrama de caja (Boxplot)
boxplot(frecuencia_operaciones,
horizontal = TRUE, # Horizontal (como el ejemplo)
col = "blue",
main = "Gráfica: Distribución de la Frecuencia Operaciones\n(Campo Sacha)",
xlab = "Frecuencia Operaciones",
notch = FALSE) # Sin muesca
## 5: Resumen y outliers
# Resumen
summary(frecuencia_operaciones)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 35.00 53.00 57.00 64.11 61.00 178.00
# Identificar outliers
outliers <- boxplot.stats(frecuencia_operaciones)$out
num_outliers <- length(outliers)
min_outliers <- min(outliers)
max_outliers <- max(outliers)
cat("Número de outliers:", num_outliers, "\n")
## Número de outliers: 1090
if(num_outliers > 0) {
cat("Mínimo outlier:", min_outliers, "\n")
cat("Máximo outlier:", max_outliers, "\n")
}
## Mínimo outlier: 35
## Máximo outlier: 178
# Media aritmética
x <- mean(frecuencia_operaciones)
# Mediana
Me <- median(frecuencia_operaciones)
# Mínimo y máximo
ri <- min(frecuencia_operaciones)
rs <- max(frecuencia_operaciones)
# Mostrar resultados
cat("Media aritmética (x) =", x, "\n")
## Media aritmética (x) = 64.11041
cat("Mediana (Me) =", Me, "\n")
## Mediana (Me) = 57
cat("Mínimo (ri) =", ri, "\n")
## Mínimo (ri) = 35
cat("Máximo (rs) =", rs, "\n")
## Máximo (rs) = 178
# Varianza
varianza <- var(frecuencia_operaciones)
cat("Varianza =", varianza, "\n")
## Varianza = 527.2979
# Desviación estándar
s <- sd(frecuencia_operaciones)
cat("Desviación estándar (s) =", s, "\n")
## Desviación estándar (s) = 22.96297
# Coeficiente de variación
CV <- (s / x) * 100
cat("Coeficiente de variación (CV) =", CV, "%\n")
## Coeficiente de variación (CV) = 35.81784 %
# 5.3 Forma
# install.packages("e1071")
library(e1071)
# Coeficiente de asimetría
As <- skewness(frecuencia_operaciones)
# Coeficiente de kurtosis
k <- kurtosis(frecuencia_operaciones)
cat("Coeficiente de asimetría =", As, "\n")
## Coeficiente de asimetría = 2.352603
cat("Coeficiente de kurtosis =", k, "\n")
## Coeficiente de kurtosis = 4.859665
# 6 Tabla resumen
Variable <- c("Frecuencia Operaciones")
TablaIndicadores <- data.frame(
Variable,
ri, # mínimo
rs, # máximo
round(x, 2), # media (x)
Me, # mediana (Me)
round(s, 2), # desviación estándar (sd)
round(CV, 2), # coeficiente de variación (%)
round(As, 2), # asimetría (As)
round(k, 2) # kurtosis (K)
)
colnames(TablaIndicadores) <- c("Variable", "minimo", "máximo", "x",
"Me", "sd", "Cv (%)", "As", "K")
library(gt)
tabla_resumen_gt <- TablaIndicadores %>%
gt() %>%
tab_header(
title = md("*Tabla: Indicadores estadísticos*"),
subtitle = md("**Variable: Frecuencia Operaciones**")
) %>%
tab_source_note(
source_note = md("Campo Sacha")
) %>%
tab_options(
table.border.top.color = "black",
table.border.bottom.color = "black",
heading.border.bottom.color = "black",
heading.border.bottom.width = px(2)
) %>%
# Formatear números (2 decimales)
fmt_number(
columns = c("minimo", "máximo", "x", "Me", "sd", "Cv (%)", "As", "K"),
decimals = 2
) %>%
# Añadir % al CV
fmt_number(
columns = "Cv (%)",
pattern = "{x}%"
)
# Mostrar tabla
tabla_resumen_gt
| Tabla: Indicadores estadísticos | ||||||||
| Variable: Frecuencia Operaciones | ||||||||
| Variable | minimo | máximo | x | Me | sd | Cv (%) | As | K |
|---|---|---|---|---|---|---|---|---|
| Frecuencia Operaciones | 35.00 | 178.00 | 64.11 | 57.00 | 22.96 | 35.82% | 2.35 | 4.86 |
| Campo Sacha | ||||||||
# 1. Crear tabla
TablaOutliers <- data.frame(
Outliers = num_outliers,
Mínimo = ifelse(num_outliers > 0, min_outliers, NA),
Máximo = ifelse(num_outliers > 0, max_outliers, NA)
)
library(gt)
tabla_outliers_final <- TablaOutliers %>%
gt() %>%
tab_header(
title = "Outliers - Frecuencia Operaciones",
subtitle = "Campo Sacha"
)
# 3. Mostrar
tabla_outliers_final
| Outliers - Frecuencia Operaciones | ||
| Campo Sacha | ||
| Outliers | Mínimo | Máximo |
|---|---|---|
| 1090 | 35 | 178 |
# La Frecuencia Operaciones en Campo Sacha presenta alta variabilidad (CV=35.82%) con rango de 35.00 a 178.00 y media de 64.11. La distribución es fuertemente asimétrica positiva (As=2.35, media>mediana=57.00) y muy concentrada (K=4.86). Los 1,090 outliers detectados (que incluyen los valores extremos) indican múltiples regímenes operativos y sugieren necesidad de estandarización y posible segmentación del análisis.