Analysis of Hurricane Milton within a Anthropogenic Climate Change perspective - Monitoring Mitlon’s track, pressure, and wind speed

Hurricanes

Author

Logan Hales

Published

December 5, 2024

Introduction

#Hurricane Milton was an abnormal hurricane in the path it took throughout the Gulf of Mexico, Florida, and in the Atlantic Ocean when compared to other hurricanes during 2024, and in previous hurricane storm season as well. The following is an analysis Hurricane Milton’s storm track in comparison to other hurricane tracks that occurred in the Gulf of Mexico and in the Atlantic Ocean, and by also comparing the recorded pressure in millibars and the wind speed in knots from hurricanes between the 2000 to 2020 hurricane seasons. I have referred to different hurricane records from the CRAN Hurricane Exposure package and the in-class lab’s data set from NOAA’s international-best-track-archive-for-climate-stewardship, (IBTrACS, 2024), as one of the best means of analysis for the possible changes in strength of Hurricane Milton when compared to these other hurricanes. I will also referred to the Intergovernmental Panel on Climate Change (IPCC) 2022 Sixth Assessment Report to make assessments on Hurricane Milton’s strength, (Pörtner et. Al, 2022), based on plots measuring attributes of milton below and climate projections in the report.

Materials and methods

#The primary data being used in the R studio code was NOAA’s IBTrACS V04r01 CVS data, (IBTrACS, 2024), to produce the Milton maps and plots; and the Hurricane exposure package on R studio’s CRAN webpage, (Anderson, 2020) to produce the Gulf of Mexico hurricane tracks. Other sources include world & us_states data derived from NOAA, with the R studio packages of drat, sf, tidyverse, ggmap, lubridate, Hurricane exposure and hurricane exposure data, tmap, egg, cowplot, dplyr, and tidyr, to sort and organize the NOAA data into the maps and plots provided below in the results section of the website.

#The code provided to do this separates the hurricane data recorded from Hurricane Milton and to reintegrate it back into the whole hurricane data measured to show the differences in the path it took in comparison to other hurricanes between 2000-2020. The Gulf of Mexico hurricane tracks provided are used for visual differences with hurricanes that formed in the Gulf of Mexico to Milton’s tracks, as the only variable it has is only wind speeds. The boxplots and histograms accomplish a similar method of comparing the differences between the pressure and wind speeds of Hurricane Milton and every other hurricane between 2000 and 2020 but without combining them.

#SCRIPT
if (!requireNamespace("drat", quietly = TRUE)) {
    install.packages("drat")
}
# Downloading packages -------------------------------------------------------
- Downloading drat from CRAN ...                OK [197.3 Kb in 0.16s]
Successfully downloaded 1 package in 0.84 seconds.

The following package(s) will be installed:
- drat [0.2.5]
These packages will be installed into "~/work/final-project-Logan-can/final-project-Logan-can/renv/library/linux-ubuntu-jammy/R-4.4/x86_64-pc-linux-gnu".

# Installing packages --------------------------------------------------------
- Installing drat ...                           OK [installed binary and cached in 0.21s]
Successfully installed 1 package in 0.27 seconds.
library(drat)
addRepo("geanders")
install.packages("hurricaneexposure") 
# Downloading packages -------------------------------------------------------
- Downloading hurricaneexposure from CRAN ...   OK [1.9 Mb in 0.23s]
- Downloading ggmap from CRAN ...               OK [4.5 Mb in 0.21s]
- Downloading plyr from CRAN ...                OK [768 Kb in 0.16s]
- Downloading jpeg from CRAN ...                OK [28.6 Kb in 0.14s]
- Downloading bitops from CRAN ...              OK [25.4 Kb in 0.14s]
- Downloading mapproj from CRAN ...             OK [50.4 Kb in 0.22s]
- Downloading maps from CRAN ...                OK [2.9 Mb in 0.17s]
Successfully downloaded 7 packages in 3 seconds.

The following package(s) will be installed:
- bitops            [1.0-9]
- ggmap             [4.0.0]
- hurricaneexposure [0.1.1]
- jpeg              [0.1-10]
- mapproj           [1.2.11]
- maps              [3.4.2.1]
- plyr              [1.8.9]
These packages will be installed into "~/work/final-project-Logan-can/final-project-Logan-can/renv/library/linux-ubuntu-jammy/R-4.4/x86_64-pc-linux-gnu".

# Installing packages --------------------------------------------------------
- Installing plyr ...                           OK [installed binary and cached in 0.29s]
- Installing jpeg ...                           OK [installed binary and cached in 0.2s]
- Installing bitops ...                         OK [installed binary and cached in 0.2s]
- Installing ggmap ...                          OK [installed binary and cached in 0.79s]
- Installing maps ...                           OK [installed binary and cached in 0.3s]
- Installing mapproj ...                        OK [installed binary and cached in 0.21s]
- Installing hurricaneexposure ...              OK [installed binary and cached in 0.57s]
Successfully installed 7 packages in 2.8 seconds.
install.packages("hurricaneexposuredata")
# Downloading packages -------------------------------------------------------
- Downloading hurricaneexposuredata from geanders ... OK [14.4 Mb in 0.47s]
Successfully downloaded 1 package in 0.79 seconds.

The following package(s) will be installed:
- hurricaneexposuredata [0.1.0]
These packages will be installed into "~/work/final-project-Logan-can/final-project-Logan-can/renv/library/linux-ubuntu-jammy/R-4.4/x86_64-pc-linux-gnu".

# Installing packages --------------------------------------------------------
- Installing hurricaneexposuredata ...          OK [built from source and cached in 13s]
Successfully installed 1 package in 13 seconds.
if (!requireNamespace("sf", quietly = TRUE)) {
    install.packages("sf")
}
# Downloading packages -------------------------------------------------------
- Downloading sf from CRAN ...                  OK [3.6 Mb in 0.17s]
- Downloading classInt from CRAN ...            OK [487.3 Kb in 0.16s]
- Downloading e1071 from CRAN ...               OK [582.2 Kb in 0.16s]
- Downloading proxy from CRAN ...               OK [171.5 Kb in 0.18s]
- Downloading s2 from CRAN ...                  OK [2.1 Mb in 0.14s]
- Downloading wk from CRAN ...                  OK [1.7 Mb in 0.2s]
- Downloading units from CRAN ...               OK [354.5 Kb in 0.14s]
Successfully downloaded 7 packages in 2.1 seconds.

The following package(s) will be installed:
- classInt [0.4-10]
- e1071    [1.7-16]
- proxy    [0.4-27]
- s2       [1.1.7]
- sf       [1.0-19]
- units    [0.8-5]
- wk       [0.9.4]
These packages will be installed into "~/work/final-project-Logan-can/final-project-Logan-can/renv/library/linux-ubuntu-jammy/R-4.4/x86_64-pc-linux-gnu".

# Installing packages --------------------------------------------------------
- Installing proxy ...                          OK [installed binary and cached in 0.21s]
- Installing e1071 ...                          OK [installed binary and cached in 0.23s]
- Installing classInt ...                       OK [installed binary and cached in 0.23s]
- Installing wk ...                             OK [installed binary and cached in 0.24s]
- Installing s2 ...                             OK [installed binary and cached in 0.35s]
- Installing units ...                          OK [installed binary and cached in 0.3s]
- Installing sf ...                             OK [installed binary and cached in 0.59s]
Successfully installed 7 packages in 2.4 seconds.
if (!requireNamespace("tidyverse", quietly = TRUE)) {
    install.packages("tidyverse")
}
if (!requireNamespace("ggmap", quietly = TRUE)) {
    install.packages("ggmap")
}
if (!requireNamespace("spData", quietly = TRUE)) {
    install.packages("spData")
}
# Downloading packages -------------------------------------------------------
- Downloading spData from CRAN ...              OK [4.3 Mb in 0.16s]
Successfully downloaded 1 package in 0.36 seconds.

The following package(s) will be installed:
- spData [2.3.3]
These packages will be installed into "~/work/final-project-Logan-can/final-project-Logan-can/renv/library/linux-ubuntu-jammy/R-4.4/x86_64-pc-linux-gnu".

# Installing packages --------------------------------------------------------
- Installing spData ...                         OK [installed binary and cached in 0.41s]
Successfully installed 1 package in 0.49 seconds.
if (!requireNamespace("lubridate", quietly = TRUE)) {
    install.packages("lubridate")
}
if (!requireNamespace("hurricaneexposure", quietly = TRUE)) {
    install.packages("hurricaneexposure")
}
if (!requireNamespace("hurricaneexposuredata", quietly = TRUE)) {
    install.packages("hurricaneexposuredata")
}
if (!requireNamespace("tmap", quietly = TRUE)) {
    install.packages("tmap")
}
# Downloading packages -------------------------------------------------------
- Downloading tmap from CRAN ...                OK [3.6 Mb in 0.26s]
- Downloading tmaptools from CRAN ...           OK [168.5 Kb in 0.15s]
- Downloading lwgeom from CRAN ...              OK [468.5 Kb in 0.15s]
- Downloading stars from CRAN ...               OK [4.3 Mb in 0.17s]
- Downloading abind from CRAN ...               OK [63.6 Kb in 0.14s]
- Downloading dichromat from CRAN ...           OK [143 Kb in 0.19s]
- Downloading XML from CRAN ...                 OK [1.7 Mb in 0.17s]
- Downloading leafsync from CRAN ...            OK [823.7 Kb in 0.15s]
- Downloading leafem from CRAN ...              OK [3.4 Mb in 0.16s]
- Downloading geojsonsf from CRAN ...           OK [1.6 Mb in 0.22s]
- Downloading geometries from CRAN ...          OK [283.2 Kb in 0.18s]
- Downloading jsonify from CRAN ...             OK [628.8 Kb in 0.15s]
- Downloading rapidjsonr from CRAN ...          OK [126.4 Kb in 0.18s]
- Downloading sfheaders from CRAN ...           OK [471.7 Kb in 0.15s]
Successfully downloaded 14 packages in 4.4 seconds.

The following package(s) will be installed:
- abind      [1.4-8]
- dichromat  [2.0-0.1]
- geojsonsf  [2.0.3]
- geometries [0.2.4]
- jsonify    [1.2.2]
- leafem     [0.2.3]
- leafsync   [0.1.0]
- lwgeom     [0.2-14]
- rapidjsonr [1.2.0]
- sfheaders  [0.4.4]
- stars      [0.6-7]
- tmap       [3.3-4]
- tmaptools  [3.1-1]
- XML        [3.99-0.17]
These packages will be installed into "~/work/final-project-Logan-can/final-project-Logan-can/renv/library/linux-ubuntu-jammy/R-4.4/x86_64-pc-linux-gnu".

# Installing packages --------------------------------------------------------
- Installing lwgeom ...                         OK [installed binary and cached in 0.48s]
- Installing abind ...                          OK [installed binary and cached in 0.2s]
- Installing stars ...                          OK [installed binary and cached in 0.67s]
- Installing dichromat ...                      OK [installed binary and cached in 0.2s]
- Installing XML ...                            OK [installed binary and cached in 0.35s]
- Installing tmaptools ...                      OK [installed binary and cached in 0.85s]
- Installing leafsync ...                       OK [installed binary and cached in 0.21s]
- Installing geometries ...                     OK [installed binary and cached in 0.28s]
- Installing rapidjsonr ...                     OK [installed binary and cached in 0.21s]
- Installing jsonify ...                        OK [installed binary and cached in 0.29s]
- Installing sfheaders ...                      OK [installed binary and cached in 0.29s]
- Installing geojsonsf ...                      OK [installed binary and cached in 0.3s]
- Installing leafem ...                         OK [installed binary and cached in 4.0s]
- Installing tmap ...                           OK [installed binary and cached in 4.2s]
Successfully installed 14 packages in 13 seconds.
if (!requireNamespace("egg", quietly = TRUE)) {
    install.packages("egg")
}
# Downloading packages -------------------------------------------------------
- Downloading egg from CRAN ...                 OK [854.4 Kb in 0.18s]
- Downloading gridExtra from CRAN ...           OK [1.1 Mb in 0.17s]
Successfully downloaded 2 packages in 0.66 seconds.

The following package(s) will be installed:
- egg       [0.4.5]
- gridExtra [2.3]
These packages will be installed into "~/work/final-project-Logan-can/final-project-Logan-can/renv/library/linux-ubuntu-jammy/R-4.4/x86_64-pc-linux-gnu".

# Installing packages --------------------------------------------------------
- Installing gridExtra ...                      OK [installed binary and cached in 0.36s]
- Installing egg ...                            OK [installed binary and cached in 0.65s]
Successfully installed 2 packages in 1.1 seconds.
if (!requireNamespace("cowplot", quietly = TRUE)) {
    install.packages("cowplot")
}
# Downloading packages -------------------------------------------------------
- Downloading cowplot from CRAN ...             OK [1.3 Mb in 0.18s]
Successfully downloaded 1 package in 0.38 seconds.

The following package(s) will be installed:
- cowplot [1.1.3]
These packages will be installed into "~/work/final-project-Logan-can/final-project-Logan-can/renv/library/linux-ubuntu-jammy/R-4.4/x86_64-pc-linux-gnu".

# Installing packages --------------------------------------------------------
- Installing cowplot ...                        OK [installed binary and cached in 0.66s]
Successfully installed 1 package in 0.69 seconds.
if (!requireNamespace("dplyr", quietly = TRUE)) {
    install.packages("dplyr")
}
if (!requireNamespace("tidyr", quietly = TRUE)) {
    install.packages("tidyr")
}
library(sf)
Linking to GEOS 3.10.2, GDAL 3.4.1, PROJ 8.2.1; sf_use_s2() is TRUE
library(tidyverse)
── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
✔ dplyr     1.1.4     ✔ readr     2.1.5
✔ forcats   1.0.0     ✔ stringr   1.5.1
✔ ggplot2   3.5.1     ✔ tibble    3.2.1
✔ lubridate 1.9.3     ✔ tidyr     1.3.1
✔ purrr     1.0.2     
── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
✖ dplyr::filter() masks stats::filter()
✖ dplyr::lag()    masks stats::lag()
ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(ggmap)
ℹ Google's Terms of Service: <https://mapsplatform.google.com>
  Stadia Maps' Terms of Service: <https://stadiamaps.com/terms-of-service/>
  OpenStreetMap's Tile Usage Policy: <https://operations.osmfoundation.org/policies/tiles/>
ℹ Please cite ggmap if you use it! Use `citation("ggmap")` for details.
library(spData)
To access larger datasets in this package, install the spDataLarge
package with: `install.packages('spDataLarge',
repos='https://nowosad.github.io/drat/', type='source')`
library(lubridate)
library(hurricaneexposure)
library(hurricaneexposuredata)
data(world)
data(us_states)
data("hurr_tracks")
head(hurr_tracks)
# A tibble: 6 × 6
  storm_id     usa_atcf_id date         latitude longitude  wind
  <chr>        <chr>       <chr>           <dbl>     <dbl> <dbl>
1 Alberto-1988 AL011988    198808051800     32       -77.5    20
2 Alberto-1988 AL011988    198808060000     32.8     -76.2    20
3 Alberto-1988 AL011988    198808060600     34       -75.2    20
4 Alberto-1988 AL011988    198808061200     35.2     -74.6    25
5 Alberto-1988 AL011988    198808061800     37       -73.5    25
6 Alberto-1988 AL011988    198808070000     38.7     -72.4    25
data("storm_events")
head(storm_events)
$`Alberto-1988`
# A tibble: 19 × 2
   fips  events   
   <chr> <list>   
 1 13283 <chr [1]>
 2 36001 <chr [1]>
 3 36031 <chr [1]>
 4 36035 <chr [2]>
 5 36043 <chr [1]>
 6 36083 <chr [1]>
 7 36091 <chr [3]>
 8 36093 <chr [2]>
 9 36113 <chr [2]>
10 36115 <chr [2]>
11 37179 <chr [1]>
12 42001 <chr [3]>
13 42041 <chr [2]>
14 42043 <chr [1]>
15 42055 <chr [2]>
16 42133 <chr [2]>
17 45039 <chr [2]>
18 50001 <chr [1]>
19 51043 <chr [1]>

$`Beryl-1988`
# A tibble: 4 × 2
  fips  events   
  <chr> <list>   
1 48147 <chr [1]>
2 48217 <chr [1]>
3 48309 <chr [1]>
4 48453 <chr [2]>

$`Chris-1988`
# A tibble: 48 × 2
   fips  events   
   <chr> <list>   
 1 12057 <chr [1]>
 2 12101 <chr [1]>
 3 12115 <chr [1]>
 4 33009 <chr [2]>
 5 33019 <chr [1]>
 6 34001 <chr [2]>
 7 34005 <chr [1]>
 8 34011 <chr [1]>
 9 34029 <chr [1]>
10 36007 <chr [2]>
# ℹ 38 more rows

$`Florence-1988`
# A tibble: 3 × 2
  fips  events   
  <chr> <list>   
1 12005 <chr [1]>
2 12131 <chr [3]>
3 48485 <chr [1]>

$`Gilbert-1988`
# A tibble: 73 × 2
   fips  events   
   <chr> <list>   
 1 17015 <chr [1]>
 2 17063 <chr [1]>
 3 17089 <chr [1]>
 4 17097 <chr [1]>
 5 17111 <chr [1]>
 6 17197 <chr [1]>
 7 17201 <chr [1]>
 8 18003 <chr [1]>
 9 18005 <chr [1]>
10 18007 <chr [1]>
# ℹ 63 more rows

$`Keith-1988`
# A tibble: 1 × 2
  fips  events   
  <chr> <list>   
1 12103 <chr [2]>
library(tmap)
Breaking News: tmap 3.x is retiring. Please test v4, e.g. with
remotes::install_github('r-tmap/tmap')
library(egg)
Loading required package: gridExtra

Attaching package: 'gridExtra'

The following object is masked from 'package:dplyr':

    combine
library(cowplot)

Attaching package: 'cowplot'

The following object is masked from 'package:ggmap':

    theme_nothing

The following object is masked from 'package:lubridate':

    stamp
library(dplyr)
library(tidyr)
# Download a csv from noaa with storm track information
dataurl="https://www.ncei.noaa.gov/data/international-best-track-archive-for-climate-stewardship-ibtracs/v04r01/access/csv/ibtracs.NA.list.v04r01.csv"

storm_data <- read_csv(dataurl)
Rows: 127220 Columns: 174
── Column specification ────────────────────────────────────────────────────────
Delimiter: ","
chr  (149): SID, SEASON, BASIN, SUBBASIN, NAME, NATURE, LAT, LON, WMO_WIND, ...
dbl   (12): NUMBER, USA_SSHS, TOKYO_GRADE, TOKYO_LAND, CMA_CAT, NEWDELHI_CI,...
lgl   (12): TOKYO_R50_DIR, TOKYO_R30_DIR, HKO_CAT, KMA_CAT, KMA_R50_DIR, KMA...
dttm   (1): ISO_TIME

ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
storm_data_new <- storm_data%>%
  mutate(year = year(ISO_TIME))%>%
  filter(year >= 2000) %>%
  mutate_if(is.numeric, function(x) ifelse(x==-999.0,NA,x)) %>%
  mutate(decade=(floor(year/10)*10))


sf_storm_data <- storm_data_new %>%
  st_as_sf(coords=c("LON","LAT"),crs=4326, remove = FALSE)

region <- st_bbox(sf_storm_data)

ggplot(data = world)+
  geom_sf()+
  stat_bin2d(data=storm_data_new, aes(y=st_coordinates(sf_storm_data)[,2], x=st_coordinates(sf_storm_data)[,1]),bins=100)+
  facet_wrap(~decade)+
  scale_fill_distiller(palette="YlOrRd", trans="log", direction=-1, breaks = c(1,10,100,1000))+
  coord_sf(ylim=region[c(2,4)], xlim=region[c(1,3)])

#26055, 26109
Milton_storm <- storm_data_new %>%
  mutate(year = year(ISO_TIME))%>%
  filter(year == 2024)%>%
  filter(NUMBER == 71)


Milton_storm_data <- Milton_storm %>%
  st_as_sf(coords=c("LON","LAT"),crs=4326, remove = FALSE)

region <- st_bbox(sf_storm_data)

Milton_Map <- ggplot(data = world)+
  geom_sf() + 
  stat_bin2d(data=Milton_storm_data, aes(y=st_coordinates(Milton_storm_data)[,2], 
  x=st_coordinates(Milton_storm_data)[,1]),bins=100)+
  scale_fill_distiller(palette="YlOrRd", 
  trans="log", direction=-1, breaks = c(1,10,100,1000))+
  coord_sf(ylim=region[c(2,4)], xlim=region[c(1,3)])

Milton_Map

Results

#Differences between Milton and the 2000-2020 hurricane are presented in the following plots. The ggplot map for Milton shows it formed in the Gulf of Mexico, moved north of 20 degrees longitude, directly moving eastward through the middle of Florida to the Atlantic Ocean. Other hurricane tracks are visibly moving across Central America to the Pacific Ocean, and to parts of Europe, Canada, and the South-Central U.S. When compared to other Gulf of Mexico Hurricanes from the Hurricane exposure package, Hurricane Erika is the only storm to follow a similar path to Florida, but it did not make landfall according to the map, (Anderson, 2020).

#The difference between the pressure and wind boxplots is evident by the differences between the quartiles, maximums, and minimums, as the ranges between the quartiles for the Milton wind speed boxplot is ~40 to ~120 knots, the wind speed for all hurricanes is~35 to ~60 knots. The pressure ranges are between ~925 to ~990 mb, with the range for all hurricanes being ~985 and ~1000 mb. What should also be noted is that the distribution of values recorded for Milton in the histograms are highly variable, as the peaks for the values rise and sink throughout the entire record, (IBTrACS, 2024).

#RUN EACH HURRICANE IN THE GULF TO COMPRE IT TO THE TRACK OF MILTON

storms_all <- hurr_tracks %>%
  select(storm_id) %>%
  distinct() %>%
  mutate(year = stringr::str_extract(storm_id, "-[0-9].+")) %>%
  filter(year <= 2018)
map_tracks((storms = storms_all$storm_id),
alpha = 0.5, plot_points = TRUE, color = "blue")

Gulf_2002 <- map_tracks(storms = c("Bertha-2002", "Fay-2002"),
           alpha = 0.5, plot_points = TRUE, color = "blue")+ 
        ggplot2::ggtitle("Bertha and Fay (2002) Path through the Gulf of Mexico")

Gulf_2003 <- map_tracks(storms = c("Claudette-2003", "Erika-2003","Grace-2003"),
           alpha = 0.5, plot_points = TRUE, color = "blue")+ 
        ggplot2::ggtitle("Claudette, Erika, and Grace (2003) Path through the Gulf of Mexico")

Gulf_2005 <- map_tracks(storms = c("Emily-2005", "Rita-2005"),
           alpha = 0.5, plot_points = TRUE, color = "blue")+ 
        ggplot2::ggtitle("Emily and Rita (2005) Path through the Gulf of Mexico")

Gulf_2007 <- map_tracks(storms = c("Erin-2007", "Humberto-2007"),
           alpha = 0.5, plot_points = TRUE, color = "blue")+ 
        ggplot2::ggtitle("Erin and Humberto (2007) Path through the Gulf of Mexico")

Gulf_2008 <- map_tracks(storms = c("Dolly-2008", "Eduoard-2008","Ike-2008"),
           alpha = 0.5, plot_points = TRUE, color = "blue")+ 
        ggplot2::ggtitle("Dolly, Eduoard, and Ike (2008) Path through the Gulf of Mexico")

Gulf_2010 <- map_tracks(storms = c("Alex-2010", "Hermine-2010"),
           alpha = 0.5, plot_points = TRUE, color = "blue")+ 
        ggplot2::ggtitle("Alex and Hermine (2010) Path through the Gulf of Mexico")

Gulf_2017 <- map_tracks(storms = c("Cindy-2017", "Harvey-2017"),
           alpha = 0.5, plot_points = TRUE, color = "blue")+ 
        ggplot2::ggtitle("Cindy and Harvey (2017) Path through the Gulf of Mexico")

#Gulf_All <- map_tracks(storm = c(Gulf_1989, Gulf_1998, Gulf_2002, Gulf_2003, Gulf_2005, Gulf_2007, Gulf_2008, Gulf_2010, Gulf_2017), 
  #alpha = 0.5, plot_points = TRUE, color = "blue")


Gulf_2002

Gulf_2003

Gulf_2005

Gulf_2007

Gulf_2008

Gulf_2010

Gulf_2017

map_tracks(storms = c("Erika-2003"),
           alpha = 0.5, plot_points = TRUE, color = "blue") + 
        ggplot2::ggtitle("Erika (2003) Path through the Gulf of Mexico")

ggplot(data = world)+
  geom_sf()+
  stat_bin2d(data=storm_data_new, aes(y=st_coordinates(sf_storm_data)[,2], x=st_coordinates(sf_storm_data)[,1]),bins=100)+
  geom_sf(data = Milton_storm_data)+
  scale_fill_distiller(palette="YlOrRd", trans="log", direction=-1, breaks = c(1,10,100,1000))+
  coord_sf(ylim=region[c(2,4)], xlim=region[c(1,3)])+
  labs(title = "Hurricane Milton Storm Track over Hurricane teacks from 2000 - 2020")

Milton_Wind_speed_HIST <- ggplot(Milton_storm_data, aes(x=as.numeric(USA_WIND)))+geom_histogram()+
  labs(title = "Hurricane Milton Wind Speed")
Milton_Wind_Box <- ggplot(Milton_storm_data, aes(x=as.numeric(USA_WIND)))+geom_boxplot()+
  labs(title = "Hurricane Milton Wind Speed")
All_Wind_speed_HIST <-ggplot(storm_data_new, aes(x=as.numeric(USA_WIND)))+geom_histogram()+geom_vline(xintercept = 150)+
  labs(title = "2000 - 2020 Hurricane Wind Speed - Milton Line")

All_Wind_speed_HIST_min <-ggplot(storm_data_new, aes(x=as.numeric(USA_WIND)))+geom_histogram()+geom_vline(xintercept = 25)+
  labs(title = "2000 - 2020 Hurrican Wind Speed- Milton Line Minimum")
All_Wind_Box <- ggplot(storm_data_new, aes(x=as.numeric(USA_WIND)))+geom_boxplot()+
  labs(title = "2000 - 2020 Hurricane Wind Speed") 
Milton_Pres_Hist <- ggplot(Milton_storm_data, aes(x=as.numeric(USA_PRES)))+geom_histogram()+
  labs(title = "Hurricane Milton Pressure")
Milton_Pres_Box <- ggplot(Milton_storm_data, aes(x=as.numeric(USA_PRES)))+geom_boxplot()+
  labs(title = "Hurricane Milton Pressure")
All_Pres_Hist <-ggplot(storm_data_new, aes(x=as.numeric(USA_PRES)))+geom_histogram()+geom_vline(xintercept = 1009)+
  labs(title = "2000 - 2020 Hurricane Pressure - Milton Line")
All_Pres_Hist_min <-ggplot(storm_data_new, aes(x=as.numeric(USA_PRES)))+geom_histogram()+geom_vline(xintercept = 901)+
  labs(title = "2000 - 2020 Hurricane Pressure - Milton Line Minimum")
All_Pres_Box <-ggplot(storm_data_new, aes(x=as.numeric(USA_PRES)))+geom_boxplot()+
  labs(title = "2000 - 2020 Hurricane Pressure")
plot_grid(Milton_Wind_Box, All_Wind_Box,aling = "hv", axis = "tblr", ncol=2, nrow=2, cols=NULL, rows =NULL, hjust = 1, vjust = 1)
Warning in as_grob.default(plot): Cannot convert object of class character into
a grob.

ggarrange(Milton_Wind_speed_HIST, All_Wind_speed_HIST)
`stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
`stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

plot_grid(Milton_Pres_Box, All_Pres_Box,aling = "hv", axis = "tblr", ncol=2, nrow=2, cols=NULL, rows =NULL, hjust = 1, vjust = 1)
Warning: Removed 8 rows containing non-finite outside the scale range
(`stat_boxplot()`).
Warning: Removed 42 rows containing non-finite outside the scale range
(`stat_boxplot()`).
Warning in as_grob.default(plot): Cannot convert object of class character into
a grob.

All_Pres_Hist <-ggplot(storm_data_new, aes(x=as.numeric(USA_PRES)))+geom_histogram()+geom_vline(xintercept = 1009)+
  labs(title = "2000 - 2020 Hurricane Pressure - Milton Line")
ggarrange(Milton_Pres_Hist, All_Pres_Hist)
`stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
Warning: Removed 8 rows containing non-finite outside the scale range
(`stat_bin()`).
`stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
Warning: Removed 42 rows containing non-finite outside the scale range
(`stat_bin()`).

ggarrange(All_Wind_speed_HIST_min, All_Pres_Hist_min)
`stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
`stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
Warning: Removed 42 rows containing non-finite outside the scale range
(`stat_bin()`).

Conclusions

#Hurricane Milton has presented characteristics that are abnormal for a hurricane compared to those from between the 2000-2020 seasons. Measures of wind speed and pressure from NOAA’s IBTrACS, (IBTrACS, 2024), show Milton has a wider range between pressure and wind speed compared to the narrower range of all the hurricanes measured. Maximum and minimum measurements for Milton fall into some of the most common measures as well. This may be attributed to anthropogenic climate change. The IPCC 6th report shows that oceans overall have had an increase in temperature by 0.88 degrees Celsius during the 20th century and is to continue into the 21st century, (Pörtner et. Al, 2022, p.392-393 & figure 3.3). In figure 3.3 and 3.4 of the IPCC report, projected and measured changes of temperature increasing in oceans may lead to a rise in hurricane severity, as surface epipelagic temperatures rise in the Atlantic and Gulf of Mexico in the SSP projections,(Pörtner et. Al, 2022, p.393 & figure 3.4). In North America, climate change has caused intense weather events with an example listed that Hurricanes are expected to get worse, which has been assessed from previous hurricanes such as Hurricane Andrews in 1992 for example, (Pörtner et. Al, 2022, p.1938-1939). Hurricane Milton is a symptom of the projected increases in temperatures.

References

#Brooke Anderson, (2020). Using the hurricaneexposure package. https://cran.r-project.org/web/packages/hurricaneexposure/vignettes/hurricaneexposure.html

#NOAA’s International Best Track Archive for Climate Stewardship (IBTrACS) data, accessed on 11/19/2024

#Pörtner, H. O., Roberts, D. C., Tignor, M. M. B., Poloczanska, E., Mintenbeck, K., Alegría, A., Craig, M., Langsdorf, S., Löschke, S., Möller, V., Okem, A., & Rama, B. (Eds.). (2022). Climate change 2022: Impacts, adaptation and vulnerability. IPCC. Retrieved December 10, 2022, from https://www.ipcc.ch/report/sixth-assessment-report-working-group-ii/ (Accessed December 10th, 2022)