Automatically determine the best-fitting 2D-Gaussian for a data set

autofit_gaussian_2D(
data,
comparison_method = "rmse",
maxiter = 1000,
simplify = TRUE
)

## Arguments

data |
A data.frame that contains the raw data (generally rectilinearly
gridded data, but this is not a strict requirement). Columns must be named
`"X_values"` , `"Y_values"` and `"response"` . |

comparison_method |
One of "rmse", "rss", or "AIC"; what metric should
be used to determine the "best-fitting" Gaussian? |

maxiter |
Default 1000. A positive integer specifying the maximum number
of iterations allowed. See `stats::nls.control()` for more details. |

simplify |
TRUE or FALSE. If TRUE, return only the coefficients, model,
model_error_stats, and fit_method for the best-fitting model. If FALSE, a
model comparison table is also included in the returned list as
`$model_comparison` . This table is obtained via
`compare_gaussian_fits()` . |

## Value

If `simplify = TRUE`

, a list with the components:

"coefs" A data.frame of fitted model parameters.

"model" The model object, fitted by `stats::nls()`

.

"model_error_stats" A data.frame detailing the rss, rmse, deviance,
and AIC of the fitted model.

"fit_method" A character vector that indicates which method and
orientation strategy was used by this function.

If `simplify = FALSE`

, a model comparison table is also included
in the returned list as `$model_comparison`

. This table is obtained
via `compare_gaussian_fits()`

.

## Details

This function runs `fit_gaussian_2D()`

three times: once for
each of the "main" types of models: 1) elliptical, unconstrained; 2)
elliptical, log; 3) circular. In all three cases, amplitudes and
orientations are unconstrained. The function `compare_gaussian_fits()`

is then used to determine which of these three models is the best-fitting,
using the `comparison_method`

argument to make the decision.

## Author

Vikram B. Baliga

## Examples