Carga de datos
library(readxl)
datos <- read_excel("Producción Campo Sacha.csv.xlsx")
str(datos)
## 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 ...
Cálculo de intervalos
(Sturges)
R <- max(voltaje) - min(voltaje)
k <- floor(1 + (3.3 * log10(length(voltaje))))
A <- R / k
liminf <- seq(from = min(voltaje),
by = A,
length.out = k)
limsup <- liminf + A
limsup[k] <- max(voltaje)
MC <- (liminf + limsup) / 2
Tabla de distribución
de frecuencias
Frecuencias
absolutas
ni <- numeric(k)
for (i in 1:k) {
if (i == k) {
ni[i] <- sum(voltaje >= liminf[i] & voltaje <= limsup[i])
} else {
ni[i] <- sum(voltaje >= liminf[i] & voltaje < limsup[i])
}
}
Frecuencias relativas
y acumuladas
hi <- (ni / length(voltaje)) * 100
Niasc <- cumsum(ni)
Nidsc <- rev(cumsum(rev(ni)))
Hiasc <- cumsum(hi)
Hidsc <- rev(cumsum(rev(hi)))
Tabla de
Frecuencias
tabla_voltaje <- data.frame(
Límite_Inferior = round(liminf, 2),
Límite_Superior = round(limsup, 2),
Marca_Clase = round(MC, 2),
ni = ni,
hi_porc = round(hi, 2),
Ni_asc = Niasc,
Ni_dsc = Nidsc,
Hiasc_porc = round(Hiasc, 2),
Hidsc_porc = round(Hidsc, 2))
# TABLA 1 CON GT()
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
library(e1071)
tabla_voltaje %>%
gt() %>%
tab_header(
title = md("**Tabla 1: Distribución de Frecuencias del Voltaje**"),
subtitle = md("Campo Sacha | Método Sturges")
) %>%
tab_source_note(
source_note = md("**Campo Sacha**")
) %>% # ¡SOLO UN PARÉNTESIS AQUÍ!
cols_label(
Límite_Inferior = "L. Inferior",
Límite_Superior = "L. Superior",
Marca_Clase = "Marca Clase",
hi_porc = "hi %",
Ni_asc = "Ni Asc.",
Ni_dsc = "Ni Desc.",
Hiasc_porc = "Hi Asc. %",
Hidsc_porc = "Hi Desc. %"
) %>%
fmt_number(
columns = c(Límite_Inferior, Límite_Superior, Marca_Clase),
decimals = 2
) %>%
fmt_number(
columns = c(hi_porc, Hiasc_porc, Hidsc_porc),
decimals = 2,
pattern = "{x}%"
)
| Tabla 1: Distribución de Frecuencias del Voltaje |
| Campo Sacha | Método Sturges |
| L. Inferior |
L. Superior |
Marca Clase |
ni |
hi % |
Ni Asc. |
Ni Desc. |
Hi Asc. % |
Hi Desc. % |
| 0.00 |
65.15 |
32.58 |
16 |
0.21% |
16 |
7704 |
0.21% |
100.00% |
| 65.15 |
130.31 |
97.73 |
0 |
0.00% |
16 |
7688 |
0.21% |
99.79% |
| 130.31 |
195.46 |
162.88 |
0 |
0.00% |
16 |
7688 |
0.21% |
99.79% |
| 195.46 |
260.62 |
228.04 |
0 |
0.00% |
16 |
7688 |
0.21% |
99.79% |
| 260.62 |
325.77 |
293.19 |
108 |
1.40% |
124 |
7688 |
1.61% |
99.79% |
| 325.77 |
390.92 |
358.35 |
1174 |
15.24% |
1298 |
7580 |
16.85% |
98.39% |
| 390.92 |
456.08 |
423.50 |
4874 |
63.27% |
6172 |
6406 |
80.11% |
83.15% |
| 456.08 |
521.23 |
488.65 |
1523 |
19.77% |
7695 |
1532 |
99.88% |
19.89% |
| 521.23 |
586.38 |
553.81 |
8 |
0.10% |
7703 |
9 |
99.99% |
0.12% |
| 586.38 |
651.54 |
618.96 |
0 |
0.00% |
7703 |
1 |
99.99% |
0.01% |
| 651.54 |
716.69 |
684.12 |
0 |
0.00% |
7703 |
1 |
99.99% |
0.01% |
| 716.69 |
781.85 |
749.27 |
0 |
0.00% |
7703 |
1 |
99.99% |
0.01% |
| 781.85 |
847.00 |
814.42 |
1 |
0.01% |
7704 |
1 |
100.00% |
0.01% |
| Campo Sacha |
Gráficos
Histograma
hist(voltaje,
main = "Gráfica No.1: Distribución del Voltaje - Campo Sacha",
breaks = seq(min(voltaje), max(voltaje) + A, by = A),
xlab = "Voltaje",
ylab = "Cantidad",
col = "lightblue",
border = "darkblue",
xaxt = "n") # IMPORTANTE: Suprimir eje X automático
# Eje X personalizado con MARCAS DE CLASE
axis(1, at = MC, # Posiciones: Marcas de Clase
labels = round(MC, 2), # Etiquetas: valores redondeados
las = 1) # Etiquetas horizontales

OJIVAS
x_asc <- c(min(liminf), limsup)
y_asc <- c(0, Niasc)
x_desc <- c(liminf, max(limsup))
y_desc <- c(Nidsc, 0)
x_range <- range(c(x_asc, x_desc))
y_range <- c(0, max(c(y_asc, y_desc)))
plot(x_asc, y_asc, type = "o", col = "skyblue",
main = "Gráfica No.2: Ojivas Ascendente y Descendente del Voltaje",
xlab = "Voltaje",
ylab = "Frecuencia acumulada",
xlim = x_range, ylim = y_range,
xaxt = "n", pch = 16, lwd = 2)
axis(1, at = pretty(x_range),
labels = format(pretty(x_range), scientific = FALSE))
axis(2, at = pretty(y_range))
lines(x_desc, y_desc, type = "o", col = "steelblue4", pch = 17, lwd = 2)
legend("right",
legend = c("Ojiva Ascendente", "Ojiva Descendente"),
col = c("skyblue", "steelblue4"),
pch = c(16, 17),
lty = 1,
lwd = 2,
cex = 0.8)

Diagrama de caja
boxplot(voltaje,
horizontal = TRUE,
col = "steelblue",
main = "Gráfica No.3: Distribución del Voltaje - Campo Sacha",
xlab = "Voltaje",
xaxt = "n")
axis(1, at = pretty(voltaje),
labels = format(pretty(voltaje), scientific = FALSE))

# Outliers
outliers <- boxplot.stats(voltaje)$out
cat("\nNúmero de outliers:", length(outliers), "\n")
##
## Número de outliers: 206
if(length(outliers) > 0) {
cat("Outliers:", round(outliers, 2), "\n")
}
## Outliers: 320 305 320 321 320 0 0 44 305 327 322 320 321 320 0 0 322 321 305 322 327 329 292 319 327 306 320 321 0 327 326 306 0 0 317 304 320 269 327 847 321 289 329 326 289 289 327 289 304 0 0 320 289 320 316 327 329 312 312 312 0 0 321 326 321 289 312 304 329 327 328 303 326 327 0 0 315 327 329 321 321 327 326 321 315 329 321 327 326 328 291 296 328 328 321 296 274 328 276 276 275 290 292 298 321 298 325 328 298 306 327 300 313 306 312 327 329 329 328 328 320 328 320 319 320 327 328 328 328 328 289 318 327 328 289 325 328 329 319 328 328 325 328 327 328 328 319 328 327 325 316 316 324 327 328 328 325 328 39.1 328 329 319 328 324 328 529 283 324 298 324 324 529 319 325 328 324 329 529 329 293 300 529 300 319 328 324 325 306 308 327 328 328 530 328 327 320 319 325 327 0 319 324 328 327 529 329
Indicadores
estadísticos
get_mode_interval <- function() {
idx <- which.max(ni)
return(paste0("[", round(liminf[idx], 2), ", ", round(limsup[idx], 2), "]"))
}
media <- mean(voltaje)
mediana <- median(voltaje)
moda_intervalo <- get_mode_interval()
desv <- sd(voltaje)
varianza <- var(voltaje)
cv <- (desv / media) * 100
asim <- skewness(voltaje)
curt <- kurtosis(voltaje)
# CREAR DATA.FRAME DE INDICADORES (¡ESTA PARTE FALTABA!)
indicadores <- data.frame(
Indicador = c("Mínimo", "Máximo", "Media", "Mediana", "Moda (intervalo)",
"Desviación Estándar", "Varianza", "Coef. Variación (%)",
"Asimetría", "Curtosis", "N° Outliers"),
Valor = c(round(min(voltaje), 2), round(max(voltaje), 2),
round(media, 2), round(mediana, 2), moda_intervalo,
round(desv, 2), round(varianza, 2), round(cv, 2),
round(asim, 2), round(curt, 2), length(outliers))
)
# TABLA 2 CON GT()
indicadores %>%
gt() %>%
tab_header(
title = md("**Tabla 2: Indicadores Estadísticos del Voltaje**")
) %>%
tab_source_note(
source_note = md("**Campo Sacha**")
) %>%
cols_label(
Indicador = "Indicador",
Valor = "Valor"
) %>%
tab_style(
style = cell_text(weight = "bold"),
locations = cells_body(columns = Indicador)
)
| Tabla 2: Indicadores Estadísticos del Voltaje |
| Indicador |
Valor |
| Mínimo |
0 |
| Máximo |
847 |
| Media |
422.53 |
| Mediana |
428 |
| Moda (intervalo) |
[390.92, 456.08] |
| Desviación Estándar |
42.71 |
| Varianza |
1823.89 |
| Coef. Variación (%) |
10.11 |
| Asimetría |
-2.22 |
| Curtosis |
19.44 |
| N° Outliers |
206 |
| Campo Sacha |
CONCLUSIÓN
El voltaje fluctúa entre 0.00 V y 847.00 V y sus valores están en
torno a los 428.00 V (media = 422.53 V), con una desviación estándar de
42.71 V siendo un conjunto de valores homogéneos (CV = 10.11%) cuyos
valores se concentran en el intervalo modal [390.92, 456.08] V y con
distribución leptocúrtica (K = 19.44) y sesgo pronunciado hacia la
izquierda (As = -2.22) a excepción de los 206 valores atípicos
identificados, por lo tanto el comportamiento de la variable indica un
proceso mayoritariamente estable con mediciones consistentes en el rango
principal, aunque con presencia significativa de lecturas extremas que
requieren análisis particular.