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

如何在R中调整CCDF图的概率区间至10^(-3)到10^(-8)

在R中限制CCDF图的概率区间为10(-3)到10(-8)

要只展示CCDF的概率区间10(-3)到10(-8),核心是先筛选出对应y值范围的数据,再配合对数y轴呈现这个指数级区间,具体修改如下:

步骤说明

  • 筛选数据:从生成的ccdf数据框中,保留y值在1e-8到1e-3之间的记录,仅基于这些数据绘图
  • 对数刻度:目标区间是10的负幂次,用对数y轴(log="y")能让数据趋势更清晰
  • 同步调整辅助线:确保红色辅助线也只绘制筛选后的数据段

修改后的完整代码

# 生成数据
n01 <- rnorm(1000, mean = 27947623, sd = 575.839)
ecdf_n01 <- ecdf(n01)

# 计算CCDF并筛选目标区间数据
ccdf <- data.frame(x = sort(n01),
                   y = 1 - ecdf_n01(sort(n01)))
# 筛选y在1e-8到1e-3之间的行
ccdf_filtered <- ccdf[ccdf$y >= 1e-8 & ccdf$y <= 1e-3, ]

# 绘制筛选后的CCDF,启用对数y轴
plot(ccdf_filtered, 
     log = "y",  # 设置y轴为对数刻度
     xlab = "x值", 
     ylab = "互补累积概率 (1 - F(x))",
     main = "CCDF (概率区间:1e-8 ~ 1e-3)")

# 绘制红色辅助线,仅用筛选后的数据
x_filtered <- ccdf_filtered$x
y_filtered <- mean(n01)/x_filtered
lines(x_filtered, y_filtered, col="red")

额外说明

  • 如果数据量较小,可能1e-8对应的y值不存在(比如1000个数据的最小非零CCDF值是1/1000=1e-3),此时可根据实际数据调整下限,比如改成1e-4
  • 若需要更精细的y轴刻度,可手动设置:axis(2, at = 10^seq(-8, -3, 1), labels = 10^seq(-8, -3, 1))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 02:41:06