1

我试图遵循指南并生成:这种情节.

我的数据在一个名为 SIGSW.test 的数据框中,我的响应变量 (SI) 是二进制的。我有一个 glm 用于生成在数据框中保存为 pr.bms 的预测。我想以图形方式表示各种阈值的真/假阳性/阴性。pr.bms.type 代表 TF、TN、FP 或 FN。

但是,当我尝试以下代码时:

ggplot(data=SIGSW.test, aes(x=SI, y=pr.bms)) + 
   geom_violin(fill=rgb(1,1,1,alpha=0.6), color=NA) + 
   geom_jitter(aes(color=SIGSW.test$pr.bms.type), size=5, alpha=0.6) +
   geom_hline(yintercept=threshold, color="red", alpha=0.6) +
   scale_color_discrete(name = "type") +
   labs(title=sprintf("Threshold at %.2f", threshold))

R 生成这个图片.

它给了我两列数据点,表示 X 轴上的观察结果和 Y 轴上的预测概率(我想要的),但似乎这两个小提琴图合并为一个。由于我无法用他自己的代码和数据复制作者的情节,我怀疑代码中存在缺陷。我对ggplot不是很好,所以我无法弄清楚到底出了什么问题-在我看来,它应该创建两个小提琴图,每个结果一个,因为小提琴层应该使用美学属性在 ggplot 函数中定义。谁能解释出了什么问题以及如何解决?我在这里看到了许多线程解释如何叠加两个小提琴图,但我不知道如何制作由离散变量定义的两个小提琴图。我'

作为参考,这是我的一些数据的示例:

      SI      pr.bms      pr.aic      pr.bic pr.bms.type
19869  0 0.029985210 0.009071122 0.014855376          TN
36670  0 0.013641325 0.018143617 0.019764735          TN
9586   0 0.004428973 0.004363135 0.004356827          TN
41570  1 0.709464654 0.693148738 0.742891240          TP
32356  0 0.347295868 0.274694216 0.284724446          TN
14922  0 0.019798409 0.014157925 0.011422388          TN
52048  0 0.317284825 0.363881394 0.305525690          TN
43269  0 0.972736555 0.985057882 0.909592318          FP
45043  0 0.962467774 0.932087650 0.928091617          FP
4608   0 0.006653427 0.013383884 0.014138802          TN

谢谢

4

1 回答 1

2

没关系,我回答了我自己的问题。在我的数据和我试图复制作者的数据时,响应变量都被视为连续变量。我通过将响应变量更改为一个因子来解决问题。

SIGSW.test$SI<-as.factor(SIGSW.test$SI)

我发布答案而不是删除它,以防其他人像我一样愚蠢。

于 2015-11-10T23:16:08.357 回答