Home > front end >  Using popbio package to calculate a population projection correctly?
Using popbio package to calculate a population projection correctly?

Time:10-24

So I have been working through a population ecology exercise using the popbio package in R-Studio that focuses on using Leslie Matrix's. I have successfully created a Leslie matrix with the proper dimensions using the Fecundity (mx) and Annual Survival values (sx) that I have calculated with my life table. I then am trying to use the pop.projection function in the popbio package to multiply my Leslie matrix (les.mat) by a starting population vector (N0) followed by the number of time intervals (4 years). It is my understanding that you should be able to take a Leslie matrix and multiply by a population vector to calculate a population size after a set number of time intervals. Have I done something wrong here, when I try to run my pop.projection line of code I get the following error message in R:

"> projA <- pop.projection(les.mat,N0,10) Error in A %*% n : non-conformable arguments"

Could the problem be an issue with my pop.projection function? I am thinking it may be an issue with by N0 argument (population vector), when I look at my N0 values it seems like it has been saved in R as a "Numeric Type", should I be converting it into its own matrix, or as it's own vector somehow to get my pop.projection line of code to run? Any advice would be greatly appreciated, the short code I have been using will be linked below!


Sx <- c(0.8,0.8,0.7969,0.6078,0.3226,0)
mx <- c(0,0,0.6,1.09,0.2,0)

Fx <- mx    # fecundity values
S <- Sx        # dropping the first value
F <- Fx

les.mat <- matrix(rep(0,36),nrow=6)

les.mat[1,] <- F
les.mat

for(i in 1:5){
  les.mat[(i 1),i] <- S[i]
}
les.mat

N0 <- c(100,80,64,51,31,10,0)


projA <- pop.projection(les.mat,N0,10)

CodePudding user response:

The function uses matrix multiplication on the first and second arguments so they must match. The les.mat matrix is 6x6, but N0 is length 7. Try

projA <- pop.projection(les.mat, N0[-7], 10)  # Delete last value

or

projA <- pop.projection(les.mat, N0[-1], 10)  # Delete first value
  • Related