data(tecator)
dataf=as.data.frame(tecator$y)
x=tecator$absorp.fdata
ind=1:165
y=tecator$y$Fat[ind]
newy=tecator$y$Fat[-ind]
dataf=as.data.frame(tecator$y[ind,])
newdataf=as.data.frame(tecator$y[-ind,])
tt=x[["argvals"]]
x.d2=fdata.deriv(x[ind,],nderiv=2)
newx=x[-ind,]
newx.d2=fdata.deriv(newx,nderiv=2)
ldata=list("df"=dataf,"x"=x[ind,],"x.d2"=x.d2)
newldata=list("df"=newdataf,"x"=newx,"x.d2"=newx.d2)
basis1=create.bspline.basis(rangeval=range(tt),nbasis=25)
basis2=create.bspline.basis(rangeval=range(tt),nbasis=13)
basis.x=list("x"=basis1)
basis.b=list("x"=basis2)
#ex 1.
f=Fat~Protein+x
res.lm=fregre.lm(f,ldata,basis.x=basis.x,basis.b=basis.b)
summary(res.lm)
pred.lm=predict.fregre.lm(res.lm,newldata)
MEP.lm=((1/length(newy))*sum((newy-pred.lm)^2))/var(newy)
MEP.lm
# with 2nd derivative of functional data
f2=Fat~Protein+x.d2
basis.x2=list("x.d2"=basis1)
basis.b2=list("x.d2"=basis2)
res.lm2=fregre.lm(f2,ldata,basis.x=basis.x2,basis.b=basis.b2)
summary(res.lm2)
pred.lm2=predict.fregre.lm(res.lm2,newldata)
MEP.lm2=((1/length(newy))*sum((newy-pred.lm2)^2))/var(newy)
MEP.lm2
plot(newy,pred.lm)
points(newy,pred.lm2,col=2)Run the code above in your browser using DataLab