Title: | Spring Phenological Prediction |
---|---|
Description: | Predicts the occurrence times (in day of year) of spring phenological events. Three methods, including the accumulated degree days (ADD) method, the accumulated days transferred to a standardized temperature (ADTS) method, and the accumulated developmental progress (ADP) method, were used. See Shi et al. (2017a) <doi:10.1016/j.agrformet.2017.04.001> and Shi et al. (2017b) <doi:10.1093/aesa/sax063> for details. |
Authors: | Peijian Shi [aut, cre], Zhenghong Chen [aut], Brady K. Quinn [aut] |
Maintainer: | Peijian Shi <[email protected]> |
License: | GPL (>= 2) |
Version: | 0.1.4 |
Built: | 2024-12-13 11:05:37 UTC |
Source: | CRAN |
Estimates the starting date ( in day of year) and base tempeature (
in
C)
in the accumulated degree days method using mean daily air temperatures (Aono, 1993; Shi et al., 2017a, 2017b).
ADD(S.pd = NULL, T0.arr, Year1, Time, Year2, DOY, Temp, DOY.ul = 120, fig.opt = TRUE, S.def = 54, verbose = TRUE)
ADD(S.pd = NULL, T0.arr, Year1, Time, Year2, DOY, Temp, DOY.ul = 120, fig.opt = TRUE, S.def = 54, verbose = TRUE)
S.pd |
the pre-determined starting date for thermal accumulation (in day of year) |
T0.arr |
the candidate base temperatures (in |
Year1 |
the vector of the years recording a particular phenological event |
Time |
the vector of the occurence times (in day of year) of a particular phenological event across many years |
Year2 |
the vector of the years recording the climate data corresponding to the occurrence times |
DOY |
the vector of the dates (in day of year) when the climate data exist |
Temp |
the mean daily air temperature data (in |
DOY.ul |
the upper limit of |
fig.opt |
an optional argument of drawing the figures assoicated with the determinations of the starting date and base temperature, and a comparision between the predicted and observed occurrence times |
S.def |
a mandatory defintion of the starting date when (i) |
verbose |
an optional argument of allowing users to suppress printing of computation progress |
The default of S.pd
is NULL. In this case, the date associated with the minimum
correlation coefficient [between the mean of the mean daily temperatures (from a candidate starting
date to the observed occurrence time) and the observed occurrence time]
will be determined to be the starting date on the condition that it is smaller than
the mininum phenological occurence time. If the determined date associated with the minimum
correlation coefficient is greater than the mininum phenological occurence time, S.def
will be used as the starting date. If S.pd
is not NULL, the starting date will be
directly assigned as S.pd
irrespective of the minimum correlation coefficient method
and the value of S.def
. This means, S.pd
is superior to S.def
in determining
the starting date.
The function does not require that
Year1
is the same as the unique of Year2
,
and the intersection of two years will be finally kept. The unused years that have phenological
records but lack the climate data will be showed in unused.years
in the returned list.
The numerical value of
DOY.ul
should be larger than or equal to the maximum Time
.
S.arr |
the candidate starting dates (in day of year), whose default ranges from
the minimum |
cor.coef.arr |
the candidate correlation coefficients between the mean of the mean daily tempertures (from a candidate starting date to the observed occurrence time) and the observed occurrence time |
cor.coef |
the minimum correlation coefficient, i.e., min( |
search.failure |
a value of 0 or 1 of showing whether the starting date is successfully determined
by the minimum correlation coefficient method when |
mAADD.arr |
an vector saving the interannual mean of the annual acccumulated degree days (AADD) values for each of the candidate base temperatures |
RMSE.arr |
a vector saving the candidate root-mean-square errors (in days) between the observed and predicted occurrence times for each of the candidate base temperatures |
AADD.arr |
the annual accumulated degree days (AADD) values in different years |
Year |
The intersected years between |
Time |
The observed occurence times (day of year) in the intersected years
between |
Time.pred |
the predicted occurence times in different years |
S |
the determined starting date (day of year) |
T0 |
the determined base temperature (in |
AADD |
the expected annual accumulated degree days |
RMSE |
the smallest RMSE (in days) from the different candidate base temperatures |
unused.years |
the years that have phenological records but lack the climate data |
The entire mean daily temperature data in the spring of each year should be provided.
AADD
is represented by the mean of AADD.arr
in the output.
When the argument of S.pd
is not NULL
, the returned value of search.failure
will be NA
.
When the argument of S.pd
is NULL
, and the minimum correlation coefficient method fails
to find a suitable starting date, the argument of S.def
is then defined as the determined starting
date, i.e., the returned value of S
. At the same time, the returned value of cor.coef
is defined as NA
.
Peijian Shi [email protected], Zhenghong Chen [email protected], Brady K. Quinn [email protected].
Aono, Y. (1993) Climatological studies on blooming of cherry tree (Prunus yedoensis) by means
of DTS method. Bulletin of the University of Osaka Prefecture. Ser. B, Agriculture and life sciences
45, 155192 (in Japanese with English abstract).
Shi, P., Chen, Z., Reddy, G.V.P., Hui, C., Huang, J., Xiao, M. (2017a) Timing of cherry tree blooming:
Contrasting effects of rising winter low temperatures and early spring temperatures.
Agricultural and Forest Meteorology 240241, 78
89. doi:10.1016/j.agrformet.2017.04.001
Shi, P., Fan, M., Reddy, G.V.P. (2017b) Comparison of thermal performance equations in describing
temperature-dependent developmental rates of insects: (III) Phenological applications.
Annals of the Entomological Society of America 110, 558564. doi:10.1093/aesa/sax063
data(apricotFFD) data(BJMDT) X1 <- apricotFFD X2 <- BJMDT Year1.val <- X1$Year Time.val <- X1$Time Year2.val <- X2$Year DOY.val <- X2$DOY Temp.val <- X2$MDT DOY.ul.val <- 120 T0.arr0 <- seq(-5, 5, by = 0.1) S.pd0 <- NULL res1 <- ADD( S.pd = S.pd0, T0.arr = T0.arr0, Year1 = Year1.val, Time = Time.val, Year2 = Year2.val, DOY = DOY.val, Temp = Temp.val, DOY.ul = DOY.ul.val, fig.opt = TRUE, S.def=54, verbose = TRUE ) res1 S0 <- res1$S.arr r0 <- res1$cor.coef.arr dev.new() par1 <- par(family="serif") par2 <- par(mar=c(5, 5, 2, 2)) par3 <- par(mgp=c(3, 1, 0)) plot( S0, r0, cex.lab = 1.5, cex.axis = 1.5, xlab = "Candidate starting date (day of year)", ylab="Correlation coefficient between the mean temperature and FFD", type="l" ) ind <- which.min(r0) points(S0[ind], r0[ind], cex = 1.5, pch = 16) text(S0[ind], r0[ind] + 0.1, bquote(paste(italic(S), " = ", .(S0[ind]), sep = "")), cex = 1.5) par(par1) par(par2) par(par3) resu1 <- ADD( S.pd = 47, T0.arr = seq(-10, 0, by = 0.1), Year1 = Year1.val, Time = Time.val, Year2 = Year2.val, DOY = DOY.val, Temp = Temp.val, DOY.ul = DOY.ul.val, fig.opt = TRUE, S.def = 54, verbose = TRUE ) resu1 # graphics.off()
data(apricotFFD) data(BJMDT) X1 <- apricotFFD X2 <- BJMDT Year1.val <- X1$Year Time.val <- X1$Time Year2.val <- X2$Year DOY.val <- X2$DOY Temp.val <- X2$MDT DOY.ul.val <- 120 T0.arr0 <- seq(-5, 5, by = 0.1) S.pd0 <- NULL res1 <- ADD( S.pd = S.pd0, T0.arr = T0.arr0, Year1 = Year1.val, Time = Time.val, Year2 = Year2.val, DOY = DOY.val, Temp = Temp.val, DOY.ul = DOY.ul.val, fig.opt = TRUE, S.def=54, verbose = TRUE ) res1 S0 <- res1$S.arr r0 <- res1$cor.coef.arr dev.new() par1 <- par(family="serif") par2 <- par(mar=c(5, 5, 2, 2)) par3 <- par(mgp=c(3, 1, 0)) plot( S0, r0, cex.lab = 1.5, cex.axis = 1.5, xlab = "Candidate starting date (day of year)", ylab="Correlation coefficient between the mean temperature and FFD", type="l" ) ind <- which.min(r0) points(S0[ind], r0[ind], cex = 1.5, pch = 16) text(S0[ind], r0[ind] + 0.1, bquote(paste(italic(S), " = ", .(S0[ind]), sep = "")), cex = 1.5) par(par1) par(par2) par(par3) resu1 <- ADD( S.pd = 47, T0.arr = seq(-10, 0, by = 0.1), Year1 = Year1.val, Time = Time.val, Year2 = Year2.val, DOY = DOY.val, Temp = Temp.val, DOY.ul = DOY.ul.val, fig.opt = TRUE, S.def = 54, verbose = TRUE ) resu1 # graphics.off()
Estimates the starting date ( in day of year) and the parameters in
a developmental rate model in the accumulated developmental progress (ADP)
method using mean daily air temperatures (Wagner et al., 1984; Shi et al., 2017a, 2017b).
ADP( S.arr, expr, ini.val, Year1, Time, Year2, DOY, Temp, DOY.ul = 120, fig.opt = TRUE, control = list(), verbose = TRUE )
ADP( S.arr, expr, ini.val, Year1, Time, Year2, DOY, Temp, DOY.ul = 120, fig.opt = TRUE, control = list(), verbose = TRUE )
S.arr |
the candidate starting dates for thermal accumulation (in day of year) |
expr |
a user-defined model that is used in the accumulated developmental progress (ADP) method |
ini.val |
a vector or a list that saves the initial values of the parameters in |
Year1 |
the vector of the years recording a particular phenological event |
Time |
the vector of the occurence times (in day of year) of a particular phenological event across many years |
Year2 |
the vector of the years recording the climate data corresponding to the occurrence times |
DOY |
the vector of the dates (in day of year) when the climate data exist |
Temp |
the mean daily air temperature data (in |
DOY.ul |
the upper limit of |
fig.opt |
an optional argument of drawing the figures assoicated with the temperature-dependent developmental rate curve, the mean daily temperatures versus years, and a comparision between the predicted and observed occurrence times |
control |
the list of control parameters for using the |
verbose |
an optional argument of allowing users to suppress printing of computation progress |
It is better not to set too much candiate starting dates, which will be time-consuming. If expr
is selected as Arrhenius' equation, S.arr
can be selected as S
obtained from the output of
carrying out the ADTS
function. Here, expr
can be other nonlinear temperature-dependent
developmental rate functions (see Shi et al. [2017b] for details). Here, expr
can be any an arbitrary
user-defined temperature-dependent developmental rate function, e.g., a function named myfun
,
but it needs to take the following form of myfun <- function(P, x){...}
,
where P
is the vector of the model parameter(s), and x
is the vector of the
predictor variable, i.e., the temperature variable.
The function does not require that
Year1
is the same as the unique of Year2
,
and the intersection of two years will be finally kept. The unused years that have phenological
records but lack the climate data will be showed in unused.years
in the returned list.
The numerical value of
DOY.ul
should be larger than or equal to the maximum Time
.
Let
represent the temperature-dependent developmental rate, i.e.,
the reciprocal of the developmental
duration at a constant temperature required for completing a particular phenological event.
In the accumulated developmental progress (ADP) method, when the annual accumulated developmental
progress (AADP) reaches 100%, the phenological event is predicted to occurr for each year.
Let
denote the AADP of the
th year, which equals
where represents the starting date (in day of year),
represents the ending date
(in day of year), i.e., the occurrence time of a pariticular phenological event in the
th year,
is the vector of the model parameters in
expr
,
and represents the mean daily temperature of the
th day of the
th
year (in
C or K). In theory,
,
i.e., the AADP values of different years are a constant of 100%. However, in practice, there is
a certain deviation of
from 100%. The following approach
is used to determine the predicted occurrence time.
When
(where
), it follows that
is
the predicted occurrence time; when
and
, the trapezoid method (Ring and Harris, 1983)
is used to determine the predicted occurrence time. Assume that there are
-year phenological records.
When the starting date
and the temperature-dependent developmental rate model are known,
the model parameters can be estimated using the Nelder-Mead optiminization method
(Nelder and Mead, 1965) to minimize the root-mean-square error (RMSE) between the observed and predicted
occurrence times, i.e.,
Because is not determined, a group of candidate
values (in day of year) need to
be provided. Assume that there are
candidate
values, i.e.,
. For each
(where
ranges between 1 and
), we can obtain
a vector of the estimated model parameters,
, by minimizing
using the Nelder-Mead optiminization method. Then we finally selected
associated with
as the target parameter vector.
TDDR |
the temperature-dependent developmental rate matrix consisting of the year, day of year, mean daily temperature and developmental rate columns |
MAT |
a matrix consisting of the candidate starting dates, the estimates of candidate model parameters with the corresponding RMSEs |
Dev.accum |
the calculated annual accumulated developmental progresses in different years |
Year |
The intersected years between |
Time |
The observed occurence times (day of year) in the intersected years
between |
Time.pred |
the predicted occurence times in different years |
S |
the determined starting date (day of year) |
par |
the estiamtes of model parameters |
RMSE |
the RMSE (in days) between the observed and predicted occurrence times |
unused.years |
the years that have phenological records but lack the climate data |
The entire mean daily temperature data in the spring of each year should be provided.
In TDDR
, the first column of Year
saves the years, the second column
of DOY
saves the day of year values, the third column of Temperature
saves the mean daily air temperatures between the starting date to the occurrence times,
and the fourth column of Rate
saves the calculated developmental rates
corresponding to the mean daily temperatures.
Peijian Shi [email protected], Zhenghong Chen [email protected], Brady K. Quinn [email protected].
Nelder, J.A., Mead, R. (1965) A simplex method for function minimization.
Computer Journal 7, 308313. doi:10.1093/comjnl/7.4.308
Ring, D.R., Harris, M.K. (1983) Predicting pecan nut casebearer (Lepidoptera: Pyralidae) activity
at College Station, Texas. Environmental Entomology 12, 482486. doi:10.1093/ee/12.2.482
Shi, P., Chen, Z., Reddy, G.V.P., Hui, C., Huang, J., Xiao, M. (2017a) Timing of cherry tree blooming:
Contrasting effects of rising winter low temperatures and early spring temperatures.
Agricultural and Forest Meteorology 240241, 78
89. doi:10.1016/j.agrformet.2017.04.001
Shi, P., Fan, M., Reddy, G.V.P. (2017b) Comparison of thermal performance equations in describing
temperature-dependent developmental rates of insects: (III) Phenological applications.
Annals of the Entomological Society of America 110, 558564. doi:10.1093/aesa/sax063
Wagner, T.L., Wu, H.-I., Sharpe, P.J.H., Shcoolfield, R.M., Coulson, R.N. (1984) Modelling insect
development rates: a literature review and application of a biophysical model.
Annals of the Entomological Society of America 77, 208225. doi:10.1093/aesa/77.2.208
data(apricotFFD) data(BJMDT) X1 <- apricotFFD X2 <- BJMDT Year1.val <- X1$Year Time.val <- X1$Time Year2.val <- X2$Year DOY.val <- X2$DOY Temp.val <- X2$MDT DOY.ul.val <- 120 S.arr0 <- 47 #### Defines a re-parameterized Arrhenius' equation ########################### Arrhenius.eqn <- function(P, x){ B <- P[1] Ea <- P[2] R <- 1.987 * 10^(-3) x <- x + 273.15 10^12*exp(B-Ea/(R*x)) } ############################################################################## #### Provides the initial values of the parameter of Arrhenius' equation ##### ini.val0 <- list( B = 20, Ea = 14 ) ############################################################################## res5 <- ADP( S.arr = S.arr0, expr = Arrhenius.eqn, ini.val = ini.val0, Year1 = Year1.val, Time = Time.val, Year2 = Year2.val, DOY = DOY.val, Temp = Temp.val, DOY.ul = DOY.ul.val, fig.opt = TRUE, control = list(trace = FALSE, reltol = 1e-12, maxit = 5000), verbose = TRUE ) res5 TDDR <- res5$TDDR T <- TDDR$Temperature r <- TDDR$Rate Y <- res5$Year DP <- res5$Dev.accum dev.new() par1 <- par(family="serif") par2 <- par(mar=c(5, 5, 2, 2)) par3 <- par(mgp=c(3, 1, 0)) Ind <- sort(T, index.return=TRUE)$ix T1 <- T[Ind] r1 <- r[Ind] plot( T1, r1, cex.lab = 1.5, cex.axis = 1.5, pch = 1, cex = 1.5, col = 2, type = "l", xlab = expression(paste("Mean daily temperature (", degree, "C)", sep = "")), ylab = expression(paste("Calculated developmental rate (", {day}^{"-1"}, ")", sep = "")) ) par(par1) par(par2) par(par3) dev.new() par1 <- par(family="serif") par2 <- par(mar=c(5, 5, 2, 2)) par3 <- par(mgp=c(3, 1, 0)) plot( Y, DP * 100, xlab = "Year", ylab = "Accumulated developmental progress (%)", ylim = c(50, 150), cex.lab=1.5, cex.axis = 1.5, cex = 1.5 ) abline( h = 1 * 100, lwd = 1, col = 4, lty = 2 ) par(par1) par(par2) par(par3) # graphics.off()
data(apricotFFD) data(BJMDT) X1 <- apricotFFD X2 <- BJMDT Year1.val <- X1$Year Time.val <- X1$Time Year2.val <- X2$Year DOY.val <- X2$DOY Temp.val <- X2$MDT DOY.ul.val <- 120 S.arr0 <- 47 #### Defines a re-parameterized Arrhenius' equation ########################### Arrhenius.eqn <- function(P, x){ B <- P[1] Ea <- P[2] R <- 1.987 * 10^(-3) x <- x + 273.15 10^12*exp(B-Ea/(R*x)) } ############################################################################## #### Provides the initial values of the parameter of Arrhenius' equation ##### ini.val0 <- list( B = 20, Ea = 14 ) ############################################################################## res5 <- ADP( S.arr = S.arr0, expr = Arrhenius.eqn, ini.val = ini.val0, Year1 = Year1.val, Time = Time.val, Year2 = Year2.val, DOY = DOY.val, Temp = Temp.val, DOY.ul = DOY.ul.val, fig.opt = TRUE, control = list(trace = FALSE, reltol = 1e-12, maxit = 5000), verbose = TRUE ) res5 TDDR <- res5$TDDR T <- TDDR$Temperature r <- TDDR$Rate Y <- res5$Year DP <- res5$Dev.accum dev.new() par1 <- par(family="serif") par2 <- par(mar=c(5, 5, 2, 2)) par3 <- par(mgp=c(3, 1, 0)) Ind <- sort(T, index.return=TRUE)$ix T1 <- T[Ind] r1 <- r[Ind] plot( T1, r1, cex.lab = 1.5, cex.axis = 1.5, pch = 1, cex = 1.5, col = 2, type = "l", xlab = expression(paste("Mean daily temperature (", degree, "C)", sep = "")), ylab = expression(paste("Calculated developmental rate (", {day}^{"-1"}, ")", sep = "")) ) par(par1) par(par2) par(par3) dev.new() par1 <- par(family="serif") par2 <- par(mar=c(5, 5, 2, 2)) par3 <- par(mgp=c(3, 1, 0)) plot( Y, DP * 100, xlab = "Year", ylab = "Accumulated developmental progress (%)", ylim = c(50, 150), cex.lab=1.5, cex.axis = 1.5, cex = 1.5 ) abline( h = 1 * 100, lwd = 1, col = 4, lty = 2 ) par(par1) par(par2) par(par3) # graphics.off()
Estimates the starting date ( in day of year) and activation free energy (
in kcal
mol
) in the accumulated days transferred to a standardized
temperature (ADTS) method using mean daily air temperatures
(Konno and Sugihara, 1986; Aono, 1993; Shi et al., 2017a, 2017b).
ADTS( S.arr, Ea.arr, Year1, Time, Year2, DOY, Temp, DOY.ul = 120, fig.opt = TRUE, verbose = TRUE )
ADTS( S.arr, Ea.arr, Year1, Time, Year2, DOY, Temp, DOY.ul = 120, fig.opt = TRUE, verbose = TRUE )
S.arr |
the candidate starting dates for thermal accumulation (in day of year) |
Ea.arr |
the candidate activation free energy values (in kcal |
Year1 |
the vector of the years recording a particular phenological event |
Time |
the vector of the occurence times (in day of year) of a particular phenological event across many years |
Year2 |
the vector of the years recording the climate data corresponding to the occurrence times |
DOY |
the vector of the dates (in day of year) when the climate data exist |
Temp |
the mean daily air temperature data (in |
DOY.ul |
the upper limit of |
fig.opt |
an optional argument of drawing the figures assoicated with the determination of the combination the starting date and activation free energy, and a comparision between the predicted and observed occurrence times |
verbose |
an optional argument of allowing users to suppress printing of computation progress |
When fig.opt
is equal to TRUE
, it will show the contours of the root-mean-square
errors (RMSEs) based on different combinations of and
.
The function does not require that
Year1
is the same as the unique of Year2
,
and the intersection of two years will be finally kept. The unused years that have phenological
records but lack the climate data will be showed in unused.years
in the returned list.
The numerical value of
DOY.ul
should be larger than or equal to the maximum Time
.
mAADTS.mat |
a matrix consisiting of the means of the annual accumulated days transferred
to a standardized temperature (AADTS) values from the combinations of |
RMSE.mat |
the matrix consisting of the RMSEs (in days) from different
combinations of |
AADTS.arr |
the AADTS values in different years
associated with the smallest value in |
Year |
The intersected years between |
Time |
The observed occurence times (day of year) in the intersected years
between |
Time.pred |
the predicted occurence times in different years |
S |
the determined starting date (day of year) |
Ea |
the determined activation free energy values (in kcal |
AADD |
the expected AADTS |
RMSE |
the smallest RMSE (in days) in |
unused.years |
the years that have phenological records but lack the climate data |
The entire mean daily temperature data in the spring of each year should be provided.
AADTS
is represented by the mean of AADTS.arr
in the output.
Peijian Shi [email protected], Zhenghong Chen [email protected], Brady K. Quinn [email protected].
Aono, Y. (1993) Climatological studies on blooming of cherry tree (Prunus yedoensis) by means
of DTS method. Bulletin of the University of Osaka Prefecture. Ser. B, Agriculture and life sciences
45, 155192 (in Japanese with English abstract).
Konno, T., Sugihara, S. (1986) Temperature index for characterizing biological activity in soil and
its application to decomposition of soil organic matter. Bulletin of National Institute for
Agro-Environmental Sciences 1, 5168 (in Japanese with English abstract).
Shi, P., Chen, Z., Reddy, G.V.P., Hui, C., Huang, J., Xiao, M. (2017a) Timing of cherry tree blooming:
Contrasting effects of rising winter low temperatures and early spring temperatures.
Agricultural and Forest Meteorology 240241, 78
89. doi:10.1016/j.agrformet.2017.04.001
Shi, P., Fan, M., Reddy, G.V.P. (2017b) Comparison of thermal performance equations in describing
temperature-dependent developmental rates of insects: (III) Phenological applications.
Annals of the Entomological Society of America 110, 558564. doi:10.1093/aesa/sax063
data(apricotFFD) data(BJMDT) X1 <- apricotFFD X2 <- BJMDT Year1.val <- X1$Year Time.val <- X1$Time Year2.val <- X2$Year DOY.val <- X2$DOY Temp.val <- X2$MDT DOY.ul.val <- 120 S.arr0 <- seq(40, 60, by = 1) Ea.arr0 <- seq(10, 20, by = 1) res3 <- ADTS( S.arr = S.arr0, Ea.arr = Ea.arr0, Year1 = Year1.val, Time = Time.val, Year2 = Year2.val, DOY = DOY.val, Temp = Temp.val, DOY.ul = DOY.ul.val, fig.opt = TRUE, verbose = TRUE) res3 RMSE.mat0 <- res3$RMSE.mat RMSE.range <- range(RMSE.mat0) dev.new() par1 <- par(family="serif") par2 <- par(mar=c(5, 5, 2, 2)) par3 <- par(mgp=c(3, 1, 0)) image( S.arr0, Ea.arr0, RMSE.mat0, col = terrain.colors(200), axes = TRUE, cex.axis = 1.5, cex.lab = 1.5, xlab = "Starting date (day of year)", ylab = expression(paste(italic(E["a"]), " (kcal" %.% "mol"^{"-1"}, ")", sep = ""))) points( res3$S, res3$Ea, cex = 1.5, pch = 16, col = 2 ) contour( S.arr0, Ea.arr0, RMSE.mat0, levels = round(seq(RMSE.range[1], RMSE.range[2], len = 20), 4), add = TRUE, cex = 1.5, col = "#696969", labcex = 1.5) par(par1) par(par2) par(par3) resu3 <- ADTS( S.arr = 47, Ea.arr = seq(10, 20, by = 0.5), Year1 = Year1.val, Time = Time.val, Year2 = Year2.val, DOY = DOY.val, Temp = Temp.val, DOY.ul = DOY.ul.val, fig.opt = TRUE, verbose = TRUE) resu3 # graphics.off()
data(apricotFFD) data(BJMDT) X1 <- apricotFFD X2 <- BJMDT Year1.val <- X1$Year Time.val <- X1$Time Year2.val <- X2$Year DOY.val <- X2$DOY Temp.val <- X2$MDT DOY.ul.val <- 120 S.arr0 <- seq(40, 60, by = 1) Ea.arr0 <- seq(10, 20, by = 1) res3 <- ADTS( S.arr = S.arr0, Ea.arr = Ea.arr0, Year1 = Year1.val, Time = Time.val, Year2 = Year2.val, DOY = DOY.val, Temp = Temp.val, DOY.ul = DOY.ul.val, fig.opt = TRUE, verbose = TRUE) res3 RMSE.mat0 <- res3$RMSE.mat RMSE.range <- range(RMSE.mat0) dev.new() par1 <- par(family="serif") par2 <- par(mar=c(5, 5, 2, 2)) par3 <- par(mgp=c(3, 1, 0)) image( S.arr0, Ea.arr0, RMSE.mat0, col = terrain.colors(200), axes = TRUE, cex.axis = 1.5, cex.lab = 1.5, xlab = "Starting date (day of year)", ylab = expression(paste(italic(E["a"]), " (kcal" %.% "mol"^{"-1"}, ")", sep = ""))) points( res3$S, res3$Ea, cex = 1.5, pch = 16, col = 2 ) contour( S.arr0, Ea.arr0, RMSE.mat0, levels = round(seq(RMSE.range[1], RMSE.range[2], len = 20), 4), add = TRUE, cex = 1.5, col = "#696969", labcex = 1.5) par(par1) par(par2) par(par3) resu3 <- ADTS( S.arr = 47, Ea.arr = seq(10, 20, by = 0.5), Year1 = Year1.val, Time = Time.val, Year2 = Year2.val, DOY = DOY.val, Temp = Temp.val, DOY.ul = DOY.ul.val, fig.opt = TRUE, verbose = TRUE) resu3 # graphics.off()
The data consist of the first flowering date records of Prunus armeniaca
at the Summer Palace (3954
38
N,
116
8
28
E, 50 m a.s.l.) in Beijing of China
between 1963 and 2010. Data source: Chinese Phenological Observation Network (Guo et al., 2015).
data(apricotFFD)
data(apricotFFD)
In the data set, there are two columns of vectors: Year
, and Time
.
Code
saves the recording years; and
Time
saves 19632010 first flowering dates of Prunus armeniaca in day of year.
Guo, L., Xu, J., Dai, J., Cheng, J., Wu, H., Luedeling, E. (2015) Statistical identification of chilling
and heat requirements for apricotflower buds in Beijing, China.
Scientia Horticulturae 195, 138144. doi:10.1016/j.scienta.2015.09.006
data(apricotFFD) attach(apricotFFD) dev.new() par1 <- par(family="serif") par2 <- par(mar=c(5, 5, 2, 2)) par3 <- par(mgp=c(3, 1, 0)) plot( Year, Time, asp = 1, cex.lab = 1.5, cex.axis = 1.5, xlab = "Year", ylab = "First flowering date (day of year)" ) par(par1) par(par2) par(par3) # graphics.off()
data(apricotFFD) attach(apricotFFD) dev.new() par1 <- par(family="serif") par2 <- par(mar=c(5, 5, 2, 2)) par3 <- par(mgp=c(3, 1, 0)) plot( Year, Time, asp = 1, cex.lab = 1.5, cex.axis = 1.5, xlab = "Year", ylab = "First flowering date (day of year)" ) par(par1) par(par2) par(par3) # graphics.off()
The data include the mean daily temperatures (in C) of Beijing
between 1951 and 2012 with the exception of 1968.
Data source: China Meteorological Data Service Centre (https://data.cma.cn/en).
data(BJMDT)
data(BJMDT)
In the data set, there are five columns of vectors: Year
, Month
, Day
, DOY
, and MDT
.
Year
saves the recording years;
Month
saves the recording months;
Day
saves the recording days;
DOY
saves the dates in day of year;
and MDT
saves the mean daily temperatures (in C) corresponding to
DOY
.
Guo, L., Xu, J., Dai, J., Cheng, J., Wu, H., Luedeling, E. (2015) Statistical identification of chilling
and heat requirements for apricotflower buds in Beijing, China.
Scientia Horticulturae 195, 138144. doi:10.1016/j.scienta.2015.09.006
data(BJMDT) attach(BJMDT) x <- as.numeric( tapply(DOY, DOY, mean) ) y <- as.numeric( tapply(MDT, DOY, mean) ) y.sd <- as.numeric( tapply(MDT, DOY, sd) ) dev.new() par1 <- par(family="serif") par2 <- par(mar=c(5, 5, 2, 2)) par3 <- par(mgp=c(3, 1, 0)) plot( x, y, cex = 1.5, xlim = c(0, 367), ylim = c(-10, 30), cex.lab = 1.5, cex.axis = 1.5, type = "n", xlab = "Day of Year", ylab = expression(paste("Mean daily temperature (", degree, "C)", sep="")) ) for(i in 1:length(x)){ lines(c(x[i], x[i]), c(y[i]-y.sd[i], y[i]+y.sd[i]), col=4) } points(x, y, cex = 1.5) par(par1) par(par2) par(par3) # graphics.off()
data(BJMDT) attach(BJMDT) x <- as.numeric( tapply(DOY, DOY, mean) ) y <- as.numeric( tapply(MDT, DOY, mean) ) y.sd <- as.numeric( tapply(MDT, DOY, sd) ) dev.new() par1 <- par(family="serif") par2 <- par(mar=c(5, 5, 2, 2)) par3 <- par(mgp=c(3, 1, 0)) plot( x, y, cex = 1.5, xlim = c(0, 367), ylim = c(-10, 30), cex.lab = 1.5, cex.axis = 1.5, type = "n", xlab = "Day of Year", ylab = expression(paste("Mean daily temperature (", degree, "C)", sep="")) ) for(i in 1:length(x)){ lines(c(x[i], x[i]), c(y[i]-y.sd[i], y[i]+y.sd[i]), col=4) } points(x, y, cex = 1.5) par(par1) par(par2) par(par3) # graphics.off()
Predicts the occurrence times using the accumulated degree days method based on observed or predicted mean daily air temperatures (Aono, 1993; Shi et al., 2017a, 2017b).
predADD(S, T0, AADD, Year2, DOY, Temp, DOY.ul = 120)
predADD(S, T0, AADD, Year2, DOY, Temp, DOY.ul = 120)
S |
the starting date for thermal accumulation (in day of year) |
T0 |
the base temperature (in |
AADD |
the expected annual accumulated degree days |
Year2 |
the vector of the years recording the climate data for predicting the occurrence times |
DOY |
the vector of the dates (in day of year) when the climate data exist |
Temp |
the mean daily air temperature data (in |
DOY.ul |
the upper limit of |
In the accumulated degree days (ADD) method (Shi et al., 2017a, 2017b), the starting date
() and the base temperature
(
), and the annual accumulated degree days (AADD which is denoted by
)
are assumed to be constants across different years. Let
denote the AADD of
the
th year, which equals
where represents the ending date (in day of year), i.e., the occurrence time of a pariticular
phenological event in the
th year, and
represents the mean daily temperature of the
th day of the
th year (in
C). In theory,
,
i.e., the AADD values of different years are a constant. However, in practice, there is
a certain deviation of
from
. The following approach
is used to determine the predicted occurrence time.
When
(where
), it follows that
is
the predicted occurrence time; when
and
, the trapezoid method (Ring and Harris, 1983)
is used to determine the predicted occurrence time.
Year |
the years with climate data |
Time.pred |
the predicted occurence times (day of year) in different years |
The entire mean daily temperature data in the spring of each year should be provided.
Peijian Shi [email protected], Zhenghong Chen [email protected], Brady K. Quinn [email protected].
Aono, Y. (1993) Climatological studies on blooming of cherry tree (Prunus yedoensis) by means
of DTS method. Bulletin of the University of Osaka Prefecture. Ser. B, Agriculture and life sciences
45, 155192 (in Japanese with English abstract).
Ring, D.R., Harris, M.K. (1983) Predicting pecan nut casebearer (Lepidoptera: Pyralidae) activity
at College Station, Texas. Environmental Entomology 12, 482486. doi:10.1093/ee/12.2.482
Shi, P., Chen, Z., Reddy, G.V.P., Hui, C., Huang, J., Xiao, M. (2017a) Timing of cherry tree blooming:
Contrasting effects of rising winter low temperatures and early spring temperatures.
Agricultural and Forest Meteorology 240241, 78
89. doi:10.1016/j.agrformet.2017.04.001
Shi, P., Fan, M., Reddy, G.V.P. (2017b) Comparison of thermal performance equations in describing
temperature-dependent developmental rates of insects: (III) Phenological applications.
Annals of the Entomological Society of America 110, 558564. doi:10.1093/aesa/sax063
data(apricotFFD) data(BJMDT) X1 <- apricotFFD X2 <- BJMDT Year1.val <- X1$Year Time.val <- X1$Time Year2.val <- X2$Year DOY.val <- X2$DOY Temp.val <- X2$MDT DOY.ul.val <- 120 S.val <- 65 T0.val <- -0.5 AADD.val <- 235.6447 res2 <- predADD( S = S.val, T0 = T0.val, AADD = AADD.val, Year2 = Year2.val, DOY = DOY.val, Temp = Temp.val, DOY.ul = DOY.ul.val ) res2 ind1 <- res2$Year %in% intersect(res2$Year, Year1.val) ind2 <- Year1.val %in% intersect(res2$Year, Year1.val) RMSE1 <- sqrt( sum((Time.val[ind2]-res2$Time.pred[ind1])^2) / length(Time.val[ind2]) ) RMSE1
data(apricotFFD) data(BJMDT) X1 <- apricotFFD X2 <- BJMDT Year1.val <- X1$Year Time.val <- X1$Time Year2.val <- X2$Year DOY.val <- X2$DOY Temp.val <- X2$MDT DOY.ul.val <- 120 S.val <- 65 T0.val <- -0.5 AADD.val <- 235.6447 res2 <- predADD( S = S.val, T0 = T0.val, AADD = AADD.val, Year2 = Year2.val, DOY = DOY.val, Temp = Temp.val, DOY.ul = DOY.ul.val ) res2 ind1 <- res2$Year %in% intersect(res2$Year, Year1.val) ind2 <- Year1.val %in% intersect(res2$Year, Year1.val) RMSE1 <- sqrt( sum((Time.val[ind2]-res2$Time.pred[ind1])^2) / length(Time.val[ind2]) ) RMSE1
Predicts the occurrence times using the accumulated developmental progress (ADP) method based on observed or predicted mean daily air temperatures (Wagner et al., 1984; Shi et al., 2017a, 2017b).
predADP(S, expr, theta, Year2, DOY, Temp, DOY.ul = 120)
predADP(S, expr, theta, Year2, DOY, Temp, DOY.ul = 120)
S |
the starting date for thermal accumulation (in day of year) |
expr |
a user-defined model that is used in the accumulated developmental progress (ADP) method |
theta |
a vector saves the numerical values of the parameters in |
Year2 |
the vector of the years recording the climate data for predicting the occurrence times |
DOY |
the vector of the dates (in day of year) when the climate data exist |
Temp |
the mean daily air temperature data (in |
DOY.ul |
the upper limit of |
Organisms showing phenological events in early spring often experience several cold days
during the development. In this case, Arrhenius' equation (Shi et al., 2017a, 2017b,
and references therein) has been recommended to describe the effect of the absolute temperature
( in Kelvin [K]) on the developmental rate (
):
where represents the activation free energy (in kcal
mol
);
is the universal gas constant (= 1.987 cal
mol
K
);
is a constant. To keep the consistence of the unit used in
and
, we need to
re-assign
to be 1.987
to make its unit 1.987
kcal
mol
K
in the above formula.
In the accumulated developmental progress (ADP) method, when the annual accumulated developmental
progress (AADP) reaches 100%, the phenological event is predicted to occurr for each year.
Let
denote the AADP of the
th year, which equals
where represents the ending date (in day of year), i.e., the occurrence time of a pariticular
phenological event in the
th year. If the temperature-dependent developmental rate follows
Arrhenius' equation, the AADP of the
th year is equal to
where represents the mean daily temperature of the
th day of the
th year (in K). In theory,
,
i.e., the AADP values of different years are a constant of 100%. However, in practice, there is
a certain deviation of
from 100%. The following approach
is used to determine the predicted occurrence time.
When
(where
), it follows that
is
the predicted occurrence time; when
and
, the trapezoid method (Ring and Harris, 1983)
is used to determine the predicted occurrence time.
The argument of
expr
can be any an arbitrary user-defined temperature-dependent
developmental rate function, e.g., a function named myfun
,
but it needs to take the following form of myfun <- function(P, x){...}
,
where P
is the vector of the model parameter(s), and x
is the vector of the
predictor variable, i.e., the temperature variable.
Year |
the years with climate data |
Time.pred |
the predicted occurence times (day of year) in different years |
The entire mean daily temperature data in the spring of each year should be provided.
There is a need to note that the unit of Temp
in Arguments is C, not K.
In addition, when using Arrhenius' equation to describe
, to reduce the size of
in this equation, Arrhenius' equation is multiplied by
in calculating the
AADP value for each year, i.e.,
Peijian Shi [email protected], Zhenghong Chen [email protected], Brady K. Quinn [email protected].
Ring, D.R., Harris, M.K. (1983) Predicting pecan nut casebearer (Lepidoptera: Pyralidae) activity
at College Station, Texas. Environmental Entomology 12, 482486. doi:10.1093/ee/12.2.482
Shi, P., Chen, Z., Reddy, G.V.P., Hui, C., Huang, J., Xiao, M. (2017a) Timing of cherry tree blooming:
Contrasting effects of rising winter low temperatures and early spring temperatures.
Agricultural and Forest Meteorology 240241, 78
89. doi:10.1016/j.agrformet.2017.04.001
Shi, P., Fan, M., Reddy, G.V.P. (2017b) Comparison of thermal performance equations in describing
temperature-dependent developmental rates of insects: (III) Phenological applications.
Annals of the Entomological Society of America 110, 558564. doi:10.1093/aesa/sax063
Wagner, T.L., Wu, H.-I., Sharpe, P.J.H., Shcoolfield, R.M., Coulson, R.N. (1984) Modelling insect
development rates: a literature review and application of a biophysical model.
Annals of the Entomological Society of America 77, 208225. doi:10.1093/aesa/77.2.208
data(apricotFFD) data(BJMDT) X1 <- apricotFFD X2 <- BJMDT Year1.val <- X1$Year Time.val <- X1$Time Year2.val <- X2$Year DOY.val <- X2$DOY Temp.val <- X2$MDT DOY.ul.val <- 120 S.val <- 47 # Defines a re-parameterized Arrhenius' equation Arrhenius.eqn <- function(P, x){ B <- P[1] Ea <- P[2] R <- 1.987 * 10^(-3) x <- x + 273.15 10^12*exp(B-Ea/(R*x)) } P0 <- c(-4.7823, 14.8198) T2 <- seq(-10, 20, len = 2000) r2 <- Arrhenius.eqn(P = P0, x = T2) dev.new() par1 <- par(family="serif") par2 <- par(mar=c(5, 5, 2, 2)) par3 <- par(mgp=c(3, 1, 0)) plot( T2, r2, cex.lab = 1.5, cex.axis = 1.5, pch = 1, cex = 1.5, col = 2, type = "l", xlab = expression(paste("Temperature (", degree, "C)", sep = "")), ylab = expression(paste("Developmental rate (", {day}^{"-1"}, ")", sep="")) ) par(par1) par(par2) par(par3) res6 <- predADP( S = S.val, expr = Arrhenius.eqn, theta = P0, Year2 = Year2.val, DOY = DOY.val, Temp = Temp.val, DOY.ul = DOY.ul.val ) res6 ind5 <- res6$Year %in% intersect(res6$Year, Year1.val) ind6 <- Year1.val %in% intersect(res6$Year, Year1.val) RMSE3 <- sqrt( sum((Time.val[ind6]-res6$Time.pred[ind5])^2) / length(Time.val[ind6]) ) RMSE3
data(apricotFFD) data(BJMDT) X1 <- apricotFFD X2 <- BJMDT Year1.val <- X1$Year Time.val <- X1$Time Year2.val <- X2$Year DOY.val <- X2$DOY Temp.val <- X2$MDT DOY.ul.val <- 120 S.val <- 47 # Defines a re-parameterized Arrhenius' equation Arrhenius.eqn <- function(P, x){ B <- P[1] Ea <- P[2] R <- 1.987 * 10^(-3) x <- x + 273.15 10^12*exp(B-Ea/(R*x)) } P0 <- c(-4.7823, 14.8198) T2 <- seq(-10, 20, len = 2000) r2 <- Arrhenius.eqn(P = P0, x = T2) dev.new() par1 <- par(family="serif") par2 <- par(mar=c(5, 5, 2, 2)) par3 <- par(mgp=c(3, 1, 0)) plot( T2, r2, cex.lab = 1.5, cex.axis = 1.5, pch = 1, cex = 1.5, col = 2, type = "l", xlab = expression(paste("Temperature (", degree, "C)", sep = "")), ylab = expression(paste("Developmental rate (", {day}^{"-1"}, ")", sep="")) ) par(par1) par(par2) par(par3) res6 <- predADP( S = S.val, expr = Arrhenius.eqn, theta = P0, Year2 = Year2.val, DOY = DOY.val, Temp = Temp.val, DOY.ul = DOY.ul.val ) res6 ind5 <- res6$Year %in% intersect(res6$Year, Year1.val) ind6 <- Year1.val %in% intersect(res6$Year, Year1.val) RMSE3 <- sqrt( sum((Time.val[ind6]-res6$Time.pred[ind5])^2) / length(Time.val[ind6]) ) RMSE3
Predicts the occurrence times using the accumulated days transferred to a standardized temperature (ADTS) method based on observed or predicted mean daily air temperatures (Konno and Sugihara, 1986; Aono, 1993; Shi et al., 2017a, 2017b).
predADTS(S, Ea, AADTS, Year2, DOY, Temp, DOY.ul = 120)
predADTS(S, Ea, AADTS, Year2, DOY, Temp, DOY.ul = 120)
S |
the starting date for thermal accumulation (in day of year) |
Ea |
the activation free energy (in kcal |
AADTS |
the expected annual accumulated days transferred to a standardized temperature |
Year2 |
the vector of the years recording the climate data for predicting the occurrence times |
DOY |
the vector of the dates (in day of year) when the climate data exist |
Temp |
the mean daily air temperature data (in |
DOY.ul |
the upper limit of |
Organisms showing phenological events in early spring often experience several cold days
during the development. In this case, Arrhenius' equation (Shi et al., 2017a, 2017b,
and references therein) has been recommended to describe the effect of the absolute temperature
( in Kelvin [K]) on the developmental rate (
):
where represents the activation free energy (in kcal
mol
);
is the universal gas constant (= 1.987 cal
mol
K
);
is a constant. To keep the consistence of the unit used in
and
, we need to
re-assign
to be 1.987
to make its unit 1.987
kcal
mol
K
in the above formula.
According to the definition of the developmental rate (
),
it is the developmental progress per unit time (e.g., per day, per hour),
which equals the reciprocal of the developmental duration
, i.e.,
. Let
represent the standard temperature (in K), and
represent the developmental rate at
.
let
represent the developmental rate at
, an arbitrary
temperature (in K). It is apparent that
. It follows that
where is referred to as the number of days transferred to a standardized temperature
(DTS) (Konno and Sugihara, 1986; Aono, 1993).
In the accumulated days transferred to a standardized temperature (ADTS) method,
the annual accumulated days transferred to a standardized temperature (AADTS) is assumed to be a constant.
Let
denote the AADTS of the
th year, which equals
where represents the ending date (in day of year), i.e., the occurrence time of a pariticular
phenological event in the
th year, and
represents the mean daily temperature of the
th day of the
th year (in K). In theory,
,
i.e., the AADTS values of different years are a constant. However, in practice, there is
a certain deviation of
from
. The following approach
is used to determine the predicted occurrence time.
When
(where
), it follows that
is
the predicted occurrence time; when
and
, the trapezoid method (Ring and Harris, 1983)
is used to determine the predicted occurrence time.
Year |
the years with climate data |
Time.pred |
the predicted occurence times (day of year) in different years |
The entire mean daily temperature data in the spring of each year should be provided.
There is a need to note that the unit of Temp
in Arguments is C, not K.
Peijian Shi [email protected], Zhenghong Chen [email protected], Brady K. Quinn [email protected].
Aono, Y. (1993) Climatological studies on blooming of cherry tree (Prunus yedoensis) by means
of DTS method. Bulletin of the University of Osaka Prefecture. Ser. B, Agriculture and life sciences
45, 155192 (in Japanese with English abstract).
Konno, T., Sugihara, S. (1986) Temperature index for characterizing biological activity in soil and
its application to decomposition of soil organic matter. Bulletin of National Institute for
Agro-Environmental Sciences 1, 5168 (in Japanese with English abstract).
Ring, D.R., Harris, M.K. (1983) Predicting pecan nut casebearer (Lepidoptera: Pyralidae) activity
at College Station, Texas. Environmental Entomology 12, 482486. doi:10.1093/ee/12.2.482
Shi, P., Chen, Z., Reddy, G.V.P., Hui, C., Huang, J., Xiao, M. (2017a) Timing of cherry tree blooming:
Contrasting effects of rising winter low temperatures and early spring temperatures.
Agricultural and Forest Meteorology 240241, 78
89. doi:10.1016/j.agrformet.2017.04.001
Shi, P., Fan, M., Reddy, G.V.P. (2017b) Comparison of thermal performance equations in describing
temperature-dependent developmental rates of insects: (III) Phenological applications.
Annals of the Entomological Society of America 110, 558564. doi:10.1093/aesa/sax063
data(apricotFFD) data(BJMDT) X1 <- apricotFFD X2 <- BJMDT Year1.val <- X1$Year Time.val <- X1$Time Year2.val <- X2$Year DOY.val <- X2$DOY Temp.val <- X2$MDT DOY.ul.val <- 120 S.val <- 47 Ea.val <- 14 AADTS.val <- 9.607107 res4 <- predADTS( S = S.val, Ea = Ea.val, AADTS = AADTS.val, Year2 = Year2.val, DOY = DOY.val, Temp = Temp.val, DOY.ul = DOY.ul.val ) res4 ind3 <- res4$Year %in% intersect(res4$Year, Year1.val) ind4 <- Year1.val %in% intersect(res4$Year, Year1.val) RMSE2 <- sqrt( sum((Time.val[ind4]-res4$Time.pred[ind3])^2) / length(Time.val[ind4]) ) RMSE2
data(apricotFFD) data(BJMDT) X1 <- apricotFFD X2 <- BJMDT Year1.val <- X1$Year Time.val <- X1$Time Year2.val <- X2$Year DOY.val <- X2$DOY Temp.val <- X2$MDT DOY.ul.val <- 120 S.val <- 47 Ea.val <- 14 AADTS.val <- 9.607107 res4 <- predADTS( S = S.val, Ea = Ea.val, AADTS = AADTS.val, Year2 = Year2.val, DOY = DOY.val, Temp = Temp.val, DOY.ul = DOY.ul.val ) res4 ind3 <- res4$Year %in% intersect(res4$Year, Year1.val) ind4 <- Year1.val %in% intersect(res4$Year, Year1.val) RMSE2 <- sqrt( sum((Time.val[ind4]-res4$Time.pred[ind3])^2) / length(Time.val[ind4]) ) RMSE2
Predicts the occurrence times (in day of year) of spring phenological events. Three methods, including the accumulated degree days (ADD) method, the accumulated days transferred to a standardized temperature (ADTS) method, and the accumulated developmental progress (ADP) method, were used. See Shi et al. (2017a, 2017b) for details.
The DESCRIPTION file:
Package: | spphpr |
Type: | Package |
Title: | Spring Phenological Prediction |
Version: | 0.1.4 |
Date: | 2024-12-12 |
Authors@R: | c(person(given="Peijian", family="Shi", email="[email protected]", role=c("aut", "cre")), person(given=c("Zhenghong"), family="Chen", email="[email protected]", role=c("aut")), person(given=c("Brady K."), family="Quinn", email="[email protected]", role=c("aut"))) |
Author: | Peijian Shi [aut, cre], Zhenghong Chen [aut], Brady K. Quinn [aut] |
Maintainer: | Peijian Shi <[email protected]> |
Description: | Predicts the occurrence times (in day of year) of spring phenological events. Three methods, including the accumulated degree days (ADD) method, the accumulated days transferred to a standardized temperature (ADTS) method, and the accumulated developmental progress (ADP) method, were used. See Shi et al. (2017a) <doi:10.1016/j.agrformet.2017.04.001> and Shi et al. (2017b) <doi:10.1093/aesa/sax063> for details. |
Depends: | R (>= 4.2.0) |
License: | GPL (>= 2) |
NeedsCompilation: | no |
Packaged: | 2024-12-12 07:14:19 UTC; PEIJIAN SHI |
Repository: | CRAN |
Date/Publication: | 2024-12-13 09:10:02 UTC |
Index of help topics:
ADD Function for Implementing the Accumulated Degree Days Method ADP Function for Implementing the Accumulated Developmental Progress Method ADTS Function for Implementing the Accumulated Days Transferred to a Standardized Temperature Method BJMDT Mean Daily Temperature Data of Beijing from 1951 to 2012 with the exception of 1968. apricotFFD First flowering date records of _Prunus armeniaca_ predADD Prediction Function of the Accumulated Degree Days Method predADP Prediction Function of the Accumulated Developmental Progress Method predADTS Prediction Function of the Accumulated Days Transferred to a Standardized Temperature Method spphpr Spring Phenological Prediction toDOY Function for Transferring a Date to the Value of Day of Year
We thank Benjamin Altmann, Lei Chen, Linli Deng, Feng Ge, Wen Gu, Liang Guo, Jianguo Huang, Cang Hui, Konstanze Lauseker, Gadi V.P. Reddy, Jing Tan, Mei Xiao, Lin Wang, and Wangxiang Zhang for their valuable help during the development of this package.
Peijian Shi [aut, cre], Zhenghong Chen [aut], Brady K. Quinn [aut]
Maintainer: Peijian Shi <[email protected]>
Shi, P., Chen, Z., Reddy, G.V.P., Hui, C., Huang, J., Xiao, M. (2017a) Timing of cherry tree blooming:
Contrasting effects of rising winter low temperatures and early spring temperatures.
Agricultural and Forest Meteorology 240241, 78
89. doi:10.1016/j.agrformet.2017.04.001
Shi, P., Fan, M., Reddy, G.V.P. (2017b) Comparison of thermal performance equations in describing
temperature-dependent developmental rates of insects: (III) Phenological applications.
Annals of the Entomological Society of America 110, 558564. doi:10.1093/aesa/sax063
Transfers the date (from year, month and day) to the value of day of year.
toDOY(Year, Month, Day)
toDOY(Year, Month, Day)
Year |
the vector of years |
Month |
the vector of months |
Day |
the vector of days |
The user needs to provide the three separate vectors of Year
, Month
and Day
,
rather than providing a single date vector. The arguments can be numerical vectors or character vectors.
The returned value is a vector of transferred dates in day of year.
The returned vector, DOY
, usually mathes with the year vector and the mean daily
temperature vector as arguments in other functions, e.g., the ADD
function.
Peijian Shi [email protected], Zhenghong Chen [email protected], Brady K. Quinn [email protected].
Shi, P., Chen, Z., Reddy, G.V.P., Hui, C., Huang, J., Xiao, M. (2017a) Timing of cherry tree blooming:
Contrasting effects of rising winter low temperatures and early spring temperatures.
Agricultural and Forest Meteorology 240241, 78
89. doi:10.1016/j.agrformet.2017.04.001
Shi, P., Fan, M., Reddy, G.V.P. (2017b) Comparison of thermal performance equations in describing
temperature-dependent developmental rates of insects: (III) Phenological applications.
Annals of the Entomological Society of America 110, 558564. doi:10.1093/aesa/sax063
data(BJMDT) X2 <- BJMDT DOY2 <- toDOY(X2$Year, X2$Month, X2$Day) # cbind(X2$DOY, DOY2)
data(BJMDT) X2 <- BJMDT DOY2 <- toDOY(X2$Year, X2$Month, X2$Day) # cbind(X2$DOY, DOY2)