# Custom Nonlinear Census Fitting

This example shows how to fit a custom equation to census data, specifying bounds, coefficients, and a problem-dependent parameter.

Load and plot the data in census.mat:

plot(cdate,pop,'o')
hold on

Create a fit options structure and a fittype object for the custom nonlinear model y = a(x-b)n, where a and b are coefficients and n is a problem-dependent parameter. See the fittype function page for more details on problem-dependent parameters.

s = fitoptions('Method','NonlinearLeastSquares',...
'Lower',[0,0],...
'Upper',[Inf,max(cdate)],...
'Startpoint',[1 1]);
f = fittype('a*(x-b)^n','problem','n','options',s);

Fit the data using the fit options and a value of n = 2:

[c2,gof2] = fit(cdate,pop,f,'problem',2)
c2 =
General model:
c2(x) = a*(x-b)^n
Coefficients (with 95% confidence bounds):
a =    0.006092  (0.005743, 0.006441)
b =        1789  (1784, 1793)
Problem parameters:
n =           2
gof2 = struct with fields:
sse: 246.1543
rsquare: 0.9980
dfe: 19
rmse: 3.5994

Fit the data using the fit options and a value of n = 3:

[c3,gof3] = fit(cdate,pop,f,'problem',3)
c3 =
General model:
c3(x) = a*(x-b)^n
Coefficients (with 95% confidence bounds):
a =   1.359e-05  (1.245e-05, 1.474e-05)
b =        1725  (1718, 1731)
Problem parameters:
n =           3
gof3 = struct with fields:
sse: 232.0058
rsquare: 0.9981
dfe: 19