python sm.ols更改摘要格式以避免科学记数法

时间:2017-04-18 15:51:30

标签: python format regression statsmodels

我正在运行一个ols模型,我需要知道所有系数,所以我可以在我的分析中使用它们。如何以与科学记数法不同的格式显示/保存系数?

model = sm.ols(formula="sales ~ product_category + quantity_bought + quantity_ordered + quantity_returned + season", data=final_email).fit()
print model.summary()

OLS Regression Results                            
==============================================================================
Dep. Variable:                sales   R-squared:                       0.974
Model:                            OLS   Adj. R-squared:                  0.938
Method:                 Least Squares   F-statistic:                     27.26
Date:                Tue, 18 Apr 2017   Prob (F-statistic):           5.39e-13
Time:                        11:43:36   Log-Likelihood:                -806.04
No. Observations:                  60   AIC:                             1682.
Df Residuals:                      25   BIC:                             1755.
Df Model:                          34                                         
Covariance Type:            nonrobust                                         
======================================================================================
                         coef    std err          t      P>|t|      [95.0% Conf. Int.]
--------------------------------------------------------------------------------------
Intercept            -2.79e+05   2.883e+05     -0.987      0.333     -8.92e+05  3.14e+05
Product_category[A]   4.343e+04   2.456e+05      0.186      0.854     -4.95e+05  5.93e+05
Product_category[B]   2.784e+05    1.23e+05      1.128      0.270     -1.68e+05  5.75e+05
quantity_bought       -74678      1.754e+05     -0.048      0.962      -3.4e+05  3.24e+05
quantity_ordered      3.543e+05   1.363e+05      1.827      0.080     -4.21e+04  7.05e+05
quantity_returned     1.285e+05   2.154e+05      0.512      0.613     -4.61e+05  7.66e+05
season               -1.983e+04   1.76e+05     -0.133      0.895     -2.69e+05  

Warnings:
[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.
[2] The smallest eigenvalue is 1.19e-29. This might indicate that there are
strong multicollinearity problems or that the design matrix is singular.

这没有帮助:

pd.set_option('display.float_format', lambda x: '%3.f' % x)

3 个答案:

答案 0 :(得分:5)

所以这是硬编码到statsmodels源代码的东西。但是,获得系数的最佳方法是使用model.params。查看RegressionResults的来源,特别是所有属性,它们将向您展示如何访问模型拟合的所有相关信息。

答案 1 :(得分:3)

现在使用statsmodels version 0.8.0无法实现,因为RegressionResultsWrapper.summary()方法没有得到对此功能的良好支持。只有xname, yname, alpha, title可用。

所以,有一个名为RegressionResultsWrapper.summary()的实验函数,它有一个参数float_format,可以让你意识到你需要做什么。

但是因为这是一个实验功能。使用它时可能会出现错误。指定float_format时,某些结果的行为可能与预期不符。

我查看了源代码,发现某些格式的结果是hard-coded。因此,如果float_format不起作用。编辑源文件可能是您的最后一个选项。别担心,你可能并不困难。随意问更多。

答案 2 :(得分:2)

从版本0.10.2开始,存在一个实验函数summary2(),该函数采用float_format

这是source code中该函数的文档字符串:

    def summary2(self, yname=None, xname=None, title=None, alpha=.05,
                 float_format="%.4f"):
        """
        Experimental summary function to summarize the regression results.
        Parameters
        ----------
        yname : str
            The name of the dependent variable (optional).
        xname : list[str], optional
            Names for the exogenous variables. Default is `var_##` for ## in
            the number of regressors. Must match the number of parameters
            in the model.
        title : str, optional
            Title for the top table. If not None, then this replaces the
            default title.
        alpha : float
            The significance level for the confidence intervals.
        float_format : str
            The format for floats in parameters summary.
        Returns
        -------
        Summary
            Instance holding the summary tables and text, which can be printed
            or converted to various output formats.