| 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], Jing Tan [aut], Brady K. Quinn [aut] |
| Maintainer: | Peijian Shi <[email protected]> |
| License: | GPL (>= 2) |
| Version: | 1.1.5 |
| Built: | 2026-05-18 07:09:23 UTC |
| Source: | https://github.com/cran/spphpr |
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, b).
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 in which a particular phenological event was recorded |
Time |
the vector of the occurrence 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) for which climate data exist |
Temp |
the mean daily air temperature data (in |
DOY.ul |
the upper limit of |
fig.opt |
an optional argument to draw the figures associated with the determinations of the starting date and base temperature, and a comparison between the predicted and observed occurrence times |
S.def |
a mandatory defintion of the starting date when (i) |
verbose |
an optional argument allowing users to suppress the 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 occurrence time. If the determined date associated with the minimum
correlation coefficient is greater than the mininum phenological occurrence time, S.def
will be used as the starting date. If S.pd is not NULL, the starting date will be
directly set as S.pd irrespective of the minimum correlation coefficient method
and the value of S.def. This means that S.pd is superior to S.def in determining
the starting date.
The function does not require that Year1 is the same as unique(Year2),
and the intersection of the two vectors of years will be kept. The unused years that have phenological
records but lack climate data will be showed in unused.years in the returned list.
The numerical value of DOY.ul should be greater 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 overlapping years between |
Time |
The observed occurrence times (day-of-year) in the overlapping years
between |
Time.pred |
the predicted occurrence 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 climate data |
The entire mean daily temperature data set for 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], Jing Tan [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, 7889. 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(BJDAT) X1 <- apricotFFD X2 <- BJDAT 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 = 65, 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(BJDAT) X1 <- apricotFFD X2 <- BJDAT 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 = 65, 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 base tempeature (, in C)
in the accumulated degree days method using minimum and maximum daily air temperatures (Aono, 1993; Shi et al., 2017a, b).
ADD2(S.pd = NULL, T0.arr, Year1, Time, Year2, DOY, Tmin, Tmax, DOY.ul = 120, fig.opt = TRUE, S.def = 54, verbose = TRUE)ADD2(S.pd = NULL, T0.arr, Year1, Time, Year2, DOY, Tmin, Tmax, 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 in which a particular phenological event was recorded |
Time |
the vector of the occurrence 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) for which climate data exist |
Tmin |
the minimum daily air temperature data (in |
Tmax |
the maximum daily air temperature data (in |
DOY.ul |
the upper limit of |
fig.opt |
an optional argument to draw the figures associated with the determinations of the starting date and base temperature, and a comparison between the predicted and observed occurrence times |
S.def |
a mandatory defintion of the starting date when (i) |
verbose |
an optional argument allowing users to suppress the 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 (Tmin + Tmax)/2 values (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 occurrence time. If the determined date associated with the minimum
correlation coefficient is greater than the mininum phenological occurrence time, S.def
will be used as the starting date. If S.pd is not NULL, the starting date will be
directly set as S.pd irrespective of the minimum correlation coefficient method
and the value of S.def. This means that S.pd is superior to S.def in determining
the starting date.
The function does not require that Year1 is the same as unique(Year2),
and the intersection of the two vectors of years will be kept. The unused years that have phenological
records but lack climate data will be showed in unused.years in the returned list.
The numerical value of DOY.ul should be greater 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 ( |
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 overlapping years between |
Time |
The observed occurrence times (day-of-year) in the overlapping years
between |
Time.pred |
the predicted occurrence 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 climate data |
The entire minimum and maximum daily temperature data set for 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], Jing Tan [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, 7889. 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(BJDAT) X1 <- apricotFFD X2 <- BJDAT Year1.val <- X1$Year Time.val <- X1$Time Year2.val <- X2$Year DOY.val <- X2$DOY Tmin.val <- X2$MinDT Tmax.val <- X2$MaxDT DOY.ul.val <- 120 T0.arr0 <- seq(3.5, 4, by = 0.1) S.pd0 <- NULL cand.res1 <- ADD2( S.pd = S.pd0, T0.arr = T0.arr0, Year1 = Year1.val, Time = Time.val, Year2 = Year2.val, DOY = DOY.val, Tmin = Tmin.val, Tmax = Tmax.val, DOY.ul = DOY.ul.val, fig.opt = TRUE, S.def=54, verbose = TRUE ) cand.res1 S0 <- cand.res1$S.arr r0 <- cand.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) # graphics.off()data(apricotFFD) data(BJDAT) X1 <- apricotFFD X2 <- BJDAT Year1.val <- X1$Year Time.val <- X1$Time Year2.val <- X2$Year DOY.val <- X2$DOY Tmin.val <- X2$MinDT Tmax.val <- X2$MaxDT DOY.ul.val <- 120 T0.arr0 <- seq(3.5, 4, by = 0.1) S.pd0 <- NULL cand.res1 <- ADD2( S.pd = S.pd0, T0.arr = T0.arr0, Year1 = Year1.val, Time = Time.val, Year2 = Year2.val, DOY = DOY.val, Tmin = Tmin.val, Tmax = Tmax.val, DOY.ul = DOY.ul.val, fig.opt = TRUE, S.def=54, verbose = TRUE ) cand.res1 S0 <- cand.res1$S.arr r0 <- cand.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) # graphics.off()
Estimates the starting date (, in day-of-year) and base temperature (,
in C) in the accumulated degree days (ADD) method using mean daily air temperatures
(Konno and Sugihara, 1986; Aono, 1993; Shi et al., 2017a, b).
ADD3( S.arr, T0.arr, Year1, Time, Year2, DOY, Temp, DOY.ul = 120, fig.opt = TRUE, verbose = TRUE )ADD3( S.arr, T0.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) |
T0.arr |
the candidate base temperatures (in |
Year1 |
the vector of the years in which a particular phenological event was recorded |
Time |
the vector of the occurrence 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) for which climate data exist |
Temp |
the mean daily air temperature data (in |
DOY.ul |
the upper limit of |
fig.opt |
an optional argument to draw the figures associated with the determination of the combination the starting date and base temperature, and a comparison between the predicted and observed occurrence times |
verbose |
an optional argument allowing users to suppress the 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 unique(Year2),
and the intersection of the two vectors of years will be kept. The unused years that have phenological
records but lack climate data will be showed in unused.years in the returned list.
The numerical value of DOY.ul should be greater than or equal to the maximum Time.
mAADD.mat |
a matrix consisting of the means of the annual accumulated degree days (AADD)
values from the combinations of |
RMSE.mat |
the matrix consisting of the RMSEs (in days) from different
combinations of |
AADD.arr |
the AADD values in different years
associated with the smallest value in |
Year |
The overlapping years between |
Time |
The observed occurrence times (day-of-year) in the overlapping years
between |
Time.pred |
the predicted occurrence times in different years |
S |
the determined starting date (day-of-year) |
T0 |
the determined base temperature (in |
AADD |
the expected AADD |
RMSE |
the smallest RMSE (in days) in |
unused.years |
the years that have phenological records but lack climate data |
The entire mean daily temperature data set for the spring of each year should be provided.
AADD is represented by the mean of AADD.arr in the output.
Peijian Shi [email protected], Zhenghong Chen [email protected], Jing Tan [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, 7889. 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(BJDAT) X1 <- apricotFFD X2 <- BJDAT 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(60, 70, by = 1) T0.arr0 <- seq(-2, 5, by = 1) RES1 <- ADD3( S.arr = S.arr0, 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, verbose = TRUE) RES1 RMSE.mat0 <- RES1$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, T0.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("Base temperature (", degree, "C)", sep = ""))) points( RES1$S, RES1$T0, cex = 1.5, pch = 16, col = 2 ) contour( S.arr0, T0.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) # graphics.off()data(apricotFFD) data(BJDAT) X1 <- apricotFFD X2 <- BJDAT 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(60, 70, by = 1) T0.arr0 <- seq(-2, 5, by = 1) RES1 <- ADD3( S.arr = S.arr0, 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, verbose = TRUE) RES1 RMSE.mat0 <- RES1$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, T0.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("Base temperature (", degree, "C)", sep = ""))) points( RES1$S, RES1$T0, cex = 1.5, pch = 16, col = 2 ) contour( S.arr0, T0.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) # graphics.off()
Estimates the starting date (, in day-of-year) and base temperature (,
in C) in the accumulated degree days (ADD) method using minimum and
maximum daily air temperatures (Konno and Sugihara, 1986; Aono, 1993; Shi et al., 2017a, b).
ADD4( S.arr, T0.arr, Year1, Time, Year2, DOY, Tmin, Tmax, DOY.ul = 120, fig.opt = TRUE, verbose = TRUE )ADD4( S.arr, T0.arr, Year1, Time, Year2, DOY, Tmin, Tmax, DOY.ul = 120, fig.opt = TRUE, verbose = TRUE )
S.arr |
the candidate starting dates for thermal accumulation (in day-of-year) |
T0.arr |
the candidate base temperatures (in |
Year1 |
the vector of the years in which a particular phenological event was recorded |
Time |
the vector of the occurrence 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) for which climate data exist |
Tmin |
the minimum daily air temperature data (in |
Tmax |
the maximum daily air temperature data (in |
DOY.ul |
the upper limit of |
fig.opt |
an optional argument to draw the figures associated with the determination of the combination the starting date and base temperature, and a comparison between the predicted and observed occurrence times |
verbose |
an optional argument allowing users to suppress the 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 unique(Year2),
and the intersection of the two vectors of years will be kept. The unused years that have phenological
records but lack climate data will be showed in unused.years in the returned list.
The numerical value of DOY.ul should be greater than or equal to the maximum Time.
mAADD.mat |
a matrix consisting of the means of the annual accumulated degree days (AADD)
values from the combinations of |
RMSE.mat |
the matrix consisting of the RMSEs (in days) from different
combinations of |
AADD.arr |
the AADD values in different years
associated with the smallest value in |
Year |
The overlapping years between |
Time |
The observed occurrence times (day-of-year) in the overlapping years
between |
Time.pred |
the predicted occurrence times in different years |
S |
the determined starting date (day-of-year) |
T0 |
the determined base temperature (in |
AADD |
the expected AADD |
RMSE |
the smallest RMSE (in days) in |
unused.years |
the years that have phenological records but lack climate data |
The entire mean daily temperature data set for the spring of each year should be provided.
AADD is represented by the mean of AADD.arr in the output.
Peijian Shi [email protected], Zhenghong Chen [email protected], Jing Tan [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, 7889. 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(BJDAT) X1 <- apricotFFD X2 <- BJDAT Year1.val <- X1$Year Time.val <- X1$Time Year2.val <- X2$Year DOY.val <- X2$DOY Tmin.val <- X2$MinDT Tmax.val <- X2$MaxDT DOY.ul.val <- 120 S.arr0 <- seq(63, 66, by = 1) T0.arr0 <- 3.8 RES2 <- ADD4( S.arr = S.arr0, T0.arr = T0.arr0, Year1 = Year1.val, Time = Time.val, Year2 = Year2.val, DOY = DOY.val, Tmin = Tmin.val, Tmax = Tmax.val, DOY.ul = DOY.ul.val, fig.opt = TRUE, verbose = TRUE) RES2 RESU2 <- ADD4( S.arr = 65, T0.arr = seq(2, 6, by = 1), Year1 = Year1.val, Time = Time.val, Year2 = Year2.val, DOY = DOY.val, Tmin = Tmin.val, Tmax = Tmax.val, DOY.ul = DOY.ul.val, fig.opt = TRUE, verbose = TRUE) RESU2 # graphics.off()data(apricotFFD) data(BJDAT) X1 <- apricotFFD X2 <- BJDAT Year1.val <- X1$Year Time.val <- X1$Time Year2.val <- X2$Year DOY.val <- X2$DOY Tmin.val <- X2$MinDT Tmax.val <- X2$MaxDT DOY.ul.val <- 120 S.arr0 <- seq(63, 66, by = 1) T0.arr0 <- 3.8 RES2 <- ADD4( S.arr = S.arr0, T0.arr = T0.arr0, Year1 = Year1.val, Time = Time.val, Year2 = Year2.val, DOY = DOY.val, Tmin = Tmin.val, Tmax = Tmax.val, DOY.ul = DOY.ul.val, fig.opt = TRUE, verbose = TRUE) RES2 RESU2 <- ADD4( S.arr = 65, T0.arr = seq(2, 6, by = 1), Year1 = Year1.val, Time = Time.val, Year2 = Year2.val, DOY = DOY.val, Tmin = Tmin.val, Tmax = Tmax.val, DOY.ul = DOY.ul.val, fig.opt = TRUE, verbose = TRUE) RESU2 # graphics.off()
Estimates the starting date (, in day-of-year) and the parameters of
a developmental rate model in the accumulated developmental progress (ADP)
method using mean daily air temperatures (Wagner et al., 1984; Shi et al., 2017a, b).
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 in which a particular phenological event was recorded |
Time |
the vector of the occurrence 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) for which climate data exist |
Temp |
the mean daily air temperature data (in |
DOY.ul |
the upper limit of |
fig.opt |
an optional argument to draw the figures associated with the temperature-dependent developmental rate curve, the mean daily temperatures versus years, and a comparison between the predicted and observed occurrence times |
control |
the list of control parameters for using the |
verbose |
an optional argument allowing users to suppress the printing of computation progress |
It is better not to set too many candidate starting dates, as doing so will be time-consuming. If expr
is selected as Arrhenius' equation, S.arr can be selected as the S obtained from the output of
the ADTS function. Here, expr can be other nonlinear temperature-dependent
developmental rate functions (see Shi et al. [2017b] for details). Further, 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 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 unique(Year2),
and the intersection of the two vectors of years will be kept. The unused years that have phenological
records but lack climate data will be showed in unused.years in the returned list.
The numerical value of DOY.ul should be greater than or equal to the maximum Time.
Let represent the temperature-dependent developmental rate, i.e.,
the reciprocal of the developmental
duration required for completing a particular phenological event, at a constant temperature.
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 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. Let represent the predicted
occurrence time of the th year. 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 and the estimates of candidate model parameters with the corresponding RMSEs |
Dev.accum |
the calculated annual accumulated developmental progresses in different years |
Year |
The overlapping years between |
Time |
The observed occurrence times (day-of-year) in the overlapping years
between |
Time.pred |
the predicted occurrence times in different years |
S |
the determined starting date (day-of-year) |
par |
the estimates 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 climate data |
The entire mean daily temperature data set for 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 calculated 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], Jing Tan [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, 7889. 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(BJDAT) X1 <- apricotFFD X2 <- BJDAT 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(BJDAT) X1 <- apricotFFD X2 <- BJDAT 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 the parameters of
a developmental rate model in the accumulated developmental progress (ADP)
method using minimum and maximum daily air temperatures (Wagner et al., 1984; Shi et al., 2017a, b).
ADP2( S.arr, expr, ini.val, Year1, Time, Year2, DOY, Tmin, Tmax, DOY.ul = 120, fig.opt = TRUE, control = list(), verbose = TRUE )ADP2( S.arr, expr, ini.val, Year1, Time, Year2, DOY, Tmin, Tmax, 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 in which a particular phenological event was recorded |
Time |
the vector of the occurrence 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) for which climate data exist |
Tmin |
the minimum daily air temperature data (in |
Tmax |
the maximum daily air temperature data (in |
DOY.ul |
the upper limit of |
fig.opt |
an optional argument to draw the figures associated with the temperature-dependent developmental rate curve, the mean daily temperatures versus years, and a comparison between the predicted and observed occurrence times |
control |
the list of control parameters for using the |
verbose |
an optional argument allowing users to suppress the printing of computation progress |
It is better not to set too many candidate starting dates, as doing so will be time-consuming. If expr
is selected as Arrhenius' equation, S.arr can be selected as the S obtained from the output of
the ADTS2 function. Here, expr can be other nonlinear temperature-dependent
developmental rate functions (see Shi et al. [2017b] for details). Further, 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 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 unique(Year2),
and the intersection of the two vectors of years will be kept. The unused years that have phenological
records but lack climate data will be showed in unused.years in the returned list.
The numerical value of DOY.ul should be greater than or equal to the maximum Time.
Let represent the temperature-dependent developmental rate, i.e.,
the reciprocal of the developmental
duration required for completing a particular phenological event, at a constant temperature.
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,
represents the estimated mean hourly temperature of the th hour of the th day of the th
year (in C or K), and represents the developmental rate (per hour) at ,
which is transferred to (per day) by dividing 24. This packages takes the method proposed
by Zohner et al. (2020) to estimate the mean hourly temperature for each of 24 hours:
where represents the th hour of a day, and and
represent the minimum and maximum temperatures of the day, respectively.
In theory, ,
i.e., the AADP values of different years are a constant 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. Let represent the predicted
occurrence time of the th year. 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, estimated mean daily temperature (= ( |
MAT |
a matrix consisting of the candidate starting dates and the estimates of candidate model parameters with the corresponding RMSEs |
Dev.accum |
the calculated annual accumulated developmental progresses in different years |
Year |
The overlapping years between |
Time |
The observed occurrence times (day-of-year) in the overlapping years
between |
Time.pred |
the predicted occurrence times in different years |
S |
the determined starting date (day-of-year) |
par |
the estimates 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 climate data |
The entire minimum and maximum daily temperature data set for 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 estimated mean daily air temperatures (= (Tmin + Tmax)/2)
from the starting date to the occurrence times,
and the fourth column of Rate saves the calculated developmental rates
corresponding to the estimated mean daily temperatures.
Peijian Shi [email protected], Zhenghong Chen [email protected], Jing Tan [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, 7889. 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
Zohner, C.M., Mo, L., Sebald, V., Renner, S.S. (2020) Leaf-out in northern ecotypes of wide-ranging
trees requires less spring warming, enhancing the risk of spring frost damage at cold limits.
Global Ecology and Biogeography 29, 10561072. doi:10.1111/geb.13088
data(apricotFFD) data(BJDAT) X1 <- apricotFFD X2 <- BJDAT Year1.val <- X1$Year Time.val <- X1$Time Year2.val <- X2$Year DOY.val <- X2$DOY Tmin.val <- X2$MinDT Tmax.val <- X2$MaxDT DOY.ul.val <- 120 S.arr0 <- 46 #### 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 ) ############################################################################## # The usage is similar to that of the "ADP" function. There is only a need to # replace "Temp = Temp.val" with "Tmin = Tmin.val, Tmax = Tmax.val" when using # the "ADP2" function.data(apricotFFD) data(BJDAT) X1 <- apricotFFD X2 <- BJDAT Year1.val <- X1$Year Time.val <- X1$Time Year2.val <- X2$Year DOY.val <- X2$DOY Tmin.val <- X2$MinDT Tmax.val <- X2$MaxDT DOY.ul.val <- 120 S.arr0 <- 46 #### 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 ) ############################################################################## # The usage is similar to that of the "ADP" function. There is only a need to # replace "Temp = Temp.val" with "Tmin = Tmin.val, Tmax = Tmax.val" when using # the "ADP2" function.
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, b).
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 in which a particular phenological event was recorded |
Time |
the vector of the occurrence 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) for which climate data exist |
Temp |
the mean daily air temperature data (in |
DOY.ul |
the upper limit of |
fig.opt |
an optional argument to draw the figures associated with the determination of the combination the starting date and activation free energy, and a comparison between the predicted and observed occurrence times |
verbose |
an optional argument allowing users to suppress the 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 unique(Year2),
and the intersection of the two vectors of years will be kept. The unused years that have phenological
records but lack climate data will be showed in unused.years in the returned list.
The numerical value of DOY.ul should be greater than or equal to the maximum Time.
mAADTS.mat |
a matrix consisting 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 overlapping years between |
Time |
The observed occurrence times (day-of-year) in the overlapping years
between |
Time.pred |
the predicted occurrence times in different years |
S |
the determined starting date (day-of-year) |
Ea |
the determined activation free energy value (in kcal |
AADD |
the expected AADTS |
RMSE |
the smallest RMSE (in days) in |
unused.years |
the years that have phenological records but lack climate data |
The entire mean daily temperature data set for 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], Jing Tan [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, 7889. 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(BJDAT) X1 <- apricotFFD X2 <- BJDAT 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(BJDAT) X1 <- apricotFFD X2 <- BJDAT 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()
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 minimum and maximum daily air temperatures
(Konno and Sugihara, 1986; Aono, 1993; Shi et al., 2017a, b).
ADTS2( S.arr, Ea.arr, Year1, Time, Year2, DOY, Tmin, Tmax, DOY.ul = 120, fig.opt = TRUE, verbose = TRUE )ADTS2( S.arr, Ea.arr, Year1, Time, Year2, DOY, Tmin, Tmax, 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 in which a particular phenological event was recorded |
Time |
the vector of the occurrence 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) for which climate data exist |
Tmin |
the minimum daily air temperature data (in |
Tmax |
the maximum daily air temperature data (in |
DOY.ul |
the upper limit of |
fig.opt |
an optional argument to draw the figures associated with the determination of the combination the starting date and activation free energy, and a comparison between the predicted and observed occurrence times |
verbose |
an optional argument allowing users to suppress the 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 unique(Year2),
and the intersection of the two vectors of years will be kept. The unused years that have phenological
records but lack climate data will be showed in unused.years in the returned list.
The numerical value of DOY.ul should be greater than or equal to the maximum Time.
mAADTS.mat |
a matrix consisting 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 overlapping years between |
Time |
The observed occurrence times (day-of-year) in the overlapping years
between |
Time.pred |
the predicted occurrence times in different years |
S |
the determined starting date (day-of-year) |
Ea |
the determined activation free energy value (in kcal |
AADD |
the expected AADTS |
RMSE |
the smallest RMSE (in days) in |
unused.years |
the years that have phenological records but lack climate data |
The entire minimum and maximum daily temperature data set for 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], Jing Tan [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, 7889. 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(BJDAT) X1 <- apricotFFD X2 <- BJDAT Year1.val <- X1$Year Time.val <- X1$Time Year2.val <- X2$Year DOY.val <- X2$DOY Tmin.val <- X2$MinDT Tmax.val <- X2$MaxDT DOY.ul.val <- 120 S.arr0 <- seq(45, 47, by = 1) Ea.arr0 <- seq(20, 24, by = 0.5) cand.res3 <- ADTS2( S.arr = S.arr0, Ea.arr = Ea.arr0, Year1 = Year1.val, Time = Time.val, Year2 = Year2.val, DOY = DOY.val, Tmin = Tmin.val, Tmax = Tmax.val, DOY.ul = DOY.ul.val, fig.opt = TRUE, verbose = TRUE) cand.res3 RMSE.mat0 <- cand.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( cand.res3$S, cand.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) # graphics.off()data(apricotFFD) data(BJDAT) X1 <- apricotFFD X2 <- BJDAT Year1.val <- X1$Year Time.val <- X1$Time Year2.val <- X2$Year DOY.val <- X2$DOY Tmin.val <- X2$MinDT Tmax.val <- X2$MaxDT DOY.ul.val <- 120 S.arr0 <- seq(45, 47, by = 1) Ea.arr0 <- seq(20, 24, by = 0.5) cand.res3 <- ADTS2( S.arr = S.arr0, Ea.arr = Ea.arr0, Year1 = Year1.val, Time = Time.val, Year2 = Year2.val, DOY = DOY.val, Tmin = Tmin.val, Tmax = Tmax.val, DOY.ul = DOY.ul.val, fig.opt = TRUE, verbose = TRUE) cand.res3 RMSE.mat0 <- cand.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( cand.res3$S, cand.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) # graphics.off()
The data consist of the first flowering date records of Prunus armeniaca
at the Summer Palace (395438 N,
116828 E, 50 m a.s.l.) in Beijing, China
between 1963 and 2010 with the exception of 19691971, and 19972002.
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.
Year saves the recording years; and
Time saves the 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, minimum, and maximum daily temperatures (in C)
of Beijing between 1952 and 2012.
Data source: China Meteorological Data Service Centre (https://data.cma.cn/en).
data(BJDAT)data(BJDAT)
In the data set, there are seven columns of vectors: Year, Month,
Day, DOY, MDT, MinDT, and MaxDT.
Year saves the recording years;
Month saves the recording months;
Day saves the recording days;
DOY saves the dates in day-of-year;
MDT saves the mean daily temperatures (in C) corresponding to DOY;
MinDT saves the minimum daily temperatures (in C) corresponding to DOY;
MaxDT saves the maximum 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(BJDAT) attach(BJDAT) 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(BJDAT) attach(BJDAT) 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, b).
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) for which 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, b), the starting date
(), 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 particular
phenological event in the th year, and represents the mean daily temperature of the
th day of the th year (in C). If ,
is defined to be zero. In theory, ,
i.e., the AADD values of different years are a constant. However, in practice, there is
a certain deviation of from that is estimated by
(i.e., the mean of the values). 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 occurrence times (day-of-year) in different years |
The entire mean daily temperature data set for the spring of each year should be provided.
Peijian Shi [email protected], Zhenghong Chen [email protected], Jing Tan [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, 7889. 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(BJDAT) X1 <- apricotFFD X2 <- BJDAT 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.5282 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]) ) RMSE1data(apricotFFD) data(BJDAT) X1 <- apricotFFD X2 <- BJDAT 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.5282 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 degree days method based on observed or predicted minimum and maximum daily air temperatures (Aono, 1993; Shi et al., 2017a, b).
predADD2(S, T0, AADD, Year2, DOY, Tmin, Tmax, DOY.ul = 120)predADD2(S, T0, AADD, Year2, DOY, Tmin, Tmax, 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) for which climate data exist |
Tmin |
the minimum daily air temperature data (in |
Tmax |
the maximum daily air temperature data (in |
DOY.ul |
the upper limit of |
In the accumulated degree days (ADD) method (Shi et al., 2017a, b), the starting date
(), 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 particular
phenological event in the th year, and represents the estimated mean hourly temperature of
the th hour of the th day of the th year (in C).
If , is defined to be zero. This packages takes the method proposed by
Zohner et al. (2020) to estimate the mean hourly temperature () for each of 24 hours:
where represents the th hour of a day, and and
represent the minimum and maximum temperatures of the day, respectively.
In theory, , i.e., the AADD values of different years are a constant.
However, in practice, there is a certain deviation of from that is estimated by
(i.e., the mean of the values). 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 occurrence times (day-of-year) in different years |
The entire minimum and maximum daily temperature data set for the spring of each year should be provided.
Peijian Shi [email protected], Zhenghong Chen [email protected], Jing Tan [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, 7889. 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
Zohner, C.M., Mo, L., Sebald, V., Renner, S.S. (2020) Leaf-out in northern ecotypes of wide-ranging
trees requires less spring warming, enhancing the risk of spring frost damage at cold limits.
Global Ecology and Biogeography 29, 10561072. doi:10.1111/geb.13088
data(apricotFFD) data(BJDAT) X1 <- apricotFFD X2 <- BJDAT Year1.val <- X1$Year Time.val <- X1$Time Year2.val <- X2$Year DOY.val <- X2$DOY Tmin.val <- X2$MinDT Tmax.val <- X2$MaxDT DOY.ul.val <- 120 S.val <- 65 T0.val <- 3.8 AADD.val <- 136.5805 cand.res2 <- predADD2( S = S.val, T0 = T0.val, AADD = AADD.val, Year2 = Year2.val, DOY = DOY.val, Tmin = Tmin.val, Tmax = Tmax.val, DOY.ul = DOY.ul.val ) cand.res2 ind1 <- cand.res2$Year %in% intersect(cand.res2$Year, Year1.val) ind2 <- Year1.val %in% intersect(cand.res2$Year, Year1.val) RMSE1 <- sqrt( sum((Time.val[ind2]-cand.res2$Time.pred[ind1])^2) / length(Time.val[ind2]) ) RMSE1data(apricotFFD) data(BJDAT) X1 <- apricotFFD X2 <- BJDAT Year1.val <- X1$Year Time.val <- X1$Time Year2.val <- X2$Year DOY.val <- X2$DOY Tmin.val <- X2$MinDT Tmax.val <- X2$MaxDT DOY.ul.val <- 120 S.val <- 65 T0.val <- 3.8 AADD.val <- 136.5805 cand.res2 <- predADD2( S = S.val, T0 = T0.val, AADD = AADD.val, Year2 = Year2.val, DOY = DOY.val, Tmin = Tmin.val, Tmax = Tmax.val, DOY.ul = DOY.ul.val ) cand.res2 ind1 <- cand.res2$Year %in% intersect(cand.res2$Year, Year1.val) ind2 <- Year1.val %in% intersect(cand.res2$Year, Year1.val) RMSE1 <- sqrt( sum((Time.val[ind2]-cand.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, b).
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) for which climate data exist |
Temp |
the mean daily air temperature data (in |
DOY.ul |
the upper limit of |
Organisms exhibiting phenological events in early spring often experience several cold days
during their development. In this case, Arrhenius' equation (Shi et al., 2017a, b,
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 maintain consistency between the units used for and , we need to
re-assign to be 1.987, making 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 occur 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 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 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 occurrence times (day-of-year) in different years |
The entire mean daily temperature data set for the spring of each year should be provided.
It should be noted 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], Jing Tan [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, 7889. 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(BJDAT) X1 <- apricotFFD X2 <- BJDAT 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.3787, 15.0431) 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]) ) RMSE3data(apricotFFD) data(BJDAT) X1 <- apricotFFD X2 <- BJDAT 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.3787, 15.0431) 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 developmental progress (ADP) method based on observed or predicted minimum and maximum daily air temperatures (Wagner et al., 1984; Shi et al., 2017a, b).
predADP2(S, expr, theta, Year2, DOY, Tmin, Tmax, DOY.ul = 120)predADP2(S, expr, theta, Year2, DOY, Tmin, Tmax, 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) for which climate data exist |
Tmin |
the minimum daily air temperature data (in |
Tmax |
the maximum daily air temperature data (in |
DOY.ul |
the upper limit of |
Organisms exhibiting phenological events in early spring often experience several cold days
during their development. In this case, Arrhenius' equation (Shi et al., 2017a, b,
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 maintain consistency between the units used for and , we need to
re-assign to be 1.987, making 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 occur 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. is the developmental rate (per hour), which is
transferred to (per day) by dividing 24. If the temperature-dependent developmental rate follows
Arrhenius' equation, the AADP of the th year is equal to
where represents the estimated mean hourly temperature of the th hour of the
th day of the th year (in K). This packages takes the method proposed by
Zohner et al. (2020) to estimate the mean hourly temperature () for each of 24 hours:
where represents the th hour of a day, and and
represent the minimum and maximum temperatures of the day, respectively.
In theory, ,
i.e., the AADP values of different years are a constant 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 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 occurrence times (day-of-year) in different years |
The entire minimum and maximum daily temperature data set for the spring of each year should be provided.
It should be noted that the unit of Tmin and Tmax 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], Jing Tan [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, 7889. 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
Zohner, C.M., Mo, L., Sebald, V., Renner, S.S. (2020) Leaf-out in northern ecotypes of wide-ranging
trees requires less spring warming, enhancing the risk of spring frost damage at cold limits.
Global Ecology and Biogeography 29, 10561072. doi:10.1111/geb.13088
data(apricotFFD) data(BJDAT) X1 <- apricotFFD X2 <- BJDAT Year1.val <- X1$Year Time.val <- X1$Time Year2.val <- X2$Year DOY.val <- X2$DOY Tmin.val <- X2$MinDT Tmax.val <- X2$MaxDT DOY.ul.val <- 120 S.val <- 46 # 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(8.220327, 22.185942) 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) cand.res6 <- predADP2( S = S.val, expr = Arrhenius.eqn, theta = P0, Year2 = Year2.val, DOY = DOY.val, Tmin = Tmin.val, Tmax = Tmax.val, DOY.ul = DOY.ul.val ) cand.res6 ind5 <- cand.res6$Year %in% intersect(cand.res6$Year, Year1.val) ind6 <- Year1.val %in% intersect(cand.res6$Year, Year1.val) RMSE3 <- sqrt( sum((Time.val[ind6]-cand.res6$Time.pred[ind5])^2) / length(Time.val[ind6]) ) RMSE3data(apricotFFD) data(BJDAT) X1 <- apricotFFD X2 <- BJDAT Year1.val <- X1$Year Time.val <- X1$Time Year2.val <- X2$Year DOY.val <- X2$DOY Tmin.val <- X2$MinDT Tmax.val <- X2$MaxDT DOY.ul.val <- 120 S.val <- 46 # 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(8.220327, 22.185942) 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) cand.res6 <- predADP2( S = S.val, expr = Arrhenius.eqn, theta = P0, Year2 = Year2.val, DOY = DOY.val, Tmin = Tmin.val, Tmax = Tmax.val, DOY.ul = DOY.ul.val ) cand.res6 ind5 <- cand.res6$Year %in% intersect(cand.res6$Year, Year1.val) ind6 <- Year1.val %in% intersect(cand.res6$Year, Year1.val) RMSE3 <- sqrt( sum((Time.val[ind6]-cand.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, b).
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) for which climate data exist |
Temp |
the mean daily air temperature data (in |
DOY.ul |
the upper limit of |
Organisms exhibiting phenological events in early spring often experience several cold days
during their development. In this case, Arrhenius' equation (Shi et al., 2017a, b,
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 maintain consistence between the units used for and , we need to
re-assign to be 1.987, making 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 that is estimated by
(i.e., the mean of the values). 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 occurrence times (day-of-year) in different years |
The entire mean daily temperature data set for the spring of each year should be provided.
It should be noted that the unit of Temp in Arguments is C, not K.
Peijian Shi [email protected], Zhenghong Chen [email protected], Jing Tan [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, 7889. 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(BJDAT) X1 <- apricotFFD X2 <- BJDAT 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 <- 15 AADTS.val <- 8.5879 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]) ) RMSE2data(apricotFFD) data(BJDAT) X1 <- apricotFFD X2 <- BJDAT 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 <- 15 AADTS.val <- 8.5879 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 using the accumulated days transferred to a standardized temperature (ADTS) method based on observed or predicted minimum and maximum daily air temperatures (Konno and Sugihara, 1986; Aono, 1993; Shi et al., 2017a, b).
predADTS2(S, Ea, AADTS, Year2, DOY, Tmin, Tmax, DOY.ul = 120)predADTS2(S, Ea, AADTS, Year2, DOY, Tmin, Tmax, 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) for which climate data exist |
Tmin |
the minimum daily air temperature data (in |
Tmax |
the maximum daily air temperature data (in |
DOY.ul |
the upper limit of |
Organisms exhibiting phenological events in early spring often experience several cold days
during their development. In this case, Arrhenius' equation (Shi et al., 2017a, b,
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 maintain consistence between the units used for and , we need to
re-assign to be 1.987, making 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 estimated mean hourly temperature of
the th hour of the th day of the th year (in K). This packages takes the method proposed by
Zohner et al. (2020) to estimate the mean hourly temperature () for each of 24 hours:
where represents the th hour of a day, and and
represent the minimum and maximum temperatures of the day, respectively.
In theory, ,
i.e., the AADTS values of different years are a constant. However, in practice, there is
a certain deviation of from that is estimated by
(i.e., the mean of the values). 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 occurrence times (day-of-year) in different years |
The entire minimum and maximum daily temperature data set for the spring of each year should be provided.
It should be noted that the unit of Tmin and Tmax in Arguments is C, not K.
Peijian Shi [email protected], Zhenghong Chen [email protected], Jing Tan [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, 7889. 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
Zohner, C.M., Mo, L., Sebald, V., Renner, S.S. (2020) Leaf-out in northern ecotypes of wide-ranging
trees requires less spring warming, enhancing the risk of spring frost damage at cold limits.
Global Ecology and Biogeography 29, 10561072. doi:10.1111/geb.13088
data(apricotFFD) data(BJDAT) X1 <- apricotFFD X2 <- BJDAT Year1.val <- X1$Year Time.val <- X1$Time Year2.val <- X2$Year DOY.val <- X2$DOY Tmin.val <- X2$MinDT Tmax.val <- X2$MaxD DOY.ul.val <- 120 S.val <- 46 Ea.val <- 22.3 AADTS.val <- 4.911035 cand.res4 <- predADTS2( S = S.val, Ea = Ea.val, AADTS = AADTS.val, Year2 = Year2.val, DOY = DOY.val, Tmin = Tmin.val, Tmax = Tmax.val, DOY.ul = DOY.ul.val ) cand.res4 ind3 <- cand.res4$Year %in% intersect(cand.res4$Year, Year1.val) ind4 <- Year1.val %in% intersect(cand.res4$Year, Year1.val) RMSE2 <- sqrt( sum((Time.val[ind4]-cand.res4$Time.pred[ind3])^2) / length(Time.val[ind4]) ) RMSE2data(apricotFFD) data(BJDAT) X1 <- apricotFFD X2 <- BJDAT Year1.val <- X1$Year Time.val <- X1$Time Year2.val <- X2$Year DOY.val <- X2$DOY Tmin.val <- X2$MinDT Tmax.val <- X2$MaxD DOY.ul.val <- 120 S.val <- 46 Ea.val <- 22.3 AADTS.val <- 4.911035 cand.res4 <- predADTS2( S = S.val, Ea = Ea.val, AADTS = AADTS.val, Year2 = Year2.val, DOY = DOY.val, Tmin = Tmin.val, Tmax = Tmax.val, DOY.ul = DOY.ul.val ) cand.res4 ind3 <- cand.res4$Year %in% intersect(cand.res4$Year, Year1.val) ind4 <- Year1.val %in% intersect(cand.res4$Year, Year1.val) RMSE2 <- sqrt( sum((Time.val[ind4]-cand.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: | 1.1.5 |
| Date: | 2025-06-20 |
| 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("Jing"), family="Tan", 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], Jing Tan [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: | 2025-06-20 12:55:50 UTC; PEIJIAN SHI |
| Repository: | https://cran.r-universe.dev |
| Date/Publication: | 2025-06-20 13:30:02 UTC |
| RemoteUrl: | https://github.com/cran/spphpr |
| RemoteRef: | HEAD |
| RemoteSha: | b58fb16ec9d035c3ac63ca2832c11a9d88b2789b |
Index of help topics:
ADD Function for Implementing the Accumulated
Degree Days Method Using Mean Daily
Temperatures
ADD2 Function for Implementing the Accumulated
Degree Days Method Using Minimum and Maximum
Daily Temperatures
ADD3 Function for Implementing the Accumulated
Degree Days Method Using Mean Daily
Temperatures for the Combinations of the
Starting Date and Base Temperature
ADD4 Function for Implementing the Accumulated
Degree Days Method Using Minimum and Maximum
Daily Temperatures for the Combinations of the
Starting Date and Base Temperature
ADP Function for Implementing the Accumulated
Developmental Progress Method Using Mean Daily
Temperatures
ADP2 Function for Implementing the Accumulated
Developmental Progress Method Using Minimum and
Maximum Daily Temperatures
ADTS Function for Implementing the Accumulated Days
Transferred to a Standardized Temperature
Method Using Mean Daily Temperatures
ADTS2 Function for Implementing the Accumulated Days
Transferred to a Standardized Temperature
Method Using Minimum and Maximum Daily
Temperatures
apricotFFD First flowering date records of _Prunus
armeniaca_
BJDAT Daily Air Temperature Data of Beijing from 1952
to 2012.
predADD Prediction Function of the Accumulated Degree
Days Method Using Mean Daily Temperatures
predADD2 Prediction Function of the Accumulated Degree
Days Method Using Minimum and Maximum Daily
Temperatures
predADP Prediction Function of the Accumulated
Developmental Progress Method Using Mean Daily
Temperatures
predADP2 Prediction Function of the Accumulated
Developmental Progress Method Using Minimum and
Maximum Daily Temperatures
predADTS Prediction Function of the Accumulated Days
Transferred to a Standardized Temperature
Method Using Mean Daily Temperatures
predADTS2 Prediction Function of the Accumulated Days
Transferred to a Standardized Temperature
Method Using Minimum and Maximum Daily
Temperatures
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, Di Tang, Yunfeng Yang, Mei Xiao, Lin Wang, and Wangxiang Zhang for their valuable help during the development of this package.
Peijian Shi [aut, cre], Zhenghong Chen [aut], Jing Tan [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, 7889. 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 matches 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], Jing Tan [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, 7889. 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(BJDAT) X2 <- BJDAT DOY2 <- toDOY(X2$Year, X2$Month, X2$Day) # cbind(X2$DOY, DOY2)data(BJDAT) X2 <- BJDAT DOY2 <- toDOY(X2$Year, X2$Month, X2$Day) # cbind(X2$DOY, DOY2)