Living Planet Index
The diversity-weighted Living Planet Index: controlling for taxonomic bias in a global biodiversity indicator.
https://github.com/zoological-society-of-london/rlpi
Category: Biosphere
Sub Category: Biodiversity Analysis and Metrics
Last synced: about 10 hours ago
JSON representation
Repository metadata
The rlpi package can calculate indices using the Living Planet Index methodology, as presented in McRae et al. *The diversity-weighted Living Planet Index: controlling for taxonomic bias in a global biodiversity indicator*.
- Host: GitHub
- URL: https://github.com/zoological-society-of-london/rlpi
- Owner: Zoological-Society-of-London
- Created: 2015-03-05T12:34:50.000Z (about 11 years ago)
- Default Branch: master
- Last Pushed: 2024-03-20T14:20:06.000Z (about 2 years ago)
- Last Synced: 2026-03-06T05:03:30.086Z (21 days ago)
- Language: HTML
- Homepage: http://www.livingplanetindex.org
- Size: 16.9 MB
- Stars: 36
- Watchers: 18
- Forks: 20
- Open Issues: 5
- Releases: 2
-
Metadata Files:
- Readme: README.Rmd
README.Rmd
---
title: "rlpi package (beta)"
author:
- Indicators and Assessments Research Unit, Institute of Zoology, Zoological Society of London^[Contact robin.freeman@ioz.ac.uk or louise.mcrae@ioz.ac.uk]
output:
html_document:
keep_md: true
toc: true
theme: united
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(cache=TRUE)
```
##Using the rlpi package
### Overview
The **rlpi** package (currently in beta/active development) calculates indices using the Living Planet Index methodology (McRae et al. (in review) *The diversity-weighted Living Planet Index: controlling for taxonomic bias in a global biodiversity indicator*).
> Note: We provide a Comma Separated Value version of the Living Planet Database [here](https://dx.doi.org/10.6084/m9.figshare.4300022.v1), but this excludes around 3000 populations which are confidential and cannot therefore be shared. Therefore, results produced with this data set may differ slightly from those presented in the manuscript and elsewhere.
In summary, indices are calculated using the geometric mean, first combining population trends to the species level, and then across higher taxonomic and geographical groupings. For example, multiple populations within a biogeographic realm will be combined first to generate individual species indices, then combined to taxonomic groups such as *birds*, *mammals*, *reptiles*, *amphibians*, and *fish* before being combined to an index for the biogeograhic realm.
The **rlpi** package works with source data in comma separated (csv) format where each row is composed of **popid**, **speciesname**, **year**, **popvalue** (see below). These can be stored be in multiple groups (e.g. a file for Afrotropic bird populations, one for Afrotropical mammal populations, etc), and an 'infile' tells the package where these groups/files are and how to combine them.
When constructing an index for just a single group, you need a single data file and a single
infile which points to that data file (see first example below). For multiple groups, the infile would refer to all relevant data files and can specify weightings to allow for taxonomic, geographic or other weighting.
The code below includes an example dataset for terrestrial vertebrates with a complex infile with multiple weighted groups, as well as a simple infile for Nearctic mammals.
NB: At present the code combines population time-series to the species level, generating an average index for each species, then combines these into higher groups.
### Installing the package and examples
First, install the devtools package to enable installing from github:
```{r rlpi_install, eval=FALSE}
install.packages("devtools")
```
Then install the **rlpi** package from our github:
```{r install_rlpi, eval=TRUE, message=FALSE}
library(devtools)
# Install from main ZSL repository online
install_github("Zoological-Society-of-London/rlpi", dependencies=TRUE)
```
Then the library can be loaded as normal
```{r load_rlpi, eval=TRUE}
# Load library
library(rlpi)
```
And some example data can be extracted from the package:
```{r rlpi_data, eval=TRUE}
# Get example data from package
# Copy zipped data to local directory
file.copy(from=system.file("extdata", "example_data.zip", package = "rlpi"), to=getwd())
# Extract data, this will create a directory of terrestrial LPI data to construct a terrestrial index from.
unzip("example_data.zip")
```
## Example data
Within the example data are a number of 'infiles'. These files (take a look at them!) contain links to other files arranged into groups and include weightings.
For example **terrestrial_class_nearctic_infile.txt** which constructs an index for a single group contains:
```
"FileName" "Group" "Weighting"
"example_data/T_Nearctic_Mammalia.txt" 1 0.175804093567251
```
For now, ignore the 'group' and 'weighting' columns as they are not used for a single group. This infile references a single 'population' data file (the raw data) in the class_realms folder which, in this case, contains population counts for Nearctic mammals (again, have a look) in the following format:
first six lines of **example_data/T_Nearctic_Mammalia.txt**:
```
Binomial ID year popvalue
Ovis_canadensis 4618 1950 390
Ovis_canadensis 5328 1950 1500
Myodes_gapperi 4560 1952 17
Sorex_cinereus 4587 1952 3
Napaeozapus_insignis 4588 1952 18
...
```
## Creating an index using example data
Using these files to construct a Nearctic index can be done as follows:
```{r nearctic_lpi, eval=TRUE, message=FALSE}
# Make a Neactic LPI
# Default gives 100 boostraps (this takes a couple of minutes to run on a 2014 Macbook)
Nearc_lpi <- LPIMain("example_data/terrestrial_class_nearctic_infile.txt", use_weightings = 1, VERBOSE=FALSE, show_progress=FALSE)
# Remove NAs (trailing years with no data)
Nearc_lpi <- Nearc_lpi[complete.cases(Nearc_lpi), ]
# This produces a simple plot, but we can use ggplot_lpi to produce a nicer version
ggplot_lpi(Nearc_lpi, ylims=c(0, 2))
```
Similarly, infiles are provided for Nearctic mammals and birds:
```{r nearctic_mams_birds, eval=TRUE, message=FALSE}
# Make a Neactic Mammals LPI
# Default gives 100 boostraps (this will take a few minutes to run on a 2014 Macbook)
Nearc_mams_lpi <- LPIMain("example_data/T_Nearctic_mammalia_infile.txt", VERBOSE=FALSE, show_progress=FALSE)
# Remove NAs (trailing years with no data)
Nearc_mams_lpi <- Nearc_mams_lpi[complete.cases(Nearc_mams_lpi), ]
# Nicer plot
ggplot_lpi(Nearc_mams_lpi, ylims=c(0, 2))
# Make a Neactic Mammals LPI
# Default gives 100 boostraps (this will take a few minutes to run on a 2014 Macbook)
Nearc_birds_lpi <- LPIMain("example_data/terrestrial_Nearctic_Aves_infile.txt", VERBOSE=FALSE, show_progress=FALSE)
# Remove NAs (trailing years with no data)
Nearc_birds_lpi <- Nearc_birds_lpi[complete.cases(Nearc_birds_lpi), ]
# Nicer plot
ggplot_lpi(Nearc_birds_lpi, ylims=c(0, 2))
# We can also combine the two LPIs together in a list
lpis <- list(Nearc_birds_lpi, Nearc_mams_lpi)
# And plot them together
ggplot_multi_lpi(lpis, xlims=c(1970, 2012), ylims=c(0, 3))
# We can also plot these next to each other, and use some more meaningful titles
ggplot_multi_lpi(lpis, names=c("Birds", "Mammals"), xlims=c(1970, 2012), ylims=c(0, 3), facet=TRUE)
```
## Creating an index using example data (multiple groups and weightings)
This more complex example calculates an index for the terrestrial system, using the input file ***example_data/terrestrial_class_realms_infile.txt***, which has the following format:
```
FileName Group Weighting WeightingB
example_data/T_Afrotropical_aves_pops.txt 1 0.387205957 0.189737662
example_data/T_Afrotropical_mammalia_pops.txt 1 0.197833813 0.189737662
example_data/T_Afrotropical_herps_pops.txt 1 0.41496023 0.189737662
example_data/T_IndoPacific_aves_pops.txt 2 0.396527091 0.292168385
example_data/T_IndoPacific_mammalia_pops.txt 2 0.172106825 0.292168385
example_data/T_IndoPacific_herps_pops.txt 2 0.431366084 0.292168385
example_data/T_Palearctic_aves_pops.txt 3 0.433535576 0.116430659
example_data/T_Palearctic_mammalia_pops.txt 3 0.249862107 0.116430659
example_data/T_Palearctic_herps_pops.txt 3 0.316602317 0.116430659
example_data/T_Neotropical_aves_pops.txt 4 0.387661234 0.321131554
example_data/T_Neotropical_mammalia_pops.txt 4 0.127987201 0.321131554
example_data/T_Neotropical_herps_pops.txt 4 0.484351565 0.321131554
example_data/T_Nearctic_aves_pops.txt 5 0.376366476 0.061683203
example_data/T_Nearctic_mammalia_pops.txt 5 0.249869859 0.061683203
example_data/T_Nearctic_herps_pops.txt 5 0.373763665 0.061683203
```
This input file refers to 15 different population files, divided into 5 groups (in this case, biogeographic realms) using the "Group" column with different taxonomic groups within these. So group 1 is for the 'Afrotropical' realm and has three population files (Aves, Mammalia and Herps). Weightings are given for these taxonomic groups which specify how much weight each taxonomic group has within its realm index (the weights used here reflect the proportion of species in that taxonomic group in that realm).
```{r terrestrial_lpi, eval=TRUE, message=FALSE}
# Whole terrestrial...
# Create a terrestrial index, without using any specified weightings ('use_weightings=0' - so treating taxonomic groups equally at one level, and biogeographic realms equally at the next)
terr_lpi_a <- LPIMain("example_data/terrestrial_infile.txt", PLOT_MAX=2015, use_weightings=0, VERBOSE=FALSE, show_progress=FALSE)
# Remove NAs (trailing years with no data)
terr_lpi_a <- terr_lpi_a[complete.cases(terr_lpi_a), ]
# Run same again and now weight by class, but weight equally across realms (see infile for weights)
terr_lpi_b <- LPIMain("example_data/terrestrial_infile.txt", PLOT_MAX=2015, force_recalculation=0, use_weightings=1, VERBOSE=FALSE, show_progress=FALSE)
# Remove NAs (trailing years with no data)
terr_lpi_b <- terr_lpi_b[complete.cases(terr_lpi_b), ]
# Putting the two LPIs together in a list
lpis_comp <- list(terr_lpi_a, terr_lpi_b)
# And plotting them together
ggplot_multi_lpi(lpis_comp, xlims=c(1970, 2012), names=c("Unweighted", "Weighted"), facet=TRUE)
```
## See Also - Creating infiles
Some functions are also provided for creating infiles from tabular data: [Creating Infiles](creating_infiles.md)
```
```
Owner metadata
- Name: Zoological Society of London
- Login: Zoological-Society-of-London
- Email:
- Kind: organization
- Description:
- Website: http://www.zsl.org
- Location:
- Twitter:
- Company:
- Icon url: https://avatars.githubusercontent.com/u/6051597?v=4
- Repositories: 7
- Last ynced at: 2024-03-27T07:15:29.207Z
- Profile URL: https://github.com/Zoological-Society-of-London
GitHub Events
Total
- Fork event: 2
- Issues event: 2
- Watch event: 3
- Issue comment event: 2
Last Year
- Fork event: 1
- Issues event: 1
- Watch event: 3
- Issue comment event: 1
Committers metadata
Last synced: 2 days ago
Total Commits: 113
Total Committers: 7
Avg Commits per committer: 16.143
Development Distribution Score (DDS): 0.593
Commits in past year: 0
Committers in past year: 0
Avg Commits per committer in past year: 0.0
Development Distribution Score (DDS) in past year: 0.0
| Name | Commits | |
|---|---|---|
| robinfreeman | r****n@i****k | 46 |
| robinfreeman | r****n@i****k | 34 |
| stefaniedeinet | s****t@i****k | 22 |
| valemarc | 1****c | 3 |
| LouiseMcRae | l****e@i****k | 3 |
| James Watmuff | j****s@p****u | 3 |
| Robin Freeman | f****r@Z****e | 2 |
Committer domains:
- ioz.ac.uk: 4
- zsl04573.home: 1
- planticle.com.au: 1
Issue and Pull Request metadata
Last synced: 4 months ago
Total issues: 14
Total pull requests: 5
Average time to close issues: about 2 years
Average time to close pull requests: 6 months
Total issue authors: 8
Total pull request authors: 2
Average comments per issue: 1.14
Average comments per pull request: 0.0
Merged pull request: 2
Bot issues: 0
Bot pull requests: 0
Past year issues: 2
Past year pull requests: 0
Past year average time to close issues: N/A
Past year average time to close pull requests: N/A
Past year issue authors: 2
Past year pull request authors: 0
Past year average comments per issue: 0.5
Past year average comments per pull request: 0
Past year merged pull request: 0
Past year bot issues: 0
Past year bot pull requests: 0
Top Issue Authors
- ammojamo (7)
- jimjam-slam (1)
- yvanlebras (1)
- aornugent (1)
- zyll123 (1)
- pipapu (1)
- jessfenker (1)
- ha0ye (1)
Top Pull Request Authors
- ammojamo (4)
- Rekyt (1)
Top Issue Labels
- help wanted (1)
Top Pull Request Labels
Dependencies
- RColorBrewer * imports
- doParallel * imports
- foreach * imports
- ggplot2 * imports
- grid * imports
- gtable * imports
- mgcv * imports
- plyr * imports
- reshape2 * imports
- tools * imports
Score: 5.659482215759621