给定序数逻辑回归模型,您如何预测响应类别?

机器算法验证 物流 有序的logit
2022-03-22 08:37:19

我想预测一个健康问题。我有 3 个按顺序排列的结果类别:“正常”、“轻度”和“严重”。我希望通过两个预测变量来预测这一点,一个测试结果(一个连续的区间协变量)和这个问题的家族史(是或否)。在我的样本中,概率为 55%(正常)、35%(轻度)和 10%(严重)。从这个意义上说,我总是可以预测“正常”并且在 55% 的情况下是正确的,尽管这不会给我提供有关个别患者的信息。我适合以下模型:

the cut point for (y1)^=2.18the cut point for (y2)^=4.27β^test=0.60β^family history=1.05

假设没有交互,并且模型一切正常。一致性 c 为 60.5%,我认为这是模型提供的最大预测准确度。

我遇到了两个新患者,数据如下: 1. test = 3.26,family = 0;2. test = 2.85, family = 1. 我想预测他们的预后。使用公式:

exp(XβcutPoint)(1+exp(XβcutPoint))
(然后取累积概率之间的差异),我可以根据模型计算响应类别的概率分布。R 代码(注意,由于舍入问题,输出不完全匹配):

cut1 <- -2.18
cut2 <- -4.27
beta <- c(0.6, 1.05)
X    <- rbind(c(3.26, 0), c(2.85, 1))

pred_cat1      <- exp(-1*(X%*%beta)-cut1)/(1+exp(-1*(X%*%beta)-cut1))
pred_cat2.temp <- exp(-1*(X%*%beta)-cut2)/(1+exp(-1*(X%*%beta)-cut2))
pred_cat3      <- 1-pred_cat2.temp
pred_cat2      <- pred_cat2.temp-pred_cat1

predicted_distribution <- cbind(pred_cat1, pred_cat2, pred_cat3)

即:1. 0=55.1%,1=35.8%,2=9.1%;2. 0 = 35.6%,1 = 46.2%,2 = 18.2%。我的问题是,我如何从概率分布到预测的响应类别?

我已经使用样本数据尝试了几种可能性,结果是已知的。如果我只选择 max(probabilities),准确率是 57%,比 null 略有提高,但低于一致性。此外,在示例中,这种方法从不选择“严重”,这是我真正想知道的。我尝试了贝叶斯方法,将空概率和模型概率转换为赔率,然后选择最大值(赔率比)。这确实偶尔会选择“严重”,但会产生更差的准确度 49.5%。我还尝试了按概率和舍入加权的类别总和。同样,这从不选择“严重”,并且准确率低 51.5%。

采用上述信息并产生最佳准确度(60.5%)的方程式是什么?

2个回答

您正在实现一个飞跃,您需要对预测值进行分类。您的方法从不选择“严重”类别的事实是问题的离散性质的结果,并且“严重”并不常见。使用序数响应模型,您可以单独使用超出概率(对于除一个类别之外的所有类别)或仅引用单个概率。如果Y大致按区间缩放,您也可以使用预测平均值。这些都在 Rrmslrm和相关函数中可用predict.lrm许多人认为分类是目标,而实际上风险预测是​​潜在目标。

一致性是通过检查平均分来定义的,而不是最高分。

因此,对于您的示例,1 的平均分数是 0*55.1% + 1*35.8% + 2*9.1% = 0.54,而 2 是(通过类似计算)0.826。

您应该比较此值以获取一致性或任何其他关联统计信息。

参考 - http://support.sas.com/documentation/cdl/en/statug/63347/HTML/default/viewer.htm#statug_logistic_sect042.htm