相同种子下SPSS与R生成的伯努利随机数存在差异的原因咨询
R与SPSS生成伯努利随机数存在差异的原因
你观测到的差异不是操作系统不同导致的,核心原因是两款软件的底层随机数生成相关实现没有统一标准,具体差异如下:
- 伪随机数生成器(PRNG)实现规则不同
R默认使用梅森旋转(Mersenne-Twister)算法作为PRNG,SPSS默认使用自研的乘法同余生成器。即使两款软件选用同名算法,相同种子在不同软件中的初始化逻辑、状态计算规则也没有统一规范,无法输出一致的基础均匀随机数序列。 - 伯努利值的生成逻辑不同
即便基础均匀随机数序列完全一致,转换为伯努利结果的逻辑也可能存在差异:R的rbinom()在n=1时输出伯努利值,底层基于二项分布专用生成算法实现;SPSS的RV.BERNOULLI()通过直接对比均匀随机数与阈值输出结果,二者的运算逻辑、边界值判断规则都有区别,最终输出的序列自然无法对齐。 - 调整R的
set.seed()的kind参数无法生效的原因是SPSS的PRNG实现细节未公开,不存在可以完全匹配其规则的R参数,所以无法生成完全一致的随机序列。
如果需要跨软件使用相同的随机数序列,可在其中一款软件生成后导出结果,再导入另一款软件使用即可。
内容的提问来源于stack exchange,提问作者mbistato
相关产品推荐
相关产品推荐

