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
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
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
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