我已经使用ML模型进行了预测,并尝试在散点图上绘制实际值与预测值。 X轴为实际值,Y轴为预测值。 下图中的红点是(实际,预测的)坐标,黑色是理想的(实际,实际)坐标。
我想在同一张图中绘制实际偏差为+ -20%的线。如下图所示。
我正在尝试以下代码:
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))
但是无法解决。这可能会为特定情况创建一些图形,但是当数据更改时,线太宽或太窄且不平行
答案 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)