Eric, No problem. Let's see if somebody else has a solution. I have changed the smooth basis from P-splines ('ps') to thin plate ('tp'). It still does not work, but this time I get another error message.
########################## #Data y=c(34000,45000,19000,48900,65000,67000,78000,90000,51000,32000,54000,85000,38000,76345,87654,90990,78654,67894,56789,65432,18998,78987,67543,45678,76543,67876) x=c(345,543,543,456,432,378,543,579,432,254,346,564,611,543,542,632,345,468,476,487,453,356,490,499,567,532) Dataset=data.frame(y,x) #Plot plot(x,y) #Robust GAM library(robustgam) true.family <- poisson() fit=robustgam(x,y, sp=2424,family=true.family,smooth.basis='tp') x.new <- seq(range(x)[1], range(x)[2]) robustfit.new <- pred.robustgam(fit, data.frame(X=x.new))$predict.values lines(x.new, robustfit.new, col="green", lwd=2) # To find the « sp » to include in the fit function here above robustfit.gic<-robustgam.GIC.optim(x,y,family=true.family,p=3,c=1.6,show.msg=FALSE,smooth.basis="ps", method="L-BFGS-B") ## CROSS VALIDATION REPLICATIONS MSE ROBUST GAM # Create a list to store the results lst<-list() # This statement does the repetitions (looping) for(i in 1 :1000) { n=dim(Dataset)[1] p=0.667 sam=sample(1 :n,floor(p*n),replace=FALSE) Training =Dataset [sam,] Testing = Dataset [-sam,] fit18<-robustgam(x,y, sp=2424,family=true.family,smooth.basis='tp') ypred=pred.robustgam(fit18,data.frame(X=Testing)) MSE = mean((y-ypred)^2) MSE lst[i]<-MSE } mean(unlist(lst)) #################################### Le dimanche 17 janvier 2021 à 15:02:45 UTC+1, Eric Berger <ericjber...@gmail.com> a écrit : Hi Sacha, I took a quick look. Sorry, I don't see immediately what is causing the problem. Maybe someone else can help. > Dear Eric, > > Many thanks, I correct your 2 points and now I get another error message > (Error in splineDesign(knots, x, ord, derivs, outer.ok = outer.ok, sparse = > sparse) : > empty 'derivs'). > I have googleized and found some hints like (outer.ok=TRUE) but no one seems > to work. > > https://r.789695.n4.nabble.com/mgcv-gam-predict-problem-td3411006.html > > Any idea to make my code work would be appreciated. > > Here below my new R code : > > ########################## > #Data > y=c(34000,45000,19000,48900,65000,67000,78000,90000,51000,32000,54000,85000,38000,76345,87654,90990,78654,67894,56789,65432,18998,78987,67543,45678,76543,67876) > x=c(345,543,543,456,432,378,543,579,432,254,346,564,611,543,542,632,345,468,476,487,453,356,490,499,567,532) > > Dataset=data.frame(y,x) > > #Plot > plot(x,y) > > #Robust GAM > library(robustgam) > true.family <- poisson() > fit=robustgam(x,y, sp=2424,family=true.family,smooth.basis='ps',K=3) > x.new <- seq(range(x)[1], range(x)[2]) > robustfit.new <- pred.robustgam(fit, data.frame(X=x.new))$predict.values > lines(x.new, robustfit.new, col="green", lwd=2) > > # To find the « sp » to include in the fit function here above > robustfit.gic<-robustgam.GIC.optim(x,y,family=true.family,p=3,c=1.6,show.msg=FALSE,smooth.basis="ps", > method="L-BFGS-B") > > ## CROSS VALIDATION REPLICATIONS MSE ROBUST GAM > install.packages("ISLR") > library(ISLR) > > # Create a list to store the results > lst<-list() > > # This statement does the repetitions (looping) > for(i in 1 :1000) > { > > n=dim(Dataset)[1] > p=0.667 > sam=sample(1 :n,floor(p*n),replace=FALSE) > Training =Dataset [sam,] > Testing = Dataset [-sam,] > > fit18<-robustgam(x,y, sp=4356,family=true.family,smooth.basis='ps',K=3) > > ypred=pred.robustgam(fit18,data.frame(X=Testing)) > MSE = mean((y-ypred)^2) > MSE > lst[i]<-MSE > } > mean(unlist(lst)) > #################################### > > > > Le dimanche 17 janvier 2021 à 11:41:49 UTC+1, Eric Berger > <ericjber...@gmail.com> a écrit : > > > Hi Sacha, > I never used these packages before but I installed them and tried your code. > I have a few observations that may help. > > 1. the statement > ypred = predict(fit18,newdata=Testing) > is wrong. Checkout the help page (?robustgam) which shows in the > Examples section at the bottom to use something like > ypred = pred.robustgam( fit18, data.frame(X=Testing) > > 2. your logic is wrong. You define the vectors x and y at the top. They > should remain untouched during your program. > However in the loop you redefine y and then use the redefined y as an > argument to robustgam() the next time through > the loop. This looks like a serious error. > > HTH, > Eric > > > On Sun, Jan 17, 2021 at 12:20 PM varin sacha via R-help > <r-help@r-project.org> wrote: >> Dear R-experts, >> >> Here below my reproducible R code. I get an error message (end of code) I >> can't solve. >> Many thanks for your help. >> >> ########################## >> #Data >> y=c(34000,45000,19000,48900,65000,67000,78000,90000,51000,32000,54000,85000,38000,76345,87654,90990,78654,67894,56789,65432,18998,78987,67543,45678,76543,67876) >> x=c(345,543,543,456,432,378,543,579,432,254,346,564,611,543,542,632,345,468,476,487,453,356,490,499,567,532) >> >> Dataset=data.frame(y,x) >> >> #Plot >> plot(x,y) >> >> #Robust GAM >> library(robustgam) >> true.family <- poisson() >> fit=robustgam(x,y, sp=4356,family=true.family,smooth.basis='ps',K=3) >> x.new <- seq(range(x)[1], range(x)[2]) >> robustfit.new <- pred.robustgam(fit, data.frame(X=x.new))$predict.values >> lines(x.new, robustfit.new, col="green", lwd=2) >> >> # To find the « sp » to include in the fit function here above >> robustfit.gic<-robustgam.GIC.optim(x,y,family=true.family,p=3,c=1.6,show.msg=FALSE,smooth.basis="tp", >> method="L-BFGS-B") >> >> ## CROSS VALIDATION REPLICATIONS MSE ROBUST GAM >> install.packages("ISLR") >> library(ISLR) >> >> # Create a list to store the results >> lst<-list() >> >> # This statement does the repetitions (looping) >> for(i in 1 :1000) >> { >> >> n=dim(Dataset)[1] >> p=0.667 >> sam=sample(1 :n,floor(p*n),replace=FALSE) >> Training =Dataset [sam,] >> Testing = Dataset [-sam,] >> >> fit18<-robustgam(x,y, sp=4356,family=true.family,smooth.basis='ps',K=3) >> >> ypred=predict(fit18,newdata=Testing) >> y=Dataset[-sam,]$y >> MSE = mean((y-ypred)^2) >> MSE >> lst[i]<-MSE >> } >> mean(unlist(lst)) >> #################################### >> >> >> ______________________________________________ >> R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see >> https://stat.ethz.ch/mailman/listinfo/r-help >> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html >> and provide commented, minimal, self-contained, reproducible code. >> > > ______________________________________________ R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.