r - Sampling from high dimensional sphere with noise -
i want generate sample of vectors high dimensional sphere noise.
i.e. i'm trying create sample such vector x in r^n , holds ||x+epsilon||^2 = 1 epsilon iid vector in r^n of component epsilon_j distributed n(0,sigma^2).
does have idea how implement it? i'd prefer use r.
thank you!
i think should work. turned function.
d = 5 # number of dimensions n_draws = 100 # number of draws sigma = 0.2 # standard deviation
i begin sampling random vectors should uniformly distributed on unit sphere. normalizing draws d-dimensional multivariate normal distribution. (there's more direct way step, i'll using rmvnorm
again later convenient.) call them dirs
because, since we're normalizing, we're doing in step sampling "directions".
library(mvtnorm) # sample dirs = rmvnorm(n = n_draws, mean = rep(0, d)) # normalize dirs = dirs / sqrt(rowsums(dirs^2))
now draw multivariate normal add noise.
x = dirs + rmvnorm(n = n_draws, mean = rep(0, d), sigma = sigma * diag(d))
to map variables used in question, define y = x + epsilon. dirs
y, noise add -epsilon; adding them yields x asked for.
Comments
Post a Comment