0
import numpy as np
import pandas as pd
import statsmodels.api as sm
import statsmodels.graphics as smg

data = pd.DataFrame({'Y': np.random.rand(1000), 'X':np.random.rand(1000)})

これは機能します

smg.regressionplots.plot_fit(sm.OLS(data.Y.values, data.X.values).fit(), 0, y_true=None)

これはしません

smg.regressionplots.plot_fit(sm.OLS(data.Y, data.X).fit(), 0, y_true=None)
smg.regressionplots.plot_fit(sm.OLS(data['Y'], data['X']).fit(), 0, y_true=None)
4

2 に答える 2

4

私はそれを追跡しました、それは本当にplot_fitコードのバグです。安定版では、次の行があります。

prstd, iv_l, iv_u = wls_prediction_std(results)

iv_lとを返しますiv_u。おそらく、近似値の標準偏差をプロットするための上限値と下限値を pandas Series として返します。これにより、後続の呼び出しがax.fill_between失敗します。

これは、開発版https://github.com/statsmodels/statsmodels/blob/master/statsmodels/graphics/regressionplots.pyで修正されたようです。そこに別の呼び出しがあります。

prstd, iv_l, iv_u = wls_prediction_std(results._results)

iv_lそしてiv_u今やnumpy配列であり、そうしてもエラーはもうないはずです:

smg.regressionplots.plot_fit(sm.OLS(data['Y'], data['X']).fit(), 0, y_true=None)

とりあえず満足するしかない

smg.regressionplots.plot_fit(sm.OLS(data.Y.values, data.X.values).fit(), 0, y_true=None)

ただし、標準的な線形回帰の通常の呼び出しと実際には一致していません。

于 2013-03-20T22:14:32.283 に答える
3

エラーメッセージは、何が起こっているかを明らかにします。凝縮:

/usr/lib/pymodules/python2.7/matplotlib/axes.pyc in fill_between(self, x, y1, y2, where, interpolate, **kwargs)

   6542                 start = xslice[0], y2slice[0]
-> 6543                 end = xslice[-1], y2slice[-1]

[...]
/usr/local/lib/python2.7/dist-packages/pandas-0.11.0.dev_fc8de6d-py2.7-linux-i686.egg/pandas/core/index.pyc in get_value(self, series, key)

    725         try:
--> 726             return self._engine.get_value(series, key)
    727         except KeyError, e1:
    728             if len(self) > 0 and self.inferred_type == 'integer':

[...]

KeyError: -1L

data.Xdata.YSeriesオブジェクトであり、 を使用して最後の要素を取得することはできません[-1]。可能であれば、その要素の 1 つとして使用されるインデックスがあるときに問題が発生する可能性があります-1。最後の要素が必要ですか、または に関連付けられた要素が必要-1ですか?

pandasは、「あいまいさに直面した場合は、推測の誘惑を拒否する」という原則を尊重し、場所よりもラベルを優先して、これを機能させないことを選択しました。KeyErrorこれを示唆するではなくが得られますIndexError。たとえば、整数ラベルを使用した高度なインデックス作成に関するドキュメントの議論を参照してください。

于 2013-03-20T19:52:30.323 に答える