discrete talk
TRANSCRIPT
Let’s not be discrete with our SDMs
Let’s not be discrete with our SDMsSlides on Slideshare:
http://www.slideshare.net/oharar/discrete-talk
Bob O’Hara1
1BiK-F, Biodiversity and Climate Change Research CentreFrankfurt am Main
GermanyTwitter:
@bobohara
Let’s not be discrete with our SDMs
Approximated with a Discretised Curve
0 20 40 60 80 100
020
4060
80
CurveDiscrete
Let’s not be discrete with our SDMs
Better: linear interpolation
0 20 40 60 80 100
020
4060
80
CurveDiscreteInterpolated
Let’s not be discrete with our SDMs
With more points, the approximations improve
0 20 40 60 80 100
020
4060
80
CurveDiscreteInterpolated
Let’s not be discrete with our SDMs
What does this have to do with distribution models?
This is how SDMs see the world:
source: http://bit.ly/1l8sG7M
Map produced by Peter Blancher, Science and Technology Branch, Environment Canada, based on data from the
North American Breeding Bird Survey
Let’s not be discrete with our SDMs
Let’s sidestep the whole problem
Work in continuous space insteadThe maths will let us work on different scales
I e.g. Renner & Warton (2013) doi:10.1111/j.1541-0420.2012.01824.x
Lets us deal with points & irregular shapesMakes it straightforward to include different sorts of data
Let’s not be discrete with our SDMs
Practical Motivation
Map Of Life
www.mol.org/
Different data sources
I GBIF
I expert range maps
I eBird and similarcitizen science efforts
I organised surveys(BBS, BMSs)
I Regional checklists
Let’s not be discrete with our SDMs
A Unified Model
There is a single state - density of the species
Actual State
PresenceAbsence
PresenceOnly
ExpertRangeMaps
���� ?
HHHj
Let’s not be discrete with our SDMs
Point Processes: Model
Each point in space, ξ, has anintensity, ρ(ξ)
log(ρ(ξ)) = η(ξ) =∑
βX (ξ)+ν(ξ)
The number of individuals in anarea A follows a Poissondistibution with mean
λ(A) =
∫Aρ(ξ)ds
Let’s not be discrete with our SDMs
Point Processes: Reality
Approximate λ(ξ) numerically:select some integration points,and sum over those
λ(A) ≈N∑
s=1
|A(s)|eη(s)
Let’s not be discrete with our SDMs
Observation Models
Presence only pointsAbundancePresence/AbsenceExpert range
Let’s not be discrete with our SDMs
Observation Models: point counts
Assume a small area A: η(ξ) is constant, and observation for atime t, then
n(A, t) ∼ Po(eµ(A,t))
with
µA(A, t) = η(A) + log(|A|) + log(t) + log(p)
where p is the probability of observing each individual.Don’t know all of |A|, t and p, so estimate an interceptCan also add a sampling model to log(p)
Let’s not be discrete with our SDMs
Observation Models: presence/absence
This is just the abundance model simplified so that we observezero or more than zero individuals
Pr(n(A, t) > 0) = 1− eeµ(A,t)
or
cloglog(Pr(n(A, t) > 0)) = µ(A, t)
Let’s not be discrete with our SDMs
Presence only: point process
log Gaussian Cox ProcessLikelihood is a Poisson GLM (but with non-integer response)
Let’s not be discrete with our SDMs
Areal Presence/absence
If an area is large enough, we can’t assume constant covariates, so
Pr(n(A) > 0) = 1− e∫A eρ(ξ)dξ
in practice this is calculated as
1− e∑
s |A(s)|eρ(s)
which causes problems with the fitting
Let’s not be discrete with our SDMs
Expert Range Maps
Not the same as areal presence.Instead, use distance to range asa covariate
I within range, this is 0.
I Have to estimate the slopefor outside the range
Use informative priors to forcethe slope to be negative 0 20 40 60 80 100
0.0
0.2
0.4
0.6
0.8
1.0
Space (1d)
Inte
nsity
Species'Range
Let’s not be discrete with our SDMs
Put these together
Data likelihoods: P(Xi |λ) for data Xi . Total likelihood is
P(X) =∏i
P(Xi |λ)P(λ)
Where P(λ) is the actual distribution model, and will depend onenvironmental and other covariates
Let’s not be discrete with our SDMs
In practice
Be Bayesian. Could use MCMC, but this is quicker in INLA
SolTim.res <- inla(SolTim.formula,
family=c('poisson','binomial'),
data=inla.stack.data(stk.all),
control.family = list(list(link = "log"),
list(link = "cloglog")),
control.predictor=list(A=inla.stack.A(stk.all)),
Ntrials=1, E=inla.stack.data(stk.all)$e, verbose=FALSE)
Let’s not be discrete with our SDMs
Data
−120 −100 −90 −80 −70
2030
4050
60
x
Breeding Bird Survey
−120 −100 −90 −80 −70
2030
4050
60
x
y
eBird
−120 −100 −90 −80 −70
2030
4050
60
GBIF
−120 −100 −90 −80 −70
2030
4050
60
y
Range Maps
Sphyrapicus nuchalis
I expert range
I 2 pointprocesses(eBird, GBIF)
I NorthAmerican BBS
Let’s not be discrete with our SDMs
A Fitted Model
mean sd Lower CI Upper CI
altitude -0.20 0.02 -0.24 -0.17annual pre 0.24 0.02 0.21 0.28
annual tem -0.06 0.02 -0.10 -0.02prec seas -0.03 0.01 -0.06 -0.00
temp seas 0.15 0.02 0.12 0.18forest 0.00 0.02 -0.04 0.05
pine -0.00 0.02 -0.03 0.03fir -0.05 0.01 -0.08 -0.03
spruce 0.00 0.01 -0.01 0.02iucnbirds -0.25 0.02 -0.28 -0.22jetzmaps -0.06 0.02 -0.10 -0.02
Let’s not be discrete with our SDMs
A Pretty Map
−120 −110 −100 −90 −80 −70
2030
4050
60
−0.99
−0.49
0.01
0.51
1.01
Let’s not be discrete with our SDMs
Individual Data Types
−1.5 −1.0 −0.5 0.0 0.5
Estimate
altitude
annual pre
annual tem
prec seas
temp seas
forest
pine
fir
spruce
eBirdGBIFBBS
Let’s not be discrete with our SDMs
Individual Data Types: The Maps
−120 −100 −80 −70
2030
4050
60
−0.99
−0.49
0.01
0.51
1.01
All Data
−120 −100 −80 −70
2030
4050
60−0.180.020.220.420.62
eBird
−120 −100 −80 −70
2030
4050
60
−0.13
−0.07
−0.01
0.05
GBIF
−120 −100 −80 −70
2030
4050
60
−25
−21
−17
−13
−9
BBS
Let’s not be discrete with our SDMs
Join the bandwagon!
Using continuous space - makes lifeeasierPulls together different ideas in oneframework