R:找到连续变量的截止点,将观察值分配给两组

R:找到连续变量的截止点,将观察值分配给两组,r,threshold,mass-package,R,Threshold,Mass Package,我有以下数据 Species <- c(rep('A', 47), rep('B', 23)) Value<- c(3.8711, 3.6961, 3.9984, 3.8641, 4.0863, 4.0531, 3.9164, 3.8420, 3.7023, 3.9764, 4.0504, 4.2305, 4.1365, 4.1230, 3.9840, 3.9297, 3.9945, 4.0057, 4.2313, 3.7135, 4.3070, 3.6123,

我有以下数据

Species <- c(rep('A', 47), rep('B', 23))
Value<- c(3.8711, 3.6961, 3.9984, 3.8641, 4.0863, 4.0531, 3.9164, 3.8420, 3.7023, 3.9764, 4.0504, 4.2305,
          4.1365, 4.1230, 3.9840, 3.9297, 3.9945, 4.0057, 4.2313, 3.7135, 4.3070, 3.6123, 4.0383, 3.9151,
          4.0561, 4.0430, 3.9178, 4.0980, 3.8557, 4.0766, 4.3301, 3.9102, 4.2516, 4.3453, 4.3008, 4.0020,
          3.9336, 3.5693, 4.0475, 3.8697, 4.1418, 4.0914, 4.2086, 4.1344, 4.2734, 3.6387, 2.4088, 3.8016,
          3.7439, 3.8328, 4.0293, 3.9398, 3.9104, 3.9008, 3.7805, 3.8668, 3.9254, 3.7980, 3.7766, 3.7275,
          3.8680, 3.6597, 3.7348, 3.7357, 3.9617, 3.8238, 3.8211, 3.4176, 3.7910, 4.0617)
D<-data.frame(Species,Value)
给我3.633957作为阈值:

             Dose        SE
p = 0.5: 3.633957 0.1755291
这将导致45个正确的作业。然而,如果我看一下数据,很明显这不是最好的价值。通过反复试验,我发现3.8给了我50个正确的作业,这显然更好

为什么该函数适用于其他值,但不适用于此值?我错过了一个明显的错误吗?或者是否有其他/更好的方法来解决我的问题?我有几个值需要这样做,所以我真的不想只是随机测试值,直到我找到最好的一个


非常感谢您的帮助。

我通常会使用接收器工作特性曲线(ROC)进行此类分析。这允许在调整阈值时对截止点的敏感性和特异性如何变化进行视觉和数值评估。这允许您根据总体精度最佳的时间选择最佳阈值。例如,使用
pROC

库(pROC)
曲线下物种面积:0.778
地块(物种)

我们可以找到这样的最佳截止阈值:

coords(species_roc, x = "best")
#>   threshold specificity sensitivity
#> 1   3.96905   0.6170213   0.9130435
我们发现该阈值正确识别了50种情况:

table(Actual = D$Species, Predicted = c("A", "B")[1 + (D$Value < 3.96905)])
#>       Predicted
#> Actual  A  B
#>      A 29 18
#>      B  2 21
表(实际=D$物种,预测=c(“A”,“B”)[1+(D$值<3.96905)])
#>预测
#>实际A B
#>A 29 18
#>B 2 21
table(Actual = D$Species, Predicted = c("A", "B")[1 + (D$Value < 3.96905)])
#>       Predicted
#> Actual  A  B
#>      A 29 18
#>      B  2 21