Para continuar con la serie del MiniMult, prueba que ya podemos pasar por pantalla, necesitamos primero hacer algunas reflexiones sobre cómo funciona la corrección manual.
Antiguamente se corregía con papel y lápiz. Las plantillas eran cartulinas horadadas o metacrilatos transparentes que se situaban sobre la hoja de papel y se iban contando las contestaciones que coincidían con los orificios o huecos. Cada plantilla, cada hoja, correspondía a una escala. Así se sumaban –con los inevitables errores que de vez en cuando se comenían– la totalidad y se anotaban para posteriores cálculos.
Escalas
Una escala se resume al final como un número. Las escalas aglutinan respuestas concretas y empíricamente se ha determinado que quienes suelen puntuar alto (o bajo) en la misma cumple con unas características personales que nos permite predecir el tipo de conducta que el sujeto tendrá.
La psicología no es una ciencia exacta. Se basa en la estadística para llegar a esas conclusiones y todo resultado debe ser tomado con la suficiente precaución. No me voy a extender en teoría de tests, ni a hacer puntualizaciones sobre fiabilidad y validez, ni todos los constructos teóricos que se hayan detrás de del concepto escala. Baste decir que no estamos hablando de un test del Cosmopolitan.
Pero a efectos del programa que estamos haciendo: nos quedamos con que una escala será en último caso un número; generalmente un entero.
El MMPI Y su secuela el MMPI-2 con sus más de 500 preguntas se han utilizado ampliamente en investigación. De forma que se han utilizado sus ítem para muchas escalas distintas a las clínicas. De hecho en la corrección de esas pruebas se contempla la corrección de otras escalas secundarias. Por tanto, el sistema debería tener en cuenta que se puedan extender las escalas de forma sencilla.
Por esto, debemos tener en cuenta cómo vamos a implementar las plantillas para corregir.
Plantillas
La primera idea que se nos puede pasar por la cabeza es hacer algo similar a como se haría en la vida real: crear para cada escala su plantilla. Si tienes otra escala, deberías crear su plantilla y luego añadirla al programa para que la tenga en cuenta.
Pero entiendo que Lisp, y por tanto, su derivado elisp es un lenguaje especializado en gestionar listas: listas de escalas con sus correspondientes plantillas.
Podríamos pensar que podemos recorrer desde la primera respuesta hasta el final las contestaciones del sujeto e ir añadiendo a cada escala su valor. Pero la coincidencia de preguntas con escalas no es exacta. Es decir, una pregunta puede estar en varias escalas. En el caso del MMPI o el MiniMult es lo habitual. No solo eso, sino que además un valor de «V» puede puntuar en una escala y un valor de «F» en otra. Por tanto, el sistema debería ser flexible para poder hacerlo.
Corrección
Las listas en Lisp pueden contener valores de cualquier tipo. Para la corrección de necesitamos varios datos:
- Escala. Nombre de la escala.
- Número de pregunta.
- Alternativa. Qué debe contener la respuesta para que se sume valor a la escala.
- Valor. Qué cantidad se suma si la alternativa coincide con la respuesta del sujeto.
En el caso del MiniMult el valor para todas las respuestas es 1. Pero en otros test no siempre es así. Y puede aparecer una escala de investigación nueva que sume valores diferentes para las preguntas.
Por ejemplo:
("Hs" 9 "V" 1)
Si lo estuviera haciendo en python, por ejemplo, la opción sería ir guardando los resultados en un diccionario cuyas claves serían los nombres de escalas y el valor asociado la puntuación en la escala. Al ser un lenguaje interpretado, si añadimos a la plantilla entradas que corrijan otras escalas, el sistema automáticamente creará una nueva escala en el diccionario.
En Lisp por lo que he visto existen constructos similares que se pueden utilizar y que nos dejarían el resultado con un aspecto similar al siguiente:
(("L" . 3) ("F" . 25) ... ("Si" . 45))
Si posteriormente se añade una nueva escala a la plantilla el sistema debería añadir un valor a esta lista de escalas.
El estar aprendiendo el lenguaje según voy necesitando las cosas me parece que quizá le sacaría más rendimiento más adelante. Cuando esté más familiarizado con la forma de trabajar de Lisp. Supongo que más adelante todo lo haría de otra forma, por ejemplo teniendo en cuenta la cantidad de memoria gastada, o la velocidad y optimización de la ejecución del programa. Supongo que algún Gurú de Lisp se llevará las manos a la cabeza por el código que genera mi extraña cabeza de psicólogo, pero es lo que hay y me atengo a la máxima: si funciona está bien.