将任意分布转换为均匀分布

机器算法验证 可能性 matlab
2022-04-13 02:20:30

我有来自金融市场的变量的 500,000 个值。该变量具有任意分布。我需要一个公式,它允许我围绕这个变量的任何值选择一个范围,以便相等(或接近它)数量的值落在该范围内。据我了解,这意味着我需要将其从任意分布转换为均匀分布。我已经读过(但几乎不理解)我正在寻找的东西被称为“概率积分变换”。

任何人都可以用一些代码帮助我(首选 Matlab,但这并不重要)来帮助我完成这个任务吗?

编辑:我将我的数据集上传为.csv 文件压缩的 .rar 文件

我在 MatLab 中使用了经验分布函数,得到了以下图表:经验累积分布 这看起来对吗?这是原始数据的直方图以供参考: 原始数据的直方图

2个回答

如果具有(累积)分布函数,则上具有均匀分布您不知道是什么,但是对于 N = 500,000 个数据点,您可以简单地使用经验分布函数:XF(x)=P(X<x)F(X)[0,1]F

F^(x)=1Ni=1N1[xix]

其中是指示函数,表示为真,如果为假。函数通常也称为分位数函数。1[A]1[A]=1A1[A]=0AF


在编码方面,一旦你编写了你的​​函数F,你现在有两个对象,x包含你的数据和q转换后的数据,所以你可以编写一个函数Finv,它接受 [0,1] 中的一个数字并返回你的样本分布的值在那个分位数(使用线性插值或其他一些适当的方法来填补空白)。

现在,如果您想在 value 的任一侧获取例如 5% 的数据x0,您的范围将是Finv(F(x0) - 0.05)to Finv(F(x0) + 0.05)

假设您有相关变量的累积分布函数假设给定的值是,范围是然后,如果您选择落入该范围的值的数量,则以下内容应成立:Fx[r1,r2]x[r1,r2]N

F(r1)F(r2)=N500000

这是一个有 2 个未知变量的方程,所以我们需要一些限制来解决它。流行的是设置这将为我们提供一个变量的方程,使用任何优化算法都可以很容易地求解。r1=xε/2r2=x+ε/2

您唯一需要的是函数您可以对其进行建模,也可以使用一些非参数估计。在后一种情况下,可能不需要优化算法,因为它应该可以计算出解决方案。F

注意:这只是一种可能的方法,取决于数据它可能不起作用。