Contextualización de la Base de Datos

La base corresponde a un conjunto de 100 registros de operaciones logísticas.
Las variables disponibles son:


knitr::opts_chunk$set(echo = TRUE)
library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(ggplot2)
library(tidyr)

Características Generales

datos <- read.csv("datos_negocios_extra_5_logistica.csv")

dim(datos)        # Número de filas y columnas
## [1] 100   4
names(datos)      # Nombres de las variables
## [1] "Ruta"                 "KM_Recorridos"        "Tiempo_Entrega_Horas"
## [4] "Costos_Operativos"
str(datos)        # Tipos de datos
## 'data.frame':    100 obs. of  4 variables:
##  $ Ruta                : chr  "Ruta Sur" "Ruta Norte" "Ruta Sur" "Ruta Oeste" ...
##  $ KM_Recorridos       : int  1796 4856 2909 3643 4753 4354 3956 2001 2962 1990 ...
##  $ Tiempo_Entrega_Horas: num  17.2 29.8 13.3 12.7 23.1 1.1 46.8 45.5 10.2 32.7 ...
##  $ Costos_Operativos   : num  17459 9828 11964 18626 12812 ...
head(datos)       # Primeras filas
##         Ruta KM_Recorridos Tiempo_Entrega_Horas Costos_Operativos
## 1   Ruta Sur          1796                 17.2          17458.55
## 2 Ruta Norte          4856                 29.8           9828.49
## 3   Ruta Sur          2909                 13.3          11964.23
## 4 Ruta Oeste          3643                 12.7          18625.55
## 5  Ruta Este          4753                 23.1          12811.67
## 6 Ruta Oeste          4354                  1.1          19844.28

Análisis de Variables

Variables Numéricas

summary(select(datos, KM_Recorridos, Tiempo_Entrega_Horas, Costos_Operativos))
##  KM_Recorridos  Tiempo_Entrega_Horas Costos_Operativos
##  Min.   : 166   Min.   : 1.10        Min.   : 1009    
##  1st Qu.:1471   1st Qu.:13.07        1st Qu.: 5189    
##  Median :2729   Median :25.90        Median :10408    
##  Mean   :2576   Mean   :25.54        Mean   :11049    
##  3rd Qu.:3551   3rd Qu.:39.67        3rd Qu.:16304    
##  Max.   :4948   Max.   :47.60        Max.   :19844

Histogramas

ggplot(datos, aes(x = KM_Recorridos)) + 
  geom_histogram(fill="steelblue", bins=10) + 
  labs(title="Distribución de KM Recorridos")

ggplot(datos, aes(x = Tiempo_Entrega_Horas)) + 
  geom_histogram(fill="purple", bins=10) + 
  labs(title="Distribución de Tiempo de Entrega (Horas)")

ggplot(datos, aes(x = Costos_Operativos)) + 
  geom_histogram(fill="tomato", bins=10) + 
  labs(title="Distribución de Costos Operativos")


Boxplots

ggplot(datos, aes(y = KM_Recorridos)) + geom_boxplot(fill="steelblue") + labs(title="Boxplot KM Recorridos")

ggplot(datos, aes(y = Tiempo_Entrega_Horas)) + geom_boxplot(fill="purple") + labs(title="Boxplot Tiempo Entrega")

ggplot(datos, aes(y = Costos_Operativos)) + geom_boxplot(fill="tomato") + labs(title="Boxplot Costos Operativos")


Variables Categóricas

table(datos$Ruta)
## 
##  Ruta Este Ruta Norte Ruta Oeste   Ruta Sur 
##         20         21         30         29
ggplot(datos, aes(x = Ruta)) + 
  geom_bar(fill="orange") +
  labs(title="Frecuencia de Rutas")

Valores Faltantes

colSums(is.na(datos))
##                 Ruta        KM_Recorridos Tiempo_Entrega_Horas 
##                    0                    0                    0 
##    Costos_Operativos 
##                    0

Distribuciones Muestrales

Media Muestral

N <- nrow(datos) 
mu_hat <- mean(datos$Costos_Operativos)
s <- sd(datos$Costos_Operativos)
n <- 30  # tamaño muestral
SE <- (s/sqrt(n)) * sqrt((N-n)/(N-1)) # con corrección poblacional finita

mu_hat; s; SE
## [1] 11048.7
## [1] 5736.227
## [1] 880.6374

Probabilidades

# P(X̄ > c)
c <- 15000
1 - pnorm(c, mean = mu_hat, sd = SE)
## [1] 3.614035e-06
# P(a < X̄ < b)
a <- 12000; b <- 16000
pnorm(b, mean = mu_hat, sd = SE) - pnorm(a, mean = mu_hat, sd = SE)
## [1] 0.1400185

Proporción Muestral

datos <- datos %>% mutate(Entrega_Lenta = ifelse(Tiempo_Entrega_Horas > 20, 1, 0))

p_hat <- mean(datos$Entrega_Lenta)
n <- 30
SE_p <- sqrt((p_hat*(1-p_hat)/n) * (N-n)/(N-1))

p_hat; SE_p
## [1] 0.61
## [1] 0.07488038

Probabilidades

# P( p̂ > 0.5 )
1 - pnorm(0.5, mean = p_hat, sd = SE_p)
## [1] 0.9290849
# P(0.2 < p̂ < 0.4)
pnorm(0.4, mean = p_hat, sd = SE_p) - pnorm(0.2, mean = p_hat, sd = SE_p)
## [1] 0.002519923

Conclusiones