我试图在R中引导统计数据Nash-Sutcliffe Efficiency(NSE)。它用于评估水文模型模拟数据对观测数据的性能。包装内的功能' hydroGOF'存在以计算统计量(NSE())。统计数据的定义如下:
描述
sim和obs之间的Nash-Sutcliffe效率,处理缺失值。
用法
NSE(sim,obs,...)
我可以使用此代码成功引导相关系数(对象'运行'是一个双列数据框(观察到的径流和模拟径流):
mycorRun <- function(Run, i) cor(Run[i,])[1,2]
bootcorRun <- boot(Run, mycorRun,R=10000)
但是,当我尝试使用NSE函数模仿时,我收到以下错误:
library(hydroGOF)
observed.runoff <- c(0.3, 0.5, 1.1, 0.6, 0.1)
simulated.runoff <- c(0.5, 0.7, 0.8, 0.4, 0.3)
runoff <- data.frame(observed.runoff, simulated.runoff)
myNSERun <- function(runoff, i) NSE(runoff[i,])[1,2]
bootNSERun <- boot(runoff, myNSERun, R=10000)
as.matrix(obs)中的错误:参数&#34; obs&#34;缺少,没有默认
关于如何编写统计函数的任何想法?我尝试使用x&amp; amp创建自己的功能。 y变量而不是观察到的&amp;模拟,但它给了我同样的错误。
答案 0 :(得分:0)
删除代码中的[1,2] - &gt; NSE(径流[I,])。但是,我不确定引导NSE是否是明智的选择,因为时间序列中存在时间相关性,而普通引导通常取决于iid变量。