1 Carga de datos

setwd("/cloud/project/")
datos<-read.csv("DATOS.csv", header = TRUE, sep=";" , dec=".")
str(datos)
## 'data.frame':    10190 obs. of  17 variables:
##  $ Distrito_edit                        : chr  "1" "1" "1" "1" ...
##  $ Year_edit_Fecha_del_derrame          : int  2013 2013 2013 2013 2013 2013 2013 2013 2013 2013 ...
##  $ Mes_edit_Fecha_del_derrame           : int  6 3 4 4 6 6 3 9 10 6 ...
##  $ Categoria_Instalaciones              : chr  "Instalacion fija" "Pozos" "Pozos" "Pozos" ...
##  $ Operacion_general                    : chr  "Produccion" "Otro" "Produccion" "Produccion" ...
##  $ Categoria_Fuente                     : chr  NA "Tanques/Almacenamiento" "Lineas/Tuberias" "Infraestructura Fija" ...
##  $ Grupo_causas_probable                : chr  NA "Afectaciones externas" "Factores humanos" "Problemas tecnicos" ...
##  $ Liberacion_petroleo_crudo_edicion    : num  0 0 0 0 0 ...
##  $ Edicion_recuperacion_petroleo_crudo  : num  NA 0 0 0 0 0 0 0 0 NA ...
##  $ Volumen_liberado_Cond_Final          : num  0 0 0 10 0 0 0 1 0 0 ...
##  $ Liberacion_agua_de_produccion_edicion: num  6720 3780 5040 420 10920 ...
##  $ Liberacion_volumen_gas               : num  0 0 0 0 0 0 0 0 0 0 ...
##  $ Volumen_condensado_recuperado        : num  NA 0 0 1 0 0 0 0 0 NA ...
##  $ Edicion_Recuperacion_agua_producida  : num  NA 420 4620 0 10920 ...
##  $ Derrame_sobre_agua_limpio            : chr  "NO" "NO" "NO" "NO" ...
##  $ Estado_general                       : chr  "Observaciones tecnicas" NA NA NA ...
##  $ Codigo_area                          : int  1 1 1 1 1 1 1 1 1 3 ...

2 Instalacion de Librerias

#install.packages("e1071")
library(e1071)

3 Extraccion de variable

Liberacion_crudo <- datos$Liberacion_petroleo_crudo_edicion
Liberacion_crudo <- na.omit(Liberacion_crudo)

4 Calculo de rango y número de clases (Sturges)

R_Liberacion <- max(Liberacion_crudo) - min(Liberacion_crudo)
k_Liberacion <- floor(1 + (3.3 * log10(length(Liberacion_crudo))))
A_Liberacion <- R_Liberacion / k_Liberacion

5 Limites e intervalos

liminf <- seq(from = min(Liberacion_crudo), by = A_Liberacion, 
              length.out = k_Liberacion)
limsup <- liminf + A_Liberacion
limsup[k_Liberacion] <- max(Liberacion_crudo)
MC <- (liminf + limsup) / 2

6 Creacion de Tabla de Frecuencia

6.1 Frecuencias absolutas

ni <- numeric(k_Liberacion)
for (i in 1:k_Liberacion) {
  if (i == k_Liberacion) {
    ni[i] <- length(subset(Liberacion_crudo, 
            Liberacion_crudo >= liminf[i] & Liberacion_crudo <= limsup[i]))
  } else {
    ni[i] <- length(subset(Liberacion_crudo, 
            Liberacion_crudo >= liminf[i] & Liberacion_crudo < limsup[i]))
  }
}

6.2 Frecuencias relativas y acumuladas

hi <- (ni / length(Liberacion_crudo)) * 100
Niasc <- cumsum(ni)
Nidsc <- rev(cumsum(rev(ni)))
Hiasc <- cumsum(hi)
Hidsc <- rev(cumsum(rev(hi)))

6.3 Tabla de Frecuencias

tabla_Liberacion_crudo <- data.frame(
  liminf = round(liminf, 2),
  limsup = round(limsup, 2),
  MC = 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))

print("TABLA: Distribución de Frecuencias de Liberación de Petróleo Crudo")
## [1] "TABLA: Distribución de Frecuencias de Liberación de Petróleo Crudo"
print(tabla_Liberacion_crudo)
##    liminf limsup     MC   ni hi_porc Ni_asc Ni_dsc Hiasc_porc Hidsc_porc
## 1       0  39306  19653 8976   99.91   8976   8984      99.91      1e+02
## 2   39306  78612  58959    7    0.08   8983      8      99.99      9e-02
## 3   78612 117918  98265    0    0.00   8983      1      99.99      1e-02
## 4  117918 157224 137571    0    0.00   8983      1      99.99      1e-02
## 5  157224 196530 176877    0    0.00   8983      1      99.99      1e-02
## 6  196530 235836 216183    0    0.00   8983      1      99.99      1e-02
## 7  235836 275142 255489    0    0.00   8983      1      99.99      1e-02
## 8  275142 314448 294795    0    0.00   8983      1      99.99      1e-02
## 9  314448 353754 334101    0    0.00   8983      1      99.99      1e-02
## 10 353754 393060 373407    0    0.00   8983      1      99.99      1e-02
## 11 393060 432366 412713    0    0.00   8983      1      99.99      1e-02
## 12 432366 471672 452019    0    0.00   8983      1      99.99      1e-02
## 13 471672 510978 491325    0    0.00   8983      1      99.99      1e-02
## 14 510978 550284 530631    1    0.01   8984      1     100.00      1e-02

7 Gráficos

7.1 Histograma

HistoSturges_Liberacion <- hist(Liberacion_crudo,
main = "Gráfica No.1: Distribución de Liberación de Petróleo Crudo",
breaks = seq(min(Liberacion_crudo), max(Liberacion_crudo) + A_Liberacion,
             by = A_Liberacion),
xlab = "Liberación de petróleo crudo",
ylab = "Frecuencia",
col = "pink2",
xaxt = "n")

axis(1, at = pretty(HistoSturges_Liberacion$breaks),
  labels = format(pretty(HistoSturges_Liberacion$breaks), scientific = FALSE))

7.2 Ojivas combinadas

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 
              Liberación de Petróleo Crudo",
     xlab = "Liberación de petróleo crudo",
     ylab = "Frecuencia acumulada",
     xlim = x_range, ylim = y_range,
     xaxt = "n", yaxt = "n")

axis(1, at = pretty(x_asc), labels = format(pretty(x_asc), scientific = FALSE))
axis(2, at = pretty(y_asc), labels = format(pretty(y_asc), scientific = FALSE))
lines(x_desc, y_desc, type = "o", col = "pink4")

legend("topright", legend = c("Ascendente", "Descendente"),
col = c("skyblue", "pink4"), lty = 1, pch = 1, cex = 0.7, 
      inset = c(-0.0009, 0.2))

7.3 Diagrama de caja

boxplot(Liberacion_crudo, horizontal = TRUE, col = "blue",
      main = "Gráfica No.3: DISTRIBUCIÓN DE LA LIBERACIÓN DE PETRÓLEO CRUDO",
      xlab = "Liberación de petróleo crudo",
      xaxt = "n") 

axis(1, at = pretty(Liberacion_crudo), labels = format(pretty(Liberacion_crudo), 
    scientific = FALSE))

8 Indicadores

Liberacion_crudo_num <- as.numeric(Liberacion_crudo)
Liberacion_crudo_num <- Liberacion_crudo_num[!is.na(Liberacion_crudo_num)]


get_mode <- function(v) { 
  v <- as.numeric(v)
  uniqv <- unique(v)
  uniqv[which.max(tabulate(match(v, uniqv)))]
}
media <- mean(Liberacion_crudo_num)
mediana <- median(Liberacion_crudo_num)
moda <- get_mode(Liberacion_crudo_num)
desv <- sd(Liberacion_crudo_num)
varianza <- var(Liberacion_crudo_num)
cv <- (desv / media) * 100


asim <- skewness(Liberacion_crudo_num)
curt <- kurtosis(Liberacion_crudo_num)


indicadores <- data.frame(
  Indicador = c("Moda","Mediana","Media","Desviación Estándar",
                "Varianza","Coef. de Variación (%)","Asimetría","Curtosis"),
  Valor = c(round(moda, 2),round(mediana, 2),round(media, 2),round(desv, 2),
            round(varianza, 2),round(cv, 2),round(asim, 2),round(curt, 2)))

print(indicadores, row.names = FALSE)
##               Indicador       Valor
##                    Moda        0.00
##                 Mediana      252.00
##                   Media     1119.78
##     Desviación Estándar     6527.67
##                Varianza 42610468.45
##  Coef. de Variación (%)      582.94
##               Asimetría       67.13
##                Curtosis     5578.41