\HeaderA{gsim}{GSIM for binary data}{gsim}
\begin{Description}\relax
The function \code{gsim} performs prediction using Lambert-Lacroix and Peyre's GSIM algorithm.
\end{Description}
\begin{Usage}
\begin{verbatim}
gsim(Xtrain, Ytrain, Xtest=NULL, Lambda, hA, hB=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,2}-valued vector and contains the response variable for each
observation.
\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{hA}] a strictly positive real value. \code{hA} is the bandwidth for GSIM step A.
\item[\code{hB}] a strictly positive real value. \code{hB} is the bandwidth for 
GSIM step B. if \code{hB} is equal to NULL, then hB value is chosen using a
plug-in method.
\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{gsim} as a preliminary step
before the algorithm is run. 

The procedure described in Lambert-Lacroix and Peyre (2005) is used to estimate 
the projection direction beta. 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 vector giving the projection direction estimated.
\item[\code{hB}] the value of hB used in step B of GSIM (value given by the user or
estimated by plug-in if the argument value was equal to NULL)
\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{gsim.cv}{gsim.cv}}, \code{\LinkA{mgsim}{mgsim}}, \code{\LinkA{mgsim.cv}{mgsim.cv}}.
\end{SeeAlso}
\begin{Examples}
\begin{ExampleCode}
# load plsgenomics library
library(plsgenomics)

# load Colon data
data(Colon)
IndexLearn <- c(sample(which(Colon$Y==2),12),sample(which(Colon$Y==1),8))

Xtrain <- Colon$X[IndexLearn,]
Ytrain <- Colon$Y[IndexLearn]
Xtest <- Colon$X[-IndexLearn,]

# preprocess data
resP <- preprocess(Xtrain= Xtrain, Xtest=Xtest,Threshold = c(100,16000),Filtering=c(5,500),log10.scale=TRUE,row.stand=TRUE)

# perform prediction by GSIM
res <- gsim(Xtrain=resP$pXtrain,Ytrain= Ytrain,Xtest=resP$pXtest,Lambda=10,hA=50,hB=NULL)
   
res$Cvg
sum(res$Ytest!=Colon$Y[-IndexLearn])

\end{ExampleCode}
\end{Examples}

