为何直方图无条形显示?R语言rbinom模拟直方图问题求助
问题原因与修复方案
原代码的核心问题
- 仅生成一组随机变量
v,循环中反复计算同一个均值,导致所有结果完全相同,直方图自然只有一个条形 - 误用R内置函数
mean作为变量名,容易引发逻辑冲突 - 循环内每次调用
hist(),会重复绘制5次图形,而非收集完所有数据后一次性绘图 - 逻辑偏差:你需要的是每次生成10个二项分布变量并求和,而非对同一组数据反复取均值
修复后的代码
Plot <- function(n_sim, size, p, n_per_sim) { # 存储每次模拟的和 sum_results <- c() set.seed(1234) # 执行n_sim次模拟 for (i in 1:n_sim) { # 每次生成n_per_sim个二项变量,计算它们的和 one_sim_sum <- sum(rbinom(n_per_sim, size, p)) sum_results <- c(sum_results, one_sim_sum) } # 绘制最终的直方图 hist(sum_results, main = paste("模拟次数 =", n_sim), xlab = "10个二项变量的和", col = "lightblue") } # 调用函数:模拟5次,每次生成10个rbinom(10, 0.1)变量并求和 Plot(n_sim = 5, size = 10, p = 0.1, n_per_sim = 10)
说明
- 变量名改为
sum_results,避免和内置函数mean冲突 - 每次循环重新生成随机变量并计算和,保证每次模拟的独立性
- 收集完所有5次模拟结果后再绘制直方图,避免重复绘图
- 由于模拟次数仅为5次,数据量极小,直方图可能还是只有1-2个条形,这是正常现象。如果想要更直观的分布效果,可以把
n_sim改成1000这类更大的数值。
内容的提问来源于stack exchange,提问作者tim
相关产品推荐
相关产品推荐

