# 1. CARGA DE LIBRERÍAS Y DATOS
library(dplyr)
##
## Adjuntando el paquete: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
library(e1071)
library(knitr)
setwd("C:/Users/HP/Documents/PROYECTO ESTADISTICA/RStudio")
datos <- read.csv("tablap.csv", header = TRUE, dec = ",", sep = ";")
#TABLA DE DISTRIBUCION DE CANTIDAD POR STURGES#
# 1. Limpieza y preparación de la variable
acero <- as.numeric(datos$Impact.steel.production..pad.)
acero <- na.omit(acero)
acero <- subset(acero, acero >= 0)
# TABLA DE DISTRIBUCIÓN DE CANTIDAD POR STURGES
# Calculamos el número de datos
n <- length(acero)
# Número de clases con Sturges
k <- floor(1 + 3.3 * log10(n))
# Min, Max
minimo <- min(acero)
maximo <- max(acero)
# Rango
R <- maximo - minimo
# Amplitud
A <- R / k
# Límites inferior (Li) y superior (Ls)
Li <- round(seq(from = minimo, to = maximo - A, by = A), 2)
Ls <- round(seq(from = minimo + A, to = maximo, by = A), 2)
# Sincronización de longitudes
if(length(Ls) > length(Li)) Ls <- Ls[1:length(Li)]
if(length(Li) > length(Ls)) Li <- Li[1:length(Ls)]
# Marca de clase
MC <- round((Li + Ls) / 2, 2)
# Frecuencia Absoluta (ni)
ni <- numeric(length(Li))
for (i in 1:length(Li)) {
ni[i] <- sum(acero >= Li[i] & acero < Ls[i])
}
# Ajuste para el último intervalo
ni[length(Li)] <- sum(acero >= Li[length(Li)] & acero <= maximo)
# Frecuencia Relativa (hi)
hi <- (ni / sum(ni)) * 100
# Frecuencias Acumuladas
Niasc <- cumsum(ni)
Nidsc <- rev(cumsum(rev(ni)))
Hiasc <- round(cumsum(hi), 2)
Hidsc <- round(rev(cumsum(rev(hi))), 2)
# TABLA FINAL
TDF_acero <- round(data.frame(
Li, Ls, MC, ni, hi, Niasc, Nidsc, Hiasc, Hidsc
), 2)
# Visualizar Tabla
TDF_acero
## Li Ls MC ni hi Niasc Nidsc Hiasc Hidsc
## 1 79121.28 95664.74 87393.01 26 0.21 26 12561 0.21 100.00
## 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.00 170110.28 2580 20.54 10177 4964 81.02 39.52
## 7 178382.00 194925.45 186653.72 1387 11.04 11564 2384 92.06 18.98
## 8 194925.45 211468.90 203197.17 613 4.88 12177 997 96.94 7.94
## 9 211468.90 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.90 3 0.02 12561 3 100.00 0.02
#Fila total de las sumas de ni y hi#
# FILA TOTAL
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 = ""
)
# TABLA FINAL (Unión de la tabla con los totales)
TDF_acero_p <- rbind(TDF_acero, fila_total_acero)
# Visualizar el resultado en consola
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
# TABLA DE DISTRIBUCION DE CANTIDAD SIMPLIFICADA
histograma_acero <- hist(acero, plot = FALSE)
# 1. Detectar la longitud real del histograma para evitar errores de filas
k_real <- length(histograma_acero$counts)
# LIMITE INFERIOR SIMPLIFICADA
lis <- histograma_acero$breaks[1:k_real]
# LIMITE SUPERIOR SIMPLIFICADA
lss <- histograma_acero$breaks[2:(k_real + 1)]
# MARCA DE CLASE
MC_f <- histograma_acero$mids
# Frecuencia absoluta (ni)
ni_f <- histograma_acero$counts
# Frecuencia relativa (hi)
hi_f <- (ni_f / sum(ni_f)) * 100
# Frecuencias Acumuladas
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)
# TABLA FINAL SIMPLIFICADA
TDF_acero_f <- round(data.frame(
lis, lss, MC_f, ni_f, hi_f, Niasc_f, Nidsc_f, Hiasc_f, Hidsc_f
), 2)
# Visualizar la tabla simplificada
print(TDF_acero_f)
## 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.00
## 2 80000 100000 90000 68 0.54 69 12560 0.55 99.99
## 3 100000 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.50 42.09
## 7 180000 200000 190000 1442 11.48 11805 2198 93.98 17.50
## 8 200000 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 300000 290000 3 0.02 12559 5 99.98 0.04
## 13 300000 320000 310000 2 0.02 12561 2 100.00 0.02
# --- FILA TOTAL DE LAS SUMAS DE ni Y hi (SIMPLIFICADA) ---
# FILA TOTAL
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 = ""
)
# UNIÓN DE LA TABLA SIMPLIFICADA CON SU FILA TOTAL
TDF_acero_t <- rbind(TDF_acero_f, fila_total_acero_f)
# Visualizar la tabla simplificada final en consola
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
#GRÁFICAS DE DISTRIBUCIÓN DE CANTIDAD#
# 1. Definir colores de las barras
colores <- gray.colors(length(ni_f), start = 0.3, end = 0.9)
# 2. Histograma de cantidad (Gráfica Nº2)
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 (unidades de impacto)",
ylab = "Cantidad de Pozos",
col = colores
)

# HISTOGRAMA CON LÍMITE AJUSTADO
max_frecuencia <- max(ni_f) + (max(ni_f) * 0.1)
hist(
acero,
main = "Gráfica Nº3: Distribución del impacto de la producción de acero\npara la plataforma (Steel production pad)",
xlab = "Impacto del Acero (unidades de impacto)",
ylab = "Cantidad de Pozos",
col = colores,
ylim = c(0, max_frecuencia)
)

# --- HISTOGRAMA DE CANTIDAD EN PORCENTAJE ---
etiquetas_x <- lss
barplot(
hi_f,
names.arg = etiquetas_x,
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: Distribución de cantidad en porcentaje del\nimpacto de acero en las plataformas de los pozos",
las = 1
)

barplot(
hi_f,
names.arg = etiquetas_x,
col = colores,
ylim = c(0, 100),
cex.names = 0.6,
space = 0,
ylab = "Porcentaje (%)",
xlab = "Impacto del Acero (Límites Superiores)",
main = "Gráfica Nº5: Distribución de cantidad en porcentaje del\nimpacto de acero en las plataformas de los pozos",
las = 1
)

# DIAGRAMA DE CAJA
boxplot(
acero,
horizontal = TRUE,
main = "Gráfica Nº6: Distribución del impacto de la producción de acero\npara la plataforma (Steel production pad)",
xlab = "Impacto del Acero (unidades de impacto)",
col = "gray"
)

# PREPARACIÓN PARA OJIVAS
Niasc_f <- as.numeric(TDF_acero_f$Niasc_f)
Nidsc_f <- as.numeric(TDF_acero_f$Nidsc_f)
Hiasc_f <- as.numeric(TDF_acero_f$Hiasc_f)
Hidsc_f <- as.numeric(TDF_acero_f$Hidsc_f)
# GRÁFICA Nº7: OJIVAS COMBINADAS Ni
plot(lss, Nidsc_f, type="o",
main="Gráfica Nº7: Ojiva combinada del impacto del acero\n(Ni)",
ylab="Cantidad Acumulada",
col="blue",
xlab="Impacto del Acero",
pch=16)
lines(lis, Niasc_f, col="black", type="o", pch=16)

# GRÁFICA Nº8: OJIVAS COMBINADAS Hi
plot(lss, Hidsc_f, type="o",
main="Gráfica Nº8: Ojiva combinada del impacto del acero\n(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)

# INDICADORES ESTADÍSTICOS Y OUTLIERS
summary(acero)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 79121 136521 154798 156013 173025 310730
x_acero <- mean(acero)
ri_acero <- min(acero)
rs_acero <- max(acero)
Me_acero <- median(acero)
sd_acero <- sd(acero)
CV_acero <- ((sd_acero / x_acero) * 100)
As_acero <- skewness(acero)
K_acero <- kurtosis(acero)
Variable_nombre <- c("Impacto prod. acero plataforma")
TablaIndicadores_acero <- data.frame(
Variable_nombre,
ri_acero,
rs_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 de la variable impacto de la producción de acero para la plataforma (Steel production pad)")
Tabla N°3. Indicadores estadísticos de la variable impacto de
la producción de acero para la plataforma (Steel production
pad)
| Impacto prod. acero plataforma |
79121.28 |
310729.6 |
156012.9 |
154798.2 |
27225.15 |
17.45 |
0.5 |
0.56 |
# TABLA DE OUTLIERS
outliers_acero <- boxplot.stats(acero)$out
num_outliers_acero <- length(outliers_acero)
if (num_outliers_acero > 0) {
minoutliers_acero <- min(outliers_acero)
maxoutliers_acero <- max(outliers_acero)
} else {
minoutliers_acero <- 0
maxoutliers_acero <- 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 de la variable impacto de la producción de acero.")
Tabla N°4: Outliers de la variable impacto de la producción de
acero.
| 150 |
79121.28 |
310729.6 |
# CONCLUCION
"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."
## [1] "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."