Niche Divergence Workshop
Primary Literature: Warren et al. 2010, Brown & Carnaval 2019
Data: ZIP
Supplemental PowerPoint: Niche Divergence PPT
Additional documents on Humboldt: Main webpage , visual guide to parameter inputs, and visual guide to interpreting outputs
Workshop Code Block
#### INSTALLATION #####
#To install, open R and type the following:
install.packages("devtools"); library(devtools); install_github("jasonleebrown/humboldt")
#set working directory - change this
setwd("C:/Users/jason/Desktop/.....")
#turn on humboldt
library(humboldt)
#### LOADING INPUTS #####
##load environmental variables for all sites of the study area 1 (env1). Column names should be x,y,X1,X2,...,Xn)
##in this example all input datasets are tab-delimited text files, if using '.csv' files change the parameters below for import steps from 'sep="\t"' to 'sep=","'
env1<-read.delim("Climate.txt",h=T,sep="\t")
## load environmental variables for all sites of the study area 2 (env2). Column names should be x,y,X1,X2,...,Xn)
env2<-read.delim("Climate.txt",h=T,sep="\t")
## remove NAs and make sure all variables are imported as numbers
env1<-humboldt.scrub.env(env1)
env2<-humboldt.scrub.env(env2)
##load occurrence sites for the species at study area 1 (env1). Column names should be sp,x,y
sp1<-na.exclude(read.delim("Sash.txt",h=T,sep="\t"))
##load occurrence sites for the species at study area 2 (env2). Column names should be sp,x,y
sp2<-na.exclude(read.delim("BlackBear.txt",h=T,sep="\t"))
#### REDUCE ENVIRONMENT VARIABLES #####
##its highly recommended that you using the function "humboldt.top.env" to select only the important environmental variables in humboldt.doitall.
##This step can be skipped. If you downloaded tons of environmental data, you should use this step. If you skip this step, input env1/env2 in place of reduc.vars$env1/reduc.vars$env2
reduc.vars<- humboldt.top.env(env1=env1,env2=env2,sp1=sp1,sp2=sp2,rarefy.dist=50, rarefy.units="km", env.reso=0.416669,learning.rt1=0.01,learning.rt2=0.01,e.var=(3:21),pa.ratio=4,steps1=50,steps2=50,method="contrib",contrib.greater=5)
##Adjust the number of variables input for e.vars after reduction to only important variables
num.var.e<-ncol(reduc.vars$env1)
#### NICHE OVERLAP TEST #####
##run it first with full environmental for background tests and equivalence statistic (total equivalence or divergence in current distributions)
full<-humboldt.doitall(inname="full_extent", env1=reduc.vars$env1, env2=reduc.vars$env2, sp1=sp1, sp2=sp2, rarefy.dist=50, rarefy.units="km", env.reso=0.416669, reduce.env=0, reductype="PCA", non.analogous.environments="YES", correct.env=T, env.trim=T, env.trim.type="RADIUS", trim.buffer.sp1=500, trim.buffer.sp2=500, pcx=1, pcy=2, col.env=e.var, e.var=c(3:num.var.e), R=100, kern.smooth=1, e.reps=10, b.reps=10, nae="YES",thresh.espace.z=0.001, p.overlap=T, p.boxplot=F, p.scatter=F, run.silent=F, ncores=2)
#### NICHE DIVERGENCE TEST #####
##run it a second time with a trimmed, shared-espace. Here the equivalence statistic tests for niche evolution or niche divergence. For comparing results, change only the following model parameters: reduce.env, non.analogous.environmental
shared_ae<-humboldt.doitall(inname="shared_espace_ae", env1=reduc.vars$env1, env2=reduc.vars$env2, sp1=sp1, sp2=sp2, rarefy.dist=50, rarefy.units="km", env.reso=0.416669, reduce.env=2, reductype="PCA", non.analogous.environments="NO", correct.env=T, env.trim=T, env.trim.type="RADIUS", trim.buffer.sp1=500, trim.buffer.sp2=500, pcx=1,pcy=2, col.env=e.var, e.var=c(3:num.var.e), R=100, kern.smooth=1, e.reps=10, b.reps=10, nae="YES",thresh.espace.z=0.001, p.overlap=T, p.boxplot=F, p.scatter=T,run.silent=F, ncores=2)