'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):

    from statsmodels.stats.stattools import jarque_bera, omni_normtest, durbin_watson
    (jb, jbpv, skew, kurtosis) = jarque_bera(self.wresid)
    (omni, omnipv) = omni_normtest(self.wresid)
    eigvals = self.eigenvals
    condno = self.condition_number
    self.diagn = dict(jb=jb, jbpv=jbpv, skew=skew, kurtosis=kurtosis, omni=omni, omnipv=omnipv, condno=condno, mineigval=eigvals[(-1)])
    top_left = [('Dep.    Variable:', None), ('Model:', None), ('Method:', ['Least    Squares']), ('Date:', None), ('Time:', None), ('No.    Observations:', None), ('Df    Residuals:', None), ('Df    Model:', None)]
    if hasattr(self, 'cov_type'):
        top_left.append(('Covariance    Type:', [self.cov_type]))
    top_right = [('R-squared:', [('%#8.3f' % self.rsquared)]), ('Adj.    R-squared:', [('%#8.3f' % self.rsquared_adj)]), ('F-statistic:', [('%#8.4g' % self.fvalue)]), ('Prob    (F-statistic):', [('%#6.3g' % self.f_pvalue)]), ('Log-Likelihood:', None), ('AIC:', [('%#8.4g' % self.aic)]), ('BIC:', [('%#8.4g' % self.bic)])]
    diagn_left = [('Omnibus:', [('%#6.3f' % omni)]), ('Prob(Omnibus):', [('%#6.3f' % omnipv)]), ('Skew:', [('%#6.3f' % skew)]), ('Kurtosis:', [('%#6.3f' % kurtosis)])]
    diagn_right = [('Durbin-Watson:', [('%#8.3f' % durbin_watson(self.wresid))]), ('Jarque-Bera    (JB):', [('%#8.3f' % jb)]), ('Prob(JB):', [('%#8.3g' % jbpv)]), ('Cond.    No.', [('%#8.3g' % condno)])]
    if (title is None):
        title = ((self.model.__class__.__name__ + '    ') + 'Regression    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=self.use_t)
    smry.add_table_2cols(self, gleft=diagn_left, gright=diagn_right, yname=yname, xname=xname, title='')
    etext = []
    if hasattr(self, 'cov_type'):
        etext.append(self.cov_kwds['description'])
    if (self.model.exog.shape[0] < self.model.exog.shape[1]):
        wstr = 'The    input    rank    is    higher    than    the    number    of    observations.'
        etext.append(wstr)
    if (eigvals[(-1)] < 1e-10):
        wstr = 'The    smallest    eigenvalue    is    %6.3g.    This    might    indicate    '
        wstr += 'that    there    are\n'
        wstr += 'strong    multicollinearity    problems    or    that    the    design    '
        wstr += 'matrix    is    singular.'
        wstr = (wstr % eigvals[(-1)])
        etext.append(wstr)
    elif (condno > 1000):
        wstr = 'The    condition    number    is    large,    %6.3g.    This    might    '
        wstr += 'indicate    that    there    are\n'
        wstr += 'strong    multicollinearity    or    other    numerical    '
        wstr += 'problems.'
        wstr = (wstr % condno)
        etext.append(wstr)
    if etext:
        etext = ['[{0}]    {1}'.format((i + 1), text) for (i, text) in enumerate(etext)]
        etext.insert(0, 'Warnings:')
        smry.add_extra_txt(etext)
    return smry
