Appendix 5 R script. Estimating Population Density and Biodiversity

# First we load the necessary libraries
library(behaviouR)
library(ggpubr)

# Then we read in our data
data("CensusData")

# Part 1. Population density estimation.  First let's focus on your data NOTE you
# need to change 'A' to the name you used
MyCensusData <- subset(CensusData, Partner == "A")

# Now we will subset the data to focus on your focal species for density
# estimation NOTE in this example we subsetting the data so that we only have the
# squirrels; you will need to change the code to subset based on your focal
# species
MyCensusDataFocal <- subset(MyCensusData, Species == "squirrel")

# Here we will determine the width of our sampling area by creating a histogram
# of perpendicular detection distances.

hist(MyCensusDataFocal$PerpendicularDistance, xlab = "Perpendicular distance (D)", 
    ylab = "Number of observations", main = "")

# In this example there is a clear break between 15 and 20 meters, so we will
# only use observations that were within 15 meters.  NOTE: Your data will look
# different than this!

# Change the value to the cutoff point indicated in your data
CutOffPoint <- 15

MyCensusDataFocalAdjusted <- subset(MyCensusDataFocal, PerpendicularDistance < CutOffPoint)

# Now we need to subset by each site NOTE: You will need to change to the site
# names you used

MyCensusDataFocalSiteA <- subset(MyCensusDataFocalAdjusted, Site == "SiteA")

MyCensusDataFocalSiteB <- subset(MyCensusDataFocalAdjusted, Site == "SiteB")

# Now we will calculate the population density based on our two surveys Change
# the following to indicate the distance (in meters) of your survey for site A

SiteACensusDistance <- 500

# Now we will calculate the area of our census. The sample area (a) is equal to
# the length of the transect multiplied by twice the width or a= 2wl. We divide
# by 1000 to convert our answer to square kilometers.
SiteACensusArea <- 2 * SiteACensusDistance * CutOffPoint/1000

# Now we need to calculate the number of animals using the following code
NumberFocalAnimalsSiteA <- nrow(MyCensusDataFocalSiteA)

PopulationDensitySiteA <- NumberFocalAnimalsSiteA/SiteACensusArea
PopulationDensitySiteA


SiteBCensusDistance <- 500

# Now we will calculate the area of our census. The sample area (a) is equal to
# the length of the transect multiplied by twice the width or a= 2wl
SiteBCensusArea <- 2 * SiteBCensusDistance * CutOffPoint/1000

# Now we need to calculate the number of animals using the following code
NumberFocalAnimalsSiteB <- nrow(MyCensusDataFocalSiteB)

PopulationDensitySiteB <- NumberFocalAnimalsSiteB/SiteBCensusArea
PopulationDensitySiteB

# Now we can compare population density using the following code. Was the
# population density of site A higher than site B?
PopulationDensitySiteA > PopulationDensitySiteB

# Was the population density of site B higher than site A?
PopulationDensitySiteB > PopulationDensitySiteA

# **Question 1**. What were the population density estimates (reported as number
# of individuals per square kilometer) for your two sites?  Do your results of
# the population density estimates match your predictions? Why or why not?

# Part 2. Comparing biodiversity

# First, we will estimate the alpha diversity, or the diversity within a
# particular area or ecosystem.  The alpha diversity is simply the number of
# different species present at each site Here we subset by partner and site A
# (you may need to change these!)
MyCensusDataSiteA <- subset(MyCensusData, Partner == "A" & Site == "SiteA")

# What were the unique species present?
unique(MyCensusDataSiteA$Species)

# How many unique species were there?
SiteANumberSpecies <- length(unique(MyCensusDataSiteA$Species))
SiteANumberSpecies

# Here we subset by partner and site B (you may need to change these!)
MyCensusDataSiteB <- subset(MyCensusData, Partner == "A" & Site == "SiteB")

# What were the unique species present?
unique(MyCensusDataSiteB$Species)

# How many unique species were there?
SiteBNumberSpecies <- length(unique(MyCensusDataSiteB$Species))
SiteBNumberSpecies

# What was the species richness for both sites sampled?
unique(c(MyCensusDataSiteA$Species, MyCensusDataSiteB$Species))

# **Question 2**. Which of your sites had higher species richness (i.e. number of
# species)?

# Now we will estimate beta diversity, which estimates changes in species
# diversity between ecosystems or along environmental gradients

# Beta diversity = 2c / S1 + S2

# This code tells us which species both sites have in common
intersect(unique(MyCensusDataSiteA$Species), unique(MyCensusDataSiteB$Species))

# Now we calculate the number of species in common
SpeciesInCommonBothSites <- length(intersect(unique(MyCensusDataSiteA$Species), unique(MyCensusDataSiteB$Species)))
SpeciesInCommonBothSites

# Scientists are often interested in the community similarity between sites. For
# this we will calculate Sørenson’s index; a value of 1 means exactly the same
# number of species a value of 0 means no overlap
2 * SpeciesInCommonBothSites/(SiteANumberSpecies + SiteBNumberSpecies)

# Now we will use your partner's data
MyPartnersCensusDataSiteA <- subset(CensusData, Partner == "B" & Site == "SiteC")
unique(MyPartnersCensusDataSiteA$Species)
length(unique(MyPartnersCensusDataSiteA$Species))
SiteANumberSpecies <- length(unique(MyPartnersCensusDataSiteA$Species))
SiteANumberSpecies

MyPartnersCensusDataSiteB <- subset(CensusData, Partner == "B" & Site == "SiteD")
unique(MyPartnersCensusDataSiteB$Species)
length(unique(MyPartnersCensusDataSiteB$Species))
SiteBNumberSpecies <- length(unique(MyPartnersCensusDataSiteB$Species))
SiteBNumberSpecies

# What was the species richness for both sites sampled?
unique(c(MyPartnersCensusDataSiteA$Species, MyPartnersCensusDataSiteB$Species))


# **Question 3**. How did the alpha diversity of each of your sites compare with
# that of your partner?


# Gamma diversity is total species over a large area or region; there are many
# different ways that this can be measured. The way we will do it is a bit of an
# oversimplification by simply comparing the number of species seen during the
# census at both locations.

# First we subset by the first partner
MyCensusData <- subset(CensusData, Partner == "A")
unique(MyCensusData$Species)

# Then we plot the results
gghistogram(data = MyCensusData, x = "Species", stat = "count")

# Now we subset by the second partner
MyPartnersCensusData <- subset(CensusData, Partner == "B")
unique(MyPartnersCensusData$Species)

# Then we plot the results
gghistogram(data = MyPartnersCensusData, x = "Species", stat = "count")


# Now we can plot all the data together, separated by partner
gghistogram(data = CensusData, x = "Species", stat = "count", facet.by = "Partner", 
    fill = "Partner", x.text.angle = 90) + xlab("Species") + ylab("Number of individuals")

# **Question 4**. How did the gamma diversity of your site compare with that of
# your partners?

# There are special packages in R that can measure different diversity indices,
# as this is a tool many ecologists use. We will use the 'vegan' package.
library(vegan)

# First we need to convert our data into a table thate can be used to calculate
# the indices.
BiodiversityTable <- table(CensusData$Site, CensusData$Species)

# Simpson's Index (D) measures the probability that two individuals randomly
# selected from a sample will belong to the same species (or some category other
# than species). With this index, 1 represents infinite diversity and 0 means no
# diversity.
H <- diversity(BiodiversityTable, index = "simpson")
H

# Species evenness refers to how close in numbers each species in an environment
# is. We can calculate that using the following code. The value is constrained
# between 0 and 1, with communities that that have a more even representation of
# species having values closer to 1.
J <- H/log(specnumber(BiodiversityTable))
J

# **Question 5**. Which of the four sites was most diverse? Which was the most
# even? Why is it important to consider diversity and evenness when studying
# biodiversity?