如何在R语言中模拟符合指定特殊分布形态的数据集
R语言模拟双峰分布数据方案
你需要模拟的是典型的双正态混合分布,可通过以下代码实现:
基础R实现(无需额外安装包)
# 设置随机种子保证结果可复现 set.seed(123) # 配置分布参数 total_sample <- 10000 # 总生成样本量 group1_ratio <- 0.4 # 第一个峰对应的样本占比 mu1 <- 2 # 第一个峰的中心位置(均值) sd1 <- 0.8 # 第一个峰的宽度(标准差) mu2 <- 5 # 第二个峰的中心位置(均值) sd2 <- 1.2 # 第二个峰的宽度(标准差) # 生成模拟数据 group1_size <- round(total_sample * group1_ratio) group2_size <- total_sample - group1_size sim_data <- c( rnorm(group1_size, mean = mu1, sd = sd1), rnorm(group2_size, mean = mu2, sd = sd2) ) # 绘制直方图验证分布形态 hist(sim_data, breaks = 50, col = "skyblue", border = "white", main = "双峰分布模拟结果", xlab = "数值")
可选:用ggplot2绘制密度验证图
install.packages("ggplot2") # 未安装时先运行此行 library(ggplot2) ggplot(data.frame(value = sim_data), aes(x = value)) + geom_histogram(aes(y = ..density..), bins = 50, fill = "skyblue", alpha = 0.6) + geom_density(color = "darkred", linewidth = 1) + labs(title = "双峰分布密度图", x = "数值", y = "密度") + theme_bw()
参数调整说明
- 调整两个峰的间距:修改
mu1和mu2的差值,差值越大峰分离越明显 - 调整峰的宽度:修改
sd1和sd2,数值越大对应峰越平缓宽阔 - 调整两个峰的高度差:修改
group1_ratio,占比越高对应峰越高
内容的提问来源于stack exchange,提问作者sd3184
相关产品推荐
相关产品推荐

