CDF 和逻辑回归

机器算法验证 r 物流 累积分布函数
2022-03-30 04:49:34

由逻辑回归模型(经过 logit 转换的模型)计算的概率是否符合原始数据成功的累积分布函数(按 X 变量排序)?

编辑:换句话说 - 如何绘制拟合逻辑回归模型时获得的原始数据的概率分布?

这个问题的动机是 Jeff Leak 关于 Raven 在一场比赛中的得分以及他们是否获胜的回归示例(来自 Coursera 的数据分析课程)。诚然,这个问题是人为的(见下面@FrankHarrell 的评论)。这是他的数据以及他和我的代码的混合:

download.file("http://dl.dropbox.com/u/7710864/data/ravensData.rda", 
              destfile="ravensData.rda", method="internal")
load("ravensData.rda")

plot(ravenWinNum~ravenScore, data=ravensData)

在此处输入图像描述

它似乎不是逻辑回归的好材料,但我们还是试试吧:

logRegRavens <- glm(ravenWinNum ~ ravenScore, data=ravensData, family=binomial)
summary(logRegRavens)
# the beta is not significant

# sort table by ravenScore (X)
rav2 = ravensData[order(ravensData$ravenScore), ]

# plot CDF
plot(sort(ravensData$ravenScore), cumsum(rav2$ravenWinNum)/sum(rav2$ravenWinNum), 
     pch=19, col="blue", xlab="Score", ylab="Prob Ravens Win", ylim=c(0,1), 
     xlim=c(-10,50))
# overplot fitted values (Jeff's)
points(ravensData$ravenScore, logRegRavens$fitted, pch=19, col="red")
# overplot regression curve
curve(1/(1+exp(-(logRegRavens$coef[1]+logRegRavens$coef[2]*x))), -10, 50, add=T)

如果我正确理解逻辑回归,那么在这种情况下,R 在找到正确系数方面做得非常糟糕。

在此处输入图像描述

  • 蓝色 = 要拟合的原始数据,我相信 (CDF)
  • 红色 = 模型预测(拟合数据 = 将原始数据投影到回归曲线上)

已解决 - lowess
似乎是原始数据的一个很好的非参数估计量 = 正在拟合的内容(感谢@gung)。看到它可以让我们选择正确的模型,在这种情况下,它会在之前的模型中添加平方项(@gung)
——当然,这个问题是非常人为的,建模它通常毫无意义(@FrankHarrell)
——通常逻辑回归它不是 CDF,而是点概率 - @FrankHarrell 首先指出;我也很尴尬地无法计算@gung 指出的 CDF。

3个回答

这里有几个问题。最大的问题是第二个图中生成蓝点的代码背后的思想很混乱。我无法理解逻辑应该是什么。x值与您的数据相同,但y值是在该点之前的获胜次数x轴除以总获胜次数。这真的没有意义。您甚至没有除以游戏总数,这意味着您当时没有累积概率(尽管这仍然没有意义)。这也让你想知道为什么最后一个蓝点不在1.0. 实际上是,但最后一点是x=55,您的论点排除了它xlim=c(-10,50)

无论如何,如果您想获得底层函数可能是什么的非参数估计,您可以绘制一条最低线:

plot(ravenWinNum~ravenScore, data=ravensData)
lines(with(ravensData, lowess(ravenWinNum~ravenScore)))

在此处输入图像描述

从这个图中可以清楚地看出,分数和获胜概率之间存在曲线关系(至少在这些数据中,我们可以争论这是否具有任何理论意义)。如果你仔细想想,从原始数据图中可以清楚地看出,在低端和高端的获胜次数都在增加x; 损失在中心。拟合曲线关系的一个非常简单的方法是添加一个平方项:

lr.Ravens2 <- glm(ravenWinNum~ravenScore+I(ravenScore^2), data=ravensData, 
                  family=binomial)

我们可以通过评估它们对零偏差的偏差并将结果与​​卡方分布与消耗的自由度数进行比较来测试这些模型作为一个整体。我们这样做是因为我们想将线性项和平方项一起视为一个单位。这种从整体上测试模型的方法类似于全局F- 带有多元回归模型的测试。

# here is the test of the model with the squared term as a whole
1-pchisq(24.435-16.875, df=2)
[1] 0.02282269
# here is the test of your model
1-pchisq(24.435-20.895, df=1)
[1] 0.05990546
# this is the test of the improvement due to adding the squared term
1-pchisq(20.895-16.875, df=1)
[1] 0.04496371

我不会过分强调任意的重要性阈值.05,但我们看到初始模型按照传统标准并不显着,或者至少不那么显着。(鉴于您的数据如此之少,我认为更高α很好。)包含平方项的模型更重要,即使它占用了您宝贵的几个自由度中的另一个。AIC 也较低:第一个模型具有AIC=24.895,而第二个模型有AIC=22.875. 列出的最后一个测试表明,平方项的添加会显着提高拟合度。

之间存在曲线关系这一事实的含义xy是映射条件概率的函数yi=1给定xi不能等同于累积概率分布x作为它的分位数。

为了完整起见,这里是与模型的预测概率重叠的相同图:

在此处输入图像描述

我们看到预测的概率很好地反映了最低线。当然,它们并不完全匹配,但没有理由相信最低线是完全正确的;它只是提供了任何底层函数的非参数近似。


在解决了您问题中的具体示例之后,值得更广泛地解决问题背后的假设。 逻辑回归和累积分布函数 (CDF) 之间有什么关系?

二项式回归和 CDF 之间可能存在联系。例如,当使用 probit 链接时,'success' 的条件概率 (πi(Yi=1|X=xi)) 通过正常 CDF 的逆转换。(有关此的更多信息,请在此处阅读我的答案:logit 和 probit 模型之间的区别。)但是这里有几点需要说明。首先,正如@FrankHarrell 和@Glen_b 所指出的,二项式(例如,逻辑)回归是关于对每个点的条件概率进行建模。

其次,尽管当条件恰到好处时,拟合函数看起来有点像 CDF,但它实际上永远不会是您的 CDF 的函数(缩放、移位等)X数据。您自己的数据作为函数的示例,甚至看起来不像 CDF,因为您具有多项式关系。但即使函数看起来确实像 CDF,也是如此。理解这一点的最简单方法是您的最后一个(最高x值)点将始终是您数据的 100%,但拟合函数永远不会达到p^i=1.0,它只能接近那个值X(变量,而不是您的数据)接近无穷大。因此,你不应该想到你的 CDF 的函数x数据作为逻辑回归应该近似的值。

研究逻辑回归的标准文本会很好。除其他外,您混淆了完全调节(Pr[Y=1|X=x]作为逻辑模型估计)与部分条件(Pr[Y=1|Xx])。但更重要的是,您所拟合的模型是非随机的,即从两个分数中确定获胜者。

该模型给出的是对时间条件(总体)比例的估计Y=1在每一个x.

如果您根据拟合的数据绘制实际拟合模型:

plot(ravenWinNum~ravenScore, data=ravensData)
points(logRegRavens$fitted~ravenScore,ravensData,col=4,pch=16,cex=.8)

在此处输入图像描述

......它看起来一点也不适合。

您似乎要比较的两件事似乎没有可比性,但也许您可以更清楚地解释为什么它们应该具有可比性。