Learn R Programming

skda (version 0.1)

cvskda: Cross validation for SKDA

Description

This function implements cross validation for the sparse (multicategory) kernel discriminant analysis (skda).

Usage

cvskda(x,y, taus, nfolds=10, method="Bayes")

Arguments

x
a matrix ( n X p ) that contains predictors.
y
a vector that contains the categorical response coded as 1, 2, ..., K.
taus
a vector that contains the candidate regularization parameters.
nfolds
the number of folds used in cross validation.
method
method (mle or Bayes) to be used in the KDA classifier.

Value

lam
the best solution tuned by cross validation

References

L. A. Stefanski, Y. Wu, and K. White (2013) Variable selection in nonparametric classification via measurement error model selection likelihoods Journal of the American Statistical Association, ??, ???-???.

See Also

skda, predprob

Examples

Run this code


        # a binary example
          rm(list=ls())
          n=200
          p=20
          r=0.8
          x=matrix(rnorm(n*p,mean=0,sd=1),n,p)
          y=rbinom(n,1,0.5)
          x[,3]=x[,3]+(2*y-1)*r
          x[,11]=x[,11]+(2*y-1)*r

          y=y+1

          ind1=which(y>1.5)
          ind0=which(y<1.5)
          plot(-4:4, -4:4, type = "n")
          points(x[ind1, 3], x[ind1,11],col="blue")
          points(x[ind0, 3], x[ind0,11],col="red")
          lam=skda(x,y,3)$lam
          
# for cross validation see demo(cvskda, package="skda", ask=TRUE)


        # a three-class example
          rm(list=ls())
          n=200
          p=20
          r=2
          x=matrix(rnorm(n*p,mean=0,sd=1),n,p)
          y=ceiling(runif(n,0,3))
          thetas=c(0, 2*pi/3, 4*pi/3)
          x[,3]=x[,3]+r*cos(thetas[y])
          x[,11]=x[,11]+r*sin(thetas[y])

          ind1=which(y==1)
          ind2=which(y==2)
          ind3=which(y==3)

          plot(-6:6, -6:6, type = "n")
          points(x[ind1, 3], x[ind1,11],col="blue")
          points(x[ind2, 3], x[ind2,11],col="red")
          points(x[ind3, 3], x[ind3,11],col="black")
          lam=skda(x,y,3)$lam

# for cross validation see demo(cvskda, package="skda", ask=TRUE)


Run the code above in your browser using DataLab