从具有概率 [r] 的向量生成伯努利变量
Generate a Bernoulli variable from vector with probabilities [r]
我遇到了一个非常基本的问题。我试图找到任何有相同问题但找不到的讨论帖。
我正在尝试找出如何生成基于概率 (z) 的伯努利变量 (y) 我为每个观察生成。我已经生成了下面的虚构数据集来表示我的问题。
x <- c("A", "B", "C", "D", "E", "F")
z <- c(0.11, 0.23, 0.25, 0.06, 0.1, 0.032)
df <- data.frame(x, z)
我想添加变量 y,它是一个基于变量 z.
概率的二进制变量
我尝试了以下方法:
df <- df %>%
mutate(y = rbinom(1,1,z))
但似乎它对所有观察赋予相同的值,而不是基于观察自身的概率。
有人知道怎么解决吗?
谢谢!
来自 rbinom
的联机文档:
rbinom(n, size, prob)
n: number of observations. If length(n) > 1, the length is taken to be the number required.
所以
df <- df %>%
mutate(y = rbinom(nrow(df), 1, z))
df
> df
x z y
1 A 0.110 0
2 B 0.230 1
3 C 0.250 0
4 D 0.060 0
5 E 0.100 0
6 F 0.032 0
为了证明事件是以正确的概率生成的:
df <- data.frame(x=rep(x, each=500), z=rep(z, each=500))
df <- df %>%
mutate(y = rbinom(nrow(df), 1, z))
df %>% group_by(x) %>% summarise(y=mean(y), groups="drop")
# A tibble: 6 x 2
x y
<fct> <dbl>
1 A 0.114
2 B 0.232
3 C 0.25
4 D 0.06
5 E 0.106
6 F 0.018
我遇到了一个非常基本的问题。我试图找到任何有相同问题但找不到的讨论帖。
我正在尝试找出如何生成基于概率 (z) 的伯努利变量 (y) 我为每个观察生成。我已经生成了下面的虚构数据集来表示我的问题。
x <- c("A", "B", "C", "D", "E", "F")
z <- c(0.11, 0.23, 0.25, 0.06, 0.1, 0.032)
df <- data.frame(x, z)
我想添加变量 y,它是一个基于变量 z.
概率的二进制变量我尝试了以下方法:
df <- df %>%
mutate(y = rbinom(1,1,z))
但似乎它对所有观察赋予相同的值,而不是基于观察自身的概率。
有人知道怎么解决吗?
谢谢!
来自 rbinom
的联机文档:
rbinom(n, size, prob)
n: number of observations. If length(n) > 1, the length is taken to be the number required.
所以
df <- df %>%
mutate(y = rbinom(nrow(df), 1, z))
df
> df
x z y
1 A 0.110 0
2 B 0.230 1
3 C 0.250 0
4 D 0.060 0
5 E 0.100 0
6 F 0.032 0
为了证明事件是以正确的概率生成的:
df <- data.frame(x=rep(x, each=500), z=rep(z, each=500))
df <- df %>%
mutate(y = rbinom(nrow(df), 1, z))
df %>% group_by(x) %>% summarise(y=mean(y), groups="drop")
# A tibble: 6 x 2
x y
<fct> <dbl>
1 A 0.114
2 B 0.232
3 C 0.25
4 D 0.06
5 E 0.106
6 F 0.018