Rhobit Link Function
rhobitlink.RdComputes the rhobit link transformation, including its inverse and the first two derivatives.
Usage
rhobitlink(theta, bminvalue = NULL, bmaxvalue = NULL,
inverse = FALSE, deriv = 0, short = TRUE, tag = FALSE)Arguments
- theta
Numeric or character. See below for further details.
- bminvalue, bmaxvalue
Optional boundary values, e.g., values of
thetawhich are less than or equal to -1 can be replaced bybminvaluebefore computing the link function value. And values ofthetawhich are greater than or equal to 1 can be replaced bybmaxvaluebefore computing the link function value. SeeLinks.- inverse, deriv, short, tag
Details at
Links.
Details
The rhobitlink link function is commonly used for
parameters that lie between \(-1\) and \(1\). Numerical
values of theta close to \(-1\) or \(1\) or out of
range result in Inf, -Inf, NA or NaN.
Value
For deriv = 0, the rhobit of theta, i.e.,
log((1 + theta)/(1 - theta)) when inverse =
FALSE, and if inverse = TRUE then (exp(theta) -
1)/(exp(theta) + 1).
For deriv = 1, then the function
returns d eta / d theta as a
function of theta if inverse = FALSE,
else if inverse = TRUE then it returns the reciprocal.
Note
Numerical instability may occur when theta is close
to \(-1\) or \(1\). One way of overcoming this is to
use bminvalue, etc.
The correlation parameter of a standard bivariate normal distribution lies between \(-1\) and \(1\), therefore this function can be used for modelling this parameter as a function of explanatory variables.
The link function rhobitlink is very similar to
fisherzlink, e.g., just twice the value of
fisherzlink.
Examples
theta <- seq(-0.99, 0.99, by = 0.01)
y <- rhobitlink(theta)
if (FALSE) { # \dontrun{
plot(theta, y, type = "l", ylab = "", main = "rhobitlink(theta)")
abline(v = 0, h = 0, lty = 2)
} # }
x <- c(seq(-1.02, -0.98, by = 0.01), seq(0.97, 1.02, by = 0.01))
rhobitlink(x) # Has NAs
#> [1] NaN NaN -Inf -5.293305 -4.595120 4.184591 4.595120
#> [8] 5.293305 Inf NaN NaN
rhobitlink(x, bminvalue = -1 + .Machine$double.eps,
bmaxvalue = 1 - .Machine$double.eps) # Has no NAs
#> [1] -36.736801 -36.736801 -36.736801 -5.293305 -4.595120 4.184591
#> [7] 4.595120 5.293305 36.736801 36.736801 36.736801