11 votos

Un artículo menciona una "simulación de Montecarlo para determinar el número de componentes principales"; ¿cómo funciona?

Estoy haciendo un análisis en Matlab sobre datos de RMN en el que he realizado un PCA sobre una matriz de tamaño 10304x236 donde 10304 es el número de vóxeles (piensa 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 esto está muy bien. Sin embargo, cuando llega el momento de decidir cuántos componentes retener, el documento que estoy replicando dice lo siguiente (por favor, hágame saber si se necesita alguna aclaración, ya que esto es sólo una breve parte de todo el documento):

A continuación, realizamos simulaciones de Monte Carlo para determinar el número de componentes principales (PCs) para extraer de los datos de ROI para cada exploración. Se generó una distribución nula de los valores propios esperados de los valores propios esperados para los datos de codificación y reposo de cada de codificación y de reposo para cada sujeto, realizando el PCA sobre de igual rango que los datos de codificación y de reposo de la ROI. Los PC de los datos de los datos de las ROI molestas reales se seleccionaron para una exploración de reposo o codificación si sus valores propios asociados excedían el intervalo de confianza del 99 de confianza de los valores propios de las simulaciones de Monte Carlo de Monte Carlo.

Tambini & Davachi, PNAS 2013, La persistencia de los patrones de multivoxel del hipocampo en el descanso posterior a la codificación está relacionada con la memoria .

No tengo ni idea de qué hacer aquí. Estoy acostumbrado a elegir componentes basados en la varianza acumulada explicada. Mi pensamiento es este, sin embargo:

A continuación, realizamos simulaciones de Monte Carlo para determinar el número de componentes principales (PC) para extraer de los datos de ROI de los datos de los ROI molestos para cada exploración.

Los simulacros de Monte Carlo sólo significan hacer lo siguiente 1000 (o tal) veces, ¿verdad?

Una distribución nula de los valores propios esperados se generó realizando el ACP con datos de distribución normal de igual rango a los datos de codificación y del resto de ROIs molestos.

En primer lugar, supongo que "igual rango" significará básicamente que crearé una matriz del mismo tamaño que la original (10304x236). En términos de "datos normalmente distribuidos de igual rango"... ¿significa esto que debo crear una matriz de 10304x236 de números aleatorios de la distribución normal? Matlab tiene una función llamada 'normrnd' que hace esto pero requiere una entrada mu y sigma. ¿Debería utilizar 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 ni 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 los valores propios.

6voto

Arthur's Pass Puntos 353

Un término relacionado con esta cuestión es el de "Análisis Paralelo".

En términos sencillos, la simulación monte carlo generaría 1000 (o así) matrices de 10304x236 de datos aleatorios distribuidos normalmente (esto supone, por supuesto, que los datos que analizas se distribuyen normalmente; si tus datos se distribuyeran de otra manera, utilizarías una distribución aleatoria diferente). A continuación, extraiga los valores propios de cada conjunto de datos que haya creado y promedie cada valor propio en todas las 1.000 réplicas (o algo así), creando al mismo tiempo intervalos de confianza. A continuación, compara los valores propios de su conjunto de datos con los valores propios medios de su simulación.

Siempre que los valores propios del conjunto de datos superen el intervalo de confianza del 99% de los valores propios de la simulación de Monte Carlo, ese es el número de factores que el análisis sugiere conservar.

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

Hay funciones creadas para hacer esto por ti. 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.m

Lo encontré buscando en Google "Parallel Analysis in Matlab".

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X