Title: | Insect Phenology Model Evaluation Based on Daily Temperatures |
---|---|
Description: | Generates predicted stage change days for an insect, based on daily temperatures and development rate parameters, as developed by Pollard (2014) <http://mural.maynoothuniversity.ie/view/ethesisauthor/Pollard=3ACiaran_P=2E=3A=3A.html>. A few example datasets are included and implemented for P. vulgatissima, the blue willow beetle, but the approach can be readily applied to other species that display similar behaviour. |
Authors: | Rafael de Andrade Moral [aut, cre], Rowan Fealy [aut] |
Maintainer: | Rafael de Andrade Moral <[email protected]> |
License: | GPL (>= 2) |
Version: | 1.0 |
Built: | 2024-12-01 08:00:12 UTC |
Source: | CRAN |
Generates predicted stage change days for an insect, based on daily temperatures and development rate parameters, as developed by Pollard (2014) <http://mural.maynoothuniversity.ie/view/ethesisauthor/Pollard=3ACiaran_P=2E=3A=3A.html>. A few example datasets are included and implemented for P. vulgatissima, the blue willow beetle, but the approach can be readily applied to other species that display similar behaviour.
The DESCRIPTION file:
Package: | phenModel |
Type: | Package |
Title: | Insect Phenology Model Evaluation Based on Daily Temperatures |
Version: | 1.0 |
Date: | 2019-08-01 |
Authors@R: | c(person("Rafael", "de Andrade Moral", role = c("aut", "cre"), email = "[email protected]"), person("Rowan", "Fealy", role = "aut")) |
Author: | Rafael de Andrade Moral [aut, cre], Rowan Fealy [aut] |
Maintainer: | Rafael de Andrade Moral <[email protected]> |
Depends: | R (>= 3.0.0), ggplot2, dplyr, reshape, grid |
Description: | Generates predicted stage change days for an insect, based on daily temperatures and development rate parameters, as developed by Pollard (2014) <http://mural.maynoothuniversity.ie/view/ethesisauthor/Pollard=3ACiaran_P=2E=3A=3A.html>. A few example datasets are included and implemented for P. vulgatissima, the blue willow beetle, but the approach can be readily applied to other species that display similar behaviour. |
License: | GPL (>= 2) |
NeedsCompilation: | no |
Packaged: | 2019-08-01 12:35:04 UTC; rafael |
Repository: | CRAN |
Date/Publication: | 2019-08-02 10:40:02 UTC |
Index of help topics:
assign_observed_data Observed Data Preparation bp_maxmin Internal functions to used to evaluate a phenology model and plot the results casement9596 Casement 1995-1996 Data cdl_check Plots for Checking Sensitivity to CDL cum_dev_rate Cumulative Development Rates get_cycle Obtain Yearly Cycles get_total_info Compute Day Length, Mean Temperature, Thermal Units, and Cumulative Chill Days phenModel-package Insect Phenology Model Evaluation Based on Daily Temperatures phen_model Phenology Model Evaluation phen_model_forecast Multi-Year Forecast Based on the Phenology Model phen_model_gen2 Phenology Model Evaluation for Further Generations plot_phen_forecast Plot Phenology Model Multi-Year Forecast plot_phen_model Plot Phenology Model Evaluations pvulg_budburst_parameters Estimated Parameters for the Exponential Decay Model for Budburst pvulg_lactin_parameters Estimated Parameters for the Lactin Model for P. Vulgatissima pvulg_weibull_parameters Estimated Parameters for the Weibull Model for P. Vulgatissima sensitivity Sensitivity Analysis for Evaluated Phenology Model valentia Valentia Data
Rafael de Andrade Moral [aut, cre], Rowan Fealy [aut]
Maintainer: Rafael de Andrade Moral <[email protected]>
Pollard C.P., Griffin C.T., Moral R.A., Duffy C., Chuche J., Gaffney M.T., Fealy R. (submitted) phenModel: a temperature-dependent phenology model for the blue willow beetle, Phratora vulgatissima.
Prepares observed data for plotting with model evaluation.
assign_observed_data(obj, eggs = NA, larvae = NA, pupae = NA, adults)
assign_observed_data(obj, eggs = NA, larvae = NA, pupae = NA, adults)
obj |
an object generated from |
eggs |
vector of days in which eggs were observed |
larvae |
vector of days in which larvae were observed |
pupae |
vector of days in which pupae were observed |
adults |
vector of days in which adults were observed |
Reads in the data and returns an object ready to be passed to plot_phen_model
for plotting. Uses a simple probability checking to determine whether the observations for the adults category belong to the post-diapause, ovipositing or adult emergence stage, based on normal distributions.
Returns a data.frame
with five columns, one for each stage (post-diapause, eggs, larvae, pupae and adults).
Rafael de Andrade Moral ([email protected]) and Rowan Fealy
data(casement9596) casement1995 <- data.frame(casement9596, with(casement9596, get_total_info(Tmax, Tmin, Tbase = 7, Lat, day))) ## loading fitted parameters data(pvulg_budburst_parameters) data(pvulg_weibull_parameters) data(pvulg_lactin_parameters) ## evaluating model quantiles_seq <- seq(.001, .95, .001) phen95 <- phen_model(Tmean = "Tmean", thermal_units = "thermal_units", chill_days = "chill_days", day_length = "day_length", bud_pars = pvulg_budburst_parameters, weib_pars = pvulg_weibull_parameters, lactin_pars = pvulg_lactin_parameters, max_day_length = 14.92, pop_quantiles = quantiles_seq, data = casement1995) phen95_gen2 <- phen_model_gen2(Tmean = "Tmean", day_length = "day_length", bud_pars = pvulg_budburst_parameters, weib_pars = pvulg_weibull_parameters, lactin_pars = pvulg_lactin_parameters, sex_mat_day = phen95["0.05","sexual_maturation_day"], pop_quantiles = .05, data = casement1995) ## adding observed points made_up_data <- assign_observed_data(obj = phen95, eggs = c(182,184,204,227,233,242), larvae = c(204,227,233,242,249), adults = c(204,212,220,221,222,224,227,233,242,269,283,298, 305,310,311,312,313,314,315,316,317,318, 319,320,321,322,323,334,325,326,327,328, 329,330,331,332)) plot_phen_model(obj = phen95, obj_gen2 = phen95_gen2, observed_data = made_up_data)
data(casement9596) casement1995 <- data.frame(casement9596, with(casement9596, get_total_info(Tmax, Tmin, Tbase = 7, Lat, day))) ## loading fitted parameters data(pvulg_budburst_parameters) data(pvulg_weibull_parameters) data(pvulg_lactin_parameters) ## evaluating model quantiles_seq <- seq(.001, .95, .001) phen95 <- phen_model(Tmean = "Tmean", thermal_units = "thermal_units", chill_days = "chill_days", day_length = "day_length", bud_pars = pvulg_budburst_parameters, weib_pars = pvulg_weibull_parameters, lactin_pars = pvulg_lactin_parameters, max_day_length = 14.92, pop_quantiles = quantiles_seq, data = casement1995) phen95_gen2 <- phen_model_gen2(Tmean = "Tmean", day_length = "day_length", bud_pars = pvulg_budburst_parameters, weib_pars = pvulg_weibull_parameters, lactin_pars = pvulg_lactin_parameters, sex_mat_day = phen95["0.05","sexual_maturation_day"], pop_quantiles = .05, data = casement1995) ## adding observed points made_up_data <- assign_observed_data(obj = phen95, eggs = c(182,184,204,227,233,242), larvae = c(204,227,233,242,249), adults = c(204,212,220,221,222,224,227,233,242,269,283,298, 305,310,311,312,313,314,315,316,317,318, 319,320,321,322,323,334,325,326,327,328, 329,330,331,332)) plot_phen_model(obj = phen95, obj_gen2 = phen95_gen2, observed_data = made_up_data)
Internal functions used to evaluate a phenology model and plot the results
Rafael A. Moral <[email protected]> and Rowan Fealy
Daily minimum and maximum temperature data obtained at the Casement Aerodrome weather station for the period of 1st November 1995 to 31st October 1996.
data("casement9596")
data("casement9596")
A data frame with 366 observations on the following 7 variables.
Year
a numeric vector
Month
a numeric vector
Day
a numeric vector
Lat
a numeric vector
Tmin
a numeric vector
Tmax
a numeric vector
day
a numeric vector
The data was obtained from the Irish National Meteorological Agency (Met Éireann).
https://www.met.ie/climate/available-data/historical-data
data(casement9596) casement1995 <- data.frame(casement9596, with(casement9596, get_total_info(Tmax, Tmin, Tbase = 7, Lat, day))) ## evaluating model quantiles_seq <- seq(.001, .95, .001) ## loading fitted parameters data(pvulg_budburst_parameters) data(pvulg_weibull_parameters) data(pvulg_lactin_parameters) phen95 <- phen_model(Tmean = "Tmean", thermal_units = "thermal_units", chill_days = "chill_days", day_length = "day_length", bud_pars = pvulg_budburst_parameters, weib_pars = pvulg_weibull_parameters, lactin_pars = pvulg_lactin_parameters, max_day_length = 14.92, pop_quantiles = quantiles_seq, data = casement1995) phen95_gen2 <- phen_model_gen2(Tmean = "Tmean", day_length = "day_length", bud_pars = pvulg_budburst_parameters, weib_pars = pvulg_weibull_parameters, lactin_pars = pvulg_lactin_parameters, sex_mat_day = phen95["0.05","sexual_maturation_day"], pop_quantiles = .05, data = casement1995) plot_phen_model(obj = phen95, obj_gen2 = phen95_gen2)
data(casement9596) casement1995 <- data.frame(casement9596, with(casement9596, get_total_info(Tmax, Tmin, Tbase = 7, Lat, day))) ## evaluating model quantiles_seq <- seq(.001, .95, .001) ## loading fitted parameters data(pvulg_budburst_parameters) data(pvulg_weibull_parameters) data(pvulg_lactin_parameters) phen95 <- phen_model(Tmean = "Tmean", thermal_units = "thermal_units", chill_days = "chill_days", day_length = "day_length", bud_pars = pvulg_budburst_parameters, weib_pars = pvulg_weibull_parameters, lactin_pars = pvulg_lactin_parameters, max_day_length = 14.92, pop_quantiles = quantiles_seq, data = casement1995) phen95_gen2 <- phen_model_gen2(Tmean = "Tmean", day_length = "day_length", bud_pars = pvulg_budburst_parameters, weib_pars = pvulg_weibull_parameters, lactin_pars = pvulg_lactin_parameters, sex_mat_day = phen95["0.05","sexual_maturation_day"], pop_quantiles = .05, data = casement1995) plot_phen_model(obj = phen95, obj_gen2 = phen95_gen2)
Produces plots based on sensitivity analysis for the critical day length threshold.
cdl_check(cdl, quantiles, max_day_length)
cdl_check(cdl, quantiles, max_day_length)
cdl |
a vector with the CDL thersholds calculated by |
quantiles |
the quantiles corresponding to each value from |
max_day_length |
the maximum day length set when running |
A ggplot
object.
Rafael de Andrade Moral ([email protected]) and Rowan Fealy
data(casement9596) casement1995 <- data.frame(casement9596, with(casement9596, get_total_info(Tmax, Tmin, Tbase = 7, Lat, day))) data(pvulg_budburst_parameters) data(pvulg_weibull_parameters) data(pvulg_lactin_parameters) test_quantiles <- c(.01,.05,.1,.25,.5,.75,.9,.95,.99) cdl_thresholds <- NULL for(q in test_quantiles) { sens_casement_cdl <- sensitivity(Tmax = casement9596$Tmax, Tmin = casement9596$Tmin, Tbase = 7, lat = casement9596$Lat, day = casement9596$day, bud_pars = pvulg_budburst_parameters, weib_pars = pvulg_weibull_parameters, lactin_pars = pvulg_lactin_parameters, max_day_length = 14.92, pop_quantile = q, data = casement9596, study_type = "cdl", percent_variation = 1, resolution = 20) # increase resolution for better visualisation cdl_thresholds <- c(cdl_thresholds, summary_sensitivity(sens_casement_cdl)[1]) } names(cdl_thresholds) <- paste(test_quantiles) cdl_thresholds cdl_check(cdl = cdl_thresholds, quantiles = test_quantiles, max_day_length = 14.92) + ggtitle("CDL sensitivity")
data(casement9596) casement1995 <- data.frame(casement9596, with(casement9596, get_total_info(Tmax, Tmin, Tbase = 7, Lat, day))) data(pvulg_budburst_parameters) data(pvulg_weibull_parameters) data(pvulg_lactin_parameters) test_quantiles <- c(.01,.05,.1,.25,.5,.75,.9,.95,.99) cdl_thresholds <- NULL for(q in test_quantiles) { sens_casement_cdl <- sensitivity(Tmax = casement9596$Tmax, Tmin = casement9596$Tmin, Tbase = 7, lat = casement9596$Lat, day = casement9596$day, bud_pars = pvulg_budburst_parameters, weib_pars = pvulg_weibull_parameters, lactin_pars = pvulg_lactin_parameters, max_day_length = 14.92, pop_quantile = q, data = casement9596, study_type = "cdl", percent_variation = 1, resolution = 20) # increase resolution for better visualisation cdl_thresholds <- c(cdl_thresholds, summary_sensitivity(sens_casement_cdl)[1]) } names(cdl_thresholds) <- paste(test_quantiles) cdl_thresholds cdl_check(cdl = cdl_thresholds, quantiles = test_quantiles, max_day_length = 14.92) + ggtitle("CDL sensitivity")
Returns the cumulative development rates calculated when the phenology model is being evaluated.
cum_dev_rate(Tmean, thermal_units, chill_days, day_length, bud_pars, weib_pars, lactin_pars, max_day_length, pop_quantiles = 0.5, data)
cum_dev_rate(Tmean, thermal_units, chill_days, day_length, bud_pars, weib_pars, lactin_pars, max_day_length, pop_quantiles = 0.5, data)
Tmean |
name of the column in the data representing the mean temperature |
thermal_units |
name of the column in the data representing the thermal units |
chill_days |
name of the column in the data representing the number of chill days |
day_length |
name of the column in the data representing the day length |
bud_pars |
vector of parameters for the budburst model |
weib_pars |
matrix of parameters for the Weibull model for each developmental stage |
lactin_pars |
matrix of parameters for the lactin model for each developmental stage |
max_day_length |
critical day length threshold |
pop_quantiles |
quantile of the population to be evaluated by the phenology model |
data |
a |
Returns the data with an appended column representing the cumulative development rates evaluated by the model.
Rafael de Andrade Moral ([email protected]) and Rowan Fealy
data(casement9596) casement1995 <- data.frame(casement9596, with(casement9596, get_total_info(Tmax, Tmin, Tbase = 7, Lat, day))) ## loading fitted parameters data(pvulg_budburst_parameters) data(pvulg_weibull_parameters) data(pvulg_lactin_parameters) casement1995 <- cum_dev_rate(Tmean = "Tmean", thermal_units = "thermal_units", chill_days = "chill_days", day_length = "day_length", bud_pars = pvulg_budburst_parameters, weib_pars = pvulg_weibull_parameters, lactin_pars = pvulg_lactin_parameters, max_day_length = 14.92, data = casement1995)
data(casement9596) casement1995 <- data.frame(casement9596, with(casement9596, get_total_info(Tmax, Tmin, Tbase = 7, Lat, day))) ## loading fitted parameters data(pvulg_budburst_parameters) data(pvulg_weibull_parameters) data(pvulg_lactin_parameters) casement1995 <- cum_dev_rate(Tmean = "Tmean", thermal_units = "thermal_units", chill_days = "chill_days", day_length = "day_length", bud_pars = pvulg_budburst_parameters, weib_pars = pvulg_weibull_parameters, lactin_pars = pvulg_lactin_parameters, max_day_length = 14.92, data = casement1995)
Given a data.frame
with columns representing days and months, returns a vector of indices representing which cycle each row corresponds to.
get_cycle(data, day, month, day.end, month.end)
get_cycle(data, day, month, day.end, month.end)
data |
a |
day |
name of the column representing the days |
month |
name of the column representing the months |
day.end |
which day determines the end of a cycle? |
month.end |
which month determines the end of a cycle? |
A vector of integers.
Rafael de Andrade Moral ([email protected]) and Rowan Fealy
data(valentia) # cycle ends on 31st of October valentia$cycle <- get_cycle(data = valentia, day = "day", month = "month", day.end = 31, month.end = 10)
data(valentia) # cycle ends on 31st of October valentia$cycle <- get_cycle(data = valentia, day = "day", month = "month", day.end = 31, month.end = 10)
Computes daily day length, mean temperature, thermal units and cumulative number of chill days for a dataset.
get_total_info(Tmax, Tmin, Tbase, lat, day)
get_total_info(Tmax, Tmin, Tbase, lat, day)
Tmax |
a vector of daily maximum temperatures |
Tmin |
a vector of daily minimum temperatures |
Tbase |
the base temperature used to define a chill day |
lat |
the latitude |
day |
day of the year (vector) |
Implements the method by Forsythe et al. (1995) to calculate the day length, and the single-sine degree-day method to compute the thermal units.
Returns a data.frame
with the day lengths, mean temperatures, thermal units and cumulative number of chill days.
Rafael de Andrade Moral ([email protected]) and Rowan Fealy
Cannell, M.G.R., Smith, R.I. (1983) Thermal time, chill days and prediction of budburst in Picea sitchensis. Journal of Applied Ecology, 20(3), 951–963.
Forsythe et al. (1995) A model comparison for daylength as a function of latitude and day of the year. Ecological Modeling 80:87-95.
data(casement9596) with(casement9596, get_total_info(Tmax, Tmin, Tbase = 7, Lat, day))
data(casement9596) with(casement9596, get_total_info(Tmax, Tmin, Tbase = 7, Lat, day))
Evaluates the phenology model for specified population quantiles, based on daily temperatures.
phen_model(Tmean, thermal_units, chill_days, day_length, bud_pars, weib_pars, lactin_pars, max_day_length, pop_quantiles = c(0.05, 0.5, 0.95), print.l = FALSE, save.l = FALSE, data)
phen_model(Tmean, thermal_units, chill_days, day_length, bud_pars, weib_pars, lactin_pars, max_day_length, pop_quantiles = c(0.05, 0.5, 0.95), print.l = FALSE, save.l = FALSE, data)
Tmean |
name of the column in the data representing the mean temperature |
thermal_units |
name of the column in the data representing the thermal units |
chill_days |
name of the column in the data representing the number of chill days |
day_length |
name of the column in the data representing the day length |
bud_pars |
vector of parameters for the budburst model |
weib_pars |
matrix of parameters for the Weibull model for each developmental stage |
lactin_pars |
matrix of parameters for the lactin model for each developmental stage |
max_day_length |
critical day length threshold |
pop_quantiles |
vector of quantiles of the population to be evaluated by the phenology model |
print.l |
logical. If |
save.l |
logical. If |
data |
a |
As inputs, the model requires site latitude and daily minimum and maximum temperatures from the 1st November of the preceding year. Development, quantified by a temperature dependent development rate model defined for each life cycle stage, is initialised in the model following the simulated date of budburst, a biofix dependent on the accumulation of required thermal and chilling days from the 1st November of the preceding year, described below. Once budburst is simulated to have occurred, post-diapause pre-oviposition development commences. Following completion of the post-diapause pre-oviposition stage, the first day of egg-lay is returned for adult females emerging from overwintering. Oviposition period stage advancement occurs when the required development for this life cycle stage has been completed. Egg, larval and pupal development stages are then initiated sequentially. Following completion of the pupal development stage, the emerging adults enter a sexual maturation or post-eclosion pre-oviposition period. This life-cycle stage is hypothesised to be sensitive to a diapause-inducing stimulus - photoperiod (Tauber et al., 1986; Danks, 1987; Dalin, 2011; Hodek 2012; Pollard, 2014) - defined in the model as a critical day length (CDL) threshold. New generation adults that finish sexual maturation after the critical day length (CDL) enter into a state of reproductive diapause. P. vulgatissima adults that complete development prior to the CDL threshold can begin ovipositing to initiate subsequent generations.
A data.frame
containing model evaluations for each life cycle (columns) and population quantile (rows).
Rafael de Andrade Moral ([email protected]) and Rowan Fealy
Dalin P. (2011) Diapause induction and termination in a commonly univoltine leaf beetle (Phratora vulgatissima). Insect Science, 18, 443-450. doi:10.1111/j.1744-7917.2011.01417.x
Danks, H.V. (1987) Insect dormancy: an ecological perspective 1st ed. H. V. Danks, ed., Biological Survey of Canada (Terrestrial Artropods) (Ottawa).
Hodek, I. (2012) Adult diapause in Coleoptera. Psyche, 2012, 1–10.
Tauber M.J., Tauber C.A. and Masaki S. (1986) Seasonal adaptations of insects. Oxford University Press, New York, USA
Pollard, C. (2014) A Temperature-Dependent Development Model for Willow Beetle Species (Coleoptera: Chrysomelidae) in Ireland: Simulation of Phenology/Voltinism in Response to Climate Change. Unpublished PhD thesis, submitted to the National University of Ireland Maynooth, Maynooth, 1-373.
Pollard C.P., Griffin C.T., Moral R.A., Duffy C., Chuche J., Gaffney M.T., Fealy R. (submitted) phenModel: a temperature-dependent phenology model for the blue willow beetle, Phratora vulgatissima.
data(casement9596) casement1995 <- data.frame(casement9596, with(casement9596, get_total_info(Tmax, Tmin, Tbase = 7, Lat, day))) data(pvulg_budburst_parameters) data(pvulg_weibull_parameters) data(pvulg_lactin_parameters) phen_model(Tmean = "Tmean", thermal_units = "thermal_units", chill_days = "chill_days", day_length = "day_length", bud_pars = pvulg_budburst_parameters, weib_pars = pvulg_weibull_parameters, lactin_pars = pvulg_lactin_parameters, max_day_length = 14.92, data = casement1995)
data(casement9596) casement1995 <- data.frame(casement9596, with(casement9596, get_total_info(Tmax, Tmin, Tbase = 7, Lat, day))) data(pvulg_budburst_parameters) data(pvulg_weibull_parameters) data(pvulg_lactin_parameters) phen_model(Tmean = "Tmean", thermal_units = "thermal_units", chill_days = "chill_days", day_length = "day_length", bud_pars = pvulg_budburst_parameters, weib_pars = pvulg_weibull_parameters, lactin_pars = pvulg_lactin_parameters, max_day_length = 14.92, data = casement1995)
A forecast based on the phenology model for multiple years, based on daily temperatures.
phen_model_forecast(Tmean, thermal_units, chill_days, day_length, bud_pars, weib_pars, lactin_pars, max_day_length = 14.92, pop_quantile, year, data)
phen_model_forecast(Tmean, thermal_units, chill_days, day_length, bud_pars, weib_pars, lactin_pars, max_day_length = 14.92, pop_quantile, year, data)
Tmean |
name of the column in the data representing the mean temperature |
thermal_units |
name of the column in the data representing the thermal units |
chill_days |
name of the column in the data representing the number of chill days |
day_length |
name of the column in the data representing the day length |
bud_pars |
vector of parameters for the budburst model |
weib_pars |
matrix of parameters for the Weibull model for each developmental stage |
lactin_pars |
matrix of parameters for the lactin model for each developmental stage |
max_day_length |
critical day length threshold |
pop_quantile |
quantile of the population to be evaluated by the phenology model |
year |
a vector of indices representing each yearly cycle (usually the output from |
data |
a |
See phen_model
A data.frame
with the number of rows equal to the total number of yearly cycles, and each column representing the developmental stage of the insect.
Rafael de Andrade Moral ([email protected]) and Rowan Fealy
data(valentia) valentia$cycle <- get_cycle(data = valentia, day = "day", month = "month", day.end = 31, month.end = 10) valentia_split <- split(valentia, valentia$cycle) valentia_split <- lapply(valentia_split, function(x) data.frame(x, with(x, get_total_info(Tmax = x$max_temp, Tmin = x$min_temp, Tbase = 7, lat = x$Lat, x$day_of_year)))) valentia <- do.call("rbind", valentia_split) data(pvulg_budburst_parameters) data(pvulg_weibull_parameters) data(pvulg_lactin_parameters) phen_forecast <- phen_model_forecast(Tmean = "Tmean", thermal_units = "thermal_units", chill_days = "chill_days", day_length = "day_length", bud_pars = pvulg_budburst_parameters, weib_pars = pvulg_weibull_parameters, lactin_pars = pvulg_lactin_parameters, pop_quantile = .5, year = "cycle", data = valentia)
data(valentia) valentia$cycle <- get_cycle(data = valentia, day = "day", month = "month", day.end = 31, month.end = 10) valentia_split <- split(valentia, valentia$cycle) valentia_split <- lapply(valentia_split, function(x) data.frame(x, with(x, get_total_info(Tmax = x$max_temp, Tmin = x$min_temp, Tbase = 7, lat = x$Lat, x$day_of_year)))) valentia <- do.call("rbind", valentia_split) data(pvulg_budburst_parameters) data(pvulg_weibull_parameters) data(pvulg_lactin_parameters) phen_forecast <- phen_model_forecast(Tmean = "Tmean", thermal_units = "thermal_units", chill_days = "chill_days", day_length = "day_length", bud_pars = pvulg_budburst_parameters, weib_pars = pvulg_weibull_parameters, lactin_pars = pvulg_lactin_parameters, pop_quantile = .5, year = "cycle", data = valentia)
Evaluates the phenology model for specified population quantiles, based on daily temperatures for further generations.
phen_model_gen2(Tmean, day_length, bud_pars, weib_pars, lactin_pars, sex_mat_day, pop_quantiles = 0.5, max_day_length = 14.92, data)
phen_model_gen2(Tmean, day_length, bud_pars, weib_pars, lactin_pars, sex_mat_day, pop_quantiles = 0.5, max_day_length = 14.92, data)
Tmean |
name of the column in the data representing the mean temperature |
day_length |
name of the column in the data representing the day length |
bud_pars |
vector of parameters for the budburst model |
weib_pars |
matrix of parameters for the Weibull model for each developmental stage |
lactin_pars |
matrix of parameters for the lactin model for each developmental stage |
sex_mat_day |
the day individuals from the first generation reached the sexual maturation stage |
pop_quantiles |
vector of quantiles of the population to be evaluated by the phenology model |
max_day_length |
critical day length threshold |
data |
a |
See phen_model
A data.frame
containing model evaluations for each life cycle (columns) and population quantile (rows).
Rafael de Andrade Moral ([email protected]) and Rowan Fealy
data(casement9596) casement1995 <- data.frame(casement9596, with(casement9596, get_total_info(Tmax, Tmin, Tbase = 7, Lat, day))) data(pvulg_budburst_parameters) data(pvulg_weibull_parameters) data(pvulg_lactin_parameters) phen95 <- phen_model(Tmean = "Tmean", thermal_units = "thermal_units", chill_days = "chill_days", day_length = "day_length", bud_pars = pvulg_budburst_parameters, weib_pars = pvulg_weibull_parameters, lactin_pars = pvulg_lactin_parameters, max_day_length = 14.92, data = casement1995) phen95_gen2 <- phen_model_gen2(Tmean = "Tmean", day_length = "day_length", bud_pars = pvulg_budburst_parameters, weib_pars = pvulg_weibull_parameters, lactin_pars = pvulg_lactin_parameters, sex_mat_day = phen95["0.05","sexual_maturation_day"], pop_quantiles = .05, data = casement1995)
data(casement9596) casement1995 <- data.frame(casement9596, with(casement9596, get_total_info(Tmax, Tmin, Tbase = 7, Lat, day))) data(pvulg_budburst_parameters) data(pvulg_weibull_parameters) data(pvulg_lactin_parameters) phen95 <- phen_model(Tmean = "Tmean", thermal_units = "thermal_units", chill_days = "chill_days", day_length = "day_length", bud_pars = pvulg_budburst_parameters, weib_pars = pvulg_weibull_parameters, lactin_pars = pvulg_lactin_parameters, max_day_length = 14.92, data = casement1995) phen95_gen2 <- phen_model_gen2(Tmean = "Tmean", day_length = "day_length", bud_pars = pvulg_budburst_parameters, weib_pars = pvulg_weibull_parameters, lactin_pars = pvulg_lactin_parameters, sex_mat_day = phen95["0.05","sexual_maturation_day"], pop_quantiles = .05, data = casement1995)
Produces a plot of the phenology model multi-year forecasting evaluations.
plot_phen_forecast(obj, year_from = 1, xlab = "Year", ylab = "Days from 1st November")
plot_phen_forecast(obj, year_from = 1, xlab = "Year", ylab = "Days from 1st November")
obj |
an output from the |
year_from |
the first year we are forecasting for (e.g. "2015") |
xlab |
the x-axis label |
ylab |
the y-axis label |
A ggplot
object.
Rafael de Andrade Moral ([email protected]) and Rowan Fealy
Produces a plot of the phenology model evaluations.
plot_phen_model(obj, obj_gen2, binwidth = 8, forecast = FALSE, observed_data = NULL, ylab = "Days from 1st November", xlab = "Modelled Life-Cycle Stages", labels = c("Budburst", "Post-Diapause", "Ovipositing Period (Eggs)", "Larvae Emergence", "Pupae Emergence", "Adult Emergence", "Sexual Maturation"))
plot_phen_model(obj, obj_gen2, binwidth = 8, forecast = FALSE, observed_data = NULL, ylab = "Days from 1st November", xlab = "Modelled Life-Cycle Stages", labels = c("Budburst", "Post-Diapause", "Ovipositing Period (Eggs)", "Larvae Emergence", "Pupae Emergence", "Adult Emergence", "Sexual Maturation"))
obj |
an output of the |
obj_gen2 |
an output of the |
binwidth |
binwidth of the density estimator |
forecast |
logical. Set to |
observed_data |
an output from the |
ylab |
the y-axis label |
xlab |
the x-axis label |
labels |
a vector of strings representing the names of the life-cycle stages |
Visualisation of days until stage completion for different life cycle stages and generations. Plot can incorporate observed data, where available. All dates are counted from the 1st of November of the previous year. The estimated density is based on a Gaussian kernel whose binwidth can be easily modified using argument binwidth
. To add observed data points, see assign_observed_data
.
Since this is a ggplot
object, layers can be easily added by using standard ggplot
functions.
A ggplot
object.
Rafael de Andrade Moral ([email protected]) and Rowan Fealy
Pollard C.P., Griffin C.T., Moral R.A., Duffy C., Chuche J., Gaffney M.T., Fealy R. (submitted) phenModel: a temperature-dependent phenology model for the blue willow beetle, Phratora vulgatissima.
phen_model
, phen_model_gen2
, phen_model_forecast
Vector of estimated parameters.
data("pvulg_budburst_parameters")
data("pvulg_budburst_parameters")
The format is: Named num [1:2] 540.196 -0.016 - attr(*, "names")= chr [1:2] "b" "m"
The method implied is based on the Alternating Model, which is a degree-day model that accumulates thermal/chilling units above/below a base threshold from a specified date (Cannell and Smith, 1983). The b and m values correspond to the estimates for budburst for Salix viminalis (Pollard et al., submitted).
Chmielewski, F.M., Heider, S., Moryson, S. and Bruns, E. (2013) International phenological observation networks: concept of IPG and GPM. In M. D. Schwartz, ed. Phenology: An integrative environmental science. New York London: Springer, p. 610.
Cannell, M.G.R. and Smith, R.I. (1983) Thermal time, chill days and prediction of budburst in Picea sitchensis. Journal of Applied Ecology, 20(3), 951–963.
Pollard C.P., Griffin C.T., Moral R.A., Duffy C., Chuche J., Gaffney M.T., Fealy R. (submitted) phenModel: a temperature-dependent phenology model for the blue willow beetle, Phratora vulgatissima.
data(pvulg_budburst_parameters)
data(pvulg_budburst_parameters)
Matrix of estimated parameters for each stage of the life-cycle of P. vulgatissima
data("pvulg_lactin_parameters")
data("pvulg_lactin_parameters")
The format is: num [1:4, 1:6] 0.00864 28.94449 0.52103 -1.06402 0.002 ... - attr(*, "dimnames")=List of 2 ..$ : chr [1:4] "rho" "Tmax" "deltaT" "lambda" ..$ : chr [1:6] "post_diapause" "ovipositing" "larva_emergence" "pupa_emergence" ...
The parameters were derived based on constant temperature laboratory experiments (see Pollard, 2014) for different life-cycle stages of P. vulgatissima. Development times were converted to rates and subsequently used as input for the Lactin model (Lactin et al., 1995). The model was fitted to the entire temperature range, including where there was no development rate (at the upper temperature threshold).
Pollard, C. (2014) A Temperature-Dependent Development Model for Willow Beetle Species (Coleoptera: Chrysomelidae) in Ireland: Simulation of Phenology/Voltinism in Response to Climate Change. Unpublished PhD thesis, submitted to the National University of Ireland Maynooth, Maynooth, 1-373.
Lactin D.J., Holliday N.J., Johnson D.L. and Craigen R. (1995) Improved rate model of temperature-dependent development by arthropods. Environmental Entomology, 24, 68–75. doi:10.1093/ee/24.1.68
Pollard C.P., Griffin C.T., Moral R.A., Duffy C., Chuche J., Gaffney M.T., Fealy R. (submitted) phenModel: a temperature-dependent phenology model for the blue willow beetle, Phratora vulgatissima.
data(pvulg_lactin_parameters)
data(pvulg_lactin_parameters)
Matrix of estimated parameters for each stage of the life-cycle of P. vulgatissima
data("pvulg_weibull_parameters")
data("pvulg_weibull_parameters")
The format is: num [1:3, 1:6] 0.7207 0.3517 1.7918 -0.0716 0.5117 ... - attr(*, "dimnames")=List of 2 ..$ : chr [1:3] "gamma" "eta" "beta" ..$ : chr [1:6] "post_diapause" "ovipositing" "larva_emergence" "pupa_emergence" ...
The parameters were derived based on constant temperature laboratory experiments (see Pollard, 2014) for different life-cycle stages of P. vulgatissima. Development times (or rates) were derived as cumulative frequency distributions at each temperature; development times for each percentile were then divided by the respective median value of the distribution to produce a normalised ("same shape") distribution of development times at each temperature (Wagner et al., 1984; 1991). Based on the "same shape" assumption, a single cumulative distribution representing the normalised distributions for all temperature treatments was produced by averaging all the distributions, weighted by the total frequency of each distribution (Wagner et al., 1984; 1991).
Pollard, C. (2014) A Temperature-Dependent Development Model for Willow Beetle Species (Coleoptera: Chrysomelidae) in Ireland: Simulation of Phenology/Voltinism in Response to Climate Change. Unpublished PhD thesis, submitted to the National University of Ireland Maynooth, Maynooth, 1-373.
Wagner T.L., Olson R.L. and Willers J.L. (1991) Modeling arthropod development time. Journal of Agricultural Entomology, 8, 251-270.
Wagner T.L., Wu H.I., Sharpe P.J.H. and Coulson R.N. (1984) Modeling distributions of insect development time: a literature review and application of the Weibull function. Annals of the Entomological Society of America, 77, 475-487. doi:10.1093/aesa/77.2.208
Pollard C.P., Griffin C.T., Moral R.A., Duffy C., Chuche J., Gaffney M.T., Fealy R. (submitted) phenModel: a temperature-dependent phenology model for the blue willow beetle, Phratora vulgatissima.
data(pvulg_weibull_parameters)
data(pvulg_weibull_parameters)
Runs a sensitivity analysis on the evaluated phenology model, by simulating random changes to fitted parameters and/or specifying a range of base temperatures to determine a chill day.
sensitivity(Tmax, Tmin, Tbase, lat, day, bud_pars, weib_pars, lactin_pars, max_day_length, pop_quantile = .5, data, study_type = c("Tbase","lactin","weibull","bud_days","bud_parms","cdl"), percent_variation = .1, resolution = 1000) summary_sensitivity(obj) boxplot_sensitivity(obj)
sensitivity(Tmax, Tmin, Tbase, lat, day, bud_pars, weib_pars, lactin_pars, max_day_length, pop_quantile = .5, data, study_type = c("Tbase","lactin","weibull","bud_days","bud_parms","cdl"), percent_variation = .1, resolution = 1000) summary_sensitivity(obj) boxplot_sensitivity(obj)
obj |
an output from a call to the |
Tmax |
a vector of daily maximum temperatures |
Tmin |
a vector of daily minimum temperatures |
Tbase |
the base temperature |
lat |
the latitude |
day |
day of the year (vector) |
bud_pars |
vector of parameters for the budburst model |
weib_pars |
matrix of parameters for the Weibull model for each developmental stage |
lactin_pars |
matrix of parameters for the lactin model for each developmental stage |
max_day_length |
critical day length threshold |
pop_quantile |
quantile of the population to be evaluated by the phenology model |
data |
a |
study_type |
a character string indicating what type of sensitivity study to be performed. |
percent_variation |
percentage of variation of the values to be changed for the sensitivity analysis |
resolution |
number of model evaluations to be performed |
A list
containing the sensitivity analysis results as the first component, and the original model evaluation results as the second component.
Rafael de Andrade Moral ([email protected]) and Rowan Fealy
data(casement9596) casement1995 <- data.frame(casement9596, with(casement9596, get_total_info(Tmax, Tmin, Tbase = 7, Lat, day))) data(pvulg_budburst_parameters) data(pvulg_weibull_parameters) data(pvulg_lactin_parameters) sens_casement1995 <- sensitivity(Tmax = casement9596$Tmax, Tmin = casement9596$Tmin, Tbase = 7, lat = casement9596$Lat, day = casement9596$day, bud_pars = pvulg_budburst_parameters, weib_pars = pvulg_weibull_parameters, lactin_pars = pvulg_lactin_parameters, max_day_length = 14.92, pop_quantile = .5, data = casement9596, study_type = "lactin", percent_variation = .1, resolution = 100) summary_sensitivity(sens_casement1995) boxplot_sensitivity(sens_casement1995)
data(casement9596) casement1995 <- data.frame(casement9596, with(casement9596, get_total_info(Tmax, Tmin, Tbase = 7, Lat, day))) data(pvulg_budburst_parameters) data(pvulg_weibull_parameters) data(pvulg_lactin_parameters) sens_casement1995 <- sensitivity(Tmax = casement9596$Tmax, Tmin = casement9596$Tmin, Tbase = 7, lat = casement9596$Lat, day = casement9596$day, bud_pars = pvulg_budburst_parameters, weib_pars = pvulg_weibull_parameters, lactin_pars = pvulg_lactin_parameters, max_day_length = 14.92, pop_quantile = .5, data = casement9596, study_type = "lactin", percent_variation = .1, resolution = 100) summary_sensitivity(sens_casement1995) boxplot_sensitivity(sens_casement1995)
Daily minimum and maximum temperature data obtained at the Valentia synoptic weather station for the period of 1st November 1939 to 31st October 2000.
data("valentia")
data("valentia")
A data frame with 22281 observations on the following 7 variables.
year
a numeric vector
month
a numeric vector
day
a numeric vector
Lat
a numeric vector
max_temp
a numeric vector
min_temp
a numeric vector
day_of_year
a numeric vector
The data was obtained from the Irish National Meteorological Agency (Met Éireann).
https://www.met.ie/climate/available-data/historical-data
data(valentia) valentia$cycle <- get_cycle(data = valentia, day = "day", month = "month", day.end = 31, month.end = 10) valentia_split <- split(valentia, valentia$cycle) valentia_split <- lapply(valentia_split, function(x) data.frame(x, with(x, get_total_info(Tmax = x$max_temp, Tmin = x$min_temp, Tbase = 7, lat = x$Lat, x$day_of_year)))) valentia <- do.call("rbind", valentia_split) data(pvulg_budburst_parameters) data(pvulg_weibull_parameters) data(pvulg_lactin_parameters) phen_forecast <- phen_model_forecast(Tmean = "Tmean", thermal_units = "thermal_units", chill_days = "chill_days", day_length = "day_length", bud_pars = pvulg_budburst_parameters, weib_pars = pvulg_weibull_parameters, lactin_pars = pvulg_lactin_parameters, pop_quantile = .5, year = "cycle", data = valentia) plot_phen_model(obj = phen_forecast[,1:7], obj_gen2 = phen_forecast[,8:12], forecast = TRUE) plot_phen_forecast(obj = phen_forecast, year_from = 1939)
data(valentia) valentia$cycle <- get_cycle(data = valentia, day = "day", month = "month", day.end = 31, month.end = 10) valentia_split <- split(valentia, valentia$cycle) valentia_split <- lapply(valentia_split, function(x) data.frame(x, with(x, get_total_info(Tmax = x$max_temp, Tmin = x$min_temp, Tbase = 7, lat = x$Lat, x$day_of_year)))) valentia <- do.call("rbind", valentia_split) data(pvulg_budburst_parameters) data(pvulg_weibull_parameters) data(pvulg_lactin_parameters) phen_forecast <- phen_model_forecast(Tmean = "Tmean", thermal_units = "thermal_units", chill_days = "chill_days", day_length = "day_length", bud_pars = pvulg_budburst_parameters, weib_pars = pvulg_weibull_parameters, lactin_pars = pvulg_lactin_parameters, pop_quantile = .5, year = "cycle", data = valentia) plot_phen_model(obj = phen_forecast[,1:7], obj_gen2 = phen_forecast[,8:12], forecast = TRUE) plot_phen_forecast(obj = phen_forecast, year_from = 1939)