##### UNIVERSIDAD CENTRAL DEL ECUADOR #####
#### AUTOR: LEONARDO RUIZ ####
### 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_BH <- datos$Gas_BH
Gas_BH <- as.numeric(Gas_BH)
Gas_BH <- na.omit(Gas_BH)
##3. Cálculo de intervalos (sturges)
R <- max(Gas_BH) - min(Gas_BH)
k <- floor(1 + (3.3 * log10(length(Gas_BH))))
A <- R / k
liminf <- seq(from = min(Gas_BH),
by = A,
length.out = k)
limsup <- liminf + A
limsup[k] <- max(Gas_BH)
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_BH >= liminf[i] & Gas_BH <= limsup[i])
} else {
ni[i] <- sum(Gas_BH >= liminf[i] & Gas_BH < limsup[i])
}
}
#4.2 Frecuencias relativas y acumuladas
hi <- (ni / length(Gas_BH)) * 100
Niasc <- cumsum(ni)
Nidsc <- rev(cumsum(rev(ni)))
Hiasc <- cumsum(hi)
Hidsc <- rev(cumsum(rev(hi)))
#4.3 Tabla de frecuencias
tabla_Gas_BH <- 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_BH %>%
gt() %>%
tab_header(
title = md("**Tabla 1: Distribución de Frecuencias de Gas_BH**"),
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_BH |
| Campo Sacha | Método Sturges |
| L. Inferior |
L. Superior |
Marca Clase |
ni |
hi % |
Ni Asc. |
Ni Desc. |
Hi Asc. % |
Hi Desc. % |
| 1.20 |
20.49 |
10.85 |
108 |
16.90% |
108 |
639 |
16.90% |
100.00% |
| 20.49 |
39.79 |
30.14 |
271 |
42.41% |
379 |
531 |
59.31% |
83.10% |
| 39.79 |
59.08 |
49.43 |
93 |
14.55% |
472 |
260 |
73.87% |
40.69% |
| 59.08 |
78.37 |
68.73 |
118 |
18.47% |
590 |
167 |
92.33% |
26.13% |
| 78.37 |
97.66 |
88.02 |
41 |
6.42% |
631 |
49 |
98.75% |
7.67% |
| 97.67 |
116.96 |
107.31 |
2 |
0.31% |
633 |
8 |
99.06% |
1.25% |
| 116.96 |
136.25 |
126.60 |
1 |
0.16% |
634 |
6 |
99.22% |
0.94% |
| 136.25 |
155.54 |
145.90 |
3 |
0.47% |
637 |
5 |
99.69% |
0.78% |
| 155.54 |
174.84 |
165.19 |
0 |
0.00% |
637 |
2 |
99.69% |
0.31% |
| 174.84 |
194.13 |
184.48 |
2 |
0.31% |
639 |
2 |
100.00% |
0.31% |
| Campo Sacha |
##5. Gráficos
#5.1 Histograma
hist(Gas_BH,
main = "Gráfica No.1: Distribución de Gas_BH - Campo Sacha",
breaks = seq(min(Gas_BH), max(Gas_BH) + A, by = A),
xlab = "Gas_BH",
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_BH",
xlab = "Gas_BH",
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_BH,
horizontal = TRUE,
col = "steelblue",
main = "Gráfica No.3: Distribución de Gas_BH - Campo Sacha",
xlab = "Gas_BH",
xaxt = "n")
axis(1, at = pretty(Gas_BH),
labels = format(pretty(Gas_BH), scientific = FALSE))

# Outliers
outliers <- boxplot.stats(Gas_BH)$out
cat("\nNúmero de outliers:", length(outliers), "\n")
##
## Número de outliers: 7
if(length(outliers) > 0) {
cat("Outliers:", round(outliers, 2), "\n")
}
## Outliers: 114 118 194.13 138.4 138.4 142.3 182.4
##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_BH)
mediana <- median(Gas_BH)
moda_intervalo <- get_mode_interval()
desv <- sd(Gas_BH)
varianza <- var(Gas_BH)
cv <- (desv / media) * 100
asim <- skewness(Gas_BH)
curt <- kurtosis(Gas_BH)
# 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_BH), 2), round(max(Gas_BH), 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_BH**")
) %>%
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_BH |
| Indicador |
Valor |
| Mínimo |
1.2 |
| Máximo |
194.13 |
| Media |
42.54 |
| Mediana |
34.73 |
| Moda (intervalo) |
[20.49, 39.79] |
| Desviación Estándar |
24.81 |
| Varianza |
615.59 |
| Coef. Variación (%) |
58.32 |
| Asimetría |
1.16 |
| Curtosis |
3.58 |
| N° Outliers |
7 |
| Campo Sacha |
##7. Conclusión
#La variable Gas_BH fluctúa entre 1.2 y 194.13 y sus valores están en torno a los 34.73 (media = 42.54 ), con una desviación estándar de 24.81 siendo un conjunto de valores heterogéneos (CV = 58.32%) cuyos valores se concentran en el intervalo modal [20.49, 39.79] y con distribución leptocúrtica (K = 3.58) y sesgo pronunciado hacia la derecha (As = 1.16) a excepción de los 7 valores atípicos identificados, por lo tanto el comportamiento de la variable indica un proceso de variabilidad moderada-alta con mediciones consistentes en el rango principal, aunque con presencia significativa de lecturas extremas que requieren análisis particular.