'Summarize the Regression Results
Parameters
yname : string, optional
Default is `y`
xname : list of strings, optional
Default is `var_##` for ## in p the number of regressors
title : string, optional
Title for the top table. If not None, then this replaces the
default title
alpha : float
significance level for the confidence intervals
Returns
smry : Summary instance
this holds the summary tables and text, which can be printed or
converted to various output formats.
See Also
statsmodels.iolib.summary.Summary : class to hold summary
results'

def summary(self, yname=None, xname=None, title=None, alpha=0.05):

    (jvalue, jpvalue, jdf) = self.jtest()
    top_left = [('Dep.    Variable:', None), ('Model:', None), ('Method:', ['GMM']), ('Date:', None), ('Time:', None), ('No.    Observations:', None)]
    top_right = [('Hansen    J:', [('%#8.4g' % jvalue)]), ('Prob    (Hansen    J):', [('%#6.3g' % jpvalue)])]
    if (title is None):
        title = ((self.model.__class__.__name__ + '    ') + 'Results')
    from statsmodels.iolib.summary import Summary
    smry = Summary()
    smry.add_table_2cols(self, gleft=top_left, gright=top_right, yname=yname, xname=xname, title=title)
    smry.add_table_params(self, yname=yname, xname=xname, alpha=alpha, use_t=False)
    return smry
