Polyfit - Forcing a non-zero intercept

23 views (last 30 days)
Hi,
Is there any way to specify the y-intercept value of polyfit? I have had a look around, and when this question is asked most people are trying to fit it to a 0 y-intercept. In my case, I need to fit least-square lines to several different groups of points whose y-intercepts are known and are non-zero.
Any help would be great,
FP

Accepted Answer

Star Strider
Star Strider on 5 Nov 2012
Edited: Star Strider on 5 Nov 2012
I doubt that's possible with polyfit. If you are only using a first order regression model and you have access to one of the nonlinear curve fitting routines ( nlinfit in the Statistics Toolbox or lsqcurvefit in the Optimization Toolbox), the easiest way to do this is simply to use them with an objective function similar to:
Intercept = 5;
RegModel = @(B,X) B(1).*X + Intercept;
then:
beta0 = rand;
[Beta,R,J,CovB,MSE] = nlinfit(X, Y, RegModel, beta0);
You can use whatever sort of regression model you want, of course. In this one I used a simple single-parameter model.
You can specify whatever you want in a model function, and can fit as many parameters as you want (that are mathematically appropriate).

More Answers (1)

Matt J
Matt J on 5 Nov 2012
Edited: Matt J on 5 Nov 2012
So you just have a slope to estimate? It should be just
slope=xData\(yData-yIntercept);

Categories

Find more on Linear and Nonlinear Regression in Help Center and File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!