# [SciPy-User] Fitting Polynomial With Shape Restrictions

7 messages
Open this post in threaded view
|
Report Content as Inappropriate

## [SciPy-User] Fitting Polynomial With Shape Restrictions

 I am trying to fit a polynomial to observational data with shape restrictions - in this particular case monotonicity (decreasing) of the function and an always positive second derivative.Some of the interpolation classes have a mathematical "built-in" restriction - like scipy.interpolate.Rbf's thin-plate roughness penalty imposes some restrictions, but it's not explicit or adjustable.What are my options for imposing boundary conditions or shape restrictions on the spline? I have sample data here: import pandas as pddf = pd.read_csv("https://bpaste.net/raw/3e20878b5237")or available independently at https://bpaste.net/raw/3e20878b5237I have tried using a interior point convex optimization solver, but the results seem to be numerically finicky. Are there other alternatives?  _______________________________________________ SciPy-User mailing list [hidden email] https://mail.python.org/mailman/listinfo/scipy-user
Open this post in threaded view
|
Report Content as Inappropriate

## Re: Fitting Polynomial With Shape Restrictions

 On Sun, May 7, 2017 at 2:45 PM, Jared Vacanti wrote:I am trying to fit a polynomial to observational data with shape restrictions - in this particular case monotonicity (decreasing) of the function and an always positive second derivative.Some of the interpolation classes have a mathematical "built-in" restriction - like scipy.interpolate.Rbf's thin-plate roughness penalty imposes some restrictions, but it's not explicit or adjustable.What are my options for imposing boundary conditions or shape restrictions on the spline? I have sample data here: import pandas as pddf = pd.read_csv("https://bpaste.net/raw/3e20878b5237")or available independently at https://bpaste.net/raw/3e20878b5237I have tried using a interior point convex optimization solver, but the results seem to be numerically finicky. Are there other alternatives? As far as I know, pchip is the only one with monotonicity constraints  https://docs.scipy.org/doc/scipy/reference/generated/scipy.interpolate.pchip_interpolate.htmlJosef  _______________________________________________ SciPy-User mailing list [hidden email] https://mail.python.org/mailman/listinfo/scipy-user _______________________________________________ SciPy-User mailing list [hidden email] https://mail.python.org/mailman/listinfo/scipy-user
Open this post in threaded view
|
Report Content as Inappropriate

## Re: Fitting Polynomial With Shape Restrictions

 Are there other techniques of fitting splines (perhaps using scipy.optimize ?) where I can impose boundary conditions myself, even outside of the options provided in scipy.interpolate?On Sun, May 7, 2017 at 2:02 PM, wrote:On Sun, May 7, 2017 at 2:45 PM, Jared Vacanti wrote:I am trying to fit a polynomial to observational data with shape restrictions - in this particular case monotonicity (decreasing) of the function and an always positive second derivative.Some of the interpolation classes have a mathematical "built-in" restriction - like scipy.interpolate.Rbf's thin-plate roughness penalty imposes some restrictions, but it's not explicit or adjustable.What are my options for imposing boundary conditions or shape restrictions on the spline? I have sample data here: import pandas as pddf = pd.read_csv("https://bpaste.net/raw/3e20878b5237")or available independently at https://bpaste.net/raw/3e20878b5237I have tried using a interior point convex optimization solver, but the results seem to be numerically finicky. Are there other alternatives? As far as I know, pchip is the only one with monotonicity constraints  https://docs.scipy.org/doc/scipy/reference/generated/scipy.interpolate.pchip_interpolate.htmlJosef  _______________________________________________ SciPy-User mailing list [hidden email] https://mail.python.org/mailman/listinfo/scipy-user _______________________________________________ SciPy-User mailing list [hidden email] https://mail.python.org/mailman/listinfo/scipy-user _______________________________________________ SciPy-User mailing list [hidden email] https://mail.python.org/mailman/listinfo/scipy-user
Open this post in threaded view
|
Report Content as Inappropriate

## Re: Fitting Polynomial With Shape Restrictions

 On Sun, May 7, 2017 at 10:12 PM, Jared Vacanti <[hidden email]> wrote: > Are there other techniques of fitting splines (perhaps using scipy.optimize > ?) where I can impose boundary conditions myself, even outside of the > options provided in scipy.interpolate? FITPACK has some spline fitting with convexity constraints, but I don't think it's exposed to python: https://github.com/scipy/scipy/blob/master/scipy/interpolate/fitpack/concon.fhttps://github.com/scipy/scipy/blob/master/scipy/interpolate/fitpack/cocosp.fHyman et al have some discussion of constructing local interpolants with convexity constraints: http://math.lanl.gov/~mac/papers/numerics/DEH89.pdfand references therein. > On Sun, May 7, 2017 at 2:02 PM, <[hidden email]> wrote: >> >> >> >> On Sun, May 7, 2017 at 2:45 PM, Jared Vacanti <[hidden email]> >> wrote: >>> >>> I am trying to fit a polynomial to observational data with shape >>> restrictions - in this particular case monotonicity (decreasing) of the >>> function and an always positive second derivative. >>> >>> Some of the interpolation classes have a mathematical "built-in" >>> restriction - like scipy.interpolate.Rbf's thin-plate roughness penalty >>> imposes some restrictions, but it's not explicit or adjustable. >>> >>> What are my options for imposing boundary conditions or shape >>> restrictions on the spline? >>> >>> I have sample data here: >>> >>> import pandas as pd >>> df = pd.read_csv("https://bpaste.net/raw/3e20878b5237") >>> >>> or available independently at https://bpaste.net/raw/3e20878b5237>>> >>> I have tried using a interior point convex optimization solver, but the >>> results seem to be numerically finicky. Are there other alternatives? >> >> >> As far as I know, pchip is the only one with monotonicity constraints >> https://docs.scipy.org/doc/scipy/reference/generated/scipy.interpolate.pchip_interpolate.html>> >> Josef >> >> >>> >>> >>> _______________________________________________ >>> SciPy-User mailing list >>> [hidden email] >>> https://mail.python.org/mailman/listinfo/scipy-user>>> >> >> >> _______________________________________________ >> SciPy-User mailing list >> [hidden email] >> https://mail.python.org/mailman/listinfo/scipy-user>> > > > _______________________________________________ > SciPy-User mailing list > [hidden email] > https://mail.python.org/mailman/listinfo/scipy-user> _______________________________________________ SciPy-User mailing list [hidden email] https://mail.python.org/mailman/listinfo/scipy-user
Open this post in threaded view
|
Report Content as Inappropriate

## Re: Fitting Polynomial With Shape Restrictions

Open this post in threaded view
|
Report Content as Inappropriate

## Re: Fitting Polynomial With Shape Restrictions

 In reply to this post by Evgeni Burovski On Sun, May 7, 2017 at 3:34 PM, Evgeni Burovski wrote:On Sun, May 7, 2017 at 10:12 PM, Jared Vacanti <[hidden email]> wrote: > Are there other techniques of fitting splines (perhaps using scipy.optimize > ?) where I can impose boundary conditions myself, even outside of the > options provided in scipy.interpolate? FITPACK has some spline fitting with convexity constraints, but I don't think it's exposed to python: https://github.com/scipy/scipy/blob/master/scipy/interpolate/fitpack/concon.f https://github.com/scipy/scipy/blob/master/scipy/interpolate/fitpack/cocosp.f Hyman et al have some discussion of constructing local interpolants with convexity constraints: http://math.lanl.gov/~mac/papers/numerics/DEH89.pdf and references therein. I looked into monotonicity and similar constraints for splines several years ago.I gave up because adding all the constraints that are implied on the coefficients (values and derivatives at the knots) looked difficult, and it is difficult to get the relevant parameters directly from the scipy splines.AFAIRand I was hoping for somebody to come along with more background and more incentive than I had.Josef  > On Sun, May 7, 2017 at 2:02 PM, <[hidden email]> wrote: >> >> >> >> On Sun, May 7, 2017 at 2:45 PM, Jared Vacanti <[hidden email]> >> wrote: >>> >>> I am trying to fit a polynomial to observational data with shape >>> restrictions - in this particular case monotonicity (decreasing) of the >>> function and an always positive second derivative. >>> >>> Some of the interpolation classes have a mathematical "built-in" >>> restriction - like scipy.interpolate.Rbf's thin-plate roughness penalty >>> imposes some restrictions, but it's not explicit or adjustable. >>> >>> What are my options for imposing boundary conditions or shape >>> restrictions on the spline? >>> >>> I have sample data here: >>> >>> import pandas as pd >>> df = pd.read_csv("https://bpaste.net/raw/3e20878b5237") >>> >>> or available independently at https://bpaste.net/raw/3e20878b5237 >>> >>> I have tried using a interior point convex optimization solver, but the >>> results seem to be numerically finicky. Are there other alternatives? >> >> >> As far as I know, pchip is the only one with monotonicity constraints >> https://docs.scipy.org/doc/scipy/reference/generated/scipy.interpolate.pchip_interpolate.html >> >> Josef >> >> >>> >>> >>> _______________________________________________ >>> SciPy-User mailing list >>> [hidden email] >>> https://mail.python.org/mailman/listinfo/scipy-user >>> >> >> >> _______________________________________________ >> SciPy-User mailing list >> [hidden email] >> https://mail.python.org/mailman/listinfo/scipy-user >> > > > _______________________________________________ > SciPy-User mailing list > [hidden email] > https://mail.python.org/mailman/listinfo/scipy-user > _______________________________________________ SciPy-User mailing list [hidden email] https://mail.python.org/mailman/listinfo/scipy-user _______________________________________________ SciPy-User mailing list [hidden email] https://mail.python.org/mailman/listinfo/scipy-user