Conditional class probability prediction for SKDA

Description

This function predicts the conditional class probability for the sparse (multicategory) kernel discriminant analysis (skda).

Usage

1
predprob(x, y, lam, xnew, 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.

lam

a length-K vector of inverse smoothing bandwidths.

xnew

a matrix (with p columns) that contains predictors of new observations.

method

method (mle or Bayes) to be used in the KDA classifier.

Value

phat

a matrix (with K columns) that contains predicted conditional class probabilities.

Author(s)

L. A. Stefanski, Y. Wu, and K. White

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, cvskda

Examples

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
        # 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
         

          xtest=matrix(rnorm(10*n*p,mean=0,sd=1),10*n,p)
          ytest=rbinom(10*n,1,0.5)
          xtest[,3]=xtest[,3]+(2*ytest-1)*r
          xtest[,11]=xtest[,11]+(2*ytest-1)*r
          ytest=ytest+1

          ptesthat=predprob(x,y,lam, xtest)
          ytesthat=apply(ptesthat, 1,which.max)
          error=sum(abs(ytesthat-ytest)>0.5)
          error/length(ytest)





        # 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
         

          xtest=matrix(rnorm(10*n*p,mean=0,sd=1),10*n,p)
          ytest=ceiling(runif(10*n,0,3))
          xtest[,3]=xtest[,3]+r*cos(thetas[ytest])
          xtest[,11]=xtest[,11]+r*sin(thetas[ytest])


          ptesthat=predprob(x,y,lam, xtest)
          ytesthat=apply(ptesthat, 1,which.max)
          error=sum(abs(ytesthat-ytest)>0.5)
          error/length(ytest)

Want to suggest features or report bugs for rdrr.io? Use the GitHub issue tracker.