Saltar al contenido principal
LibreTexts Español

11.11: Ejercicio- Bucle a Través de Datos de Múltiples Participantes

  • Page ID
    151490
  • \( \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}}\)

    \( \newcommand{\vectorA}[1]{\vec{#1}}      % arrow\)

    \( \newcommand{\vectorAt}[1]{\vec{\text{#1}}}      % arrow\)

    \( \newcommand{\vectorB}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} } \)

    \( \newcommand{\vectorC}[1]{\textbf{#1}} \)

    \( \newcommand{\vectorD}[1]{\overrightarrow{#1}} \)

    \( \newcommand{\vectorDt}[1]{\overrightarrow{\text{#1}}} \)

    \( \newcommand{\vectE}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash{\mathbf {#1}}}} \)

    \( \newcommand{\vecs}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} } \)

    \( \newcommand{\vecd}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash {#1}}} \)

    \(\newcommand{\avec}{\mathbf a}\) \(\newcommand{\bvec}{\mathbf b}\) \(\newcommand{\cvec}{\mathbf c}\) \(\newcommand{\dvec}{\mathbf d}\) \(\newcommand{\dtil}{\widetilde{\mathbf d}}\) \(\newcommand{\evec}{\mathbf e}\) \(\newcommand{\fvec}{\mathbf f}\) \(\newcommand{\nvec}{\mathbf n}\) \(\newcommand{\pvec}{\mathbf p}\) \(\newcommand{\qvec}{\mathbf q}\) \(\newcommand{\svec}{\mathbf s}\) \(\newcommand{\tvec}{\mathbf t}\) \(\newcommand{\uvec}{\mathbf u}\) \(\newcommand{\vvec}{\mathbf v}\) \(\newcommand{\wvec}{\mathbf w}\) \(\newcommand{\xvec}{\mathbf x}\) \(\newcommand{\yvec}{\mathbf y}\) \(\newcommand{\zvec}{\mathbf z}\) \(\newcommand{\rvec}{\mathbf r}\) \(\newcommand{\mvec}{\mathbf m}\) \(\newcommand{\zerovec}{\mathbf 0}\) \(\newcommand{\onevec}{\mathbf 1}\) \(\newcommand{\real}{\mathbb R}\) \(\newcommand{\twovec}[2]{\left[\begin{array}{r}#1 \\ #2 \end{array}\right]}\) \(\newcommand{\ctwovec}[2]{\left[\begin{array}{c}#1 \\ #2 \end{array}\right]}\) \(\newcommand{\threevec}[3]{\left[\begin{array}{r}#1 \\ #2 \\ #3 \end{array}\right]}\) \(\newcommand{\cthreevec}[3]{\left[\begin{array}{c}#1 \\ #2 \\ #3 \end{array}\right]}\) \(\newcommand{\fourvec}[4]{\left[\begin{array}{r}#1 \\ #2 \\ #3 \\ #4 \end{array}\right]}\) \(\newcommand{\cfourvec}[4]{\left[\begin{array}{c}#1 \\ #2 \\ #3 \\ #4 \end{array}\right]}\) \(\newcommand{\fivevec}[5]{\left[\begin{array}{r}#1 \\ #2 \\ #3 \\ #4 \\ #5 \\ \end{array}\right]}\) \(\newcommand{\cfivevec}[5]{\left[\begin{array}{c}#1 \\ #2 \\ #3 \\ #4 \\ #5 \\ \end{array}\right]}\) \(\newcommand{\mattwo}[4]{\left[\begin{array}{rr}#1 \amp #2 \\ #3 \amp #4 \\ \end{array}\right]}\) \(\newcommand{\laspan}[1]{\text{Span}\{#1\}}\) \(\newcommand{\bcal}{\cal B}\) \(\newcommand{\ccal}{\cal C}\) \(\newcommand{\scal}{\cal S}\) \(\newcommand{\wcal}{\cal W}\) \(\newcommand{\ecal}{\cal E}\) \(\newcommand{\coords}[2]{\left\{#1\right\}_{#2}}\) \(\newcommand{\gray}[1]{\color{gray}{#1}}\) \(\newcommand{\lgray}[1]{\color{lightgray}{#1}}\) \(\newcommand{\rank}{\operatorname{rank}}\) \(\newcommand{\row}{\text{Row}}\) \(\newcommand{\col}{\text{Col}}\) \(\renewcommand{\row}{\text{Row}}\) \(\newcommand{\nul}{\text{Nul}}\) \(\newcommand{\var}{\text{Var}}\) \(\newcommand{\corr}{\text{corr}}\) \(\newcommand{\len}[1]{\left|#1\right|}\) \(\newcommand{\bbar}{\overline{\bvec}}\) \(\newcommand{\bhat}{\widehat{\bvec}}\) \(\newcommand{\bperp}{\bvec^\perp}\) \(\newcommand{\xhat}{\widehat{\xvec}}\) \(\newcommand{\vhat}{\widehat{\vvec}}\) \(\newcommand{\uhat}{\widehat{\uvec}}\) \(\newcommand{\what}{\widehat{\wvec}}\) \(\newcommand{\Sighat}{\widehat{\Sigma}}\) \(\newcommand{\lt}{<}\) \(\newcommand{\gt}{>}\) \(\newcommand{\amp}{&}\) \(\definecolor{fillinmathshade}{gray}{0.9}\)

    En este ejercicio, veremos cómo se utilizan los bucles para cargar los conjuntos de datos de un conjunto de participantes. Vamos a añadir algunos pasos de procesamiento que hacen que el script sea más útil en el siguiente ejercicio, pero quería mantener las cosas simples por ahora. Para comenzar, salga de EEGLAB, cierre cualquier script abierto, escriba clear all y abra Script4.m. Pero no lances Eeglab, ¡vamos a hacer que el guión haga eso!

    Adelante y ejecuta Script4.m para ver qué hace. Debería lanzar EEGLAB, cargar los conjuntos de datos para los Sujetos 1-10 (excepto el Asunto 5) y actualizar EEGLAB para que los conjuntos de datos estén disponibles en el menú Conjuntos de datos.

    Ahora veamos el guión y veamos cómo funciona. La primera línea de código lanza EEGLAB, que crea varias variables que encontraremos útiles (por ejemplo, EEG y ALLEEG). La siguiente línea de código crea la variable DIR, como en los scripts anteriores, que contiene la ubicación del script (y debe ser la carpeta Chapter_11). Entonces el script crea una nueva variable llamada data_dir, que agrega '/N170_Data/' a la variable DIR. Esto nos da una ruta a la carpeta que contiene las carpetas de datos de un solo participante.

    El siguiente paso es definir una variable denominada Dataset_filename, que tiene un valor de '_N170.set'. Eventualmente combinaremos esta variable con el ID del sujeto para obtener el nombre de archivo completo para un participante determinado (por ejemplo, 1_N170.set).

    Después definimos variables para la lista de sujetos y el número de sujetos, así como en el ejemplo anterior. Tenga en cuenta que estos pasos incorporan el principio de que todos los valores utilizados por un script deben definirse como variables en la parte superior del script. Es un poco más de trabajo inicial para hacer esto, pero reduce drásticamente la probabilidad de errores más adelante (especialmente cuando tomas un script anterior y modificas para un nuevo propósito).

    El siguiente paso es recorrer los temas. La primera parte de esto es igual que lo que hicimos en el script anterior, incluida la configuración de ID para que sea una cadena con el ID del sujeto actual. Entonces el script crea una variable llamada Subject_dir, que especifica la carpeta que contiene esos datos para el sujeto que actualmente está siendo procesado por el bucle (por ejemplo,... /Chapter_11/N170/1/ para el primer sujeto). Esto lo hacemos concatenando la variable data_dir con la variable ID y luego un carácter/. También creamos una variable llamada Subject_filename concatenando la variable ID con la variable Dataset_filename. Esto nos da un valor de 1_N170.set para la primera asignatura.

    Luego cargamos el conjunto de datos, usando Subject_filename como nombre de archivo y Subject_dir como ruta. El conjunto de datos se almacena en la variable EEG, y nuestro último paso en el cuerpo del bucle es agregar este conjunto de datos a la variable ALLEEG usando la rutina eeg_store. El cero que especificamos como último parámetro para esta rutina le dice que agregue el nuevo conjunto de datos al final de ALLEEG.

    Después de que termine el bucle, se llama al redraw de eeglab para actualizar la GUI de EEGLAB.

    En realidad hay 40 participantes en este experimento, cada uno con un conjunto de datos. Este script es una forma mucho más rápida de cargar estos 40 conjuntos de datos que usar la GUI para cargar cada uno por separado. Debido a que todos los valores clave se especifican como variables en la parte superior del script, puedes encontrarlos fácilmente y modificarlos para que puedas usar el mismo script con otro experimento, asumiendo que los datos están organizados de la misma manera en tu computadora. Solo necesitarás modificar la lista de ID de asunto (la variable SUB), el nombre de la carpeta que contiene los datos (data_dir) y el nombre del dataset base (Dataset_filename). Esto será mucho más rápido y más fácil si eres consistente en cómo organizas los datos para cada experimento (consulta el cuadro de texto a continuación).

    Consistencia

    Hay una famosa línea del poeta Ralph Waldo Emerson que frecuentemente se cita erróneamente como “La consistencia es el hobgoblin de las mentes pequeñas”. La gente a veces usa esta versión incorrecta de la cita para menospreciar a las personas por ser consistentes. Sin embargo, la cita real es “Una consistencia tonta es el hobgoblin de las mentes pequeñas” (Emerson, 1841 p. 14; mi énfasis). No es nada tonto ser consistente con tu organización de datos, tus nombres de archivo, tus nombres de variables, etc. Te ahorrarás enormes cantidades de tiempo y dolor al desarrollar una buena estrategia organizacional al principio de tu carrera y luego apegarte a ella (pero con cambios pensados cuando sea necesario).


    This page titled 11.11: Ejercicio- Bucle a Través de Datos de Múltiples Participantes 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.