Learn R Programming

VGAM (version 0.9-1)

s: Defining smooths in VGAM formulae

Description

s is used in the definition of (vector) smooth terms within vgam formulae.

Usage

s(x, df = 4, spar = 0, ...)

Arguments

x
covariate (abscissae) to be smoothed. Note that x must be a single variable and not a function of a variable. For example, s(x) is fine but s(log(x)) will fail. In this case, let logx <- log(x
df
numerical vector of length $r$. Effective degrees of freedom: must lie between 1 (linear fit) and $n$ (interpolation). Thus one could say that df-1 is the nonlinear degrees of freedom of the smooth. Recycling of values wil
spar
numerical vector of length $r$. Positive smoothing parameters (after scaling) . Larger values mean more smoothing so that the solution approaches a linear fit for that component function. A zero value means that df is used. Recycl
...
Ignored for now.

Value

  • A vector with attributes that are (only) used by vgam.

Details

In this help file $M$ is the number of additive predictors and $r$ is the number of component functions to be estimated (so that $r$ is an element from the set {1,2,...,$M$}). Also, if $n$ is the number of distinct abscissae, then s will fail if $n < 7$.

s, which is symbolic and does not perform any smoothing itself, only handles a single covariate. Note that s works in vgam only. It has no effect in vglm (actually, it is similar to the identity function I so that s(x2) is the same as x2 in the LM model matrix). It differs from the s of the gam and mgcv packages; they should not be mixed together. Also, terms involving s should be simple additive terms, and not involving interactions and nesting etc. For example, myfactor:s(x2) is not a good idea.

References

Yee, T. W. and Wild, C. J. (1996) Vector generalized additive models. Journal of the Royal Statistical Society, Series B, Methodological, 58, 481--493.

See Also

vgam, vsmooth.spline.

Examples

Run this code
# Nonparametric logistic regression
fit <- vgam(agaaus ~ s(altitude, df = 2), binomialff, data = hunua)
plot(fit, se = TRUE)

# Bivariate logistic model with artificial data
nn <- 300
bdata <- data.frame(x1 = runif(nn), x2 = runif(nn))
bdata <- transform(bdata, 
    y1 = rbinom(nn, size = 1, prob = logit(sin(2 * x2), inverse = TRUE)),
    y2 = rbinom(nn, size = 1, prob = logit(sin(2 * x2), inverse = TRUE)))
fit <- vgam(cbind(y1, y2) ~ x1 + s(x2, 3), trace = TRUE,
            binom2.or(exchangeable = TRUE ~ s(x2, 3)), data = bdata)
coef(fit, matrix = TRUE)  # Hard to interpret
plot(fit, se = TRUE, which.term = 2, scol = "blue")

Run the code above in your browser using DataLab