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