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

如何用R语言基于Dirichlet Multinomial分布生成1000行91列整数矩阵

生成1000行91列的Dirichlet Multinomial分布矩阵(R实现)

简化并批量生成的代码实现

library(extraDistr)

# 定义Dirichlet Multinomial分布的参数
mypar <- c(0.1,0.1,0.2,0.3,0.1,0.2)

# 封装单行91列数据的生成逻辑
generate_single_row <- function() {
  # 生成91个size=1的Dirichlet Multinomial样本
  mysim <- rdirmnom(n = 91, size = 1, alpha = mypar)
  # 直接提取每行中1对应的类别编号(替代原代码中逐列替换的繁琐操作)
  mychoice.sim <- apply(mysim, 1, function(x) which(x == 1))
  # 转为单行矩阵格式
  t(matrix(mychoice.sim))
}

# 批量生成1000行并合并为最终矩阵
result_matrix <- do.call(rbind, replicate(1000, generate_single_row(), simplify = FALSE))

# 验证矩阵维度(输出应为 1000 91)
dim(result_matrix)

关键优化说明

  • 简化了原代码中逐列替换的操作:通过apply逐行查找1的位置,直接得到对应的类别编号,代码更简洁高效。
  • 批量生成逻辑:将单行生成逻辑封装为函数后,用replicate重复调用1000次,再通过do.call(rbind)合并所有行,快速得到1000×91的目标矩阵。
  • 注意:当size=1时,Dirichlet Multinomial分布与Multinomial分布等价,生成逻辑完全成立。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 17:24:55