# 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)) }