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
| 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
| 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.