library(nycflights23)
Carga en la sesión de R el paquete nycflights23, de modo que sus bases de datos (como flights) quedan disponibles para trabajar.
BD1 <- flights
Crea un objeto llamado BD1 que contiene una copia de la base de datos flights. Desde aquí en adelante, los análisis se realizan usando BD1
BD1 = na.omit(BD1)
Reemplaza el objeto BD1 por una versión en la que se eliminan todas las filas que contienen al menos un valor perdido (NA) en cualquiera de sus columnas. El resultado es una base de datos sin valores faltantes.
colnames(BD1)
## [1] "year" "month" "day" "dep_time"
## [5] "sched_dep_time" "dep_delay" "arr_time" "sched_arr_time"
## [9] "arr_delay" "carrier" "flight" "tailnum"
## [13] "origin" "dest" "air_time" "distance"
## [17] "hour" "minute" "time_hour"
Devuelve un vector con los nombres de todas las columnas de la base de datos BD1. Es útil para revisar rápidamente qué variables contiene la base.
library(tidyverse)
Carga en la sesión el conjunto de paquetes del tidyverse (como dplyr, ggplot2, tidyr, readr, etc.), pensados para importar, transformar, visualizar y modelar datos de forma coherente.
BD2 <- BD1 |>
group_by(origin) |>
summarise(n_vuelos = n()) |>
arrange(desc(n_vuelos))
BD2
## # A tibble: 3 × 2
## origin n_vuelos
## <chr> <int>
## 1 LGA 158800
## 2 EWR 134398
## 3 JFK 129620
Crea una tabla resumen donde los datos se agrupan por aeropuerto de origen (origin) y, para cada aeropuerto, se calcula cuántos vuelos hay (n_vuelos). Luego, la tabla se ordena de mayor a menor según la cantidad de vuelos, de modo que el aeropuerto con más salidas aparezca en la primera fila.
BD3_JFK <- BD1 |>
filter(origin == "JFK")
BD3_JFK
## # A tibble: 129,620 × 19
## year month day dep_time sched_dep_time dep_delay arr_time sched_arr_time
## <int> <int> <int> <int> <int> <dbl> <int> <int>
## 1 2023 1 1 18 2300 78 228 135
## 2 2023 1 1 31 2344 47 500 426
## 3 2023 1 1 33 2140 173 238 2352
## 4 2023 1 1 520 510 10 948 949
## 5 2023 1 1 549 559 -10 905 901
## 6 2023 1 1 554 600 -6 914 920
## 7 2023 1 1 638 640 -2 1121 1129
## 8 2023 1 1 652 700 -8 947 1033
## 9 2023 1 1 655 700 -5 1044 1044
## 10 2023 1 1 656 659 -3 1031 1020
## # ℹ 129,610 more rows
## # ℹ 11 more variables: arr_delay <dbl>, carrier <chr>, flight <int>,
## # tailnum <chr>, origin <chr>, dest <chr>, air_time <dbl>, distance <dbl>,
## # hour <dbl>, minute <dbl>, time_hour <dttm>
t.test(BD1$dep_delay,
conf.level = 0.95)
##
## One Sample t-test
##
## data: BD1$dep_delay
## t = 164.72, df = 422817, p-value < 2.2e-16
## alternative hypothesis: true mean is not equal to 0
## 95 percent confidence interval:
## 13.53620 13.86221
## sample estimates:
## mean of x
## 13.69921
t.test(BD1$dep_delay,
mu = 0,
alternative = "two.sided") # distinto
##
## One Sample t-test
##
## data: BD1$dep_delay
## t = 164.72, df = 422817, p-value < 2.2e-16
## alternative hypothesis: true mean is not equal to 0
## 95 percent confidence interval:
## 13.53620 13.86221
## sample estimates:
## mean of x
## 13.69921
t.test(BD1$dep_delay,
mu = 0,
alternative = "greater") # mayor que
##
## One Sample t-test
##
## data: BD1$dep_delay
## t = 164.72, df = 422817, p-value < 2.2e-16
## alternative hypothesis: true mean is greater than 0
## 95 percent confidence interval:
## 13.56241 Inf
## sample estimates:
## mean of x
## 13.69921
t.test(BD1$dep_delay,
mu = 10,
alternative = "less") # menor que
##
## One Sample t-test
##
## data: BD1$dep_delay
## t = 44.479, df = 422817, p-value = 1
## alternative hypothesis: true mean is less than 10
## 95 percent confidence interval:
## -Inf 13.83601
## sample estimates:
## mean of x
## 13.69921
modelo1 <- lm(air_time ~ distance, data = BD1)
summary(modelo1)
##
## Call:
## lm(formula = air_time ~ distance, data = BD1)
##
## Residuals:
## Min 1Q Median 3Q Max
## -95.400 -6.962 -1.603 5.409 308.425
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 1.891e+01 3.329e-02 568 <2e-16 ***
## distance 1.252e-01 2.756e-05 4545 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 12.63 on 422816 degrees of freedom
## Multiple R-squared: 0.9799, Adjusted R-squared: 0.9799
## F-statistic: 2.066e+07 on 1 and 422816 DF, p-value: < 2.2e-16
ggplot(BD1, aes(x = distance, y = air_time)) +
geom_point(
alpha = 0.3,
fill = "#9ecae1",
color = "black",
shape = 21,
size = 1.5
) +
geom_smooth(method = "lm", se = FALSE, color = "#4292c6", linewidth = 0.8) +
labs(
x = "Distancia del vuelo (millas)",
y = "Tiempo en el aire (minutos)",
title = "Tiempo en el aire según distancia"
) +
theme_minimal() +
theme(
panel.grid = element_blank(),
panel.border = element_rect(color = "black", fill = NA, linewidth = 0.3),
plot.title = element_text(hjust = 0.5)
)
## `geom_smooth()` using formula = 'y ~ x'
ggplot(BD2, aes(x = origin, y = n_vuelos)) +
geom_col(fill = "#9ecae1", color = "black", size = 0.3) +
labs(
x = "Aeropuerto de origen",
y = "Número de vuelos",
title = "Número de vuelos por aeropuerto de origen"
) +
theme_minimal() +
theme(
panel.grid = element_blank(),
panel.border = element_rect(color = "black", fill = NA, size = 0.3),
plot.title = element_text(hjust = 0.5)
)
ggplot(BD2, aes(x = origin, y = n_vuelos, group = 1)) +
geom_line(color = "#4292c6", linewidth = 0.7) +
geom_point(fill = "#9ecae1", color = "black", size = 2) +
labs(
x = "Aeropuerto de origen",
y = "Número de vuelos",
title = "Número de vuelos por aeropuerto de origen"
) +
theme_minimal() +
theme(
panel.grid = element_blank(),
panel.border = element_rect(color = "black", fill = NA, linewidth = 0.3),
plot.title = element_text(hjust = 0.5)
)
ggplot(BD1, aes(x = dep_delay)) +
geom_histogram(
binwidth = 5,
fill = "#9ecae1",
color = "black",
linewidth = 0.3
) +
labs(
x = "Retraso en la salida (minutos)",
y = "Frecuencia",
title = "Histograma del retraso en la salida"
) +
theme_minimal() +
theme(
panel.grid = element_blank(),
panel.border = element_rect(color = "black", fill = NA,
linewidth = 0.3),
plot.title = element_text(hjust = 0.5)
)
ggplot(BD1, aes(x = dep_delay, y = arr_delay)) +
geom_point(
alpha = 0.4,
fill = "#9ecae1",
color = "black",
shape = 21,
size = 1.5
) +
labs(
x = "Retraso en la salida (minutos)",
y = "Retraso en la llegada (minutos)",
title = "Gráfico de dispersión: salida vs llegada"
) +
theme_minimal() +
theme(
panel.grid = element_blank(),
panel.border = element_rect(color = "black", fill = NA,
linewidth = 0.3),
plot.title = element_text(hjust = 0.5)
)
Cada grupo trabajará solo con los vuelos de su aeropuerto de
origen (origin). La Pregunta 15 es de comparación
entre aeropuertos y debe hacerse en conjunto._
Pregunta 1. Caracterización general de los retrasos
(filter(), summarise(), ggplot(),
geom_histogram(), geom_boxplot())
dep_delay) y en la llegada (arr_delay)
usando:
Pregunta 2. Intervalo de confianza para el retraso medio en
la salida (t.test())
dep_delay).Pregunta 3. ¿El retraso promedio en la salida es distinto de
0? (t.test())
Pregunta 4. Probabilidad de retraso importante en la
salida (mutate(), summarise(),
prop.test())
dep_delay > 15).Pregunta 5. Retrasos por tramo horario: mañana vs
tarde (mutate(), ggplot(),
geom_boxplot(), t.test())
sched_dep_time.dep_delay) entre
ambos grupos:
Pregunta 6. Relación entre distancia y tiempo en el
aire (cor(), ggplot(),
geom_point(), geom_smooth(),
lm())
distance) y el
tiempo en el aire (air_time):
air_time como respuesta y distance como
predictor.Pregunta 7. Modelo para explicar el retraso en la
llegada (lm(), summary(),
confint())
arr_delay) se explique al menos por:
dep_delay);distance).dep_delay: ¿qué
significa un aumento de 1 minuto en el retraso de salida, manteniendo
constante la distancia?Pregunta 8. Comparación de aerolíneas (ANOVA)
(count(), ggplot(),
geom_boxplot(), aov(),
summary())
carrier) con mayor cantidad
de vuelos.dep_delay) es el mismo
para esas aerolíneas.Pregunta 9. Evaluación de supuestos de normalidad
(ggplot(), geom_histogram(),
qqnorm(), qqline(),
shapiro.test())
dep_delay) puede
considerarse aproximadamente normal:
Pregunta 10. Día del mes y retraso en la salida
(mutate(), ggplot(),
geom_boxplot(), t.test())
day (por
ejemplo, días 1–10 y días 21–31).dep_delay) entre estos
dos grupos:
Pregunta 11. Probabilidad de gran retraso en la
llegada (mutate(), summarise(),
prop.test())
arr_delay > 30).Pregunta 12. Destino más frecuente
(count(), filter(), summarise(),
ggplot(), geom_boxplot(),
t.test())
dest) con mayor número
de vuelos.arr_delay) con
estadísticas descriptivas;arr_delay con un diagrama de caja;arr_delay.Pregunta 13. Nivel de puntualidad en la salida
(mutate(), summarise(),
prop.test())
dep_delay ≤ 0).Pregunta 14. Factores asociados al retraso en la
llegada (lm(), summary(),
confint())
distance, air_time,
month, carrier).arr_delay).Pregunta 15. Comparación entre aeropuertos (trabajo
conjunto) (group_by(), summarise(),
ggplot(),
geom_boxplot()/geom_col(), aov(),
summary())
Usando todos los datos de los tres aeropuertos (EWR,
JFK, LGA):
dep_delay)
entre aeropuertos.