Sparks, A.H., P.D. Esker, M. Bates, W. Dall' Acqua, Z. Guo, V. Segovia, S.D. Silwal, S. Tolos, and K.A. Garrett, 2008. Ecology and Epidemiology in R: Disease Progress over Time. The Plant Health Instructor. DOI:10.1094/PHI-A-2008-0129-02.
Ecology and Epidemiology in R: Disease Progress over Time
Examples of growth models for plant disease progress
In plant pathology we are often interested in studying disease progress over time, where time (t) is modeled as a continuous variable rather than as a discrete variable. Many different population growth models have been used for modeling disease progress curves (Gilligan 1990; Madden et al. 2007). Five common growth curve models are discussed below along with their assumptions. For the illustration of some of these models in R, we refer to Table 1 from Gottwald et al. (1989) which compared different models for disease progress, based on nonlinear regression analysis. In this table, the initial disease incidence for orange and grapefruit is y0 = 1/(13*45) = 0.0017 and for swingle is y0 = 1/(15*67) = 0.001.
| Model | Differential Equation Form | Integrated Form | Linearized Form |
|---|---|---|---|
| Exponential | logy= logy0 + rt | y = y0exp(rt) | logy = logy0 + rt |
| Monomolecular | ln{1/(1-y)} = ln{1/(1- y0)} + rt | y = 1-(1-y0)exp(-rt) | ln{1/(1-y)} = ln{1/(1- y0)} + rt |
| Logistic | y = 1/[1 + {-lny0/(1- y0) + rt}] | y = 1/[1 + exp{-lny0/(1- y0) + rt}] | ln(y/(1-y) = ln{y0/(1- y0) + rt} |
| Gompertz | dy/dt = ry ln(1/y) = ry(-lny) | y = exp(lny0exp(-rt)) | -ln(-lny) = -ln(-lny0) + rt |
| Weibull | dy/dt = c/b{(t-a)/b}(c-1)exp[-{(t-a)/b}c] | y = 1-exp[-{(t-a)/b}^c] | ln[ln{1/(1-y)}] = -clnb + ln(t-a) |
Exponential Model
The exponential model assumes that the absolute rate of
disease increase (dy/dt) is proportional to the
disease intensity (y).
The following R code creates a function,
plotexp, that plots an exponential relationship
between disease incidence and time. After you create the
plotexp function, you can apply it using
different values of the parameters to better understand how
the parameters affect the shape of the curve. In the
illustration, the parameter y0 is set to 0.0017, the
parameter r is set to
0.01579, and the maximum time for the illustration is set to
100. Try changing those values when applying the
plotexp function.
## Exponential Model Example plotexp <- function(y0,r,maxt){ curve( y0*exp(r*x), from=0, to=maxt, xlab='Time', ylab='Disease Incidence', col='mediumblue') } plotexp(0.0017, 0.01579, 100)
Output
Monomolecular model
The monomolecular model assumes a carrying capacity of
one, that is, the maximum level of disease is one, so disease
severity or incidence is measured as a proportion. Diseased
plant tissue may only lie between zero (healthy) and one
(complete disease). It also assumes the absolute rate of
change is proportional to the healthy tissue i.e.,
(1-y). After creating
the plotmono function and trying the example set
of parameter values, try replacing the parameter values with
others to see how the shape of the relationship changes.
## Monomolecular Model Example plotmono <- function(y0,r,maxt){ curve( 1-(1-y0)*exp(-r*x), from=0, to=maxt, xlab='Time', ylab='Disease Incidence', col='mediumblue') } plotmono(0.0017, 0.00242, 2000)
Output
Logistic model
The logistic model assumes that the absolute rate of
change in disease level depends on both healthy tissue
(y) and diseased tissue
(1-y) present at the
time. The curve is perfectly symmetric with an inflection
point at t = 1/rln
y0/(1- y0)
when y = 1/2. That is,
dy/dt increases up
until y = 1/2 and
decreases thereafter. After creating the plotlog
function, try applying it with different parameter
values.
## Logistic Model Example plotlog <- function(y0,r,maxt){ curve( 1/(1+(1-y0)/y0*exp(-r*x)), from=0, to=maxt, xlab='Time', ylab='Disease Incidence', col='mediumblue' ) } plotlog(0.001, 0.01636, 1000)
Output
Gompertz Model
The Gompertz model assumes that the absolute rate of
change depends on y and
ln(1/y) and is very
similar to the logistic model. However, the Gompertz model is
more asymmetric, with an inflection point attained at
0.37(1/e) instead.
After creating the plotgomp function and
comparing it to the other models before, try changing the
parameter values to see the effect on the shape of the
curve.
## Gompertz Model Example plotgomp <- function(y0,r,maxt){ curve( exp(log(y0)*exp(-r*x)), from=0, to=maxt, xlab='Time', ylab='Disease Incidence', col='mediumblue' ) } plotgomp(0.0017,0.02922, 250)
Output
Weibull Model
The Weibull model includes a larger number of parameters, and so can describe more complicated curves. The parameters are:
- a - units of time, indicating the time of disease onset,
- b - the scale parameter,inversely related to the rate of disease increase,
- c - the unitless shape parameter that controls the skewness of the curve.
If c = 1, this model is identical to the monomolecular model with the rate parameter r = 1/b and the initial disease level y0 = 1-exp(a/b). With suitable values of parameters 1, 2, and 3, other models can be approximated by the Weibull model.
## Weibull Model Example plotweib <- function(a,b,c,maxt){ curve( 1-exp(-((x-a)/b)^c), from=0, to=maxt, xlab='Time', ylab='Disease Incidence', col='mediumblue' ) } plotweib(1, 331.10, 10.04, 500)
Output
Note that for some parameter combinations, these different models may produce very similar curves. For this reason, when the fit of these curves is being compared for a real data set, more than one of the models may give a good fit. In that case, it may be best to go with the simplest model. On the other hand, if many different data sets are being compared, a more complicated model such as the Weibull may make it easier to obtain reasonable fits to all the data sets being considered. For an in-depth comparison of the different uses of growth models in plant pathology we refer the reader to Gilligan (1990) and Madden et al. (2007).