我试图按照指南生成:。
我的数据位于名为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函数中定义。任何人都可以解释出现了什么问题以及如何解决它?我在这里看到了许多线程,解释了如何叠加两个小提琴图,但我无法弄清楚如何制作由离散变量定义的两个小提琴数据图。如果可以的话,我会使用by()函数,但我不能使用ggplot2。
供参考,以下是我的部分数据样本:
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
由于
答案 0 :(得分:2)
没关系,我回答了自己的问题。在我的数据和我试图复制作者数据时,响应变量被视为连续的。我通过将响应变量更改为一个因子来解决问题。
SIGSW.test$SI<-as.factor(SIGSW.test$SI)
我发布了答案,而不是删除这个以防万一其他人像我一样愚蠢。