我正在尝试使用经验分布来模拟数据。例如,假设有五个结果的概率如下面的向量所示:
PROBABILITY_VECTOR = [0.1, 0.2, 0.3, 0.25, 0.15]
PROBABILITY_VECTOR是根据经验数据计算的,因此对于该向量中的第一类,虽然平均概率为0.1,但样本之间存在相当大的方差。同样,最后一类,虽然所有样本的平均值为0.15,但存在相当大的方差。概率为0.3和0.25的中间类别相当紧凑。
我使用PROC IML,有这些语句:
CALL RANDSEED(12345);
CALL RANDGEN(SAMPLE, "TABLE", PROBABILITY_VECTOR);
当我这样做时,所有模拟结果的平均值与概率向量一致,正如您所期望的那样。但如果我想让我的模拟试验也显示出我在数据中的某些类别中观察到的广泛差异,我该怎么做呢?什么好主意吗?
听起来你有k组受试者,组的大小是N_1, N_2,…, N_k。对于每一组,您都测量了具有某些兴趣特征的受试者的比例。比例是p_1, p_2,…, p_k。
要模拟这样的数据,首先从N=N_1+N_2+…的多项分布中随机抽取一个值。+N_k受试者,隶属度的概率为N_1/N, N_2/N,…, N_k/N。这将给你一个新的样本,N个受试者分布在k组中,每个组的受试者数量与数据数量大致相同。这就解释了为什么有些群体"差异很大"。而其他人则"紧张"。
使用二项(p_i, N_i)分布来模拟组中哪些受试者具有该特征。这将随机将特征分配给第i组中的一些受试者。
如果你一遍又一遍地重复这个过程,你会发现小群体比大群体有更多的变化。我已经写了一个详细的解释,包括一个SAS/IML程序和可视化各组之间变化的图形。参见文章"模拟组的比例">