Dada una cadena 10D MCMC, ¿cómo puedo determinar sus modos posteriores en R?

10

Pregunta: Con una cadena MCMC de 10 dimensiones, digamos que estoy preparado para entregarle una matriz de los sorteos: 100,000 iteraciones (filas) por 10 parámetros (columnas), ¿cómo puedo identificar los modos posteriores? Me preocupan especialmente los modos múltiples.

Antecedentes:Me considero un experto en informática, pero cuando un colega me hizo esta pregunta, me avergoncé de no poder encontrar una respuesta razonable. La principal preocupación es que pueden aparecer modos múltiples, pero solo si se consideran al menos ocho de las diez dimensiones. Mi primer pensamiento sería usar una estimación de la densidad del núcleo, pero una búsqueda en R no reveló nada prometedor para problemas de más de tres dimensiones. El colega ha propuesto una estrategia de agrupamiento ad-hoc en diez dimensiones y buscando un máximo, pero mi preocupación es que el ancho de banda puede conducir a problemas de escasez significativos o a una falta de resolución para discernir modos múltiples. Dicho esto, con mucho gusto acepto sugerencias para sugerencias automatizadas de ancho de banda, enlaces a un estimador de densidad de 10 núcleos o cualquier otra cosa que conozca.

Preocupaciones

  1. Creemos que la distribución puede ser bastante sesgada; por lo tanto, deseamos identificar los modos posteriores y no los medios posteriores.

  2. Nos preocupa que pueda haber varios modos posteriores.

  3. Si es posible, preferiríamos una sugerencia basada en R. Pero cualquier algoritmo funcionará siempre que no sea increíblemente difícil de implementar. Supongo que preferiría no implementar un estimador de densidad de kernel Nd con selección automática de ancho de banda desde cero.

M. Tibbits
fuente
Consulte el tema sobre métodos de estimación de modo rápido stats.stackexchange.com/questions/33625
Pavel Ruzankin

Respuestas:

9

¿Has considerado utilizar un enfoque de vecino más cercano?

por ejemplo, construir una lista de los kvecinos más cercanos para cada uno de los 100,000 puntos y luego considerar el punto de datos con la distancia más pequeña del kthvecino como un modo. En otras palabras: encuentre el punto con la 'burbuja más pequeña' que contiene kotros puntos alrededor de este punto.

No estoy seguro de cuán robusto es esto y la elección kobviamente está influyendo en los resultados.

Andre Holzner
fuente
A veces solo quiero golpearme la cabeza. Excelente sugerencia.
M. Tibbits
1
También pensé en usar la kmeansfunción en R. Realmente no debería hacer preguntas entre la medianoche y las 4am.
M. Tibbits
4

Esta es solo una respuesta parcial.

Recientemente utilicé figtree para estimaciones multidimensionales de densidad de kernel. Es un paquete C y conseguí que funcione con bastante facilidad. Sin embargo, solo lo usé para estimar la densidad en puntos particulares, no para calcular estadísticas de resumen.

csgillespie
fuente
3

Si mantiene las probabilidades de registro, puede seleccionar la que tenga el valor más alto. Además, si su interés es principalmente el modo, bastará con hacer una optimización para encontrar el punto con la mayor probabilidad de registro.

John Salvatier
fuente
Esta es la respuesta más relevante, ¡al menos la primera parte! En muchas simulaciones MCMC, las probabilidades (log) se calculan para todas las propuestas y, por lo tanto, se pueden almacenar. O el valor más alto hasta ahora y su argumento puede almacenarse. Siempre que el algoritmo MCMC haya convergido en la cantidad de simulaciones que ejecutó, este es un enfoque válido.
Xi'an
2

¿Has considerado 'Caza PRIM / bump'? (consulte, por ejemplo, la Sección 9.3. de 'Los elementos del aprendizaje estadístico' de Tibshirani et al. o pregunte a su motor de búsqueda favorito). Sin embargo, no estoy seguro de si eso se implementa en R.

[Por lo que he entendido, está tratando de encontrar el modo de la densidad de probabilidad de la que se extraen sus 100.000 filas. Entonces, su problema se resolvería parcialmente encontrando un density estimationmétodo apropiado ].

Andre Holzner
fuente
Sí, hay un paquete prim , con una viñeta R: uso de prim para la búsqueda de golpes . Sin embargo, no es obvio para mí cómo funcionará en este caso.
chl