Come campionare uniformemente dalla superficie di un iperellissoide (distanza costante di Mahalanobis)?


12

In un caso multivariato di valore reale, c'è un modo per campionare uniformemente i punti dalla superficie in cui la distanza di Mahalanobis dalla media di è una costante?

EDIT: questo si riduce ai punti di campionamento uniformemente dalla superficie di un iper-ellissoide che soddisfa l'equazione,

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

Per essere più precisi, per "uniformemente" intendo un campione in modo tale che ciascun elemento di area dell'iper-superficie contenga la stessa massa di probabilità.dA


1
Correggimi se sbaglio: stai chiedendo "data una variabile casuale , come posso campionare uniformemente dai punti che sono una data distanza di Mahalanobis da ?" XcE[X]
Kevin Li,

1
Penso che avremo bisogno di una definizione adeguata di "uniformemente". Il motivo è questo: in due dimensioni, questo insieme di punti si trova lungo un'ellisse. Si suppone di campionare da quell'ellisse in modo tale che pari lunghezze abbiano uguali possibilità, o che angoli uguali abbiano uguali possibilità, o così che lunghezze uguali quando le variabili sono standardizzate abbiano pari probabilità, o in qualche altro modo? Se potessi spiegare ciò che questo campionamento mira a raggiungere, ciò potrebbe darci abbastanza informazioni per sapere cosa stai cercando di chiedere.
whuber

1
Capisco che campionare uniformemente dalla superficie della sfera e quindi mapparlo sull'ellissoide non fornirà campioni uniformi sull'ellissoide. Quindi ho bisogno di un metodo che campiona uniformemente dalla superficie di un ellissoide.
sachin vernekar,

1
Vuoi avere l'uniforme del campione sulla superficie di un ellissoide, nel senso che ogni elemento area dA dell'iper-superficie contiene la stessa massa di probabilità?
Sesto Empirico

1
Perché, come e dove applicherai questo campione uniforme? Tali informazioni possono aiutare a fornire una strategia migliore / sufficiente. Ad esempio, quando i diversi assi ellissoidali non sono molto diversi, è possibile utilizzare il campionamento del rifiuto mediante (1) campionamento su una sfera, (2) comprimendolo in un ellissoide, (3) calcolare la velocità con cui è stata compressa l'area superficiale (4) respingere i campioni secondo l'inverso di tale tasso.
Sesto Empirico

Risposte:


4

Quando i diversi assi ellissoidali non sono troppo diversi, è possibile utilizzare il campionamento del rifiuto (con grandi differenze si rifiuta molto rendendolo meno fattibile)

  • (1) campione su un'iper-sfera
  • (2) schiacciandolo in un iperellissoide
  • (3) calcola la velocità con cui è stata compressa la superficie
  • (4) respingere i campioni in base a tale tasso.

Esempio 2D

esempio

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")
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.