Learn R Programming

VGAM (version 0.7-6)

Links: Link functions for VGLM/VGAM/etc. families

Description

The VGAM package provides a number of (parameter) link functions which are described in general here. Collectively, they offer the user considerable flexibility for modelling data.

Usage

TypicalVGAMlinkFunction(theta, earg=list(), inverse=FALSE,
                        deriv=0, short=TRUE, tag=FALSE)

Arguments

Value

  • Returns one of the link function value or its first or second derivative, the inverse link or its first or second derivative, or a character description of 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=FALSE and deriv=1 then it is $d\theta / d\eta$ as a function of $\theta$. If inverse=FALSE and deriv=2 then it is $d^2\theta / d\eta^2$ as a function of $\theta$.

    If inverse=TRUE and deriv=0 then the inverse link function is returned, hence theta is really $\eta$. If inverse=TRUE and deriv is positive then the reciprocal of the same link function with (theta=theta, earg=earg, inverse=TRUE, deriv=deriv) is returned.

Details

The following is a brief enumeration of all VGAM link functions.

For parameters lying between 0 and 1 (e.g., probabilities): logit, probit, cloglog, cauchit, loglog, fsqrt, logc, golf, polf, nbolf.

For positive parameters (i.e., greater than 0): loge, nloge, powl.

For parameters greater than 1: loglog.

For parameters between $-1$ and $1$: fisherz, rhobit.

For parameters between $A$ and $B$: elogit, logoff ($B=\infty$).

For unrestricted parameters (i.e., any value): identity, nidentity, reciprocal, nreciprocal.

References

McCullagh, P. and Nelder, J. A. (1989) Generalized Linear Models, 2nd ed. London: Chapman & Hall.

See Also

TypicalVGAMfamilyFunction, vglm, vgam, rrvglm. cqo, cao, uqo.

Examples

Run this code
logit("a")
logit("a", short=FALSE)
logit("a", short=FALSE, tag=TRUE)

logoff(1:5, earg=list(offset=1))  # Same as log(1:5 + 1)
powl(1:5, earg=list(power=2))     # Same as (1:5)^2

data(hunua)
fit1 = vgam(agaaus ~ altitude, binomialff(link=cloglog), hunua)    # ok
fit2 = vgam(agaaus ~ altitude, binomialff(link="cloglog"), hunua)  # ok

# This no longer works since "clog" is not a valid VGAM link function:
fit3 = vgam(agaaus ~ altitude, binomialff(link="clog"), hunua) # not ok


# 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, beta.ab(lshape1="identity", lshape2="identity"),
            trace = TRUE, crit="c")
fit2 = vglm(y ~ 1, beta.ab(lshape1=logoff, eshape1=list(offset=1.1),
                           lshape2=logoff, eshape2=list(offset=1.1)),
            trace = TRUE, crit="c")
vcov(fit1, untran=TRUE)
vcov(fit1, untran=TRUE)-vcov(fit2, untran=TRUE)  # Should be all 0s
fit1@misc$earg   # No 'special' parameters
fit2@misc$earg   # Some 'special' parameters are here


par(mfrow=c(2,2))
p = seq(0.01, 0.99, len=200)
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") # reciprocal!
plot(p, logit(p, deriv=2), type="l", col="blue") # reciprocal!

Run the code above in your browser using DataLab