Spatial modeling using r a case study with three landscape types and a disturbance agent
Download
1 / 21

Spatial Modeling Using R: A case study with three landscape types and a disturbance agent - PowerPoint PPT Presentation


  • 57 Views
  • Uploaded on

Spatial Modeling Using R: A case study with three landscape types and a disturbance agent. NEMO 2010 Joseph Pekol Dr. David Heibeler Dr. Aaron Weiskittel. Outline. Introduction SIRS model basics Model framework Framework to R code Sample output/results Conclusion.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about ' Spatial Modeling Using R: A case study with three landscape types and a disturbance agent' - jack-stephenson


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
Spatial modeling using r a case study with three landscape types and a disturbance agent

Spatial Modeling Using R: A case study with three landscape types and a disturbance agent

NEMO 2010

Joseph Pekol

Dr. David Heibeler

Dr. Aaron Weiskittel


Outline
Outline types and a disturbance agent

  • Introduction

  • SIRS model basics

  • Model framework

  • Framework to R code

  • Sample output/results

  • Conclusion


Using r as a spatial modeling tool
Using R as a spatial modeling tool types and a disturbance agent

  • Event driven models

  • Accessible matrix manipulation

  • Quickly write, debug, and test code

  • Easy to produce graphical output

  • Built in statistical theory

  • No existing R packages available


Sirs basics
SIRS basics types and a disturbance agent

  • Susceptible-Infected-Recovered-Susceptible

  • Simulates a birth-death model of continuous-time spatial populations

  • Long-distance and local interactions between pathogen and target

  • Assumptions based on Poisson distribution and random occurrence on exponential dist.

  • Poisson used for simplicity – memoryloss property


Linking poisson processes and simulations
Linking Poisson processes and simulations types and a disturbance agent

At time t, assume N(t) infected sites.

Each infected site:

  • Produces offspring at rate φ

  • Dies off at rate μ

    E.g. each site acts as Poisson with rate φ+μ, so the total population acts as a Poisson process with rate λT = (φ+μ)N


Simulating an sirs model in 3 steps
Simulating an SIRS model in 3 steps types and a disturbance agent

  • Choose when the next event will occur from an exponential distribution with mean 1/ λT.

  • Choose the origin of the event from all occupied sites with an equal probability.

  • Simulate an attempted infection of another site (pbirth) or else the death of the current site. If a birth occurs, choose a target site (specified as a percentage of local/long-distance infection)


Case study outline
Case study outline types and a disturbance agent

Landscape generator

SIRS model

Input 3 different sets of infection parameters

Output visual landscape, residual proportions of stand types

  • Three landscape types

    • Hydric, Mesic, Xeric


However we first need a landscape to work with
However, we first need a landscape to work with…. types and a disturbance agent

Using a modified landscape from R script

by David Hiebeler:

  • Three site types on a 100x100 lattice

  • Input site type densities and clustering level

  • Output includes matrix of stand types and visual representation

  • Total lines of code: 273


What r needs to know
What R needs to know… types and a disturbance agent

[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] [,13] [,14] [,15]

[1,] 1 1 1 0 0 0 2 2 1 1 1 0 0 0 2

[2,] 1 1 1 0 0 0 1 1 1 1 1 1 1 0 0

[3,] 1 1 0 2 2 2 2 1 1 1 1 1 1 1 2

[4,] 1 1 1 1 2 2 2 1 1 1 1 1 1 1 2

[5,] 1 1 1 1 2 2 2 2 0 0 0 1 2 2 2

[6,] 1 1 1 1 1 0 0 0 0 0 2 2 2 2 2

[7,] 1 1 1 1 1 0 0 0 0 0 2 2 2 2 2

[8,] 1 1 1 0 0 1 1 1 1 1 2 2 2 2 2

[9,] 2 1 1 2 0 1 1 1 1 1 2 2 2 2 2

[10,] 2 1 1 2 1 1 2 1 1 1 2 2 2 2 2

[11,] 0 2 1 1 1 1 2 2 0 0 2 2 0 2 1

[12,] 0 0 0 0 1 1 2 2 0 0 0 0 0 2 1

[13,] 1 2 0 1 1 0 2 2 1 1 1 0 2 2 2

[14,] 1 1 1 1 0 0 0 1 1 1 1 1 1 2 2

[15,] 2 1 1 1 1 2 2 1 1 1 1 1 1 2 2

[16,] 2 1 1 1 1 2 2 1 1 1 1 1 1 2 2

[17,] 2 2 2 2 2 2 0 1 1 1 1 1 1 2 2

[18,] 1 1 2 2 1 1 2 0 2 0 0 1 1 0 2

[19,] 0 2 2 2 1 1 1 0 0 0 0 1 1 1 1

[20,] 0 0 2 2 1 1 1 0 0 0 0 1 1 1 1

=


Sirs model
SIRS model types and a disturbance agent

  • Accepts landscape matrix

  • Input infection, dist. Site infection, recovery, and death rates

  • Randomly infects initial individuals

  • Outputs visual landscape; data frame of residual stand types proportions

  • Total lines of code: 335


Sirs model framework
SIRS model framework types and a disturbance agent

No – Record final site types, calculate proportion site type left, output data

Update pop. vectors &

Landscape matrix

Infections remain?

Yes – Calculate rates based on infected population.

Choose where event originates and susceptible target.

Long distance interaction?

- Choose random S coord.

Local interaction?

- Choose neighbor using offset vector

If target Susc. (=0,1,2)

Infect target based on

P(susceptible site)

If target recovered. (=4)

Infect target based on

P(disturbed site)

Infected indiv. loses infection

with rate γ

Site dies

if runif(1) < P(Site recov.)

Site recovers

if runif(1) > P(Site recov.)


The key is good code for efficient performance
The key is good code for efficient performance types and a disturbance agent

  • Keeping track of population totals

  • Choosing sites

  • Keeping track of infected locations

  • Updating population indices


Keeping track of everything
Keeping track of everything types and a disturbance agent

Initialize population vectors

chucksize = 500

# keeps track of how long are state vectors currently are

vectorlengths = chunksize

# Create vectors

S = rep(0,chunksize)

I = rep(0,chunksize)

R = rep(0,chunksize)

D = rep(0,chunksize)

et = rep(0,chunksize)

……..

if (i == vectorlengths) {

vectorlengths = vectorlengths + chunksize

length(S) = vectorlengths

length(I) = vectorlengths

…..

}

Sets vector length, improves efficiancy so R

doesn’t have to ‘grow as it goes’.

Increase vector lengths as needed…


Choosing event locations
Choosing event locations types and a disturbance agent

Choose ‘origin’ site

Vector containing neighborhood offsets:

nhoodOffsets=matrix(c(0,-1,0,1,-1,0,1,0),nrow=4,byrow=TRUE)

xoffsets = nhoodOffsets[,1]

yoffsets = nhoodOffsets[,2]

coordInd = floor(runif(1)*currentI)+1

x = Ixv[coordInd]

y = Iyv[coordInd]

X and Y vectors hold coordinates for infected individuals. Random choice of index determines event locations

Or just…

xoffsets = c(0,-1,0,1)

yoffsets = c(-1,0,1,0)

Choose ‘interaction’ site as local or long distance

if (runif(1) < alpha) { # long-distance contact

otherx = floor(runif(1)*L)+1

othery = floor(runif(1)*L)+1

} else { # local contact

randInd = floor(runif(1)*4) + 1

otherx = x + xoffsets[randInd]

othery = y + yoffsets[randInd]

otherx = ((otherx - 1 + L) %% L) + 1

othery = ((othery - 1 + L) %% L) + 1

}

Wrap around code allows movement off one edge of matrix and onto the opposite edge.


Tracking event occurrences
Tracking event occurrences types and a disturbance agent

Check whether an infection attempt is successful

if (stateArray[otherx,othery] == 0 || stateArray[otherx,othery] == 1

|| stateArray[otherx,othery] == 2

&& (runif(1)< pColSuccess[hab[x,y]+1])) { # target susceptible

currentS = currentS - 1

currentI = currentI + 1

stateArray[otherx,othery] = 3

Ixv[currentI] = otherx

Iyv[currentI] = othery

siteTypeInf[currentI] = hab[otherx,othery] }

Update current population totals

Update matrix with new stand classification

Update location of infection for indexing in next iteration


Results landscape maps
Results – Landscape maps types and a disturbance agent


Results sirs maps
Results – SIRS maps types and a disturbance agent


Results proportions by trial
Results – Proportions by trial types and a disturbance agent

Here, only one attempt per trial…

However, a simple script can run the model multiple times, producing means, standard error, etc.


Results output of populations over time
Results – Output of populations over time types and a disturbance agent

  • deSolve package

  • Provides functions to solve first order, ordinary differential equations (ODE) among others

  • Modeled populations vs estimated ODE population curves


Conclusions pros and cons of event driven models in r
Conclusions – Pros and Cons of event driven models in R types and a disturbance agent

Pros

  • Quick and easy data manipulation

  • No need to compile: writing, testing, and debugging code is simplified

  • Opportunity for very robust results

  • Excellent packages make life easier

  • Graphical and statistical output very accessible

Cons

  • Much slower than standard programming languages

  • Increased model complexity leads to trickier programming

  • Efficient coding a must for quick run-times

But…the biggest Pro of all…

R is free!!!


Thank you
Thank you! types and a disturbance agent

Questions/Comments?


ad