You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何未使用的额外随机数会导致F检验模拟结果偏差?

问题

以下是用于模拟F检验检验水准(alpha=0.1)的R代码:

set.seed(123) 
n=4;p=1;q=1;
nu1=p; nu2=n-p-q+1;;
alpha=0.1

critical=qf(alpha,nu1,nu2,lower.tail=FALSE ) 

rep=100000
i=1
# M<- rf(rep, q, n-q+1);
rej=0 
while (i<=rep){ 
  rL=  rf(1,nu1 , nu2);
  if (rL >=critical) {rej=rej+1;} 
  i=i+1;   
} 
r=rej/rep 

保留注释行时,模拟结果为0.0993,与alpha=0.1的误差绝对值小于0.0008;但移除注释行(生成额外未使用的随机数)后,结果变为0.09859,误差绝对值超过0.0013;当alpha=0.38时,误差绝对值甚至超过0.002。即使将模拟重复次数从10万增加到100万,误差绝对值仍大于0.001。插入其他随机值也会导致结果偏差,且无法通过增加重复次数改善,请问这是什么原因?

原因分析

这是伪随机数生成的序列依赖性导致的问题:

  • R中的伪随机数是基于确定性算法生成的,set.seed(123)会固定整个随机数序列的起始点。移除注释行后,rf(rep, q, n-q+1)会提前消耗掉序列中前rep个随机数,后续while循环里调用rf(1, ...)时,使用的是序列中更靠后的部分。
  • 伪随机数序列整体符合统计分布,但局部片段的统计特性可能和整体存在偏差。你这里的模拟依赖序列中某一段的随机数,提前消耗随机数后,后续使用的片段恰好和预期的分布特性有偏差,且这种偏差是系统性的,而非随机抽样误差——不管重复多少次,你都是在同一个偏移后的固定序列片段里采样,所以增加重复次数无法改善偏差。
  • 简单来说,固定种子后整个随机数序列是固定的,提前取走一部分后,剩下的部分用于模拟时,其分位数特性刚好和你需要的alpha不匹配,从而产生稳定的偏差。

内容的提问来源于stack exchange,提问作者L wang

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 17:52:25