CreateInputsCrit.Rd 5.15 KB
Newer Older
Delaigue Olivier's avatar
Delaigue Olivier committed
1
\encoding{UTF-8}
2
3


Delaigue Olivier's avatar
Delaigue Olivier committed
4
5
\name{CreateInputsCrit}
\alias{CreateInputsCrit}
6
7


Delaigue Olivier's avatar
Delaigue Olivier committed
8
\title{Creation of the InputsCrit object required to the ErrorCrit functions}
9
10


Delaigue Olivier's avatar
Delaigue Olivier committed
11
12
13
14
\usage{
CreateInputsCrit(FUN_CRIT, InputsModel, RunOptions, Qobs, BoolCrit = NULL,
  transfo = "", Ind_zeroes = NULL, epsilon = NULL)
}
15
16


Delaigue Olivier's avatar
Delaigue Olivier committed
17
18
19
20
21
22
23
\arguments{
\item{FUN_CRIT}{[function] error criterion function (e.g. ErrorCrit_RMSE, ErrorCrit_NSE)}

\item{InputsModel}{[object of class \emph{InputsModel}] see \code{\link{CreateInputsModel}} for details}

\item{RunOptions}{[object of class \emph{RunOptions}] see \code{\link{CreateRunOptions}} for details}

24
\item{Qobs}{[numeric] series of observed discharges [mm/time step]}
Delaigue Olivier's avatar
Delaigue Olivier committed
25
26
27

\item{BoolCrit}{(optional) [boolean] boolean giving the time steps to consider in the computation (all time steps are consider by default)}

28
\item{transfo}{(optional) [character] name of the transformation (e.g. \code{""}, \code{"sqrt"}, \code{"log"}, \code{"inv"}, \code{"sort"})}
Delaigue Olivier's avatar
Delaigue Olivier committed
29

30
\item{Ind_zeroes}{(optional) [numeric] indices of the time steps where zeroes are observed}
Delaigue Olivier's avatar
Delaigue Olivier committed
31
32
33

\item{epsilon}{(optional) [numeric] epsilon to add to all Qobs and Qsim if \emph{$Ind_zeroes} is not empty}
}
34
35


Delaigue Olivier's avatar
Delaigue Olivier committed
36
37
38
\value{
[list] object of class \emph{InputsCrit} containing the data required to evaluate the model outputs; it can include the following:
         \tabular{ll}{
39
40
         \emph{$BoolCrit  }  \tab   [boolean] boolean giving the time steps considered in the computation \cr
         \emph{$Qobs      }  \tab   [numeric] series of observed discharges [mm/time step] \cr
Delaigue Olivier's avatar
Delaigue Olivier committed
41
         \emph{$transfo   }  \tab   [character] name of the transformation (e.g. "", "sqrt", "log", "inv", "sort") \cr
42
         \emph{$Ind_zeroes}  \tab   [numeric] indices of the time steps where zeroes are observed \cr
Delaigue Olivier's avatar
Delaigue Olivier committed
43
44
45
         \emph{$epsilon   }  \tab   [numeric] epsilon to add to all Qobs and Qsim if \emph{$Ind_zeroes} is not empty \cr
         }
}
46
47


Delaigue Olivier's avatar
Delaigue Olivier committed
48
\description{
49
Creation of the \emph{InputsCrit} object required to the \code{ErrorCrit*} functions.
Delaigue Olivier's avatar
Delaigue Olivier committed
50
}
51
52


Delaigue Olivier's avatar
Delaigue Olivier committed
53
\details{
54
Users wanting to use \code{FUN_CRIT} functions that are not included in 
Delaigue Olivier's avatar
Delaigue Olivier committed
55
56
the package must create their own InputsCrit object accordingly.
}
57
58


Delaigue Olivier's avatar
Delaigue Olivier committed
59
\examples{
60
library(airGR)
unknown's avatar
unknown committed
61
62

## loading catchment data
Delaigue Olivier's avatar
Delaigue Olivier committed
63
64
65
data(L0123001)

## preparation of the InputsModel object
66
67
InputsModel <- CreateInputsModel(FUN_MOD = RunModel_GR4J, DatesR = BasinObs$DatesR, 
                                 Precip = BasinObs$P, PotEvap = BasinObs$E)
Delaigue Olivier's avatar
Delaigue Olivier committed
68
69

## run period selection
70
71
Ind_Run <- seq(which(format(BasinObs$DatesR, format = "\%d/\%m/\%Y")=="01/01/1990"), 
               which(format(BasinObs$DatesR, format = "\%d/\%m/\%Y")=="31/12/1999"))
Delaigue Olivier's avatar
Delaigue Olivier committed
72
73

## preparation of the RunOptions object
74
75
RunOptions <- CreateRunOptions(FUN_MOD = RunModel_GR4J,
                               InputsModel = InputsModel, IndPeriod_Run = Ind_Run)
Delaigue Olivier's avatar
Delaigue Olivier committed
76
77

## simulation
78
79
80
Param <- c(734.568, -0.840, 109.809, 1.971)
OutputsModel <- RunModel(InputsModel = InputsModel, RunOptions = RunOptions, 
                         Param = Param, FUN = RunModel_GR4J)
Delaigue Olivier's avatar
Delaigue Olivier committed
81
82

## efficiency criterion: Nash-Sutcliffe Efficiency
83
84
85
InputsCrit <- CreateInputsCrit(FUN_CRIT = ErrorCrit_NSE, InputsModel = InputsModel, 
                               RunOptions = RunOptions, Qobs = BasinObs$Qmm[Ind_Run])
OutputsCrit <- ErrorCrit_NSE(InputsCrit = InputsCrit, OutputsModel = OutputsModel)
Delaigue Olivier's avatar
Delaigue Olivier committed
86
87
88

## efficiency criterion: Nash-Sutcliffe Efficiency on log-transformed flows
transfo <- "log"
89
90
91
92
InputsCrit <- CreateInputsCrit(FUN_CRIT = ErrorCrit_NSE, InputsModel = InputsModel, 
                               RunOptions = RunOptions, Qobs = BasinObs$Qmm[Ind_Run],
                               transfo = transfo)
OutputsCrit <- ErrorCrit_NSE(InputsCrit = InputsCrit, OutputsModel = OutputsModel)
Delaigue Olivier's avatar
Delaigue Olivier committed
93
94

## efficiency criterion: Nash-Sutcliffe Efficiency above a threshold (q75\%)
95
96
97
98
99
100
BoolCrit <- rep(TRUE, length(BasinObs$Qmm[Ind_Run])); 
BoolCrit[BasinObs$Qmm[Ind_Run]<quantile(BasinObs$Qmm[Ind_Run], 0.75, na.rm = TRUE)] <- FALSE
InputsCrit <- CreateInputsCrit(FUN_CRIT = ErrorCrit_NSE, InputsModel = InputsModel, 
                               RunOptions = RunOptions, Qobs = BasinObs$Qmm[Ind_Run],
                               BoolCrit = BoolCrit)
OutputsCrit <- ErrorCrit_NSE(InputsCrit = InputsCrit, OutputsModel = OutputsModel)
Delaigue Olivier's avatar
Delaigue Olivier committed
101
102

## efficiency criterion: Kling-Gupta Efficiency
103
104
105
InputsCrit <- CreateInputsCrit(FUN_CRIT = ErrorCrit_KGE, InputsModel = InputsModel, 
                               RunOptions = RunOptions, Qobs = BasinObs$Qmm[Ind_Run])
OutputsCrit <- ErrorCrit_KGE(InputsCrit = InputsCrit, OutputsModel = OutputsModel)
Delaigue Olivier's avatar
Delaigue Olivier committed
106

107
## efficiency criterion: Kling-Gupta Efficiency below a threshold (q10\%) on log-transformed flows
Delaigue Olivier's avatar
Delaigue Olivier committed
108
transfo  <- "log"
109
110
111
112
113
114
BoolCrit <- rep(TRUE, length(BasinObs$Qmm[Ind_Run])); 
BoolCrit[BasinObs$Qmm[Ind_Run]>quantile(BasinObs$Qmm[Ind_Run], 0.10, na.rm = TRUE)] <- FALSE
InputsCrit <- CreateInputsCrit(FUN_CRIT = ErrorCrit_KGE,
                               InputsModel = InputsModel,RunOptions = RunOptions, 
                               Qobs = BasinObs$Qmm[Ind_Run], BoolCrit = BoolCrit, transfo = transfo)
OutputsCrit <- ErrorCrit_KGE(InputsCrit = InputsCrit, OutputsModel = OutputsModel)
Delaigue Olivier's avatar
Delaigue Olivier committed
115
}
116
117


Delaigue Olivier's avatar
Delaigue Olivier committed
118
\author{
119
Laurent Coron
Delaigue Olivier's avatar
Delaigue Olivier committed
120
}
121
122


Delaigue Olivier's avatar
Delaigue Olivier committed
123
124
125
126
\seealso{
\code{\link{RunModel}}, \code{\link{CreateInputsModel}}, \code{\link{CreateRunOptions}}, \code{\link{CreateCalibOptions}}
}