File Exchange

## Five parameters logistic regression - There and back again

version 1.2 (18.3 KB) by

Fit data points with a five points logistic regression or interpolate data.

Updated

One big holes into MatLab cftool function is the absence of Logistic Functions. In particular, The Five Parameters Logistic Regression or 5PL nonlinear regression model is commonly used for curve-fitting analysis in bioassays or immunoassays such as ELISA, RIA, IRMA or dose-response curves. The standard dose-response curve
is sometimes called the four-parameter logistic equation. It is characterized by it’s classic “S” or sigmoidal shape that fits the bottom and top plateaus of the curve, the EC50, and the slope factor (Hill's slope). This curve is symmetrical around its inflection point. To extend the model to handle curves that are not symmetrical, the 5PL equation adds an additional parameter, which quantifies the asymmetry.
The 5PL equation is:
F(x) = D+(A-D)/((1+(x/C)^B)^E)
where:
A = Minimum asymptote. In a bioassay where you have a standard curve, this can be thought of as the response value at 0 standard concentration.

B = Hill's slope. The Hill's slope refers to the steepness of the curve. It could either be positive or negative.

C = Inflection point. The inflection point is defined as the point on the
curve where the curvature changes direction or signs. C is the concentration of analyte where y=(D-A)/2.

D = Maximum asymptote. In an bioassay where you have a standard curve, this can be thought of as the response value for infinite standard concentration.

E = Asymmetry factor. When E=1 we have a symmetrical curve around inflection point and so we have a four-parameters logistic equation.

In this submission there are 2 functions:
L5P - to find the 5 parameters and to fit your data (as calibrators...);
L5Pinv - to interpolate data of unknown samples onto calibrators curve.

Enjoy!

Giuseppe Cardillo

### Giuseppe Cardillo (view profile)

a very useful comment...

orca

### orca (view profile)

Giuseppe Cardillo

### Giuseppe Cardillo (view profile)

this is not true!
if you look well at code:

slope=(y(end)-y(1))/(x(end)-x(1));

and so slope can be positive or negative.

Moreover, in the starting points vector:

st_=[min(y) sign(slope) x(Idx) max(y) 1];

sign(slope) is -1 or +1.

So your comment is completely wrong!

precuneus

### precuneus (view profile)

The code mostly assumes a positive slope (e.g. the automatic selection of starting values).