New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Significant digits by column and/or for R^2 #84
Comments
I solved the issue for R2 by overriding def import_stargazer_with_overrides():
"""Import Stargazer with override that allows alternate R2 stats float accuracy vs. sig_digits.
Returns
----------
Imported Stargazer class.
Notes
----------
Created Stargazer objects need attribute *sig_digits_r2* set.
Examples
----------
>>> Stargazer = import_stargazer_with_overrides()
>>> table = Stargazer([res1, res2])
>>> table.sig_digits_r2 = 2
>>> display(table)
"""
# Create a new float formatter aimed for R2 statistics
from stargazer.stargazer import Renderer
def _float_format_r2(self, value):
"""
Format value to string, using the precision set by the user.
"""
if value is None:
return ''
return '{{:.{prec}f}}'.format(prec=self.sig_digits_r2).format(value)
Renderer._float_format_r2 = _float_format_r2
# Override R2 statistics in HTMLRenderer
from stargazer.stargazer import HTMLRenderer
def generate_r2_htmlrenderer(self):
r2_text = ''
r2_text += '<tr><td style="text-align: left">R<sup>2</sup></td>'
for md in self.model_data:
r2_text += '<td>' + self._float_format_r2(md['r2']) + '</td>'
r2_text += '</tr>'
return r2_text
HTMLRenderer.generate_r2 = generate_r2_htmlrenderer
def generate_r2_adj_htmlrenderer(self):
r2_text = ''
r2_text += '<tr><td style="text-align: left">Adjusted R<sup>2</sup></td>'
for md in self.model_data:
r2_text += '<td>' + self._float_format_r2(md['r2_adj']) + '</td>'
r2_text += '</tr>'
return r2_text
HTMLRenderer.generate_r2_adj = generate_r2_adj_htmlrenderer
# Override R2 statistics in LaTeXRenderer
from stargazer.stargazer import LaTeXRenderer
def generate_r2_latexrenderer(self):
r2_text = ' $R^2$ '
for md in self.model_data:
r2_text += '& ' + self._float_format_r2(md['r2']) + ' '
r2_text += '\\\\\n'
return r2_text
LaTeXRenderer.generate_r2 = generate_r2_latexrenderer
def generate_r2_adj_latexrenderer(self):
r2_text = ' Adjusted $R^2$ '
for md in self.model_data:
r2_text += '& ' + self._float_format_r2(md['r2_adj']) + ' '
r2_text += '\\\\\n'
return r2_text
LaTeXRenderer.generate_r2_adj = generate_r2_adj_latexrenderer
from stargazer.stargazer import Stargazer
return Stargazer |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Right now, there seems to be only 1 way to set significant digits that affects the whole table, but frequently I find that I want to set different significant digits by column (depending on variable scale) and/or for R^2 (where you usually want 2 decimal places). Is there a way to add more flexibility to this?
The text was updated successfully, but these errors were encountered: