is.buggy: Does the fitted object suffer from a known bug?

Description Usage Arguments Details Value Note Author(s) See Also Examples

Description

Checks to see if a fitted object suffers from some known bug.

Usage

1
2
is.buggy(object, ...)
is.buggy.vlm(object, each.term = FALSE, ...)

Arguments

object

A fitted VGAM object, e.g., from vgam.

each.term

Logical. If TRUE then a logical is returned for each term.

...

Unused for now.

Details

It is known that vgam with s terms do not correctly handle constraint matrices (cmat, say) when crossprod(cmat) is not diagonal. This function detects whether this is so or not. Note that probably all VGAM family functions have defaults where all crossprod(cmat)s are diagonal, therefore do not suffer from this bug. It is more likely to occur if the user inputs constraint matrices using the constraints argument (and setting zero = NULL if necessary).

Second-generation VGAMs based on sm.ps are a modern alternative to using s. It does not suffer from this bug. However, G2-VGAMs require a reasonably large sample size in order to work more reliably.

Value

The default is a single logical (TRUE if any term is TRUE), otherwise a vector of such with each element corresponding to a term. If the value is TRUE then I suggest replacing the VGAM by a similar model fitted by vglm and using regression splines, e.g., bs, ns.

Note

When the bug is fixed this function may be withdrawn, otherwise always return FALSEs!

Author(s)

T. W. Yee

See Also

vgam. vglm, s, sm.ps, bs, ns.

Examples

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
fit1 <- vgam(cbind(agaaus, kniexc) ~ s(altitude, df = c(3, 4)),
             binomialff(multiple.responses = TRUE), data = hunua)
is.buggy(fit1)  # Okay
is.buggy(fit1, each.term = TRUE)  # No terms are buggy

fit2 <- vgam(cbind(agaaus, kniexc) ~ s(altitude, df = c(3, 4)),
             binomialff(multiple.responses = TRUE), data = hunua,
             constraints =
             list("(Intercept)" = diag(2),
                  "s(altitude, df = c(3, 4))" = matrix(c(1, 1, 0, 1), 2, 2)))
is.buggy(fit2)  # TRUE
is.buggy(fit2, each.term = TRUE)
constraints(fit2)

# fit2b is an approximate alternative to fit2:
fit2b <- vglm(cbind(agaaus, kniexc) ~ bs(altitude, df = 3) + bs(altitude, df = 4),
              binomialff(multiple.responses = TRUE), data = hunua,
              constraints =
              list("(Intercept)" = diag(2),
                   "bs(altitude, df = 3)" = rbind(1, 1),
                   "bs(altitude, df = 4)" = rbind(0, 1)))
is.buggy(fit2b)  # Okay
is.buggy(fit2b, each.term = TRUE)
constraints(fit2b)

VGAM documentation built on May 19, 2017, 10:21 a.m.

Search within the VGAM package
Search all R packages, documentation and source code