The ET0models package provides 10 temperature-based
empirical models for estimating daily reference evapotranspiration
(ET0). The FAO Penman-Monteith method is included as the standard
reference against which the temperature-based models are compared and
evaluated.
Temperature-based models are particularly valuable in data-scarce environments because they require only readily available temperature data (plus humidity, day of year, and location in some cases), unlike methods that require wind speed or solar radiation measurements.
| # | Model | Function | Primary Inputs |
|---|---|---|---|
| 1 | Blaney-Criddle (1950) | et0_blaney_criddle() |
Tmean |
| 2 | Schendel (Bormann, 2011) | et0_schendel() |
Tmean, RH |
| 3 | Hargreaves-Samani (1985) | et0_hargreaves_samani() |
Tmin, Tmax, J, lat |
| 4 | Linacre (1977) | et0_linacre() |
Tmean, Tmin, Tmax, RH, z, lat |
| 5 | Tabari-Talaee 1 (2011) | et0_tabari_talee1() |
Tmin, Tmax, J, lat |
| 6 | Tabari-Talaee 2 (2011) | et0_tabari_talee2() |
Tmin, Tmax, J, lat |
| 7 | Droogers-Allen (2002) | et0_droogers_allen() |
Tmin, Tmax, J, lat |
| 8 | Berti et al. (2014) | et0_berti() |
Tmin, Tmax, J, lat |
| 9 | Dorji et al. (2016) | et0_dorji() |
Tmin, Tmax, J, lat |
| 10 | Baier-Robertson (1965) | et0_baier_robertson() |
Tmin, Tmax, J, lat |
library(ET0TempModels)
data(jhansi_weather)
head(jhansi_weather)
#> Date J Tmax Tmin RH_morning RH_evening SSH WS
#> 1 2010-01-01 1 24.1 5.1 89 49 7.2 0.20
#> 2 2010-01-02 2 25.5 4.8 88 43 8.0 1.27
#> 3 2010-01-03 3 26.5 5.8 84 32 8.0 1.32
#> 4 2010-01-04 4 24.6 5.2 94 27 6.9 1.00
#> 5 2010-01-05 5 27.1 4.9 93 44 9.1 0.35
#> 6 2010-01-06 6 26.2 1.7 69 36 5.7 1.15# FAO Penman-Monteith (reference)
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)
#> [1] 4.895006
# Blaney-Criddle (needs only Tmean)
et0_blaney_criddle(Tmean = 22.5)
#> [1] 5.06352
# Hargreaves-Samani (needs Tmin, Tmax, day of year, latitude)
et0_hargreaves_samani(Tmin = 15, Tmax = 30, J = 172, lat = 25.43)
#> [1] 59.36421The et0_temp_all() function runs all 10
temperature-based models plus the FAO-PM reference in a single call:
result <- et0_temp_all(
Tmin = jhansi_weather$Tmin[1:5],
Tmax = jhansi_weather$Tmax[1:5],
RH_morning = jhansi_weather$RH_morning[1:5],
RH_evening = jhansi_weather$RH_evening[1:5],
u2 = jhansi_weather$WS[1:5],
n = jhansi_weather$SSH[1:5],
J = jhansi_weather$J[1:5],
lat = 25.43,
z = 216
)
round(result, 2)
#> FAO_PM Blaney_Criddle Schendel Hargreaves_Samani Linacre Tabari_Talee1
#> 1 1.60 4.07 3.39 30.11 3.63 40.32
#> 2 2.54 4.14 3.70 32.03 4.01 42.92
#> 3 2.84 4.26 4.46 33.08 4.93 44.37
#> 4 2.38 4.11 3.94 30.92 4.77 41.42
#> 5 1.98 4.24 3.74 34.28 4.05 45.97
#> Tabari_Talee2 Droogers_Allen Berti Dorji Baier_Robertson
#> 1 3.64 3.10 2.64 2.14 2.40
#> 2 3.88 3.27 2.81 2.22 2.89
#> 3 4.01 3.38 2.91 2.27 3.05
#> 4 3.74 3.18 2.71 2.18 2.55
#> 5 4.15 3.48 3.02 2.33 3.39The package includes 9 statistical metrics for comparing temperature-based model performance against the FAO-PM reference: NSE, d, MSE, RMSE, NRMSE, MAE, MBE, r, and R-squared.
# Compute ET0 for the full year
full_result <- et0_temp_all(
Tmin = jhansi_weather$Tmin,
Tmax = jhansi_weather$Tmax,
RH_morning = jhansi_weather$RH_morning,
RH_evening = jhansi_weather$RH_evening,
u2 = jhansi_weather$WS,
n = jhansi_weather$SSH,
J = jhansi_weather$J,
lat = 25.43,
z = 216
)
# FAO-PM is the reference (observed)
obs <- full_result$FAO_PM
preds <- full_result[, c("Blaney_Criddle", "Hargreaves_Samani",
"Linacre", "Droogers_Allen")]
metrics <- evaluate_models(obs, preds)
print(metrics)
#> Model NSE d MSE RMSE NRMSE
#> 1 Blaney_Criddle 0.1042414 0.67330968 3.009673 1.734841 0.4050492
#> 2 Hargreaves_Samani -732.5828615 0.07652684 2464.776474 49.646515 11.5914262
#> 3 Linacre -3.4288074 0.62586836 14.880419 3.857515 0.9006492
#> 4 Droogers_Allen 0.3534099 0.84318367 2.172488 1.473936 0.3441334
#> MAE MBE r R2
#> 1 1.543601 49.58758 0.7861069 0.6179640
#> 2 47.203326 1183.36625 0.8433294 0.7112044
#> 3 3.441673 85.39739 0.9138930 0.8352004
#> 4 1.252408 36.82482 0.8608050 0.7409853The package exports helper functions for computing intermediate meteorological variables used internally by the models: