##
## 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
dplyr es un paquete de R especializado en manipulación y transformación de datos de manera eficiente e intuitiva. Forma parte del ecosistema tidyverse y proporciona herramientas para realizar operaciones complejas sobre marcos de datos (data frames) de forma clara y legible.
select(), filter(), mutate(),
arrange(), summarise() y
group_by() permiten manipular datos de forma lógica y
secuencial.%>% o |>) para encadenar
operaciones de manera fluida.En este proyecto, utilizamos dplyr para explorar, agrupar y sumarizar
los datos del dataset storms, permitiéndonos calcular
estadísticas, identificar patrones y preparar datos para
visualización.
El dataset storms es una base de datos
que contiene información sobre la trayectoria e intensidad de
huracanes y tormentas tropicales del Atlántico Norte. Este
conjunto de datos es ampliamente utilizado en educación y investigación
meteorológica para comprender el comportamiento de sistemas
ciclónicos.
El dataset storms es valioso para: - Análisis
climatológico: Identificar tendencias en la frecuencia e
intensidad de huracanes. - Predicción y modelado:
Entrenar modelos que predigan el comportamiento de tormentas futuras. -
Evaluación de riesgos: Cuantificar el peligro potencial
de sistemas ciclónicos en zonas pobladas. - Educación:
Enseñar conceptos de análisis de datos y estadística con datos reales y
relevantes.
| Variable | Descripción |
|---|---|
| name | Nombre de la tormenta. |
| year | Año de la observación. |
| month | Mes de la observación. |
| day | Día de la observación. |
| hour | Hora de la observación (en formato UTC). |
| lat | Latitud del centro de la tormenta. |
| long | Longitud del centro de la tormenta. |
| status | Clasificación de la tormenta (ej. depresión tropical, tormenta tropical, huracán). |
| category | Categoría de la tormenta según la escala Saffir-Simpson (estimada a partir del viento). |
| wind | Velocidad máxima sostenida del viento (en nudos). |
| pressure | Presión atmosférica mínima en el centro de la tormenta (en milibares). |
| tropicalstorm_force_diameters | Diámetro del área que experimenta vientos con fuerza de tormenta tropical (34 nudos). |
| hurricane_force_diameter | Diámetro del área que experimenta vientos con fuerza de huracán (64 nudos). |
# cargar de datos y visualización
print(head(storms))
## # A tibble: 6 × 13
## name year month day hour lat long status category wind pressure
## <chr> <dbl> <dbl> <int> <dbl> <dbl> <dbl> <fct> <dbl> <int> <int>
## 1 Amy 1975 6 27 0 27.5 -79 tropical de… NA 25 1013
## 2 Amy 1975 6 27 6 28.5 -79 tropical de… NA 25 1013
## 3 Amy 1975 6 27 12 29.5 -79 tropical de… NA 25 1013
## 4 Amy 1975 6 27 18 30.5 -79 tropical de… NA 25 1013
## 5 Amy 1975 6 28 0 31.5 -78.8 tropical de… NA 25 1012
## 6 Amy 1975 6 28 6 32.4 -78.7 tropical de… NA 25 1012
## # ℹ 2 more variables: tropicalstorm_force_diameter <int>,
## # hurricane_force_diameter <int>
# Configuración visual común para mantener consistencia en todas las figuras.
tema_proyecto <- theme_minimal() +
theme(
plot.title = element_text(face = "bold", size = 13),
plot.subtitle = element_text(size = 10),
axis.title = element_text(face = "bold")
)
# Escriba el código R aquí para crear su primer gráfico
grafico_dispersion <- ggplot(storms, aes(x = pressure, y = wind)) +
geom_point(alpha = 0.35, color = "firebrick") +
geom_smooth(method = "lm", se = FALSE, color = "black", linewidth = 0.8) +
labs(
title = "Relación entre la Presión Atmosférica y la Velocidad del Viento",
subtitle = "A menor presión atmosférica, mayor velocidad del viento (tendencia negativa)",
x = "Presión mínima central (mbar)",
y = "Velocidad máxima sostenida del viento (nudos)"
) +
tema_proyecto
print(grafico_dispersion)
## `geom_smooth()` using formula = 'y ~ x'
Este gráfico de dispersión muestra la relación inversa entre la presión atmosférica central y la velocidad máxima del viento en las tormentas. Cada punto representa una observación individual de una tormenta en el dataset. La línea de tendencia negra indica que a menor presión atmosférica, mayor es la velocidad del viento, lo cual es una característica fundamental de los sistemas tormentosos: la intensidad de la tormenta está directamente correlacionada con la profundidad de la presión central. Este patrón es consistente con la física de los huracanes y tormentas tropicales.
# Escriba el código R aquí para crear su segundo gráfico
grafico_histograma <- ggplot(storms, aes(x = wind)) +
geom_histogram(binwidth = 10, fill = "steelblue", color = "white", alpha = 0.95) +
labs(
title = "Distribución de la Velocidad del Viento en las Tormentas Registradas",
subtitle = "Concentración principal de observaciones en velocidades bajas y medias",
x = "Velocidad máxima sostenida (nudos)",
y = "Frecuencia (Cantidad de registros)"
) +
tema_proyecto
print(grafico_histograma)
Este histograma presenta la frecuencia de observaciones agrupadas por intervalos de velocidad del viento (cada intervalo de 10 nudos). Los datos revelan que la mayoría de las observaciones se concentran en velocidades menores a 60 nudos, con una disminución progresiva conforme aumenta la intensidad del viento. Esto indica que en el dataset hay más registros de sistemas de baja intensidad (depresiones tropicales y tormentas tropicales débiles) que de huracanes potentes. La cola derecha de la distribución muestra que hay relativamente pocas observaciones de vientos extremadamente fuertes (>120 nudos), lo que refleja que los huracanes de categoría 4 y 5 son eventos menos frecuentes.
# Crear resumen anual del viento promedio
resumen_viento_anual <- storms %>%
group_by(year) %>%
summarise(viento_promedio = mean(wind, na.rm = TRUE), registros = n(), .groups = "drop")
# Gráfico de línea con tendencia anual
grafico_linea <- ggplot(resumen_viento_anual, aes(x = year, y = viento_promedio)) +
geom_line(color = "darkorange3", linewidth = 0.9) +
geom_point(color = "darkorange4", size = 1.7) +
labs(
title = "Evolución Anual del Viento Promedio en Tormentas",
subtitle = "Serie temporal del promedio de velocidad del viento por año",
x = "Año",
y = "Viento promedio (nudos)"
) +
tema_proyecto
print(grafico_linea)
Este gráfico de línea muestra la evolución temporal de la velocidad promedio del viento en las tormentas registradas a lo largo de los años. Cada punto representa el promedio de velocidad de viento para todas las observaciones de tormentas en ese año particular. Este análisis permite identificar tendencias a largo plazo en la intensidad de las tormentas: si hay un incremento o disminución en la intensidad promedio, o si se mantiene relativamente estable. Las fluctuaciones año a año pueden reflejar variaciones naturales en la actividad ciclónica, mientras que las tendencias sostenidas podrían indicar cambios climáticos a largo plazo.
# Diagrama de barras por categoría de tormenta
grafico_barras <- storms %>%
filter(!is.na(category)) %>%
ggplot(aes(x = factor(category))) +
geom_bar(fill = "forestgreen", color = "black", alpha = 0.85) +
labs(
title = "Cantidad de Registros por Categoría de Tormenta/Huracán",
subtitle = "Frecuencia de registros clasificados en la escala Saffir-Simpson",
x = "Categoría Saffir-Simpson",
y = "Cantidad de registros"
) +
tema_proyecto
print(grafico_barras)
Este diagrama de barras presenta la composición de eventos por categoría utilizando la escala Saffir-Simpson. La escala clasifica los huracanes según su intensidad: desde depresiones tropicales (sin categoría) hasta huracanes de categoría 5 (más destructivos). El gráfico muestra que la mayoría de los eventos registrados corresponden a categorías bajas (categorías 0, 1, 2), mientras que las categorías más altas (4, 5) tienen una frecuencia considerablemente menor. Esto es consistente con lo observado en el histograma anterior y refleja que eventos extremos son más raros en la naturaleza. Este patrón es importante para la evaluación de riesgos meteorológicos, ya que indica que los huracanes de gran intensidad son eventos excepcionales.