predict.sfplsim.FASSMR {fsemipar} | R Documentation |
Prediction for SFPLSIM and MFPLSIM (using FASSMR)
Description
predict
S3 method for:
Semi-functional partial linear single-index model (SFPLSIM) fitted using
sfplsim.kernel.fit
orsfplsim.kNN.fit
.Multi-functional partial linear single-index model (MFPLSIM) fitted using
FASSMR.kernel.fit
orFASSMR.kNN.fit
.
Usage
## S3 method for class 'sfplsim.kernel'
predict(object, newdata.x = NULL, newdata.z = NULL,
y.test = NULL, option = NULL, ...)
## S3 method for class 'sfplsim.kNN'
predict(object, newdata.x = NULL, newdata.z = NULL,
y.test = NULL, option = NULL, ...)
## S3 method for class 'FASSMR.kernel'
predict(object, newdata.x = NULL, newdata.z = NULL,
y.test = NULL, option = NULL, ...)
## S3 method for class 'FASSMR.kNN'
predict(object, newdata.x = NULL, newdata.z = NULL,
y.test = NULL, option = NULL, ...)
Arguments
object |
Output of the functions mentioned in the |
newdata.x |
A matrix containing new observations of the functional covariate in the functional-single index component collected by row. |
newdata.z |
Matrix containing the new observations of the scalar covariates (SFPLSIM) or of the scalar covariates coming from the discretisation of a curve (MFPLSIM), collected by row. |
y.test |
(optional) A vector containing the new observations of the response. |
option |
Allows the choice between 1 and 2. The default is 1. See the section |
... |
Further arguments passed to or from other methods. |
Details
Two options are provided to obtain the predictions of the response for newdata.x
and newdata.z
:
If
option=1
, we maintain all the estimations (k.opt
orh.opt
,theta.est
andbeta.est
) to predict the functional single-index component of the model.If
option=2
, we maintaintheta.est
andbeta.est
, while the tuning parameter (h
ork
) is selected again to predict the functional single-index component of the model. This selection is performed using the leave-one-out cross-validation criterion in the associated functional single-index model.
Value
The function returns the predicted values of the response (y
) for newdata.x
and newdata.z
. If !is.null(y.test)
, it also provides the mean squared error of prediction (MSEP
) computed as mean((y-y.test)^2)
.
If is.null(newdata.x)
or is.null(newdata.z)
, then the function returns the fitted values.
Author(s)
German Aneiros Perez german.aneiros@udc.es
Silvia Novo Diaz snovo@est-econ.uc3m.es
See Also
sfplsim.kernel.fit
, sfplsim.kNN.fit
, FASSMR.kernel.fit
or FASSMR.kNN.fit
.
Examples
data("Tecator")
y<-Tecator$fat
X<-Tecator$absor.spectra2
z1<-Tecator$protein
z2<-Tecator$moisture
#Quadratic, cubic and interaction effects of the scalar covariates.
z.com<-cbind(z1,z2,z1^2,z2^2,z1^3,z2^3,z1*z2)
train<-1:160
test<-161:215
#SFPLSIM fit. Convergence errors for some theta are obtained.
s.fit.kernel<-sfplsim.kernel.fit(x=X[train,], z=z.com[train,], y=y[train],
max.q.h=0.35,lambda.min.l=0.01, factor.pn=2, nknot.theta=4,
criterion="BIC", range.grid=c(850,1050),
nknot=20, max.iter=5000)
s.fit.kNN<-sfplsim.kNN.fit(y=y[train],x=X[train,], z=z.com[train,],
max.knn=20,lambda.min.l=0.01, factor.pn=2, nknot.theta=4,
criterion="BIC",range.grid=c(850,1050),
nknot=20, max.iter=5000)
predict(s.fit.kernel,newdata.x=X[test,],newdata.z=z.com[test,],
y.test=y[test],option=2)
predict(s.fit.kNN,newdata.x=X[test,],newdata.z=z.com[test,],
y.test=y[test],option=2)
data(Sugar)
y<-Sugar$ash
x<-Sugar$wave.290
z<-Sugar$wave.240
#Outliers
index.y.25 <- y > 25
index.atip <- index.y.25
(1:268)[index.atip]
#Dataset to model
x.sug <- x[!index.atip,]
z.sug<- z[!index.atip,]
y.sug <- y[!index.atip]
train<-1:216
test<-217:266
m.fit.kernel <- FASSMR.kernel.fit(x=x.sug[train,],z=z.sug[train,],
y=y.sug[train], nknot.theta=2,
lambda.min.l=0.03, max.q.h=0.35,num.h = 10,
nknot=20,criterion="BIC", max.iter=5000)
m.fit.kNN<- FASSMR.kNN.fit(x=x.sug[train,],z=z.sug[train,], y=y.sug[train],
nknot.theta=2, lambda.min.l=0.03,
max.knn=20,nknot=20,criterion="BIC",max.iter=5000)
predict(m.fit.kernel,newdata.x=x.sug[test,],newdata.z=z.sug[test,],
y.test=y.sug[test],option=2)
predict(m.fit.kNN,newdata.x=x.sug[test,],newdata.z=z.sug[test,],
y.test=y.sug[test],option=2)