2017-07-19 9 views
1

StataからPythonに移行する際にコードが正しく機能するように、Stataと表面的に比較したいいくつかの回帰を実行しています。係数の有効数字を表示

すなわち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 

を提供に対し。これはおそらくフードの下で係数を保存することで行うことができますが、一目ではるかに簡単です。 「%:あなたはちょうどあなたが視覚的に値を比較できるように、小数点以下の桁数を増やすために探している場合は

答えて

1

私がこれを達成したのは、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) 
0

、あなたは、x

pd.set_option(「display.float_format」、ラムダを使用することができます.2f '%x)

表示する小数点以下の桁数を「2」に置き換えます。

注:これにより、のすべての浮動小数点数がデータフレーム内で小数点以下桁数に変更されます。

+0

ありがとうございますが、これはstatsmodelsの出力には表示されません。私はそれがコードベースを直接編集することになると思う。 – tom

+0

は出力テキストですか?生データをDataFrame/Seriesとして取得し、[String formatting](https://docs.python.org/3/library/string.html#format-string-syntax)を使用する方法があると思います) –

関連する問題