SAS Proc IML 使用经验分布进行模拟

SAS Proc IML simulating using empirical distribution

我正在尝试使用经验分布来模拟数据。例如,假设有五个结果的概率如下面的向量所示:

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_th 组中的一些受试者。

如果你一遍又一遍地重复这个过程,你会发现较小的组比较大的组有更多的变化。我已经写了一个详细的解释,包括一个 SAS/IML 程序和图形,可以可视化各组之间的差异。见文章,"Simulate proportions for groups."