如何给范围为单位区间的随机变量添加噪声?

机器算法验证 分布 错误 贝塔分布 噪音
2022-04-03 19:09:38

我有一个从 beta 分布中采样的值列表,因此位于区间 [0,1] 中。我想为这些值添加(例如高斯)噪声,但当然存在这些值的问题,然后可能会离开区间。这样做的正确方法是什么?

2个回答

处理约束变量的传统方法是将它们转换为无约束变量,应用抖动,然后将它们转换回原始比例。

例如,如果di(0,1), 可以使用 logit 变换

xi=logit(di)=log(di1di)
并根据需要添加尽可能多的噪音
yi=xi+ϵi
在哪里ϵi例如,在返回之前是一个居中的高斯变量
δi=exp(yi)/(1+exp(yi))=1/(1+exp(yi))

这是R中的插图:

> d=rbeta(10^4,2.4,6.2)
> logit=function(x){log(x/(1-x))}
> de=1/(1+exp(-rnorm(10^4,mean=logit(d),sd=2)))

似乎有很多方法可以完成您正在寻找的东西。这是一个建议。

对待每一个d好像它是某个函数的值Φ从实数线到单位区间。例如,让Φ表示标准正态分布的累积密度函数,因此d=Φ(z)对于一些实值z. 然后z=Probit(d), 在哪里Probit表示的倒数Φ. z^=z+ae, 在哪里e是标准正态随机变量,并且a>0是比例因子。d^=Φ(z^)是你嘈杂的估计d. 把所有东西放在一起,你有

d^=Φ(Probit(d)+ae)

这将位于开放单位区间内。通过调整a你调整噪音的程度。