data(tecator)
ind<-1:129
tecator$y$Fat<-ifelse(tecator$y$Fat<20,0,1)
x<-tecator$absorp.fdata
tt=x[["argvals"]]
dataf=as.data.frame(tecator$y[ind,])
x.d2=fdata.deriv(x,nderiv=2,method="fmm")
ldata=list("df"=dataf,"x.d2"=x.d2[ind])
basis.pc2=create.pc.basis(x.d2[ind],c(1:2))
basis.x=list("x.d2"=basis.pc2)
res.pc=fregre.glm(Fat~x.d2,ldata,family=binomial,basis.x=basis.x)
basis1=create.fdata.basis(x.d2[ind],type.basis="fourier",l=1:11)
basis2=create.fdata.basis(x.d2[ind],type.basis="fourier",l=1:5)
basis.x=list("x.d2"=basis1)
basis.b=list("x.d2"=basis2)
res.basis=fregre.glm(Fat~x.d2,ldata,family=binomial,basis.x=basis.x,basis.b=basis.b)
newy<-floor(tecator$y$Fat[-ind])
newx<-tecator$absorp.fdata[-ind,]
newx.d2<-fdata.deriv(newx,nderiv=2,method="fmm")
newdataf=as.data.frame(tecator$y[-ind,])
newldata=list("df"=newdataf,"x.d2"=newx.d2)
pred.pc<-predict.fregre.glm(res.pc,newldata)
y.pred1<-ifelse (pred.pc>0.5,1,0)
table(y.pred1,newy)
pred.basis<-predict.fregre.glm(res.basis,newldata)
y.pred2<-ifelse (pred.basis>0.5,1,0)
table(y.pred2,newy)Run the code above in your browser using DataLab