不均衡なデータのロジスティック回帰に重みを追加する


21

不均衡なデータ(9:1)でロジスティック回帰をモデル化します。glmR の関数でweightsオプションを試してみたかったのですが、それが何をするのか100%確信できません。

私の出力変数がであるとしましょうc(0,0,0,0,0,0,0,0,0,1)。今、私は「1」に10倍の重みを与えたいです。だから私は重みの引数を与えますweights=c(1,1,1,1,1,1,1,1,1,1,1,10)

私がそれをするとき、それは最尤法の計算で考慮されます。私は正しいですか?「1」の誤分類は、「0」の誤分類よりも10倍悪いだけです。

回答:


11

Ching、1と0に関してデータセットのバランスをとる必要はありません。必要なのは、最大尤度が収束するのに十分な1の数だけです。データセットの1(100,000)の分布を見ると、問題はないはずです。ここで簡単な実験を行うことができます

  1. 1の10%と0の10%をサンプリングし、両方に10の重みを使用します
  2. 1の100%と0の10%をサンプリングし、0に10の重みを使用します

どちらの場合も、同じ見積もりが得られます。繰り返しますが、重み付けの考え方はサンプリングに関連しています。データセット全体を使用している場合は、重み付けしないでください。私があなたなら、1の場合は10%、0の場合は10%を使用します。

Rでは、を使用しますglm。サンプルコードを次に示します。

glm(y ~ x1 + x2, weights = wt, data =data, family = binomial("logit"))

データセットにはwt、重みの変数が必要です。

0と1の両方の10%を使用すると、wt変数の値は10になります。

0の10%と1の100%を使用する場合:wt変数の値は、y = 0の観測では10、y = 1の観測では1になります


12

重み付けは、サンプルと母集団の違いを補正するためにデータに重み付けする手順です(King 2001)。たとえば、まれなイベント(信用リスクの詐欺、医学文献の死亡など)では、すべての1(まれなイベント)と一部の0(非イベント)をサンプリングする傾向があります。そのような場合、それに応じて観測値に重みを付ける必要があります。

例:人口50万件のトランザクションには50件の不正取引があります。この場合、あなたは

  1. 50件すべての不正取引のサンプル(不正の100%)
  2. 良好なトランザクションの10%(500,000の10%は50,000の良好なトランザクション)

この場合、不正取引には1の重みを割り当て、良好な取引には10の重みを割り当てます。これは、加重最尤法と呼ばれます。重要なポイントは、重み付けがサンプリングの割合に関連していることです

参照:レアイベントデータのロジスティック回帰(King 2001)


こんにちはスブラ!!! キングアプローチに感謝します!! 聞いたことがない!私の場合、100万件のトランザクションがあります!(900.000は「0」、100.000は「1」です)。「0」の10%をサンプリングする必要がありますか?その後、私はほぼバランスの取れたデータセットを持っています。次に、「1」の10倍の「0」に重み付けする必要がありますか?そしてMASSパッケージのR glm()の関数はまさにそれをしますか?観測値に重みを付けると、重み付き最尤法を計算しますか?ありがとうございました!本当にあなたの答えと助けに感謝
チン

私はこの問題について本当にたくさん考えています。私が言うなら:今、すべてのデータを使用してロジットモデルを構築します(9:1の不均衡データを使用)。それから、「1」を10回計量しますが、実際にはデータがなく、データの10%ではありません。それはちょうど私が持っているように振る舞うようなものです..... Rがモデルを計算するとき、私は私の「1」の10%だけを使用すると考え、尤度の計算でそれを考慮します。それは理にかなっていますか?
ching
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.