kmpfit confidence_band()
computes the confidence range for non-linear least squares. Here for the saturation curve:
from pylab import * from kapteyn import kmpfit def model(p, x): a, b = p return a*(1-np.exp(b*x)) x = np.linspace(0, 10, 100) y = .1*np.random.randn(x.size) + model([1, -.4], x) fit = kmpfit.simplefit(model, [.1, -.1], x, y) a, b = fit.params dfdp = [1-np.exp(b*x), -a*x*np.exp(b*x)] yhat, upper, lower = fit.confidence_band(x, dfdp, 0.95, model) scatter(x, y, marker='.', color='#0000ba') for i, l in enumerate((upper, lower, yhat)): plot(x, l, c='g' if i == 2 else 'r', lw=2) savefig('kmpfit confidence bands.png', bbox_inches='tight')
dfdp
- partial derivatives βf / βp of the model f = a * (1-e ^ (b * x)) with respect to each parameter p (i.e. a and b), see mine answer a similar question for background links. And here is the conclusion:

source share