estimation: boolean variable to indicate if the objective function is being called during parameter estimation
Returns
If estimation is TRUE it will return the objective function value, if it is FALSE it will return a list with an element value containing the objective function value and an element named isgood that is TRUE if the objective function was successful.