在R ggplot中创建和绘制控制限制

时间:2019-12-10 12:22:26

标签: r ggplot2 scatter-plot

我已经使用ML模型进行了预测,并尝试在散点图上绘制实际值与预测值。 X轴为实际值,Y轴为预测值。 下图中的红点是(实际,预测的)坐标,黑色是理想的(实际,实际)坐标。

enter image description here

我想在同一张图中绘制实际偏差为+ -20%的线。如下图所示。

enter image description here

我正在尝试以下代码:

ggplot(data=pred_data)+
  geom_point(aes(x=actual_value,y=predicted_value),color="red",size=1.5)+
  geom_point(aes(x=actual_value,y=actual_value),color="black",size=0.5)+
  geom_point(aes(x=actual_value,y=actual_value*0.8),color="black")+
  geom_point(aes(x=actual_value,y=actual_value*1.2),color="black")+
  ylab("Predicted")+
  xlab("Actual")+
  ggtitle("Actual, Random Forest Model")+
  theme(axis.title = element_text(size=18),
        plot.title = element_text(size=20),
        axis.text = element_text(size=12))

但是无法解决。这可能会为特定情况创建一些图形,但是当数据更改时,线太宽或太窄且不平行

1 个答案:

答案 0 :(得分:0)

如果要使用平行线,则应在actual_value中加上和减去,而不是相乘。

如果无论数据如何都希望有可用的东西,则可以规范化数据并始终添加/删除固定值,或者添加/删除变量标准偏差的某些变换。
例如:

ggplot(data=pred_data)+
geom_point(aes(x=actual_value,y=predicted_value),color="red",size=1.5)+
geom_point(aes(x=actual_value,y=actual_value),color="black",size=0.5)+
geom_point(aes(x=actual_value,y=actual_value+sd(actual_value)),color="black")+
geom_point(aes(x=actual_value,y=actual_value-sd(actual_value)),color="black")+
ylab("Predicted")+
xlab("Actual")+
ggtitle("Actual, Random Forest Model")+
theme(axis.title = element_text(size=18),
    plot.title = element_text(size=20),
    axis.text = element_text(size=12))

编辑:尤其是+ 20%对我来说不是很清楚。也许您可以添加/删除最大值的20%,例如:

y=actual_value + 0.2*max(actual_value)