ANÁLISIS ESTADÍSTICO

1. CARGA DE LIBRERÍAS Y DATOS

#=========================ENCABEZADO================================
# TEMA: REGRESION LOGARITMICA
# AUTOR: GRUPO 3
# FECHA: 03-2026
#===================================================================
library(dplyr)
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 con gt) ---
tabla_tpv_previa <- head(tabla_media, 20)
tabla_tpv_previa <- cbind(Nro = 1:nrow(tabla_tpv_previa), tabla_tpv_previa)

tabla_tpv_previa %>% 
  gt() %>%
  cols_label(Nro = "N°", distancia = "Distancia (x)", combustible = "Combustible Medio (y)") %>%
  tab_header(title = md("**Tabla N° 4. Pares de Valores: Medias por Distancia**")) %>%
  cols_align(align = "center") %>%
  tab_options(table.width = pct(80), column_labels.font.weight = "bold")
Tabla N° 4. Pares de Valores: Medias por Distancia
Distancia (x) Combustible Medio (y)
1 1.007988 22.76711
2 1.066009 21.51087
3 1.168891 23.23469
4 1.313503 19.90091
5 1.526249 19.62406
6 1.531503 24.30075
7 1.596228 20.42170
8 1.706558 21.31100
9 1.993463 26.92919
10 2.092642 25.99086
11 2.175377 23.91958
12 2.554074 27.32648
13 2.732618 24.86869
14 2.857223 30.78910
15 2.900294 26.41916
16 3.033605 26.08268
17 3.120096 28.41892
18 3.157722 32.06963
19 3.194102 32.63347
20 3.249830 28.94034
# 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

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 DE MODELO

# 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 comparación 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 Ecuación de forma limpia en el gráfico
eq_text <- paste0("Ecuacion logaritmica: Y = ", round(a, 2), " + ", round(b, 2), " log(x)")
mtext(eq_text, side = 3, line = -2, cex = 1.2, col = "red", font = 2)

5. TEST DE APROBACION Y RESTRICCIONES

# ==========================================================
# 5. TEST DE APROBACION Y RESTRICCIONES
# ==========================================================
# Coeficiente de Pearson (sobre la transformacion)
r <- cor(x1, y)

tabla_tests <- data.frame(
  Indicador = c("Coeficiente de Pearson (r)"),
  Valor = c(paste0(round(r * 100, 2), " %"))
)

# Imprimir la tabla de indicadores
tabla_tests %>% 
  gt() %>%
  tab_header(title = md("**Test de Aprobación del Modelo Logarítmico**")) %>%
  cols_align(align = "center") %>%
  tab_options(table.width = pct(60), column_labels.font.weight = "bold")
Test de Aprobación del Modelo Logarítmico
Indicador Valor
Coeficiente de Pearson (r) 92.87 %
# Generación de la tarjeta gráfica independiente de restricciones
plot.new()
plot.window(xlim = c(0, 100), ylim = c(0, 100))

text(50, 85, "RESTRICCIONES DEL MODELO", cex = 1.4, font = 2, col = "#D9534F")

parrafo_1 <- "El modelo no es valido para distancias menores o iguales a cero."
parrafo_2 <- "Para valores cercanos a cero, el modelo podria predecir consumos negativos."

text(50, 55, parrafo_1, cex = 1.1, font = 3, col = "black")
text(50, 43, parrafo_2, cex = 1.1, font = 3, col = "black")

rect(2, 5, 98, 95, border = "#D9534F", lwd = 3)

6. CALCULO DE PRONOSTICOS

# ==========================================================
# 6. CALCULO DE PRONOSTICOS (GRAFICA N4)
# ==========================================================
x_pronostico <- 150 # Ejemplo de distancia
C_esp <- a + b * log(x_pronostico)

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 LOGARÍTMICO", cex = 1.5, font = 2, col = "#2A9D8F")

texto_pregunta <- paste0("¿Cual seria el combustible esperado si la distancia es de ", x_pronostico, "?")
text(50, 0.75, texto_pregunta, cex = 1.1, font = 3)

text(50, 0.5, paste0("R: ", round(C_esp, 2)), cex = 1.6, font = 2, col = "#1F618D")
rect(10, 0.4, 90, 0.6, border = "#2A9D8F", lwd = 2)

7. CONCLUSION

## Entre la distancia y el consumo de combustible existe una relación logarítmica, representada por el modelo f(x) = 19.95 + 8.01 ln(x). Ejemplo: Para una distancia de 150, el modelo predice un consumo de 60.09.