\HeaderA{mgsim}{GSIM for categorical data}{mgsim}
\begin{Description}\relax
The function \code{mgsim} performs prediction using Lambert-Lacroix and Peyre's MGSIM algorithm.
\end{Description}
\begin{Usage}
\begin{verbatim}
mgsim(Ytrain,Xtrain,Lambda,h,Xtest=NULL,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{Xtest}] a (ntest x p) matrix containing the predictors for the test data
set. \code{Xtest} may also be a vector of length p (corresponding to only one 
test observation). If \code{Xtest} is not equal to NULL, then the prediction 
step is made for these new predictor variables.
\item[\code{Lambda}] a positive real value. \code{Lambda} is the ridge regularization parameter.
\item[\code{h}] a strictly positive real value. \code{h} is the bandwidth for GSIM step A.
\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 columns of the data matrices \code{Xtrain} and \code{Xtest} may not be standardized, 
since standardizing is performed by the function \code{mgsim} as a preliminary step
before the algorithm is run. 

The procedure described in Lambert-Lacroix and Peyre (2005) is used to estimate 
the c projection directions and the coefficients of the parametric fit obtained 
after projecting predictor variables onto the estimated directions. When \code{Xtest} 
is not equal to NULL, the procedure predicts the labels for these new predictor variables.
\end{Details}
\begin{Value}
A list with the following components:
\begin{ldescription}
\item[\code{Ytest}] the ntest vector containing the predicted labels for the observations from 
\code{Xtest}.
\item[\code{beta}] the (p x c) matrix containing the c estimated projection directions.
\item[\code{Coefficients}] the (2 x c) matrix containing the coefficients of the parametric fit obtained 
after projecting predictor variables onto these estimated directions. 
\item[\code{DeletedCol}] the vector containing the column number of \code{Xtrain} when the 
variance of the corresponding predictor variable is null. Otherwise \code{DeletedCol}=NULL
\item[\code{Cvg}] the 0-1 value indicating convergence of the algorithm (1 for convergence, 0 otherwise).
\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.cv}{mgsim.cv}}, \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))

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

# prediction for another sample
Xnew <- SRBCT$X[83,]
# projection of Xnew onto the c estimated direction
Xproj <- Xnew %*% res$beta
# Compute the linear predictor for each classes expect class 1
eta <- diag(cbind(rep(1,3),t(Xproj)) %*% res$Coefficients)
Ypred <- which.max(c(0,eta))
Ypred
SRBCT$Y[83]

\end{ExampleCode}
\end{Examples}

