# Cargar las librerías necesarias
library(readxl)
library(ggplot2)
# Cargar los datos
datos <- read_excel("tiempos-de-servicio.xlsx")
tiempos_atencion <- datos$tiempo
# Calcular la media
media <- mean(tiempos_atencion, na.rm = TRUE)
# Calcular la mediana
mediana <- median(tiempos_atencion, na.rm = TRUE)
# Calcular cuartiles
cuartiles <- quantile(tiempos_atencion, probs = c(0.25, 0.5, 0.75))
# Calcular el modo y su frecuencia
frecuencias <- table(tiempos_atencion)
modo <- names(which.max(frecuencias))
frecuencia_modo <- max(frecuencias)
# Definir el número de intervalos
n_intervalos <- 8
# Calcular el ancho de cada intervalo
rango <- max(tiempos_atencion) - min(tiempos_atencion)
ancho_intervalo <- rango / n_intervalos
# Crear los intervalos
intervalos <- seq(min(tiempos_atencion), max(tiempos_atencion), by = ancho_intervalo)
# Contar la frecuencia en cada intervalo
frecuencias_intervalos <- hist(tiempos_atencion, breaks = intervalos, plot = FALSE)$counts
Gráfico de caja y bigotes
# Gráfico de caja y bigotes
boxplot(tiempos_atencion, main = "Distribución de Tiempos de Atención",
xlab = "Frecuencia", ylab = "Tiempos de Atención (minutos)",
horizontal = TRUE, col = "lightblue", border = "black")

Histograma y poligono de frecuencias
# Crear el gráfico con ggplot2
histograma <- ggplot(data = datos, aes(x = tiempo)) +
geom_histogram(aes(y = ..density..),
breaks = seq(min(tiempos_atencion), max(tiempos_atencion), length.out = n_intervalos + 1),
fill = "lightblue", color = "black", alpha = 0.7) +
geom_density(color = "blue", size = 1) + # Polígono de frecuencia
labs(title = "Histograma y Polígono de Frecuencia de Tiempos de Atención",
x = "Tiempos de Atención (minutos)",
y = "frecuencia",
caption = "El polígono de Frecuencia muestra la distribución estimada.") +
theme_minimal() +
theme(plot.title = element_text(hjust = 0.5), # Centrar el título
axis.title = element_text(face = "bold")) # Negrita para títulos de ejes
# Mostrar el gráfico
print(histograma)

Resusltados
# Calcular estadísticas básicas
summary(tiempos_atencion)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.200 0.700 1.100 1.367 1.800 5.200
# Datos
tiempos_atencion
## [1] 0.2 0.2 0.3 0.3 0.3 0.4 0.4 0.4 0.5 0.5 0.6 0.6 0.6 0.6 0.7 0.7 0.7 0.8 0.8
## [20] 0.8 0.8 0.9 0.9 1.0 1.0 1.1 1.1 1.1 1.1 1.1 1.1 1.1 1.2 1.2 1.2 1.3 1.3 1.3
## [39] 1.4 1.4 1.6 1.6 1.7 1.7 1.8 1.8 1.8 1.8 1.9 1.9 2.1 2.2 2.3 2.5 2.8 3.1 3.1
## [58] 3.6 4.5 5.2
# Mostrar los intervalos y frecuencias
data.frame(Intervalo = paste0(intervalos[-length(intervalos)], ", ", intervalos[-1]),
Frecuencia = frecuencias_intervalos)
## Intervalo Frecuencia
## 1 0.2, 0.825 21
## 2 0.825, 1.45 19
## 3 1.45, 2.075 10
## 4 2.075, 2.7 4
## 5 2.7, 3.325 3
## 6 3.325, 3.95 1
## 7 3.95, 4.575 1
## 8 4.575, 5.2 1
cat("1. El modo es:", modo,"\n")
## 1. El modo es: 1.1
cat("2. La frecuencia del modo es:", frecuencia_modo,"\n")
## 2. La frecuencia del modo es: 7
cat("3. La media es:", media, "\n")
## 3. La media es: 1.366667
cat("4. La mediana es:", mediana, "\n")
## 4. La mediana es: 1.1
cat("5. Los cuartiles son:\n")
## 5. Los cuartiles son:
print(cuartiles)
## 25% 50% 75%
## 0.7 1.1 1.8
#Análisis del histograma
if (media > mediana) {
cat("4. La distribución es asimétrica a la derecha (sesgo positivo).\n")
} else if (media < mediana) {
cat("4. La distribución es asimétrica a la izquierda (sesgo negativo).\n")
} else {
cat("4. La distribución es simétrica.\n")
}
## 4. La distribución es asimétrica a la derecha (sesgo positivo).
cat("5. Se pueden observar valores atípicos si hay puntos que se encuentran fuera de los bigotes del boxplot.\n")
## 5. Se pueden observar valores atípicos si hay puntos que se encuentran fuera de los bigotes del boxplot.