\HeaderA{mgsim.cv}{Determination of the ridge regularization parameter and the bandwidth to be used for
classification with GSIM for categorical data}{mgsim.cv}
\begin{Description}\relax
The function \code{mgsim.cv} determines the best ridge regularization parameter and bandwidth to be
used for classification with MGSIM as described in Lambert-Lacroix and Peyre (2005).
\end{Description}
\begin{Usage}
\begin{verbatim}
mgsim.cv(Ytrain,Xtrain,LambdaRange,hRange,NbIterMax=50)

\end{verbatim}
\end{Usage}
\begin{Arguments}
\begin{ldescription}
\item[\code{Xtrain}] a (ntrain x p) data matrix of predictors. \code{Xtrain} must be a matrix. 
Each row corresponds to an observation and each column to a predictor variable.
\item[\code{Ytrain}] a ntrain vector of responses. \code{Ytrain} must be a vector. 
\code{Ytrain} is a {1,...,c+1}-valued vector and contains the response variable for each
observation. c+1 is the number of classes.
\item[\code{LambdaRange}] the vector of positive real value from which the best ridge regularization parameter
has to be chosen by cross-validation.
\item[\code{hRange}] the vector of strictly positive real value from which the best bandwidth
has to be chosen by cross-validation.
\item[\code{NbIterMax}] a positive integer. \code{NbIterMax} is the maximal number of iterations in the 
Newton-Rapson parts.
\end{ldescription}
\end{Arguments}
\begin{Details}\relax
The cross-validation procedure described in Lambert-Lacroix and Peyre (2005)
is used to determine the best ridge regularization parameter and bandwidth to be
used for classification with GSIM for categorical data (for binary data see 
\code{\LinkA{gsim}{gsim}} and \code{\LinkA{gsim.cv}{gsim.cv}}).
At each cross-validation run, \code{Xtrain} is split into a pseudo training
set (ntrain-1 samples) and a pseudo test set (1 sample) and the 
classification error rate is determined for each
value of ridge regularization parameter and bandwidth. Finally, the function 
\code{mgsim.cv} returns the values of the ridge regularization parameter and 
bandwidth for which the mean classification error rate is minimal.
\end{Details}
\begin{Value}
A list with the following components:
\begin{ldescription}
\item[\code{Lambda}] the optimal regularization parameter.
\item[\code{h}] the optimal bandwidth parameter.
\end{ldescription}
\end{Value}
\begin{Author}\relax
Sophie Lambert-Lacroix (\url{http://www-lmc.imag.fr/lmc-sms/Sophie.Lambert}) 
and 
Julie Peyre (\url{http://www-lmc.imag.fr/lmc-sms/Julie.Peyre/}).
\end{Author}
\begin{References}\relax
S. Lambert-Lacroix and Julie Peyre (2005). Local likelyhood regression
in  generalized linear single-index models with applications to microarray data, 
TR0563 IAP Statistics network (\url{http://www.stat.ucl.ac.be/IAP/}).
\end{References}
\begin{SeeAlso}\relax
\code{\LinkA{mgsim}{mgsim}}, \code{\LinkA{gsim}{gsim}}, \code{\LinkA{gsim.cv}{gsim.cv}}.
\end{SeeAlso}
\begin{Examples}
\begin{ExampleCode}
# load plsgenomics library
library(plsgenomics)

# load SRBCT data
data(SRBCT)
IndexLearn <- c(sample(which(SRBCT$Y==1),10),sample(which(SRBCT$Y==2),4),sample(which(SRBCT$Y==3),7),sample(which(SRBCT$Y==4),9))

# Determine optimum h and lambda 
hl <- mgsim.cv(Ytrain=SRBCT$Y[IndexLearn],Xtrain=SRBCT$X[IndexLearn,],LambdaRange=c(0.1),hRange=c(7,20))

# perform prediction by MGSIM
res <- mgsim(Ytrain=SRBCT$Y[IndexLearn],Xtrain=SRBCT$X[IndexLearn,],Lambda=hl$Lambda,h=hl$h,Xtest=SRBCT$X[-IndexLearn,])
res$Cvg
sum(res$Ytest!=SRBCT$Y[-IndexLearn])

\end{ExampleCode}
\end{Examples}

