# calibrate.rrvglm

##### Calibration for CLO models (RR-VGLMs)

Performs maximum likelihood calibration for constrained linear ordination models (CLO models are better known as RR-VGLMs).

- Keywords
- models, regression

##### Usage

```
calibrate.rrvglm(object, newdata = NULL,
type = c("latvar", "predictors", "response", "vcov", "everything"),
lr.confint = FALSE, cf.confint = FALSE,
level = 0.95, initial.vals = NULL, ...)
```

##### Arguments

- object
The fitted

`rrvglm`

model. Note that`object`

should be fitted with corner constraints.- newdata
See

`calibrate.qrrvglm`

.- type
See

`calibrate.qrrvglm`

. If`type = "vcov"`

then`object`

should have been fitted using`binomialff`

or`poissonff`

with canonical links, and have`noRRR = ~ 1`

.- lr.confint, cf.confint, level
Same as

`calibrate.qrrvglm`

.- initial.vals
Same as

`calibrate.qrrvglm`

. The default is a grid defined by arguments in`calibrate.rrvglm.control`

.- …
Arguments that are fed into

`calibrate.rrvglm.control`

.

##### Details

Given a fitted regression CLO model, maximum likelihood calibration is theoretically easy and elegant. However, the method assumes that all responses are independent. More details and references are given in Yee (2015).

Calibration requires *grouped* or *non-sparse* data
as the response.
For example,
if the family function is `multinomial`

then
one cannot usually calibrate `y0`

if it is a vector of 0s
except for one 1.
Instead, the response vector should be from grouped data
so that there are few 0s.
Indeed, it is found empirically that the stereotype model
(also known as a reduced-rank `multinomial`

logit
model) calibrates well only with grouped data, and
if the response vector is all 0s except for one 1 then
the MLE will probably be at `-Inf`

or `+Inf`

.
As another example, if the family function is `poissonff`

then `y0`

must not be a vector of all 0s; instead, the response
vector should have few 0s ideally. In general, you can use simulation
to see what type of data calibrates acceptably.

Internally, this function is a simplification of
`calibrate.qrrvglm`

and users should look at
that function for details.
Good initial values are
needed, and a grid is constructed to obtain these.
The function `calibrate.rrvglm.control`

allows the user some control over the choice of these.

##### Value

See `calibrate.qrrvglm`

.
Of course, the quadratic term in the latent variables vanishes
for RR-VGLMs, so the model is simpler.

##### Note

See `calibrate.qrrvglm`

about, e.g.,
calibration using real-valued responses.

##### Warning

See `calibrate.qrrvglm`

.

##### See Also

`calibrate.qrrvglm`

,
`calibrate`

,
`rrvglm`

,
`weightsvglm`

,
`optim`

,
`uniroot`

.

##### Examples

```
# NOT RUN {
# Example 1
nona.xs.nz <- na.omit(xs.nz) # Overkill!! (Data in VGAMdata package)
nona.xs.nz$dmd <- with(nona.xs.nz, round(drinkmaxday))
nona.xs.nz$feethr <- with(nona.xs.nz, round(feethour))
nona.xs.nz$sleephr <- with(nona.xs.nz, round(sleep))
nona.xs.nz$beats <- with(nona.xs.nz, round(pulse))
p2 <- rrvglm(cbind(dmd, feethr, sleephr, beats) ~ age + smokenow +
depressed + embarrassed + fedup + hurt + miserable + # 11 psychological
nofriend + moody + nervous + tense + worry + worrier, # variables
noRRR = ~ age + smokenow, trace = FALSE, poissonff, data = nona.xs.nz,
Rank = 2)
cp2 <- calibrate(p2, newdata = head(nona.xs.nz, 9), trace = TRUE)
cp2
two.cases <- nona.xs.nz[1:2, ] # Another calibration example
two.cases$dmd <- c(4, 10)
two.cases$feethr <- c(4, 7)
two.cases$sleephr <- c(7, 8)
two.cases$beats <- c(62, 71)
(cp2b <- calibrate(p2, newdata = two.cases))
# Example 2
p1 <- rrvglm(cbind(dmd, feethr, sleephr, beats) ~ age + smokenow +
depressed + embarrassed + fedup + hurt + miserable + # 11 psychological
nofriend + moody + nervous + tense + worry + worrier, # variables
noRRR = ~ age + smokenow, trace = FALSE, poissonff, data = nona.xs.nz,
Rank = 1)
(cp1c <- calibrate(p1, newdata = two.cases, lr.confint = TRUE))
# }
```

*Documentation reproduced from package VGAM, version 1.1-1, License: GPL-3*