hydroGOF - Goodness-of-fit functions for comparison of simulated and observed hydrological time series
RForge.net

hydroGOF

About hydroGOF
SVN access
Download/Files
News
Check results
Package R docs

new

About hydroGOF

What is hydroGOF ?
         hydroGOF is an R package that provides S3 functions implementing both statistical and graphical goodness-of-fit measures between observed and simulated values, mainly oriented to be used during the calibration, validation, and application of hydrological models.

Missing values in observed and/or simulated values can removed before the computations.

Bugs / comments / questions / collaboration of any kind are very welcomed.

Installation

# Stable version
install.
packages("hydroGOF")

# Latest (under-development) release
install.packages("hydroGOF",, "http://rforge.net/", type="source")

Package Description

Package:hydroGOF
Version:0.3-8
Title:Goodness-of-fit functions for comparison of simulated and observed hydrological time series
Maintainer:Mauricio Zambrano-Bigiarini
Description:S3 functions implementing both statistical and graphical goodness-of-fit measures between observed and simulated values, mainly oriented to be used during the calibration, validation, and application of hydrological models. Missing values in observed and/or simulated values can be removed before computations. Comments / questions / collaboration of any kind are very welcomed.
Depends:R (>= 2.10.0), zoo (>= 1.7-2)
License:GPL (>=2)

Citation

citation("hydroGOF")


Vignette

http://cran.r-project.org/web/packages/hydroGOF/vignettes/hydroGOF_Vignette.pdf

Related Material


BugReports

https://www.rforge.net/bugzilla/describecomponents.cgi?product=hydroGOF

What's New?

NEWS/ChangeLog for hydroGOF
--------------------------
0.3-8   04-Feb-2014
        o `nrmse'         : -) added formula representing the computation done when 'norm="sd"' (default). Thanks to Markus Eichhoff !.
        o `KGE'           : -) fixed error raised when 's != c(1,1,1)'
        o `pbiasfdc'      : -) now does not need to load `hydroTSM' package before being used.
                               In previous versions, when this function was applied to numeric vectors, it raised the following werror:
                               "Error in UseMethod("fdc") : no applicable method for `fdc' applied to an object of class c(`double', `numeric')"
        o `Author' field was removed from the DESCRIPTION file
        o Imports from the `zoo' package were made explicit in the NAMESPACE file (due related changes in hydroTSM)
        o `WhatsNew.txt' file was renamed to `ChangeLog'
        o 'require(zoo)' (before loading the `EgaEnEstellaQts' dataset) was removed from all the examples
 
0.3-7   03-Jun-2013
        o `valindex'     : false warning fixed. 
                           This warning raised the message "`sim' and `obs' are empty or they do not have any common pair of elements with data !!",
                           even when `sim' and `obs' were fully compatible.
        o `ggof'         : -) new argument `gofs', which allows to select which GoFs are shown when 'gof.leg=TRUE'
                           -) new argument `stype'
                           -) new argument `season.names'
                           -) `ftype' argument now allows `seasonal' value as input
                           -) internal: 'hydroTSM::daily2monthly' was replaced by `daily2monthly
                           -) internal: 'hydroTSM::daily2annual' was replaced by `daily2annual
                           -) internal: 'hydroTSM::vector2zoo' was replaced by `vector2zoo
        o `pbiasfdc'     : -) internal: 'hydroTSM::fdc' was replaced by `fdc
        o `plotbandsonly': -) internal: 'hydroTSM::vector2zoo' was replaced by `vector2zoo
        o `plot2'        : -) new argument `gofs', which allows to select which GoFs are shown when 'gof.leg=TRUE'
                           -) internal: 'hydroTSM::vector2zoo' was replaced by `vector2zoo
                           -) internal: 'hydroTSM::drawTimeAxis' was replaced by `drawTimeAxis
        o `plotbands'    : -) internal: 'hydroTSM::vector2zoo' was replaced by `vector2zoo
                           -) internal: 'hydroTSM::drawTimeAxis' was replaced by `drawTimeAxis

0.3-6   22-Mar-2013
        o `gof'         : -) now it works with matrices/data.frames of zoo/xts class. Thanks to L. Pagliero !
                          -) new arguments `s' and `method' which are passed to the `KGE' function (`out.type' is fixed to "single")
                          -) new argument `j', which is passed to the `mNSE' function
                          -) new argument `norm', which is passed to the `nrmse' function                          
                          -) new arguments `lQ.thr' and `hQ.thr', which are passed to the (optional) `pbiasfdc' function       
        o `NSE'         : -) now it works with matrices/data.frames of zoo class.
        o `me'          : -) now it works with matrices/data.frames of zoo class.
        o `mae'         : -) now it works with matrices/data.frames of zoo class.
        o `mse'         : -) now it works with matrices/data.frames of zoo class.
        o `rmse'        : -) now it works with matrices/data.frames of zoo class.     
        o `rsr'         : -) now it works with matrices/data.frames of zoo class.                                                          
        o `rSD'         : -) now it works with matrices/data.frames of zoo class.                                                          
        o `pbias'       : -) now it works with matrices/data.frames of zoo class.                                                          
        o `mNSE'        : -) now it works with matrices/data.frames of zoo class.                                                          
        o `rNSE'        : -) now it works with matrices/data.frames of zoo class.                                                                                                                    
        o `md'          : -) now it works with matrices/data.frames of zoo class.                                                                 
        o `cp'          : -) now it works with matrices/data.frames of zoo class.                                                          
        o `rPearson'    : -) now it works with matrices/data.frames of zoo class.                                                          
        o `br2'         : -) now it works with matrices/data.frames of zoo class.                                                          
        o `KGE'         : -) now it works with matrices/data.frames of zoo class.      
        o `VE'          : -) now it works with matrices/data.frames of zoo class.  
        o `d'           : -) now it works with matrices/data.frames of zoo class.         
                          -) fixed typo in the formula presented in the pdf manual (a square was missing). Thanks to T. Ladson and  Insa Thiele-Eich !
        o `rd'          : -) now it works with matrices/data.frames of zoo class. 
                          -) fixed typo in the formula presented in the pdf manual (a square was missing). Thanks to Insa Thiele-Eich !                                                   
        o `nrmse'       : -) now it works with matrices/data.frames of zoo class.                          
        o `nrmse.matrix': fixed error in checking the `norm' argument.
        o `valindex'    : a warning was added when `sim' and `obs' do not have any pair of elements with data in both variables.
        o e-mail address of maintainer was changed from the @ing.unit.it to the @gmail.com domain
        
0.3-5   19-Oct-2012
        o now it depends on `hydroTSM' >= 0.3-6, in order to allow handling sub-daily values in `ggof'
        o `ggof'      : -) now it handles sub-daily values in `sim' and `obs' (aggregation to daily/monthly/annual values not yet available)
                        -) `dates' argument accepts `POSIXct' objects
        o `KGE'       : -) two new arguments: `method', to allow KGE-2009 and KGE-2012 formulas, and `out.type', in order to allow look at the
                           individual elements of the KGE (correlation, bias, and variability)
                        -) Added reference to Kling et al. 2012 and improved documentation
                        -) Added example to show difference between KGE-2009 and KGE-2012
                        -) now it returns NA instead of an error when there are no pairs of `sim' and `obs' without missing values 
                           (thanks to Giovanni Forzieri !)
        o DESCRIPTION : 'Author@R' field was replaced by 'Authors@R'                        
        
0.3-4   03-Jul-2012
        o new function `VE', which computes the volumetric efficiency proposed by Criss and Winston 2008
         (thanks to Eric Morway for giving the final push to include it !)
        o `gof'   : VE is now included in the computed goodness-of-fit measures
        o `ggof'  : VE is now included in the computed goodness-of-fit measures
        o `plot2' : VE is now included in the computed goodness-of-fit measures (when 'leg.gof=TRUE')
        o function `.intersect' was removed and function `valindex' was improved in order to replace it
        o `zoo' package was moved from `Imports' to `Depends'
        o `methods' package is now imported, in order to avoid problems with Rscript, which currently does not load `methods'
        
0.3-3   02-May-2012
        o `gof'   : added new example and description of the output class (thanks to Kris Jaeger !)
        o `br2'   : the new example included in version 0.3-2 was improved
        o `ggof'  : fixed problem with `ylim' when some elements in `sim' or `obs' were NA (the issue was in the `plot2' function)
        o `plot2' : fixed problem with `ylim' when some elements in `x' or `y' were NA
                    
0.3-2   07-Oct-2011
        o `br2'   : fixed documentation error in its formula (thanks to Jan Corluy !), and a new example was added.
                    Its value was already computed in the correct way.
        
0.3-1   14-Sep-2011
        o `ggof'  : fixed problem when `ylim' is specified by the user (the issue was in the `plot2' function)
        o `plot2' : fixed problem when `ylim' is specified by the user

0.3-0   01-Sep-2011

        o NAMESPACE created, which leads to reduced dependency on the package hydroTSM.
        o hydroGOF now depends on xts >= 0.8-2 (=> zoo >= 1.7-2), in order to make use of improved plotting capabilities for ts objects.
          The first release of `xts' after the 0.8-0 (which was set as the default building block for plotting time series in hydroTSM) 
          was the 0.8-2, and appeared on CRAN on August 9th, 2011       
        o now it depends on `hydroTSM' >= 0.3-0, in order to use the re-written 'drawxaxis/drawTimeAxis' function.      
        o a vignette is now included with the package, in order to illustrate some basic functionality of hydroGOF
        o `plot2'        : -) better display of time series objects, when `plot.type' is `single'.
                              The (nicer) `plot.xts' function is used instead of the previous `plot.zoo'.
                           -) `tick.tstep' and `lab.tstep' now accept the values: "auto""weeks""hours""minutes"
                              "seconds", which should work with sub-daily time series
                           -) when `cal.ini' is provided, all the values in `obs' and `sim' with dates previous to `cal.ini' are SKIPPED 
                              from the computation of the goodness-of-fit measures (when 'gof.leg=TRUE'), but their values are still plotted, 
                              in order to examine if the warming up period was too short, acceptable or too long for the chosen calibration
                              period.
                           -) fixed problem with the `cex.axis' argument when 'plot.type="multiple"' (this was a zoo problem, and it was 
                              fixed in zoo_1.7-1).                         
        o `ggof'         : -) better display of time series objects (by using the new `plot2' and 'drawxaxis/drawTimeAxis')
                           -) it works with xts objects as well.
                           -) `tick.tstep' and `lab.tstep' now accept the values: "auto""quarters""weeks""hours"
                              "minutes", and "seconds", and its default value was changed to "auto"
                           -) the name of `sim' and `obs' are now used as default for the legend.
                           -) when `cal.ini' is provided, all the values in `obs' and `sim' with dates previous to `cal.ini' are SKIPPED 
                              from the computation of the goodness-of-fit measures (when 'gof.leg=TRUE'), but their values are still plotted, 
                              in order to examine if the warming up period was too short, acceptable or too long for the chosen calibration
                              period.
                           -) added error checking for `ftype' when `sim' and `obs' are not time series.
        o `plotbands'    : -) better display of time series objects. The (nicer) `plot.xts' function is used 
                              instead of the previous `plot.zoo', and it uses the new `drawTimeAxis' function.
                           -) `tick.tstep' and `lab.tstep' now accept the values: "auto""quarters""weeks""hours"
                              "minutes", and "seconds", and its default value was changed to "auto"
        o `plotbandsonly': -) it works with xts objects as well
                           -) `legend' argument was removed (it was not used)
                           -) `leg.cex' argument was removed (it was not used)
        o `NSeff'   : -) its name was changed to `NSE'. The old name `NSeff' is deprecated but is still working for backwards compatibility.
                      -) now it returns NA instead of an error when the denominator of its formula is equal to zero.
        o `rNSeff'  : -) its name was changed to `rNSE'. The old name `rNSeff' is deprecated but is still working for backwards compatibility.
                      -) now it returns NA instead of an error when the denominator of its formula is equal to zero.
        o `mNSeff'  : -) its name was changed to `mNSE'. The old name `mNSeff' is deprecated but is still working for backwards compatibility.
                      -) now it returns NA instead of an error when the denominator of its formula is equal to zero.
        o `rd'      : -) a warning message is created when -at least one of- the observed values is/are zero,
                         which makes impossible to compute this index (thanks to Tom Purucker !)
                      -) now it returns NA instead of an error when the denominator of its formula is equal to zero.
        o `rNSE'    : -) a warning message is created when -at least one of- the observed values is/are zero,
                         which makes impossible to compute this index
                      -) now it returns NA instead of an error when the denominator of its formula is equal to zero.
        o `md'      : -) now it returns NA instead of an error when the denominator of its formula is equal to zero.
        o `pbias'   : -) now it returns NA instead of an error when the denominator of its formula is equal to zero.
        o `pbiasfdc': -) now it returns NA instead of an error when the denominator of its formula is equal to zero.
        o `pfactor' : -) now it returns NA instead of an error when the denominator of its formula is equal to zero.
        o `rfactor' : -) now it returns NA instead of an error when the denominator of its formula is equal to zero.
        o `rSD'     : -) now it returns NA instead of an error when the denominator of its formula is equal to zero.
        o `RSR'     : -) now it returns NA instead of an error when the denominator of its formula is equal to zero.
        o `NRMSE'   : -) now it returns NA instead of an error when the denominator of its formula is equal to zero.
        o `KGE'     : -) now it returns NA instead of '-Inf' when the denominator of Alpha or Beta were equal to zero.  
        o `rd'      : -) fixed documentation error in its formula (thanks to Tom Purucker !). Its value was already computed in the correct way.
        o New dimension checking (number of columns and rows) for all the functions that are applied over a matrix or data.frame



###################################################
# Previous Releases (see old file 'WhatsNew.txt)' #
###################################################

0.2-2: Release Date: 14-Apr-2011
0.2-1: Release Date: 30-Nov-2010
0.2-0: Release Date: 07-Oct-2010
0.1.3: Release Date: 01-Dec-2009
0.1.2: Release Date: 29-Oct-2009
0.1.1: Release Date: 05-Oct-2009
0.1.0: Release Date: 07-Sep-2009 (but the functions have been developed since 2008)

See Also

  • hydroPSO: Model-independent Particle Swarm Optimisation (PSO) for environmental/hydrological models.
  • hydroTSM: Time series management, analysis and interpolation for hydrological modelling.

Visitors