以下代码是从BaseDs 数据集中随机抽取出样本大小为SampSize 的子数据集。
有人可以用严格的概率计算证明以下命题吗?
每个观测被抽取的概率为 样本大小/总观测数(即subset数据集大小/BaseDs数据集大小)。
data work.subset(drop = ObsLeft SampSize);
SampSize = 10;
ObsLeft = TotObs;
do while(SampSize > 0 and ObsLeft > 0);
PickIt + 1;
if ranuni(0) < SampSize/ObsLeft then
do;
set BaseDs point = PickIt
nobs = TotObs;
output;
SampSize = SampSize - 1;
end;
ObsLeft = ObsLeft - 1;
end;
stop;
run;
-------------------------------------------------------------------------------------------------------------------------------------------
本人的一些想法:以上代码算法是模拟抽签概率得出的:
记BaseDs数据集大小为T,记抽样大小SampSize为S。
则等价的情形为:一共有T个人,各人按顺序从T张彩票中抽取一张,T张彩票中有S张为中奖彩票。
则每个人抽中彩票的概率均为S/T。