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