Como amostrar uniformemente a partir da superfície de um hiper-elipsóide (distância constante de Mahalanobis)?

12

Em um caso multivariado com valor real, existe uma maneira de amostrar uniformemente os pontos da superfície onde a distância de Mahalanobis da média da é constante?

EDIT: isso se resume a pontos de amostragem uniformemente da superfície de um hiperelipsoide que satisfaz a equação,

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

Para ser mais preciso, por "uniformemente", quero dizer amostra, de modo que cada elemento de área da hiper-superfície contenha a mesma massa de probabilidade.dUMA

sachin vernekar
fonte
1
Corrija-me se eu estiver errado: você está perguntando "dada uma variável aleatória , como posso amostrar uniformemente a partir dos pontos a uma determinada distância de Mahalanobis longe de ?" XcE[X]
Kevin Li
1
Acho que precisaremos de uma definição adequada de "uniformemente". A razão é a seguinte: em duas dimensões, esse conjunto de pontos se encontra ao longo de alguma elipse. Supõe-se que se faça uma amostragem dessa elipse de maneira que comprimentos iguais tenham chances iguais, ou que ângulos iguais tenham chances iguais, ou que comprimentos iguais quando as variáveis ​​sejam padronizadas tenham chances iguais ou de alguma outra maneira? Se você pudesse explicar o que essa amostra pretende alcançar, isso pode nos fornecer informações suficientes para saber o que você está tentando perguntar.
whuber
1
Entendo que a amostragem uniforme da superfície da esfera e o mapeamento para o elipsóide não fornecerão amostras uniformes no elipsóide. Então, eu preciso de um método que faça uma amostragem uniforme da superfície de um elipsóide.
Sachin vernekar
1
Deseja que a amostra seja uniforme na superfície de um elipsóide, no sentido de que cada elemento de área dA da hiper-superfície contenha a mesma massa de probabilidade?
Sextus Empiricus
1
Por que, como e onde você aplicará essa amostra uniforme? Essas informações podem ajudar a apresentar uma estratégia melhor / suficiente. Por exemplo, quando os diferentes eixos elipsóides não são muito diferentes, você pode usar a amostragem por rejeição (1) amostragem em uma esfera, (2) pressionando-a em um elipsóide, (3) calculando a taxa pela qual a área da superfície foi comprimida (4) rejeitar amostras de acordo com o inverso dessa taxa.
Sextus Empiricus

Respostas:

3

Quando os diferentes eixos elipsóides não são muito diferentes, é possível usar a amostragem por rejeição (com grandes diferenças, você rejeita muito, tornando-o menos viável)

  • (1) amostra em uma hiperesfera
  • (2) espremendo-o em um hiper-elipsóide
  • (3) calcular a taxa pela qual a área da superfície foi espremida
  • (4) rejeitar amostras de acordo com essa taxa.

Exemplo 2D

exemplo

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")
Sextus Empiricus
fonte