#' Function to return the Nash-Sutcliffe value between the natural logarithms of the two data series
#'
#' This function accepts two data frames containing daily data series and returns the Nash-Sutcliffe value of the natural
#' logarithms of the data, with zeros removed.
#'
#' @param timeseries1 data frame containing value data for one of the chosen timeseries
#' @param timeseries2 data frame continaing value data for the second chosen timeseries
#' @return nselog Nash-Sutcliffe value between the natural log of the two timeseries
#' @export
#' @examples
#' obs_data<-paste(system.file(package="NWCCompare"),"/data/obs_data.csv",sep="")
#' mod_data<-paste(system.file(package="NWCCompare"),"/data/mod_data.csv",sep="")
#' timeseries1<-read.csv(obs_data)$discharge
#' timeseries2<-read.csv(mod_data)$discharge
#' nselog(timeseries1,timeseries2)
nselog<-function(timeseries1,timeseries2) {
# Count of zeros in dataset
sszeros<<-subset(timeseries1,timeseries1==0)
czeros<<-length(sszeros)
# Put timeseries1 and timeseries2 into a data frame and add header
obsestq<-data.frame(timeseries1,timeseries2)
colnames(obsestq)<-c("obs","est")
#attach(obsestq)
# If zeroes in timeseries1, display message and delete zeroes
if (czeros>0) {
cat("\n", czeros, "streamflows with a zero value were detected in this dataset. \nThese values will be removed before computing the \nNash-Sutcliffe efficiency value from the natural logs \nof the streamflows.")
} else {} #Do nothing if no zeros
nozeros<-subset(obsestq,obsestq$obs>0)
# Compute NS
numerat<-sum((log(nozeros$obs)-log(nozeros$est))^2,na.rm=TRUE)
denomin<-sum((log(nozeros$obs)-mean(log(nozeros$obs),na.rm=TRUE))^2,na.rm=TRUE)
nselog<-(1-(numerat/denomin))
return(nselog)
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.