Centralized root mean square error (CRMSE)
This function computes the centralized root mean square error, which is defined as:
$crmse(λ, φ) = √{\frac{1}{t_{f}-t_{0}}\int_{t_{0}}^{t_{f}}[(v_{mod}(t,λ, φ)-\overline{v_{mod}}(λ, φ))-(v_{ref}(t,λ, φ)-\overline{v_{ref}}(λ, φ))]^{2}dt}$
where λ is the longitude, φ is the latitude, t is the time, t_0 is the initial time step, t_f is the final time time step, v_{mod} is a modelled variable, v_{ref} is the corresponding reference variable, \overline{v_{mod}} is the time-mean modelled variable, and \overline{v_{ref}} is the time-mean reference variable.
intFun.crmse(mod.anom, ref.anom)
mod.anom |
An R object (e.g. monthly anomalies from model output) |
ref.anom |
An R object (e.g. monthly anomalies from reference data) |
An R object that shows the centralized root mean square error
library(raster) # create two raster stacks for(i in 1:100) { mod <- raster::raster(matrix(runif(100,0,10), ncol=10)) ref <- raster::raster(matrix(runif(100,0,10), ncol=10)) assign(paste('mod', i , sep='_'), mod) assign(paste('ref', i , sep='_'), ref) } my.list.mod <- lapply(ls(pattern='mod_'), get) my.list.ref <- lapply(ls(pattern='ref_'), get) mod <- do.call(stack, my.list.mod) ref <- do.call(stack, my.list.ref) # compute anomalies mod.anom <- intFun.anom(mod) ref.anom <- intFun.anom(ref) # compute CRMSE crmse <- intFun.crmse(mod.anom, ref.anom) plot(crmse); text(crmse, digits=2)
Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.