ANÁLISIS ESTADÍSTICO
1. CARGA DE LIBRERÍAS Y DATOS
#=========================ENCABEZADO================================
# TEMA: REGRESION LINEAL
# AUTOR: GRUPO 3
# FECHA: 03-2026
#========================================================================
# 1. CARGA DE LIBRERÍAS Y DATOS
library(dplyr)
library(knitr)
library(gt)
setwd("C:/Users/HP/Documents/PROYECTO ESTADISTICA/RStudio")
datos <- read.csv("tablap.csv", header = TRUE, dec = ",", sep = ";")
2. TABLA PARES DE VALORES
# Extraer variables y asegurar formato numérico
acero <- as.numeric(datos$Impact.steel.production..pad.)
concreto <- as.numeric(datos$Impact.concrete.production..pad.)
# Crear TPV y limpieza
TPV <- data.frame(acero = acero, concreto = concreto)
TPV <- na.omit(TPV)
TPV <- TPV[TPV$acero > 0 & TPV$concreto > 0, ]
TPV <- TPV[order(TPV$acero), ]
row.names(TPV) <- NULL
# Preparación para gt (Vista previa 20 registros)
tabla_tpv_previa <- head(TPV, 20)
tabla_tpv_previa <- cbind(Nro = 1:nrow(tabla_tpv_previa), tabla_tpv_previa)
tabla_tpv_previa %>%
gt() %>%
cols_label(Nro = "N°", acero = "Impacto Acero (x)", concreto = "Impacto Concreto (y)") %>%
tab_header(title = md("**Tabla N° 4. Pares de Valores: Acero vs. Concreto**")) %>%
cols_align(align = "center") %>%
tab_options(table.width = pct(80), column_labels.font.weight = "bold")
| Tabla N° 4. Pares de Valores: Acero vs. Concreto |
| N° |
Impacto Acero (x) |
Impacto Concreto (y) |
| 1 |
79121.28 |
97235.00 |
| 2 |
86303.17 |
109599.82 |
| 3 |
87371.92 |
107961.08 |
| 4 |
87650.31 |
99532.19 |
| 5 |
87995.49 |
99247.84 |
| 6 |
88151.53 |
99635.53 |
| 7 |
88237.84 |
97003.86 |
| 8 |
89312.16 |
104747.23 |
| 9 |
89415.80 |
98179.62 |
| 10 |
90606.91 |
101637.59 |
| 11 |
91389.82 |
110924.47 |
| 12 |
92150.68 |
103595.68 |
| 13 |
92173.70 |
100980.92 |
| 14 |
92984.68 |
100739.89 |
| 15 |
93365.85 |
106085.49 |
| 16 |
93466.77 |
111858.87 |
| 17 |
93726.23 |
111970.18 |
| 18 |
93822.72 |
107179.81 |
| 19 |
94049.59 |
104890.13 |
| 20 |
94736.23 |
96273.19 |
# Definición de variables finales para cálculos
x <- TPV$acero
y <- TPV$concreto
3. DIAGRAMA DE DISPERSION
set.seed(123)
indice_visual <- sample(1:nrow(TPV), nrow(TPV) / 20)
plot(x[indice_visual], y[indice_visual],
pch = 16, col = "blue",
main = "Gráfica N.1: Diagrama de dispersión entre Impacto \n producción de acero e impacto producción de concreto",
xlab = "Impacto producción de acero (pad)",
ylab = "Impacto producción de concreto (pad)")

4. CONJETURA DE MODELO
# Cálculo de parámetros
regresion_lineal <- lm(y ~ x)
a_intercepto <- coef(regresion_lineal)[1]
b_pendiente <- coef(regresion_lineal)[2]
# Gráfica comparativa
plot(x[indice_visual], y[indice_visual],
pch = 16, col = "blue",
main = "Gráfica N.2: Comparación de la realidad con el modelo lineal",
xlab = "Impacto producción de acero (pad)",
ylab = "Impacto producción de concreto (pad)")
abline(regresion_lineal, col = "red", lwd = 2)
# Ecuación del Modelo
eq_text <- paste0("Ecuación lineal: Y = ", round(b_pendiente, 4), "x + ", round(a_intercepto, 4))
mtext(eq_text, side = 3, line = -2, cex = 1.2, col = "red", font = 2)

5. TEST DE APROBACION Y RESTRICCIONES
## **5. TEST DE APROBACIÓN Y RESTRICCIONES**
# 1. CÁLCULO DE INDICADORES
r <- cor(x, y)
r
## [1] 0.9658848
r2 <- r^2
r2
## [1] 0.9329335
tabla_tests <- data.frame(
Indicador = c("Coeficiente de Pearson (r)", "Coeficiente de Determinación (R2)", "Estado"),
Valor = c(paste0(round(r * 100, 2), " %"), paste0(round(r2 * 100, 2), " %"), "Aceptado")
)
# Imprimir la tabla de indicadores
tabla_tests %>%
gt() %>%
tab_header(title = md("**Tabla N° 5. Tests de Aprobación del Modelo Lineal**")) %>%
cols_align(align = "center") %>%
tab_options(table.width = pct(60), column_labels.font.weight = "bold")
| Tabla N° 5. Tests de Aprobación del Modelo Lineal |
| Indicador |
Valor |
| Coeficiente de Pearson (r) |
96.59 % |
| Coeficiente de Determinación (R2) |
93.29 % |
| Estado |
Aceptado |
# 2. CÁLCULO MATEMÁTICO DE LA RESTRICCIÓN (Despeje de X cuando Y = 0)
# Formula: 0 = b*x + a -> x = -a / b
x_restriccion <- -a_intercepto / b_pendiente
# 3. GENERA EL PLOT INDEPENDIENTE DE RESTRICCIONES
plot.new()
plot.window(xlim = c(0, 100), ylim = c(0, 100))
# Título de la tarjeta
text(50, 88, "RESTRICCIONES DEL MODELO", cex = 1.4, font = 2, col = "#D9534F")
# Representación de la ecuación de despeje adaptada a tus datos reales
linea_formula_1 <- paste0("0 = ", round(b_pendiente, 4), "x + (", round(a_intercepto, 4), ")")
linea_formula_2 <- paste0("x = ", round(x_restriccion, 2))
text(50, 72, linea_formula_1, cex = 1.15, font = 2, col = "#2A9D8F")
text(50, 60, linea_formula_2, cex = 1.25, font = 2, col = "#2A9D8F")
# Texto explicativo acoplado a la realidad de tu gráfica
parrafo_1 <- "Sí existe restricción, ya que el impacto en la producción de concreto"
parrafo_2 <- "no puede tomar valores negativos. Al reemplazar valores de impacto"
parrafo_3 <- paste0("de acero menores a ", round(x_restriccion, 2), " pad, el modelo matemático predice")
parrafo_4 <- "un impacto de concreto menor a cero, quedando fuera del dominio real."
text(50, 44, parrafo_1, cex = 1.05, font = 3, col = "black")
text(50, 36, parrafo_2, cex = 1.05, font = 3, col = "black")
text(50, 28, parrafo_3, cex = 1.05, font = 3, col = "black")
text(50, 20, parrafo_4, cex = 1.05, font = 3, col = "black")
# Marco exterior de color rojo de advertencia
rect(-4, 5, 104, 95, border = "#D9534F", lwd = 3)

6. CALCULO DE PRONOSTICOS
x_prueba <- 100
pronostico <- (b_pendiente * x_prueba) + a_intercepto
plot.new()
plot.window(xlim = c(0, 100), ylim = c(0, 1))
rect(10, 0.4, 90, 0.6, col = "#E5E7E9", border = NA)
text(50, 0.85, "PRONÓSTICO DEL MODELO", cex = 1.5, font = 2, col = "#2A9D8F")
text(50, 0.75, paste0("¿Qué impacto en concreto se espera con un
impacto de acero de ", x_prueba, " pad?"), cex = 1.1,
font= 3)
text(50, 0.5, paste0("R: ", round(pronostico, 4), " pad"), cex = 1.6, font = 2, col = "#1F618D")
rect(10, 0.4, 90, 0.6, border = "#2A9D8F", lwd = 2)

7. CONCLUSION
## Entre la producción de acero y la de concreto existe una relación tipo lineal representada por el modelo f(x) = 1.0611x + -5276.7378. El impacto del acero influye en un 93.29% sobre la variabilidad del concreto. Como se demostró en el pronóstico, para un impacto de acero de 100 pad, se espera un impacto de -5170.63 pad en el concreto.