【发布时间】:2021-03-04 15:55:20
【问题描述】:
在 R 中使用 sample.int 我正在为两个群体(在示例中为 10 个人)抽取随机样本。如果概率有很小的变化,比如从 c(0.5,0.5) 到 c(0.51, 0.49) 的变化,我希望抽样或多或少保持不变,即大多数人将被分配相同的抽签(例如,如果我们有 100 个人口,也许 1 个人会改变他们的分配)。如何做到这一点?
set.seed(123)
probs.1<-c(0.51,0.49)
sample.int(n=2,
replace = TRUE,
size=10,
prob=probs.1)
#[1] 1 1 2 2 2 2 1 1 2 1
set.seed(123)
probs.2<-c(0.5,0.5)
sample.int(n=2,
replace = TRUE,
size=10,
prob=probs.2)
#[1] 2 2 1 1 1 1 2 2 1 2
【问题讨论】:
-
您为什么要这样做?如果你想要相同的平局,你应该使用相同的种子和相同的概率。否则,您只是从不同的分布中进行两次单独的随机抽取(即使它们相似),因此设置种子实际上并没有做任何事情。话虽如此,我怀疑如果您将 probs 更改为 (0.1,0.9) 和 (0.11,0.89) 之类的东西,您可能会看到您想要的东西。
-
所以我们的想法是,我们有 100 人接受治疗 A 的微观模拟,然后我们重新运行模拟,让这 100 人接受治疗 B。治疗 B 对概率的影响很小,因此我们预计对于大多数人来说,他们的结果不会改变,但在另一种情况下,少数人会产生不同的结果
-
在这种情况下,您需要产品分发。所以 sample1 * sample2 like
rbinom(100, 1, 0.5) * rbinom(100, 1, 0.01)那么你可以更好地控制种子。所以set.seed(1); s1 <- rbinom(100,1,0.5); set.seed(2); s2 <- rbinom(100,1,0.1); s1 * s2.
标签: r random simulation seed