This is probably the *simplest* approach: > f = splinefun (dat$x, dat$y)
> #simple plot > x = seq (0, 6,, 200) > plot (dat) > lines (x, f (x) ) If that's not what you want, perhaps you could expand on "constraints" or "best fitting"... Expanding on what Bert said, spline fitting and (regression style) curve fitting are different. While it is possible to constrain a regression curve to pass through one or more points, there aren't many situations where one would want to do that (constraining yhat=0 given x=0, perhaps?), and your example suggests that you're wanting a spline... B. On Thu, Jan 23, 2020 at 4:01 AM Tung Nguyen <thanhtungmi...@gmail.com> wrote: > > Hello R-Help, > > I'm trying to find the best fitting curve through a given set of points. > The fitted curve must also pass through these points. I found an answer on > Cross Validated which suggested to use the `cobs: Constrained B-Splines > (Sparse Matrix Based)` package. However, I got an error while testing it > with my sample data: > > Error in x %*% coefficients: NA/NaN/Inf in foreign function call (arg 2) > > *My question*: what caused this error and how can I fix it? Any suggestion > is greatly appreciated. Thanks! > > library(cobs) > > dat <- data.frame( > x = c(1e-06,0.25,0.5,0.75,1,2,3,4,5,6), > y = c(1e-07,1.925,2.9625,3.469375, > 3.875,4.5315,4.89,5.09375,5.216,5.46)) > dat > #> x y#> 1 1.0e-06 0.0000001#> 2 2.5e-01 > 1.9250000#> 3 5.0e-01 2.9625000#> 4 7.5e-01 3.4693750#> 5 1.0e+00 > 3.8750000#> 6 2.0e+00 4.5315000#> 7 3.0e+00 4.8900000#> 8 4.0e+00 > 5.0937500#> 9 5.0e+00 5.2160000#> 10 6.0e+00 5.4600000 > # visual inspection > plot(dat); lines(dat) > > # define constrained points > con <- matrix( > cbind(c(0,0,0,0,0,0,0,0,0,0), > c(1e-06,0.25,0.5,0.75,1,2,3, 4,5,6), > c(1e-07,1.925,2.9625,3.469375, > 3.875,4.5315,4.89,5.09375,5.216, 5.46)), > ncol = 3, nrow = 10) > # curve fitting > fit_result <- cobs(dat$x, dat$y, pointwise = con)*#> qbsks2(): > #> Performing general knot selection ... > #> Error in x %*% coefficients: NA/NaN/Inf in foreign function call (arg 2)* > > > Best regards, > > -- Tung > > [[alternative HTML version deleted]] > > ______________________________________________ > 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.