Discrete time pop growth models

Population models

We will explore several simple models for population growth in discrete time.

Logistic population growth

This is our standard model, with a growth rate r and a carrying capacity K. We will explore this model using a for loop to iterate over time steps.

We start by defining parameters. The carrying capacity is 50 individuals here and the growth rate is 1. We then set up an empty vector. To ensure that growth happens, we set the first value of our empty vector to an initial population size.

  r=1
  K=50

  tsteps=100  

  N<-rep(NA,times=tsteps)
  
  N[1]<-1

Now let’s run the for loop. For each iteration, it is multiplying the previous time step by the current time step. Why does our for loop start with 2:tsteps?

for(i in 2:tsteps){
    N[i]=N[i-1]+r*N[i-1]*(1-(N[i-1]/K))
  }

plot(N~c(1:tsteps),xlab="Time",ylab="Population")

lines(N~c(1:tsteps),col="green4",lwd=2)

Beautiful classic population growth. What happens if we increase r?

The logistic population growth model is fine. But there are many other choices, many of which are easier to fit to real time series data with statistical methods. A main characteristic we are looking for in a model that can be fit to real data is that it can be linearized…because we love a linear model!

The logistic population growth model cannot be linearized easily. You would have to fit it using non-linear functions. Fortunately, brms does have this capability. See: https://cran.r-project.org/web/packages/brms/vignettes/brms_nonlinear.html for more details.

An easier model to fit is Gompertz population growth.