Dov'è la bomba: come stimare la probabilità, dati i totali di riga e colonna?


14

Questa domanda è ispirata a un mini-gioco di Pokemon Soulsilver:

Immagina che ci siano 15 bombe nascoste su questa area 5x6 (EDIT: massimo 1 bomba / cella):

Le somme

Ora, come stimeresti la probabilità di trovare una bomba su un campo specifico, dati i totali di riga / colonna?

Se guardi la colonna 5 (bombe totali = 5), potresti pensare: all'interno di questa colonna la possibilità di trovare una bomba nella riga 2 è doppia rispetto alla possibilità di trovarne una nella riga 1.

Questa ipotesi (errata) di proporzionalità diretta, che in sostanza può essere descritta come trascinare le operazioni standard di test di indipendenza (come in Chi-Square) nel contesto sbagliato, porterebbe alle seguenti stime:

Chi-quadrato

Come puoi vedere, la proporzionalità diretta porta a stime di probabilità superiori al 100% e, anche prima, sarebbe sbagliato.

Quindi ho eseguito una simulazione computazionale di tutte le possibili permutazioni che ha portato a 276 possibilità uniche di piazzare 15 bombe. (dati totali riga e colonna)

Ecco la media delle 276 soluzioni: Soluzione computazionale

Questa è la soluzione corretta, ma a causa del lavoro esponenziale computazionale, vorrei trovare un metodo di stima.

La mia domanda ora è: esiste un metodo statistico consolidato per stimarlo? Mi chiedevo se si trattava di un problema noto, come si chiama e se ci sono documenti / siti Web che potresti consigliare!


1
Approccio semplice e veloce: per un numero maggiore di righe e colonne, è possibile condurre una simulazione Monte Carlo, in cui si dovrebbe verificare il sottocampione casuale delle possibili configurazioni che è inferiore al numero totale di possibilità. Ti darebbe una soluzione approssimativa.
Tim

1
Non capisco la tua soluzione computazionale. Quali sono i numeri nelle celle? Certamente non aggiungono fino al 100%, non è PMF. Inoltre non sembrano CDF, la cella destra / inferiore non è al 100%
Aksakal

2
@Aksakal Queste sono le probabilità marginali che una determinata cella contenga una bomba. I numeri si aggiungono a 15, il numero di bombe totali sul tabellone.
Dougal,

2
Se stai assumendo che i due margini siano indipendenti, è relativamente semplice campionare dalla distribuzione delle tabelle in base ai margini (tramite l'algoritmo di Patefield). Questo è implementato nella distribuzione standard di R in r2dtable(e anche usato da chisq.teste fisher.testin alcune circostanze).
Glen_b -Restate Monica

2
@Glen_b Ma nell'algoritmo di Patefield il numero di eventi per cella non è limitato a uno.
Jarle Tufto,

Risposte:


3

Lo spazio della soluzione (configurazioni di bombe valide) può essere visualizzato come l'insieme di grafici bipartiti con una determinata sequenza di gradi. (La griglia è la matrice biadjacency.) Generare una distribuzione uniforme su quello spazio può essere affrontato usando i metodi Markov Chain Monte Carlo (MCMC): ogni soluzione può essere ottenuta da qualsiasi altra usando una sequenza di "switch", che nella tua formulazione puzzle Assomiglia a:

(xx)(xx)

È stato dimostrato che questo ha una proprietà di miscelazione rapida. Quindi, a partire da qualsiasi configurazione valida e impostando un MCMC in esecuzione per un po ', dovresti finire con un'approssimazione della distribuzione uniforme sulle soluzioni, che puoi fare una media puntuale per le probabilità che stai cercando.

Ho solo vagamente familiarità con questi approcci e i loro aspetti computazionali, ma almeno in questo modo eviti di enumerare nessuna delle non soluzioni.

Un inizio alla letteratura sull'argomento:
https://faculty.math.illinois.edu/~mlavrov/seminar/2018-erdos.pdf
https://arxiv.org/pdf/1701.07101.pdf
https: // www. tandfonline.com/doi/abs/10.1198/016214504000001303


È un'idea fantastica! Penso di averlo capito! Mescolo qualsiasi soluzione nota per una quantità definita di iterazioni (che mi aspetto di trovare sui giornali) e successivamente una media delle soluzioni uniche, sperando che la maggior parte di esse venga trovata. Grazie mille!
KaPy3141,

2
MCMC è esattamente la strada da percorrere e ho anche trovato questo: arxiv.org/pdf/1904.03836.pdf
KaPy3141

@ KaPy3141 Per le somme di riga e colonna sopra riportate, la mia implementazione dell'algoritmo del ciclo di rettangolo (nella prestampa arxiv) visita solo 276 stati univoci anche se eseguo l'algoritmo per un massimo di iterazioni. 106
Jarle Tufto,

Il che suggerisce che l'enumerazione suggerita da @Aksakal potrebbe essere più efficiente.
Jarle Tufto,

@JarleTufto, ma OP dice che ci sono solo 276 stati unici (validi); li hai trovati tutti!
Ben Reiniger,

5

Non esiste una soluzione unica

Non credo che la vera distribuzione discreta della probabilità possa essere recuperata, a meno che non si facciano ulteriori ipotesi. La tua situazione è fondamentalmente un problema di recupero della distribuzione congiunta dai marginali. A volte viene risolto utilizzando copule nel settore, ad esempio la gestione dei rischi finanziari, ma di solito per distribuzioni continue.

Presenza, indipendente, AS 205

In presenza del problema non è consentita più di una bomba in una cella. Ancora una volta, per il caso speciale di indipendenza, esiste una soluzione computazionale relativamente efficiente.

Se conosci FORTRAN, puoi utilizzare questo codice che implementa l'algoritmo AS 205: Ian Saunders, algoritmo AS 205: enumerazione delle tabelle R x C con totali di riga ripetuti, statistiche applicate, volume 33, numero 3, 1984, pagine 340-352. È legato all'algo di Panefield a cui fa riferimento @Glen_B.

Questo algo elenca tutte le tabelle di presenza, vale a dire passa attraverso tutte le tabelle possibili in cui è presente una sola bomba in un campo. Calcola anche la molteplicità, ovvero più tabelle che sembrano uguali e calcola alcune probabilità (non quelle a cui sei interessato). Con questo algoritmo potresti essere in grado di eseguire l'enumerazione completa più velocemente di prima.

Presenza, non indipendente

L'algoritmo AS 205 può essere applicato a un caso in cui le righe e le colonne non sono indipendenti. In questo caso dovresti applicare pesi diversi a ciascuna tabella generata dalla logica di enumerazione. Il peso dipenderà dal processo di posizionamento delle bombe.

Conta, indipendenza

Il problema del conteggio consente ovviamente più di una bomba piazzata in una cella. Il caso speciale del problema di conteggio di righe e colonne indipendenti è semplice: dove e sono marginali di righe e colonne. Ad esempio, la riga e la colonna , quindi la probabilità che una bomba sia nella riga 6 e la colonna 3 è . In realtà hai prodotto questa distribuzione nella tua prima tabella.Pij=Pi×PjPiPjP6=3/15=0.2P3=3/15=0.2P63=0.04

Conta, non indipendente, copie discrete

Al fine di risolvere il problema dei conteggi in cui righe e colonne non sono indipendenti, è possibile applicare copule discrete. Hanno problemi: non sono unici. Non li rende inutili però. Quindi, proverei ad applicare copule discrete. Potete trovarne una buona panoramica in Genest, C. e J. Nešlehová (2007). Un primer sulle copule per i dati di conteggio Astin Bull. 37 (2), 475-515.

Le copule possono essere particolarmente utili, poiché di solito consentono di indurre esplicitamente la dipendenza o di stimarla dai dati quando i dati sono disponibili. Intendo la dipendenza di righe e colonne quando si posizionano le bombe. Ad esempio, potrebbe essere il caso in cui se la bomba è la prima fila, è più probabile che sia anche la prima colonna.

Esempio

Appliciamo la copula di Kimeldorf e Sampson ai tuoi dati, supponendo ancora che più di una bomba possa essere piazzata in una cella. La copula per un parametro di dipendenza è definita come: Puoi pensare a come analogo del coefficiente di correlazione.θ

C(u,v)=(uθ+uθ1)1/θ
θ

Indipendente

Cominciamo con il caso della dipendenza debole, , dove abbiamo le seguenti probabilità (PMF) e i PDF marginali sono mostrati anche sui pannelli a destra e in basso:θ=0.000001

inserisci qui la descrizione dell'immagine

Puoi vedere come nella colonna 5 la probabilità della seconda riga abbia una probabilità doppia rispetto alla prima riga. Questo non è sbagliato in contrasto con ciò che sembra implicare nella tua domanda. Tutte le probabilità si sommano fino al 100%, ovviamente, così come i margini sui pannelli corrispondono alle frequenze. Ad esempio, la colonna 5 nel pannello inferiore mostra 1/3 che corrisponde a 5 bombe dichiarate su un totale di 15 come previsto.

Correlazione positiva

Per una dipendenza più forte (correlazione positiva) con abbiamo quanto segue:θ=10

inserisci qui la descrizione dell'immagine

Correlazione negativa

Lo stesso per una correlazione più forte ma negativa (dipendenza) :θ=0.2

inserisci qui la descrizione dell'immagine

Puoi vedere che tutte le probabilità aggiungono fino al 100%, ovviamente. Inoltre, puoi vedere come la dipendenza influisce sulla forma del PMF. Per la dipendenza positiva (correlazione) si ottiene il PMF più elevato concentrato sulla diagonale, mentre per la dipendenza negativa è fuori diagonale


Grazie mille per la tua risposta e per i tuoi interessanti link alle copule! Sfortunatamente, non ho mai usato copule, quindi sarà difficile per me trovare una soluzione che imponga solo 1 bomba per cella, ma proverò sicuramente una volta che avrò una migliore comprensione!
KaPy3141,

@ KaPy3141, ho aggiunto un riferimento al codice che puoi utilizzare per risolvere il problema. È in F90, ma relativamente semplice da convertire in Python con numpy
Aksakal

In che modo le copule con alcuni parametri una soluzione al problema? Come si determina e come si fa a sapere che è la risposta (ad esempio, uno strano effetto nella risposta è che le righe con la stessa probabilità marginale danno diverse probabilità di cella). Il problema mi sembra un problema combinatorio. θθ
Sesto Empirico

Dovresti adattare i parametri al processo. Il problema è puro combinatorio se il processo di generazione è coerente con esso.
Aksakal,

4

La tua domanda non chiarisce questo, ma suppongo che le bombe siano inizialmente distribuite tramite campionamento semplice e casuale senza sostituzione sulle celle (quindi una cella non può contenere più di una bomba). La domanda che hai sollevato è essenzialmente quella di sviluppare un metodo di stima per una distribuzione di probabilità che può essere calcolata esattamente (in teoria), ma che diventa computazionalmente impossibile calcolare per grandi valori di parametro.


La soluzione esatta esiste, ma è intensiva dal punto di vista computazionale

Come indicato nella domanda, è possibile eseguire una ricerca computazionale su tutte le allocazioni possibili, per identificare le allocazioni che corrispondono ai totali di riga e colonna. Possiamo procedere formalmente come segue. Supponiamo di avere a che fare con una griglia e di allocare bombe tramite un semplice campionamento casuale senza sostituzione (quindi ogni cella non può contenere più di una bomba).n×mb

Sia un vettore di variabili indicatore che indichi se una bomba è presente in ogni cella o meno e indicano il vettore corrispondente delle somme di riga e colonna. Definire la funzione , che mappa dal vettore di allocazione alle somme di riga e colonna.x=(x1,...,xnm)s=(r1,...,rn,c1,...,cm)S:xs

L'obiettivo è determinare la probabilità di ciascun vettore di allocazione in base alla conoscenza delle somme di riga e colonna. Nel campionamento semplice e casuale abbiamo , quindi la probabilità condizionale di interesse è:P(x)1

P(x|s)=P(x,s)P(s)=P(x)I(S(x)=s)xP(x)I(S(x)=s)=I(S(x)=s)xI(S(x)=s)=1|Xs|I(S(x)=s)=U(x|Xs),

dove è l'insieme di tutti i vettori di allocazione compatibile con il vettore . Questo dimostra che (sotto un semplice campionamento casuale delle bombe) abbiamo . Cioè, la distribuzione condizionale del vettore di allocazione per le bombe è uniforme sull'insieme di tutti i vettori di allocazione compatibile con i totali osservati di riga e colonna. La probabilità marginale di una bomba in una data cella può quindi essere ottenuta emarginando su questa distribuzione congiunta:Xs{x{0,1}nm|S(x)=s}sx|sU(Xs)

P(xij=1|s)=x:xij=1U(x|Xs)=|XijXs||Xs|.

dove è l'insieme di tutti i vettori di allocazione con una bomba nella cella nella riga e colonna. Ora, nel tuo particolare problema, hai calcolato il set e scoperto che , quindi la probabilità condizionale dei vettori di allocazione è uniforme rispetto all'insieme di allocazioni calcolate (supponendo di averlo fatto correttamente). Questa è una soluzione esatta al problema. Tuttavia, è intensivo dal punto di vista computazionale calcolare l'insieme e quindi il calcolo di questa soluzione potrebbe diventare impossibile quando ,Xij{x{0,1}nm|xij=1}ijXs|Xs|=276Xsnmo diventa più grande.b


Alla ricerca di buoni metodi di stima

Nel caso in cui sia impossibile calcolare l'insieme , si desidera poter stimare le probabilità marginali di una bomba in una determinata cella. Non sono a conoscenza di alcuna ricerca esistente che fornisca metodi di stima per questo problema, quindi ciò richiederà di sviluppare alcuni stimatori plausibili e quindi testare le loro prestazioni sulla soluzione esatta usando simulazioni al computer per valori di parametro sufficientemente bassi da essere fattibile.Xs

Lo stimatore empirico ingenuo: lo stimatore che hai proposto e utilizzato nella tua tabella verde è:

P^(xij=1|s)=ribcjbb=ricjb.

Questo metodo di stima considera le righe e le colonne come indipendenti e stima la probabilità di una bomba in una particolare riga / colonna in base alle frequenze relative nelle somme di riga e colonna. È semplice stabilire che questo stimatore somma a tutte le celle, come si vorrebbe. Sfortunatamente, ha il principale svantaggio di poter produrre una probabilità stimata superiore a una in alcuni casi. Questa è una cattiva proprietà per uno stimatore.b


Grazie mille per la tua risposta approfondita! In realtà, nel mio grafico verde, ci sono già valori fino al 133%. È bene sapere che non esiste un metodo popolare per questo problema ed è accettabile sperimentare da soli! Il mio stimatore più preciso è simile all'approccio "verde", ma invece di allocare le bombe proporzionali a P (riga) / somma (P (righe)) * P (c) / somma (P (cols)), io uso un immaginario P (r) / (1-P (r)) / sum (righe) e successivamente riportare il prodotto: P (reale) = P (imag) / (1 + P (imag). Questo forza P <1. Ora immagino, ho solo bisogno di imporre computazionalmente le somme di riga / colonna (leggermente violate)
KaPy3141

@ KaPy3141 potresti usare il valore che una bomba specifica è in una cella (che non ha il problema di essere al di sopra di 1) e quindi descrivere il problema come un'estrazione di 15 bombe da quella distribuzione con la condizione che ogni cella ha solo valori 0 o 1 (disegno senza sostituzione). Questo ti fornirà una probabilità che non superi 1.
Sesto Empirico
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.