# Code accompanying HW 5, 36-402, spring 2012

# Fit a "deac" parametric model to data
# Inputs: data frame (data), vector of starting parameters (start)
# Presumes: data has columns named ln_old_mass and delta_ln_mass
  # start contains three numbers
  # deac() function is defined and acts appropriately
# Output: that would be telling for problem 3b
fit.a.deac <- function(data,start=my.start) {
  # objective function
  sse <- function(par) {
    preds <- deac(data$ln_old_mass,par[1],par[2],par[3])
    sum((data$delta_ln_mass - preds)^2)
  }
  # invoke optim()
  fit <- optim(par=start,fn=sse,method="Nelder-Mead")
    # method makes sure no derivatives are needed
  # Give more use-friendly name to the parameters
  coefficients <- fit$par
  # calculate fitted values...
  fitted <- deac(data$ln_old_mass,coefficients[1],coefficients[2],
    coefficients[3])
  # and residuals
  residuals <- data$delta_ln_mass - fitted
  mse <- mean(residuals^2)
  return(list(coefficients=coefficients,fitted=fitted,residuals=residuals,
    mse=mse,data=data))
}
