# ==========================================================
# 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(knitr)
library(gt)
# Configuración de directorio y carga de archivo
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
TPV <- data.frame(acero = acero, concreto = concreto)
# Limpieza de datos: Omitir NA, Negativos y Ceros
TPV <- na.omit(TPV)
TPV <- TPV[TPV$acero > 0 & TPV$concreto > 0, ]
# Ordenar la tabla por acero
TPV <- TPV[order(TPV$acero), ]
# --- RESETEAR NUMERACIÓN DE FILAS ---
# Esto hace que la numeración sea 1, 2, 3... en orden
row.names(TPV) <- NULL
# --- MOSTRAR TABLA ---
cat("TABLA DE PARES DE VALORES (Vista previa de los primeros 20 registros):\n")
## TABLA DE PARES DE VALORES (Vista previa de los primeros 20 registros):
print(head(TPV, 20))
## acero concreto
## 1 61 1192.0000
## 2 63 14486.0000
## 3 252 268.2254
## 4 263 4265.0000
## 5 276 151.3906
## 6 299 423.7084
## 7 301 451.6449
## 8 311 217.4264
## 9 393 1317.0000
## 10 407 3183.0000
## 11 411 183.9818
## 12 413 1258.0000
## 13 417 134.7734
## 14 427 3297.0000
## 15 478 354.0747
## 16 479 33353.0000
## 17 492 123.5320
## 18 557 297.0455
## 19 590 405.2918
## 20 603 113.7859
# Definición de variables finales
x <- TPV$acero
y <- TPV$concreto
# Selección aleatoria del 50% solo para la representación visual (Gráficas)
set.seed(123)
indice_visual <- sample(1:nrow(TPV), nrow(TPV) / 20)
# ==========================================================
# 3. DIAGRAMA DE DISPERSIÓN (VISTA 50%)
# ==========================================================
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 DEL MODELO
# ==========================================================
# Cálculo de parámetros lineales sobre el total de datos
regresion_lineal <- lm(y ~ x)
a_intercepto <- coef(regresion_lineal)[1]
b_pendiente <- coef(regresion_lineal)[2]
# Gráfica comparativa con la recta de regresión (Puntos 50%)
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)

# Mostrar Ecuación Lineal
plot(1, type = "n", axes = FALSE, xlab = "", ylab = "")
eq_text <- paste0("Ecuación lineal\n Y = bx + a\n Y = ",
round(b_pendiente, 4), "x + ", round(a_intercepto, 4))
text(x = 1, y = 1, labels = eq_text, cex = 1.5, col = "blue", font = 2)

# ==========================================================
# 5. TEST DE APROBACIÓN Y RESTRICCIONES
# ==========================================================
# Test de Pearson
r <- cor(x, y)
cat("\nTest de Pearson (r*100):", round(r * 100, 2), "%\n")
##
## Test de Pearson (r*100): 94.12 %
# Coeficiente de determinación (R^2)
r2 <- r^2
cat("Coeficiente de determinación (R2*100):", round(r2 * 100, 2), "%\n")
## Coeficiente de determinación (R2*100): 88.59 %
# Restricciones
cat("\nRESTRICCIONES:\n")
##
## RESTRICCIONES:
cat("Se debe validar que los valores de producción no resulten negativos según el modelo.")
## Se debe validar que los valores de producción no resulten negativos según el modelo.
# ==========================================================
# 6. CÁLCULO DE PRONÓSTICOS
# ==========================================================
x_prueba <- 100
pronostico <- (b_pendiente * x_prueba) + a_intercepto
plot(1, type = "n", axes = FALSE, xlab = "", ylab = "")
text(x = 1, y = 1,
labels = paste0("¿Qué impacto en concreto se espera\n con un impacto de acero de ", x_prueba, " pad?\n\n R = ", round(pronostico, 4), " pad"),
cex = 1.5, col = "blue", font = 2)

# ==========================================================
# 7. CONCLUSIÓN
# ==========================================================
cat("\n--- CONCLUSIÓN ---\n")
##
## --- CONCLUSIÓN ---
cat(paste0("Entre la producción de acero y la de concreto existe una relación tipo lineal "))
## Entre la producción de acero y la de concreto existe una relación tipo lineal
cat(paste0("representada por el modelo f(x) = ", round(b_pendiente, 4), "x + ", round(a_intercepto, 4), ". "))
## representada por el modelo f(x) = 1.3808x + 1825.6326.
cat(paste0("El impacto del acero influye en un ", round(r2 * 100, 2), "% sobre la variabilidad del concreto. "))
## El impacto del acero influye en un 88.59% sobre la variabilidad del concreto.
cat(paste0("Ejemplo: Para un impacto de acero de ", x_prueba, " pad, se espera un impacto de ", round(pronostico, 2), " pad en el concreto."))
## Ejemplo: Para un impacto de acero de 100 pad, se espera un impacto de 1963.71 pad en el concreto.