【问题标题】:Random sampling from data quantiles, while preserving original probability distribution从数据分位数随机抽样,同时保留原始概率分布
【发布时间】:2015-09-13 13:19:05
【问题描述】:

根据我之前题为“Random sampling from a dataset, while preserving original probability distribution”的问题,我想从一组 >2000 个数字中进行抽样,这些数字是从测量中收集的。我想执行几个测试(我在每个测试中最多取 10 个样本),同时在整个测试过程和每个测试中(尽可能)保留概率分布。现在,我不是完全随机采样,而是将数据划分为 5 个分位数,在 10 次测试中,我从每个分位数采样 2 个数据元素,对每个分位数中的数据数组使用均匀随机分布。

完全随机抽样的问题在于,由于数据分布是长尾的,我在每次测试中得到的值几乎相同。在每个测试中,我想要一些小值样本、一些中值样本和一些大值样本。所以我按照描述进行了采样。

图 1. 约 2k 个数据元素的密度图。

这是计算分位数的R代码:

q=quantile(data, probs = seq(0, 1, by= 0.1))

然后我将数据划分为 5 个分位数(每个分位数为一个数组)并从每个分区中采样。例如,我在 Java 中这样做:

public int getRandomData(int quantile) {
    int data[][] = {1,2,3,4,5}
                  ,{6,7,8,9,10}
                  ,{11,12,13,14,15}
                  ,{16,17,18,19,20}
                  ,{21,22,23,24,25}};
    length=data[quantile][].length;
    Random r=new Random();
    int randomInt = r.nextInt(length);
    return data[quantile][randomInt];
}

那么,每个测试和所有测试的样本是否都保留了原始分布的特征,例如均值和方差?如果没有,如何安排采样来实现这个目标?

【问题讨论】:

  • 我最近不得不处理一个类似的问题。是的,您将保留分发。但是,如果您对分位数进行采样,我认为您不会得到您想要的,因为包含长尾的分位数将具有巨大的支持(宽度、宽度)。
  • 分位数表示分成四等分。我怀疑你的意思是五分之一。 en.wiktionary.org/wiki/quintile
  • @bunk quartile 与 Quarters 来自同一个词。它的具体意思是一分为四,而不是任何相等的分裂。这就是为什么你有一个像五分位数这样的词,意思是分成 5。
  • @PeterLawrey xD,为了让这一切更加混乱,R 函数 quantiles 甚至不需要拆分相等

标签: java r sampling probability-density


【解决方案1】:

保留原始分布的特征,例如均值和方差?

这将具有类似的分布。您可能需要进行额外检查以确保它符合您的要求,也许再试一次,但这会让您接近。

如果没有,如何安排抽样来实现这个目标?

除非您有所有数据的重复,即所有数据都加倍,否则您需要拥有每个样本值之一。这是获得完全相同分布的唯一方法。

【讨论】:

  • 谢谢。我可以在采样过程中使用所有数据元素,但我关心的是个别测试。如果我从不同的分位数进行固定数量的采样(例如正好 10 个),我可以确保结果正常。但是如果我每次最多采样 10 次(stats.SE 上问过这个问题吗?
  • @Ho1 你说会有问题,你心里有什么问题?随机更改 quinities 与简单随机选择相同。
  • 好的,让我解释一下。如果只做 3 次测试,我有 10 个分位数,就会出现样本特征和原始分布不匹配的情况。不是吗?
  • @Ho1 如果随机选择,总会出现不匹配的情况。如果它完全一样,它就不会是随机的。 (除非您碰巧随机选择每个值)问题是它应该匹配多近,但仍然尽可能随机。
  • @Ho1 对我来说没问题。定义“好的”?
猜你喜欢
  • 2015-12-08
  • 1970-01-01
  • 1970-01-01
  • 2017-12-20
  • 2018-07-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-14
相关资源
最近更新 更多