Skip to Main Content

We introduce the R-package ‘birdring’, which provides a collection of R-functions to help with the analysis of ring re-encounter data. At present, it contains functions to read EURING data into R, to draw maps for visualising recovery data, to re-code EURING code into interpretable names, and to calculate the loxodromic and orthodromic distances between two encounter locations. The package also allows spatially different re-encounter probabilities to be estimated using the division-coefficient method. A function to obtain the proportional overlap between prior and posterior distributions facilitates parameter estimability, which is often an issue in mark–recapture models. The package is a work-in-progress and we welcome additional contributions of functions for the analysis of ring re-encounter data.

Ringing is a valuable research tool, enabling bird movements, demography, biometrics and phenology to be monitored over time. Most European countries operate a national ringing scheme to coordinate such activities and, to facilitate interchange of data, have agreed a common scheme for coding data (Speek et al 2001) and a central database for storing recoveries, the Euring DataBank (www.euring.org/edb). In this paper, we introduce a package designed to facilitate reading these data into the widely used R statistical programming environment (R Core Team 2014). The ‘birdring’ package also includes facilities to draw maps of re-encounter histories and undertake some basic analyses of ring re-encounter data. The package does not provide algorithms to fit mark–recapture/re-encounter models such as MARK (White & Burnham 1999) and its R interface RMark (Laake 2013), or the R-packages mra, BaSTA (Colchero et al 2012), Rcapture (Baillargeon & Rivest 2007), marked (Laake et al 2013), and BBRecapture (Alunni Fegatelli & Tardella 2013). However, the ‘birdring’ package provides functions that can be used to prepare and visualise the data before the start of modelling. The package also provides a simple and rapid method to estimate ring re-encounter probabilities for different areas, when the data meet some assumptions (see below). Some functions are also useful for presenting or checking the results of a mark–recapture analysis, such as drawing maps or comparing the posterior with the prior distribution of a model parameter when Bayesian methods have been used. In most cases, the ‘birdring’ package should be used in combination with other packages for analyses of ring re-encounter data.

The present version of the ‘birdring’ package is a work-in-progress. We welcome additional contributions to the ‘birdring’ package of functions for handling, plotting and analysing ring re-encounter data. All contributions will be acknowledged appropriately, for example by authorship of the function or by co-authorship of subsequent versions of the package as a whole.

STARTING R AND LOADING THE ‘birdring’ PACKAGE

The package and the tutorial below are written for users that already have some basic experience with R. If you are new to R, please download the latest release of R from the Comprehensive R Archive Network (CRAN): http://cran.r-project.org/ and consult any introductory text to get familiar with the basic principles of the programme. From our own experience, we can recommend the introductory books by Dalgaard (2008) or Crawley (2007). Many free-to-download documents explaining how to use R can also be found on the internet.

After installation of R, the R-console is opened by double-clicking the R-icon on the desktop. When using the ‘birdring’ package for the first time it has to be downloaded from CRAN. The easiest way to do this is to type the following code into your R-console:

install.packages(“birdring”)

Choose a CRAN mirror close to your location and click “yes”, ‘birdring’ will then be installed on your computer. The installation of the package has to be done only once or when the package needs to be updated. After installation, the functions in ‘birdring’ are loaded to the R-console (the programming window) by typing into the R-console:

library(birdring)

READING DATA AND TAKING A FIRST LOOK

Data from the EURING Data Bank (EDB), and national ringing schemes, will generally be supplied in either the EURING2000 or EURING2000+ formats. The EURING2000+ data format is a pipe-delimited text file without header, ie no variable names are given and the variable values are separated by the ‘pipe’ symbol ‘|’. It is usually delivered as a psv-file. The function read.euring2000plus() reads a pipe-delimited text file and adds the variable names according to the EURING code manual. The earlier EURING2000 format is a plain text file with no delimiter between the variables and no header. The function read.euring2000() reads the whole text file into R, extracts the single variables based on their position within the text file and adds the variable names according to the EURING code manual. Both functions are designed so that they leave the original data as little altered as possible. They do not re-code code that differs from the definition in the EURING code manual. In this way, the analyst sees what data are there. As a drawback, any data cleaning has to be done by hand after having read the data. However, to do some of this cleaning work, a convenience function clean() provides a way to recode some of the key variables. In particular, it can add species and place names (while warning if there are unrecognised codes), convert all sex codes to ‘M’, ‘F’ or ‘NA’, and translate letter ‘age’ codes into their numeric equivalents, see help(clean) for details.

To illustrate how to read EURING data into R we first use an old data (EURING2000 format) of Red-backed Shrikes Lanius collurio and then a new data set (EURING2000+) for Reed Warblers Acrocephalus scirpaceus. Both data sets are provided in the ‘birdring’ package in the format obtained from the EDB.

In the box below, and subsequent ones, R code is given in bold and output from running the code is shown with a grey background. The object ‘filename’ is a character vector that contains the path and name of the data file (the original one from EURING: no reformatting is required). Data supplied before August 2011 are in EURING2000 format; data supplied from August 2011 onwards are in EURING2000+ format.

Ring numbers are unique within a ringing scheme, but the combination of scheme and ring number unambiguously identifies the individual bird. The first step in each analysis of data from more than one ringing scheme is, therefore, to combine scheme and ring number into a variable that here we call ‘birdid’. Often, it is convenient to sort the data frame according to birdid and date within birdid. This is done in the second row of the following R code. Then, we add the variable ‘encounter.nr’ which numbers the encounters for each bird consecutively. Lastly, we extract the maximum number of encounters per bird and count how many individuals have been encountered how many times. We see that most birds have been encountered twice. These encounters are the ringing occasion and one re-encountering. One bird has been re-encountered 12 times (which gives together with the ringing occasion, 13 encounters in total). There is no bird that was only ringed and never re-encountered in this subset of the EURING data. The data for birds never re-encountered have not been systematically collected.

Next, we read data in the new EURING format (EURING2000+). The data are delivered as a psv-file and can be read into R using the function read.euring2000plus(). The function automatically transforms empty cells into missing values (NA). If other entries are transformed into NA, the function tells you which entries they were and in which variable.

Draw maps

At present, the package provides two different mapping functions: draw.map() and draw.recmap(). The first one simply draws a map, the second one allows, in addition to drawing a map, to visualise the recovery data in various ways.

The simple maps produced by draw.map() consist of the outline of the coast and the larger lakes. Two levels of detail can be chosen. The default is ‘detail=FALSE’ which is ideal for large maps such as maps of whole continents. For smaller maps, ‘detail=TRUE’ may be preferred. The coordinates of the coastlines used for these maps were originally downloaded from http://rimmer.ngdc.noaa.gov/mgg/coast/getcoast.html and edited afterwards to improve the visual appearance. The size of the map is specified by the range of the x-axis (longitude, the first two arguments) and the range of latitudes (third and fourth arguments). Alternatively, the edges of the map can be specified in the argument ‘bbox’ as in the draw.recmap() function (see below). The colours for land and water can be set. The widths of the four margins need to be specified if margin values are required other than the default of 0.5 on each side.

Setting the argument ‘mercator=TRUE’ results in a transformation of the latitudes so that the spaces between latitudes become broader towards the poles. The direction relative to geographic north stays constant along a straight line connecting two points on a Mercator map. However, the map produced by draw.map() is not a true Mercator map since the aspect ratio is adjusted to the user-specified area (for obtaining a true Mercator projection, use the draw.recmap() function). The right panel of Fig 1 shows such a type of Mercator map. If ‘mercator=FALSE’ (this is the default value), a rectangular map is produced by simply plotting longitude vs. latitude. Gudmundsson & Alerstam (1998) discuss the effects of using different types of map projections to visualise bird migration.

Figure 1. Re-encounter locations of the Red-backed Shrike on (a) a rectangular and (b) a Mercator projection. Lines connect the ringing and re-encounter locations of the same bird.

Once the map is drawn, the bird ringing and re-encounter information can be added using the basic plotting functions points(), lines() or segments(). When adding points and lines onto a Mercator map, the latitudes have to be transformed by the function mercatorlat() so that the points are shown at the right place in the map.

An alternative way to draw maps is provided by the draw.recmap() function. At the expense of some flexibility, this function provides a simple way of producing maps that can be used elsewhere, for example on a blog, or in a ringing report. The simplest way to use the function is to specify a data set and a file, thus (Fig 2a):

Figure 2. Several variants of recovery maps produced by the function ‘draw.recmap’ as specified in the text.

draw.recmap(lancol, “d:/firstmap.png”, points=1) # Fig. 2A

plots a map of the shrike encounters to a file called “firstmap.png”. This plots all encounters; to select just the recoveries use the subset argument:

draw.recmap(lancol, subset=“metal.ring.info==4”, points=1)

Alternatively, you can join the ringing and recovery locations with lines (Fig 2b):

draw.recmap(lancol, points=1.25, lines=1, pcol=“black”,

lcol=“red”) # Fig. 2B

par(mfrow=c(1,2))

draw.map(-18, 50, -30, 56, col.land=“darkorange”,

col.water=“lightblue”, mar=c(0.5, 0.5, 2, 0.5))

# add re-encounter locations

index <- lancol$encounter.nr>1 # re-encounters

points(lancol$lon[index], lancol$lat[index], pch=16,

cex=0.6)

# connect the encounters of the same individuals

for(ind in levels(lancol$birdid)){

index <- lancol$birdid==ind

lines(lancol$lon[index], lancol$lat[index])

}

mtext(“Rectangular map”, side=3)

draw.map(-18, 50, -30, 56, col.land=“darkorange”,

col.water=“lightblue”, mercator=TRUE,

mar=c(0.5, 0.5, 2, 0.5))

index <- lancol$encounter.nr>1 # re-encounters

points(lancol$lon[index],

mercatorlat(lancol$lat[index]), pch=16, cex=0.6)

# connect the encounters of the same individuals

for(ind in levels(lancol$birdid)){

index <- lancol$birdid==ind

lines(lancol$lon[index], mercatorlat(lancol$lat[index]))

}

mtext(“Type of Mercator projection”, side=3)

The arguments ‘pcol’ and ‘lcol’ specify the colour for the points and lines, and omitting the filename causes the map to be drawn to the screen. The first thing to notice is that, in this case, the boundaries of the map (which by default are determined by the data) are not very sensible, so we can specify those too (Fig 2c):

draw.recmap(lancol, lines=1, bbox=c(-20, 60, -40, 60)) # Fig. 2C

The bounding box (bbox) argument takes the coordinates as minimum longitude, maximum longitude, minimum latitude, maximum latitude. As discussed above, rather than plotting lat/long coordinates, you might want to plot the map in the (true) Mercator projection – to do this simply use the projection argument (Fig 2d):

draw.recmap(lancol, lines=1, bbox=c(-20, 60, -40, 60), projection= “mercator”, border= “gray”) # Fig. 2D

Note we have also added country borders this time. A nice feature of the function is that you can plot the points as a density (or ‘heat’) map showing, for example where the greatest ringing effort is, using the density argument (Fig 2e):

draw.recmap(lancol, density=TRUE, subset=“metal.ring.info==1”, bbox=c(-10,30,25,60), file=“d:/secondmap.png”) # Fig. 2E

Note that we have restricted the map just to Europe to make the pattern clearer and R warns us that some points are outside the limits of this map. Of course, one could add points to this map too, by including the points argument (hint: try something like ‘points=0.5’).

The other thing we might like to do is plot recoveries by some grouping variable. This is easy to do too. For instance to plot recoveries before and after 1985 we might try (Fig 2f):

Note the use of the legend argument to include the key, and how to specify an informative title (using ‘title=’) and legend entries (using ‘labels=’).

lancol$year2 <- 0

lancol$year2[lancol$year>1985] <- 1

draw.recmap(lancol, lines=1, lcol=c(“red”,“blue”),group=“year2”, legend=“bottomleft”,labels=c(“before”,“after”), title=“Year=1985”) # Fig. 2F

EURING CODES

In the EURING data, several variables are given as code instead of their full names. Keys for the codes are given on the EURING web page (www.euring.org/data_and_codes/index.html). The package ‘birdring’ contains tables with the codes for finding circumstances, condition a bird was found in, species, place and ringing scheme. These tables can be used to look up codes in the R-console. Some of the functions in ‘birdring’ help to translate codes into names.

Finding circumstances

The data file ‘circumstances’ contains, for all 92 possible EURING codes, the name and the description as given in the EURING database (Speek et al 2001). The descriptions were slightly adapted (non ASCII-signs deleted) so that R reads it without producing a warning or an error while retaining the original meaning. The function codes2names() transforms codes into names. The default of the argument ‘type’ is ‘Euring’. Thus, the names are given as defined in the EURING manual (Speek et al 2001). When ‘type’ is set to ‘BTO’, shortened versions of the names (as used in the ringing reports of the BTO, www.bto.org/volunteer-surveys/ringing/publications/online-ringing-reports) are available, which might be clearer when creating tables or summaries.

Condition

For the condition code, EURING does not give names, but descriptions instead. These descriptions are given in the ‘conditions’ data file. For many analyses it is important to know whether a bird was alive or dead at the time of re-encounter. This information is given in the variable ‘condition’ in a EURING re-encounter data set using 10 different codes. ‘birdring’ provides the function birdstate() to transform these condition codes into a factor that indicates the state of the birds using four factor levels only: alive, dead, sick or unknown (this operation is also performed by the clean() function). In the example code below, we use this function to count how many Red-backed Shrikes have been found dead or alive. We do this for the ringing occasion (encounter.nr=1) and the re-encounter occasions separately (encounter.nr>1).

The column ‘FALSE’ contains the number of birds released (ie encounter number not >1) in different states. The 26 birds released in unknown state may be checked more carefully. Most of the re-encounters (column ‘TRUE’, ie encounter.nr >1) constitute birds seen or recaptured alive.

Scheme

At present, 39 schemes participate in the EURING Databank (EDB). Every scheme has a three-letter code. The first two letters correspond to the country, the last to the town or city where the scheme has its headquarters. The full names of the country and the town can be obtained by the function codes2names() setting the argument ‘variable=“schemes”’. To transform the variable scheme into a variable country independent of the town of the scheme, the function scheme2country() can be used.

Species

The scientific names of the species are given in the data file ‘species’ for every species code. Codes can be transformed to species names by the function codes2names() when setting the argument ‘variable=“species”’.

TRANSFORMATIONS

Dates

The day of the year is obtained from month, day and year by the function dayofyear().

Distances and directions

The distances between two points on the world can be calculated in different ways. Two methods are in regular use to measure the distance between two encounters of a bird: the loxodromic and the orthodromic distance (Imboden & Imboden 1972). The loxodromic distance (or rhumb line) is the distance along a constant bearing line (ie a straight line on a Mercator projection). In contrast, the orthodromic (or great circle) distance is the shortest distance between two points, which on any standard projection will appear curved (hint: try plotting the Red-backed Shrike data with draw.recmap() using the ‘gcircle=TRUE’ argument).

The package ‘birdring’ provides the functions loxodrom.dist() and loxodrom.dir() that give the loxodromic distance and direction between two points. For obtaining the great circle distance, the function orthodrom.dist() can be used. The distance functions are based on the R-package ‘geosphere’ (Hijmans et al 2012).

The differences between the orthodromic and loxodromic distance measures are smaller than 100 km for most bird migration flights (in which have strong north–south components); however for long migrations, especially in the east–west direction, the two measurements can differ by up to 4,000 km (Fig 3). The decision whether orthodromic or loxodromic distances should be used may depend on the orientation mechanism and the migration strategy of the study species, which might be specific to that species.

Figure 3. Differences between the orthodromic and loxodromic distances for all points on the earth from Paris, St Petersburg and Christchurch (New Zealand).

Whereas it has generally been assumed that birds may use a constant-bearing migration course (Imboden & Imboden 1972), high-Arctic breeding migrants are thought to select the shortest migratory route, that is, along the orthodrome (great circle), in order to save time and energy (Alerstam & Pettersson 1991, Alerstam & Gudmundsson 1999, Alerstam et al 2001, 2008). However not all high-Arctic breeders seem to use great-circle courses, see for example Gudmundsson (1994) and Schmaljohann et al (2012). Furthermore, birds might adapt their compass mechanism during a journey depending on environmental conditions (Muheim et al 2003).

DIVISION COEFFICIENT

The division coefficient allows bird-distribution estimates to be based on ring re-encounter data while taking into account spatially different ring re-encounter probabilities. The method was proposed by Busse & Kania (1977) and Kania & Busse (1987). They related the numbers of ringed birds per group G (N G ) to the number of re-encountered birds of group G in different destination areas T (V GT ) in a system of linear equations. For an example of two groups and two destination areas, such a system is: The number of birds ringed necessary to obtain one re-encounter, ie the inverse of the re-encounter probability in area T (A or B), is denoted x T:

where rT is the probability that a bird is re-encountered, given that it migrates to area T.

There exists one exact solution for x T if the number of groups equals the number of destination areas, and a least-squares solution can be found if the number of groups exceeds the number of destination areas (Kania & Busse 1987). From the solution of the equation system, the division coefficient is obtained by the following formula, where the hats (^) indicate estimates of the values:

The division coefficient is the proportion of birds of group G migrating to destination area T. Confidence intervals of the estimated division coefficients can be obtained through bootstrapping (Korner-Nievergelt et al 2010). Note that the division coefficient method gives unbiased results only if (i) there are no group differences in the area-specific re-encounter probabilities, (ii) at least a small proportion of each group migrates to each destination area, and (iii) the sum of the destination areas covers the entire range of all groups. The first assumption (i) in particular may cause problems with real data, for example when re-encounter probability is spatially heterogeneous within a destination area and different groups are distributed differently within this area. Destination areas should therefore, be chosen so that re-encounter probability can be assumed to be homogeneous within each area: often, political regions may be better than squares defined by longitudes and latitudes. Furthermore, it is necessary that not all groups have the same division coefficient (ie there are differences between groups) in order to obtain precise estimates. The precision of the division-coefficient estimate () increases with increasing differences in the division coefficient between the groups, with increasing sample size, and with decreasing difference in re-encounter probability between the destination areas (Korner-Nievergelt et al 2010). For further underlying assumptions and data requirements see Kania & Busse (1987) and Korner-Nievergelt et al (2010).

The function dc() calculates, from the number of ringed birds per group and the number of re-encountered birds per group in each destination area, the division coefficients per group and the estimated re-encounter probabilities per destination area, as described by Kania & Busse (1987). The function bootci.dc() gives the bootstrap confidence intervals for the division coefficients and the re-encounter probabilities estimated by dc(). For details see Korner-Nievergelt et al (2010).

To illustrate the use of the functions dc() and bootci.dc() we use ring re-encounter data from Woodcocks Scolopax rusticola ringed during winter in France. These data suggest that birds of two distinct flyways winter in France: individuals from an eastern one with re-encounters from Austria to Russia during migration and the breeding season, and individuals from a Scandinavian flyway with re-encounters from Belgium, the Netherlands and Scandinavia. Bauthian et al (2007) used a method that is related to the division coefficient to estimate the composition of wintering Woodcocks in different parts of France in relation to the two flyways.

Here, it is shown how the functions dc() and bootci.dc() can be used to obtain estimates of the composition of wintering Woodcocks. The numbers of Woodcocks ringed in each of seven French regions (North, West, Southwest, Central North, Central South, Northeast, Southeast) are assigned to the vector ‘N’. The numbers of re-encounters in each of the seven groups in one of the two flyways are assigned to the matrix ‘recmatrix’. Then the function dc() is applied in order to obtain for each group the estimated proportions of birds migrating to each flyway and the estimated re-encounter probability per flyway.

The estimated re-encounter probabilities are around 0.01 in both Scandinavia and in the Eastern countries. We further see, that of Woodcocks wintering in north and west France, 26–31% migrate to Scandinavia, whereas for the other winter populations further to the south-east of France, this proportion is much lower.

Finally, we use bootci.dc() to obtain bootstrap 95% confidence intervals for these estimates. The number of bootstrap samples is specified in the argument R = 500. (Note: the relatively low number of bootstrap sample in the example codes is chosen because the computation is time consuming. It is recommended to use 1,000 or more bootstrap samples for 95% confidence intervals, and higher numbers for larger confidence intervals such as 99%; Manly 2007). This gives for every parameter estimate the lower and upper limit of the 95% confidence interval.

A HELPER FUNCTION FOR ASSESSING MARK–RECAPTURE MODELS

Mark–recapture models, especially multi-state models, often suffer from weak identifiability of the model parameters (Catchpole et al 2001). One possibility for assessing how well the parameter estimates are informed by the data is the comparison of their prior with their posterior distribution (Gimenez et al 2009). The function overlap() calculates the overlap of the posterior with the prior distribution of a model parameter based on samples of simulated values of each distribution. The smaller the overlap between the prior and the posterior distribution, the more informed the posterior distribution has been by the data, and hence there is a higher likelihood the parameter can be estimated.

In the example, the posterior overlap with the prior is 34% (Fig 4).

Figure 4. The prior and posterior probability distributions for parameter estimates: the overlap is visualised in grey.

ACKNOWLEDGEMENTS

We thank Chris du Feu for maintaining the EURING data base and answering all our technical questions. Heiko Schmaljohann very kindly commented on parts of the tutorial. We also thank Michael Vock for improving the R-code of the division-coefficient functions and Wojciech Kania for valuable comments on the section about the division coefficient. We also would like to thank the authors of the article on the Woodcock ring-recovery analyses, I. Bauthian, F. Gossmann, Y. Ferrand and R. Julliard (ONCFS), for kindly providing their data to be used as an example.

    REFERENCES

  • Alerstam, T. & Gudmundsson, G.A. (1999) Bird orientation at high latitudes: flight routes between Siberia and North America across the Arctic Ocean. Proceedings of the Royal Society of London series B: Biological Sciences 266, 24992505. doi: 10.1098/rspb.1999.0952 [Crossref], [PubMed][Google Scholar]
  • Alerstam, T. & Pettersson, S.-G. (1991) Orientation along great circles by migrating birds using a sun compass. Journal of Theoretical Biology 152, 191202. doi: 10.1016/S0022-5193(05)80452-7 [Crossref], [Web of Science ®][Google Scholar]
  • Alerstam, T., Gudmundsson, G.A., Green, M. & Hedenström, A. (2001) Migration along orthodromic sun compass routes by Arctic birds. Science 291, 300303. doi: 10.1126/science.291.5502.300 [Crossref], [PubMed], [Web of Science ®][Google Scholar]
  • Alerstam, T., Bäckman, J., Strandberg, R., Gudmundsson, G.A., Hedenström, A., Henningsson, S., Håkan, K. & Mikael, R. (2008) Great-circle migration of Arctic passerines. The Auk 125, 831838. doi: 10.1525/auk.2008.07142 [Crossref], [Web of Science ®][Google Scholar]
  • Alunni Fegatelli, D. & Tardella, L. (2013) Improved inference on capture recapture models with behavioural effects. Statistical Methods & Applications 22, 4566. doi: 10.1007/s10260-012-0221-4 [Crossref], [Web of Science ®][Google Scholar]
  • Baillargeon, S. & Rivest, L.-P. (2007) Rcapture: loglinear models for capture–recapture in R. Journal of Statistical Software 19, 131. [Crossref], [PubMed], [Web of Science ®][Google Scholar]
  • Bauthian, I., Gossmann, F., Ferrand, Y. & Julliard, R. (2007) Quantifying the origin of Woodcock wintering in France. Journal of Wildlife Management 71, 701705. doi: 10.2193/2004-354 [Crossref], [Web of Science ®][Google Scholar]
  • Busse, P. & Kania, W. (1977) A quantitative estimation of distribution of ringed birds on the basis of recovery dispersal. Notatki Ornitologiczne 18, 7993. [Google Scholar]
  • Catchpole, E.A., Kgosi, P.M. & Morgan, B.J.T. (2001) On the near-singularity of models for animal recovery data. Biometrics 57, 720726. doi: 10.1111/j.0006-341X.2001.00720.x [Crossref], [PubMed], [Web of Science ®][Google Scholar]
  • Colchero, F., Jones, O.R. & Rebke, M. (2012) BaSTA: an R package for Bayesian estimation of age-specific survival from incomplete mark–recapture/recovery data with covariates. Methods in Ecology and Evolution 3, 466470. doi: 10.1111/j.2041-210X.2012.00186.x [Crossref], [Web of Science ®][Google Scholar]
  • Crawley, M.J. (2007) The R Book. John Wiley & Sons, Chichester, West Sussex. [Crossref][Google Scholar]
  • Dalgaard, P. (2008) Introductory statistics with R. Second edition. Springer, New York. [Crossref][Google Scholar]
  • Gimenez, O., Brooks, S.P. & Morgan, B.J.T. (2009) Weak identifiability in models for mark–recapture–recovery data. In Modelling Demographic Processes in Marked Populations (eds Thomson, D.L., Cooch, E.G. & Conroy, M.J.), pp 10551067. Springer, New York. [Crossref][Google Scholar]
  • Gudmundsson, G.A. (1994) Spring migration of the Knot Calidris c. canutus over southern Scandinavia, as recorded by radar. Journal of Avian Biology 25, 1526. doi: 10.2307/3677290 [Crossref], [Web of Science ®][Google Scholar]
  • Gudmundsson, G.A. & Alerstam, T. (1998) Optimal map projections for analysing long-distance migration routes. Journal of Avian Biology 29, 597605. doi: 10.2307/3677180 [Crossref], [Web of Science ®][Google Scholar]
  • Hijmans, R.J., Williams, E. & Vennes, C. (2012) geosphere: Spherical Trigonometry. http://CRAN.R-project.org/package=geosphere [Google Scholar]
  • Imboden, C. & Imboden, D. (1972) Formel für Orthodrome und Loxodrome bei der Berechnung von Richtung und Distanz zwischen Beringungs- und Wiederfundort. Die Vogelwarte 26, 336346. [Google Scholar]
  • Kania, W. & Busse, P. (1987) An analysis of the recovery distribution based on finding probabilities. Acta Ornithologica 23, 121128. [Google Scholar]
  • Korner-Nievergelt, F., Schaub, M., Thorup, K., Vock, M. & Kania, W. (2010) Estimation of bird distribution based on ring reencounters: precision and bias of the division coefficient and its relation to multi-state models. Bird Study 57, 5668. doi: 10.1080/00063650903154439 [Taylor & Francis Online][Google Scholar]
  • Laake, J.L. (2013) RMark: an R interface for analysis of capture–recapture data with MARK. AFSC Processed Rep. 2013–01, 25 p. Alaska Fisheries Science Center, NOAA, National Marine Fisheries Service, Seattle, WA. [Google Scholar]
  • Laake, J.L., Johnson, D.S. & Conn, P.B. (2013) marked: an R package for maximum likelihood and Markov Chain Monte Carlo analysis of capture–recapture data. Methods in Ecology and Evolution 4, 885890. doi: 10.1111/2041-210X.12065 [Crossref], [Web of Science ®][Google Scholar]
  • Manly, B.F.J. (2007) Randomization, Bootstrap and Monte Carlo Methods in Biology. Chapman & Hall, Boca Raton, FL. [Google Scholar]
  • Muheim, R., Åkesson, S. & Alerstam, T. (2003) Compass orientation and possible migration routes of passerine birds at high arctic latitudes. Oikos 103, 341349. doi: 10.1034/j.1600-0706.2003.12122.x [Crossref], [Web of Science ®][Google Scholar]
  • R Core Team (2014) R: A Language and Environment for Statistical Computing. R Foundation for Statistical Computing, Vienna, Austria. www.R-project.org [Google Scholar]
  • Schmaljohann, H., Fox, J.W. & Bairlein, F. (2012) Phenotypic response to environmental cues, orientation and migration costs in songbirds flying halfway around the world. Animal Behaviour 84, 623640. doi: 10.1016/j.anbehav.2012.06.018 [Crossref], [Web of Science ®][Google Scholar]
  • Speek, G., Clark, J.A., Rhode, Z., Wassenaar, R.D. & van Noordwijk, A.J. (2001) The EURING exchange-code 2000. Dutch Ringing Scheme, Heteren. [Google Scholar]
  • White, F.C. & Burnham, K.P. (1999) Program MARK: survival estimation from populations of marked animals. Bird Study 46, S120189. doi: 10.1080/00063659909477239 [Taylor & Francis Online], [Web of Science ®][Google Scholar]