java - 从数据分位数中随机采样,同时保留原始概率分布

标签 java r sampling probability-density

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

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

density plot of data

图 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];
}

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

最佳答案

preserve the characteristics of the original distribution, for example mean and variance?

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

If not, how to arrange sampling to achieve this goal?

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

关于java - 从数据分位数中随机采样,同时保留原始概率分布,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32550059/

相关文章:

python - 如何在 Keras Tensorflow 中为采样创建自定义层?

java - Groovy Shell 沙箱最佳实践

java - 与按需执行文件查找相比,什么时候在初始化时从文件加载所有数据更好? ( java )

java - 在android中按下后退按钮后如何停止finish()方法?

r - 使用 Data.table 的笛卡尔滚动连接

python - 使用pyaudio时什么是 block 、样本和帧

java - Maven 生成的 jar 文件中的 MANIFEST.MF 中缺少 Main-Class 属性

r - R 中 2 个向量的投影

r - 为什么 devtools 给我一个警告,@slot 需要名称和描述

python - 恒速循环高精度信号采样