r - 更改值顺序时样本的 Set.seed 问题

标签 r sampling random-seed seed

set.seed(59)
mean(sample(c(12,7,5),7,prob = c(.3,.3,.4),replace = T))
[1] 9.571429}

set.seed(59)
mean(sample(c(5,7,12),7,prob = c(.4,.3,.3),replace = T))
[1] 8.142857
两个代码不应该返回相同的样本平均值,为什么不同?

最佳答案

好吧,首先考虑您忽略 prob= 的更简单的情况。

set.seed(59) 
sample(c(12,7,5),7,replace = T)
# [1]  5 12 12  5  5 12  5
set.seed(59) 
sample(c(5,7,12),7,replace = T)
# [1] 12  5  5 12 12  5 12
因为你有不同的输入,你会得到不同的结果。但还要注意sample函数实际上是从向量索引中采样,而不是向量的实际值。看看在第二个结果中,您基本上只是交换了 5s 和 12s。唯一重要的是输入向量的长度。如果你尝试
set.seed(59) 
sample(1:3,7,replace = T)
# [1] 3 1 1 3 3 1 3
看看你如何仍然得到相同的“accaaca”模式(中间值永远不会被选中)。这就是设置种子将为您做的事情。你真的只能得到完全相同的结果,所有其他参数都相同。
如果您更改向量中值的顺序,并交换概率,您将不会像 R 使用的那样从伪随机数生成器中获得相同的观察结果。看到它们是相同的统计分布根本不够“聪明”。然而,如果你一遍又一遍地抽取一堆样本,从长远来看,由于大数定律,它们将具有相似的平均值。

关于r - 更改值顺序时样本的 Set.seed 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66838570/

相关文章:

r - R中非线性最小二乘法内的样条

matlab - FFT:将样本与频率匹配

opengl - 从也是渲染目标的纹理中采样

javascript - 获取两个给定值之间的可播种的随机整数

python - 在Python中永久设置种子

R 保存具有密码保护的 Excel 工作簿

r - 如何为R中的lapply函数设置一行矩阵的条件

python - 为代码的每次运行设置不同的种子

r - 使用 igraph 和 R 进行图形可视化

MySQL 将开始和结束时间戳分解为 X 个样本