TASK:
Choose two species that you think interact in some way, either as competitors, predator-prey,
mutualists or host-parasite. You should choose species that have locality data available on GBIF. If
your species don’t have data, pick another pair that do. Then complete the following tasks. For each
task, provide a brief legend (no more than 150 words) summarising the analysis used to generate each the plot(s) and describing what the results show.
1. Run linear models to predict the present-day distribution of species 1 using climate variables and
use them to present a map of its current distribution. Which set of climatic variables best explain the
current distribution of the species?
2. Run linear models to predict the present-day distribution of species 2 using climate variables and
use them to present maps of its current distribution. Which set of climatic variables best explain the
current distribution of the species?
3. Plot the overlap in distribution of the two species. Devise and calculate a metric for the degree of
overlap between their ranges, explaining how you calculated it.
4. Use a linear model to test whether the distribution of species 1 at the present time depends on the distribution of species 2, while also taking account of the effects of climatic variables.
5. Predict the future distribution of each species using CMIP6 data for future climate and predict how the degree of overlap in ranges change will change in that time. Do you expect the two species to co-occur more often or less often than at the present?
MY CODE SO FAR (for task 1, 2 and beginning of 3)
#choose two interacting species
#Pyrrhura molinae - parakeet
#fig tree - Ficus calyptroceras
#run the packages needed
library('dismo')
library('rworldmap')
library('sf')
library('geodata')
library('ggplot2')
library('rmarkdown')
wrld_simpl<-getMap(resolution = "coarse")
plot(wrld_simpl)
##TASK 1
#linear model to predict present day distribution of species 1
#using climate variables
#use them to present a map of its current distribution
bird <- gbif("pyrrhura", "molinae", geo=TRUE)
bird.coords<-cbind(bird$lon,bird$lat)
bird.coords<-na.omit(bird.coords)
bird.coords<-data.frame(bird.coords)
colnames(bird.coords)<-c("lon","lat")
plot(wrld_simpl, xlim=range(bird.coords$lon), ylim=range(bird.coords$lat), axes=TRUE, col="light blue")
points(bird.coords, col='orange', cex=0.75)
#can see the distribution for the species is mainly in South America
#we can zoom into South America to look at its distribution more closely
trim.coords<-function (x,latmin,latmax,lonmin,lonmax) {
if (sum(x$lon < lonmin)>0) {
tmp<-which(x$lon < lonmin)
x<-x[-tmp,]}
if (sum(x$lon > lonmax)>0) {
tmp<-which(x$lon > lonmax)
x<-x[-tmp,]}
if (sum(x$lat < latmin)>0) {
tmp<-which(x$lat < latmin)
x<-x[-tmp,]}
if (sum(x$lat > latmax)>0) {
tmp<-which(x$lat > latmax)
x<-x[-tmp,]}
return(x) }
bird.coords.trim<-trim.coords(bird.coords,latmin=-50,latmax=25,lonmin=-75,lonmax=-20)
plot(wrld_simpl, xlim=range(bird.coords.trim$lon), ylim=range(bird.coords.trim$lat), axes=TRUE, col="light blue")
points(bird.coords.trim, col='orange', cex=0.75)
#extracting climatic variables
bio.values <- extract(bio.data, bird.coords)[,-1]
bio.data<-worldclim_global(var="bio",res=10,path=getwd())
names(bio.data)<-paste0("bio",1:19)
species.data<-cbind(bird.coords,bio.values)
species.data<-na.omit(species.data)
write.csv(species.data,file="species.data.csv")
#extract mean values, min and max
rbind(mean=colMeans(species.data),
min=apply(species.data, 2, min),
max=apply(species.data, 2, max))
#use these to model current distribution
#make pseudo-absence points
#create raster
ext <- extent(wrld_simpl)
xy <- abs(apply(as.matrix(bbox(ext)), 1, diff))
n <- 5
r <- raster(ext, ncol=xy[1]*n, nrow=xy[2]*n)
mask <-rasterize(wrld_simpl, r)
#setting a plotting window with least grey space
plot(mask, axes = TRUE, col = "grey",
xlim = c(-80, -30),
ylim = c(-40,-5)); box()
points(bird.coords,col = "orange", pch = 20, cex = 1)
#set an area of extent and create background points
e <- extent(-80, -30, -40,-5)
plot(e, add=TRUE, col='black')
bg <- randomPoints(mask, 500, ext=e,extf=1)
points(bg,col="black", pch=20)
colnames(bg)<-c("lon","lat")
DescriptionIn this final assignment, the students will demonstrate their ability to apply two ma
Path finding involves finding a path from A to B. Typically we want the path to have certain properties,such as being the shortest or to avoid going t
Develop a program to emulate a purchase transaction at a retail store. Thisprogram will have two classes, a LineItem class and a Transaction class. Th
1 Project 1 Introduction - the SeaPort Project series For this set of projects for the course, we wish to simulate some of the aspects of a number of
1 Project 2 Introduction - the SeaPort Project series For this set of projects for the course, we wish to simulate some of the aspects of a number of