asinlink.RdComputes the arcsine link, including its inverse and the first few derivatives.
asinlink(theta, bvalue = NULL, inverse = FALSE,
deriv = 0, short = TRUE, tag = FALSE, c10 = c(4, -pi))Numeric or character. See below for further details.
See Links.
Details at Links.
Similar to sqrtlink.
The default is intended to match
lcalogitlink for binomialff
at binomial probabilities (theta) equal
to 0.5.
Function alogitlink
gives some motivation for this link.
However, the problem with this link
is that it is bounded by default
between (-pi, pi)
so that it can be unsuitable for regression.
This link is a scaled and centred
CDF of the arcsine distribution.
The centring is chosen so that
asinlink(0.5) is 0,
and the scaling is chosen so that
asinlink(0.5, deriv = 1) and
logitlink(0.5, deriv = 1)
are equal (the value 4 actually),
hence this link will operate similar to the
logitlink
when close to 0.5.
Similar to logitlink
but using different formulas.
It is possible that the scaling might change in the future.
p <- seq(0.01, 0.99, length= 10)
asinlink(p)
#> [1] -2.7409230 -1.7334784 -1.1514533 -0.6655492 -0.2182104 0.2182104
#> [7] 0.6655492 1.1514533 1.7334784 2.7409230
max(abs(asinlink(asinlink(p), inv = TRUE) - p)) # 0?
#> [1] 1.110223e-16
if (FALSE) { # \dontrun{
par(mfrow = c(2, 2), lwd = (mylwd <- 2))
y <- seq(-4, 4, length = 100)
p <- seq(0.01, 0.99, by = 0.01)
for (d in 0:1) {
matplot(p, cbind(logitlink(p, deriv = d), probitlink(p, deriv = d)),
type = "n", col = "blue", ylab = "transformation",
log = ifelse(d == 1, "y", ""),
las = 1, main = if (d == 0) "Some probability link functions"
else "First derivative")
lines(p, logitlink(p, deriv = d), col = "green")
lines(p, probitlink(p, deriv = d), col = "blue")
lines(p, clogloglink(p, deriv = d), col = "tan")
lines(p, asinlink(p, deriv = d), col = "red3")
if (d == 0) {
abline(v = 0.5, h = 0, lty = "dashed")
legend(0, 4.5, c("logitlink", "probitlink", "clogloglink",
"asinlink"), lwd = mylwd,
col = c("green", "blue", "tan", "red3"))
} else
abline(v = 0.5, lwd = 0.5, col = "gray")
}
for (d in 0) {
matplot(y, cbind( logitlink(y, deriv = d, inverse = TRUE),
probitlink(y, deriv = d, inverse = TRUE)),
type = "n", col = "blue", xlab = "transformation", ylab = "p",
main = if (d == 0) "Some inverse probability link functions"
else "First derivative", las=1)
lines(y, logitlink(y, deriv = d, inverse = TRUE), col = "green")
lines(y, probitlink(y, deriv = d, inverse = TRUE), col = "blue")
lines(y, clogloglink(y, deriv = d, inverse = TRUE), col = "tan")
lines(y, asinlink(y, deriv = d, inverse = TRUE), col = "red3")
if (d == 0) {
abline(h = 0.5, v = 0, lwd = 0.5, col = "gray")
legend(-4, 1, c("logitlink", "probitlink", "clogloglink",
"asinlink"), lwd = mylwd,
col = c("green", "blue", "tan", "red3"))
}
}
par(lwd = 1)
} # }