TypicalVGAMlink(theta, someParameter = 0, bvalue = NULL, inverse = FALSE,
deriv = 0, short = TRUE, tag = FALSE)
theta
is character then inverse
and
deriv
are ignored.
The name theta
0 < theta
then
values of theta
which are less than or equal to 0 can be
replaced by bvalue
before computing the link function value.
Values of theta
which TRUE
and deriv = 0
then
the inverse link value
$\theta$ is returned, hence the argument
theta
is really $\eta$.
In all other cases, the argument theta
is
really $\theta$.blurb
slot of a
vglmff-class
object.
These arguments are used only if theta
is character,
and gives the formula for the link
Here are the general details.
If inverse = FALSE
and deriv = 0
(default) then the
ordinary link
function $\eta = g(\theta)$ is returned.
If inverse = TRUE
and deriv = 0
then the inverse
link function value is returned, hence theta
is really
$\eta$ (the only occasion this happens).
If inverse = FALSE
and deriv = 1
then it is
$d\eta / d\theta$
as a function of $\theta$.
If inverse = FALSE
and deriv = 2
then it is
$d^2\eta / d\theta^2$
as a function of $\theta$.
If inverse = TRUE
and deriv = 1
then it is
$d\theta / d\eta$
as a function of $\theta$.
If inverse = TRUE
and deriv = 2
then it is
$d^2\theta / d\eta^2$
as a function of $\theta$.
It is only when deriv = 1
that
linkfun(theta, deriv = 1, inverse = TRUE)
and
linkfun(theta, deriv = 1, inverse = FALSE)
are reciprocals of each other.
In particular,
linkfun(theta, deriv = 2, inverse = TRUE)
and
linkfun(theta, deriv = 2, inverse = FALSE)
are not reciprocals of each other in general.
0.9-9
(date was around 2015-07).
Formerly, linkfun(theta, deriv = 1)
is now
linkfun(theta, deriv = 1, inverse = TRUE)
, or equivalently,
1 / linkfun(theta, deriv = 1, inverse = TRUE)
.
Also, formerly, linkfun(theta, deriv = 2)
was
1 / linkfun(theta, deriv = 2, inverse = TRUE)
.
This was a bug.
Altogether, these are big changes and the user should beware!
One day in the future, all "link"
.
The following is a brief enumeration of all
For parameters lying between 0 and 1 (e.g., probabilities):
logit
,
probit
,
cloglog
,
cauchit
,
foldsqrt
,
logc
,
golf
,
polf
,
nbolf
.
For positive parameters (i.e., greater than 0):
loge
,
negloge
,
powerlink
.
For parameters greater than 1:
loglog
.
For parameters between $-1$ and $1$:
fisherz
,
rhobit
.
For parameters between $A$ and $B$:
extlogit
,
logoff
($B = \infty$).
For unrestricted parameters (i.e., any value):
identity
,
negidentity
,
reciprocal
,
negreciprocal
.
TypicalVGAMfamilyFunction
,
linkfun
,
vglm
,
vgam
,
rrvglm
.
cqo
,
cao
.logit("a")
logit("a", short = FALSE)
logit("a", short = FALSE, tag = TRUE)
logoff(1:5, offset = 1) # Same as log(1:5 + 1)
powerlink(1:5, power = 2) # Same as (1:5)^2
# This is old and no longer works:
logoff(1:5, earg = list(offset = 1))
powerlink(1:5, earg = list(power = 2))
fit1 <- vgam(agaaus ~ altitude, binomialff(link = "cloglog"), hunua) # best
fit2 <- vgam(agaaus ~ altitude, binomialff(link = cloglog ), hunua) # okay
# This no longer works since "clog" is not a valid VGAM link function:
fit3 <- vgam(agaaus ~ altitude, binomialff(link = "clog"), hunua) # not okay
# No matter what the link, the estimated var-cov matrix is the same
y <- rbeta(n = 1000, shape1 = exp(0), shape2 = exp(1))
fit1 <- vglm(y ~ 1, betaR(lshape1 = "identitylink", lshape2 = "identitylink"),
trace = TRUE, crit = "coef")
fit2 <- vglm(y ~ 1, betaR(lshape1 = logoff(offset = 1.1),
lshape2 = logoff(offset = 1.1)), trace = TRUE)
vcov(fit1, untransform = TRUE)
vcov(fit1, untransform = TRUE) - vcov(fit2, untransform = TRUE) # Should be all 0s
\dontrun{ # This is old:
fit1@misc$earg # Some 'special' parameters
fit2@misc$earg # Some 'special' parameters are here
}
par(mfrow = c(2, 2))
p <- seq(0.05, 0.95, len = 200) # A rather restricted range
x <- seq(-4, 4, len = 200)
plot(p, logit(p), type = "l", col = "blue")
plot(x, logit(x, inverse = TRUE), type = "l", col = "blue")
plot(p, logit(p, deriv = 1), type = "l", col = "blue") # 1 / (p*(1-p))
plot(p, logit(p, deriv = 2), type = "l", col = "blue") # (2*p-1)/(p*(1-p))^2
Run the code above in your browser using DataLab