Learn R Programming

VGAM (version 0.8-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.

It also differs from the S-PLUS s which allows spar to be negative; VGAM does not allow this.

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, hunua)
plot(fit, se=TRUE)

# Bivariate logistic model with artificial data
nn = 300
mydf = data.frame(x1=runif(nn), x2=runif(nn))
mydf = transform(mydf, 
    y1 = rbinom(nn, size=1, prob=logit(sin(2*x2), inv=TRUE)),
    y2 = rbinom(nn, size=1, prob=logit(sin(2*x2), inv=TRUE)))
fit = vgam(cbind(y1,y2) ~ x1 + s(x2, 3), trace=TRUE,
           binom2.or(exchangeable = TRUE ~ s(x2,3)), data=mydf)
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