【发布时间】: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