Un documento menciona una "simulación de Monte Carlo para determinar el número de componentes principales"; ¿como funciona?


10

Estoy haciendo un análisis de Matlab en datos de MRI donde realicé PCA en una matriz de tamaño 10304x236 donde 10304 es el número de vóxeles (piense en ellos como píxeles) y 236 es el número de puntos de tiempo. El PCA me da 236 valores propios y sus coeficientes relacionados. Todo esta bien. Sin embargo, cuando llega el momento de decidir cuántos componentes retener, el documento que estoy replicando dice lo siguiente (por favor, avíseme si necesita alguna aclaración, ya que esto es solo una breve parte de todo el documento):

Luego realizamos simulaciones de Monte Carlo para determinar el número de componentes principales (PC) para extraer de los molestos datos de ROI para cada escaneo. Se generó una distribución nula de los valores propios esperados por separado para la codificación y los datos de reposo para cada sujeto mediante la realización de PCA en datos normalmente distribuidos de igual rango a los datos de ROI de codificación y resto molestos. Luego, se seleccionaron las PC de los datos de ROI de molestias verdaderas para un descanso dado o una exploración de codificación si sus valores propios asociados excedían el 99º intervalo de confianza de los valores propios de las simulaciones de Monte Carlo.

Tambini y Davachi, PNAS 2013, La persistencia de los patrones multivoxel del hipocampo en el descanso postencoding está relacionada con la memoria .

No tengo ni idea de qué hacer aquí. Estoy acostumbrado a elegir componentes basados ​​en la varianza acumulativa explicada. Sin embargo, mi pensamiento es este:

Luego realizamos simulaciones de Monte Carlo para determinar el número de componentes principales (PC) para extraer de los molestos datos de ROI para cada escaneo.

Los simuladores de Monte Carlo solo quieren hacer las siguientes 1000 (o tal) veces, ¿verdad?

Se generó una distribución nula de los valores propios esperados al realizar PCA en datos normalmente distribuidos de igual rango a los datos de ROI de codificación y resto de molestias.

En primer lugar, supongo que 'igual rango' básicamente significará que crearé una matriz del mismo tamaño que el original (10304x236). En términos de 'datos normalmente distribuidos de igual rango' ... ¿significa esto que debería crear una matriz de números aleatorios 10304x236 a partir de la distribución normal? Matlab tiene una función llamada 'normrnd' que hace esto pero requiere una entrada mu y sigma. ¿Usaría los mismos mu y sigma que los derivados del conjunto de datos inicial? ¿Es esto más o menos lo que se entiende por 'valores propios esperados' ya que no tengo idea de cómo sería una distribución de valores propios ESPERADOS?

Supongo que mi problema es más o menos que no sé cómo hacer una 'distribución nula' de valores propios.

Respuestas:


6

Un término relacionado con esta pregunta es "Análisis paralelo".

En términos simples, la simulación de Monte Carlo generaría 1000 (o tal) matrices de 10304x236 de datos aleatorios normalmente distribuidos (esto supone, por supuesto, que los datos que analiza están distribuidos normalmente; si sus datos se distribuyen de manera diferente, usaría un distribución aleatoria diferente). Luego, extraería los valores propios para cada conjunto de datos que creó y promediaría cada valor propio en todas las 1000 (o tales) réplicas, al tiempo que crea intervalos de confianza. Luego compara los valores propios de su conjunto de datos con los valores propios promedio de su simulación.

Dondequiera que los valores propios de su conjunto de datos excedan el intervalo de confianza número 99 de los valores propios de la simulación de Monte Carlo, esa es la cantidad de factores que el análisis sugiere retener.

Por ejemplo, si el 25 valor propio de sus datos es 2,10 y el 26 es 1,97, y el intervalo de confianza 99 de los 25 valores propios de los 1000 (o tales) conjuntos de datos aleatorios es 2,04 y el 26 es 2,01, esto sugeriría que retener 25 componentes.

Hay funciones creadas para hacer esto por usted. Un enlace para Matlab es este:

http://www.mathworks.com/matlabcentral/fileexchange/44996-parallel-analysis--pa--to-for-determining-the-number-of-components-to-retain-from-pca/content/pa_test. metro

Encontré eso buscando en Google "Análisis paralelo en Matlab".


+1. ¡Esto es muy claro y el enlace me ayudará mucho! Había codificado correctamente la extracción de los valores propios distribuidos aleatoriamente, pero no estaba utilizando los intervalos de confianza de la manera correcta. Muchas gracias por su respuesta.
chainhomelow

¡Feliz de ayudar! Me alegro de que te haya sido útil.
maxwelldeux
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.