绘制具有多个预测变量的Logit模型的概率曲线


12

我有以下概率函数:

Prob=11+ez

哪里

z=B0+B1X1++BnXn.

我的模特看起来像

Pr(Y=1)=11+exp([3.92+0.014×(bid)])

这通过如下所示的概率曲线可视化。

在此处输入图片说明

我正在考虑在原始回归方程式中添加几个变量。假设我在模型中添加了性别(类别:F和M)和年龄(类别:<25和> 26),最后得到:

Pr(Y=1)=11+exp([3.92+0.014×(bid)+0.25×(gender)+0.15×(age)])

在RI中可以生成类似的概率曲线,当考虑所有三个预测变量时,它将告诉我Y = 1的概率。我迷路的地方是我想找到这些变化的每种可能排列的概率。

因此,当出价= 1,性别= M,年龄> = 26时,Y = 1的概率是多少?同样,当出价= 2,性别= F,年龄> = 26时,Y = 1的概率是多少?

我想生成一个概率曲线,使我可以形象地看到它。

有人可以帮忙吗?我可能完全误解了从logit模型中可以收集到什么样的信息,但是请告诉我我是否也误解了该理论。


您是要代码在R中执行此操作,还是只是从概念上理解问题?
gung-恢复莫妮卡

如果必须选择,我会从概念上讲这个问题。我认为我可以自行弄清楚R代码。
ATMathew

2
如果您可以通过普通(最小二乘)回归解决相同的问题,那么为什么不将响应表示为对数赔率(即),并使用已知的技术?B0+B1X1++BnXn
ub

1
当然,请看一下@FrankHarrell rms软件包(可以在RMS网站上找到大量文档)。从Predict()plot.Predict()函数开始,了解可以做些什么(包括将为的函数,并将设置为默认值,或您选择的固定值)。Pr(Y=1|x2,,xp)x1x2,,xp
chl 2012年

Answers:


24

幸运的是,您只有一个连续的协变量。因此,您可以绘制四个(即2 SEX x 2 AGE)图,每个图都具有BID和之间的关系。另外,您可以在一个绘图上使用四条不同的线(可以使用不同的线型,粗细或颜色来区分它们)。您可以通过求解一系列BID值的四个组合中的每一个的回归方程来获得这些预测线。 p(Y=1)

更复杂的情况是您有多个连续的协变量。在这种情况下,通常会有一个特定的协变量在某种意义上是“主要的”。该协变量可用于X轴。然后,求解其他协变量的几个预先指定的值,通常是平均值和+/- 1SD。其他选项包括各种类型的3D图,coplot图或交互式图。

在这里,我对另一个问题的答案提供了有关用于探索2维以上数据的一系列图的信息。您的情况基本类似,只是您有兴趣展示模型的预测值,而不是原始值。

更新:

我已经在R中编写了一些简单的示例代码来绘制这些图。让我注意几件事:因为“行动”是提早发生的,所以我只对BID进行了700次(但可以随意将其扩展到2000年)。在此示例中,我使用您指定的函数,并将第一个类别(即,女性和年轻)作为参考类别(R中的默认值)。正如@whuber在他的评论中指出的,LR模型的对数赔率是线性的,因此,如果您选择OLS回归,则可以使用第一组预测值并进行绘图。logit是链接功能,它允许您将模型连接到概率。第二个块通过logit函数的反函数将对数几率转换为概率,即通过对指数求幂(变成几率),然后将几率除以1+奇数。(如果您需要更多信息,我将在这里讨论链接函数的性质和这种类型的模型。)

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")

产生以下图:
在此处输入图片说明
这些函数足够相似,以至于我最初概述的四平行图方法不是很独特。以下代码实现了我的“替代”方法:

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"))

依次产生,该图:
在此处输入图片说明

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.