| smooth.construct.tedmd.smooth.spec {scam} | R Documentation |
Tensor product smoothing constructor for bivariate function subject to double monotone decreasing constraint
Description
This is a special method function
for creating tensor product bivariate smooths subject to double monotone decreasing constraints which is built by
the mgcv constructor function for smooth terms, smooth.construct.
It is constructed from a pair of single penalty marginal smooths which are represented using the B-spline basis functions.
This tensor product is specified by model terms such as s(x1,x2,k=c(q1,q2),bs="tedmd",m=c(2,2)),
where q1 and q2 denote the basis dimensions for the marginal smooths.
From scam version 1.2-15, the sum-to-zero contraint is now applied to all bivariate SCOP-splines after imposing the scop-constraints (including scop identifiability constraint). This simply shifts the smooth vertically, leaving the shape of the smooths unchanged.
Usage
## S3 method for class 'tedmd.smooth.spec'
smooth.construct(object, data, knots)
Arguments
object |
A smooth specification object, generated by an |
data |
A data frame or list containing the values of the elements of |
knots |
An optional list containing the knots corresponding to |
Value
An object of class "tedmd.smooth". In addition to the usual
elements of a smooth class documented under smooth.construct of the mgcv library,
this object contains:
p.ident |
A vector of 0's and 1's for model parameter identification: 1's indicate parameters which will be exponentiated, 0's - otherwise. |
Zc |
A matrix of identifiability constraints. |
Author(s)
Natalya Pya <nat.pya@gmail.com>
References
Pya, N. and Wood, S.N. (2015) Shape constrained additive models. Statistics and Computing, 25(3), 543-559
Pya, N. (2010) Additive models with shape constraints. PhD thesis. University of Bath. Department of Mathematical Sciences
See Also
smooth.construct.tedmi.smooth.spec
Examples
## Not run:
## tensor product `tedmd' example
## simulating data...
require(scam)
set.seed(2)
n <- 30
x1 <- sort(runif(n)*4-1)
x2 <- sort(runif(n))
f1 <- matrix(0,n,n)
for (i in 1:n) for (j in 1:n)
{ f1[i,j] <- -exp(4*x1[i])/(1+exp(4*x1[i]))-2*exp(x2[j]-0.5)}
f <- as.vector(t(f1))
y <- f+rnorm(length(f))*0.1
x11 <- matrix(0,n,n)
x11[,1:n] <- x1
x11 <- as.vector(t(x11))
x22 <- rep(x2,n)
dat <- list(x1=x11,x2=x22,y=y)
## fit model ...
b <- scam(y~s(x1,x2,k=c(10,10),bs="tedmd"), data=dat)
summary(b)
## plot results ...
par(mfrow=c(2,2),mar=c(4,4,2,2))
plot(b,se=TRUE)
plot(b,pers=TRUE,theta = 80, phi = 40)
plot(y,b$fitted.values,xlab="Simulated data",ylab="Fitted data")
## End(Not run)