##### UNIVERSIDAD CENTRAL DEL ECUADOR #####
#### AUTOR: Liss Murillo ####
### CARRERA: INGENIERÍA EN PETROLEOS #####
#1. Carga de Datos
library(readxl)
Produccio_n_Campo_Sacha_csv <- read_excel("r-graficas/Producción Campo Sacha.csv.xlsx")
## New names:
## • `` -> `...16`
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 ...
## $ ...16 : 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
Bfpd_BE <- Produccio_n_Campo_Sacha_csv$Bfpd_BE
Bfpd_BE <- as.numeric(Bfpd_BE)
Bfpd_BE <- na.omit(Bfpd_BE)
##3. Cálculo de intervalos (sturges)
R <- max(Bfpd_BE) - min(Bfpd_BE)
k <- floor(1 + (3.3 * log10(length(Bfpd_BE))))
A <- R / k
liminf <- seq(from = min(Bfpd_BE),
by = A,
length.out = k)
limsup <- liminf + A
limsup[k] <- max(Bfpd_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(Bfpd_BE >= liminf[i] &Bfpd_BE <= limsup[i])
} else {
ni[i] <- sum(Bfpd_BE >= liminf[i] & Bfpd_BE < limsup[i])
}
}
##4.2 Frecuencias relativas y acumuladas
hi <- (ni / length(Bfpd_BE)) * 100
Niasc <- cumsum(ni)
Nidsc <- rev(cumsum(rev(ni)))
Hiasc <- cumsum(hi)
Hidsc <- rev(cumsum(rev(hi)))
##4.3 Tabla de frecuencias
tabla_Bfpd_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_Bfpd_BE %>%
gt() %>%
tab_header(
title = md("**Tabla 1: Distribución de Frecuencias de Bfpd_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 Bfpd_BE |
| Campo Sacha | Método Sturges |
| L. Inferior |
L. Superior |
Marca Clase |
ni |
hi % |
Ni Asc. |
Ni Desc. |
Hi Asc. % |
Hi Desc. % |
| 4.00 |
370.62 |
187.31 |
3292 |
42.73% |
3292 |
7705 |
42.73% |
100.00% |
| 370.62 |
737.23 |
553.92 |
2249 |
29.19% |
5541 |
4413 |
71.91% |
57.27% |
| 737.23 |
1,103.85 |
920.54 |
586 |
7.61% |
6127 |
2164 |
79.52% |
28.09% |
| 1,103.85 |
1,470.46 |
1,287.15 |
749 |
9.72% |
6876 |
1578 |
89.24% |
20.48% |
| 1,470.46 |
1,837.08 |
1,653.77 |
300 |
3.89% |
7176 |
829 |
93.13% |
10.76% |
| 1,837.08 |
2,203.69 |
2,020.38 |
216 |
2.80% |
7392 |
529 |
95.94% |
6.87% |
| 2,203.69 |
2,570.31 |
2,387.00 |
96 |
1.25% |
7488 |
313 |
97.18% |
4.06% |
| 2,570.31 |
2,936.92 |
2,753.62 |
24 |
0.31% |
7512 |
217 |
97.50% |
2.82% |
| 2,936.92 |
3,303.54 |
3,120.23 |
54 |
0.70% |
7566 |
193 |
98.20% |
2.50% |
| 3,303.54 |
3,670.15 |
3,486.85 |
69 |
0.90% |
7635 |
139 |
99.09% |
1.80% |
| 3,670.15 |
4,036.77 |
3,853.46 |
31 |
0.40% |
7666 |
70 |
99.49% |
0.91% |
| 4,036.77 |
4,403.38 |
4,220.08 |
36 |
0.47% |
7702 |
39 |
99.96% |
0.51% |
| 4,403.38 |
4,770.00 |
4,586.69 |
3 |
0.04% |
7705 |
3 |
100.00% |
0.04% |
| Campo Sacha |
##5. Gráficos
##5.1 Histograma
hist(Bfpd_BE,
main = "Gráfica No.1: Distribución de Bfpd_BE - Campo Sacha",
breaks = seq(min(Bfpd_BE), max(Bfpd_BE) + A, by = A),
xlab = "Bfpd_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 Bfpd_BE",
xlab = "Bfpd_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(Bfpd_BE,
horizontal = TRUE,
col = "steelblue",
main = "Gráfica No.3: Distribución de Bfpd_BE - Campo Sacha",
xlab = "Bfpd_BE",
xaxt = "n")
axis(1, at = pretty(Bfpd_BE),
labels = format(pretty(Bfpd_BE), scientific = FALSE))

# Outliers
outliers <- boxplot.stats(Bfpd_BE)$out
cat("\nNúmero de outliers:", length(outliers), "\n")
##
## Número de outliers: 647
if(length(outliers) > 0) {
cat("Outliers:", round(outliers, 2), "\n")
}
## Outliers: 2364 4304 2123 3698 2432 2337 2979 2397 3192 3192 1986 3698 1874 1705 3553 1930 4158 2419 2983 1988 1919 1718 2364 2111 1873 2370 2986 1705 1993 1981 2337 1735 1970 2347 2986 1988 3692 2352 4168 3553 1732 2979 1933 1975 1993 1705 1874 2280 3192 4304 3672 1725 2979 3577 4148 1934 2069 2168 2064 1736 2988 4374 1867 1736 2262 3639 2342 2142 2116 1894 1925 2364 4169 2990 4374 4169 1736 3010 1736 3627 1735 2238 3577 1928 2094 3672 3450 2995 2168 3569 2364 3569 1869 2257 1791 2988 1836 1885 2993 3666 1822 3569 2177 2262 4374 2142 1725 1822 3672 1867 2128 4166 1869 2988 1827 1836 2280 1925 2175 3705 4420 3597 2020 1725 3584 2020 3555 2078 2260 1746 1795 2352 4397 1874 1930 1884 1885 2432 2083 3546 1714 2083 1888 1885 2988 2083 2151 1867 2995 1907 1925 4169 1953 1888 1961 2342 1836 1735 3597 2083 2316 1735 2995 1910 3712 2175 4397 2128 3573 2078 2275 1930 2974 4351 1894 1930 2177 1867 3553 2109 3762 2083 2194 1721 1727 1786 1822 2979 2056 1782 1879 1819 4188 1934 1836 2558 1975 3607 2594 1997 1735 2590 2002 2114 3580 2974 1869 2596 2177 1727 1957 1930 2342 4191 3607 1930 1910 2208 1836 2979 4351 2002 3762 2194 1836 1957 3762 1879 2194 2168 3580 1869 2988 3762 1932 2168 1732 1964 1736 2456 2146 1838 1836 3632 1966 1900 2357 2208 1867 1831 2423 1842 3584 1851 1955 1888 2570 2177 4171 3587 2995 2123 2062 2574 2457 1730 2437 3655 2194 3615 1732 2947 2222 1858 2569 1900 2939 2960 3009 2446 1847 3055 4176 1705 2118 3147 2168 1966 2455 1736 3132 1836 1732 2518 3402 3592 1827 3705 3425 2964 2114 2583 3425 1851 3612 1957 2114 2299 3379 3379 2974 3518 2161 4188 1705 3610 2048 3541 3585 3607 1836 2222 2583 1888 1847 2114 1721 1721 4168 2468 1851 2967 3739 2114 2053 3617 1845 2435 2227 1863 2969 2430 1847 1887 3576 1721 1952 2583 2410 2100 4179 2898 3607 1726 1827 2941 2455 2000 2087 1863 3576 1851 1736 1875 2154 2597 2170 4770 1836 1851 2100 2610 2299 3888 1863 2979 3842 3627 1726 2450 1851 3739 2227 1847 1880 2610 1721 2979 2437 2222 1845 2455 2105 1892 2347 2983 3934 2199 4179 1939 2450 1842 1863 3601 1704 1836 2176 3648 1842 3888 2979 1818 2087 1736 1726 2306 1833 2064 2246 1822 1833 1736 2625 1892 2347 1721 1726 3739 2105 4178 2450 2087 3608 1863 1863 2060 2611 3608 1704 1833 2491 2317 3688 1800 3597 3447 3306 3427 1833 1952 1961 4178 3412 1886 1847 2038 1877 2056 3608 1800 2087 1880 2028 2091 2611 2347 1721 1704 2610 2024 2064 1714 1842 2028 1863 1737 2128 2033 2312 2441 3507 2250 2611 2314 1768 1847 3615 1732 2307 4178 2116 1721 1863 1777 3739 2087 2345 3599 3507 2312 2167 2510 3888 1737 1835 2625 2135 2950 2611 4160 2091 2400 1863 3599 3573 1795 2941 1842 3739 3957 1766 2146 1768 2955 2439 1850 2350 1721 2967 1871 1801 3569 1986 2955 2625 1764 1777 2468 1850 1768 3547 1782 2974 2091 2400 2345 1863 3073 1838 2128 1777 1773 1759 3865 1860 4170 4238 1795 2094 2454 4185 1833 2456 4183 1842 3578 1709 2468 4497 1764 4403 3739 2638 1716 3957 1863 1729 1890 2130 4403 3547 3035 1773 1716 1711.3 1833 2345 3585 3033 2350 3547 1966 2454 1804 2450 1721 2449 3957 1717 2096 2638 1852 3026 2638 1701 2464 3615 1704 1961 1711 2642 1705 1838 1863 4385 3050 1711.3 3739 2350 1702 2459 1766 1921 2109 2447 1888 3547 2508 3753 2445 2147 2012 2632 2345 3067 2345 1995 2468 1833 1852 2111 4385 2345 3569 2416 1900 3083
##6. Indicadores estadísticos
get_mode_interval <- function() {
idx <- which.max(ni)
return(paste0("[", round(liminf[idx], 2), ", ", round(limsup[idx], 2), "]"))
}
media <- mean(Bfpd_BE)
mediana <- median(Bfpd_BE)
moda_intervalo <- get_mode_interval()
desv <- sd(Bfpd_BE)
varianza <- var(Bfpd_BE)
cv <- (desv / media) * 100
asim <- skewness(Bfpd_BE)
curt <- kurtosis(Bfpd_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(Bfpd_BE), 2), round(max(Bfpd_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 Bfpd_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 Bfpd_BE |
| Indicador |
Valor |
| Mínimo |
4 |
| Máximo |
4770 |
| Media |
681.46 |
| Mediana |
442 |
| Moda (intervalo) |
[4, 370.62] |
| Desviación Estándar |
703.42 |
| Varianza |
494801 |
| Coef. Variación (%) |
103.22 |
| Asimetría |
2.33 |
| Curtosis |
6.61 |
| N° Outliers |
647 |
| Campo Sacha |
##7. Conclusión
#La variable Bfpd_BE fluctúa entre 4 y 4 770 y sus valores están en torno a los 442 (media = 681.46), con una desviación estándar de 703.42 siendo un conjunto de valores heterogéneos (CV = 103.22%) cuyos valores se concentran en el intervalo modal [4, 370.62] y con distribución leptocúrtica (K = 6.61) y sesgo pronunciado hacia la derecha (As = 2.33) a excepción de los 647 valores atípicos identificados, por lo tanto el comportamiento de la variable indica un proceso mayoritariamente inestable con alta dispersión en las mediciones, aunque con un rango principal de concentración que permite identificar tendencias operativas relevantes en el Campo Sacha.