R implementation of Target Diagrams proposed in Jolliff, J.; Kindle, J. C.; Shulman, I.; Penta, B.; Friedrichs, M. A. M.; Helber, R. & Arnone, R. A. Summary diagrams for coupled hydrodynamic-ecosystem model skill assessment Journal of Marine Systems, 2009, 76, 64-82.
The Target Diagram is derived from the relation between the unbiased RMSE, MBE, and RMSE. In a Cartesian coordinate system, the x-axis represents the unbiased RMSE (variance of the error), and the y-axis represents the MBE. Therefore the distance between any point to the origin is equal to the RMSE. Because the unbiased RMSE is always positive, the left area of the coordinate system is empty with this scheme. With additional information this region may be also used: the unbiased RMSE is multiplied by the sign of the difference between the standard deviations of model and observations.
The resulting diagram provides three different measures: whether the model overestimates or underestimates (positive or negative values of the MBE on the y-axis, respectively), whether the model standard deviation is larger or smaller than the standard deviation of the measurements (positive or negative values on the x-axis, respectively), and the error performance as quantified by the RMSE represented as the distance to the coordinates origin. This tool is particularly powerful when comparing competing models.
Install the stable version with:
To install the development version you need the devtools package:
install.packages('devtools') devtools::install_github('tdr', 'oscarperpinan')
There are two main functions,
lattice users, and
ggplot2 users. Both of them have a
data argument, a
data.frame with three columns containing the error statistics between a set of models and a vector of observations. This
data.frame can be produced with the
applyStats function included in the package.
There is an example data set in the package.
Now in your environment you will find a
pvModels and a vector named
library(zoo) z <- zoo(cbind(pvModels, pvObs), order = as.Date(rownames(pvModels))) plot(z, plot.type = 'single', col = c(rep('gray', 22), 'red'), ylab = '', xlab = '')
applyStats function computes the error statistics between models and observations required by the target diagram:
errModel <- applyStats(pvModels, pvObs)
We are ready to display the result, using
targetDiagram(errModel, groups = model)
target_diagram(errModel, fill = 'model')