You need to enable JavaScript to run this app. R中无内置分布时自定义分段函数的PMF、CDF绘制方法
优惠活动
大模型
产品
解决方案
定价
更多

R中无内置分布时自定义分段函数的PMF、CDF绘制方法

自定义离散概率分布的PMF与CDF绘制方法

给定的PMF规则:离散随机变量有效取值为 -4、-1、1、2,对应概率值为 0.1、0.2、0.6、0.1,其余任意取值的概率为0,概率总和为1,属于合法离散分布。

原函数的核心适配问题

初始编写的p函数基于标量if分支判断,存在两个无法直接绘图的缺陷:

  • 仅支持单个标量x输入,传入向量时只会判断第一个元素的条件,输出单值结果,无法适配绘图函数需要的向量输入输出逻辑
  • 没有内置对应分布的定义域与绘图规则,直接调用默认绘图会错误地把离散点连成连续线,不符合离散分布的视觉表达要求

最优实现流程

整个流程基于R base原生能力实现,无额外第三方包依赖,代码轻量化、图形完全匹配分布数学特性。

1. 向量化改造PMF函数

替换原有标量分支逻辑为向量化匹配,支持任意长度的x向量输入,输出对应长度的概率值:

pmf_custom <- function(x) {
  # 建立离散取值与对应概率的映射表
  prob_map <- c(`-4` = 0.1, `-1` = 0.2, `1` = 0.6, `2` = 0.1)
  # 匹配x对应的概率,未匹配到有效取值的位置赋值为0
  match_res <- prob_map[as.character(x)]
  match_res[is.na(match_res)] <- 0
  unname(match_res)
}

2. 绘制PMF图形

离散分布的PMF采用针状图展示,比传统柱状图更准确表达“概率仅存在于单点”的离散特性,避免区间占比的视觉误导:

# 覆盖全有效取值的绘图范围,取整数点避免无意义的连续采样
x_plot_range <- seq(from = -6, to = 4, by = 1)
pmf_values <- pmf_custom(x_plot_range)

# 绘制核心图形
plot(x_plot_range, pmf_values,
     type = "h", lwd = 3, col = "#2d3436",
     xlab = "随机变量取值x", ylab = "概率质量",
     main = "自定义离散分布的PMF",
     ylim = c(0, max(pmf_values) + 0.05))
# 在竖线端点添加实心圆点,强化单点概率的视觉标记
points(x_plot_range, pmf_values, pch = 19, col = "#d63031", cex = 1.5)

3. 向量化实现CDF函数并绘制

离散分布的CDF为阶梯跳跃形态,即x小于第一个有效取值时CDF为0,每经过一个有效取值点就跳变到当前累积概率值,直到达到1。
首先编写向量化CDF计算函数:

cdf_custom <- function(x) {
  # 预先排序有效取值,计算对应累积概率
  sorted_values <- sort(c(-4, -1, 1, 2))
  sorted_cumprob <- c(0.1, 0.3, 0.9, 1)
  # 逐元素匹配x对应的累积概率值
  sapply(x, function(each_x) {
    if(each_x < sorted_values[1]) return(0)
    idx <- findInterval(each_x, sorted_values)
    return(sorted_cumprob[idx])
  })
}

对应CDF图形绘制,采用原生的阶梯线类型,完全匹配离散CDF的数学形态:

# 取足够细的采样步长模拟连续取值范围
x_cdf_range <- seq(from = -6, to = 4, by = 0.01)
cdf_values <- cdf_custom(x_cdf_range)

plot(x_cdf_range, cdf_values,
     type = "s", lwd = 2, col = "#0984e3",
     xlab = "随机变量取值x", ylab = "累积分布概率",
     main = "自定义离散分布的CDF",
     ylim = c(0, 1.05))

方案选型依据

  • 无第三方包依赖,仅靠R base原生函数即可实现,运行环境兼容性最强
  • 图形类型严格匹配离散分布的数学特性,PMF用针状图、CDF用阶梯线,不会给读者造成连续分布的视觉误导
  • 向量化的函数改造从根源上解决了原标量函数无法适配R绘图引擎的问题,代码可复用性强

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.03 22:15:05