'Estimates the scale based on the option provided to the fit method.'

def _estimate_scale(self, resid):

    if isinstance(self.scale_est, str):
        if (self.scale_est.lower() == 'mad'):
            return scale.mad(resid, center=0)
        else:
            raise ValueError(('Option    %s    for    scale_est    not    understood' % self.scale_est))
    elif isinstance(self.scale_est, scale.HuberScale):
        return self.scale_est(self.df_resid, self.nobs, resid)
    else:
        return (scale.scale_est(self, resid) ** 2)
