Esta es la forma general de la ecuaciĂ³n difrencial de crecimiento logĂstico:
\[\frac{dN}{dt} = rN(1 - \frac{N}{K})\] Y una forma de la soluciĂ³n integrada:
\[N_t = \frac{K}{1 + (\frac{K - N_0}{N_0})e^{-rt}}\]
Utilizaremos los datos de crecimiento de un cultivo de Staphylococcus aureus sp. (ver proyecto de modelo no-lineal).
library(readxl)
gbac <- read.csv("data/mecobi datos crecimiento bacterias SaBook48_147_03.csv")
library(ggplot2)
ggplot(gbac, aes(x = Time, y = c10.6)) +
geom_point(alpha=0.7, color="steelblue", size=2) +
ylim(0,20) +
xlab("Horas") +
ylab("CFU x10^6")
library(growthcurver)
Con este método no es necesario estimar valores iniciales, y se puede aplicar a muchas curvas de crecimiento a la vez.
library(gt)
model.bac <- SummarizeGrowth(gbac$Time, gbac$c10.6, bg_correct = "none")
# summary table of results for K, N0, r
summary(model.bac$model)
##
## Formula: n ~ k/(1 + ((k - n0)/n0) * exp(-r * t))
##
## Parameters:
## Estimate Std. Error t value Pr(>|t|)
## k 1.643e+01 1.464e+00 11.221 9.96e-06 ***
## n0 6.050e-09 4.727e-08 0.128 0.902
## r 4.697e-02 1.701e-02 2.762 0.028 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1.682 on 7 degrees of freedom
##
## Number of iterations to convergence: 54
## Achieved convergence tolerance: 1.49e-08
# table of model values
model.bac[["vals"]]
## k k_se k_p n0 n0_se n0_p
## 16.429 1.464 1e-05 0 0 9e-01
##
## r r_se r_p sigma df t_mid
## 0.047 0.017 3e-02 1.682 7 462.485
##
## t_gen auc_l auc_e
## 14.758 1866.591 1943.232
A continuaciĂ³n la lista de parĂ¡metros poblacionales que se extraen con el paquete growthcurver y que tienen un significado en el anĂ¡lisis del crecimiento de microorganismos:
# data frame con valores con la funciĂ³n predict usando modelo logĂstico
df <- data.frame(Time = gbac$Time, c10.6 = gbac$c10.6, c10.6_fit = predict(model.bac$model, gbac$Time))
# grĂ¡fica ggplot con puntos "steelblue" y modelo logĂstico con "smooth line" en "red"
ggplot(df, aes(x = Time, y = c10.6)) +
geom_point(alpha=0.7, color="steelblue", size=2) +
geom_line(aes(y = c10.6_fit), color = "red") +
ylim(0,20) +
xlab("Horas") +
ylab("CFU x10^6")