指定种子无分层时,排序顺序是否影响Proc Surveyselect结果?
Proc Surveyselect排序顺序对结果的影响(无Strata语句、指定种子时)
当指定了种子但未使用strata语句时,输入数据集的排序顺序确实会影响Proc Surveyselect的执行结果。
原因在于Proc Surveyselect的抽样逻辑:即使固定了随机种子,该过程是按照输入数据集的观测顺序依次处理并分配随机数的。当数据集的排序发生变化时,原本处于不同位置的观测会被重新排列,相同的随机序列会对应到不同的观测上,最终导致抽样/分组结果产生差异。
以你使用的代码为例:
proc surveyselect data = dataset groups=10 seed=123456 out=dataset_out; run;
groups=10是将数据集分成10组,过程会按输入数据的顺序为每个观测生成随机数并分组。如果数据集排序改变,每个分组对应的观测集合自然会不同,哪怕种子完全一致。
需要注意的是,只有当使用strata语句时,过程会先分层再在层内处理,此时层内的排序变化可能不影响结果,但无分层时,整体排序的影响是直接的。
内容的提问来源于stack exchange,提问作者Lynsey
相关产品推荐
相关产品推荐

