¿Dónde está la bomba? ¿Cómo estimar la probabilidad, dados los totales de filas y columnas?

14

Esta pregunta está inspirada en un mini-juego de Pokemon Soulsilver:

Imagine que hay 15 bombas ocultas en esta área de 5x6 (EDITAR: máximo 1 bomba / celda):

Sumas

Ahora, ¿cómo calcularía la probabilidad de encontrar una bomba en un campo específico, dados los totales de fila / columna?

Si observa la columna 5 (bombas totales = 5), entonces podría pensar: dentro de esta columna, la posibilidad de encontrar una bomba en la fila 2 es el doble de la posibilidad de encontrar una en la fila 1.

Este supuesto (incorrecto) de proporcionalidad directa, que básicamente se puede describir como dibujar operaciones estándar de prueba de independencia (como en Chi-Square) en el contexto incorrecto, conduciría a las siguientes estimaciones:

Chi-Square

Como puede ver, la proporcionalidad directa conduce a estimaciones de probabilidad superiores al 100%, e incluso antes de eso, estaría mal.

Así que realicé una simulación computacional de todas las permutaciones posibles que condujo a 276 posibilidades únicas de colocar 15 bombas. (totales de fila y columna dados)

Aquí está el promedio sobre las 276 soluciones: Solución computacional

Esta es la solución correcta, pero debido al trabajo computacional exponencial, me gustaría encontrar un método de estimación.

Mi pregunta ahora es: ¿Existe un método estadístico establecido para estimar esto? Me preguntaba si este era un problema conocido, cómo se llama y si hay documentos / sitios web que podría recomendar.

KaPy3141
fuente
1
Enfoque rápido y fácil: para un mayor número de filas y columnas, puede realizar una simulación de Monte Carlo, donde verificaría la submuestra aleatoria de las configuraciones posibles que es menor que el número total de posibilidades. Te daría una solución aproximada.
Tim
1
No entiendo tu solución computacional. ¿Cuáles son los números en las celdas? Ciertamente no suman 100%, no es PMF. Tampoco parecen CDF, la celda derecha / inferior no es 100%
Aksakal
2
@ Aksakal Estas son las probabilidades marginales de que cualquier celda contenga una bomba. Los números suman 15, el número total de bombas en el tablero.
Dougal el
2
Si está asumiendo que los dos márgenes son independientes, es relativamente sencillo muestrear desde la distribución de tablas condicionadas a los márgenes (a través del algoritmo de Patefield). Esto se implementa en la distribución estándar de R en r2dtable(y también se usa por chisq.testy fisher.testen algunas circunstancias).
Glen_b -Reinstate Monica
2
@Glen_b Pero en el algoritmo de Patefield, el número de eventos por celda no se limita a uno.
Jarle Tufto

Respuestas:

3

El espacio de solución (configuraciones de bomba válidas) puede verse como el conjunto de gráficos bipartitos con una secuencia de grados dada. (La cuadrícula es la matriz de biadjacencia). La generación de una distribución uniforme en ese espacio se puede abordar utilizando los métodos de Markov Chain Monte Carlo (MCMC): cada solución se puede obtener de cualquier otra mediante una secuencia de "interruptores", que en su formulación de rompecabezas parece:

(xx)(xx)

Se ha demostrado que esto tiene una propiedad de mezcla rápida. Entonces, comenzando con cualquier configuración válida y configurando un MCMC que se ejecute por un tiempo, debe terminar con una aproximación de la distribución uniforme en las soluciones, que puede promediar puntualmente para las probabilidades que está buscando.

Solo estoy vagamente familiarizado con estos enfoques y sus aspectos computacionales, pero al menos de esta manera evitas enumerar cualquiera de las no soluciones.

Un comienzo a la literatura sobre el tema:
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

Ben Reiniger
fuente
¡Esa es una idea increíble! Creo que lo entiendo! Mezclo cualquier solución conocida para una cantidad definida de iteraciones (que espero encontrar en los documentos) y luego promedio las soluciones únicas, con la esperanza de que se encuentren la mayoría de ellas. ¡Muchas gracias!
KaPy3141
2
MCMC es exactamente el camino a seguir y también encontré esto: arxiv.org/pdf/1904.03836.pdf
KaPy3141
106
Lo que sugiere que la enumeración sugerida por @Aksakal puede ser más eficiente.
Jarle Tufto
@JarleTufto, pero OP dice que solo hay 276 estados únicos (válidos); los has encontrado a todos!
Ben Reiniger
5

No hay una solución única

No creo que se pueda recuperar la verdadera distribución de probabilidad discreta, a menos que haga algunas suposiciones adicionales. Su situación es básicamente un problema de recuperación de la distribución conjunta de los marginales. A veces se resuelve mediante el uso de cópulas en la industria, por ejemplo, la gestión de riesgos financieros, pero generalmente para distribuciones continuas.

Presencia, independiente, AS 205

En el problema de presencia, no se permite más de una bomba en una celda. Nuevamente, para el caso especial de independencia, existe una solución computacional relativamente eficiente.

Si conoce FORTRAN, puede usar este código que implementa el Algoritmo AS 205: Ian Saunders, Algoritmo AS 205: Enumeración de tablas R x C con totales repetidos de fila, Estadísticas aplicadas, Volumen 33, Número 3, 1984, páginas 340-352. Está relacionado con algo de Panefield al que @Glen_B se refirió.

Este algo enumera todas las tablas de presencia, es decir, pasa por todas las tablas posibles donde solo hay una bomba en un campo. También calcula la multiplicidad, es decir, varias tablas que se ven iguales, y calcula algunas probabilidades (no las que le interesan). Con este algoritmo, puede ejecutar la enumeración completa más rápido que antes.

Presencia, no independiente

El algoritmo AS 205 se puede aplicar a un caso donde las filas y columnas no son independientes. En este caso, tendría que aplicar diferentes pesos a cada tabla generada por la lógica de enumeración. El peso dependerá del proceso de colocación de bombas.

Condes, independencia

Pij=Pi×PjPiPjP6=3/15=0.2P3=3/15=0.2P63=0.04

Cuenta, no independiente, cópulas discretas

Para resolver el problema de conteo donde las filas y columnas no son independientes, podríamos aplicar cópulas discretas. Tienen problemas: no son únicos. Sin embargo, no los hace inútiles. Entonces, trataría de aplicar cópulas discretas. Puede encontrar una buena descripción de ellos en Genest, C. y J. Nešlehová (2007). Una cartilla sobre cópulas para datos de conteo. Astin Bull. 37 (2), 475–515.

Las cópulas pueden ser especialmente útiles, ya que generalmente permiten inducir explícitamente la dependencia o estimarla a partir de los datos cuando los datos están disponibles. Me refiero a la dependencia de filas y columnas al colocar bombas. Por ejemplo, podría ser el caso cuando si la bomba es una en la primera fila, entonces es más probable que también sea una en la primera columna.

Ejemplo

θ

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

Independiente

θ=0.000001

ingrese la descripción de la imagen aquí

Puede ver cómo en la columna 5 la probabilidad de la segunda fila tiene una probabilidad dos veces mayor que la primera fila. Esto no está mal, al contrario de lo que parecía implicar en su pregunta. Todas las probabilidades suman 100%, por supuesto, al igual que los márgenes en los paneles coinciden con las frecuencias. Por ejemplo, la columna 5 en el panel inferior muestra 1/3 que corresponde a 5 bombas declaradas del total de 15 como se esperaba.

Correlacion positiva

θ=10

ingrese la descripción de la imagen aquí

Correlación negativa

θ=0.2

ingrese la descripción de la imagen aquí

Puede ver que todas las probabilidades suman 100%, por supuesto. Además, puede ver cómo la dependencia afecta la forma del PMF. Para la dependencia positiva (correlación) se obtiene el mayor PMF concentrado en la diagonal, mientras que para la dependencia negativa está fuera de la diagonal

Aksakal
fuente
¡Muchas gracias por su respuesta y sus interesantes enlaces a cópulas! Desafortunadamente, nunca he usado cópulas, por lo que me será difícil encontrar una solución que aplique solo 1 bomba por celda, ¡pero definitivamente lo intentaré una vez que tenga una mejor comprensión!
KaPy3141
@ KaPy3141, agregué una referencia al código que puede usar para resolver el problema. Está en F90, pero es relativamente sencillo convertir a Python con numpy
Aksakal
θθ
Tendría que ajustar los parámetros al proceso. El problema es puramente combinatorio si el proceso de generación es consistente con él.
Aksakal
4

Su pregunta no deja esto claro, pero voy a suponer que las bombas se distribuyen inicialmente mediante muestreo aleatorio simple sin reemplazo sobre las celdas (por lo que una celda no puede contener más de una bomba). La pregunta que ha planteado es esencialmente el desarrollo de un método de estimación para una distribución de probabilidad que pueda calcularse exactamente (en teoría), pero que no sea computacionalmente factible para calcular valores de parámetros grandes.


La solución exacta existe, pero es computacionalmente intensiva

n×mb

x=(x1,...,xnm)s=(r1,...,rn,c1,...,cm)S:xs, que se asigna desde el vector de asignación a las sumas de fila y columna.

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),

Xs{x{0,1}nm|S(x)=s}sx|sU(Xs). Es decir, la distribución condicional del vector de asignación para las bombas es uniforme sobre el conjunto de todos los vectores de asignación compatibles con los totales observados de fila y columna. La probabilidad marginal de una bomba en una celda dada se puede obtener al marginar sobre esta distribución conjunta:

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

Xij{x{0,1}nm|xij=1}ijXs|Xs|=276Xsnmb


Buscando buenos métodos de estimación

Xs

El ingenuo estimador empírico: el estimador que ha propuesto y utilizado en su tabla verde es:

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

b

Ben - Restablece a Monica
fuente
¡Muchas gracias por su profunda respuesta! En realidad, en mi cuadro verde, ya hay valores de hasta el 133%. ¡Es bueno saber que no hay un método popular para este problema y es aceptable experimentar por uno mismo! Mi estimador más preciso es similar al enfoque "verde", pero en lugar de asignar las bombas proporcionalmente a P (fila) / suma (P (filas)) * P (c) / suma (P (cols)), uso un imaginario P (r) / (1-P (r)) / sum (filas) y luego traer de vuelta el producto: P (real) = P (imag) / (1 + P (imag). Esto obliga a P <1. ahora supongo, sólo hay que cumplir computacionalmente las sumas de fila / columna (un poco violados).
KaPy3141
@ KaPy3141, puede usar el valor de que una bomba específica está en una celda (que no tiene el problema de estar por encima de 1) y luego describir el problema como un sorteo de 15 bombas de esa distribución con la condición de que cada celda solo tenga valores 0 o 1 (dibujo sin reemplazo). Esto le proporcionará una probabilidad que no exceda 1.
Sextus Empiricus