ANÁLISIS ESTADÍSTICO

1. CARGA DE LIBRERÍAS Y DATOS

                    #==============================ENCABEZADO================================
                    # TEMA: ESTADISTICA DESCRIPTIVA - IMPACTO DEL ACERO
                    # AUTOR: GRUPO 3
                    # FECHA: 03-2026
                    #========================================================================
library(dplyr)
library(e1071)
library(gt)

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

2. TABLA DE DISTRIBUCION CON STURGES

acero <- as.numeric(datos$Impact.steel.production..pad.)
acero <- na.omit(acero)
acero <- acero[acero >= 0] 
n <- length(acero)
#STURGES
k <- floor(1 + 3.322 * log10(n))
k
## [1] 14
#MINIMO
minimo <- min(acero)
minimo
## [1] 79121.28
#MAXIMO
maximo <- max(acero)
maximo
## [1] 310729.6
#RANGO
R <- maximo - minimo
R
## [1] 231608.3
#AMPLITUD
A <- R / k
A
## [1] 16543.45
Li_s <- round(seq(from = minimo, to = maximo - A, by = A), 2)
Ls_s <- round(seq(from = minimo + A, to = maximo, by = A), 2)
MC_s <- round((Li_s + Ls_s) / 2, 2)

ni_s <- numeric(length(Li_s))
for (i in 1:length(Li_s)) {
  ni_s[i] <- sum(acero >= Li_s[i] & acero < Ls_s[i])
}
ni_s[length(Li_s)] <- sum(acero >= Li_s[length(Li_s)] & acero <= maximo)

TDF_Sturges <- data.frame(Li=Li_s, Ls=Ls_s, MC=MC_s, ni=ni_s, hi=round((ni_s/n)*100, 2))
TDF_Sturges_P <- rbind(TDF_Sturges, data.frame(Li="TOTAL", Ls="", MC="", ni=sum(ni_s), hi=100))

TDF_Sturges_P %>%
  gt() %>%
  tab_header(title = md("**Tabla Nº1. Tabla de distribucion de cantidad 
                        de impacto de acero en pozos de gas natural en 
                        Nuevo Mexico**")) %>%
  tab_style(
    style = list(cell_fill(color = "lightgray"), cell_text(weight = "bold")),
    locations = list(
      cells_body(rows = Li == "TOTAL"),
      cells_title(groups = "title")
    )
  ) %>%
  tab_options(
    column_labels.font.weight = "bold" 
  )%>%
  tab_source_note(
    source_note = md("**Tabla 1 de 4**"))
Tabla Nº1. Tabla de distribucion de cantidad de impacto de acero en pozos de gas natural en Nuevo Mexico
Li Ls MC ni hi
79121.28 95664.74 87393.01 26 0.21
95664.74 112208.19 103936.46 437 3.48
112208.19 128751.64 120479.92 1574 12.53
128751.64 145295.09 137023.36 2542 20.24
145295.09 161838.55 153566.82 3018 24.03
161838.55 178382 170110.28 2580 20.54
178382 194925.45 186653.72 1387 11.04
194925.45 211468.9 203197.17 613 4.88
211468.9 228012.36 219740.63 237 1.89
228012.36 244555.81 236284.08 103 0.82
244555.81 261099.26 252827.54 28 0.22
261099.26 277642.71 269370.98 10 0.08
277642.71 294186.17 285914.44 3 0.02
294186.17 310729.62 302457.9 3 0.02
TOTAL 12561 100.00
Tabla 1 de 4
# GRAFICA N°1: DISTRIBUCIÓN DEL IMPACTO DE ACERO (STURGES)
cortes_histograma_ace <- c(Li_s, maximo)

par(mar = c(7.5, 4.1, 4.1, 2.1))
hist(acero, 
     breaks = cortes_histograma_ace,
     freq = TRUE,
     right = FALSE, 
     col = "darkgrey", 
     xaxt = "n", 
     xlab = "", 
     ylab = "Cantidad",
     main = "Grafica N°1: Distribución de cantidad de impacto de acero en
     pozos de gas natural en Nuevo México")
## Warning in plot.histogram(r, freq = freq1, col = col, border = border, angle =
## angle, : the AREAS in the plot are wrong -- rather use 'freq = FALSE'
axis(1, at = cortes_histograma_ace, labels = round(cortes_histograma_ace, 2), las = 2)
title(xlab = "Impacto de producción de acero", line = 5.5)
box(which = "outer", col = "black")

3. TABLA DE DISTRIBUCION AGRUPADA

Debido a que la tabla y la grafica presentan valores con decimales complejos vamos a agruparla

h_f <- hist(acero, plot = FALSE)
lis <- h_f$breaks[1:(length(h_f$breaks)-1)]
lss <- h_f$breaks[2:length(h_f$breaks)]
MC_f  <- h_f$mids
ni_f  <- h_f$counts
hi_f  <- (ni_f / sum(ni_f)) * 100

Niasc <- cumsum(ni_f); Nidsc <- rev(cumsum(rev(ni_f)))
Hiasc <- round(cumsum(hi_f), 2); Hidsc <- round(rev(cumsum(rev(hi_f))), 2)

TDF_Simp <- data.frame(Li=lis, Ls=lss, MC=MC_f, ni=ni_f, hi=round(hi_f, 2), 
                       Niasc, Nidsc, Hiasc, Hidsc)
TDF_Simp_P <- rbind(TDF_Simp, data.frame(Li="TOTAL", Ls=" ", MC=" ", ni=sum(ni_f), hi=100,Niasc=" ", Nidsc=" ", Hiasc=" ", Hidsc=" "))

TDF_Simp_P %>%
  
  gt() %>%
  tab_header(title = md("**TABLA Nº2: Tabla de distribucion de cantidad 
                        de impacto del acero en pozos de gas natural en 
                        Nuevo Mexico**")) %>%
  tab_style(
    style = list(cell_fill(color = "lightgray"), cell_text(weight = "bold")),
    locations = list(
      cells_body(rows = Li == "TOTAL"),
      cells_title(groups = "title")
    )
  ) %>%
  tab_options(
    column_labels.font.weight = "bold" # Subtítulos de columnas en negrita
  )%>%
  tab_source_note(
    source_note = md("**Tabla 2 de 4**"))
TABLA Nº2: Tabla de distribucion de cantidad de impacto del acero en pozos de gas natural en Nuevo Mexico
Li Ls MC ni hi Niasc Nidsc Hiasc Hidsc
60000 80000 70000 1 0.01 1 12561 0.01 100
80000 100000 90000 68 0.54 69 12560 0.55 99.99
100000 120000 110000 997 7.94 1066 12492 8.49 99.45
120000 140000 130000 2636 20.99 3702 11495 29.47 91.51
140000 160000 150000 3572 28.44 7274 8859 57.91 70.53
160000 180000 170000 3089 24.59 10363 5287 82.5 42.09
180000 200000 190000 1442 11.48 11805 2198 93.98 17.5
200000 220000 210000 511 4.07 12316 756 98.05 6.02
220000 240000 230000 184 1.46 12500 245 99.51 1.95
240000 260000 250000 45 0.36 12545 61 99.87 0.49
260000 280000 270000 11 0.09 12556 16 99.96 0.13
280000 300000 290000 3 0.02 12559 5 99.98 0.04
300000 320000 310000 2 0.02 12561 2 100 0.02
TOTAL 12561 100.00
Tabla 2 de 4

4. GRAFICAS DE DISTRIBUCION

par(oma = c(1, 1, 1, 1))
par(mfrow=c(1,1))
color_acero <- "#B0C4DE" 
par(mar = c(6, 5, 4, 2) + 0.1)

#asignamos las variables para el poligono de frecuencia
x_c  <- MC_f    # Marca de clase para cantidad
y_c  <- ni_f    # Frecuencia absoluta

x_p  <- MC_f    # Marca de clase para porcentaje
y_p  <- hi_f    # Frecuencia porcentual


# Grafica 2: Histograma Frecuencia Absoluta
hist(acero, freq = TRUE, col = color_acero, border = "black",
     main = "Grafica Nº2: Distribucion de cantidad de impacto del acero 
     en pozos de gas natural en Nuevo Mexico",
     xlab = "Impacto del Acero", ylab = "Cantidad")
lines(x_c, y_c, type = "b", col = "red", pch = 19, lwd = 2)
box(which = "outer", col = "black")

# Grafica 3: Histograma Global
hist(acero, freq = TRUE, col = color_acero, border = "black", ylim = c(0, n),
     main = "Grafica Nº3: Distribucion de cantidad de impacto 
     del acero en pozos de gas natural en Nuevo Mexico",
     xlab = "Impacto del Acero", ylab = "Cantidad")
lines(x_c, y_c, type = "b", col = "red", pch = 19, lwd = 2)
box(which = "outer", col = "black")

# Grafica 4: Frecuencia Relativa
h_rel <- hist(acero, plot = FALSE)
h_rel$counts <- (h_rel$counts / sum(h_rel$counts)) * 100
plot(h_rel, col = color_acero, border = "black",
     main = "Grafica Nº4: Distribucion de cantidad en porcentaje de impacto 
     del acero en pozos de gas natural en Nuevo Mexico",
     xlab = "Impacto del Acero", ylab = "Porcentaje (%)")
lines(x_p, y_p, type = "b", col = "red", pch = 19, lwd = 2)
box(which = "outer", col = "black")

# Grafica 5: Frecuencia relativa global
plot(h_rel, col = color_acero, border = "black", ylim = c(0, 100),
     main = "Grafica Nº5: Distribucion de cantidad de impacto de acero 
     en pozos de gas natural en Nuevo Mexico",
     xlab = "Impacto del Acero", ylab = "Porcentaje (%)")
lines(x_p, y_p, type = "b", col = "red", pch = 19, lwd = 2)
box(which = "outer", col = "black")

#Grafica 6:ojivas
plot(lss, Nidsc, type="b", col="blue", pch=19, bg="white", xlab="Impacto del Acero", ylab="Cant. Acumulada",
     main="Gráfica Nº6: Ojivas combinadas de cantidad
     del Impacto del Acero en pozos de gas natural en 
     Nuevo México")
lines(lis, Niasc, col="black", type="b", pch=19)
legend("right", legend=c("Descendente", "Ascendente"), col=c("blue", "black"), pch=c(19, 19), pt.bg="white", bty="n")
box(which = "outer", col = "black")

# Grafica 7: Ojivas
plot(lss, Hidsc, type="b", col="blue", pch=19, bg="white", ylim=c(0, 100),
     main="Gráfica Nº7: Ojivas combinadas de cantidad en porcentaje
     del Impacto del Acero en pozos de gas natural en 
     Nuevo México",
     xlab="Impacto del Acero", ylab="Porcentaje Acumulado")
lines(lis, Hiasc, col="black", type="b", pch=19)
legend("right", legend=c("Descendente", "Ascendente"), col=c("blue", "black"), 
       pch=c(19, 19), pt.bg="white", bty="n")
box(which = "outer", col = "black")

# Grafica 8: Boxplot
boxplot(acero, horizontal = TRUE, col = "skyblue",
        main = "Gráfica Nº8: Distribución de cantidad de Impacto de 
        Acero en pozos de gas natural en Nuevo México",
        xlab = "Impacto del Acero")
box(which = "outer", col = "black")

summary(acero)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   79121  136521  154798  156013  173025  310730
# Grafica 9: Superposición de Boxplot sobre Histograma
hist(acero, prob = TRUE, col = color_acero, border = "black",
     xlab = "Impacto del Acero", ylab = "Densidad",
     main = "Grafica Nº9: Análisis de densidad y cuartiles del Impacto del Acero")
par(new = TRUE)
boxplot(acero, horizontal = TRUE, axes = FALSE,
        col = rgb(0, 0.8, 1, alpha = 0.5))
box(which = "outer", col = "black")

5. INDICADORES ESTADISTICOS

TablaInd <- data.frame(Variable="Acero", min=min(acero), max=max(acero),
                       x=round(mean(acero),2), Me=median(acero), 
                       sd=round(sd(acero),2), Cv=round(abs((sd(acero)/mean(acero))*100),2),
                       As=round(skewness(acero),2), K=round(kurtosis(acero),2))

# mediana
media_val <- mean(acero)
media_val
## [1] 156012.9
#desciacion estandar
desv_val <- sd(acero)
desv_val
## [1] 27225.15
#minimo
min_val <- min(acero)
min_val
## [1] 79121.28
#maximo
max_val <- max(acero)
max_val
## [1] 310729.6
#desviacion relativa
cv_analisis <- abs(desv_val / media_val) * 100
cv_analisis
## [1] 17.45058
tipo_datos <- if(cv_analisis > 30) "heterogeneos" else "homogeneos"
conteo_atipicos <- length(boxplot.stats(acero)$out)


# TABLA 3 CON GT
TablaInd %>% 
  gt() %>% 
  tab_header(title = md("Tabla Nº3: Indicadores estadísticos de la variable 
impacto de acero en pozos de gas natural en Nuevo México")) %>%
  tab_style(
    style = list(cell_fill(color = "lightgray"), cell_text(weight = "bold")),
    locations = cells_title(groups = "title")
  ) %>%
  tab_options(
    column_labels.font.weight = "bold"
  ) %>%
  tab_source_note(
    source_note = md("**Tabla 3 de 4**"))
Tabla Nº3: Indicadores estadísticos de la variable impacto de acero en pozos de gas natural en Nuevo México
Variable min max x Me sd Cv As K
Acero 79121.28 310729.6 156012.9 154798.2 27225.15 17.45 0.5 0.56
Tabla 3 de 4
# VALORES ATÍPICOS
valores_atipicos <- boxplot.stats(acero)$out 
n_atipicos <- length(valores_atipicos) 

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

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


# TABLA 4 CON GT 
TablaOutliers %>% 
  gt() %>% 
  tab_header(title = md("TABLA N°4: Valores atípicos de la variable Impacto de acero")) %>%
  tab_style(
    style = list(cell_fill(color = "lightgray"), cell_text(weight = "bold")),
    locations = cells_title(groups = "title")
  ) %>%
  tab_options(
    column_labels.font.weight = "bold"
  ) %>%
  tab_source_note(
    source_note = md("**Tabla 4 de 4**"))
TABLA N°4: Valores atípicos de la variable Impacto de acero
Cantidad Mínimo Máximo
150 79121.28 310729.6
Tabla 4 de 4
names(which.max(table(acero)))
## [1] "79121.28346"

6. CONCLUSIÓN

La variable impacto de la producción de acero para la plataforma presenta valores que fluctúan entre 79121.3 y 310729.6, con una media de 156012.9 y un valor central de 154798.2. La desviación estándar de 27225.2, junto con un Coeficiente de Variación de 17.5%, indica una homogeneidad moderada en los datos. Esto refleja que el volumen de acero utilizado varía de forma controlada según las especificaciones técnicas de los pozos en Nuevo México. La asimetría de 0.5 indica una distribución con mayor concentración de proyectos en los rangos de impacto bajo y medio. Finalmente, se identificaron 148 valores atípicos, lo que sugiere la existencia de plataformas con requerimientos estructurales excepcionales que se desvían del diseño estándar de la región.