如何在 R 中得到这个概率结果?

How to get this probability outcome in R?

R 新手。不知道如何解决这个问题。本质上我想创建一个 Monte Carlo 模拟。然而,这是应该如何进行的: 只有 3 个人 (A,B,C) 并且只接触一次,顺序是:(A-->B) (B-->C)。开始时,A 100% 患病,而 B 和 C 0% 患病。每次一个人与另一个人接触时,他们有 50% 的机会生病我将如何在 R 中复制它?我了解这背后的数学原理,但不确定如何对其进行编码。这是我目前所拥有的:

a='positive'
corona = c('positive','negative')
sample(x = corona, size = 1, replace = TRUE)

我知道输出只会给我B是否生病的结果。我如何继续查看 C 是否生病?

您可以编写辅助函数来执行 "infecting"。假设 1 是 "sick",0 是 "not sick"

infect <- function(x, rate=.5) {
   current_sick <- x==1
   new_sick <- runif(sum(current_sick)) < rate
   x[current_sick] <- as.numeric(new_sick) # turn TRUE/FALSE to 1/0
   x
}

此函数查找所有 1 所在的位置,然后针对这些人中的每一个人,它抛硬币看下一个人是否会生病(不改变任何非生病值)

然后用1000人测试,你可以做

A <- rep(1, 1000) # all sick
B <- infect(A)
C <- infect(B)

这画了 1000 个 A。我们通过两个传输步骤,一次完成所有 1000 个样本。如果你 运行 mean(C) 你应该得到接近 0.25 的值。