Saltar al contenido principal
LibreTexts Español

13.3: A2.3 Adoptando un enfoque científico

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

    Eres científico, ¿verdad? Esto significa que has sido entrenado para desarrollar y probar hipótesis. Eso es exactamente lo que haces cuando estás solucionando problemas y depurando. Es decir, hay que llegar a una hipótesis sobre la naturaleza del problema y luego averiguar cómo probar esa hipótesis. Esta sección desarrollará el enfoque científico para encontrar y solucionar problemas con ERPLAB y EEGLAB.

    La importancia de la replicación

    Si realmente quieres entender un problema, primero debes asegurarte de poder replicarlo. ¿Persiste después de reiniciar Matlab? ¿Obtienes el mismo problema en una computadora diferente?

    Además, una vez que creas que has encontrado la solución, debes asegurarte de que puedes hacer que el problema vuelva a aparecer y luego volver a desaparecer. Por ejemplo, imagina que una parte de ERPLAB sigue fallando cuando intentas ejecutar un paso de procesamiento en particular, y intentas 12 cosas diferentes para que deje de chocar. Y finalmente consigue que funcione después de instalar una nueva versión de EEGLAB. ¿Fue realmente la versión EEGLAB el problema? Después de todo, probablemente actualizaste el PATH cuando instalaste la nueva versión de EEGLAB, así que quizás el PATH era el problema. Si quieres estar seguro de que se trataba de un problema de versión, deberías intentar volver a la versión anterior y ver si ERPLAB vuelve a fallar. Y entonces debes verificar que al actualizar la versión nuevamente se elimine el crash. En psicología experimental, a esto se le suele llamar el diseño experimental ABAB.

    En muchos casos, en realidad no te importa si entiendes completamente el problema, y este enfoque ABAB es innecesario. Una vez que el programa ya no se bloquea, es posible que no te importe lo que estaba causando el accidente. Pero en otros casos es muy importante entender el problema. Por ejemplo, imagina que estás escribiendo un script, y encuentras que puedes hacer que tu script se ejecute enviando algún parámetro que realmente no entiendes al llamar a una función ERPLAB. ¿Realmente confías en que ya has resuelto el problema? En este tipo de situaciones, el enfoque ABAB suele valer la pena el tiempo y el esfuerzo.

    Comience con una revisión de literatura

    Cuando estás diseñando un experimento ERP, ya sabes que es importante leer la literatura relevante para que sepas lo que ya se ha hecho en tu área de investigación y para que puedas aprender sobre métodos útiles para responder a tu pregunta científica. Sin los conocimientos previos necesarios, probablemente no tendrás una buena hipótesis y probablemente no diseñarás un buen experimento.

    Al solucionar problemas o depurar, el análogo es leer la documentación, hacer los tutoriales y escanear la página de preguntas frecuentes. Si no das estos pasos primero, es probable que pierdas mucho tiempo persiguiendo hipótesis falsas sobre la fuente del problema y probando soluciones que es poco probable que funcionen.

    Observe cuidadosamente el mundo y luego desarrolle una hipótesis

    Probablemente te enseñaron el “método científico” cuando estabas en la primaria. En la versión habitual, un científico observa el mundo, desarrolla una hipótesis, y luego realiza un experimento para probar la hipótesis. Esta es una grave caracterización errónea de cómo funciona realmente la ciencia (véase, por ejemplo, Feyerabend, 1993). Sin embargo, esta simplificación excesiva es útil para la resolución de problemas y depuración, especialmente en la medida en que propone que se debe observar cuidadosamente el mundo en el proceso de desarrollar su hipótesis sobre el origen del problema.

    En el contexto de la solución de problemas de software, esto significa que debe mirar cuidadosamente las entradas y salidas. Las entradas principales son los datos que se están procesando y los parámetros que se especifican (ya sea la configuración en la GUI o los valores que se están enviando a una función en un script). Las salidas principales son los mensajes impresos en la ventana de comandos de Matlab (incluyendo pero no limitado a los mensajes de error) y los datos de salida que se crean. Particularmente recomiendo echar un vistazo cuidadoso a los parámetros y los mensajes de error (porque los datos suelen ser tan complicados que necesitas una hipótesis antes de saber qué buscar).

    Los mensajes de error de Matlab a menudo parecen estar escritos en un idioma que no hablas (Programmerese). Pero si pasas suficiente tiempo mirando los mensajes, es posible que encuentres que conoces lo suficiente de las palabras para obtener alguna información valiosa. Es posible que pueda obtener una idea escribiendo la parte clave del mensaje en un motor de búsqueda, encerrada entre comillas dobles y precedida por matlab. Por ejemplo, si obtiene el carácter de mensaje de error Vector No Terminado Correctamente, puede escribir esto en Google: matlab “carácter Vector No Terminado Correctamente”. Una sección posterior de este apéndice proporciona información más detallada sobre cómo descifrar los mensajes de error de Matlab.

    El mensaje de error te dirá qué líneas de código generaron el mensaje de error, tanto en tu script como dentro de una función a la que estabas llamando cuando ocurrió el problema. Esta es una pista importante. Luego puede abrir el código para la función y ver qué estaba pasando en esa función. Pero ten esto en cuenta: El problema real en el código puede haber sido varias líneas antes de que se detectara el problema, por lo que deberías mirar toda esa sección de código.

    Una vez que hayas hecho tu cuidadosa observación, deberías poder desarrollar una hipótesis.

    Ejecute experimentos y recopile nuevos datos para refinar y probar su hipótesis

    Ahora es el momento de poner a prueba tu hipótesis. A veces esto es trivial: plantea la hipótesis de que necesita actualizar su versión de EEGLAB, y luego ve si actualizar EEGLAB resuelve el problema. Pero en otros casos, tu hipótesis no especifica la solución, sino que es una hipótesis más general, como qué parte del código es el problema o qué variable podría no establecerse correctamente. En estos casos, necesitas averiguar cómo poner a prueba tu hipótesis.

    El método para probar tu hipótesis dependerá, por supuesto, de la naturaleza de tu hipótesis. Sin embargo, existen dos estrategias generales, que son análogas a registrar versus manipular la actividad cerebral. Es decir, puede examinar las representaciones que produce su código (por ejemplo, valores de variables, archivos de salida) en varios pasos del procesamiento, o puede intentar modificar la operación del código (por ejemplo, cambiando las entradas o apagando varias partes del código). Diré más sobre estas opciones en una sección posterior.

    ¡La ciencia es social!

    Una de las principales carencias de la versión primaria del método científico es que no trata a la ciencia como una actividad profundamente humana, social. Gran parte de la ciencia es impulsada por la vanidad, la competencia y la cooperación. No recomendaría vanidad o competencia cuando estás solucionando problemas o depurando, pero la cooperación es sumamente valiosa. Más específicamente, si te quedas atascado, obtén consejos de otras personas. Esta podría ser una persona más experimentada en Eeglab/Erplab/Matlab en su laboratorio o su departamento. O podría ser algún extraño en Internet. (La parte de Internet habitada por programadores y científicos es mucho más amable y útil que la mayoría de las otras partes).

    A menudo, tu pregunta ya ha sido respondida. EEGLAB tiene un listserv extremadamente activo, al que puedes unirte. Luego puedes buscar en el archivo para ver si tu pregunta ya ha surgido. ERPLAB también tiene un listserv con un archivo de búsqueda. Si no ves una respuesta a tu pregunta, publícalo en el listserv.

    Si estás escribiendo un script y tienes un problema con una función integrada de Matlab, o tienes problemas para averiguar la sintaxis correcta, probablemente puedas encontrar una respuesta en Internet. Las dos mejores fuentes de respuestas son los recursos proporcionados por Matlab y el foro StackOverflow. Normalmente solo escribo algo como esto en Google: Matlab “ordenando una lista”. ¡Probablemente lo hice 300 veces mientras escribía este libro!

    Depuración de Pato de Goma

    Si no encuentras la solución a tu problema en línea, podría ser el momento de preguntarle a un colega. Sin embargo, es posible que no tengas un colega apropiado, o quizás no quieras molestar a nadie. En estos casos, puedes probar algo llamado depuración de pato de goma. Este concepto proviene de la observación de que cuando vas a pedir ayuda a alguien, el proceso de explicarle el problema a esa persona muchas veces te lleva a darte cuenta de la respuesta. Entonces, realmente solo necesitas intentar explicar el problema. En lugar de dedicarle tiempo a otra persona con esto, puedes simplemente explicarle el problema a un pato de goma (Thomas & Hunt, 2019). Por supuesto, no necesita ser un pato de goma. Puede ser una planta, tu perro, una foto de Einstein, etc. Incluso puedes intentar escribir un correo electrónico a un amigo imaginario explicando el problema. La clave es describir cuidadosamente el problema en lenguaje natural. Me gusta tanto este enfoque que compré patos de goma para todos en mi laboratorio (Figura A2.1).

    Figura A2.1. Patos de goma para depuración. Siempre están felices de escucharte hablar de tu código, y nunca te juzgan.

    This page titled 13.3: A2.3 Adoptando un enfoque científico 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.