##### UNIVERSIDAD CENTRAL DEL ECUADOR #####
#### AUTOR: ASHLY ALZATE ####
### CARRERA: INGENIERÍA EN PETROLEOS #####
##1. Carga de Datos
library(readxl)
datos <- read_excel("C:/Users/LEO/Documents/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 ...
##2.Extraer la variable continua
Gas_BE <- datos$Gas_BE
Gas_BE <- as.numeric(Gas_BE)
Gas_BE <- na.omit(Gas_BE)
##3. Cálculo de intervalos (sturges)
R <- max(Gas_BE) - min(Gas_BE)
k <- floor(1 + (3.3 * log10(length(Gas_BE))))
A <- R / k
liminf <- seq(from = min(Gas_BE),
by = A,
length.out = k)
limsup <- liminf + A
limsup[k] <- max(Gas_BE)
MC <- (liminf + limsup) / 2
##4.Tabla de distribución de frecuencias
#4.1 Frecuencia absoluta
ni <- numeric(k)
for (i in 1:k) {
if (i == k) {
ni[i] <- sum(Gas_BE >= liminf[i] & Gas_BE <= limsup[i])
} else {
ni[i] <- sum(Gas_BE >= liminf[i] & Gas_BE < limsup[i])
}
}
#4.2 Frecuencias relativas y acumuladas
hi <- (ni / length(Gas_BE)) * 100
Niasc <- cumsum(ni)
Nidsc <- rev(cumsum(rev(ni)))
Hiasc <- cumsum(hi)
Hidsc <- rev(cumsum(rev(hi)))
#4.3 Tabla de frecuencias
tabla_Gas_BE <- 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_Gas_BE %>%
gt() %>%
tab_header(
title = md("**Tabla 1: Distribución de Frecuencias de Gas_BE**"),
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 de Gas_BE |
| Campo Sacha | Método Sturges |
| L. Inferior |
L. Superior |
Marca Clase |
ni |
hi % |
Ni Asc. |
Ni Desc. |
Hi Asc. % |
Hi Desc. % |
| 0.02 |
95.02 |
47.52 |
5531 |
71.78% |
5531 |
7705 |
71.78% |
100.00% |
| 95.02 |
190.02 |
142.52 |
1053 |
13.67% |
6584 |
2174 |
85.45% |
28.22% |
| 190.02 |
285.02 |
237.52 |
461 |
5.98% |
7045 |
1121 |
91.43% |
14.55% |
| 285.02 |
380.01 |
332.51 |
318 |
4.13% |
7363 |
660 |
95.56% |
8.57% |
| 380.01 |
475.01 |
427.51 |
217 |
2.82% |
7580 |
342 |
98.38% |
4.44% |
| 475.01 |
570.01 |
522.51 |
44 |
0.57% |
7624 |
125 |
98.95% |
1.62% |
| 570.01 |
665.01 |
617.51 |
10 |
0.13% |
7634 |
81 |
99.08% |
1.05% |
| 665.01 |
760.01 |
712.51 |
31 |
0.40% |
7665 |
71 |
99.48% |
0.92% |
| 760.01 |
855.01 |
807.51 |
26 |
0.34% |
7691 |
40 |
99.82% |
0.52% |
| 855.01 |
950.00 |
902.51 |
0 |
0.00% |
7691 |
14 |
99.82% |
0.18% |
| 950.00 |
1,045.00 |
997.50 |
0 |
0.00% |
7691 |
14 |
99.82% |
0.18% |
| 1,045.00 |
1,140.00 |
1,092.50 |
5 |
0.06% |
7696 |
14 |
99.88% |
0.18% |
| 1,140.00 |
1,235.00 |
1,187.50 |
9 |
0.12% |
7705 |
9 |
100.00% |
0.12% |
| Campo Sacha |
##5. Gráficos
#5.1 Histograma
hist(Gas_BE,
main = "Gráfica No.1: Distribución de Gas_BE - Campo Sacha",
breaks = seq(min(Gas_BE), max(Gas_BE) + A, by = A),
xlab = "Gas_BE",
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

#5.2 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 de Gas_BE",
xlab = "Gas_BE",
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)

#5.3 Diagramas de cajas
boxplot(Gas_BE,
horizontal = TRUE,
col = "steelblue",
main = "Gráfica No.3: Distribución de Gas_BE - Campo Sacha",
xlab = "Gas_BE",
xaxt = "n")
axis(1, at = pretty(Gas_BE),
labels = format(pretty(Gas_BE), scientific = FALSE))

# Outliers
outliers <- boxplot.stats(Gas_BE)$out
cat("\nNúmero de outliers:", length(outliers), "\n")
##
## Número de outliers: 835
if(length(outliers) > 0) {
cat("Outliers:", round(outliers, 2), "\n")
}
## Outliers: 820.8 302.4 266.4 248.4 401.4 304.8 475.2 427.7 304.8 576.07 262.08 306.4 306.4 252 308 256.8 296 294.8 302.8 824.4 296.8 420 421 742.53 477 447.66 352 268.4 396.6 320 251.4 443.4 320 307.2 251.4 438.6 262.08 320.8 443.4 817.2 305.6 320 302.4 395.4 744.5 320 477.6 319.41 266.4 320 419.4 576.07 429.5 453.19 304.8 820.8 252 395.4 295.2 742.5 352 262.08 320 268.4 294.8 255 296.8 431.9 288.8 296 250.4 398.4 326.4 256.8 293.6 324.9 324.9 288 325.8 815.4 418.2 576.07 352 344 305.6 319.41 266.4 475.2 324.9 307.8 288 295.2 320 383.4 250.4 501.6 397.2 716.13 320.8 417.6 574.56 251.4 451.8 716.13 815.4 295.2 255 290.4 513.6 252 431.9 397.2 329 320.8 574.56 397.2 352 290.4 362 293.6 284 360.8 284.8 255 355.99 352 252 325.2 363.2 432.6 276.32 369.41 387 712.9 382.8 357 831.6 368 475.2 483.17 352 304.8 366.88 316.68 256.8 294.8 298.4 712.9 332.9 368 245 288.8 330.4 269 346 324.9 307.8 288 471.17 350.4 332.9 368.8 350 317.6 575.32 293.6 329.4 712 268 394 418 360 333.7 367.2 385.2 449 352 237 351.6 348 828 356.4 255 288 432.6 362.4 324 254.4 331.2 346.4 360.6 288.8 471.6 326.4 348 367.2 284.8 421.2 712.91 831.6 352.6 576.07 434.7 363.6 434 419.96 258 714.2 255.58 345.6 828 368.8 284.8 576.07 294.8 326.4 351.6 329.6 316.68 714.2 320.8 387 256.8 288 307.8 307.8 483.17 238.4 471.17 420.6 268 433 350.4 368 419.96 483.2 368.8 296.8 471.6 346.8 255.6 712.9 237 258 286.4 471.6 330.4 371.6 433.3 329.4 831.6 352.6 433.7 237.6 471 363 824.4 352.6 237.6 331.2 550.37 257.4 365.4 716.1 815.4 424.8 286.4 284.4 284.4 242.2 373.2 435.79 364.8 258.3 258.3 258.6 474 234.4 353.42 427.8 338.4 365.4 717.42 820.8 419.96 258 286.4 471.6 288.8 329.4 348 236 366 348 385.2 252.6 255.6 327.6 340.8 421.8 435.4 340.8 471.6 373.2 258.3 258.3 366 352.6 296.8 424.8 550.37 234.8 288.8 372.4 258.3 258.3 712.9 824.4 352.6 286.4 348 244 313.49 288 426 336 278 477 372.4 327.6 329.4 366 820.8 340 296.8 477 255.6 236 474 365.4 353 288 717.4 385.2 288.8 258 243.2 426 336.8 281 280.8 550.37 280.8 244.8 268 373.2 716.1 265.6 346.4 815.4 389.4 429 339.2 280.8 357.1 340.8 421.8 252.6 471.6 287.2 435.4 323.4 712.91 376.8 244.8 550.37 340.8 339.2 375.2 282.6 346.4 274.8 313.49 268 477 437.2 474 340.8 387 283.8 270.4 376 335.2 333.13 373.2 328.2 386.9 244 340 439 551.12 283.8 712.91 815.4 250.4 288.8 475.2 435.8 406.82 386.3 286.2 288.8 717.4 386.3 310.31 423 250.2 420 435.8 817.2 387 435.6 336.8 234.4 409 242.4 248.8 288.8 435.6 339.2 344.8 817.2 387 373.2 346.4 386.3 242.4 408 355.2 363.2 436.5 313.6 550.37 408 268 260 386.3 435.6 324.6 385.2 289.6 265.6 716 254.4 336 355.6 344.8 313.6 268 260 240 385.2 417.6 383.7 435 288.8 712.91 248 475.2 304.2 270 288.8 357.6 474 346.4 250.4 422.4 333.6 269.6 312.8 422.4 436.2 552.64 272.8 340.8 383.7 385.2 250.2 437.2 422.4 290.4 268 235.3 310.31 336.8 408 436.2 295.34 244.8 421.8 437.2 292.8 305 294 320.5 716.1 385.2 451.8 356.4 397 384.5 264.8 338.4 297.6 435.8 396.8 310.8 306 712.9 422.4 474 244.8 448.2 336 290.4 355.6 294 253.8 306 340.8 435.4 310.31 256 304.8 291.6 437 306 385.2 470.4 712.9 436.2 552.64 294 384.5 310.31 470.4 339.2 264.8 355.6 408 1075 396.8 472.2 425 281.6 310.31 668 436.2 551.88 397.6 306 721.91 480.2 239.87 261.6 253.5 244.8 385.2 336 306 422.4 253.8 469.8 1075 437.4 304.8 422.4 253.8 472.2 384.6 249 432 470.4 355.2 251.93 251 554.15 306 249.9 318.47 472.64 482.2 339.25 246.4 306.4 382.8 263.2 472.99 310.8 306 436.89 281.6 251 1060 414.6 253 251 1076.89 239.87 1078.8 484 354 480.2 305.6 250.8 460 347.2 245.6 261.6 502.85 332.8 306.4 380.4 288.09 442.43 435.99 435.99 288.09 334.8 442.43 291.6 306.4 440.5 584.4 368.4 478.2 288.09 267.2 759.7 441.78 283.2 243.2 380.4 761.4 300.96 452.56 360.65 297.1 422.4 253.8 413.4 470.4 339.2 472.64 472.2 370.2 402.62 298.02 409.2 320 310.8 467.88 360.73 298.48 554.9 251 1235 304.8 298 261.6 250.8 320 460 347.2 320 472.64 312 298.48 261.6 381.2 779 476.3 411.6 241.32 252 440 298.28 554.9 468.19 1181 402.62 298.48 422.4 472.64 554.9 347.2 304 412.8 542.05 762 465.61 298 471.6 306.4 250.8 476.3 410.4 471 262.4 471.6 310.8 466.9 283.2 347.2 305.6 255.6 421.2 239.87 750.6 283.2 480.2 465.61 305.6 239.29 762 1181 298.48 422.4 299.98 253.6 436.4 298.4 411.6 468.19 402.62 424.2 413.4 349.6 306.4 546.59 471.58 471.41 548.1 250.8 283.2 252.6 480.2 1178 413.4 253.2 1179 437.2 401 762 347.2 469.48 498.8 298.85 239.87 274.4 307.2 255.6 421.2 253.2 433.2 471.93 310.8 471 246.57 283.2 471.41 298.48 253.6 762 306.4 283.2 435.6 298.4 310.8 494.9 1177.8 728.4 470.53 1175.4 470.76 341.01 404 402.62 548.1 298 239.29 436.4 307.2 234.84 336.24 471.58 407.2 238.71 245.6 352.1 307.2 424.2 255.6 413.4 421.2 253.2 401 347.2 471 274.4 350.7 241.6 728.4 326.4 1171 284 473.69 310.8 251.2 238.71 1173 290.18 473.98 352.1 401.76 414.6 307.57 308.8 433.2 633.67 298.85 245.6 253.2 353.5 470.88
##6. Indicadores estadísticos
get_mode_interval <- function() {
idx <- which.max(ni)
return(paste0("[", round(liminf[idx], 2), ", ", round(limsup[idx], 2), "]"))
}
media <- mean(Gas_BE)
mediana <- median(Gas_BE)
moda_intervalo <- get_mode_interval()
desv <- sd(Gas_BE)
varianza <- var(Gas_BE)
cv <- (desv / media) * 100
asim <- skewness(Gas_BE)
curt <- kurtosis(Gas_BE)
# 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(Gas_BE), 2), round(max(Gas_BE), 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 de Gas_BE**")
) %>%
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 de Gas_BE |
| Indicador |
Valor |
| Mínimo |
0.02 |
| Máximo |
1235 |
| Media |
98.34 |
| Mediana |
52.17 |
| Moda (intervalo) |
[0.02, 95.02] |
| Desviación Estándar |
127.26 |
| Varianza |
16194.58 |
| Coef. Variación (%) |
129.4 |
| Asimetría |
3.07 |
| Curtosis |
13.89 |
| N° Outliers |
835 |
| Campo Sacha |
##7. Conclusión
#La variable Gas_BE fluctúa entre 0.02 y 1235.00 y sus valores están en torno a los 52.17 (media = 98.34 ), con una desviación estándar de 127.26 siendo un conjunto de valores heterogéneos absolutos (CV = 129.4%) cuyos valores se concentran en el intervalo modal [0.02, 95.02] y con distribución leptocúrtica (K = 13.89) y sesgo pronunciado hacia la derecha (As = 3.07) a excepción de los 835 valores atípicos identificados, por lo tanto el comportamiento de la variable indica un proceso de variabilidad extrema con mediciones consistentes en el rango principal, aunque con presencia significativa de lecturas extremas que requieren análisis particular.