Trace:

fitting

This shows you the differences between two versions of the page.

Both sides previous revision Previous revision Next revision | Previous revision Next revision Both sides next revision | ||

fitting [Wed Feb 23 16:38:49 2011] Alexander |
fitting [Sun Jul 21 14:09:36 2019] Alexander |
||
---|---|---|---|

Line 1: | Line 1: | ||

====== Nonlinear Curve Fitting: Fit Plot ====== | ====== Nonlinear Curve Fitting: Fit Plot ====== | ||

- | Nonlinear least squares data fitting can be performed using Fit Plot. | ||

- | To create a Fit Plot, select x and y columns in table, then select '' | ||

- | 'Linear fitting is a quite simple method, which is based on solving the system of linear equations. Unlike linear fitting, nonlinear fitting is performed by iterative algorithm which needs the user to set the initial values of fit parameters. | + | ===== Creating a Fit Plot ===== |

+ | Nonlinear least squares data fitting (nonlinear regression) can be performed using Fit Plot. | ||

+ | To create a Fit Plot, select your X and Y columns in Table, then select '' | ||

+ | | ||

+ | {{: | ||

+ | | ||

+ | ==== MagicPlot has been verified with NIST Datasets ==== | ||

+ | National Institute of Standards and Technology (NIST) has created the Statistical Reference Datasets Project which includes [[http:// | ||

+ | | ||

+ | ===== Fitting Methodology ===== | ||

+ | ' | ||

+ | Fit procedure iteratively varies the parameters of the fit function to minimize the residual sum of squares. The nonlinear fitting algorithm needs the user to set the initial values of fit parameters. | ||

To fit the data, implement these steps: | To fit the data, implement these steps: | ||

- | - Create a Fit Plot, specify Y errors in Plot properties, if any | + | - Create a Fit Plot, specify Y errors in Data tab of Curve Properties dialog for the data curve, if any |

- Specify fit function by adding Fit Curves | - Specify fit function by adding Fit Curves | ||

- Specify initial values of fit parameters (drag curves or enter accurate values) | - Specify initial values of fit parameters (drag curves or enter accurate values) | ||

Line 12: | Line 21: | ||

- Run fitting | - Run fitting | ||

- | {{:.png|Fit example}} | + | You can undo fit and also undo changing initial parameters as any other action using ''. |

- | ===== Further reading ===== | + | ==== Further reading ==== |

This manual does not completely cover the complex nonlinear fitting methodology. We recommend you to take a look at this book: | This manual does not completely cover the complex nonlinear fitting methodology. We recommend you to take a look at this book: | ||

* H. Motulsky and A. Christopoulos, | * H. Motulsky and A. Christopoulos, | ||

+ | |||

+ | {{: | ||

===== Fit Function is a Sum of Fit Curves ===== | ===== Fit Function is a Sum of Fit Curves ===== | ||

- | MagicPlot considers fit function as a **sum** of Fit Curves. Ordinarily in peaks fitting each Fit Curve corresponds to one peak in experimental data. There is a number of predefined Fit Curves (Line, Parabola, Gauss, Lorentz, etc.) You can also specify a custom Fit Curve. Baseline fitting components may be added to the fitting sum, too. | + | MagicPlot considers fit function as a **sum** of Fit Curves. Ordinarily in peaks fitting each Fit Curve corresponds to one peak in experimental data. Click the ''. There is a number of predefined Fit Curves types (Line, Parabola, Gauss, Lorentz, etc.) You can also create a [[custom_fit_equation|Custom Equation]] Fit Curve and manually enter the formula (Pro edition only). Baseline fitting components may be added to the fitting sum, too. |

- | Fit Plot window contains the list of Fit Curves. Each Fit Curve in the list has three checkboxes: '': | + | Fit Plot window contains the list of Fit Curves. Each Fit Curve in the list has three checkboxes: |

- | * '' | + | |

- | * '' | + | {{:curves_table.png? |

+ | |||

+ | * ''the plot. Active only if Baseline checkbox is not set | ||

+ | * ''all Fit Sum from data | ||

* '' | * '' | ||

- | Below the Fit Curves list is a parameters table which shows names, values, and descriptions of parameters relating to selected Fit Curve. | + | Below the Fit Curves list, is a parameters table which shows names, values, and descriptions of parameters relating to the selected Fit Curve. |

+ | | ||

+ | ==== Fitting by Sum and Fitting One Curve ==== | ||

+ | MagicPlot allows two alternatives buttons to run the fit: | ||

+ | * '' | ||

+ | * ''Fit Curve. | ||

- | ===== Copying and Pasting Fit Curves ===== | + | ==== Copying and Pasting Fit Curves ==== |

You can copy and paste Fit Curves from one Fit Plot to another Fit Plot or Figure. You can also paste the copied Fit Curves to the same Fit Plot to create a copy. | You can copy and paste Fit Curves from one Fit Plot to another Fit Plot or Figure. You can also paste the copied Fit Curves to the same Fit Plot to create a copy. | ||

* The copy of Fit Curves with the same parameters and styles will be created if you paste Fit Curves to a Fit Plot. | * The copy of Fit Curves with the same parameters and styles will be created if you paste Fit Curves to a Fit Plot. | ||

* A link to the source Fit Curves will be inserted if you paste Fit Curves in a Figure. | * A link to the source Fit Curves will be inserted if you paste Fit Curves in a Figure. | ||

+ | |||

+ | ==== Fit Curves Reordering ==== | ||

+ | You can reorder Fit Curves by dragging them in the table. The data curve is always drawn the first and fit sum is drawn the last. | ||

===== Setting Initial Values of Parameters ===== | ===== Setting Initial Values of Parameters ===== | ||

- | Nonlinear fitting assumes that certain initial values of parameters are set before fitting. This procedure is very easy if you use Fit Curves of predefined types (not custom equation): you can drag curves on plot. Initial parameters values for each Fit Curve can also be set in parameter table. | + | Nonlinear fitting assumes that certain initial values of parameters are set before fitting. This procedure is very easy if you use Fit Curves of predefined types (not custom equation): you can drag curves on the plot. Initial parameters values for each Fit Curve can also be set in the parameter table. |

+ | | ||

+ | {{: | ||

+ | | ||

+ | ==== Adjusting Parameters with Mouse Wheel ==== | ||

+ | You can adjust Parameters in the table using mouse wheel scrolling when the mouse cursor is on the desired parameter: Hold Ctrl key (Cmd key on Mac) and scroll. If the Shift key is also pressed the parameter step for one wheel '. | ||

- | {{:moving_curves.png|Moving curves with mouse}} | + | ===== Guessing Peaks ===== |

+ | If you are fitting a spectrum with multiple peaks, MagicPlot may automatically add and approximately locate peaks before fitting (Pro edition only). See [[guess_peaks]] for details. Guessed peaks should be used only as of the initial estimate for fitting: don't forget to click the Fit button after peaks are added. | ||

===== Parameter Locking ===== | ===== Parameter Locking ===== | ||

- | You can lock parameter(s) to prevent varying this parameter during fit and to prevent its changing due to setting initial values by mouse dragging (for built-in functions). Set the checkbox in ''parameters list. | + | You can lock (fix) parameter(s) to prevent varying this parameter(s) during the fit and to prevent its changing due to set initial values by mouse dragging (for built-in functions). Set the checkbox in ''the parameter list to lock parameter. |

- | ===== Fit Intervals ===== | + | {{:.png?of Parameters}} |

- | You can set the x intervals of the data. Data points outside these intervals are not used to compute the minimizing residual sum of squares (see below). You can use this feature if some data points (especially in the beginning or the end) are inaccurate, e.g. noisy. | + | |

- | Select '': | + | ===== Parameters Joining ===== |

- | * Double click on interval to split it | + | MagicPlot allows joining (sometimes referred to as coupling, binding, linking) of fit parameters of different Fit Curves. See [[joining]] for details. |

+ | | ||

+ | ===== Weighting of Data Points Using Y Errors ===== | ||

+ | MagicPlot allows the weighting of data points with Y error data. You can specify Y error data in Fit Plot properties dialog. If no Y error data are specified weighting is not used. | ||

+ | | ||

+ | Weights are calculated as '' | ||

+ | | ||

+ | Weights must be positive and finite for all points so the Y error values must be positive and non-zero (to prevent infinite weights). MagicPlot checks this condition before fitting and shows an error message if Y errors cannot be used to compute weights. | ||

+ | | ||

+ | ===== Specifying Fit Intervals ===== | ||

+ | You can set the X intervals of the data which will be used for fitting. Data points outside these intervals are not used to compute the minimizing residual sum of squares. You can use this feature if some data points (especially in the beginning or the end) are inaccurate, e.g. noisy. | ||

+ | | ||

+ | Select ''in the table. | ||

+ | * Double click on the interval to split it | ||

* Drag the interval border to move it. If intervals intersect, they will be merged | * Drag the interval border to move it. If intervals intersect, they will be merged | ||

* Use context menu on the plot to create, delete and split intervals | * Use context menu on the plot to create, delete and split intervals | ||

- | | {{:interval_context_menu2.png|Interval context menu}} | {{:Interval context menu}} | | + | **Note:** Data intervals from the ''. To set individual data intervals for the one Curve fitting use ''Interval'' |

+ | | ||

+ | {{:?nolink|Fit interval context menu}} | ||

===== Baseline Fitting and Extraction ===== | ===== Baseline Fitting and Extraction ===== | ||

- | Fit Interval is also usable when baseline fitting. Before baseline fitting you can specify the interval which does not contain any signal points and contains baseline only. Set '' | + | Fit Interval is also usable when baseline fitting. Before baseline fitting, you can specify the interval which does not contain any signal points and contains baseline only. Set '' |

- | The most appropriate curve type for baseline fitting is [[spline|spline]]. | + | Note that if you use data processing (integration,behavior to exclude baseline from data before integrating, |

- | | + | |

- | Note that if you execute one of data processing algorithms (integration,behaviour to exclude baseline from data before integrating, | + | |

===== ' | ===== ' | ||

- | The 'x, y) fit data when you create Fit Plot. The 'y data and baseline approximation (the sum of Fit Curves for which '' | + | The 'X and Y) data when you create a Fit Plot. The 'Y data and baseline approximation (the sum of Fit Curves for which ''as data. |

- | | + | |

- | It is ' | + | |

Use ' | Use ' | ||

- | ===== Viewing the Difference between Data and Fit Sum Function (Residual) ===== | + | ===== Viewing the Residual Plot ===== |

- | MagicPlot offers two different ways to view the difference between data and Fit Sum function: | + | Residual means here the difference between initial data, baseline function and Fit Sum function. MagicPlot offers two different ways to view the residual: |

- | * You can set ''to subtract them from data and explore the residual plot | + | * Press and hold the ''residual will be shown while the button is pressed. You can use either mouse or space key (if the button is selected) to hold '' |

- | or | + | * You can either set '' |

- | * You can press and hold ''difference between data and Fit Sum function is shown while button is pressed. You can use either mouse or space key (if button is selected) to hold '' | + | |

- | ===== Fit One Curve ===== | + | ===== Fitting ===== |

- | You can also use MagicPlot to fit the data with single selected Fit Curve by pressing ''. In this case a specific data interval for each Fit Curve is used and the main fitting data interval (set in '') is ignored. Select ''. | + | To execute the fit click the ''Fit by Sum''''see below). |

- | Because of using individual data interval this method is useful for baseline fitting. In order to fit baseline specify the intervals which does not contain signal (peaks) and contain only noise. | + | MagicPlot indicates the fit process with a special window. Fitting curves are periodically updated on the plot while fitting so you can see how fit converges. |

- | ===== Joining the Parameters of Fit Curves ===== | + | {{:Fit progress window}} |

- | MagicPlot allows coupling of fit parameters. See [[joining]] for details. | + | |

- | ===== Fit Progress Window ===== | + | MagicPlot shows the current iteration number and deviation decrement with two progress bars while the fit is performed. The fit process stops when one of these progress bars reaches the end. |

- | MagicPlot indicates fit process with a special window. Fitting curves are periodically updated on plot while fitting so you can see how fit converges. | + | |

- | | + | |

- | {{: | + | |

- | | + | |

- | MagicPlot shows current iteration number and deviation decrement with two progress bars while fit is performed. The fit process stops when one of these progress bars reaches the end. | + | |

You can see two buttons on fit progress window: | You can see two buttons on fit progress window: | ||

Line 92: | Line 123: | ||

* '' | * '' | ||

- | ===== Undoing Fit ===== | + | ===== Fitting One Curve ===== |

- | You can undo fit and undo changing initial parameters as usual using ''Undo''It is a handy feature when experimenting with different models and initial parameters. | + | You can use MagicPlot to fit the data with single selected Fit Curve by pressing ''and the main fitting data interval (from ''Fit Interval'' tab) is ignored. Select '' |

+ | | ||

+ | Because of using individual data interval this method is useful for baseline fitting. In order to fit baseline specify the intervals which do not contain signal (peaks) and contain only noise. | ||

+ | | ||

+ | {{: | ||

+ | | ||

+ | ===== Why My Fit is Not Converged? ===== | ||

+ | In some cases, the fit procedure may fail to find the optimal parameters values. The actual mathematical reason for this error is the impossibility to invert the matrix α calculated from partial derivatives of the fit function with respect to fit parameters. This inverted matrix is used to compute the new values of parameters for the next step of fit (like gradient descent). In most cases, this error occurs when the matrix α is ill-conditioned or nearly singular and the inverse cannot be calculated accurately enough with used floating-point arithmetic. | ||

+ | | ||

+ | === The origin of this error may be: === | ||

+ | * Fit is not converged through one or more parameters: some parameters were taking unrealistically great values during iterations. There is no local minimum of residual sum of squares near the initial values of these parameters. MagicPlot highlights the suspicious Fit Curve in this case. | ||

+ | * Mutual dependency exists between some parameters. The algorithm cannot resolve which parameter to vary. | ||

+ | * Fit function is ill-conditioned: | ||

+ | * Numeric overflow (or underflow) when calculating fit function with initial parameter values or on the next steps. | ||

+ | | ||

+ | === Try one of the following: === | ||

+ | * Specify more accurate initial values of parameters. | ||

+ | * Simplify the fit function (e.g. remove some peaks). | ||

+ | * Lock some parameters. | ||

===== See Also ===== | ===== See Also ===== | ||

Line 102: | Line 151: | ||

* [[guess_peaks]] | * [[guess_peaks]] | ||

* [[fit_equations]] | * [[fit_equations]] | ||

- | * [[transform_xy]] | ||

* [[interval_statistics]] | * [[interval_statistics]] | ||

+ | * [[table_from_curves]] |

fitting.txt · Last modified: Tue Apr 7 17:12:13 2020 by Alexander

Except where otherwise noted, content on this wiki is licensed under the following license: CC Attribution-Share Alike 4.0 International