ANÁLISIS ESTADÍSTICO

1. CARGA DE LIBRERÍAS Y DATOS

library(dplyr)
library(e1071)
library(gt)

setwd("C:/Users/HP/Documents/PROYECTO ESTADISTICA/RStudio")
datos <- read.csv("tablap.csv", header = TRUE, dec = ",", sep = ";")

2. TABLA DE DISTRIBUCIÓN DE FRECUENCIAS

inicio <- datos$Spud.Initiation.year 
# REGLA DE STURGES 
n <- length(na.omit(inicio))
k_sturges <- 1 + (3.322 * log10(n))
k_sturges
## [1] 14.61696
# Sturges dio un resultado de 14, por lo tanto se considero usar un 
# bucle for para reducir el numero de intervalos

# PROCESAMIENTO CON BUCLE FOR
clasificacion <- character(length(inicio))
for(i in seq_along(inicio)){
  if(inicio[i] >= 1950 & inicio[i] < 1960){
    clasificacion[i] <- "1950-1959"
  } else if(inicio[i] >= 1960 & inicio[i] < 1970){
    clasificacion[i] <- "1960-1969"
  } else if(inicio[i] >= 1970 & inicio[i] < 1980){
    clasificacion[i] <- "1970-1979"
  } else if(inicio[i] >= 1980 & inicio[i] < 1990){
    clasificacion[i] <- "1980-1989"
  } else if(inicio[i] >= 1990 & inicio[i] < 2000){
    clasificacion[i] <- "1990-1999"
  } else if(inicio[i] >= 2000 & inicio[i] < 2010){
    clasificacion[i] <- "2000-2009"
  } else if(inicio[i] >= 2010 & inicio[i] < 2020){
    clasificacion[i] <- "2010-2019"
  } else if(inicio[i] >= 2020 & inicio[i] <= 2030){
    clasificacion[i] <- "2020-2029"
  } else {
    clasificacion[i] <- NA
  }
}

clasificacion <- na.omit(clasificacion)
orden_intervalos <- c("1950-1959", "1960-1969", "1970-1979", "1980-1989", 
                      "1990-1999", "2000-2009", "2010-2019", "2020-2029")
clasificacion <- factor(clasificacion, levels = orden_intervalos)

# CÁLCULO DE FRECUENCIAS
ni <- table(clasificacion)
total_datos <- sum(ni)
hi <- round(as.numeric(ni) / total_datos * 100, 2) 
Ni_asc <- cumsum(ni)
Hi_asc <- cumsum(hi)
Ni_des <- rev(cumsum(rev(ni)))
Hi_des <- rev(cumsum(rev(hi)))

# TABLA DE DISTRIBUCIÓN DE FRECUENCIAS
tabla_base <- data.frame(Intervalo = orden_intervalos, ni = as.numeric(ni), hi = hi,
                         Ni_asc = as.numeric(Ni_asc), Hi_asc = round(Hi_asc, 2),
                         Ni_des = as.numeric(Ni_des), Hi_des = round(Hi_des, 2))

fila_total <- data.frame(Intervalo = "TOTAL", ni = total_datos, hi = 100, 
                         Ni_asc = NA, Hi_asc = NA, Ni_des = NA, Hi_des = NA)

TDF_Final_gt <- rbind(tabla_base, fila_total)

tabla_gt <- TDF_Final_gt %>% 
  gt() %>%
  cols_label(
    Intervalo = "Intervalo",
    ni = "ni",
    hi = "hi",
    Ni_asc = "Ni_asc",
    Hi_asc = "Hi_asc",
    Ni_des = "Ni_des",
    Hi_des = "Hi_des"
  ) %>%
  tab_header(
    title = md("Tabla N°1: Distribución de cantidad de los años de inicio
               de perforación de los pozos de gas natural en Nuevo México")
  ) %>%
  sub_missing(columns = everything(), missing_text = " ") %>%
  tab_style(
    style = list(
      cell_fill(color = "lightgray"),
      cell_text(weight = "bold")
    ),
    locations = cells_body(
      rows = Intervalo == "TOTAL"
    )
  ) %>%
  cols_align(
    align = "center",
    columns = c(ni, hi, Ni_asc, Hi_asc, Ni_des, Hi_des)
  ) %>%
  tab_options(
    table.width = pct(80),
    heading.title.font.size = px(20),
    heading.title.font.weight = "bold",
    table.font.names = "Open Sans",
    column_labels.font.weight = "bold"
  )

tabla_gt
Tabla N°1: Distribución de cantidad de los años de inicio de perforación de los pozos de gas natural en Nuevo México
Intervalo ni hi Ni_asc Hi_asc Ni_des Hi_des
1950-1959 1130 9.00 1130 9.00 12561 100.00
1960-1969 873 6.95 2003 15.95 11431 91.00
1970-1979 1416 11.27 3419 27.22 10558 84.05
1980-1989 1741 13.86 5160 41.08 9142 72.78
1990-1999 1687 13.43 6847 54.51 7401 58.92
2000-2009 5223 41.58 12070 96.09 5714 45.49
2010-2019 477 3.80 12547 99.89 491 3.91
2020-2029 14 0.11 12561 100.00 14 0.11
TOTAL 12561 100.00



3. GRÁFICAS DE DISTRIBUCIÓN DE FRECUENCIAS

par(mar = c(7, 4, 4, 2) + 0.1)
barplot(ni, names.arg = orden_intervalos, las = 2, col = "skyblue",
        xlab = "Año de inicio de Perforacion",ylab = "Cantidad", 
        main = "Gráfica Nº1: Distribución de cantidad de los años de
        inicio de perforación de los pozos de gas natural 
        en Nuevo México")

barplot(ni, names.arg = orden_intervalos, las = 2, col = "darkgrey",
        xlab = "Año de inicio de Perforacion",ylab = "Cantidad",
        ylim = c(0, total_datos), 
        main = "Gráfica Nº2: Distribución de cantidad de los años de
        inicio de perforación de los pozos de gas natural 
        en Nuevo México")

barplot(hi, names.arg = orden_intervalos, las = 2, col = "lightgreen", 
        xlab = "Año de inicio de Perforacion",ylab = "Porcentaje (%)",
        main = "Gráfica Nº3: Distribución de cantidad en porcentaje de los años 
        de inicio de perforación de los pozos de gas natural 
        en Nuevo México")

barplot(hi, names.arg = orden_intervalos, las = 2, col = "grey50", 
        ylim = c(0, 100), 
        xlab = "Año de inicio de Perforacion",ylab = "Porcentaje (%)",
        main = "Gráfica Nº4: Relativa Global Distribución de cantidad en porcentaje 
        de los años de inicio de perforación de los pozos de gas natural 
        en Nuevo México")

# OJIVAS (Ni)
posicion_x <- 1:length(ni)
plot(posicion_x, Ni_asc, type = "o", pch = 19, col = "blue", 
     xaxt = "n", main = "Grafica Nº5: Ojiva combinada de los años de perforación (Ni)")
axis(1, at = posicion_x, labels = orden_intervalos, las = 2, 
     cex.axis = 0.7)
lines(posicion_x, Ni_des, type = "o", pch = 18, col = "red")

# OJIVAS (Hi)
plot(posicion_x, Hi_asc, type = "o", pch = 19, col = "blue", 
     xaxt = "n", ylim = c(0, 100), 
     main = "Grafica Nº6: Ojiva combinada de los años de perforación (Hi)")
axis(1, at = posicion_x, labels = orden_intervalos, las = 2, cex.axis = 0.7)
lines(posicion_x, Hi_des, type = "o", pch = 18, col = "black")

#BLOXPLOT
boxplot(inicio, horizontal = TRUE, col = "lightblue", 
        main = "Gráfica Nº7: Distribucion de cantidad de los años de inicio
        de perforacion de los pozos de gas natural en Nuevo Mexico")

4. INDICADORES ESTADÍSTICOS Y OUTLIERS

summary(inicio) 
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##    1950    1978    1997    1990    2005    2020
media_x <- mean(inicio, na.rm = TRUE)
val_min <- min(inicio, na.rm = TRUE)
val_max <- max(inicio, na.rm = TRUE)
mediana_Me <- median(inicio, na.rm = TRUE)
desv_estandar <- sd(inicio, na.rm = TRUE)
coef_variacion <- ((desv_estandar / media_x) * 100)
asimetria_As <- skewness(inicio, na.rm = TRUE)
curtosis_K <- kurtosis(inicio, na.rm = TRUE)

# Tabla de Indicadores Estadísticos
Variable_Nombre <- "Año de inicio"
TablaIndicadores <- data.frame(Variable = Variable_Nombre, 
                               minimo = val_min, 
                               máximo = val_max, 
                               x = round(media_x, 0), 
                               Me = mediana_Me, 
                               sd = round(desv_estandar, 2), 
                               Cv = round(coef_variacion, 2), 
                               As = round(asimetria_As, 2), 
                               K = round(curtosis_K, 2))

tabla_indicadores_gt <- TablaIndicadores %>%
  gt() %>%
  tab_header(
    title = md("Tabla N°3. Indicadores estadísticos de 
               la variable año de inicio de perforación")
  ) %>%
  cols_align(align = "center", columns = everything()) %>%
  tab_options(
    table.width = pct(80),
    heading.title.font.weight = "bold",
    column_labels.font.weight = "bold"
  )

tabla_indicadores_gt
Tabla N°3. Indicadores estadísticos de la variable año de inicio de perforación
Variable minimo máximo x Me sd Cv As K
Año de inicio 1950 2020 1990 1997 17.33 0.87 -0.69 -0.71
# Tabla Outliers
valores_atipicos <- boxplot.stats(inicio)$out 
n_atipicos <- length(valores_atipicos) 

if(n_atipicos > 0) {
  min_atipico <- min(valores_atipicos)
  max_atipico <- max(valores_atipicos)
} else {
  min_atipico <- 0
  max_atipico <- 0
}

TablaOutliers <- data.frame(Outliers = n_atipicos, Mínimo = min_atipico, Máximo = max_atipico)

tabla_outliers_gt <- TablaOutliers %>%
  gt() %>%
  tab_header(
    title = md("Tabla N°4: Outliers de la variable año de inicio de perforación")
  ) %>%
  cols_align(align = "center", columns = everything()) %>%
  tab_options(
    table.width = pct(80),
    heading.title.font.weight = "bold",
    column_labels.font.weight = "bold"
  )

tabla_outliers_gt
Tabla N°4: Outliers de la variable año de inicio de perforación
Outliers Mínimo Máximo
0 0 0

5. CONCLUSIÓN

tipo_datos <- if(coef_variacion > 30) "heterogeneo" else "homogeneo"
ubicacion_atipicos <- if(asimetria_As < 0) "extremo izquierdo" else "extremo derecho"

cat(paste0(
  "La variable anio de inicio presenta valores que fluctuan entre ", val_min, " y ", val_max, 
  ", con una concentracion en torno a la mediana de ", mediana_Me, ". ",
  "La desviacion estandar de ", round(desv_estandar, 2), " indica que se trata de un conjunto ", tipo_datos, 
  ", influenciado por la presencia de ", n_atipicos, " valores atipicos ubicados en el ", ubicacion_atipicos, 
  " de la distribucion. La acumulacion de valores se encuentra en la parte alta de la variable, ",
  "lo que evidencia que la mayoria de los inicios se realizaron en periodos recientes. ",
  "Por todo lo anterior mencionado, el comportamiento de la variable es medianamente beneficioso, ",
  "debido a que los registros modernos cuentan con informacion geologica mas confiable y mejor documentada."
))
## La variable anio de inicio presenta valores que fluctuan entre 1950 y 2020, con una concentracion en torno a la mediana de 1997. La desviacion estandar de 17.33 indica que se trata de un conjunto homogeneo, influenciado por la presencia de 0 valores atipicos ubicados en el extremo izquierdo de la distribucion. La acumulacion de valores se encuentra en la parte alta de la variable, lo que evidencia que la mayoria de los inicios se realizaron en periodos recientes. Por todo lo anterior mencionado, el comportamiento de la variable es medianamente beneficioso, debido a que los registros modernos cuentan con informacion geologica mas confiable y mejor documentada.