首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >基于R中不同概率的生成数

基于R中不同概率的生成数
EN

Stack Overflow用户
提问于 2021-03-09 12:18:41
回答 1查看 44关注 0票数 1

我试图模拟一个数据集i*j矩阵,用i=2 ; j = 200分别代表被试和试验对象,并根据不同概率的试验在0-10之间创建随机数。对于第一受试者(i=1),前100次试验(j = 1-100)的概率为70%为1-5,30%为6-10,而试验10 1至2 0 0的概率为反向。对于第二受试者(i=2),前100次试验(j = 1-100)的概率为60%为1-5,40%为6-10,试验10 1~2 0 0的概率为反向。

我给出了一个两个主题的例子,因为我需要使用多个i,而不仅仅是一个i

我能用sample解决这个问题吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-09 13:23:05

我想你想要的是。

使用基本R,您可以通过sample实现分层采样,但是您可能需要像f这样定义用户函数,如下所示

代码语言:javascript
复制
f <- function(N, p) {
  c(
    sapply(
      list(p, rev(p)),
      function(v) {
        sapply(
          sample(c(TRUE, FALSE), N, replace = TRUE, prob = v),
          function(x) ifelse(x, sample(1:5, 1), sample(6:10, 1))
        )
      }
    )
  )
}

当您使用它时,首先为每次试验定义一个概率列表probs,例如,

代码语言:javascript
复制
probs <- list(c(0.7, 0.3), c(0.6, 0.4))

然后跑

代码语言:javascript
复制
> lapply(probs, f, N = j)
[[1]]
  [1]  2  1  2  5  3  6  9  2  2  2  3  2  3  7  4  5  3  7  1  4 10  2  3  6  8
 [26]  7  8  3  1  2  5  1  4  4  4  2  1  5  5  4  1  6  4  2  9 10  5  1  1  5
 [51]  4  4  3  4  8  4 10  3  2  1  3  4  7  4  2 10  1  4  3  3  5  2  7  6  5
 [76]  3 10  4  2  2  5  1  2  3  2  3  3  2  9 10 10 10 10  3  1  4  3  1  1  5
[101]  8  6  5  9  1  6  1  9 10  4  5  4  6  5  8  2  4 10  6  3  8  5 10  8  8
[126]  8  9  3  8  6  5  7 10  9  6  8  9  5  6  8  4  6  6  7  4  4  8 10 10  6
[151]  9 10  9  7  8  7  3  7  4  6 10  8 10  8  5  6 10  8  9  6  6  1  9  4  8
[176]  1  5 10  7 10  8  7  6  6  5  4  7  7  8  8  1 10  8  5  8  9  4  5  6  7

[[2]]
  [1]  7  9  4  9  5  3  3  9  4  5  6 10  4  5  2  3  2  5  4  5  3  8  5  2  1
 [26]  6  5  3  9  3  9  9  9  8  7  3  4  5  7  3  5  3  5  7  5  3  4  2  6  4
 [51]  7  6  2  7  4  4 10  4 10  2  8 10  3  2  8  1  8 10  8  4  3  2  9  8  4
 [76]  4 10  1  3 10  6  8  6  3  5  2  3  3  9  4  7  5  1  1  1  3 10  5  2  7
[101]  2 10  2  6  8 10 10  7  3  7  3  3  7  1 10  3  4  1  1  8  2  5  2  4  7
[126]  2  7  7  4  9 10  7  1  4  4  9  7  9  9  9  8  4  1 10  6 10  4  4  8  9
[151]  7  8  3  2  9  1  9  7  6  9  1  6  3  9  7  8  5  9  3  8  9  6  5  1  2
[176]  5 10  2  7  8  7  8  8  8  8  8  5  1  1  7  6  3  3  4  2  3  2  3  1  3
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66546733

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档