Skip to content
Branch: master
Find file History
Latest commit 47567cb Apr 29, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information.
raw Add files via upload Apr 29, 2019
bird_call.csv Add files via upload Apr 29, 2019
bird_collisions.csv Add files via upload Apr 29, 2019
mp_light.csv Add files via upload Apr 29, 2019 Update Apr 29, 2019

Chicago Bird Collisions

Winger et al, 2019 examined nocturnal flight-calling behavior and vulnerability to artificial light in migratory birds.

"Understanding interactions between biota and the built environment is increasingly important as human modification of the landscape expands in extent and intensity. For migratory birds, collisions with lighted structures are a major cause of mortality, but the mechanisms behind these collisions are poorly understood. Using 40 years of collision records of passerine birds, we investigated the importance of species' behavioural ecologies in predicting rates of building collisions during nocturnal migration through Chicago, IL and Cleveland, OH, USA. "

"One of the few means to examine species-specific dynamics of social biology during nocturnal bird migration is through the study of short vocalizations made in flight by migrating birds. Many species of birds, especially passerines (order Passeriformes), produce such vocal signals during their nocturnal migrations. These calls (hereafter, ‘flight calls’) are hypothesized to function as important social cues for migrating birds that may aid in orientation, navigation and other decision-making behaviours.not all nocturnally migratory species make flight calls, raising the possibility that different lineages of migratory birds vary in the degree to which social cues and collective decisions are important for accomplishing migration. "

I have only uploaded the raw and tamed Chicago dataset as it is the most complete, but you can access the full raw data here.

Each row in the bird_collisions.csv dataset accounts for a single observation of a bird collision. You can aggregate by species/genus, time, or other factors.

h/t to Data is Plural 2019/04/10

Important Notes but Spoilers

An important point but somewhat spoiler from the authors

From 2000 to 2018, D.E.W. and M.H. recorded data on the status of night-time lighting at McCormick Place during pre-dawn walks to collect collisions by recording the proportion of the 17 window bays that were illuminated... We used this index to test whether building lighting influenced the number of collisions and whether the influence of light levels on collisions counts varied across the sets of species with different flight-calling behaviour or habitat preferences.

There is a factor data column (bird_collisions$locality) that indicates if the data was collected at McCormick Place (MP) or elsewhere in Chicago (CHI). If you dplyr::filter to only use MP you can dplyr::left_join the light data and the bird collision data to look at the effects of light on bird collisions from 2000 on.

Get the data!

bird_collisions <- readr::read_csv("")
mp_light <- readr::read_csv("")


When using this data, please cite the original publication:

Winger BM, Weeks BC, Farnsworth A, Jones AW, Hennen M, Willard DE (2019) Nocturnal flight-calling behaviour predicts vulnerability to artificial light in migratory birds. Proceedings of the Royal Society B 286(1900): 20190364.

If using the data alone, please cite the Dryad data package:

Winger BM, Weeks BC, Farnsworth A, Jones AW, Hennen M, Willard DE (2019) Data from: Nocturnal flight-calling behaviour predicts vulnerability to artificial light in migratory birds. Dryad Digital Repository.

Data Dictionary


variable class description
genus factor Bird Genus
species factor Bird species
date date Date of collision death (ymd)
locality factor MP or CHI - recording at either McCormick Place or greater Chicago area
family factor Bird Family
flight_call factor Does the bird use a flight call - yes or no
habitat factor Open, Forest, Edge - their habitat affinity
stratum factor Typical occupied stratum - ground/low or canopy/upper


variable class description
date date Date of light recording (ymd)
light_score integer Number of windows lit at the McCormick Place, Chicago - higher = more light

Cleaning script


# Read in the raw data

raw_birds <- read_csv(here("2019", "2019-04-30", "Chicago_collision_data.csv")) %>% 

raw_light <- read_csv(here("2019", "2019-04-30", "Light_levels_dryad.csv")) %>% 

raw_call <- read_csv(here("2019", "2019-04-30", "bird_call.csv")) %>% 
  set_names(nm = "col_to_split")

# add column names for call_data
clean_col <- c("genus", "species", "Family", "Collisions", "Flight Call", "Habitat", "Stratum")

# separate space delim columns
clean_call <- raw_call %>% 
  separate(col_to_split, into = clean_col, sep = " ") %>% 
  janitor::clean_names() %>% 
  select(family, genus, species, everything())

# join bird metadata to impact data
clean_birds <- raw_birds %>% 
  left_join(clean_call, by = c("genus", "species")) %>% 
  mutate(flight_call = case_when(genus == "Ammodramus" & species == "nelsoni" ~ "Yes",
                                 genus == "Ammodramus" & species == "leconteii" ~ "Yes",
                                 TRUE ~ flight_call)) %>% 
         ! %>% 

# confirm match - matches the summary-level data
raw_birds %>% 
  unite("g_s", c("genus","species")) %>% 
  group_by(g_s) %>% 
  count(sort = TRUE)

clean_birds %>% write_csv(here("2019", "2019-04-30", "bird_collisions.csv"))
raw_light %>% write_csv(here("2019", "2019-04-30", "mp_light.csv"))

You can’t perform that action at this time.