| Title: | Evapotranspiration Estimation Using Temperature-Based Models |
|---|---|
| Description: | Provides functions to estimate daily reference evapotranspiration (ET0) using 10 temperature-based empirical models, with the Food and Agriculture Organization (FAO) Penman-Monteith method included as the standard reference for model comparison. Includes statistical evaluation metrics, such as Nash-Sutcliffe efficiency (NSE), root mean square error (RMSE), mean absolute error (MAE), and mean bias error (MBE), and visualization tools (scatter plots and Taylor diagrams). Based on Singh et al. (2026) <doi:10.1016/j.ejrh.2026.103925>. |
| Authors: | Ajay N. Satpute [aut], Samir Barman [aut, cre] (ORCID: <https://orcid.org/0000-0001-8181-8346>), Amit Kumar Singh [aut], Avijit Ghosh [aut], Gaurendra Gupta [aut] |
| Maintainer: | Samir Barman <[email protected]> |
| License: | GPL (>= 3) |
| Version: | 1.0.0 |
| Built: | 2026-10-08 11:46:20 UTC |
| Source: | https://github.com/samirigfri/et0tempmodels |
The ET0TempModels package provides functions for estimating daily reference evapotranspiration (ET0) using 10 temperature-based empirical models, with the FAO Penman-Monteith method included as the standard reference for model comparison. The package also includes statistical evaluation metrics and visualization tools.
Requires only mean temperature.
Requires mean temperature and relative humidity.
Requires Tmin, Tmax, day of year, and latitude.
Requires temperature, humidity, elevation, and latitude.
Modified Hargreaves (coefficient 0.031).
Modified Hargreaves (coefficient 0.0028).
Modified Hargreaves with temperature range^0.4.
Modified Hargreaves with temperature range^0.517.
Modified Hargreaves with temperature range^0.296.
Regression-based using Ra, Tmax, and temperature range.
et0_temp_allCompute ET0 using all 10 temperature-based models + FAO PM.
et0_fao_pmFAO Penman-Monteith reference method.
evaluate_modelsCompute all 9 statistical metrics.
plot_taylorGenerate Taylor diagrams.
plot_scatterGenerate scatter plots.
The package includes a sample meteorological dataset
(jhansi_weather) from a semi-arid region in central India
for demonstrating package functionality.
Maintainer: Samir Barman [email protected] (ORCID)
Authors:
Ajay N. Satpute
Amit Kumar Singh
Avijit Ghosh
Gaurendra Gupta
Satpute, A.N., Barman, S., Singh, A.K., Ghosh, A., & Gupta, G. (2026). A multi-scale evaluation of 30 empirical models for reference evapotranspiration estimation in a data-scarce semi-arid region: A case study of Jhansi, India. Journal of Hydrology: Regional Studies. doi:10.1016/j.ejrh.2026.103925
Allen, R.G., Pereira, L.S., Raes, D., & Smith, M. (1998). Crop evapotranspiration: Guidelines for computing crop water requirements. FAO Irrigation and Drainage Paper No. 56.
Useful links:
Report bugs at https://github.com/samirigfri/ET0TempModels/issues
Computes actual vapor pressure from relative humidity and temperature.
actual_vapor_pressure(Tmin, Tmax, RH_morning, RH_evening)actual_vapor_pressure(Tmin, Tmax, RH_morning, RH_evening)
Tmin |
Minimum air temperature (degrees Celsius). |
Tmax |
Maximum air temperature (degrees Celsius). |
RH_morning |
Morning relative humidity (percent). |
RH_evening |
Evening relative humidity (percent). |
Actual vapor pressure (kPa).
Allen et al. (1998), FAO-56, Eq. 17.
actual_vapor_pressure(15, 30, 90, 40)actual_vapor_pressure(15, 30, 90, 40)
Computes Willmott's index of agreement. Values range from 0 to 1, with 1 indicating perfect agreement.
calc_d(observed, predicted)calc_d(observed, predicted)
observed |
Numeric vector of observed (reference) values. |
predicted |
Numeric vector of predicted (model) values. |
Index of agreement (numeric scalar between 0 and 1).
Willmott, C.J. (1981). On the validation of models. Physical Geography, 2(2), 184-194.
obs <- c(3.5, 4.2, 5.1, 2.8, 6.0) pred <- c(3.3, 4.5, 4.9, 3.0, 5.8) calc_d(obs, pred)obs <- c(3.5, 4.2, 5.1, 2.8, 6.0) pred <- c(3.3, 4.5, 4.9, 3.0, 5.8) calc_d(obs, pred)
Mean Absolute Error (MAE)
calc_mae(observed, predicted)calc_mae(observed, predicted)
observed |
Numeric vector of observed (reference) values. |
predicted |
Numeric vector of predicted (model) values. |
MAE value (numeric scalar).
calc_mae(c(3.5, 4.2, 5.1), c(3.3, 4.5, 4.9))calc_mae(c(3.5, 4.2, 5.1), c(3.3, 4.5, 4.9))
Computes the mean bias error as mean percentage absolute error. Positive values indicate overall overestimation by the model.
calc_mbe(observed, predicted)calc_mbe(observed, predicted)
observed |
Numeric vector of observed (reference) values. |
predicted |
Numeric vector of predicted (model) values. |
MBE value (numeric scalar, as percentage).
calc_mbe(c(3.5, 4.2, 5.1), c(3.3, 4.5, 4.9))calc_mbe(c(3.5, 4.2, 5.1), c(3.3, 4.5, 4.9))
Mean Squared Error (MSE)
calc_mse(observed, predicted)calc_mse(observed, predicted)
observed |
Numeric vector of observed (reference) values. |
predicted |
Numeric vector of predicted (model) values. |
MSE value (numeric scalar).
calc_mse(c(3.5, 4.2, 5.1), c(3.3, 4.5, 4.9))calc_mse(c(3.5, 4.2, 5.1), c(3.3, 4.5, 4.9))
RMSE normalized by the mean of observed values.
calc_nrmse(observed, predicted)calc_nrmse(observed, predicted)
observed |
Numeric vector of observed (reference) values. |
predicted |
Numeric vector of predicted (model) values. |
NRMSE value (numeric scalar).
calc_nrmse(c(3.5, 4.2, 5.1), c(3.3, 4.5, 4.9))calc_nrmse(c(3.5, 4.2, 5.1), c(3.3, 4.5, 4.9))
Computes the Nash-Sutcliffe efficiency coefficient. A value of 1 indicates perfect agreement; values below 0 indicate the model is worse than the mean.
calc_nse(observed, predicted)calc_nse(observed, predicted)
observed |
Numeric vector of observed (reference) values. |
predicted |
Numeric vector of predicted (model) values. |
NSE value (numeric scalar).
Nash, J.E. & Sutcliffe, J.V. (1970). River flow forecasting through conceptual models. Journal of Hydrology, 10(3), 282-290.
obs <- c(3.5, 4.2, 5.1, 2.8, 6.0) pred <- c(3.3, 4.5, 4.9, 3.0, 5.8) calc_nse(obs, pred)obs <- c(3.5, 4.2, 5.1, 2.8, 6.0) pred <- c(3.3, 4.5, 4.9, 3.0, 5.8) calc_nse(obs, pred)
Pearson Correlation Coefficient (r)
calc_r(observed, predicted)calc_r(observed, predicted)
observed |
Numeric vector of observed (reference) values. |
predicted |
Numeric vector of predicted (model) values. |
Pearson correlation coefficient (numeric scalar).
calc_r(c(3.5, 4.2, 5.1), c(3.3, 4.5, 4.9))calc_r(c(3.5, 4.2, 5.1), c(3.3, 4.5, 4.9))
Computes R-squared as the square of the Pearson correlation coefficient.
calc_r2(observed, predicted)calc_r2(observed, predicted)
observed |
Numeric vector of observed (reference) values. |
predicted |
Numeric vector of predicted (model) values. |
R-squared value (numeric scalar between 0 and 1).
calc_r2(c(3.5, 4.2, 5.1), c(3.3, 4.5, 4.9))calc_r2(c(3.5, 4.2, 5.1), c(3.3, 4.5, 4.9))
Root Mean Squared Error (RMSE)
calc_rmse(observed, predicted)calc_rmse(observed, predicted)
observed |
Numeric vector of observed (reference) values. |
predicted |
Numeric vector of predicted (model) values. |
RMSE value (numeric scalar).
calc_rmse(c(3.5, 4.2, 5.1), c(3.3, 4.5, 4.9))calc_rmse(c(3.5, 4.2, 5.1), c(3.3, 4.5, 4.9))
Computes the maximum possible daylight hours for a given day and latitude.
daylight_hours(J, lat)daylight_hours(J, lat)
J |
Day of the year (1-366). |
lat |
Latitude (degrees, negative for Southern Hemisphere). |
Maximum daylight hours.
Allen et al. (1998), FAO-56, Eq. 34.
daylight_hours(172, 25.43)daylight_hours(172, 25.43)
Estimates dew point temperature from actual vapor pressure.
dew_point_temperature(ea)dew_point_temperature(ea)
ea |
Actual vapor pressure (kPa). |
Dew point temperature (degrees Celsius).
ea <- actual_vapor_pressure(15, 30, 90, 40) dew_point_temperature(ea)ea <- actual_vapor_pressure(15, 30, 90, 40) dew_point_temperature(ea)
Estimates daily ET0 using the Baier and Robertson (1965) method, a regression-based equation using extraterrestrial radiation, maximum temperature and temperature range.
et0_baier_robertson(Tmin, Tmax, J, lat)et0_baier_robertson(Tmin, Tmax, J, lat)
Tmin |
Minimum air temperature (degrees Celsius). |
Tmax |
Maximum air temperature (degrees Celsius). |
J |
Day of the year (1-366). |
lat |
Latitude (degrees). |
Daily ET0 (mm/day).
Baier, W. & Robertson, G.W. (1965). Estimation of latent evaporation from simple weather observations. Canadian Journal of Plant Science, 45(3), 276-284.
Other temperature models:
et0_berti(),
et0_blaney_criddle(),
et0_dorji(),
et0_droogers_allen(),
et0_hargreaves_samani(),
et0_linacre(),
et0_schendel(),
et0_tabari_talee1(),
et0_tabari_talee2()
et0_baier_robertson(15, 30, 172, 25.43)et0_baier_robertson(15, 30, 172, 25.43)
Estimates daily ET0 using the Berti et al. (2014) method, a modified Hargreaves formula using the temperature range raised to the power 0.517.
et0_berti(Tmin, Tmax, J, lat)et0_berti(Tmin, Tmax, J, lat)
Tmin |
Minimum air temperature (degrees Celsius). |
Tmax |
Maximum air temperature (degrees Celsius). |
J |
Day of the year (1-366). |
lat |
Latitude (degrees). |
Daily ET0 (mm/day).
Berti, A., Tardivo, G., Chiaudani, A., Rech, F., & Borin, M. (2014). Assessing reference evapotranspiration by the Hargreaves method in north-eastern Italy. Agricultural Water Management, 140, 20-25.
Other temperature models:
et0_baier_robertson(),
et0_blaney_criddle(),
et0_dorji(),
et0_droogers_allen(),
et0_hargreaves_samani(),
et0_linacre(),
et0_schendel(),
et0_tabari_talee1(),
et0_tabari_talee2()
et0_berti(15, 30, 172, 25.43)et0_berti(15, 30, 172, 25.43)
Estimates daily ET0 using the Blaney-Criddle (1950) method, which relies only on mean air temperature.
et0_blaney_criddle(Tmean)et0_blaney_criddle(Tmean)
Tmean |
Mean air temperature (degrees Celsius). |
Daily ET0 (mm/day).
Blaney, H.F. & Criddle, W.D. (1950). Determining water requirements in irrigated areas from climatological and irrigation data. USDA Soil Conservation Service, SCS-TP 96.
Other temperature models:
et0_baier_robertson(),
et0_berti(),
et0_dorji(),
et0_droogers_allen(),
et0_hargreaves_samani(),
et0_linacre(),
et0_schendel(),
et0_tabari_talee1(),
et0_tabari_talee2()
et0_blaney_criddle(25)et0_blaney_criddle(25)
Estimates daily ET0 using the Dorji et al. (2016) method, a modified Hargreaves formula using the temperature range raised to the power 0.296.
et0_dorji(Tmin, Tmax, J, lat)et0_dorji(Tmin, Tmax, J, lat)
Tmin |
Minimum air temperature (degrees Celsius). |
Tmax |
Maximum air temperature (degrees Celsius). |
J |
Day of the year (1-366). |
lat |
Latitude (degrees). |
Daily ET0 (mm/day).
Dorji, U., Olesen, J.E., & Seidenkrantz, M.S. (2016). Water balance in the complex mountainous terrain of Bhutan and linkages to land use. Journal of Hydrology: Regional Studies, 7, 55-68.
Other temperature models:
et0_baier_robertson(),
et0_berti(),
et0_blaney_criddle(),
et0_droogers_allen(),
et0_hargreaves_samani(),
et0_linacre(),
et0_schendel(),
et0_tabari_talee1(),
et0_tabari_talee2()
et0_dorji(15, 30, 172, 25.43)et0_dorji(15, 30, 172, 25.43)
Estimates daily ET0 using the Droogers and Allen (2002) method, a modified Hargreaves formula using the temperature range raised to the power 0.4.
et0_droogers_allen(Tmin, Tmax, J, lat)et0_droogers_allen(Tmin, Tmax, J, lat)
Tmin |
Minimum air temperature (degrees Celsius). |
Tmax |
Maximum air temperature (degrees Celsius). |
J |
Day of the year (1-366). |
lat |
Latitude (degrees). |
Daily ET0 (mm/day).
Droogers, P. & Allen, R.G. (2002). Estimating reference evapotranspiration under inaccurate data conditions. Irrigation and Drainage Systems, 16(1), 33-45.
Other temperature models:
et0_baier_robertson(),
et0_berti(),
et0_blaney_criddle(),
et0_dorji(),
et0_hargreaves_samani(),
et0_linacre(),
et0_schendel(),
et0_tabari_talee1(),
et0_tabari_talee2()
et0_droogers_allen(15, 30, 172, 25.43)et0_droogers_allen(15, 30, 172, 25.43)
Computes daily reference evapotranspiration (ET0) using the FAO Penman-Monteith equation (Allen et al., 1998). This is the standard reference method recommended by FAO.
et0_fao_pm(Tmin, Tmax, RH_morning, RH_evening, u2, n, J, lat, z = 0)et0_fao_pm(Tmin, Tmax, RH_morning, RH_evening, u2, n, J, lat, z = 0)
Tmin |
Minimum air temperature (degrees Celsius). |
Tmax |
Maximum air temperature (degrees Celsius). |
RH_morning |
Morning relative humidity (percent). |
RH_evening |
Evening relative humidity (percent). |
u2 |
Wind speed at 2 m height (m/s). |
n |
Actual sunshine hours. |
J |
Day of the year (1-366). |
lat |
Latitude (degrees, negative for Southern Hemisphere). |
z |
Elevation above sea level (m). |
Daily ET0 (mm/day).
Allen, R.G., Pereira, L.S., Raes, D., & Smith, M. (1998). Crop evapotranspiration: Guidelines for computing crop water requirements. FAO Irrigation and Drainage Paper No. 56.
et0_fao_pm(Tmin = 15, Tmax = 30, RH_morning = 90, RH_evening = 40, u2 = 1.5, n = 8, J = 172, lat = 25.43, z = 216)et0_fao_pm(Tmin = 15, Tmax = 30, RH_morning = 90, RH_evening = 40, u2 = 1.5, n = 8, J = 172, lat = 25.43, z = 216)
Estimates daily ET0 using the Hargreaves-Samani (1985) method based on temperature range and extraterrestrial radiation.
et0_hargreaves_samani(Tmin, Tmax, J, lat)et0_hargreaves_samani(Tmin, Tmax, J, lat)
Tmin |
Minimum air temperature (degrees Celsius). |
Tmax |
Maximum air temperature (degrees Celsius). |
J |
Day of the year (1-366). |
lat |
Latitude (degrees). |
Daily ET0 (mm/day).
Hargreaves, G.H. & Samani, Z.A. (1985). Reference crop evapotranspiration from temperature. Applied Engineering in Agriculture, 1(2), 96-99.
Other temperature models:
et0_baier_robertson(),
et0_berti(),
et0_blaney_criddle(),
et0_dorji(),
et0_droogers_allen(),
et0_linacre(),
et0_schendel(),
et0_tabari_talee1(),
et0_tabari_talee2()
et0_hargreaves_samani(15, 30, 172, 25.43)et0_hargreaves_samani(15, 30, 172, 25.43)
Estimates daily ET0 using the Linacre (1977) method, which accounts for altitude, latitude and dew point depression.
et0_linacre(Tmean, Tmin, Tmax, RH_morning, RH_evening, z, lat)et0_linacre(Tmean, Tmin, Tmax, RH_morning, RH_evening, z, lat)
Tmean |
Mean air temperature (degrees Celsius). |
Tmin |
Minimum air temperature (degrees Celsius). |
Tmax |
Maximum air temperature (degrees Celsius). |
RH_morning |
Morning relative humidity (percent). |
RH_evening |
Evening relative humidity (percent). |
z |
Elevation above sea level (m). |
lat |
Latitude (degrees). |
Daily ET0 (mm/day).
Linacre, E.T. (1977). A simple formula for estimating evaporation rates in various climates, using temperature data alone. Agricultural Meteorology, 18(6), 409-424.
Other temperature models:
et0_baier_robertson(),
et0_berti(),
et0_blaney_criddle(),
et0_dorji(),
et0_droogers_allen(),
et0_hargreaves_samani(),
et0_schendel(),
et0_tabari_talee1(),
et0_tabari_talee2()
et0_linacre(25, 15, 35, 90, 40, 216, 25.43)et0_linacre(25, 15, 35, 90, 40, 216, 25.43)
Estimates daily ET0 using the Schendel method (Bormann, 2011), which uses mean temperature and relative humidity.
et0_schendel(Tmean, RH)et0_schendel(Tmean, RH)
Tmean |
Mean air temperature (degrees Celsius). |
RH |
Mean relative humidity (percent). |
Daily ET0 (mm/day).
Bormann, H. (2011). Sensitivity analysis of 18 different potential evapotranspiration models to observed climatic change at German climate stations. Climatic Change, 104(3), 729-753.
Other temperature models:
et0_baier_robertson(),
et0_berti(),
et0_blaney_criddle(),
et0_dorji(),
et0_droogers_allen(),
et0_hargreaves_samani(),
et0_linacre(),
et0_tabari_talee1(),
et0_tabari_talee2()
et0_schendel(25, 60)et0_schendel(25, 60)
Estimates daily ET0 using the first Tabari and Talaee (2011) modified Hargreaves equation with coefficient 0.031.
et0_tabari_talee1(Tmin, Tmax, J, lat)et0_tabari_talee1(Tmin, Tmax, J, lat)
Tmin |
Minimum air temperature (degrees Celsius). |
Tmax |
Maximum air temperature (degrees Celsius). |
J |
Day of the year (1-366). |
lat |
Latitude (degrees). |
Daily ET0 (mm/day).
Tabari, H. & Talaee, P.H. (2011). Local calibration of the Hargreaves and Priestley-Taylor equations for estimating reference evapotranspiration in arid and cold climates of Iran based on the Penman-Monteith model. Journal of Hydrologic Engineering, 16(10), 837-845.
Other temperature models:
et0_baier_robertson(),
et0_berti(),
et0_blaney_criddle(),
et0_dorji(),
et0_droogers_allen(),
et0_hargreaves_samani(),
et0_linacre(),
et0_schendel(),
et0_tabari_talee2()
et0_tabari_talee1(15, 30, 172, 25.43)et0_tabari_talee1(15, 30, 172, 25.43)
Estimates daily ET0 using the second Tabari and Talaee (2011) modified Hargreaves equation with coefficient 0.0028.
et0_tabari_talee2(Tmin, Tmax, J, lat)et0_tabari_talee2(Tmin, Tmax, J, lat)
Tmin |
Minimum air temperature (degrees Celsius). |
Tmax |
Maximum air temperature (degrees Celsius). |
J |
Day of the year (1-366). |
lat |
Latitude (degrees). |
Daily ET0 (mm/day).
Tabari, H. & Talaee, P.H. (2011). Local calibration of the Hargreaves and Priestley-Taylor equations for estimating reference evapotranspiration in arid and cold climates of Iran based on the Penman-Monteith model. Journal of Hydrologic Engineering, 16(10), 837-845.
Other temperature models:
et0_baier_robertson(),
et0_berti(),
et0_blaney_criddle(),
et0_dorji(),
et0_droogers_allen(),
et0_hargreaves_samani(),
et0_linacre(),
et0_schendel(),
et0_tabari_talee1()
et0_tabari_talee2(15, 30, 172, 25.43)et0_tabari_talee2(15, 30, 172, 25.43)
A convenience wrapper that computes daily reference evapotranspiration using all 10 temperature-based empirical models plus the FAO Penman-Monteith standard method as the reference/base for comparison.
et0_temp_all(Tmin, Tmax, RH_morning, RH_evening, u2, n, J, lat, z = 0)et0_temp_all(Tmin, Tmax, RH_morning, RH_evening, u2, n, J, lat, z = 0)
Tmin |
Minimum air temperature (degrees Celsius). |
Tmax |
Maximum air temperature (degrees Celsius). |
RH_morning |
Morning relative humidity (percent). Used by Schendel, Linacre, and FAO Penman-Monteith. |
RH_evening |
Evening relative humidity (percent). Used by Schendel, Linacre, and FAO Penman-Monteith. |
u2 |
Wind speed at 2 m height (m/s). Used by FAO Penman-Monteith only. |
n |
Actual sunshine hours. Used by FAO Penman-Monteith only. |
J |
Day of the year (1-366). |
lat |
Latitude (degrees, negative for Southern Hemisphere). |
z |
Elevation above sea level (m). Used by Linacre and FAO Penman-Monteith. Default is 0. |
The 10 temperature-based models included are:
Blaney-Criddle (1950)
Schendel (Bormann, 2011)
Hargreaves-Samani (1985)
Linacre (1977)
Tabari-Talaee 1 (2011)
Tabari-Talaee 2 (2011)
Droogers-Allen (2002)
Berti et al. (2014)
Dorji et al. (2016)
Baier-Robertson (1965)
The FAO Penman-Monteith column serves as the standard reference
against which the temperature-based models can be evaluated using
evaluate_models.
A data.frame with 11 columns: FAO_PM (reference) plus
one column per temperature-based model. The number of rows equals the
length of the input vectors.
# Single day example result <- et0_temp_all(Tmin = 15, Tmax = 30, RH_morning = 90, RH_evening = 40, u2 = 1.5, n = 8, J = 172, lat = 25.43, z = 216) print(result)# Single day example result <- et0_temp_all(Tmin = 15, Tmax = 30, RH_morning = 90, RH_evening = 40, u2 = 1.5, n = 8, J = 172, lat = 25.43, z = 216) print(result)
Computes all 9 statistical evaluation metrics for one or more ET0 models compared against a reference method (typically FAO Penman-Monteith).
evaluate_models(observed, predicted)evaluate_models(observed, predicted)
observed |
Numeric vector of observed (reference) ET0 values. |
predicted |
A named list or data.frame of predicted ET0 values. Each element/column represents a different model. |
A data.frame with one row per model and columns for each
metric: NSE, d, MSE, RMSE, NRMSE, MAE, MBE, r, R2.
obs <- c(3.5, 4.2, 5.1, 2.8, 6.0) preds <- data.frame( Model_A = c(3.3, 4.5, 4.9, 3.0, 5.8), Model_B = c(4.0, 4.0, 5.5, 2.5, 6.5) ) evaluate_models(obs, preds)obs <- c(3.5, 4.2, 5.1, 2.8, 6.0) preds <- data.frame( Model_A = c(3.3, 4.5, 4.9, 3.0, 5.8), Model_B = c(4.0, 4.0, 5.5, 2.5, 6.5) ) evaluate_models(obs, preds)
Computes the extraterrestrial radiation (Ra) for a given day and latitude following Allen et al. (1998).
extraterrestrial_radiation(J, lat)extraterrestrial_radiation(J, lat)
J |
Day of the year (1-366). |
lat |
Latitude (degrees, negative for Southern Hemisphere). |
Extraterrestrial radiation (MJ/m2/day).
Allen et al. (1998), FAO-56, Eq. 21.
extraterrestrial_radiation(172, 25.43)extraterrestrial_radiation(172, 25.43)
A dataset containing daily meteorological observations from the Central Research Farm of ICAR-Indian Grassland and Fodder Research Institute (IGFRI), Jhansi, Uttar Pradesh, India (25 deg 26' N, 78 deg 30' E, 216 m above sea level). The data covers one year (2010) and is representative of semi-arid climate conditions.
jhansi_weatherjhansi_weather
A data frame with 365 rows and 8 columns:
Date of observation (Date class).
Day of the year (1-365).
Maximum air temperature (degrees Celsius).
Minimum air temperature (degrees Celsius).
Morning relative humidity (percent).
Evening relative humidity (percent).
Bright sunshine hours.
Wind speed at 2 m height (m/s).
The study area has a semi-arid climate with extreme summers (average 32.7 degrees C) and mild winters (average 25.1 degrees C). The average annual precipitation is 840 mm, with 90 percent contributed by southwest monsoons between July and September. This dataset is suitable for demonstrating the package functions and comparing ET0 model performance in data-scarce semi-arid conditions.
The latitude for this station is 25.43 degrees N and the elevation is 216 m above sea level.
ICAR-Indian Grassland and Fodder Research Institute (IGFRI), Jhansi, India.
data(jhansi_weather) head(jhansi_weather) # Compute FAO-PM ET0 for the first day with(jhansi_weather[1, ], et0_fao_pm(Tmin, Tmax, RH_morning, RH_evening, WS, SSH, J, lat = 25.43, z = 216))data(jhansi_weather) head(jhansi_weather) # Compute FAO-PM ET0 for the first day with(jhansi_weather[1, ], et0_fao_pm(Tmin, Tmax, RH_morning, RH_evening, WS, SSH, J, lat = 25.43, z = 216))
Computes the latent heat of vaporization as a function of air temperature following Allen et al. (1998).
latent_heat(Tmean)latent_heat(Tmean)
Tmean |
Mean air temperature (degrees Celsius). |
Latent heat of vaporization (MJ/kg).
Allen, R.G., Pereira, L.S., Raes, D., & Smith, M. (1998). FAO Irrigation and Drainage Paper No. 56.
latent_heat(25)latent_heat(25)
Functions to compute statistical performance metrics for comparing ET0 model estimates against a reference (e.g., FAO Penman-Monteith).
Computes net radiation (Rn) following the FAO-56 approach.
net_radiation(J, lat, n, Tmin, Tmax, ea, albedo = 0.23, a_s = 0.25, b_s = 0.5)net_radiation(J, lat, n, Tmin, Tmax, ea, albedo = 0.23, a_s = 0.25, b_s = 0.5)
J |
Day of the year (1-366). |
lat |
Latitude (degrees). |
n |
Actual sunshine hours. |
Tmin |
Minimum air temperature (degrees Celsius). |
Tmax |
Maximum air temperature (degrees Celsius). |
ea |
Actual vapor pressure (kPa). |
albedo |
Surface albedo (default 0.23 for reference crop). |
a_s |
Angstrom coefficient a (default 0.25). |
b_s |
Angstrom coefficient b (default 0.50). |
Net radiation (MJ/m2/day).
Allen et al. (1998), FAO-56.
ea <- actual_vapor_pressure(15, 30, 90, 40) net_radiation(172, 25.43, 8, 15, 30, ea)ea <- actual_vapor_pressure(15, 30, 90, 40) net_radiation(172, 25.43, 8, 15, 30, ea)
Creates a bar chart comparing total annual ET0 estimated by each model against the FAO-PM reference.
plot_annual_bar(annual_et0, main = "Annual ET0 by Model", colors = NULL)plot_annual_bar(annual_et0, main = "Annual ET0 by Model", colors = NULL)
annual_et0 |
A named numeric vector of total annual ET0 values for
each model. Must include |
main |
Title for the plot. |
colors |
Character vector of bar colors. If |
Invisible NULL.
annual <- c(FAO_PM = 1571, Blaney_Criddle = 1933, Schendel = 2593, Hargreaves_Samani = 1393) plot_annual_bar(annual)annual <- c(FAO_PM = 1571, Blaney_Criddle = 1933, Schendel = 2593, Hargreaves_Samani = 1393) plot_annual_bar(annual)
Creates a line plot comparing the average monthly ET0 from multiple models against the FAO-PM reference.
plot_monthly_comparison( monthly_data, model_names = NULL, main = "Monthly ET0 Comparison", colors = NULL )plot_monthly_comparison( monthly_data, model_names = NULL, main = "Monthly ET0 Comparison", colors = NULL )
monthly_data |
A data.frame with columns: |
model_names |
Character vector of model names to plot (in addition to
FAO_PM). If |
main |
Title for the plot. |
colors |
Named character vector of colors per model. If |
Invisible NULL.
monthly <- data.frame( Month = 1:12, FAO_PM = c(2.0, 2.5, 3.5, 5.0, 6.5, 7.0, 6.0, 5.5, 4.5, 3.5, 2.5, 2.0), Model_A = c(2.2, 2.8, 3.8, 5.3, 6.8, 7.3, 6.3, 5.8, 4.8, 3.8, 2.8, 2.2) ) plot_monthly_comparison(monthly)monthly <- data.frame( Month = 1:12, FAO_PM = c(2.0, 2.5, 3.5, 5.0, 6.5, 7.0, 6.0, 5.5, 4.5, 3.5, 2.5, 2.0), Model_A = c(2.2, 2.8, 3.8, 5.3, 6.8, 7.3, 6.3, 5.8, 4.8, 3.8, 2.8, 2.2) ) plot_monthly_comparison(monthly)
Creates a scatter plot comparing predicted ET0 values from one or more models against observed (reference) values, with 1:1 line and regression lines.
plot_scatter( observed, predicted, model_names = NULL, main = "Predicted vs Observed ET0", colors = NULL, ... )plot_scatter( observed, predicted, model_names = NULL, main = "Predicted vs Observed ET0", colors = NULL, ... )
observed |
Numeric vector of observed (reference) ET0 values. |
predicted |
A named list or data.frame of predicted ET0 values. |
model_names |
Character vector of model names to plot. If |
main |
Title for the plot. |
colors |
Character vector of colors. If |
... |
Additional arguments passed to |
Invisible NULL. Called for its side effect of producing a plot.
obs <- c(3.5, 4.2, 5.1, 2.8, 6.0, 3.1, 4.8) preds <- data.frame( Model_A = c(3.3, 4.5, 4.9, 3.0, 5.8, 3.4, 4.6), Model_B = c(4.0, 4.0, 5.5, 2.5, 6.5, 3.8, 5.0) ) plot_scatter(obs, preds)obs <- c(3.5, 4.2, 5.1, 2.8, 6.0, 3.1, 4.8) preds <- data.frame( Model_A = c(3.3, 4.5, 4.9, 3.0, 5.8, 3.4, 4.6), Model_B = c(4.0, 4.0, 5.5, 2.5, 6.5, 3.8, 5.0) ) plot_scatter(obs, preds)
Creates a Taylor diagram showing the correlation coefficient, standard deviation, and centered RMSE of multiple models relative to the observed reference.
plot_taylor( observed, predicted, model_names = NULL, main = "Taylor Diagram", colors = NULL, normalize = FALSE )plot_taylor( observed, predicted, model_names = NULL, main = "Taylor Diagram", colors = NULL, normalize = FALSE )
observed |
Numeric vector of observed (reference) ET0 values. |
predicted |
A named list or data.frame of predicted ET0 values. |
model_names |
Character vector of model names to plot. If |
main |
Title for the plot. |
colors |
Character vector of colors. If |
normalize |
Logical; if |
Invisible NULL. Called for its side effect of producing a plot.
set.seed(42) obs <- rnorm(100, mean = 5, sd = 2) preds <- list( Model_A = obs + rnorm(100, 0, 0.5), Model_B = obs * 1.1 + rnorm(100, 0, 1) ) plot_taylor(obs, preds)set.seed(42) obs <- rnorm(100, mean = 5, sd = 2) preds <- list( Model_A = obs + rnorm(100, 0, 0.5), Model_B = obs * 1.1 + rnorm(100, 0, 1) ) plot_taylor(obs, preds)
Functions for graphical evaluation of ET0 model performance including scatter plots, Taylor diagrams, monthly comparison plots, and annual bar charts.
Computes the psychrometric constant as a function of atmospheric pressure.
psychrometric_constant(P = NULL, z = 0)psychrometric_constant(P = NULL, z = 0)
P |
Atmospheric pressure (kPa). If |
z |
Elevation above sea level (m). Used only if |
Psychrometric constant (kPa/degrees C).
Allen et al. (1998), FAO-56, Eq. 8.
psychrometric_constant(z = 216)psychrometric_constant(z = 216)
Computes the saturation vapor pressure at a given temperature using the Tetens formula (Allen et al., 1998).
saturation_vapor_pressure(Temp)saturation_vapor_pressure(Temp)
Temp |
Air temperature (degrees Celsius). |
Saturation vapor pressure (kPa).
Allen et al. (1998), FAO-56, Eq. 11.
saturation_vapor_pressure(25)saturation_vapor_pressure(25)
Computes the slope of the saturation vapor pressure-temperature curve.
slope_vapor_pressure(Tmean)slope_vapor_pressure(Tmean)
Tmean |
Mean air temperature (degrees Celsius). |
Slope of saturation vapor pressure curve (kPa/degrees C).
Allen et al. (1998), FAO-56, Eq. 13.
slope_vapor_pressure(25)slope_vapor_pressure(25)
Estimates incoming solar radiation (Rs) using the Angstrom formula with sunshine hours.
solar_radiation(J, lat, n, a_s = 0.25, b_s = 0.5)solar_radiation(J, lat, n, a_s = 0.25, b_s = 0.5)
J |
Day of the year (1-366). |
lat |
Latitude (degrees). |
n |
Actual sunshine hours. |
a_s |
Angstrom coefficient a (default 0.25). |
b_s |
Angstrom coefficient b (default 0.50). |
Solar radiation (MJ/m2/day).
Allen et al. (1998), FAO-56, Eq. 35.
solar_radiation(172, 25.43, 8)solar_radiation(172, 25.43, 8)
Functions implementing 10 temperature-based empirical models for reference evapotranspiration (ET0) estimation.