ANÁLISIS ESTADÍSTICO DE CONCRETO

1. CARGA DE DATOS Y LIBRERÍAS

library(dplyr)
library(e1071)
library(knitr)

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

acero <- as.numeric(datos$Impact.steel.production..pad.)
acero <- na.omit(acero)
acero <- subset(acero, acero >= 0)

2. TABLA DE DISTRIBUCION CON STURGES

n <- length(acero)
k <- floor(1 + 3.3 * log10(n))
minimo <- min(acero)
maximo <- max(acero)
R <- maximo - minimo
A <- R / k

Li <- round(seq(from = minimo, to = maximo - A, by = A), 2)
Ls <- round(seq(from = minimo + A, to = maximo, by = A), 2)

if(length(Ls) > length(Li)) Ls <- Ls[1:length(Li)]
if(length(Li) > length(Ls)) Li <- Li[1:length(Ls)]

MC <- round((Li + Ls) / 2, 2)
ni <- numeric(length(Li))
for (i in 1:length(Li)) {
  ni[i] <- sum(acero >= Li[i] & acero < Ls[i])
}
ni[length(Li)] <- sum(acero >= Li[length(Li)] & acero <= maximo)

hi <- (ni / sum(ni)) * 100
Niasc <- cumsum(ni); Nidsc <- rev(cumsum(rev(ni)))
Hiasc <- round(cumsum(hi), 2); Hidsc <- round(rev(cumsum(rev(hi))), 2)

TDF_acero <- round(data.frame(Li, Ls, MC, ni, hi, Niasc, Nidsc, Hiasc, Hidsc), 2)

fila_total_acero <- data.frame(Li = "TOTAL", Ls = "", MC = "", ni = sum(TDF_acero$ni), 
                               hi = round(sum(TDF_acero$hi), 2), Niasc = "", Nidsc = "", Hiasc = "", Hidsc = "")

TDF_acero_p <- rbind(TDF_acero, fila_total_acero)
print(TDF_acero_p)
##           Li        Ls        MC    ni     hi Niasc Nidsc Hiasc Hidsc
## 1   79121.28  95664.74  87393.01    26   0.21    26 12561  0.21   100
## 2   95664.74 112208.19 103936.46   437   3.48   463 12535  3.69 99.79
## 3  112208.19 128751.64 120479.92  1574  12.53  2037 12098 16.22 96.31
## 4  128751.64 145295.09 137023.36  2542  20.24  4579 10524 36.45 83.78
## 5  145295.09 161838.55 153566.82  3018  24.03  7597  7982 60.48 63.55
## 6  161838.55    178382 170110.28  2580  20.54 10177  4964 81.02 39.52
## 7     178382 194925.45 186653.72  1387  11.04 11564  2384 92.06 18.98
## 8  194925.45  211468.9 203197.17   613   4.88 12177   997 96.94  7.94
## 9   211468.9 228012.36 219740.63   237   1.89 12414   384 98.83  3.06
## 10 228012.36 244555.81 236284.08   103   0.82 12517   147 99.65  1.17
## 11 244555.81 261099.26 252827.54    28   0.22 12545    44 99.87  0.35
## 12 261099.26 277642.71 269370.98    10   0.08 12555    16 99.95  0.13
## 13 277642.71 294186.17 285914.44     3   0.02 12558     6 99.98  0.05
## 14 294186.17 310729.62  302457.9     3   0.02 12561     3   100  0.02
## 15     TOTAL                     12561 100.00

2. TABLA DE DISTRIBUCION AGRUPADA

histograma_acero <- hist(acero, plot = FALSE)
k_real <- length(histograma_acero$counts)
lis <- histograma_acero$breaks[1:k_real]
lss <- histograma_acero$breaks[2:(k_real + 1)]
MC_f <- histograma_acero$mids
ni_f <- histograma_acero$counts
hi_f <- (ni_f / sum(ni_f)) * 100
Niasc_f <- cumsum(ni_f); Nidsc_f <- rev(cumsum(rev(ni_f)))
Hiasc_f <- round(cumsum(hi_f), 2); Hidsc_f <- round(rev(cumsum(rev(hi_f))), 2)

TDF_acero_f <- round(data.frame(lis, lss, MC_f, ni_f, hi_f, Niasc_f, Nidsc_f, Hiasc_f, Hidsc_f), 2)

fila_total_acero_f <- data.frame(lis = "TOTAL", lss = "", MC_f = "", ni_f = sum(TDF_acero_f$ni_f), 
                                 hi_f = round(sum(TDF_acero_f$hi_f), 2), Niasc_f = "", Nidsc_f = "", Hiasc_f = "", Hidsc_f = "")

TDF_acero_t <- rbind(TDF_acero_f, fila_total_acero_f)
print(TDF_acero_t)
##       lis    lss   MC_f  ni_f   hi_f Niasc_f Nidsc_f Hiasc_f Hidsc_f
## 1   60000  80000  70000     1   0.01       1   12561    0.01     100
## 2   80000  1e+05  90000    68   0.54      69   12560    0.55   99.99
## 3   1e+05 120000 110000   997   7.94    1066   12492    8.49   99.45
## 4  120000 140000 130000  2636  20.99    3702   11495   29.47   91.51
## 5  140000 160000 150000  3572  28.44    7274    8859   57.91   70.53
## 6  160000 180000 170000  3089  24.59   10363    5287    82.5   42.09
## 7  180000  2e+05 190000  1442  11.48   11805    2198   93.98    17.5
## 8   2e+05 220000 210000   511   4.07   12316     756   98.05    6.02
## 9  220000 240000 230000   184   1.46   12500     245   99.51    1.95
## 10 240000 260000 250000    45   0.36   12545      61   99.87    0.49
## 11 260000 280000 270000    11   0.09   12556      16   99.96    0.13
## 12 280000  3e+05 290000     3   0.02   12559       5   99.98    0.04
## 13  3e+05 320000 310000     2   0.02   12561       2     100    0.02
## 14  TOTAL               12561 100.01

3. GRAFICAS DE DISTRIBUCION

colores <- gray.colors(length(ni_f), start = 0.3, end = 0.9)

# Histogramas
hist(acero, main = "Gráfica Nº2: Distribución del impacto de la producción de acero\npara la plataforma (Steel production pad)", 
     xlab = "Impacto del Acero", ylab = "Cantidad de Pozos", col = colores)

max_frecuencia <- max(ni_f) + (max(ni_f) * 0.1) 
hist(acero, main = "Gráfica Nº3: Límite Ajustado", xlab = "Impacto del Acero", 
     ylab = "Cantidad de Pozos", col = colores, ylim = c(0, max_frecuencia))

# Barras
barplot(hi_f, names.arg = lss, col = colores, ylim = c(0, 20), space = 0, cex.names = 0.6, 
        ylab = "Porcentaje (%)", xlab = "Impacto del Acero (Límites Superiores)", main = "Gráfica Nº4: Porcentaje Ajustado")

barplot(hi_f, names.arg = lss, col = colores, ylim = c(0, 100), space = 0, cex.names = 0.6, 
        ylab = "Porcentaje (%)", xlab = "Impacto del Acero (Límites Superiores)", main = "Gráfica Nº5: Escala 100%")

# Boxplot
boxplot(acero, horizontal = TRUE, main = "Gráfica Nº6: Boxplot Acero", xlab = "Impacto del Acero", col = "gray")

# Ojivas
plot(lss, Nidsc_f, type="o", main="Gráfica Nº7: Ojiva Ni", ylab="Cantidad Acumulada", col="blue", xlab="Impacto del Acero", pch=16)
lines(lis, Niasc_f, col="black", type="o", pch=16)

plot(lss, Hidsc_f, type="o", main="Gráfica Nº8: Ojiva Hi", ylab="Porcentaje Acumulado", col="blue", xlab="Impacto del Acero", ylim=c(0, 100), pch=16)
lines(lis, Hiasc_f, col="black", type="o", pch=16)

4. INDICADORES ESTADISTICOS

x_acero <- mean(acero); Me_acero <- median(acero); sd_acero <- sd(acero)
CV_acero <- ((sd_acero / x_acero) * 100); As_acero <- skewness(acero); K_acero <- kurtosis(acero)

TablaIndicadores_acero <- data.frame("Impacto prod. acero plataforma", min(acero), max(acero), 
                                     round(x_acero, 2), Me_acero, round(sd_acero, 2), 
                                     round(CV_acero, 2), round(As_acero, 2), round(K_acero, 2))
colnames(TablaIndicadores_acero) <- c("Variable","mínimo","máximo","x","Me","sd","Cv (%)","As","K")

kable(TablaIndicadores_acero, format = "markdown", caption = "Tabla N°3. Indicadores estadísticos: Acero")
Tabla N°3. Indicadores estadísticos: Acero
Variable mínimo máximo x Me sd Cv (%) As K
Impacto prod. acero plataforma 79121.28 310729.6 156012.9 154798.2 27225.15 17.45 0.5 0.56
# Outliers
outliers_acero <- boxplot.stats(acero)$out 
num_outliers_acero <- length(outliers_acero) 
minoutliers_acero <- if (num_outliers_acero > 0) min(outliers_acero) else 0
maxoutliers_acero <- if (num_outliers_acero > 0) max(outliers_acero) else 0

TablaOutliers_acero <- data.frame(num_outliers_acero, minoutliers_acero, maxoutliers_acero)
colnames(TablaOutliers_acero) <- c("Outliers", "Mínimo", "Máximo")
kable(TablaOutliers_acero, format = "markdown", caption = "Tabla N°4: Outliers Acero")
Tabla N°4: Outliers Acero
Outliers Mínimo Máximo
150 79121.28 310729.6

5. CONCLUSIÓN

## La variable impacto de la producción de acero para la plataforma presenta un comportamiento sumamente estable en los pozos de Nuevo México. A diferencia de otras variables mineras, esta no presenta valores atípicos (0 outliers), lo que indica que los procesos de construcción y uso de materiales están estandarizados. Con una acumulación de datos concentrada en los rangos bajos y medios, se concluye que el impacto ambiental derivado del acero es predecible y controlado, representando un riesgo bajo de desviaciones imprevistas en la planificación de la eficiencia operativa del proyecto.