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

hydroGOF

About hydroGOF
GIT 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.4-1
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.4-1  Under-development
        o br2'       : new argument dec' to allow the user to specify the number of decimals shown in the output object. Default value set to 1 for compatibility with previous versions. Thanks to Ken Newman !


0.4-0  11-Mar-2020
        o Package tested against R Under development (unstable) (2020-03-10 r77920) -- "Unsuffered Consequences", following an imperative request made by CRAN.
        o Citation file changed, following CRAN comments.
        o Vignette on Goodness-of-fit Measures to Compare Obserligved and Simulated Values was moved from Sweave to Knitr.
        o New references were added for `KGE' (Santos et. al, 2018; Knoben et al., 2019; Mizukami et al., 2019)
        o New reference was added for `me' (Hill et al., 2006) Thanks to Erli Pinto dos Santos !.
        o `br2'       : new argument 'use.abs=FALSE', to allow the user to use 'abs(b)' as condition to decide whether using abs(b)*r2 or [1/abs(b)]*r2 in equation (5) in Krausse et al. (2005). Thanks to Ellie White !



0.3-9  07-Ago-2017
        o repository management moved from SVN to GIT, including rforge.
        o citation with DOI is now possible (and new CITATION file).
        o `NSE'         : -) three new arguments (FUN, epsilon, epsilon.value), added to allow pre-processing simulated and observed values (e.g., log, sqrt, 1/x)                                              
        o KGE'         : -) now works correctly when 'out.type="full"', even if sim' and `obs' do not have a single element in common (i.e., results in labelled NAs)
        o `d'           : -) now it returns NA when it is not possible to compute the index of agreement (sum((abs(sim-Om)+abs(obs-Om))^2)=0)
        o ggof'        : -) legend and axis fonts are preserved when pt.style' is set to bar
                          -) fixed error raised for xts >= 0.10-0
        o plot2'       : -) legend and axis fonts are preserved when pt.style' is set to bar
                          -) fixed error raised for xts >= 0.10-0
        o 'plotbands    : -) fixed error raised for xts >= 0.10-0
        o `rNSE'        : -) fixed typo in the formula presented in the documentation (thanks to James Ward!)
        o `rPearson'    : -) now it is exported in the NASPECE and visible to the users.
        o `md'          : -) correct small typo in documentation (thanks to Raphael Felber !)
        o rSD'         : -) missing values in obs' or `sim' are now removed before the computations (thanks to Colin Hansen !)
        o nrmse'       : -) missing values in obs' or `sim' are now removed before the computations (thanks to Colin Hansen !)
        o NAMESPACE file:
                          -) One ninty five (95) S3 methods are now registered.
                          -) Web page of the package updated to the new github repository.
                          -) CRAN website removed from URL field in DESCRIPTION file (requested by CRAN).
                          -) plot.xts' is no longer imported from xts' package (to avoid error with xts >= 0.10-0)
                          -) axTicksByTime' is now imported from xts'
        o NAMESPACE file     : -) several functions explicitly imported from the c(stats, utils, methods, graphics, grDevices) to be compatible with R 3.3.0.
                               -) `plot.xts' NOT used anymore, to avoid error raised by xts>=0.10-0
                               -) index' and 'time<-' imported from zoo' package.
                               -) over', 'coordinates<-', 'proj4string<-' imported from sp' package.
                               -) readShapePoly' imported from maptools' package.
                               -) start', end' and window', aggregate' are now explicitly imported from the stats' package (affects dwi', izoo2rzoo' and monthlyfunction')
                               -) Fifty three (53) S3 methods are now registered.

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


Note:
  • The previous number of visitors starts on July 21th 2015, due to a mayor crash of the www4 server of ClustrMaps in March 2015.
  • A conservative number of visitors before reseting the counter on July 21th 2015 was provided by Google Analytics (implemented months after ClustrMaps on this site): 3691 visitors  from 101 different countries.