get_logistic {gauseR} | R Documentation |
Logistic Growth
Description
Calculates logistic growth for population based on formula Nt=K*(N0*exp(r*time))/(K+N0*(exp(r*time)-1)
Usage
get_logistic(time, N0, r, K)
Arguments
time |
The time steps corresponding to each observation |
N0 |
Initial Population Size |
r |
Growth rate |
K |
Carying Capacity |
Value
population size N for each time steps as a vector
Examples
# load Gause competition data
data(gause_1934_science_f02_03)
# extract monoculture data for P.c.
Pcmono<-gause_1934_science_f02_03[gause_1934_science_f02_03$Treatment=="Pc",]
# calculate lag and per-capita growth
lagged_data_Pc <- get_lag(x=Pcmono$Volume_Species1,
time = Pcmono$Day)
Pcmono$dNNdt_Pc <- percap_growth(x=lagged_data_Pc$x, laggedx=lagged_data_Pc$laggedx,
dt=lagged_data_Pc$dt)
# fit linear model to get dNNdt ~ r + s*N
mod_Pc<-lm(dNNdt_Pc~Volume_Species1, Pcmono)
rsn_pars<-coef(mod_Pc)
# transform into logistic growth parameters
logistic_pars<-c(r=unname(rsn_pars["(Intercept)"]),
K=unname(-rsn_pars["(Intercept)"]/rsn_pars["Volume_Species1"]))
#fit with nls, using linear model estimates as starting values for parameters
nls_mod<-nls(Volume_Species1~get_logistic(time = Day, N0, r, K),
data=Pcmono,
start=c(N0=unname(Pcmono$Volume_Species1[which.min(Pcmono$Day)]),
r=unname(logistic_pars["r"]), K=unname(logistic_pars["K"])))
summary(nls_mod)
# plot results
plot(Volume_Species1~Day, Pcmono, type="b", ylab="P. caudatum Volume")
timesq<-seq(0, 30, length=100)
Ntest<-get_logistic(time = timesq, N0=coef(nls_mod)["N0"], r=coef(nls_mod)["r"],
K=coef(nls_mod)["K"])
lines(timesq, Ntest, col="red")
[Package gauseR version 1.2 Index]