3  Injuries and deaths

Show the code
source("./setup-and-data-prep.R")

data_for_modeling_with_cities <- dta |>
  mutate(intersect_populated_area = st_intersects(dta, nc_cities),
         n_intersects = map_dbl(intersect_populated_area, function(x) length(x)),
         injuries = injuries_direct + injuries_indirect,
         deaths = deaths_direct + deaths_indirect
         ) |>
  mutate(event = paste0("Event ID ", event_id, ": ", event_narrative),
         episode = paste0("Episode ID ", episode_id, ": ", episode_narrative)
         ) |>
  select(-intersect_populated_area) |>
  bind_rows(dta_non_mapping) |>
  distinct(event_id, .keep_all = TRUE)

In this chapter I combined direct and indirect injuries into injuries and direct and indirect deaths into deaths.

There is no clear trend by year other than to note that in the last decade there have been relatively fewer injuries and deaths. Is this due to better warnings and better communication in the age of mobile phones? Probably at least in part. Perhaps also the residents of NC have been fortunate that there haven’t been more strong and long-lived tornadoes in this period (see Figure 4.1 panel C).

Show the code
dta_non_mapping |>
  mutate(injuries = injuries_direct + injuries_indirect,
         deaths = deaths_direct + deaths_indirect) |>
  select(year, injuries, deaths) |>
  pivot_longer(cols = c(injuries, deaths), names_to = "type", values_to = "count") |>
  mutate(type = factor(type, levels = c("injuries", "deaths"))) |>
  count(year, type, wt = count) |>
  ggplot() +
  geom_point(aes(year, n, color = type),
             show.legend = FALSE) +
  scale_color_viridis_d(direction = 1,
                        end = 0.85) +
  facet_wrap(~type, scales = "free_y") +
  theme(panel.grid = element_blank(),
        plot.title = element_text(size = rel(2.0), face = "bold")) +
  labs(
    title = "Tornado-related injuries and deaths by year",
    subtitle = "Direct and indirect",
    x = NULL,
    y = "Count (scale varies)",
    caption = my_caption
  )

Figure 3.1: Tornado-related injuries and deaths January 1970 - April 2023

3.1 Injuries

Show the code
ggplot() +
  geom_sf(data = nc_counties,
          fill = NA, linewidth = 0.05) +
  geom_sf(data = nc_cities,
          fill = "grey85", color = NA) +
  geom_sf(data = nc_state,
          fill = NA, linewidth = 0.5,
          color = "grey") +
  geom_sf(data = data_for_modeling_with_cities,
          aes(color = injuries)) +
  # scale_color_viridis_c(end = 0.85,
  #                       trans = "log2") +
  scale_color_gradient(low = carolina_blue,
                       high = "red",
                       trans = "log2",
  ) +
  theme(panel.background = element_blank(),
        panel.border = element_blank(),
        panel.grid = element_blank(),
        axis.text = element_blank(),
        axis.ticks = element_blank(),
        plot.title = element_text(size = rel(2.0), face = "bold"),
        legend.position = c(0.3, 0.3)) +
  guides(color = guide_legend(override.aes = list(linewidth = 3),
                              reverse = TRUE)) +
  labs(
    title = "Tornado tracks in North Carolina colored by injuries",
    subtitle = "Grey tracks indicate no recorded injuries. 1970-01-01 to 2023-04-30.",
    caption = my_caption,
    color = "Injuries"
  )

Figure 3.2: Tornado tracks in NC 1970-01-01 to 2023-04-30. Color indicates number of recorded injuries (direct and indirect)


Show the code
ggplot() +
  geom_sf(data = nc_counties,
          fill = NA, linewidth = 0.05) +
  geom_sf(data = nc_cities,
          fill = "grey85", color = NA) +
  geom_sf(data = nc_state,
          fill = NA, linewidth = 0.5,
          color = "grey") +
  geom_sf(data = data_for_modeling_with_cities |>
            slice_max(injuries, n = 10),
          aes(color = injuries)) +
  # scale_color_continuous(trans = "log2") +
  # scale_color_viridis_c(end = 0.85,
  #                       trans = "log2") +
  scale_color_gradient(low = carolina_blue,
                       high = "red",
                       trans = "log2",
  ) +
  theme(panel.background = element_blank(),
        panel.border = element_blank(),
        panel.grid = element_blank(),
        axis.text = element_blank(),
        axis.ticks = element_blank(),
        plot.title = element_text(size = rel(2.0), face = "bold"),
        legend.position = c(0.3, 0.3)) +
  labs(
    title = "Tornadoes causing ten largest numbers of injuries in NC",
    subtitle = "1970-01-01 to 2023-04-30",
    caption = my_caption,
    color = "Injuries"
  )

Figure 3.3: Tornadoes causing ten largest number of injuries in NC (direct and indirect) 1970-01-01 to 2023-04-30.


Show the code
data_for_modeling_with_cities |>
  st_drop_geometry() |>
  slice_max(injuries, n = 10) |>
  select(injuries, year, event, episode, n_intersects, tor_f_scale, length_mi) |>
  mutate(length_mi = drop_units(length_mi)) |>
  arrange(desc(injuries)) |>
  gt() |>
  #tab_header(md(glue("**Tornadoes causing ten largest number of injuries in NC since {year_start}**"))) |>
  fmt_number(columns = length_mi,
             decimals = 1) |>
  sub_missing()
Table 3.1: Tornadoes causing ten largest number of injuries in NC since 1970
injuries year event episode n_intersects tor_f_scale length_mi
280 1984 Event ID 10088990: NA Episode ID NA: NA 1 4 28.1
153 1984 Event ID 10089009: NA Episode ID NA: NA 2 4 21.0
120 2011 Event ID 291729: Tornado spun up near Tarawa Terrace and quickly increased to EF2 intensity with winds to 125 mph and a damage width of 100 yards. Many residences were damaged severely. The tornado continued to track northeast and crossed Highway 24 and the Holiday City Subdivision at EF2 intensity with many homes severely damaged. The tornado widened to about 450 yards as it crossed the Colonial Heights Subdivision with winds around 100 mph. The tornado narrowed to about 100 yards and increased to EF3 intensity with winds to 145 mph as it crossed Piney Green Road and impacted the Montclair Subdivision. Severe damage to many homes with some totally destroyed. Several vehicles were picked up and tossed. The tornado then appeared to weaken and lift as it moved northeast of Piney Green. Total damage was estimated at 9.4 million dollars. There were 30 injuries directly related to the tornado, 3 critical. No fatalities occurred. Episode ID 49687: One of the largest tornado outbreaks ever observed across eastern North Carolina occurred during the afternoon and evening of April 16th 2011. Several powerful super-cell thunderstorms developed ahead of an approaching cold front. Conditions ahead of the front were favorable for tornadoes with a moderately unstable atmosphere combined with strong winds that veered with height. Altogether 12 tornadoes were reported across the Newport/Morehead City county warning area. These tornadoes combined to produce over 40 million dollars in damages. There were numerous injuries but no fatalities were reported. In addition to the tornadoes there were several reports of damaging winds and large hail. 1 3 3.8
105 1988 Event ID 10089411: NA Episode ID NA: NA 2 4 18.2
90 1984 Event ID 10088994: NA Episode ID NA: NA 0 3 27.5
85 2011 Event ID 297492: The tornado exited Hoke County and continued to move northeast crossing into Cumberland County, just north of NC Highway 401. EF0 damage continued near the Clifdale community, where the damage was more sporadic across Bones Creek and Stewarts Creek. Strong tornado damage then occurred in and near the Beaver Creek community along Reilly Road and Yadkin Road west of Fayetteville. Damage was mostly EF1 and EF2, but was briefly EF3 damage, with wind speeds near 140 mph, causing major damage to a business and some dwellings along Yadkin Road. EF0 and EF1 damage was then observed across Simmons Army Airfield, along Andrews Road and across from the Pine Forest High School. The Goodyear Plant on NC Highway 401 sustained minor damage as well. The tornado continued northeast through the Carlos and Slocomb communities, with mainly EF0 tree damage. Just south of the Linden community, a small area of EF2 damage occurred near McBryde Road where several homes were heavily damaged, including a mobile home that was completely destroyed. One fatality occurred when the tornado hit a double-wide mobile home. The victim suffered massive head injuries. Two other occupants of the mobile home survived and were taken to Betsy Johnson Hospital. In total, approximately 1000 homes were damaged, of which 310 homes suffered major damage, with 287 homes being destroyed. There were also 40 businesses that experienced damage as well. Episode ID 50288: A strong storm system that had a history of producing deadly tornadoes across Oklahoma and the deep south on the 14th and 15th weakened as it crossed the southern Appalachians during the early morning hours of the 16th. A squall line descended the Blue Ridge by the late morning hours, and rapidly intensified as it moved east into the central Piedmont of North Carolina, with four long live tornadic supercells evolving from the linear convective segment. These tornadic supercells went on to produce 9 tornadoes in the Raleigh CWA, including 2 EF3s, and 4 EF2s. The tornadoes left 8 dead with approximately 275 injuries. 1 3 26.2
74 1984 Event ID 10088998: NA Episode ID NA: NA 0 3 6.2
67 2011 Event ID 297671: The tornado exited Chatham County and entered southwest Wake County as an EF0. There was multiple tree and roof damage along Avent Ferry Road, southwest of Holly Springs. The tornado intensified to an EF1 with winds of 86 mph as it reached Fire Station Number Two and the Holly Glenn Subdivision before crossing highway 55 and tracking through the Remington subdivision. The tornado continued to track northeastward and caused extensive tree damage and damage to numerous homes, mainly from fallen trees along Pierce Olive, Ten-Ten, Penny Road, and Yates Mill Pond roads, as wind speeds increased to around 100 mph. The tornado crossed Tryon Road, between Lake Wheeler Road and the Raleigh Golf Association Golf Course, before tracking northeast across the entire City of Raleigh, producing EF1 damage in a narrow swath between 50 to 100 yards. It crossed directly over Interstates 40-440, between exits 297 and 298 with damage on both sides of the interstate clearly visible. The tornado continued northeast across South Saunders Street, where 4 businesses were damaged. A body shop was completely destroyed when the roof was ripped off and the side walls collapsed. The tornado continued to snap hardwood trees and power-lines near Mount Hope Cemetery and nearby homes. The tornado weakened as it moved northeast towards Shaw University. Campus dormitories and the university student center had windows blown in with roof damage. The tornado moved northeast along the east side of the major high rise buildings in downtown Raleigh, downing hundreds of trees, many of which fell on houses. The historic Oakwood to Lion`s Park sections of town, including the historic Oakwood Cemetery were hardest hit. Also in the path of the tornado was Saint Augustine`s College, which sustained roof damage to every building on campus. The tornado continued to down trees on numerous homes as it crossed North King Charles Road to Yonkers Road, producing EF1 damage to several businesses. The tornado crossed the 440 beltline for a second time, this time on the northeast side of downtown Raleigh near the intersections of Westinghouse and Brentwood roads, again causing damages to several businesses, including the Raleigh Iceplex. The tornado then strengthened to an EF2 with winds greater than 110 mph as it continued northeast producing extensive tree damage in a 100 to 200 yard wide path from Stony Brook Drive to Buffalo Road. Snapped trees crashed onto and through numerous homes all along the path. Four fatalities occurred when a large tree fell onto a mobile home. Two other mobile homes were thrown 30 to 50 feet when the tie downs snapped from their anchor points with nearly all of the mobile homes in the Stony Brook mobile home park sustained some type of damage. The EF2 tornado continued to move northeast across Buffalo Road, near the Cardinal Grove Subdivision. Several two story homes were completely destroyed with numerous other homes sustaining moderate to major damage. Damage consistent with an EF2 tornado continued with widespread damage in a 200 yard wide swath along Forestville road. A couple of mobile homes were destroyed and several two story homes suffered extensive roof damage, with continued numerous snapped trees falling on houses. The tornado weakened or lifted as it moved northeast towards Rolesville. Damage became very sporadic and isolated in nature as it neared the Franklin County line. In total, 2270 homes were damaged, including 67 homes that were destroyed, with another 184 homes experiencing major damage. There were also 34 businesses damaged. Episode ID 50288: A strong storm system that had a history of producing deadly tornadoes across Oklahoma and the deep south on the 14th and 15th weakened as it crossed the southern Appalachians during the early morning hours of the 16th. A squall line descended the Blue Ridge by the late morning hours, and rapidly intensified as it moved east into the central Piedmont of North Carolina, with four long live tornadic supercells evolving from the linear convective segment. These tornadic supercells went on to produce 9 tornadoes in the Raleigh CWA, including 2 EF3s, and 4 EF2s. The tornadoes left 8 dead with approximately 275 injuries. 4 3 38.0
67 2011 Event ID 297554: The tornado exited Harnett County and continued northeast into southern Johnston County. The tornado track south of Benson, where it crossed NC Highway 242 and NC Highway 50. Several modular homes were destroyed, and numerous other homes sustained major damage. There was also hundreds of trees that were uprooted or snapped in half. The tornado subsequently crossed Interstate 40 near mile Marker 330 and continued moving northeast to just south of Four Oaks before crossing Interstate 95 near mile marker 90. The tornado lifted just before reaching Smithfield, where little or no damage was observed. Throughout this part of the track there was a broad swath of EF0 damage with embedded areas of EF1 and EF2 damage. In total, 450 homes were damaged, of which 287 homes were completely destroyed. Episode ID 50288: A strong storm system that had a history of producing deadly tornadoes across Oklahoma and the deep south on the 14th and 15th weakened as it crossed the southern Appalachians during the early morning hours of the 16th. A squall line descended the Blue Ridge by the late morning hours, and rapidly intensified as it moved east into the central Piedmont of North Carolina, with four long live tornadic supercells evolving from the linear convective segment. These tornadic supercells went on to produce 9 tornadoes in the Raleigh CWA, including 2 EF3s, and 4 EF2s. The tornadoes left 8 dead with approximately 275 injuries. 2 2 14.5
60 1971 Event ID 10088066: NA Episode ID NA: NA 2 3 16.5
60 2011 Event ID 291695: This is the second segment for the tornado that originally spun up in Lenoir County. The tornado moved into Greene county just west of Highway 903. The tornado produced mainly EF0 and EF1 damage across the southern part of Greene County with damage to trees and a few homes. The tornado intensified to EF3 with winds estimated up to 160 mph southwest of Snow Hill. The tornado continued at EF3 intensity as it crossed Highway 13 just west of Snow Hill. Numerous homes and businesses were severely damaged or destroyed in this area with some almost completely flattened. Numerous vehicles were also destroyed. The strong EF3 tornado continued as it moved north of Snow Hill and severely damaged the Greene County middle school where the roof was torn off. The tornado continued to produce EF3 damage as it moved along Albriton Road where large metal power poles were bent over or completely ripped out of the ground. The tornado finally began to weaken as it passed Taylor road and dissipated near Tysons Church Road. In all about 30 million dollars of damage occurred in Greene County. There were numerous injures, 2 serious. There were no fatalities. Episode ID 49687: One of the largest tornado outbreaks ever observed across eastern North Carolina occurred during the afternoon and evening of April 16th 2011. Several powerful super-cell thunderstorms developed ahead of an approaching cold front. Conditions ahead of the front were favorable for tornadoes with a moderately unstable atmosphere combined with strong winds that veered with height. Altogether 12 tornadoes were reported across the Newport/Morehead City county warning area. These tornadoes combined to produce over 40 million dollars in damages. There were numerous injuries but no fatalities were reported. In addition to the tornadoes there were several reports of damaging winds and large hail. 0 3 15.2


3.2 Variable associations with injuries

The linear models below explain between 14% and 19% of the variance in number of injuries.

Show the code
data_for_modeling <- data_for_modeling_with_cities |>
  st_drop_geometry()

mod1 <- lm(injuries ~ tor_f_scale,
           data = data_for_modeling)

mod1_tidy <- mod1 |>
  tidy() |>
  mutate(model_id = "mod1",
         model_formula = "injuries ~ tor_f_scale") |>
  bind_cols(glance(mod1)) |>
  select(model_id, model_formula, term, estimate, std.error, adj.r.squared, sigma, nobs)
  
mod2 <- lm(injuries ~ length_mi,
           data = data_for_modeling) # note: rows with NA length_mi are omitted

mod2_tidy <- mod2 |>
  tidy() |>
  mutate(model_id = "mod2",
         model_formula = "injuries ~ length_mi") |>
  bind_cols(glance(mod2)) |>
  select(model_id, model_formula, term, estimate, std.error, adj.r.squared, sigma, nobs)

mod3 <- lm(injuries ~ tor_f_scale + length_mi,
           data = data_for_modeling)

mod3_tidy <- mod3 |>
  tidy() |>
  mutate(model_id = "mod3",
         model_formula = "injuries ~ tor_f_scale + length_mi") |>
  bind_cols(glance(mod3)) |>
  select(model_id, model_formula, term, estimate, std.error, adj.r.squared, sigma, nobs)

mod4 <- lm(injuries ~ n_intersects + tor_f_scale,
           data = data_for_modeling_with_cities)

mod4_tidy <- mod4 |>
  tidy() |>
  mutate(model_id = "mod4",
         model_formula = "injuries ~ n_intersects + tor_f_scale") |>
  bind_cols(glance(mod4)) |>
  select(model_id, model_formula, term, estimate, std.error, adj.r.squared, sigma, nobs)

model_table <- bind_rows(
  mod1_tidy,
  mod2_tidy,
  mod3_tidy,
  mod4_tidy
) |>
  filter(term != "(Intercept)")

model_table |>
  gt() |>
  fmt_number(columns = c(estimate, std.error, adj.r.squared, sigma),
             decimals = 3)
Table 3.2: Linear models: variables having associations with injuries
model_id model_formula term estimate std.error adj.r.squared sigma nobs
mod1 injuries ~ tor_f_scale tor_f_scale 5.139 0.382 0.141 12.027 1097
mod2 injuries ~ length_mi length_mi 0.717 0.063 0.106 12.268 1097
mod3 injuries ~ tor_f_scale + length_mi tor_f_scale 3.876 0.435 0.166 11.851 1097
mod3 injuries ~ tor_f_scale + length_mi length_mi 0.406 0.070 0.166 11.851 1097
mod4 injuries ~ n_intersects + tor_f_scale n_intersects 1.627 0.564 0.147 11.987 1097
mod4 injuries ~ n_intersects + tor_f_scale tor_f_scale 4.940 0.387 0.147 11.987 1097


In the models above, if a term changes by \(1\), it results in an estimate change in the number of injuries.

Adjusted \(R^2\) is the proportion of the variance explained by the linear regression.

  • mod1: there is not much correlation between injuries and force of the tornado.
  • mod2: there is not much correlation between injuries and the length of the tornado track.
  • mod3: there is not much correlation between injuries and both force and length of track.
  • mod4: including the number of intersections with populated areas does not improve the model materially. This is a surprise, since it seems to me the number of injuries would be higher the more times the tornado passes over a populated area.


3.3 Deaths

Show the code
ggplot() +
  geom_sf(data = nc_counties,
          fill = NA, linewidth = 0.05) +
  geom_sf(data = nc_cities,
          fill = "grey85", color = NA) +
  geom_sf(data = nc_state,
          fill = NA, linewidth = 0.5,
          color = "grey") +
  geom_sf(data = data_for_modeling_with_cities,
          aes(color = deaths)) +
  # scale_color_viridis_c(end = 0.85,
  #                       trans = "log2") +
  scale_color_gradient(low = carolina_blue,
                       high = "red",
                       trans = "log2",
  ) +
  theme(panel.background = element_blank(),
        panel.border = element_blank(),
        panel.grid = element_blank(),
        axis.text = element_blank(),
        axis.ticks = element_blank(),
        plot.title = element_text(size = rel(2.0), face = "bold"),
        legend.position = c(0.3, 0.3)) +
  guides(color = guide_legend(override.aes = list(linewidth = 3),
                              reverse = TRUE)) +
  labs(
    title = "Tornado tracks in North Carolina colored by deaths",
    subtitle = "Grey tracks indicate no recorded deaths. 1970-01-01 to 2023-04-30.",
    caption = my_caption,
    color = "Deaths"
  )

Figure 3.4: Tornado tracks in NC 1970-01-01 to 2023-04-30. Color indicates number of recorded deaths (direct and indirect)


Show the code
ggplot() +
  geom_sf(data = nc_counties,
          fill = NA, linewidth = 0.05) +
  geom_sf(data = nc_cities,
          fill = "grey85", color = NA) +
  geom_sf(data = nc_state,
          fill = NA, linewidth = 0.5,
          color = "grey") +
  geom_sf(data = data_for_modeling_with_cities |>
            slice_max(deaths, n = 10),
          aes(color = deaths)) +
  # scale_color_continuous(trans = "log2") +
  # scale_color_viridis_c(end = 0.85,
  #                       trans = "log2") +
  scale_color_gradient(low = carolina_blue,
                       high = "red",
                       trans = "log2",
  ) +
  theme(panel.background = element_blank(),
        panel.border = element_blank(),
        panel.grid = element_blank(),
        axis.text = element_blank(),
        axis.ticks = element_blank(),
        plot.title = element_text(size = rel(2.0), face = "bold"),
        legend.position = c(0.3, 0.3)) +
  guides(color = guide_legend(override.aes = list(linewidth = 3),
                              reverse = TRUE)) +
  labs(
    title = "Tornadoes causing ten largest numbers of deaths in NC", 
    subtitle = "1970-01-01 to 2023-04-30",
    caption = my_caption,
    color = "Deaths"
  )

Figure 3.5: Tornadoes causing ten largest number of deaths in NC (direct and indirect) 1970-01-01 to 2023-04-30.


Show the code
data_for_modeling_with_cities |>
  st_drop_geometry() |>
  slice_max(deaths, n = 10) |>
  select(deaths, year, event, episode, n_intersects, tor_f_scale, length_mi) |>
  mutate(length_mi = drop_units(length_mi)) |>
  arrange(desc(deaths)) |>
  gt() |>
  #tab_header(md(glue("**Tornadoes causing ten largest number of deaths in NC since {year_start}**"))) |>
  fmt_number(columns = length_mi,
             decimals = 1) |>
  sub_missing()
Table 3.3: Tornadoes causing ten largest number of deaths in NC since 1970
deaths year event episode n_intersects tor_f_scale length_mi
12 2011 Event ID 304929: Tornado first touched down about one mile south of Askewville (east of U.S. Rt. 13), producing minor tree and building damage. The tornado began producing significant damage on the east side of Askewville, where numerous structures and several mobile homes sustained major damage or were destroyed. The tornado then tracked continuously for nearly 19 miles finally lifting east of Harrellsville. For much of the tornado's life, the path width was one half to nearly three quarters of a mile wide. EF2 and EF3 damage was widespread from just east of Askewville northeast to about 3 miles west of Colerain, then gradually decreased as the tornado crossed into Hertford county. Numerous homes were destroyed, and many others suffered varying degrees of damage. In addition, there was extensive damage to trees and wooded areas in the path of the tornado. A split in the tornado damage paths just north of Colerain suggests that the tornado underwent a cyclic re-development with 2 tornadoes on the ground simultaneously for a period of about 5 miles. Episode ID 50952: Scattered severe thunderstorms in advance of a cold front produced damaging winds, large hail, and several tornadoes across portions of northeast North Carolina. 0 3 14.3
10 1984 Event ID 10088994: NA Episode ID NA: NA 0 3 27.5
9 1984 Event ID 10089009: NA Episode ID NA: NA 2 4 21.0
8 2006 Event ID 3485: Tornado touched down among manufactured homes just north of Old Lake Road and tracked across an area of more substantial homes and businesses along NC Highway 87. There were 13 homes (mobile and brick) destroyed and more than two dozen damaged. Damage was rated as F3 due to construction of structures that were damaged and destroyed - if structures were better constructed the damage may have been rated higher. The wind speed was estimated to be around 200 mph. As the tornado tracked north of NC Highway 87 toward the county line, the tree damage was rated as F1. Episode ID 762: A fast moving tornadic thunderstorm moved ashore on the coast of Brunswick County. There was no damage found until the storm moved across extreme eastern Columbus County and then extreme western Pender County. The tornado produced F3 damage through Riegelwood and diminished to F1 intensity as it crossed a wooded area to the Cape Fear River and into Pender County. This was the second deadliest tornado to hit North Carolina in the last 50 years. 0 3 1.5
7 1984 Event ID 10089004: NA Episode ID NA: NA 0 4 13.2
6 1984 Event ID 10089003: NA Episode ID NA: NA 0 3 7.4
4 1974 Event ID 10089850: NA Episode ID NA: NA 1 4 19.7
4 1989 Event ID 10091699: NA Episode ID NA: NA 0 4 3.8
4 2011 Event ID 297671: The tornado exited Chatham County and entered southwest Wake County as an EF0. There was multiple tree and roof damage along Avent Ferry Road, southwest of Holly Springs. The tornado intensified to an EF1 with winds of 86 mph as it reached Fire Station Number Two and the Holly Glenn Subdivision before crossing highway 55 and tracking through the Remington subdivision. The tornado continued to track northeastward and caused extensive tree damage and damage to numerous homes, mainly from fallen trees along Pierce Olive, Ten-Ten, Penny Road, and Yates Mill Pond roads, as wind speeds increased to around 100 mph. The tornado crossed Tryon Road, between Lake Wheeler Road and the Raleigh Golf Association Golf Course, before tracking northeast across the entire City of Raleigh, producing EF1 damage in a narrow swath between 50 to 100 yards. It crossed directly over Interstates 40-440, between exits 297 and 298 with damage on both sides of the interstate clearly visible. The tornado continued northeast across South Saunders Street, where 4 businesses were damaged. A body shop was completely destroyed when the roof was ripped off and the side walls collapsed. The tornado continued to snap hardwood trees and power-lines near Mount Hope Cemetery and nearby homes. The tornado weakened as it moved northeast towards Shaw University. Campus dormitories and the university student center had windows blown in with roof damage. The tornado moved northeast along the east side of the major high rise buildings in downtown Raleigh, downing hundreds of trees, many of which fell on houses. The historic Oakwood to Lion`s Park sections of town, including the historic Oakwood Cemetery were hardest hit. Also in the path of the tornado was Saint Augustine`s College, which sustained roof damage to every building on campus. The tornado continued to down trees on numerous homes as it crossed North King Charles Road to Yonkers Road, producing EF1 damage to several businesses. The tornado crossed the 440 beltline for a second time, this time on the northeast side of downtown Raleigh near the intersections of Westinghouse and Brentwood roads, again causing damages to several businesses, including the Raleigh Iceplex. The tornado then strengthened to an EF2 with winds greater than 110 mph as it continued northeast producing extensive tree damage in a 100 to 200 yard wide path from Stony Brook Drive to Buffalo Road. Snapped trees crashed onto and through numerous homes all along the path. Four fatalities occurred when a large tree fell onto a mobile home. Two other mobile homes were thrown 30 to 50 feet when the tie downs snapped from their anchor points with nearly all of the mobile homes in the Stony Brook mobile home park sustained some type of damage. The EF2 tornado continued to move northeast across Buffalo Road, near the Cardinal Grove Subdivision. Several two story homes were completely destroyed with numerous other homes sustaining moderate to major damage. Damage consistent with an EF2 tornado continued with widespread damage in a 200 yard wide swath along Forestville road. A couple of mobile homes were destroyed and several two story homes suffered extensive roof damage, with continued numerous snapped trees falling on houses. The tornado weakened or lifted as it moved northeast towards Rolesville. Damage became very sporadic and isolated in nature as it neared the Franklin County line. In total, 2270 homes were damaged, including 67 homes that were destroyed, with another 184 homes experiencing major damage. There were also 34 businesses damaged. Episode ID 50288: A strong storm system that had a history of producing deadly tornadoes across Oklahoma and the deep south on the 14th and 15th weakened as it crossed the southern Appalachians during the early morning hours of the 16th. A squall line descended the Blue Ridge by the late morning hours, and rapidly intensified as it moved east into the central Piedmont of North Carolina, with four long live tornadic supercells evolving from the linear convective segment. These tornadic supercells went on to produce 9 tornadoes in the Raleigh CWA, including 2 EF3s, and 4 EF2s. The tornadoes left 8 dead with approximately 275 injuries. 4 3 38.0
3 1976 Event ID 10089878: NA Episode ID NA: NA 0 2 10.2
3 1984 Event ID 10089001: NA Episode ID NA: NA 1 4 10.1
3 2004 Event ID 5418859: The remnants of Tropical Storm Bonnie produced a tornado that touched down just south of Rocky Point and moved northeast, causing F0-F2 damage. Damage (F0) was first observed near West Strawberry Lane, with roof damage to a couple of structures. The tornado crossed I-40, just southeast of Rocky Point. It then tracked across Martin Marietta Access Road, causing f0-f1 tree damage. The tornado intensified to f1-f2 as it moved into a small community along Hwy 210. Significant damage occurred on Clayton Lane, Nixon Avenue, and Pickett Road. The tornado reached peak intensity as it moved across Cart Wheel Road, where several homes were completely leveled. It continued to track northeast, with F1 tree damage. The tornado crossed the Northeast Cape Fear River and finally dissipated near Shaw Highway, approximately one mile north of Hwy 210. The following is a summary of damage from Pender County Emergency Management. 17 homes destroyed 25 other homes suffered major damage 34 other homes suffered minor damage 2 businesses suffered major damage 1 business suffered minor damage Episode ID 1178556: NA 0 2 5.4
3 2011 Event ID 300477: A National Weather Service Storm Survey Team found evidence of a strong tornado in northern Bladen County, near Ammon, North Carolina. The damage was rated up to an EF2. The maximum wind speed was estimated up to 130 mph. The path length was one and a half miles in Bladen County. However, the tornado remained on the ground as it moved into southeast Cumberland County. The maximum path width was 200 yards. The tornado first touched down southwest of Old Fayetteville Road and severely impacted Foxfire Nursery in northern Bladen County. The tornado completely destroyed four large hog houses and significantly damaged two others. More than one hundred hogs were killed by the tornado. Small offices and outbuildings near the hog houses were either completely destroyed or significantly damaged. There were a couple dozen trees downed in the area. Power lines were also downed. The damage was rated EF1 with winds to 105 mph. The tornado moved across a wooded area and as it approached Old Fayetteville Road, it completely destroyed three manufactured homes, two singlewide trailers and a doublewide. A fourth singlewide manufactured home was broken from its foundation and turned 90 degrees on the north side of Old Fayetteville Road. All of the homes appeared to have been strapped down. There were three fatalities. Several dozen pine and hardwood trees were snapped off as were a few power poles. The damage near and along Old Fayetteville Road was rated EF2 with winds to 130 mph. The damage path then crossed into southeast Cumberland County (WFO Raleigh, North Carolina's County Warning Area). Episode ID 50654: A powerful storm system that had moved across the deep south during previous days, swept across the eastern Carolinas during the afternoon and evening hours. Instability and shear values were highly supportive of super-cell thunderstorms. The result was a large outbreak of severe weather including strong and deadly tornadoes across eastern North Carolina. 0 2 1.5
3 2021 Event ID 945569: The tornado touched down near the intersection of Old Georgetown Road SW and Angel Trace Road as an EF-0, where a couple of pine trees were snapped and several large limbs were broken. It moved to the northeast across a forest, then rapidly intensified to an EF-2 as it approached Hwy 904. A large portion of a roof was blown off a metal building on the west side of 904, several RVs were rolled over, and several large pine trees were snapped. The tornado crossed Hwy 904, snapped numerous trees and caused moderate damage to a large metal building and church. The tornado entered the Ocean Ridge Plantation neighborhood with wind speeds up to 125 mph. Hundreds of trees were snapped, and many homes sustained minor to moderate damage. It crossed Rosebury Court SW, then strengthened to its maximum intensity of 160 mph (EF-3), as it approached Cambria Court SW. Two homes were completely destroyed in this area, and several more sustained moderate to major damage. The tornado reached its maximum path width of 275 yards as it moved across Windsor Circle, although maximum winds decreased to 115 mph (EF2). Many homes sustained moderate to major damage, hundreds of large trees were snapped, and one automobile was observed rolled on its side. It crossed Hwy 17 as an EF-1, then re-intensified to an EF-2, causing major damage to several homes and snapping hundreds of trees along Green Bay Road NW and Old Shallote Road NW. The tornado continued to produce a near continuous path of tree damage through forest and swamp land, across Hwy 130 and Highway 211, confirmed by helicopter overflight. The tornado lifted approximately three miles east of highway 211 after passing west of the Bear Pen Airstrip. Episode ID 156532: Strong low pressure and a cold front produced an EF-3 tornado. 2 3 21.9


3.4 Variable associations with death

The linear models below explain between 10% and 14% of the variance in number of deaths.

Show the code
data_for_modeling <- data_for_modeling_with_cities |>
  st_drop_geometry()

mod1 <- lm(deaths ~ tor_f_scale,
           data = data_for_modeling)

mod1_tidy <- mod1 |>
  tidy() |>
  mutate(model_id = "mod1",
         model_formula = "deaths ~ tor_f_scale") |>
  bind_cols(glance(mod1)) |>
  select(model_id, model_formula, term, estimate, std.error, adj.r.squared, sigma, nobs)
  
mod2 <- lm(deaths ~ length_mi,
           data = data_for_modeling) # note: rows with NA length_mi are omitted

mod2_tidy <- mod2 |>
  tidy() |>
  mutate(model_id = "mod2",
         model_formula = "deaths ~ length_mi") |>
  bind_cols(glance(mod2)) |>
  select(model_id, model_formula, term, estimate, std.error, adj.r.squared, sigma, nobs)

mod3 <- lm(deaths ~ tor_f_scale + length_mi,
           data = data_for_modeling)

mod3_tidy <- mod3 |>
  tidy() |>
  mutate(model_id = "mod3",
         model_formula = "deaths ~ tor_f_scale + length_mi") |>
  bind_cols(glance(mod3)) |>
  select(model_id, model_formula, term, estimate, std.error, adj.r.squared, sigma, nobs)

mod4 <- lm(deaths ~ n_intersects + tor_f_scale,
           data = data_for_modeling_with_cities)

mod4_tidy <- mod4 |>
  tidy() |>
  mutate(model_id = "mod4",
         model_formula = "deaths ~ n_intersects + tor_f_scale") |>
  bind_cols(glance(mod4)) |>
  select(model_id, model_formula, term, estimate, std.error, adj.r.squared, sigma, nobs)

model_table <- bind_rows(
  mod1_tidy,
  mod2_tidy,
  mod3_tidy,
  mod4_tidy
) |>
  filter(term != "(Intercept)")

model_table |>
  gt() |>
  fmt_number(columns = c(estimate, std.error, adj.r.squared, sigma),
             decimals = 3)
Table 3.4: Linear models: variables having associations with deaths
model_id model_formula term estimate std.error adj.r.squared sigma nobs
mod1 deaths ~ tor_f_scale tor_f_scale 0.271 0.022 0.116 0.706 1097
mod2 deaths ~ length_mi length_mi 0.033 0.004 0.067 0.726 1097
mod3 deaths ~ tor_f_scale + length_mi tor_f_scale 0.224 0.026 0.126 0.702 1097
mod3 deaths ~ tor_f_scale + length_mi length_mi 0.015 0.004 0.126 0.702 1097
mod4 deaths ~ n_intersects + tor_f_scale n_intersects 0.009 0.033 0.116 0.707 1097
mod4 deaths ~ n_intersects + tor_f_scale tor_f_scale 0.270 0.023 0.116 0.707 1097


In the models above, if a term changes by \(1\), it results in an estimate change in the number of deaths.

Adjusted \(R^2\) is the proportion of the variance explained by the linear regression.

  • mod1: there is not much correlation between deaths and force of the tornado.
  • mod2: there is not much correlation between deaths and the length of the tornado track.
  • mod3: there is not much correlation between deaths and both force and length of track.
  • mod4: as with injuries, including the number of intersections with populated areas does not improve the model materially. This is a surprise, since it seems to me the number of deaths would be higher the more times the tornado passes over a populated area.