# NOT RUN {
  #Univariate example
  data("trigo")
  cls = trigo[,101]
  basis<- create.bspline.basis(c(0,1), nbasis=25)
  var1<-smooth.basis(argvals=seq(0,1,length.out = 100),y=t(trigo[,1:100]),fdParobj=basis)$fd
  
  res.uni<-funHDDC(var1,K=2,model="AkBkQkDk",init="kmeans",threshold=0.2)
  table(cls,res.uni$class,dnn=c("True clusters","FunHDDC clusters"))
  plot(var1,col=res.uni$class)
  
  
  #Multivariate example
  data("triangle")
  cls2 = triangle[,203]
  basis<- create.bspline.basis(c(1,21), nbasis=25)
  var1<-smooth.basis(argvals=seq(1,21,length.out = 101),y=t(triangle[,1:101]),fdParobj=basis)$fd
  var2<-smooth.basis(argvals=seq(1,21,length.out = 101),y=t(triangle[,102:202]),fdParobj=basis)$fd
  
  res.multi<-funHDDC(list(var1,var2),K=3,model="AkjBkQkDk",init="kmeans",threshold=0.2)
  table(cls2,res.multi$class,dnn=c("True clusters","FunHDDC clusters"))
  par(mfrow=c(1,2))
  plot(var1,col=res.multi$class)
  plot(var2,col=res.multi$class)
  
  
# }
# NOT RUN {
    ##You can test multiple number of groups at the same time
    # data("trigo")
    # basis<- create.bspline.basis(c(0,1), nbasis=25)
    # var1<-smooth.basis(argvals=seq(0,1,length.out = 100),y=t(trigo[,1:100]),fdParobj=basis)$fd
    # res.uni<-funHDDC(var1,K=2:4,model="AkBkQkDk",init="kmeans",threshold=0.2)
    # 
    # #You can test multiple models at the same time
    # data("trigo")
    # basis<- create.bspline.basis(c(0,1), nbasis=25)
    # var1<-smooth.basis(argvals=seq(0,1,length.out = 100),y=t(trigo[,1:100]),fdParobj=basis)$fd
    # res.uni<-funHDDC(var1,K=3,model=c("AkjBkQkDk","AkBkQkDk"),init="kmeans",threshold=0.2)
    # 
    # 
    # #another example on Canadian data
    # #Clustering the "Canadian temperature" data (Ramsey & Silverman): univariate case
    # daybasis65 <- create.fourier.basis(c(0, 365), nbasis=65, period=365)
    # daytempfd <- smooth.basis(day.5, CanadianWeather$dailyAv[,,"Temperature.C"], daybasis65,
    #                           fdnames=list("Day", "Station", "Deg C"))$fd
    # 
    # res.uni<-funHDDC(daytempfd,K=3,model="AkjBkQkDk",init="random",threshold=0.2)
    # 
    # #Graphical representation of groups mean curves
    # select1<-fd(daytempfd$coefs[,which(res.uni$class==1)],daytempfd$basis)
    # select2<-fd(daytempfd$coefs[,which(res.uni$class==2)],daytempfd$basis)
    # select3<-fd(daytempfd$coefs[,which(res.uni$class==3)],daytempfd$basis)
    # 
    # plot(mean.fd(select1),col="lightblue",ylim=c(-20,20),lty=1,lwd=3)
    # lines(mean.fd(select2),col="palegreen2",lty=1,lwd=3)
    # lines(mean.fd(select3),col="navy",lty=1,lwd=3)
    # 
    # 
    # #Clustering the "Canadian temperature" data (Ramsey & Silverman): multivariate case
    # daybasis65 <- create.fourier.basis(c(0, 365), nbasis=65, period=365)
    # daytempfd <- smooth.basis(day.5, CanadianWeather$dailyAv[,,"Temperature.C"], daybasis65,
    #                           fdnames=list("Day", "Station", "Deg C"))$fd
    # dayprecfd<-smooth.basis(day.5, CanadianWeather$dailyAv[,,"Precipitation.mm"], daybasis65,
    #                         fdnames=list("Day", "Station", "Mm"))$fd
    # 
    # res.multi<-funHDDC(list(daytempfd,dayprecfd),K=3,model="AkjBkQkDk",init="random",
    #                      threshold=0.2)
    # 
    # #Graphical representation of groups mean curves
    # #Temperature
    # select1<-fd(daytempfd$coefs[,which(res.multi$class==1)],daytempfd$basis)
    # select2<-fd(daytempfd$coefs[,which(res.multi$class==2)],daytempfd$basis)
    # select3<-fd(daytempfd$coefs[,which(res.multi$class==3)],daytempfd$basis)
    # 
    # plot(mean.fd(select1),col="lightblue",ylim=c(-20,20),lty=1,lwd=3)
    # lines(mean.fd(select2),col="palegreen2",lty=1,lwd=3)
    # lines(mean.fd(select3),col="navy",lty=1,lwd=3)
    # 
    # #Precipitation
    # select1b<-fd(dayprecfd$coefs[,which(res.multi$class==1)],dayprecfd$basis)
    # select2b<-fd(dayprecfd$coefs[,which(res.multi$class==2)],dayprecfd$basis)
    # select3b<-fd(dayprecfd$coefs[,which(res.multi$class==3)],dayprecfd$basis)
    # 
    # plot(mean.fd(select1b),col="lightblue",ylim=c(0,5),lty=1,lwd=3)
    # lines(mean.fd(select2b),col="palegreen2",lty=1,lwd=3)
    # lines(mean.fd(select3b),col="navy",lty=1,lwd=3)
  
# }
Run the code above in your browser using DataLab