# Fit Exponential Model to Data

This example shows how to fit an exponential model to data using the trust-region and Levenberg-Marquardt nonlinear least-squares algorithms.

Load the `census` data set.

`load census`

The variables `pop` and `cdate` contain data for the population size and the year the census was taken, respectively.

Display a scatter plot of the data.

```scatter(cdate,pop) xlabel("Year") ylabel("Population")``` The plot shows that the population increases from year to year in a shape that resembles an exponential function.

Fit a two-term exponential model to the population data using the default trust-region fitting algorithm. Return the results of the fit and the goodness-of-fit statistics.

`[exp_tr,gof_tr] = fit(cdate,pop,"exp2")`
```exp_tr = General model Exp2: exp_tr(x) = a*exp(b*x) + c*exp(d*x) Coefficients (with 95% confidence bounds): a = 7.169e-17 b = 0.02155 c = 0 d = 0.02155 ```
```gof_tr = struct with fields: sse: 1.2412e+04 rsquare: 0.8995 dfe: 17 adjrsquare: 0.8818 rmse: 27.0209 ```

`exp_tr` contains the results of the fit, including coefficients calculated with the trust-region fitting algorithm. The goodness-of-fit statistics stored in `gof_tr` include the root mean squared error (RMSE) of 27.0209.

Plot the model in `exp_tr` together with a scatter plot of the data.

```plot(exp_tr,cdate,pop) legend(["data","predicted value"]) xlabel("Year") ylabel("Population")``` The plot shows that the model in `exp_tr` does not closely follow the census data.

Improve the fit by using the Levenberg-Marquardt fitting algorithm to calculate the coefficients.

`[exp_lm,gof_lm] = fit(cdate,pop,"exp2",Algorithm="Levenberg-Marquardt")`
```exp_lm = General model Exp2: exp_lm(x) = a*exp(b*x) + c*exp(d*x) Coefficients (with 95% confidence bounds): a = 4.282e-17 (-1.125e-11, 1.126e-11) b = 0.02477 (-5.67, 5.719) c = -3.933e-17 (-1.126e-11, 1.126e-11) d = 0.02481 (-5.696, 5.745) ```
```gof_lm = struct with fields: sse: 475.9498 rsquare: 0.9961 dfe: 17 adjrsquare: 0.9955 rmse: 5.2912 ```

`exp_lm` contains the results of the fit, including coefficients calculated with the Levenberg-Marquardt fitting algorithm. The goodness-of-fit statistics stored in `gof_lm` include the RMSE of 5.2912, which is smaller than the RMSE for `exp_tr`. The relative sizes of the RMSEs indicate that the model stored in `exp_lm` fits the data more accurately than the model stored in `exp_tr`.

Plot the model in `exp_lm` together with a scatter plot of the data.

```plot(exp_lm,cdate,pop) legend(["data","predicted value"]) xlabel("Year") ylabel("Population")``` The plot shows that the model in `exp_lm` follows the census data more closely than the model in `exp_tr`.