Saltar al contenido principal
LibreTexts Español

9.2: Ejercicio- Un primer pase en la corrección de parpadeo basada en ICA

  • Page ID
    151883
  • \( \newcommand{\vecs}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} } \) \( \newcommand{\vecd}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash {#1}}} \)\(\newcommand{\id}{\mathrm{id}}\) \( \newcommand{\Span}{\mathrm{span}}\) \( \newcommand{\kernel}{\mathrm{null}\,}\) \( \newcommand{\range}{\mathrm{range}\,}\) \( \newcommand{\RealPart}{\mathrm{Re}}\) \( \newcommand{\ImaginaryPart}{\mathrm{Im}}\) \( \newcommand{\Argument}{\mathrm{Arg}}\) \( \newcommand{\norm}[1]{\| #1 \|}\) \( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\) \( \newcommand{\Span}{\mathrm{span}}\) \(\newcommand{\id}{\mathrm{id}}\) \( \newcommand{\Span}{\mathrm{span}}\) \( \newcommand{\kernel}{\mathrm{null}\,}\) \( \newcommand{\range}{\mathrm{range}\,}\) \( \newcommand{\RealPart}{\mathrm{Re}}\) \( \newcommand{\ImaginaryPart}{\mathrm{Im}}\) \( \newcommand{\Argument}{\mathrm{Arg}}\) \( \newcommand{\norm}[1]{\| #1 \|}\) \( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\) \( \newcommand{\Span}{\mathrm{span}}\)\(\newcommand{\AA}{\unicode[.8,0]{x212B}}\)

    Me parece que es más fácil entender ICA comenzando con un ejemplo y luego explicando cómo funciona después de haberlo visto en acción. Vamos a comenzar con los datos Sujeto 10 del experimento ERP CORE MMN, que vimos en el capítulo anterior en la sección de detección de movimiento ocular.

    Inicie EEGLAB (o salga y reinicie si ya se estaba ejecutando). Establezca Chapter_9 para que sea la carpeta actual de Matlab y cargue el conjunto de datos llamado 10_MMN_preprocessed .set. Asegúrate de obtener los datos de la carpeta Chapter_9 en lugar de la carpeta Chapter_8, porque los datos son preprocesados de manera un poco diferente pero los nombres de archivo son los mismos.

    El conjunto de datos que cargó ha sido filtrado paso alto a 0.1 Hz y referenciado al promedio de P9 y P10 (excepto para los canales VEOG-Bipolar y HeOG-Bipolar). Echa un vistazo a los datos para recordarte a ti mismo cómo se ven. Verás muchos parpadeos y movimientos oculares antes del inicio de los estímulos a los ~25 segundos.

    Cuando miramos los datos de este participante en el capítulo anterior, el EEG había sido filtrado paso bajo. Sin el filtrado paso bajo, ahora puedes ver más fácilmente el potencial de pico al inicio de cada movimiento ocular, que es resultado de la actividad muscular que pone los ojos en movimiento. Esto se ilustra en la Figura 9.1, que muestra los primeros 5 segundos de datos del Sujeto 10. Se puede ver un breve pico en varios canales en el momento en que el voltaje HEOG comienza a cambiar de un nivel a otro (lo que indica un cambio en la ubicación de la mirada de una ubicación a otra). Es posible que desee ajustar la escala vertical y el número de canales que se muestran para que pueda ver estos cambios de voltaje con mayor claridad.

    Figura 9.1 Ejemplos de potenciales de pico y voltaje HEOG asociados con movimientos oculares sacádicos.

    Una vez que hayas terminado de escanear el EEG para ver cómo se ve toda la sesión, selecciona EEGLAB > Herramientas > Descomponer datos por ICA y establece los parámetros como se muestra en la Captura de Pantalla 9.1 Probablemente todo ya esté configurado correctamente, a excepción de los canales, que deberías establecer en 1:31. Con esta lista de canales, estamos incluyendo todos los canales que tienen la misma referencia, y estamos excluyendo Veog-bipolar y Heog-bipolar. ICA asume que los canales son linealmente independientes entre sí, y los Veog-bipolar y Heog-bipolar fueron creados recombinando otros canales, por lo que violarían esta suposición. Sin embargo, son canales útiles para tener para que podamos saber cuándo se produjeron parpadeos y movimientos oculares incluso después de haber corregido los datos del EEG.

     

    Captura de pantalla 9.1

    Haga clic en Aceptar para iniciar el proceso de cálculo de los pesos ICA. Verás aparecer algún texto en la ventana de comandos de Matlab, seguido de una larga serie de líneas que se ven así:

    paso 1 - lrate 0.001000, wchange 16.88431280, angledelta 0.0 grados

    paso 2 - lrate 0.001000, wchange 0.90426626, angledelta 0.0 grados

    ICA funciona entrenando un algoritmo de aprendizaje automático (muy parecido a una red neuronal), y el algoritmo puede tardar mucho tiempo en converger en una solución. La cantidad de tiempo depende de la cantidad de canales, el nivel de ruido de los datos y la velocidad de su computadora. Tardó más de 5 minutos en llegar a una solución para este conjunto de datos en mi computadora portátil. Si no quieres esperar a que termine, puedes matar el proceso haciendo clic en el botón Interrumpir que debería estar visible mientras ICA se está ejecutando. Si eso no funciona, normalmente puedes matar un proceso de Matlab escribiendo Ctrl-C.

    Si esperó a que finalizara, debería cambiar el nombre de su conjunto de datos para indicar que se le han agregado pesos ICA. Puede hacer esto con EEGLAB > Editar > Información del conjunto de datos. Simplemente puede agregar _RawicaWight al nombre del conjunto de datos y hacer clic en Aceptar. Si no esperaste a que finalizara el proceso, puedes simplemente cargar el conjunto de datos llamado 10_MMN_Preprocessed_RawicaWeight s.set, que tiene los pesos ICA que obtuve cuando ejecuté la descomposición.

    Una manera fácil de ver que se han agregado los pesos ICA es escribir EEG en la ventana de comandos de Matlab. Te mostrará los contenidos de la estructura actual de EEG, y podrás ver que los campos que comienzan con ica ahora están llenos:

    icaact: [31×157184 sencillo]

    icawinv: [31×31 doble]

    icasfere: [31×31 doble]

    icaweights: [31×31 doble]

    icachansind: [1×31 doble]

    ICA descompone los datos de EEG en un conjunto de componentes independientes o CI. Estos son componentes estadísticamente definidos, no necesariamente componentes ERP, y pueden no ser biológicamente significativos. Me referiré a ellos como CI más que como componentes para mantener esta importante distinción.

    Cada CI es un filtro espacial. Cuando aplicamos un CI a la distribución de voltajes sobre el cuero cabelludo en un momento dado, la salida es la magnitud de ese CI en ese momento en el tiempo. Convenientemente, ICA crea mapas de cuero cabelludo de los CI que muestran cómo cada canal es ponderado por el IC. Eche un vistazo a los mapas del cuero cabelludo ahora seleccionando EEGLAB > Herramientas > Inspección/etiqueta componentes por mapa. (También puede ver los mapas con EEGLAB > Trazar > Mapas de componentes). Deberías ver algo como Captura de pantalla 9.2.

    Captura 9.2

    Si no dejaste que terminara el proceso de descomposición de componentes sino que en cambio cargaste el archivo que ya tenía los pesos en él, los mapas de cuero cabelludo que veas deberían verse exactamente como los de la captura de pantalla. Sin embargo, si ejecutaste el proceso de descomposición de componentes tú mismo, los mapas podrían verse un poco diferentes. Esto se debe a que el algoritmo de aprendizaje automático ICA contiene cierta aleatorización y, por lo tanto, no produce exactamente los mismos resultados cada vez. Si las cosas están funcionando bien, entonces los resultados deberían ser similares si repites el proceso de descomposición varias veces. Si obtienes resultados muy diferentes, entonces algo está mal (generalmente ya sea datos muy ruidosos, no suficientes datos, o una dependencia lineal entre tus canales).

    Hay algunas cosas que pueden diferir entre repeticiones que no indican un problema. Primero, el orden de los CI podría cambiar un poco. Por ejemplo, los mapas del cuero cabelludo para los CI 13 y 14 podrían intercambiarse en sus datos. En segundo lugar, podría haber pequeños cambios en los pesos para un mapa dado del cuero cabelludo. En tercer lugar, la polaridad de los mapas del cuero cabelludo podría invertirse (lo cual discutiremos con más detalle más adelante). Estos son normales y no son motivo de preocupación. No obstante, si ves mapas radicalmente diferentes, entonces algo anda mal.

    Observe que hay 31 CI. Esto se debe a que le dimos los datos del algoritmo de 31 canales. Ordinariamente, el número de CI es igual al número de canales. Esto es necesario para que las matemáticas funcionen. Pero indica una manera importante en la que ICA es un método imperfecto para identificar los verdaderos componentes subyacentes a sus datos. El número de canales desde los que grabas determina el número de CI, ¡pero poner más o menos electrodos en el cuero cabelludo no cambia el número de fuentes de actividad cerebral!

    Cuando termina el algoritmo de descomposición, reordena los componentes en términos de la cantidad de varianza en los datos que representan, siendo IC 1 la que representa la mayor varianza. Si el participante parpadeaba frecuentemente, el CI correspondiente a los parpadeos suele estar en los cinco CI superiores (y a menudo IC 1). En nuestro ejemplo actual, IC 1 tiene el tipo de distribución frontal del cuero cabelludo lejano que cabría esperar de un parpadeo. Pero, ¿es esto realmente un CI parpadeante, o es algún otro tipo de artefacto, o tal vez incluso actividad cerebral distribuida frontalmente?

    Hay algunas cosas que podemos verificar para determinar si IC 1 refleja parpadeos. Si haces clic en el número de arriba del IC 1, aparecerá una nueva ventana que te mostrará más detalles sobre este IC. En la parte superior derecha de la ventana, verás un mapa de calor que muestra cómo varía la magnitud de este IC con el tiempo. El eje X es el tiempo dentro de un “ensayo” (que son periodos de tiempo arbitrarios cuando se utilizan datos continuos). El eje Y es el tiempo en el transcurso de la grabación. Está etiquetado como Trials pero en realidad corresponde al tiempo en datos continuos. Se pueden ver muchas pequeñas blobs rojas. Cada uno de ellos es un breve periodo de tiempo en el que la magnitud de IC 1 fue grande. Esto es exactamente lo que esperaríamos de los parpadeos: muchos breves blips de voltaje. La ventana también muestra el espectro de frecuencias. El espectro para IC 1 muestra una disminución gradual a medida que aumenta la frecuencia, lo que también es característico de parpadeos (pero también se ve para muchos tipos de actividad no parpadeante).

    Captura 9.3

    Lo siguiente que puedes hacer (que me parece más informativo) es comparar directamente el curso del tiempo del IC 1 con el curso temporal de las señales EEG y EOG. Comience seleccionando EEGLAB > Trazar > Datos de canal (scroll) para mostrar el curso temporal de las señales EEG y EOG. Mientras esa ventana aún esté abierta, seleccione EEGLAB > Trazar > Activaciones de componentes (scroll). Luego organice las ventanas encima y debajo una de la otra como se muestra en la Captura de Pantalla 9.4 (que está configurado para mostrar 10 segundos por pantalla). Ahora puede ver cómo la activación de IC 1 varía con el tiempo y compararla con las señales EOG y EEG en los puntos de tiempo correspondientes. Intente desplazarse por ambas ventanas para ver si IC 1 corresponde a la señal VEOG bipolar. Es posible que desee mostrar solo ~6 canales en cada ventana de trazado para que pueda ver mejor estas señales.

    Captura de pantalla 9.4

    Lo primero que hay que notar es que cada parpadeo que se puede ver en el canal VEOG bipolar va acompañado de una desviación con la misma forma en IC 1 (e.g., a 2.2 y 4.4 segundos). También debes notar que hay desviaciones escalonadas ocasionales tanto en Veog-bipolar como en IC 1. Se trata de movimientos oculares verticales. A menudo, pero no siempre, los parpadeos y los movimientos oculares verticales serán capturados por el mismo CI. Dada la distribución en el cuero cabelludo de IC 1 y su estrecha correspondencia en el tiempo con los parpadeos y movimientos oculares en el canal VEOG bipolar, podemos estar muy seguros de que este CI refleja la actividad EOG vertical.

    Ahora eliminemos IC 1 de los datos EEG/EOG para eliminar los parpadeos y los movimientos oculares verticales. Normalmente, también eliminaríamos otros CI relacionados con artefactos en este punto (por ejemplo, movimientos oculares horizontales), pero por ahora solo nos centraremos en parpadeos y movimientos oculares verticales. Para ello, seleccione EEGLAB > Herramientas > Quitar componentes de los datos, poner 1 en la ventana etiquetada Lista de componentes a eliminar de los datos para que eliminemos la actividad correspondiente al IC 1, y haga clic en Aceptar. Luego verás una ventana de confirmación. Haga clic en el botón de esta ventana para trazar ensayos individuales. Deberías ver algo como Captura de pantalla 9.5 (pero le he dicho que muestre los 10 canales principales y muestre un periodo de tiempo de 10 segundos). La forma de onda azul muestra los datos originales y la forma de onda roja muestra cómo se verán los datos después de eliminar el IC 1.

    Captura de pantalla 9.5

    Se puede ver que el algoritmo ha hecho un buen trabajo al eliminar los parpadeos y los movimientos oculares verticales. Por ejemplo, los parpadeos a 2.2 y 4.4 segundos ya se han ido, y ya no hay un paso repentino en el voltaje a 5.7 segundos. También hay algunas diferencias más lentas entre los datos corregidos y no corregidos, que probablemente representan cambios sostenidos en la EOG vertical correspondientes a cambios en la posición del ojo o párpado.

    Ahora haga clic en el botón ACEPTAR en la ventana de confirmación, y use 10_MMN_Preprocessed_Rawicaweight_Pruned como nombre del conjunto de datos. A continuación, traza el nuevo conjunto de datos con EEGLAB > Trazar > Datos de canal (scroll). Verás que ahora los parpadeos se han ido de todos los canales, excepto los canales Veog-bipolar y Heog-bipolar. Excluimos esos canales de ICA, y ahora podemos usarlos para ver cuándo estaban los parpadeos en los datos originales. Todavía se pueden ver parpadeos a 2.2 y 4.4 segundos en el canal VEOG bipolar, pero la actividad de parpadeo se ha eliminado de los otros canales.

    Si lo piensas, esto es algo así como un milagro. Hemos eliminado matemáticamente la contribución de parpadeos y movimientos oculares verticales al EEG en cada punto de tiempo. Pero, ¿esto nos ayudó a abordar los tres tipos de problemas causados por los artefactos que se discutieron en el Capítulo 8? El siguiente ejercicio muestra cómo responder a esta pregunta.


    This page titled 9.2: Ejercicio- Un primer pase en la corrección de parpadeo basada en ICA is shared under a CC BY 4.0 license and was authored, remixed, and/or curated by Steven J Luck directly on the LibreTexts platform.