5

Python とパンダの初心者です。統計モデルを使用してロジスティック回帰を当てはめ、有権者が投票する確率を計算しようとしています。私は地区レベルで働いています。そのため、関数が収束しない場合があり、次のエラーが表示されます: 警告: 最大反復回数を超えました。

私はすでに反復の最大数を 1000 に増やしました。次に、その「警告」を例外に変えようとしました。警告をインポートし、 warnings.simplefilter('error', Warning) を含めてキャプチャしようとしましたが、真の Python 警告ではないようです。むしろ、反復の最大数に達したときに statsmodels が出力するものです。

だから今、私は言う方法があるかどうか疑問に思っています:

if sm.Logit(y, covs).fit(maxiter=1000) doesn't converge:
    do something else
4

1 に答える 1

5

編集:返された結果クラスで収束フラグを確認し、モデルが収束しなかった場合にこの例外を自分で発生させることもできます。例えば、

dta = sm.datasets.spector.load_pandas()

y = dta.endog
X = dta.exog
X['const'] = 1

mod = sm.Logit(y, X).fit()

if not mod.mle_retvals['converged']:
    do something else

実際、これらの警告は出力されます。それは悪いフォームです。問題を提出しました。PRはこれを歓迎します。

https://github.com/statsmodels/statsmodels/issues/1281

または、method キーワードを介して別のソルバーを使用してみてください。途中で適切な警告または例外が発生することを願っています。

その問題でこれにつながるデータを共有できれば、それは役に立ちます。何か他のことが起こっているかもしれません。

于 2013-12-30T19:07:09.590 に答える