在R中创建具有概率的二元变量

在R中创建具有概率的二元变量,r,statistics,R,Statistics,我试图创建一个变量Var,它在60%的时间内取0,否则取1,观察值为50000。 对于正态分布,我记得对正态分布做了以下操作,以定义n: Var <- rnorm(50 000, 0, 1) Var如果60%表示概率等于0.6(而非经验频率),则 Var如果60%表示概率等于0.6(而非经验频率),则 Var我会像这样使用rbinom: n_ <- 50000 p_ <- 0.4 # it's probability of 1s Var <- rbinom(n=n_,

我试图创建一个变量Var,它在60%的时间内取0,否则取1,观察值为50000。 对于正态分布,我记得对正态分布做了以下操作,以定义n:

Var <- rnorm(50 000, 0, 1)

Var如果60%表示概率等于0.6(而非经验频率),则


Var如果60%表示概率等于0.6(而非经验频率),则


Var我会像这样使用rbinom:

n_ <- 50000
p_ <- 0.4 # it's probability of 1s

Var <- rbinom(n=n_, size=1, prob=p_)

n\p>我会像这样使用rbinom:

n_ <- 50000
p_ <- 0.4 # it's probability of 1s

Var <- rbinom(n=n_, size=1, prob=p_)

n\p>我在这里吹毛求疵,但实际上并不完全清楚你到底想要什么

您是否希望从您描述的分布中模拟50000个样本

或者,您想从您描述的分布中复制50000次模拟观察结果吗

在我看来,这些是不同的事情,应该以不同的方式处理

要从该分布中模拟大小为50000的样本,您可以使用:

sample(c(0,1), size = 50000, replace = TRUE)
要从您描述的分布复制50000个采样模拟,我建议:

replicate(50000, sample(c(0,1), size = 1, prob = c(0.6, 0.4)))
这可能看起来很愚蠢,因为在本例中,这两行代码产生完全相同的结果

但假设你的目标是调查50000个样本的性质?然后,您将使用一组(比如1000)复制上面包装在
replicate
中的第一行代码:

replicate(1000, sample(c(0,1), size = 50000, prob = c(0.6, 0.4), replace = TRUE))

我希望我在这件事上没有太迂腐。看到模拟出错,我认为应该将被模拟的东西与你决定做的模拟数量分开。前者是问题的基础,而后者只影响模拟研究的准确性和所需时间。

我在这里吹毛求疵,但实际上并不完全清楚您想要什么

您是否希望从您描述的分布中模拟50000个样本

或者,您想从您描述的分布中复制50000次模拟观察结果吗

在我看来,这些是不同的事情,应该以不同的方式处理

要从该分布中模拟大小为50000的样本,您可以使用:

sample(c(0,1), size = 50000, replace = TRUE)
要从您描述的分布复制50000个采样模拟,我建议:

replicate(50000, sample(c(0,1), size = 1, prob = c(0.6, 0.4)))
这可能看起来很愚蠢,因为在本例中,这两行代码产生完全相同的结果

但假设你的目标是调查50000个样本的性质?然后,您将使用一组(比如1000)复制上面包装在
replicate
中的第一行代码:

replicate(1000, sample(c(0,1), size = 50000, prob = c(0.6, 0.4), replace = TRUE))
我希望我在这件事上没有太迂腐。看到模拟出错,我认为应该将被模拟的东西与你决定做的模拟数量分开。前者是问题的基础,而后者只影响模拟研究的准确性和所需时间