Jak pobierać próbki równomiernie z powierzchni hiper-elipsoidy (stała odległość Mahalanobisa)?


12

Czy w przypadku wielowymiarowym o wartościach rzeczywistych istnieje sposób, aby równomiernie próbkować punkty z powierzchni, na których odległość Mahalanobisa od średniej jest stała?

EDYCJA: sprowadza się to do równomiernego pobierania próbek z powierzchni hiperlipsoidy, która spełnia równanie,

(xμ)TΣ1(xμ)=d2.

Mówiąc bardziej precyzyjnie, w „równomiernie”, to znaczy próbki, tak, że każdy element powierzchni dA z hiperpowierzchni zawiera taką samą masę prawdopodobieństwa.


1
XcE[X]

1
Myślę, że potrzebujemy odpowiedniej definicji „jednolicie”. Powód jest następujący: w dwóch wymiarach ten zestaw punktów leży wzdłuż jakiejś elipsy. Czy należy pobierać próbki z tej elipsy w taki sposób, aby równe długości miały równe szanse lub że równe kąty miały równe szanse, czy też tak, że równe długości, gdy zmienne są znormalizowane, mają równe szanse, czy w inny sposób? Jeśli możesz wyjaśnić, co ma na celu osiągnięcie tego próbkowania, może to dać nam wystarczającą ilość informacji, aby wiedzieć, o co próbujesz zapytać.
whuber

1
Rozumiem, że równomierne pobieranie próbek z powierzchni kuli, a następnie mapowanie jej na elipsoidę nie da jednorodnych próbek na elipsoidzie. Potrzebuję więc metody, która pobiera próbki równomiernie z powierzchni elipsoidy.
sachin vernekar

1
Czy chcesz, aby próbka była jednolita na powierzchni elipsoidy w tym sensie, że każdy element powierzchni dA hiper-powierzchni zawiera taką samą masę prawdopodobieństwa?
Sextus Empiricus,

1
Dlaczego, jak i gdzie zamierzasz zastosować tę jednolitą próbkę? Takie informacje mogą pomóc w opracowaniu najlepszej / wystarczającej strategii. Na przykład, gdy różne osie elipsoidy nie różnią się zbytnio, możesz użyć próbkowania odrzucającego poprzez (1) próbkowanie na kuli, (2) ściskanie jej w elipsoidzie, (3) obliczanie szybkości, z jaką ściśnięta jest powierzchnia (4) odrzucić próbki zgodnie z odwrotnością tego wskaźnika.
Sextus Empiricus,

Odpowiedzi:


4

Gdy różne osie elipsoidy nie różnią się zbytnio, możliwe jest zastosowanie próbkowania odrzucania (przy dużych różnicach dużo odrzucasz, co czyni go mniej wykonalnym)

  • (1) próbka w hiperferze
  • (2) ściśnięcie go w hiperlipsoidę
  • (3) oblicz szybkość, z jaką powierzchnia została ściśnięta
  • (4) odrzucić próbki zgodnie z tą częstotliwością.

Przykład 2D

przykład

set.seed(1)
#some matrix to transform n-sphere (in this case 2x2)
m <- matrix(c(1, 0.55, 0.55, 0.55), 2)

# sample multinomial with identity covariance matrix
x <- cbind(rnorm(3000, 0, 1), rnorm(3000, 0, 1))
l1 <- sqrt(x[,1]^2 + x[,2]^2)

# perpendicular vector
per <- cbind(x[,2], -x[,1])

# transform x
x <- x %*% m
# transform perpendicular vector (to see how the area transforms)
per2 <- per %*% m

# get onto unit-"sphere"/ellipsoid
x <- x/l1

# this is how the area contracted
contract <- sqrt(per2[,1]^2 + per2[,2]^2) / sqrt(per[,1]^2 + per[,2]^2)

# then this is how we should choose to reject samples 
p <- contract/max(contract)

# rejecting
choose <- which( rbinom(n=length(p), size=1, p=p) == 1)

#plotting
plot(x[1:length(choose), 1], x[1:length(choose), 2],
     xlim=c(-1.2, 1.2), ylim=c(-1.2, 1.2),
     xlab = expression(x[1]), ylab = expression(x[2]),
     bg=rgb(0, 0, 0, 0.01), cex=0.6, pch=21, col=rgb(0, 0, 0, 0.01))
title("squeezed uniform circle \n ")

#plotting
plot(x[choose,1], x[choose,2],
     xlim=c(-1.2, 1.2), ylim=c(-1.2, 1.2),
     xlab = expression(x[1]), ylab = expression(x[2]),
     bg=rgb(0, 0, 0, 0.01), cex=0.6, pch=21, col=rgb(0, 0, 0, 0.01))
title("squeezed uniform circle \n  with rejection sampling")
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.