r - 从具有噪声的高维球体采样

r - 从具有噪声的高维球体采样,第1张

我想从具有噪音的高维球体生成矢量样本。

即。我试图创建一个样本,使得任何向量X在R ^ N中并且保持|| X epsilon || ^ 2 = 1其中epsilon是R ^ N中的iid向量,其中任何分量epsilon_j分布为N (0,西格玛^ 2)。

有人知道如何实施它吗?我更喜欢使用R。

谢谢!

最佳答案:

1 个答案:

答案 0 :(得分:1)

我认为这应该有效。它很容易变成一个函数。

d = 5         # number of dimensions
n_draws = 100 # number of draws
sigma = 0.2   # standard deviation

我首先对应该在单位球面上均匀分布的随机向量进行采样。我通过从d维多元正态分布中标准化绘制来做到这一点。 (这可能是一个更直接的方法来执行此步骤,但我稍后会再次使用rmvnorm,所以这很方便。)我称之为dirs,因为我们&# 39;重新规范化,我们在这一步中真正做的就是抽样"方向"。

library(mvtnorm)
# sample
dirs = rmvnorm(n = n_draws, mean = rep(0, d))
# normalize
dirs = dirs / sqrt(rowSums(dirs^2))

现在我们从多变量法线中进行另一次绘制以添加噪声。

x = dirs   rmvnorm(n = n_draws, mean = rep(0, d), sigma = sigma * diag(d))

要将此映射到您在问题中使用的变量,请定义Y = X epsilon。我的dirs是Y,然后我添加的噪音是-epsilon;添加它们会产生您要求的X.

本文经用户投稿或网站收集转载,如有侵权请联系本站。

发表评论

0条回复