The ET0RadModels package provides 10 radiation-based
empirical models for estimating daily reference evapotranspiration
(ET0). The FAO Penman-Monteith method is included as the standard
reference against which the radiation-based models are compared and
evaluated.
Radiation-based models require solar radiation (or sunshine hours) as the primary input, making them suitable where radiation data are available but wind speed or humidity data are limited.
| # | Model | Function | Primary Inputs |
|---|---|---|---|
| 1 | Jensen-Haise (1963) | et0_jensen_haise() |
Tmean, J, lat, n |
| 2 | McGuinness-Bordne (1972) | et0_mcguinness_bordne() |
Tmean, J, lat, n |
| 3 | Irmak (2003) | et0_irmak() |
Tmean, J, lat, n |
| 4 | Makkink (1957) | et0_makkink() |
Tmean, J, lat, n, z |
| 5 | Turc (1961) | et0_turc() |
Tmean, J, lat, n |
| 6 | Caprio (1974) | et0_caprio() |
Tmean, J, lat, n |
| 7 | Abtew (1996) | et0_abtew() |
Tmean, J, lat, n |
| 8 | Priestley-Taylor (1972) | et0_priestley_taylor() |
Tmin, Tmax, RH, n, J, lat, z |
| 9 | Jones-Ritchie (1990) | et0_jones_ritchie() |
Tmin, Tmax, J, lat, n |
| 10 | Hargreaves (1975) | et0_hargreaves() |
Tmean, J, lat, n |
library(ET0RadModels)
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 = 35, RH_morning = 90, RH_evening = 40,
u2 = 1.5, n = 9, J = 172, lat = 25.43, z = 216)
#> [1] 5.611876
# Jensen-Haise (simple radiation-based)
et0_jensen_haise(Tmean = 25, J = 172, lat = 25.43, n = 9)
#> [1] 6.801125
# Priestley-Taylor (uses net radiation)
et0_priestley_taylor(Tmin = 15, Tmax = 35, RH_morning = 90,
RH_evening = 40, n = 9, J = 172,
lat = 25.43, z = 216)
#> [1] 5.410077result <- et0_rad_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 Jensen_Haise McGuinness_Bordne Irmak Makkink Turc Caprio Abtew
#> 1 1.60 2.44 2.65 2.55 1.95 2.39 0.14 2.90
#> 2 2.54 2.68 2.74 2.73 2.12 2.57 0.15 3.10
#> 3 2.84 2.83 2.88 2.81 2.17 2.66 0.15 3.11
#> 4 2.38 2.43 2.72 2.54 1.93 2.38 0.13 2.85
#> 5 1.98 3.06 2.88 2.99 2.36 2.85 0.16 3.38
#> Priestley_Taylor Jones_Ritchie Hargreaves_1975
#> 1 1.82 2.85 2.41
#> 2 1.88 3.08 2.61
#> 3 1.82 3.15 2.70
#> 4 1.66 2.82 2.39
#> 5 2.08 3.42 2.92full_result <- et0_rad_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
)
obs <- full_result$FAO_PM
preds <- full_result[, c("Jensen_Haise", "Makkink",
"Priestley_Taylor", "Turc")]
metrics <- evaluate_models(obs, preds)
print(metrics)
#> Model NSE d MSE RMSE NRMSE MAE
#> 1 Jensen_Haise 0.3465057 0.8767865 2.195686 1.481785 0.3459658 1.2666413
#> 2 Makkink 0.3942794 0.7749451 2.035170 1.426594 0.3330799 1.0668363
#> 3 Priestley_Taylor 0.6535366 0.8799502 1.164088 1.078929 0.2519074 0.7874838
#> 4 Turc 0.6940078 0.8770548 1.028108 1.013957 0.2367377 0.7127894
#> MBE r R2
#> 1 31.84700 0.9338969 0.8721635
#> 2 21.76825 0.9014774 0.8126616
#> 3 16.65892 0.8453959 0.7146942
#> 4 16.02313 0.9065383 0.8218117