'Pools MICE imputation results.
This method can only be used after the `run` method has been
called.  Returns estimates and standard errors of the analysis
model parameters.
Returns a MICEResults instance.'

def combine(self):

    params_list = []
    cov_within = 0.0
    scale_list = []
    for results in self.results_list:
        results_uw = results._results
        params_list.append(results_uw.params)
        cov_within += results_uw.cov_params()
        scale_list.append(results.scale)
    params_list = np.asarray(params_list)
    scale_list = np.asarray(scale_list)
    params = params_list.mean(0)
    cov_within /= len(self.results_list)
    cov_between = np.cov(params_list.T)
    f = (1 + (1 / float(len(self.results_list))))
    cov_params = (cov_within + (f * cov_between))
    fmi = ((f * np.diag(cov_between)) / np.diag(cov_params))
    scale = np.mean(scale_list)
    results = MICEResults(self, params, (cov_params / scale))
    results.scale = scale
    results.frac_miss_info = fmi
    results.exog_names = self.exog_names
    results.endog_names = self.endog_names
    results.model_class = self.model_class
    return results
