Campionamento casuale in un poligono


9

Vorrei campionare un punto uniformemente casuale in un poligono ...

Se si campiona un numero elevato, sarebbe altrettanto probabile che cadano in due regioni se hanno la stessa area.

Sarebbe abbastanza semplice se fosse un quadrato poiché prenderei due numeri casuali in [0,1] come coordinate.

La forma che ho è un poligono normale, ma mi piacerebbe che funzionasse per qualsiasi poligono.

/programming/3058150/how-to-find-a-random-point-in-a-quadrangle

Risposte:


9
  1. Triangolare il poligono
  2. Determina in quale dei triangoli deve trovarsi il punto (pesi aree triangolari)
  3. Campiona il punto nel triangolo come spiegato in questo post

Questa domanda non è un duplicato di quello più vecchio che colleghi?
Raffaello

@Raphael: Correlato, ma più generale, direi.
A.Schulz,

4

Un modo semplice è trovare il riquadro di delimitazione per il poligono e utilizzare il campionamento del rifiuto: campiona dal riquadro di delimitazione e accetta se rientra nel poligono, che accadrà con probabilità almeno (credo).1/2

Un'altra possibilità è triangolare il poligono. Prima campiona un triangolo in modo proporzionato, quindi campiona un punto casuale nel triangolo. Quest'ultimo è semplice: fino alle trasformazioni affine, tutti i triangoli sono nella forma . Per campionare uniformemente un punto da quella distribuzione, prima campiona secondo la densità (cioè campiona un uniforme e calcola ) e quindi campionare uniformemente (cioè campionare un'uniforme e calcolare ). Un metodo ancora più semplice è quello di campionare e if{(x,y):x,y0,x+y1}x[0,1]2(1x)r[0,1] y[0,1-x]s[0,1]y=(1-x)sx,y[0,1]x+y>1(x,y)(1-x,1-y)x=11ry[0,1x]s[0,1]y=(1x)sx,y[0,1]x+y>1 sostituisci con .(x,y)(1x,1y)


Il campionamento di rifiuto rifiuterà con probabilità al massimo 1/2 in 2 dimensioni, ma in dimensioni più elevate la probabilità di rifiuto potrebbe essere molto peggio.
DW

Il campionamento di rifiuto potrebbe avere un tasso di rifiuto maggiore di 1/2. Basti pensare a una spirale, leggermente estrusa.
A.Schulz,

Cosa succede se il poligono è garantito per essere convesso?
Yuval Filmus,

Se i rettangoli sono allineati agli assi, la convessità non è di aiuto; come suggeriscono le risposte alla domanda precedente, basta considerare un triangolo con vertici a (0, 1), (1, 0) e (x, x) per x molto grande - questo occuperà una proporzione evanescente del suo rettangolo di selezione come x va all'infinito. Se stai parlando della scatola di delimitazione più piccola possibile, probabilmente puoi derivare i limiti sul volume che assume la forma convessa, ma poi devi trovare la scatola ...
Steven Stadnicki,

4

Questo è un po 'folle, ma dovrebbe funzionare bene anche se il tuo poligono è molto strano.

C

http://siam.org/pdf/news/1297.pdf

Quindi utilizzare il pushforward di una densità uniforme sul disco come densità della proposta nel campionamento Metropolis-Hastings MCMC .


Tuttavia, le mappe conformi non necessariamente preservano l'area; stanno preservando l' angolo , ma questo è quasi garantito per non campionare il poligono in modo uniforme.
Steven Stadnicki,

Quindi la necessità di usarlo come proposta in MCMC, non come campionatore reale. Con la disuguaglianza di Poincaré puoi mostrare che la variazione di una mappa conforme dall'uniforme è delimitata da una costante.
Nick Alger,

aP(x)<f(x)<bP(x)abf(x)=cP(x)x
Steven Stadnicki il

Il punto centrale di Metropolis Hastings MCMC è che la proposta non è la vera distribuzione. La velocità di convergenza della catena MCMC dipende da quanto bene la proposta si avvicina alla vera distribuzione. La proposta più comune è mettere un gaussiano al punto attuale, indipendentemente dalla distribuzione che stai provando a campionare ...
Nick Alger
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.