gordlink | R Documentation |

Computes the gamma-ordinal transformation, including its inverse and the first two derivatives.

```
gordlink(theta, lambda = 1, cutpoint = NULL,
inverse = FALSE, deriv = 0, short = TRUE, tag = FALSE)
```

`theta` |
Numeric or character. See below for further details. |

`lambda, cutpoint` |
The former is the shape parameter in |

`inverse, deriv, short, tag` |
Details at |

The gamma-ordinal link function (GOLF) can be applied to a parameter lying in the unit interval. Its purpose is to link cumulative probabilities associated with an ordinal response coming from an underlying 2-parameter gamma distribution.

See `Links`

for general information about VGAM
link functions.

See Yee (2019) for details.

Prediction may not work on `vglm`

or
`vgam`

etc. objects if this link function is used.

Numerical values of `theta`

too close to 0 or 1 or out of range
result in large positive or negative values, or maybe 0 depending on
the arguments.
Although measures have been taken to handle cases where
`theta`

is too close to 1 or 0,
numerical instabilities may still arise.

In terms of the threshold approach with cumulative probabilities for
an ordinal response this link function corresponds to the
gamma distribution (see `gamma2`

) that has been
recorded as an ordinal response using known cutpoints.

Thomas W. Yee

Yee, T. W. (2020).
*Ordinal ordination with normalizing link functions for count data*,
(in preparation).

`Links`

,
`gamma2`

,
`pordlink`

,
`nbordlink`

,
`cumulative`

.

```
## Not run:
gordlink("p", lambda = 1, short = FALSE)
gordlink("p", lambda = 1, tag = TRUE)
p <- seq(0.02, 0.98, len = 201)
y <- gordlink(p, lambda = 1)
y. <- gordlink(p, lambda = 1, deriv = 1, inverse = TRUE)
max(abs(gordlink(y, lambda = 1, inverse = TRUE) - p)) # Should be 0
#\ dontrun{par(mfrow = c(2, 1), las = 1)
#plot(p, y, type = "l", col = "blue", main = "gordlink()")
#abline(h = 0, v = 0.5, col = "orange", lty = "dashed")
#plot(p, y., type = "l", col = "blue",
# main = "(Reciprocal of) first GOLF derivative")
#}
# Another example
gdata <- data.frame(x2 = sort(runif(nn <- 1000)))
gdata <- transform(gdata, x3 = runif(nn))
gdata <- transform(gdata, mymu = exp( 3 + 1 * x2 - 2 * x3))
lambda <- 4
gdata <- transform(gdata,
y1 = rgamma(nn, shape = lambda, scale = mymu / lambda))
cutpoints <- c(-Inf, 10, 20, Inf)
gdata <- transform(gdata, cuty = Cut(y1, breaks = cutpoints))
#\ dontrun{ par(mfrow = c(1, 1), las = 1)
#with(gdata, plot(x2, x3, col = cuty, pch = as.character(cuty))) }
with(gdata, table(cuty) / sum(table(cuty)))
fit <- vglm(cuty ~ x2 + x3, cumulative(multiple.responses = TRUE,
reverse = TRUE, parallel = FALSE ~ -1,
link = gordlink(cutpoint = cutpoints[2:3], lambda = lambda)),
data = gdata, trace = TRUE)
head(depvar(fit))
head(fitted(fit))
head(predict(fit))
coef(fit)
coef(fit, matrix = TRUE)
constraints(fit)
fit@misc
## End(Not run)
```

Embedding an R snippet on your website

Add the following code to your website.

For more information on customizing the embed code, read Embedding Snippets.