# Fitting spline using Pspline

4 messages
Open this post in threaded view
|

## Fitting spline using Pspline

 Hey all, I seem to be having trouble fitting a spline to a large set of data using PSpline.  It seems to work fine for a data set of size n=4476, but not for anything larger (say, n=4477).  For example: THIS WORKS: ----------------------------- random = array(0,c(4476,2)) random[,1] = runif(4476,0,1) random[,2] = runif(4476,0,1) random = random[order(random[,1]),] plot(random[,1],random[,2]) fit2 = sm.spline(random[,1],random[,2], norder=2, cv=FALSE) lines(fit2\$x,fit2\$y) THIS FAILS: ----------------------------- random = array(0,c(4477,2)) random[,1] = runif(4477,0,1) random[,2] = runif(4477,0,1) random = random[order(random[,1]),] plot(random[,1],random[,2]) fit2 = sm.spline(random[,1],random[,2], norder=2, cv=FALSE) lines(fit2\$x,fit2\$y) It gives: Error in smooth.Pspline(x = ux, y = tmp[, 1], w = tmp[, 2], method = method,  :   Singularity error in solving equations Does anyone know if this is just a limitation, or am I missing something.  The dataset I'd like to run it on contains n=6000.  If it is a limitation, does anyone know of any other ways to do this that would accommodate a larger dataset (ideally with generalized cross validation)? Thanks! -guy33
Open this post in threaded view
|

## Re: Fitting spline using Pspline

 Use the smooth.spline() function in "stats" package.  This is more stable. ?smooth.spline Ravi. ________________________________________ From: [hidden email] [[hidden email]] On Behalf Of guy33 [[hidden email]] Sent: Sunday, May 29, 2011 1:30 PM To: [hidden email] Subject: [R] Fitting spline using Pspline Hey all, I seem to be having trouble fitting a spline to a large set of data using PSpline.  It seems to work fine for a data set of size n=4476, but not for anything larger (say, n=4477).  For example: THIS WORKS: ----------------------------- random = array(0,c(4476,2)) random[,1] = runif(4476,0,1) random[,2] = runif(4476,0,1) random = random[order(random[,1]),] plot(random[,1],random[,2]) fit2 = sm.spline(random[,1],random[,2], norder=2, cv=FALSE) lines(fit2\$x,fit2\$y) THIS FAILS: ----------------------------- random = array(0,c(4477,2)) random[,1] = runif(4477,0,1) random[,2] = runif(4477,0,1) random = random[order(random[,1]),] plot(random[,1],random[,2]) fit2 = sm.spline(random[,1],random[,2], norder=2, cv=FALSE) lines(fit2\$x,fit2\$y) It gives: Error in smooth.Pspline(x = ux, y = tmp[, 1], w = tmp[, 2], method = method, :   Singularity error in solving equations Does anyone know if this is just a limitation, or am I missing something. The dataset I'd like to run it on contains n=6000.  If it is a limitation, does anyone know of any other ways to do this that would accommodate a larger dataset (ideally with generalized cross validation)? Thanks! -guy33 -- View this message in context: http://r.789695.n4.nabble.com/Fitting-spline-using-Pspline-tp3559202p3559202.htmlSent from the R help mailing list archive at Nabble.com. ______________________________________________ [hidden email] mailing list https://stat.ethz.ch/mailman/listinfo/r-helpPLEASE do read the posting guide http://www.R-project.org/posting-guide.htmland provide commented, minimal, self-contained, reproducible code. ______________________________________________ [hidden email] mailing list https://stat.ethz.ch/mailman/listinfo/r-helpPLEASE do read the posting guide http://www.R-project.org/posting-guide.htmland provide commented, minimal, self-contained, reproducible code.