Relative Error When Appropriate, Absolute Otherwise
relErrV():Compute the signed relative error componentwise (“vectorized”)
between the target and current vectors,
using the absolute error, i.e., the difference
in case the relative error is not well defined, i.e., when target
is zero or infinite.
relErr():simply the mean absolute value of the relative
errors between target and current vectors; typically
the “same” as all.equal.numeric(target, vector, tolerance=0, countEQ=TRUE).
Currently useful only when both vectors are finite.
relErrV(target, current, eps0 = .Machine$double.xmin) relErr (target, current)
target |
numeric, possibly scalar. |
current |
numeric vector of |
eps0 |
non-negative number; values |
relErrV():a numeric vector of the same length as current.
relErr():a single number.
Martin Maechler, originally as part of Matrix package's ‘test-tools.R’.
all.equal.numeric() is similar in spirit but returns TRUE or
string containing the mean relative or absolute error.
## relErrV() test example: showing how it works fine with {NA, Inf, 0} :
eps <- 1e-4*c(-9, -8, -6, -4, 0.5, 1, 5)
target <- c(-1:1, 0, 0, NA, NaN, Inf, -Inf, Inf, 0 , Inf, 1 , -3:3)
current <- c(-1:1,1e-7,NaN,NA, 0 , Inf, Inf, 0, Inf, 1, Inf, -3:3+ eps)
cbind(target, current, absE = current-target, relE = relErrV(target,current))
## relErr() is pretty simple --- (possibly too simple, currently)
relErr
relErr(target, current) # NA (of course)
all.equal.numeric(target, current) ## "'is.NA' value mismatch ..."
## comparison after dropping NA's :
hasN <- is.na(target) | is.na(current)
all.equal(target[!hasN], current[!hasN], tolerance=0) # "Mean abs. diff.: Inf"
relErr(target[!hasN], current[!hasN]) # NaN (to improve?)
## comparison after only keeping cases where both are finite:
finN <- is.finite(target) & is.finite(current)
all.equal(target[finN], current[finN], tol=0) # "Mean abs.d.: 0.000279.."
all.equal(target[finN], current[finN], tol=0, countEQ=TRUE) # " " : 0.000239..
relErr(target[finN], current[finN]) # 0.0002392929Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.