Skip to contents

Extract and format results from Simulated Annealing (Maximum Likelihood Estimation)

Usage

mle_format(x, yvar)

Arguments

x

List with the results of the simulated annealing algorithm for Maximum Likelihood Estimation. See likelihood::anneal()

yvar

The name of the column that contains the dependent variable (the “observed” value). This column must be present in the source_data of the x (results) list

Value

A dataframe with outputs from the results of the simulated annealing maximum parameter estimation. This dataframe contains the following columns (see help in likelihood::anneal()):

  • max_likeli The maximum likelihood value of the model

  • n_params The number of the estimated parameters

  • aic_corr The value of Akaike's Information Criterion “corrected” for small sample size. See the "Simulated Annealing Algorithm" help page of the likelihood package for more information.

  • aic The value of Akaike's Information Criterion. See the "Simulated Annealing Algorithm" help page of the likelihood package for more information. slope Slope of observed values linearly regressed on those predicted by model, using the parameter maximum likelihood estimates. The intercept is forced at zero.

  • R2 Proportion of variance explained by the model relative to that explained by the simple mean of the data.

  • rmse Root Mean Square Error, i.e. the standard deviation of the residuals. It is computed as:

$$RMSE=\sqrt{ \frac{\sum_{i=1}^{N}(obs_i - exp_i)^2}{n -1}}$$

Examples


# Get the results of the maximum likelihood estimation from the example in
# the anneal function of the likelihood pkg.

library(likelihood)
#> Loading required package: nlme
data(crown_rad)
dataset <- crown_rad

# Create our model function
modelfun <- function (a, b, DBH) {a + b * DBH}

# Compute the MLE of the parameters
results <- anneal(model = modelfun,
  par = list(a = 0, b = 0),
  var = list(DBH = "DBH", x = "Radius", mean = "predicted",
             sd = 0.815585, log = TRUE),
  source_data = dataset,
  par_lo = list(a = 0, b = 0),
  par_hi = list(a = 50, b = 50),
  pdf = dnorm,
  dep_var = "Radius",
  max_iter = 20000,
  show_display = FALSE)

# Format the results
mle_format(results, yvar = "DBH")
#>   max_likeli n_params  aic_cor      aic        R2     slope    rmse
#> 1  -119.7453        2 243.6156 243.4906 0.4450001 0.9999627 18.9791