显示更重要的系数数字
Show more significant figures of coefficients
我是 运行 一些回归,我想从表面上与 Stata 进行比较,以确保我的代码在我从 Stata 迁移到 Python 时正常工作。
即statsmodels.formula.api('x ~ y')
输出
coef std err t P>|t| [0.025 0.975]
------------------------------------------------------------------------------
Intercept 2.9420 0.287 10.265 0.000 2.380 3.504
而 Stata 提供
------------------------------------------------------------------------------
med | Coef. Std. Err. t P>|t| [95% Conf. Interval]
-------------+----------------------------------------------------------------
_cons | 2.94203 .2866093 10.26 0.000 2.380268 3.503792
我基本上希望输出完全匹配。我知道这可能可以通过保存系数在幕后完成,但一目了然要容易得多。
如果您只是想增加小数位数以便直观地比较这些值,您可以使用
pd.set_option('display.float_format', lambda x: '%.2f' % x)
将“2”替换为您要显示的小数位数。
注意:这会更改数据帧中 所有 浮点数的小数位数。
我实现此目的的(hacky)方法是编辑 statsmodels 库文件 iolib\summary.py
,并包括类似 Stata 的舍入。它并不完美,但暂时可以完成工作。
def forg(x, prec=3):
if prec == 3:
#for 3 decimals
if (abs(x) >= 1e4) or (abs(x) < 1e-4):
return '%9.3g' % x
else:
return '%9.3f' % x
elif prec == 4:
if (abs(x) >= 1e4) or (abs(x) < 1e-4):
return '%10.4g' % x
else:
return '%10.4f' % x
elif prec == 10: #stata like coefficient rounding
return round(x,2)
elif prec == 11: #stata like t-stat rounding
return round(x,7)
我遇到了类似的问题,我希望看到更多数字,尤其是标准错误。
我找到的解决方法是将所有自变量除以一个因子(例如,如果我想再看到两位数字,则为 100),然后使用该因子重新调整估计值。这种方法不涉及修改库。
下面会打印小数点后6位的参数
# Parameters with 6 significant digits
print(result.summary2().tables[1])
此处 结果 是变量,您可以在其中保存适合数据的 OLS 模型
我是 运行 一些回归,我想从表面上与 Stata 进行比较,以确保我的代码在我从 Stata 迁移到 Python 时正常工作。
即statsmodels.formula.api('x ~ y')
输出
coef std err t P>|t| [0.025 0.975]
------------------------------------------------------------------------------
Intercept 2.9420 0.287 10.265 0.000 2.380 3.504
而 Stata 提供
------------------------------------------------------------------------------
med | Coef. Std. Err. t P>|t| [95% Conf. Interval]
-------------+----------------------------------------------------------------
_cons | 2.94203 .2866093 10.26 0.000 2.380268 3.503792
我基本上希望输出完全匹配。我知道这可能可以通过保存系数在幕后完成,但一目了然要容易得多。
如果您只是想增加小数位数以便直观地比较这些值,您可以使用
pd.set_option('display.float_format', lambda x: '%.2f' % x)
将“2”替换为您要显示的小数位数。
注意:这会更改数据帧中 所有 浮点数的小数位数。
我实现此目的的(hacky)方法是编辑 statsmodels 库文件 iolib\summary.py
,并包括类似 Stata 的舍入。它并不完美,但暂时可以完成工作。
def forg(x, prec=3):
if prec == 3:
#for 3 decimals
if (abs(x) >= 1e4) or (abs(x) < 1e-4):
return '%9.3g' % x
else:
return '%9.3f' % x
elif prec == 4:
if (abs(x) >= 1e4) or (abs(x) < 1e-4):
return '%10.4g' % x
else:
return '%10.4f' % x
elif prec == 10: #stata like coefficient rounding
return round(x,2)
elif prec == 11: #stata like t-stat rounding
return round(x,7)
我遇到了类似的问题,我希望看到更多数字,尤其是标准错误。
我找到的解决方法是将所有自变量除以一个因子(例如,如果我想再看到两位数字,则为 100),然后使用该因子重新调整估计值。这种方法不涉及修改库。
下面会打印小数点后6位的参数
# Parameters with 6 significant digits
print(result.summary2().tables[1])
此处 结果 是变量,您可以在其中保存适合数据的 OLS 模型