s {VGAM}R Documentation

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

In the following, 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.

x covariate (abscissae) to be smoothed.
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 will be used if df is not of length r.
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. Recycling of values will be used if spar is not of length r.
... Ignored for now.

Details

s, which is symbolic and does not perform any smoothing itself, only handles a single covariate. It differs from the S-PLUS s and also the one from the mgcv library. They should not be mixed together.

S-PLUS's s allowed spar to be negative; VGAM does not allow this.

Value

A vector with attributes that are used by vgam.

Note

The x argument of s() 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), say, and use s(logx).

The vector cubic smoothing spline which s() represents is computationally demanding for large M. The cost is approximately O(M^3).

Author(s)

Thomas W. Yee

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

# Nonparametric logistic regression
data(hunua)
fit = vgam(agaaus ~ s(altitude, df=2), binomialff, hunua)
## Not run: 
plot(fit, se=TRUE)
## End(Not run)

# Bivariate logistic model with artificial data
n = 300 
mydf = data.frame(x1=runif(n), x2=runif(n))
mydf = transform(mydf, 
    y1 = ifelse(runif(n) < 1/(1+exp(-sin(2*x2))), 1, 0),
    y2 = ifelse(runif(n) < 1/(1+exp(-sin(2*x2))), 1, 0))
fit = vgam(cbind(y1,y2) ~ x1 + s(x2, 3), trace=TRUE,
           binom2.or(exchangeable = TRUE ~ s(x2,3)), data=mydf)
coef(fit, matrix=TRUE)
## Not run: 
plot(fit, se=TRUE, which.term= 2, scol="blue")
## End(Not run)

[Package VGAM version 0.7-7 Index]