Example #1
0
    def summary(self):
        """:obj:`statsmodels.iolib.summary.Summary` : Summary table of model estimation results

        Supports export to csv, html and latex  using the methods ``summary.as_csv()``,
        ``summary.as_html()`` and ``summary.as_latex()``.
        """
        stubs_lookup = {
            'rsquared': 'R-squared',
            'partial.rsquared': 'Partial R-squared',
            'shea.rsquared': 'Shea\'s R-squared',
            'f.stat': 'Partial F-statistic',
            'f.pval': 'P-value (Partial F-stat)',
            'f.dist': 'Partial F-stat Distn'
        }
        smry = Summary()
        diagnostics = self.diagnostics
        vals = []
        for c in diagnostics:
            if c != 'f.dist':
                vals.append([_str(v) for v in diagnostics[c]])
            else:
                vals.append([v for v in diagnostics[c]])
        stubs = [stubs_lookup[s] for s in list(diagnostics.columns)]
        header = list(diagnostics.index)

        params = []
        for var in header:
            res = self.individual[var]
            v = c_[res.params.values, res.tstats.values]
            params.append(v.ravel())
        params = array(params)
        params_fmt = [[_str(val) for val in row] for row in params.T]
        for i in range(1, len(params_fmt), 2):
            for j in range(len(params_fmt[i])):
                params_fmt[i][j] = '({0})'.format(params_fmt[i][j])

        params_stub = []
        for var in res.params.index:
            params_stub.extend([var, ''])

        title = 'First Stage Estimation Results'

        vals = table_concat((vals, params_fmt))
        stubs = stub_concat((stubs, params_stub))

        txt_fmt = default_txt_fmt.copy()
        txt_fmt['data_aligns'] = 'r'
        txt_fmt['header_align'] = 'r'
        table = SimpleTable(vals,
                            headers=header,
                            title=title,
                            stubs=stubs,
                            txt_fmt=txt_fmt)
        smry.tables.append(table)
        extra_txt = [
            'T-stats reported in parentheses',
            'T-stats use same covariance type as original model'
        ]
        smry.add_extra_txt(extra_txt)
        return smry
Example #2
0
    def summary(self):
        """Summary table of first-stage estimation results"""
        stubs_lookup = {
            'rsquared': 'R-squared',
            'partial.rsquared': 'Partial R-squared',
            'shea.rsquared': 'Shea\'s R-squared',
            'f.stat': 'F-statistic',
            'f.pval': 'P-value (F-stat)'
        }
        smry = Summary()
        diagnostics = self.diagnostics
        vals = [[_str(v) for v in diagnostics[c]] for c in diagnostics]
        stubs = [stubs_lookup[s] for s in list(diagnostics.columns)]
        header = list(diagnostics.index)

        params = []
        for var in header:
            res = self.individual[var]
            v = c_[res.params.values, res.tstats.values]
            params.append(v.ravel())
        params = array(params)
        if params.ndim == 1:
            params = params[:, None]
        params_fmt = [[_str(val) for val in row] for row in params.T]
        for i in range(1, len(params_fmt), 2):
            for j in range(len(params_fmt[i])):
                params_fmt[i][j] = '({0})'.format(params_fmt[i][j])

        params_stub = []
        for var in res.params.index:
            params_stub.extend([var, ''])

        title = 'First Stage Estimation Results'

        vals = table_concat((vals, params_fmt))
        stubs = stub_concat((stubs, params_stub))

        txt_fmt = default_txt_fmt.copy()
        txt_fmt['data_aligns'] = 'r'
        txt_fmt['header_align'] = 'r'
        table = SimpleTable(vals,
                            headers=header,
                            title=title,
                            stubs=stubs,
                            txt_fmt=txt_fmt)
        smry.tables.append(table)
        extra_txt = [
            'T-stats reported in parentheses',
            'T-stats use same covariance type as original model'
        ]
        smry.add_extra_txt(extra_txt)
        return smry
Example #3
0
    def summary(self):
        """Summary table of model comparison"""
        smry = Summary()
        models = list(self._results.keys())
        title = 'Model Comparison'
        stubs = [
            'Dep. Variable', 'Estimator', 'No. Observations', 'Cov. Est.',
            'R-squared', 'Adj. R-squared', 'F-statistic', 'P-value (F-stat)'
        ]
        dep_name = {}
        for key in self._results:
            dep_name[key] = self._results[key].model.dependent.cols[0]
        dep_name = Series(dep_name)

        vals = concat([
            dep_name, self.estimator_method, self.nobs, self.cov_estimator,
            self.rsquared, self.rsquared_adj, self.f_statistic
        ], 1)
        vals = [[i for i in v] for v in vals.T.values]
        vals[2] = [str(v) for v in vals[2]]
        for i in range(4, len(vals)):
            vals[i] = [_str(v) for v in vals[i]]

        params = self.params
        tstats = self.tstats
        params_fmt = []
        params_stub = []
        for i in range(len(params)):
            params_fmt.append([_str(v) for v in params.values[i]])
            tstats_fmt = []
            for v in tstats.values[i]:
                v_str = _str(v)
                v_str = '({0})'.format(v_str) if v_str.strip() else v_str
                tstats_fmt.append(v_str)
            params_fmt.append(tstats_fmt)
            params_stub.append(params.index[i])
            params_stub.append(' ')

        vals = table_concat((vals, params_fmt))
        stubs = stub_concat((stubs, params_stub))

        all_instr = []
        for key in self._results:
            res = self._results[key]
            all_instr.append(res.model.instruments.cols)
        ninstr = max(map(lambda l: len(l), all_instr))
        instruments = []
        instrument_stub = ['Instruments']
        for i in range(ninstr):
            if i > 0:
                instrument_stub.append('')
            row = []
            for j in range(len(self._results)):
                instr = all_instr[j]
                if len(instr) > i:
                    row.append(instr[i])
                else:
                    row.append('')
            instruments.append(row)
        if instruments:
            vals = table_concat((vals, instruments))
            stubs = stub_concat((stubs, instrument_stub))

        txt_fmt = default_txt_fmt.copy()
        txt_fmt['data_aligns'] = 'r'
        txt_fmt['header_align'] = 'r'
        table = SimpleTable(vals,
                            headers=models,
                            title=title,
                            stubs=stubs,
                            txt_fmt=txt_fmt)
        smry.tables.append(table)
        smry.add_extra_txt(['T-stats reported in parentheses'])
        return smry
Example #4
0
    def summary(self):
        """:obj:`statsmodels.iolib.summary.Summary` : Summary table of model estimation results

        Supports export to csv, html and latex  using the methods ``summary.as_csv()``,
        ``summary.as_html()`` and ``summary.as_latex()``.
        """
        smry = Summary()
        models = list(self._results.keys())
        title = 'Model Comparison'
        stubs = ['Dep. Variable', 'Estimator', 'No. Observations', 'Cov. Est.', 'R-squared',
                 'Adj. R-squared', 'F-statistic', 'P-value (F-stat)']
        dep_name = OrderedDict()
        for key in self._results:
            dep_name[key] = self._results[key].model.dependent.cols[0]
        dep_name = Series(dep_name)

        vals = concat([dep_name, self.estimator_method, self.nobs, self.cov_estimator,
                       self.rsquared, self.rsquared_adj, self.f_statistic], 1)
        vals = [[i for i in v] for v in vals.T.values]
        vals[2] = [str(v) for v in vals[2]]
        for i in range(4, len(vals)):
            vals[i] = [_str(v) for v in vals[i]]

        params = self.params
        precision = getattr(self, self._precision)
        params_fmt = []
        params_stub = []
        for i in range(len(params)):
            params_fmt.append([_str(v) for v in params.values[i]])
            precision_fmt = []
            for v in precision.values[i]:
                v_str = _str(v)
                v_str = '({0})'.format(v_str) if v_str.strip() else v_str
                precision_fmt.append(v_str)
            params_fmt.append(precision_fmt)
            params_stub.append(params.index[i])
            params_stub.append(' ')

        vals = table_concat((vals, params_fmt))
        stubs = stub_concat((stubs, params_stub))

        all_instr = []
        for key in self._results:
            res = self._results[key]
            all_instr.append(res.model.instruments.cols)
        ninstr = max(map(len, all_instr))
        instruments = []
        instrument_stub = ['Instruments']
        for i in range(ninstr):
            if i > 0:
                instrument_stub.append('')
            row = []
            for j in range(len(self._results)):
                instr = all_instr[j]
                if len(instr) > i:
                    row.append(instr[i])
                else:
                    row.append('')
            instruments.append(row)
        if instruments:
            vals = table_concat((vals, instruments))
            stubs = stub_concat((stubs, instrument_stub))

        txt_fmt = default_txt_fmt.copy()
        txt_fmt['data_aligns'] = 'r'
        txt_fmt['header_align'] = 'r'
        table = SimpleTable(vals, headers=models, title=title, stubs=stubs, txt_fmt=txt_fmt)
        smry.tables.append(table)
        prec_type = self._PRECISION_TYPES[self._precision]
        smry.add_extra_txt(['{0} reported in parentheses'.format(prec_type)])
        return smry