You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于R基础绘图函数实现校准图概率分布针状图?附示例代码

用R基础绘图函数实现带针状图的校准图

一、在校准线上下展示概率分布的针状图

可以用基础绘图的segments()函数绘制针状短线段,结合模拟的预测概率与校准线实现需求。示例代码如下:

# 模拟数据:100个样本的预测概率
set.seed(123)
pred_prob <- rbeta(100, shape1 = 2, shape2 = 3)
# 模拟带偏移的校准线(模拟实际校准情况,理想校准线为y=x)
calib_x <- seq(0, 1, length.out = 100)
calib_y <- calib_x + rnorm(100, mean = 0, sd = 0.05)

# 初始化绘图区域
plot(calib_x, calib_y, type = "l", lwd = 2, col = "darkblue",
     xlab = "预测概率", ylab = "实际概率", xlim = c(0,1), ylim = c(-0.1,1.1))
abline(a=0, b=1, lty=2, col="gray50") # 绘制理想校准线

# 绘制针状图:随机分配针的上下方向
direction <- sample(c(-1,1), 100, replace = TRUE)
segments(x0 = pred_prob, y0 = calib_y[match(pred_prob, calib_x)] + direction*0.02,
         x1 = pred_prob, y1 = calib_y[match(pred_prob, calib_x)],
         col = "red", lwd = 1.5)

关键说明:

  • segments()通过指定线段的起点与终点绘制针状,以校准线对应点为一端,向上下固定偏移量延伸形成针状效果。
  • 可通过调整0.02控制针的长度,direction变量控制针的上下方向。

二、按二分类结局分组展示概率分布的针状图

针对二分类结局(0/1),可将两组预测概率用不同颜色的针状图分开展示,同时叠加校准线。示例代码如下:

# 模拟二分类数据
set.seed(456)
n <- 150
pred_prob <- rbeta(n, shape1 = 3, shape2 = 2)
# 生成结局:预测概率越高,结局为1的概率越高
outcome <- rbinom(n, size = 1, prob = pred_prob + rnorm(n, 0, 0.1))

# 初始化空绘图区域
plot(pred_prob, outcome, type = "n", xlab = "预测概率", ylab = "实际结局",
     xlim = c(0,1), ylim = c(-0.2,1.2))
# 绘制理想校准线
abline(a=0, b=1, lty=2, col="gray50")
# 拟合并绘制实际校准曲线
calib_fit <- loess(outcome ~ pred_prob)
calib_x_seq <- seq(0,1,length.out=100)
calib_y_seq <- predict(calib_fit, newdata = data.frame(pred_prob = calib_x_seq))
lines(calib_x_seq, calib_y_seq, lwd=2, col="darkblue")

# 按结局分组绘制针状图
# 结局为0:针状向下延伸
segments(x0 = pred_prob[outcome==0], y0 = 0,
         x1 = pred_prob[outcome==0], y1 = -0.15,
         col = "darkgreen", lwd=1.5)
# 结局为1:针状向上延伸
segments(x0 = pred_prob[outcome==1], y0 = 1,
         x1 = pred_prob[outcome==1], y1 = 1.15,
         col = "darkred", lwd=1.5)

# 添加图例
legend("topleft", legend = c("理想校准线", "实际校准曲线", "结局=0", "结局=1"),
       col = c("gray50", "darkblue", "darkgreen", "darkred"),
       lty = c(2,1,1,1), lwd=c(1,2,1.5,1.5))

关键说明:

  • 用type="n"初始化空绘图,避免直接绘制散点干扰针状图展示。
  • 用loess()拟合实际校准曲线,模拟真实模型的校准效果。
  • 针对两组结局分别固定针状的起始端点(0和1),通过偏移量控制针的长度,实现分组展示。

内容的提问来源于stack exchange,提问作者Yellow Bridge

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 21:30:21