複数の予測子を持つロジットモデルの確率曲線のグラフ化


12

次の確率関数があります。

プロブ=11+ez

どこ

z=B0+B1バツ1++Bnバツn

私のモデルは次のように見えます

PrY=1=11+exp[3.92+0.014×入札]

これは、以下のような確率曲線を介して視覚化されます。

ここに画像の説明を入力してください

元の回帰式にいくつかの変数を追加することを検討しています。性別(カテゴリ:FおよびM)および年齢(カテゴリ:<25および> 26)をモデルに追加すると、次のようになります。

PrY=1=11+exp[3.92+0.014×入札+0.25×性別+0.15×年齢]

RIでは、3つすべての予測変数を説明するときにY = 1の確率を示す同様の確率曲線を生成できます。私が迷っているのは、これらのバリエーションのあらゆる可能な順列の確率を見つけたいです。

入札単価= 1、性別= M、年齢が26以上の場合、Y = 1になる確率はどのくらいですか?同様に、入札単価= 2、性別= F、年齢が26以上の場合、Y = 1になる確率はどのくらいですか?

これを視覚化できる確率曲線を生成したいと思います。

誰でも助けることができますか?ロジットモデルからどのような情報を収集できるかを完全に誤解しているかもしれませんが、理論を誤解している場合は教えてください。


コードでRでこれを実行するか、問題を概念的に理解するだけですか?
GUNG -復活モニカ

私が選択しなければならなかった場合、私は問題を概念的に言うでしょう。Rコードは、自分で解決するために管理できると思います。
ATMathew

2
通常の(最小二乗)回帰で同じ問題を解くのが楽なら、なぜ応答を対数オッズ(ちょうど)として表現し、知っているテクニックを使用しませんか?B0+B1バツ1++Bnバツn
whuber

1
確かに、@ FrankHarrell rmsパッケージをご覧ください(詳細なドキュメントはRMS Webサイトにあります)。スタートとPredict()してplot.Predict()機能し、これはプロット含み(何ができるかの感触を得るためにの関数としてと、デフォルト値に設定され、または選択した固定値)。PrY=1|バツ2バツpバツ1バツ2バツp
-chl

回答:


24

幸いなことに、連続共変量は1つしかありません。したがって、それぞれ4つの(つまり、2 SEX x 2 AGE)プロットを作成でき、それぞれがBIDとの関係を持ちます。または、4つの異なる線で1つのプロットを作成できます(異なる線のスタイル、太さ、または色を使用してそれらを区別できます)。これらの予測された線は、BID値の範囲の4つの組み合わせのそれぞれで回帰方程式を解くことで取得できます。 pY=1

より複雑な状況は、複数の連続共変量がある場合です。このような場合、ある意味で「プライマリ」である特定の共変量がしばしばあります。その共変量はX軸に使用できます。次に、他の共変量の事前に指定されたいくつかの値、通常は平均および+/- 1SDについて解きます。他のオプションには、さまざまなタイプの3Dプロット、コプロット、またはインタラクティブプロットが含まれます。

ここでの別の質問に対する私の答えには、2次元以上のデータを探索するためのさまざまなプロットに関する情報が含まれています。あなたのケースは基本的に類似していますが、生の値ではなくモデルの予測値を表示することに関心がある点が異なります。

更新:

これらのプロットを作成するために、Rで簡単なコード例をいくつか作成しました。いくつかの点に注意してください。「アクション」は早期に行われるため、BIDは700までしか実行しませんでした(ただし、2000に拡張することもできます)。この例では、指定した関数を使用し、最初のカテゴリ(女性と若い)を参照カテゴリ(Rのデフォルト)として使用しています。@whuberがコメントで述べているように、LRモデルは対数オッズで線形であるため、選択した場合、OLS回帰の場合と同様に、予測値の最初のブロックを使用してプロットできます。ロジットはリンク関数であり、モデルを確率に接続できます。2番目のブロックは、対数オッズをロジット関数の逆関数を介して確率に変換します。つまり、オッズを指数化(オッズに変換)してから1 + oddsで除算します。(私は、リンク機能の性質とこのタイプのモデルを議論ここにあなたがより多くの情報が必要な場合は、。)

BID = seq(from=0, to=700, by=10)

logOdds.F.young = -3.92 + .014*BID
logOdds.M.young = -3.92 + .014*BID + .25*1
logOdds.F.old   = -3.92 + .014*BID         + .15*1
logOdds.M.old   = -3.92 + .014*BID + .25*1 + .15*1

pY.F.young = exp(logOdds.F.young)/(1+ exp(logOdds.F.young))
pY.M.young = exp(logOdds.M.young)/(1+ exp(logOdds.M.young))
pY.F.old   = exp(logOdds.F.old)  /(1+ exp(logOdds.F.old))
pY.M.old   = exp(logOdds.M.old)  /(1+ exp(logOdds.M.old))

windows()
  par(mfrow=c(2,2))
  plot(x=BID, y=pY.F.young, type="l", col="blue", lwd=2, 
       ylab="Pr(Y=1)", main="predicted probabilities for young women")
  plot(x=BID, y=pY.M.young, type="l", col="blue", lwd=2, 
       ylab="Pr(Y=1)", main="predicted probabilities for young men")
  plot(x=BID, y=pY.F.old, type="l", col="blue", lwd=2, 
       ylab="Pr(Y=1)", main="predicted probabilities for old women")
  plot(x=BID, y=pY.M.old, type="l", col="blue", lwd=2, 
       ylab="Pr(Y=1)", main="predicted probabilities for old men")

これにより、次のプロットが生成されます。
ここに画像の説明を入力してください
これらの関数は十分に類似しているため、最初に説明した4並列プロットアプローチはあまり特徴的ではありません。次のコードは、私の「代替」アプローチを実装しています。

windows()
  plot(x=BID, y=pY.F.young, type="l", col="red", lwd=1, 
       ylab="Pr(Y=1)", main="predicted probabilities")
  lines(x=BID, y=pY.M.young, col="blue", lwd=1)
  lines(x=BID, y=pY.F.old,   col="red",  lwd=2, lty="dotted")
  lines(x=BID, y=pY.M.old,   col="blue", lwd=2, lty="dotted")
  legend("bottomright", legend=c("young women", "young men", 
         "old women", "old men"), lty=c("solid", "solid", "dotted",
         "dotted"), lwd=c(1,1,2,2), col=c("red", "blue", "red", "blue"))

次に、このプロットを作成します。
ここに画像の説明を入力してください

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.