如何为R语言鞅策略模拟结果图添加置信区间?
解决方法
首先修正代码中的关键问题,再添加置信区间的绘图逻辑:
1. 修正置信区间计算与存储
原代码中Lo的计算公式有误,且未保存所有概率对应的置信区间值,需调整如下:
# 初始化向量,存储所有概率对应的均值、上下置信区间 x <- seq(.2, .6, .01) m <- c() Up <- c() Lo <- c() n <- 1000 for (i in x){ a <- replicate(n, martingala(100, 10, 500, i)) current_mean <- mean(a) current_se <- sd(a)/sqrt(n) m <- c(m, current_mean) # 修正置信区间计算逻辑 Up <- c(Up, current_mean + 1.95 * current_se) Lo <- c(Lo, current_mean - 1.95 * current_se) }
2. 添加置信区间到图表
以下提供三种常见的展示方式:
方式一:绘制上下置信区间线条
先绘制均值曲线,再用lines()添加置信区间线条:
plot(x, m, type = "l", main = "Martingala probabilidad variable", xlab = "Probabilidad", ylab = "Ganancia media", lwd = 2) # 添加上置信区间线条 lines(x, Up, col = "red", lty = 2) # 添加下置信区间线条 lines(x, Lo, col = "blue", lty = 2) # 添加图例 legend("topleft", legend = c("Ganancia media", "Intervalo de confianza superior", "Intervalo de confianza inferior"), col = c("black", "red", "blue"), lty = c(1, 2, 2), lwd = c(2,1,1))
方式二:填充置信区间区域(更直观)
用polygon()填充均值上下的置信区间区域:
plot(x, m, type = "l", main = "Martingala probabilidad variable", xlab = "Probabilidad", ylab = "Ganancia media", lwd = 2) # 填充置信区间半透明区域 polygon(c(x, rev(x)), c(Up, rev(Lo)), col = rgb(0.7, 0.7, 0.7, 0.3), border = NA) # 重新绘制均值线,确保在填充区域上方 lines(x, m, lwd = 2) # 添加图例 legend("topleft", legend = c("Ganancia media", "Intervalo de confianza 95%"), col = c("black", rgb(0.7,0.7,0.7)), lty = c(1, NA), pch = c(NA, 15), lwd = 2)
方式三:添加垂直误差棒
用segments()为每个概率值添加误差棒:
plot(x, m, main = "Martingala probabilidad variable", xlab = "Probabilidad", ylab = "Ganancia media", pch = 16) # 添加误差棒 segments(x, Lo, x, Up, col = "gray") # 重新绘制均值点,确保在误差棒上方 points(x, m, pch = 16, col = "black")
额外说明
- 1.95对应95%置信区间的临界值,与你的代码逻辑一致
- 原
martingala函数中,赢局时的betsize <- betsize可简化为不修改变量,不影响运行结果
内容的提问来源于stack exchange,提问作者BehSci
相关产品推荐
相关产品推荐

