Data and code from: Natal versus breeding dispersal in Arctic terns (Sterna paradisaea): A banding study from Denmark (1931–2005)
Data files
Sep 30, 2026 version files 241.98 KB
-
Ad_DaD.csv
11.46 KB
-
BasicInfoplot.Rmd
89.83 KB
-
README.md
9.74 KB
-
revision.R
79.89 KB
-
U_DaD.csv
51.06 KB
Abstract
The dispersal of migratory birds is a crucial process that directly influences population viability, genetic connectivity and adaptive potential in changing environments. Using banding data spanning 75 years (1931–2005) for Arctic Terns (Sterna paradisaea) in Denmark, we identified 200 breeding dispersal and 890 natal dispersal events. We characterised their spatial and temporal patterns and compared the differences between natal and breeding dispersal. We found limited dispersal distances and restricted directional preferences, as well as a low trans-regional exchange rate during breeding dispersal. In contrast, natal dispersal exhibited longer distances, more diverse directional preferences and a higher frequency of cross-regional movement events. This study offers a valuable long-term dataset and a descriptive foundation for future research and conservation of these migratory birds.
Description of the data and file structure
This dataset contains the natal and breeding dispersal events of Arctic terns (Sterna paradisaea) ringed in Denmark, together with the R code used to describe and test them. The events were derived from ringing records of the Danish Tern Group, from birds later recorded breeding at a colony other than the one where they were ringed. There are two tables. U_DaD.csv holds 890 natal dispersal events, from birds ringed as chicks. Ad_DaD.csv holds 200 breeding dispersal events, from birds ringed as breeding adults. Each row gives the departure and arrival colony coordinates (decimal degrees, WGS84), the year, the great-circle dispersal distance (km) and the initial bearing (degrees from north).
Two R scripts reproduce the descriptive analyses, circular statistics, colony connectivity (chord) diagrams and significance tests reported in the associated article: the Kolmogorov–Smirnov, Watson U², Fisher's exact and Mardia–Watson–Wheeler tests. The data can be reused to compare dispersal distance and direction between age classes, to study connectivity among seabird colonies, or to combine with environmental data to test drivers of dispersal.
The data concern wild birds only and contain no personal information. Individual ringing records (ring numbers, sites and dates) are held by the Danish Tern Group and are not included.
The events were derived from ringing (banding) records of the Danish Tern Group, from birds recorded at more than one colony:
- Natal dispersal (U): a bird ringed as a chick at one colony was later recorded breeding at a different colony (890 events).
- Breeding dispersal (Ad): a bird ringed as a breeding adult was later recorded breeding at a different colony (200 events).
Only these derived event tables are shared. The individual ringing records (ring numbers, sites and years) are not included.
Coordinates are decimal degrees (WGS84) and are rounded to 0.01°. The files contain no missing values.
Files
| File | Content | Rows |
|---|---|---|
Ad_DaD.csv |
Breeding dispersal events | 200 |
U_DaD.csv |
Natal dispersal events | 890 |
BasicInfoplot.Rmd |
R Markdown: exploratory and descriptive analysis | – |
revision.R |
R script: final figures and significance tests | – |
Variables in Ad_DaD.csv and U_DaD.csv
Both files have the same columns. One row is one dispersal event: the colony a bird left (departure) and the colony where it was later recorded breeding (arrival).
| Variable | Unit | Description |
|---|---|---|
UID |
– | Sequential event ID (1–200 in Ad_DaD.csv; 1–890 in U_DaD.csv) |
depart_lat |
decimal degrees | Latitude of the departure colony |
depart_lon |
decimal degrees | Longitude of the departure colony |
arrive_lat |
decimal degrees | Latitude of the arrival colony |
arrive_lon |
decimal degrees | Longitude of the arrival colony |
year |
year | Year of the dispersal event, as used in the published analysis (Ad: 1967–1986; U: 1946–2005) |
distance_km |
km | Great-circle distance between departure and arrival colonies, from R geosphere::distVincentySphere |
direction_deg |
degrees | Initial bearing from the departure to the arrival colony, from R geosphere::bearing: 0 = north, 90 = east, ±180 = south, −90 = west; range −180 to 180 |
Code/software
Both scripts were run in R 4.4–4.5. All comments are in English, and each script begins with a header describing it in full. Set the working directory to the folder containing the data files before running either script.
File: BasicInfoplot.Rmd
Description: exploratory and descriptive analysis
An R Markdown notebook whose code chunks run top to bottom. Its figures and tables are printed in the knitted HTML report, and it writes no files. Two exploratory maps of departure colonies use random jitter without a fixed seed, so their point positions vary slightly between runs. All other outputs are reproducible exactly. It covers:
- Distance and direction histograms and dispersal events per year, for natal (U) and then breeding (Ad) dispersal.
- Directions converted to 0–360°, grouped into periods of years. A Rayleigh test is run per period, followed by rose diagrams, heatmaps and proportion tables in 10° bins.
- Maps of departure colonies and departure-to-arrival flow lines.
- Colonies grouped into 0.1° cells and clustered with k-means, then a chord diagram of connectivity among clusters.
- Combined U vs Ad figures: circular statistics, events per sampling effort, and distance and direction plots.
- Stay ratio (stay / (stay + leave)) per colony, a PCA of environmental conditions at departure colonies, and a quasi-binomial GLM of stay ratio against sample size.
- A kernel density map of colonies with pie charts of dispersal status per k-means cluster.
Required packages: ggplot2, dplyr, tidyr, tidyverse, readr, readxl, geosphere, circular, circlize, RColorBrewer, plotly, ggtext, sf, raster, viridis, ggplotify, patchwork, scales, gghalves, ks, Hmisc, factoextra, pheatmap, gridExtra, grid, ggrepel, cluster, cowplot.
File: revision.R
Description: final figures and significance tests
This script reproduces the Figure 3 and Figure 5 panels of the associated article and the statistical tests reported there.
- It repeats the descriptive steps for U and Ad from
BasicInfoplot.Rmd. - It draws chord diagrams of connectivity among spatial clusters, annotated with Fisher's exact test (Fig. 5c breeding, Fig. 5d natal).
- It plots dispersal events per year and per sampling effort (Fig. 3a, 3b) and dispersal-distance histograms for U vs Ad (Fig. 3c).
- It draws direction rose diagrams by year for juveniles and adults (Fig. 3d).
- It runs four significance tests and prints them to the console:
- two-sample Kolmogorov–Smirnov test (distance);
- Watson's two-sample U² test (direction);
- Fisher's exact test (regional connectivity);
- Mardia–Watson–Wheeler test (direction across periods).
Outputs: nine PNG panels (300 dpi) written to the working directory: Fig3a_events_natal.png, Fig3b_events_breeding.png, Fig3c_distance.png, Fig3d_juvenile.png, Fig3d_adult.png, Fig3d_legend.png, Fig5c_chord_breeding.png, Fig5d_chord_natal.png, Fig5_legend.png. Random seeds are fixed (set.seed(123)).
Required packages: ggplot2, dplyr, tidyr, tidyverse, tibble, readxl, geosphere, circular, circlize, RColorBrewer, plotly, ggtext, sf, raster, viridis, ggplotify, patchwork, scales, gghalves, ks, Hmisc, pheatmap, gridExtra, grid, ggrepel.
Additional inputs read by the scripts (not included)
The distance, direction, connectivity and significance-test analyses run on Ad_DaD.csv and U_DaD.csv alone. Some plots also read the files below:
| File | Used for | Availability |
|---|---|---|
denmark_Denmark_Country_Boundary.shp |
Base maps | geoBoundaries, Denmark ADM0 (https://www.geoboundaries.org), CC BY 4.0 |
observation_u.CSV, observation_Ad.CSV |
Events per sampling effort (Fig. 3a, 3b) | Derived from the raw ringing records; not shared |
breeding.CSV, natal.CSV, Ude.CSV, ADde.CSV, Ad.csv, U.csv |
Sections 6–7 of BasicInfoplot.Rmd |
Derived from the raw ringing records and environmental data; not shared |
Access information
- Raw ringing records: held by the Danish Tern Group and not shared in this dataset.
- Environmental variables (used only in section 6 of
BasicInfoplot.Rmd): HELCOM COMBINE database (https://helcom.fi) and Global Fishing Watch (https://globalfishingwatch.org).
