如题,数学不太好,现在有一组比较长的向量(一维向量),经过测算它的分布符合正态分布(均值和方差不一定),但是正态分布的数据在工程上不太好利用,想问一下有没有办法转成均匀分布。
网上搜了一些答案都看不太懂,都提到要 XY 什么的,但是我这里只有一维的向量啊。。
1
ipwx 2022-05-21 00:36:29 +08:00
.... 你的原始需求是什么,为什么要换成均匀分布。为什么说正态分布工程上不好利用。。。。(满脸问号
|
2
Richard14 OP @ipwx 原始需求是为了储存浮点数数据,但是要转化成整数方便索引,比如一组数据在数据库里为一行( 81.2, 93.33, 67.5, 47.2...),使用需求上需要比如显示符合已知条件的条目,已知客户需要第一项介于 80-90 之间,第二项介于 90 到 100 之间,如果用浮点数储存的话就要直接写 80<=a<=90 and 90<=b<=100 ,但如果量化为整数的话,比如 80-90 之间量化为 85,90-100 之间量化为 95 ,则搜索时指定 85*95 的条目就可以了。但是量化的过程中发现数据并不均匀分布,统计了一下发现是按照正态分布的,如果按固定长度区间转化的话,集中在分布均值附近的数据感觉会丢失很多信息
|
3
Trim21 2022-05-21 06:40:08 +08:00 via Android
你按照你统计出来的均值和方差,带到正态分布曲线里。计算出 10%,20%,30,…80%,90%这些分界点的值,把这些值作为筛选条件。
|
4
Trim21 2022-05-21 06:42:08 +08:00 via Android
这个 xy 不是坐标,是统计量的值和样本值
|
5
kilasuelika 2022-05-21 08:52:26 +08:00 via Android
1 。算 x 序列的均值,标准差 mu,sigma
2 。计算此正态分布的累积概率分布 y=CDF(x),于是 y 为[0,1]均匀分布。 给定 y ,要算出 x 就是分位数 x=quantile(y)。 |
6
shinyy 2022-05-21 09:11:45 +08:00 via iPhone
@kilasuelika #5 是了 直方图均衡化
|
7
Richard14 OP @Trim21 是这个意思,但需要数学表达,工程上不可能输入一串数组做判断,<=t[0] 则等于 0 ,<=t[1]则等于 1....这种的,计算太复杂了,不可能工程化。
@kilasuelika 均值和方差是很好求的,但是计算 CDF 搜了一下公式是类似这种的 https://wikimedia.org/api/rest_v1/media/math/render/svg/3cdb2c24bf4b5a6d4be5003f68d33e0087380c49 感觉这种需要不定积分的没法拿来算啊。。 |
8
ipwx 2022-05-21 13:12:02 +08:00 1
|
9
ipwx 2022-05-21 13:14:07 +08:00 1
上面的连接,自己找,正太分位数的反函数可以用 erfinv 表达,而它又有近似算法。哪怕打表都无所谓,可以二分查找。改原始数据是什么鬼,不会算就找资料算啊。
|