随机化能否平衡组间所有因素?模拟结果异常的原因及代码排查
问题定位
你遇到的结果异常同时来自代码编写错误和对随机化的认知偏差两方面原因。
1. 代码存在核心逻辑错误
你执行t检验的索引逻辑完全错误:
- 代码中
dt1[1, ]、dt2[1, ]的写法是提取处理组/对照组的第一行单条观测,而非提取第一个变量的全部样本,用单条观测做t检验完全不符合统计检验的基本逻辑,输出的p值没有任何参考意义。 - 正确的写法应为
dt1[, 1]、dt2[, 1],即提取对应变量的全部组内样本做t检验。
你修正索引后重新运行模拟,会发现每个变量的假阳性率稳定在5%左右,和预设的显著性水平完全匹配。
2. 对随机化的理解存在偏差
即使代码完全正确,你也会观察到部分模拟中存在组间差异显著的情况,这不是随机化失效,而是统计检验的固有属性:
- 随机化的作用是消除组间的系统性偏差,保证零假设成立时组间差异的期望为0,而非保证每一次随机分组的所有变量组间差异都无统计学显著性。
- 显著性检验本身存在一类错误:当你设定α=0.05时,就算组间真的没有任何差异,也有5%的概率得到显著的检验结果。
- 你同时对5个变量做检验且未做多重检验校正,假阳性概率会进一步膨胀为
1-(0.95)^5≈22.6%,即每5次模拟就会有1次出现至少一个变量显著的结果,属于正常情况。
内容的提问来源于stack exchange,提问作者Sung-Hun Yun
相关产品推荐
相关产品推荐

