# ==========================================================
# 1. CARGA DE LIBRERIAS 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)
# Configuracion de directorio y carga de archivo
setwd("C:/Users/HP/Documents/PROYECTO ESTADISTICA/RStudio")
datos <- read.csv("tablap.csv", header = TRUE, sep = ";", dec = ",")
# ==========================================================
# 2. TABLA PARES DE VALORES
# ==========================================================
# Extraer variables y asegurar formato numerico
distancia <- as.numeric(datos$Distance.estimation)
combustible <- as.numeric(datos$Fuel.consumed.for.of.excavating..slope.)
# Crear TPV inicial y limpiar datos (NA, Ceros y Negativos)
TPV <- data.frame(distancia = distancia, combustible = combustible)
TPV <- na.omit(TPV)
TPV <- TPV[TPV$distancia > 0 & TPV$combustible > 0, ]
# --- PROCESAMIENTO: AGREGACION POR MEDIA ---
# Siguiendo tu guia: Para una X se calcula la media de las Y
tabla_media <- aggregate(combustible ~ distancia, data = TPV, FUN = mean)
# --- RESETEAR NUMERACION DE FILAS ---
row.names(tabla_media) <- NULL
# --- MOSTRAR TABLA (Primeros 20 registros procesados) ---
cat("TABLA DE PARES DE VALORES (Medias por distancia):\n")
## TABLA DE PARES DE VALORES (Medias por distancia):
print(head(tabla_media, 20))
## distancia combustible
## 1 1.000000 6967
## 2 1.398010 316
## 3 1.796019 1491
## 4 2.194029 2546
## 5 2.592038 2947
## 6 2.990048 4677
## 7 3.388057 6595
## 8 3.786067 5144
## 9 4.184076 5765
## 10 4.582086 2874
## 11 4.980096 6231
## 12 5.378105 10402
## 13 5.776115 6043
## 14 6.174124 14102
## 15 6.572134 1670
## 16 6.970143 3038
## 17 7.368153 7589
## 18 7.766162 7596
## 19 8.164172 8271
## 20 8.562182 7931
# Definicion de variables finales
x <- tabla_media$distancia # Variable Independiente
y <- tabla_media$combustible # Variable Dependiente
# Seleccion aleatoria del 50% solo para representacion visual (Graficas)
set.seed(123)
indice_visual <- sample(1:nrow(tabla_media), nrow(tabla_media) / 14)
# ==========================================================
# 3. DIAGRAMA DE DISPERSION (GRAFICA N1)
# ==========================================================
plot(x[indice_visual], y[indice_visual],
pch = 16,
col = rgb(0, 0, 0.8), # Azul con transparencia para densidad
main = "Grafica NÂș1: Diagrama de dispersion entre la Distancia \n y el Combustible consumido",
xlab = "Estimacion de distancia",
ylab = "Combustible consumido")

# ==========================================================
# 4. CONJETURA DEL MODELO (LOGARITMICO)
# ==========================================================
# Aplicacion de transformacion logaritmica a la variable X
x1 <- log(x)
# Calculo de parametros del modelo
regresion_logaritmico <- lm(y ~ x1)
a <- coef(regresion_logaritmico)[1]
b <- coef(regresion_logaritmico)[2]
# Graficar comparacion realidad vs modelo (GRAFICA N2)
plot(x[indice_visual], y[indice_visual],
pch = 16,
col = rgb(0, 0, 0.8),
main = "Grafica NÂș2: Comparacion de la realidad con el modelo logaritmico",
xlab = "Distancia",
ylab = "Combustible")
curve(a + b*log(x), from = min(x), to = max(x), add = TRUE, col = "red", lwd = 3)

# Mostrar Ecuacion en pantalla (GRAFICA N3)
plot(1, type = "n", axes = FALSE, xlab = "", ylab = "")
eq <- paste0("Ecuacion logaritmica\n",
"Y = a + b log(x)\n",
"Y = ", round(a, 2), " + ", round(b, 2), " log(x)")
text(1, 1, labels = eq, cex = 1.7, col = "blue", font = 2)

# ==========================================================
# 5. TEST DE APROBACION Y RESTRICCIONES
# ==========================================================
# Coeficiente de Pearson (sobre la transformacion)
r <- cor(x1, y)
cat("\nTest de Pearson (r*100):", round(r * 100, 2), "%\n")
##
## Test de Pearson (r*100): 56.92 %
# Restricciones
cat("\nRESTRICCIONES:\n")
##
## RESTRICCIONES:
cat("El modelo no es valido para distancias menores o iguales a cero.
Para valores cercanos a cero, el modelo podria predecir consumos negativos.")
## El modelo no es valido para distancias menores o iguales a cero.
## Para valores cercanos a cero, el modelo podria predecir consumos negativos.
# ==========================================================
# 6. CALCULO DE PRONOSTICOS (GRAFICA N4)
# ==========================================================
x_pronostico <- 150 # Ejemplo de distancia
C_esp <- a + b * log(x_pronostico)
plot(1, type = "n", axes = FALSE, xlab = "", ylab = "")
text(x = 1, y = 1,
labels = paste0("Grafica NÂș4: Pronostico\n\n",
"Cual seria el combustible esperado si la \n distancia es de ", x_pronostico, "?\n\n R = ", round(C_esp, 2)),
cex = 1.5, col = "blue", font = 2)

# ==========================================================
# 7. CONCLUSION
# ==========================================================
cat("\n--- CONCLUSION ---\n")
##
## --- CONCLUSION ---
cat(paste0("Entre la distancia y el consumo de combustible existe una relacion logaritmica, "))
## Entre la distancia y el consumo de combustible existe una relacion logaritmica,
cat(paste0("representada por el modelo f(x) = ", round(a, 2), " + ", round(b, 2), " ln(x). "))
## representada por el modelo f(x) = 1454.51 + 2438.17 ln(x).
cat(paste0("Ejemplo: Para una distancia de ", x_pronostico, ", el modelo predice un consumo de ", round(C_esp, 2), "."))
## Ejemplo: Para una distancia de 150, el modelo predice un consumo de 13671.27.