Context

This indicator is composed of an index and integrates the population abundance and the diversity of a selection of common bird species associated with specific habitats. Rare species are excluded. Three groups of bird species are represented: common farmland species (39 species), common forest species (33 species) and all common bird species (163 species) which include the farmland species, the forest species and a further 91 common species (generalists, as opposed to the farmland and forest specialists). Farmland birds have a high dependence on cultivated land during the nesting season and for feeding during most of the year, while forest birds are equally dependent on wooded areas. An agreed European list of bird species is used, from which each country chooses the species to be covered by the data collected in the field. This means that different species are covered in each country, according to their occurrence; for example for the farmland birds, only the Skylark is included in the indice of all countries. The indice should be judged only in their overall development rather than in their annual fluctuation because they are the result of a modelling procedure. The whole time series is re-calculated each time new data are added. Although this indicator has a narrow focus compared to EU policy objectives on biodiversity and ecosystem services, it is considered to be the best available dataset and also indicative of general environmental status. Data are for the EU, an aggregate that changes according to countries joining the Pan-European Common Birds Monitoring Scheme. This aggregate has nothing to do with the same countries’ accession to the EU. Norway and Switzerland are not included in the EU estimates. http://ec.europa.eu/eurostat/data/database http://ec.europa.eu/eurostat/cache/metadata/en/tsdnr100_esmsip.htm

See : GREGORY R. D., STRIEN A. VAN. « Wild bird indicators: using composite population trends of birds as measures of environmental health ». Ornithological Science [En ligne]. 1 juin 2010. Vol. 9, n°1, p. 3‑22. Disponible sur : < http://dx.doi.org/10.2326/osj.9.3 >

Code

library(ggplot2)
library(reshape2)
library(plyr)

# Download and load data
url <- "http://ec.europa.eu/eurostat/estat-navtree-portlet-prod/BulkDownloadListing?file=data/tsdnr100.tsv.gz"
file <- basename(url)
download.file(url, file)

(raw <- read.table(file, na.strings = ":", header = TRUE, check.names = FALSE, stringsAsFactors = FALSE))
##    unit,comspec,geo\\time 1990  1991  1992  1993  1994  1995  1996 1997
## 1         I90,CO_ALL,EU_V  100  97.3  96.7  96.9  96.3  91.2  92.4 92.3
## 2          I90,CO_FARM,BE  100  98.9  86.1  97.0  87.5  84.2  83.0 80.9
## 3          I90,CO_FARM,CZ  100  94.1 103.7 105.0 102.9 114.2 104.3 88.5
## 4          I90,CO_FARM,DK  100  91.0  86.8  84.1  87.5  84.0  83.5 79.8
## 5          I90,CO_FARM,EE  100  86.0  83.2  84.5  75.4  65.6  83.9 74.5
## 6        I90,CO_FARM,EU_V  100  93.9  98.9  98.4  94.2  83.2  82.2 87.5
## 7          I90,CO_FARM,FI  100 102.2  95.5  83.5  88.9  88.2  75.8 76.7
## 8          I90,CO_FARM,FR  100  91.4  95.6  89.8  93.3  82.6  87.8 89.2
## 9          I90,CO_FARM,NL  100  89.8  86.2  89.2  84.9  83.5  87.8 86.2
## 10         I90,CO_FARM,SE  100  84.0  82.5  86.6  93.2  90.2  83.9 81.0
## 11         I90,CO_FARM,UK  100  94.1  84.6  80.7  78.6  84.5  82.0 76.4
## 12        I90,CO_FOR,EU_V  100 100.6  96.9  87.7  93.8  87.2  90.3 93.0
##    1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011
## 1  88.0 88.4 88.1 91.8 89.8 90.2 93.3 89.9 89.7 91.3 91.0 87.3 88.4 89.0
## 2  81.2 78.9 67.4 75.8 63.7 58.2 69.0 63.6 68.4 62.5 61.2   NA   NA   NA
## 3  77.2 73.2 76.3 80.7 77.1 70.9 89.3 68.1 64.0 60.5 74.3   NA   NA   NA
## 4  78.2 84.0 80.4 78.5 73.5 70.3 68.5 61.4 64.8 66.4 63.7   NA   NA   NA
## 5  76.4 76.1 87.1 84.2 92.9 80.9 85.8 88.4 91.9   NA   NA   NA   NA   NA
## 6  82.7 85.2 82.0 85.4 75.7 77.5 80.8 78.4 76.6 76.2 76.1 74.1 72.4 74.2
## 7  82.9 79.4 73.1 85.3 81.9 77.3 78.8 79.1 76.5 77.8 78.7   NA   NA   NA
## 8  87.0 83.2 81.8 79.7 78.9 75.7 80.8 80.9 78.0 78.0 78.7   NA   NA   NA
## 9  85.0 82.0 81.4 77.8 75.1 74.1 77.4 77.0 77.0 73.9 75.1   NA   NA   NA
## 10 74.3 73.3 78.5 75.8 72.4 69.6 72.2 63.6 65.8 69.2 67.8   NA   NA   NA
## 11 73.8 74.3 78.5 80.6 78.4 74.1 73.6 72.5 70.6 66.5 65.5   NA   NA   NA
## 12 84.0 81.2 79.7 82.2 84.2 85.7 90.7 86.6 86.3 84.8 88.4 84.2 85.7 86.8
##    2012
## 1  89.2
## 2    NA
## 3    NA
## 4    NA
## 5    NA
## 6  72.6
## 7    NA
## 8    NA
## 9    NA
## 10   NA
## 11   NA
## 12 92.7
# The table is not ready for analysis

# clean the dataframe : rename fields, replace values, discard incomplete countries,
# reshape in long format and transform year factors into numeric
renamed <- rename(raw, replace = c("unit,comspec,geo\\time" = "type"))

renamed$type[renamed$type == "I90,CO_ALL,EU_V"] <- "All"
renamed$type[renamed$type == "I90,CO_FARM,EU_V"] <- "Farm"
renamed$type[renamed$type == "I90,CO_FOR,EU_V"] <- "Forest"

filtered <- subset(renamed, type == "All" | type == "Farm" | type == "Forest")

birds.eu <- melt(filtered, id.vars = "type", variable.name = "year", value.name = "index")

birds.eu$year <- as.numeric(levels(birds.eu$year))[birds.eu$year]

# nicer
birds.eu
##      type year index
## 1     All 1990 100.0
## 2    Farm 1990 100.0
## 3  Forest 1990 100.0
## 4     All 1991  97.3
## 5    Farm 1991  93.9
## 6  Forest 1991 100.6
## 7     All 1992  96.7
## 8    Farm 1992  98.9
## 9  Forest 1992  96.9
## 10    All 1993  96.9
## 11   Farm 1993  98.4
## 12 Forest 1993  87.7
## 13    All 1994  96.3
## 14   Farm 1994  94.2
## 15 Forest 1994  93.8
## 16    All 1995  91.2
## 17   Farm 1995  83.2
## 18 Forest 1995  87.2
## 19    All 1996  92.4
## 20   Farm 1996  82.2
## 21 Forest 1996  90.3
## 22    All 1997  92.3
## 23   Farm 1997  87.5
## 24 Forest 1997  93.0
## 25    All 1998  88.0
## 26   Farm 1998  82.7
## 27 Forest 1998  84.0
## 28    All 1999  88.4
## 29   Farm 1999  85.2
## 30 Forest 1999  81.2
## 31    All 2000  88.1
## 32   Farm 2000  82.0
## 33 Forest 2000  79.7
## 34    All 2001  91.8
## 35   Farm 2001  85.4
## 36 Forest 2001  82.2
## 37    All 2002  89.8
## 38   Farm 2002  75.7
## 39 Forest 2002  84.2
## 40    All 2003  90.2
## 41   Farm 2003  77.5
## 42 Forest 2003  85.7
## 43    All 2004  93.3
## 44   Farm 2004  80.8
## 45 Forest 2004  90.7
## 46    All 2005  89.9
## 47   Farm 2005  78.4
## 48 Forest 2005  86.6
## 49    All 2006  89.7
## 50   Farm 2006  76.6
## 51 Forest 2006  86.3
## 52    All 2007  91.3
## 53   Farm 2007  76.2
## 54 Forest 2007  84.8
## 55    All 2008  91.0
## 56   Farm 2008  76.1
## 57 Forest 2008  88.4
## 58    All 2009  87.3
## 59   Farm 2009  74.1
## 60 Forest 2009  84.2
## 61    All 2010  88.4
## 62   Farm 2010  72.4
## 63 Forest 2010  85.7
## 64    All 2011  89.0
## 65   Farm 2011  74.2
## 66 Forest 2011  86.8
## 67    All 2012  89.2
## 68   Farm 2012  72.6
## 69 Forest 2012  92.7
# Graph
palette = c("#000000", "#885555", "#009900")

ggplot(birds.eu, aes(year, index, colour = type, fill = type)) + 
    scale_colour_manual(values = palette) +
    scale_fill_manual(values = palette) +
    stat_smooth() + 
    geom_point() +
    xlab("Year") +
    ylab("Population abundance and diversity index (100 in 1990)") +
    ggtitle("Common birds (EU)")
## geom_smooth: method="auto" and size of largest group is <1000, so using loess. Use 'method = x' to change the smoothing method.