Fonctions
library(sm)
Package 'sm', version 2.2-6.0: type help(sm) for summary information
source('npfda.R')
####
ROC=function(z,p1)
{
p=sort(unique(p1))
lp=length(p)
ROC=matrix(NA,lp,2)
for (s in 1:lp)
{
ROC[s,1]=mean(p1[z==0]>p[s])
ROC[s,2]=mean(p1[z==1]>p[s])
}
AUC=sum(ROC[-lp,2]*(ROC[-lp,1]-ROC[-1,1]))
colnames(ROC)=c("FPR","TPR")
plot(ROC,type='l',main=paste('AUC =', AUC))
return(list(ROC=ROC,AUC=AUC))
}
#######
Classif_NP_fun=function(X,Y,X0=NA,...)
{
X=as.matrix(X)
n=length(Y)
V=sort(unique(Y))
n_V=length(V)
Prob=matrix(NA,n,n_V)
colnames(Prob)=V
Class=rep(NA,n)
if (!is.na(max(X0)))
{
X0=as.matrix(X0)
P0=matrix(NA,nrow(X0),n_V)
Class0=rep(NA,n)
}
for (v in 1:n_V)
{
z=as.numeric(Y==V[v])
X1=X
if (!is.na(max(X0))) {X1=X0}
re=funopare.kernel.cv(z,X,X1,...)
Prob[,v]=re$Estimated.values
if (!is.na(max(X0))) {P0[,v]=re$Predicted.values}
}
if (n_V==2) {ROC(Y==V[2],Prob[,2])}
Class=V[apply(Prob,1,which.max)]
M_table=table(Y,Class)
if (!is.na(max(X0))) {Class0=V[apply(P0,1,which.max)]}
if (!is.na(max(X0))) {return(list(Class=Class, Prob=Prob, M_table=M_table, err=1-sum(diag(M_table))/n, Class0=Class0,Prob0=P0))}
else {return(list(Class=Class, Prob=Prob, M_table=M_table, err=1-sum(diag(M_table))/n))}
}
Regression
Real world data
#tec=read.table('npfda-spectrometric.dat')
#X=tec[,1:100]
#Y=tec[,101]
load("Tecator.RData")
matplot(t(X),type='l')

par(mfrow=c(3,3))
for (j in 0:8)
{
re=funopare.kernel.cv(Y,X,X,q=j,nknot=10,range.grid=c(0,1))
plot(re$Estimated.values, Y)
title(main=paste('q=',j,' et CV=',signif(re$Mse,7),sep=''))
abline(0,1)
}

X=as.matrix(X)
par(mfrow=c(3,3))
for (j in 0:8)
{
re=funopare.kernel.cv(Y,X,X,semimetric='pca',qv=2:(j+2))
plot(re$Estimated.values, Y)
title(main=paste('qv=2:',j+2,' et CV=',signif(re$Mse,7),sep=''))
abline(0,1)
}

Classification
load("PHONEMES.RData")
learn=1:1000
test=1001:2000
X_learn=CURVES[learn,]
Y_learn=PHONEME[learn]
X_test=CURVES[test,]
Y_test=PHONEME[test]
par(mfrow=c(2,3))
ph=sort(unique(Y_learn))
for (j in ph) {matplot(t(X_learn[Y_learn==j,]),type='l',main=j)}

for (j in 1:10)
{
C_re=Classif_NP_fun(X_learn,Y_learn,X0=X_test,semimetric='mplsr', q=j)
cat(paste('q=',j,' \n',sep=''))
cat('Qualité de la classification sur l\'échantillon test \n')
cat('matrice de confusion: ')
M0=table(Y_test, C_re$Class0)
err0=1-sum(diag(M0))/sum(M0)
print(M0)
cat('erreur:')
cat(err0)
cat(' \n')
cat(' \n')
}
q=1
Qualité de la classification sur l'échantillon test
matrice de confusion:
Y_test AA AO DCL IY SH
AA 146 54 0 0 0
AO 55 144 1 0 0
DCL 0 0 197 3 0
IY 0 1 3 182 14
SH 0 0 0 4 196
erreur:0.135
q=2
Qualité de la classification sur l'échantillon test
matrice de confusion:
Y_test AA AO DCL IY SH
AA 153 47 0 0 0
AO 38 162 0 0 0
DCL 0 0 198 1 1
IY 1 0 2 195 2
SH 0 0 1 0 199
erreur:0.093
q=3
Qualité de la classification sur l'échantillon test
matrice de confusion:
Y_test AA AO DCL IY SH
AA 151 48 0 1 0
AO 29 171 0 0 0
DCL 0 0 198 1 1
IY 2 0 1 197 0
SH 0 0 0 0 200
erreur:0.083
q=4
Qualité de la classification sur l'échantillon test
matrice de confusion:
Y_test AA AO DCL IY SH
AA 152 48 0 0 0
AO 29 171 0 0 0
DCL 1 0 199 0 0
IY 0 0 0 200 0
SH 0 0 0 0 200
erreur:0.078
q=5
Qualité de la classification sur l'échantillon test
matrice de confusion:
Y_test AA AO DCL IY SH
AA 150 50 0 0 0
AO 32 168 0 0 0
DCL 1 0 199 0 0
IY 0 0 0 200 0
SH 0 0 0 0 200
erreur:0.083
q=6
Qualité de la classification sur l'échantillon test
matrice de confusion:
Y_test AA AO DCL IY SH
AA 152 47 1 0 0
AO 31 168 0 1 0
DCL 1 0 199 0 0
IY 0 0 0 200 0
SH 0 0 0 0 200
erreur:0.081
q=7
Qualité de la classification sur l'échantillon test
matrice de confusion:
Y_test AA AO DCL IY SH
AA 146 53 1 0 0
AO 31 168 0 1 0
DCL 2 1 197 0 0
IY 0 0 0 200 0
SH 1 0 0 0 199
erreur:0.09
q=8
Qualité de la classification sur l'échantillon test
matrice de confusion:
Y_test AA AO DCL IY SH
AA 151 49 0 0 0
AO 32 167 0 1 0
DCL 0 2 198 0 0
IY 1 0 2 196 1
SH 1 0 0 0 199
erreur:0.089
q=9
Qualité de la classification sur l'échantillon test
matrice de confusion:
Y_test AA AO DCL IY SH
AA 155 44 1 0 0
AO 41 158 0 1 0
DCL 2 1 197 0 0
IY 1 0 1 197 1
SH 1 0 0 0 199
erreur:0.094
q=10
Qualité de la classification sur l'échantillon test
matrice de confusion:
Y_test AA AO DCL IY SH
AA 149 51 0 0 0
AO 35 164 0 1 0
DCL 2 1 197 0 0
IY 0 0 2 197 1
SH 1 0 0 0 199
erreur:0.094
for (j in 1:10)
{
C_re=Classif_NP_fun(X_learn,Y_learn,X0=X_test,semimetric='pca', q=j)
cat(paste('q=',j,' \n',sep=''))
cat('Qualité de la classification sur l\'échantillon test \n')
cat('matrice de confusion: ')
M0=table(Y_test, C_re$Class0)
err0=1-sum(diag(M0))/sum(M0)
print(M0)
cat('erreur:')
cat(err0)
cat(' \n')
cat(' \n')
}
q=1
Qualité de la classification sur l'échantillon test
matrice de confusion:
Y_test AA AO DCL SH
AA 103 25 0 72
AO 33 68 1 98
DCL 0 4 195 1
IY 40 44 0 116
SH 47 39 0 114
erreur:0.518
q=2
Qualité de la classification sur l'échantillon test
matrice de confusion:
Y_test AA AO DCL IY SH
AA 145 54 0 1 0
AO 76 120 0 4 0
DCL 0 0 196 3 1
IY 0 3 0 186 11
SH 0 0 0 18 182
erreur:0.171
q=3
Qualité de la classification sur l'échantillon test
matrice de confusion:
Y_test AA AO DCL IY SH
AA 142 58 0 0 0
AO 69 131 0 0 0
DCL 0 0 198 1 1
IY 0 0 0 197 3
SH 0 0 0 2 198
erreur:0.134
q=4
Qualité de la classification sur l'échantillon test
matrice de confusion:
Y_test AA AO DCL IY SH
AA 143 57 0 0 0
AO 53 147 0 0 0
DCL 0 0 198 1 1
IY 0 0 0 197 3
SH 0 0 0 1 199
erreur:0.116
q=5
Qualité de la classification sur l'échantillon test
matrice de confusion:
Y_test AA AO DCL IY SH
AA 147 53 0 0 0
AO 39 161 0 0 0
DCL 0 0 198 1 1
IY 0 0 0 197 3
SH 0 0 0 0 200
erreur:0.097
q=6
Qualité de la classification sur l'échantillon test
matrice de confusion:
Y_test AA AO DCL IY SH
AA 145 55 0 0 0
AO 35 165 0 0 0
DCL 0 0 197 2 1
IY 0 0 0 198 2
SH 0 0 0 0 200
erreur:0.095
q=7
Qualité de la classification sur l'échantillon test
matrice de confusion:
Y_test AA AO DCL IY SH
AA 141 59 0 0 0
AO 32 168 0 0 0
DCL 0 0 197 2 1
IY 0 0 0 198 2
SH 0 0 0 0 200
erreur:0.096
q=8
Qualité de la classification sur l'échantillon test
matrice de confusion:
Y_test AA AO DCL IY SH
AA 140 60 0 0 0
AO 30 170 0 0 0
DCL 0 0 198 1 1
IY 0 0 0 198 2
SH 0 0 0 0 200
erreur:0.094
q=9
Qualité de la classification sur l'échantillon test
matrice de confusion:
Y_test AA AO DCL IY SH
AA 138 62 0 0 0
AO 26 174 0 0 0
DCL 0 0 197 2 1
IY 0 0 0 198 2
SH 0 0 0 0 200
erreur:0.093
q=10
Qualité de la classification sur l'échantillon test
matrice de confusion:
Y_test AA AO DCL IY SH
AA 141 59 0 0 0
AO 25 175 0 0 0
DCL 0 0 198 1 1
IY 0 0 0 198 2
SH 0 0 0 0 200
erreur:0.088